6582489 X11R7.4: Xorg server 1.5.3, Mesa 7.2, and associated driver updates
authorAlan Coopersmith <Alan.Coopersmith@Sun.COM>
Thu, 15 Jan 2009 12:55:00 -0800
changeset 606 068c11b419c9
parent 605 e5259db5befc
child 607 261c0d718d67
6582489 X11R7.4: Xorg server 1.5.3, Mesa 7.2, and associated driver updates Includes changes contributed by Liang, Kan <[email protected]>: - G41 support patches - DRM_CAS in libdrm type error can cause deadlock and hang the glxgears. Includes changes contributed by Martin Bochnig <[email protected]>: - Make SUNWxorg-mesa package platform-clean
make_release_packages
open-src/README
open-src/app/mesa-demos/Makefile
open-src/common/Makefile.inc
open-src/common/Makefile.init
open-src/common/Makefile.subdirs
open-src/data/xbitmaps/Makefile
open-src/driver/Makefile
open-src/driver/Makefile.inc
open-src/driver/xf86-input-acecad/Makefile
open-src/driver/xf86-input-acecad/usleep.patch
open-src/driver/xf86-input-calcomp/Makefile
open-src/driver/xf86-input-citron/Makefile
open-src/driver/xf86-input-citron/input-abi.patch
open-src/driver/xf86-input-digitaledge/Makefile
open-src/driver/xf86-input-dmc/Makefile
open-src/driver/xf86-input-dynapro/Makefile
open-src/driver/xf86-input-elographics/Makefile
open-src/driver/xf86-input-elographics/copying.patch
open-src/driver/xf86-input-fpit/Makefile
open-src/driver/xf86-input-hyperpen/Makefile
open-src/driver/xf86-input-jamstudio/Makefile
open-src/driver/xf86-input-keyboard/Makefile
open-src/driver/xf86-input-keyboard/copying.patch
open-src/driver/xf86-input-keyboard/hal-man-page.patch
open-src/driver/xf86-input-keyboard/sun-kb-autodetect.patch
open-src/driver/xf86-input-keyboard/sun-keymappings.patch
open-src/driver/xf86-input-keyboard/sun-src/src/sun_xkbtable.c
open-src/driver/xf86-input-keyboard/sun-src/src/sun_xkbtable.h
open-src/driver/xf86-input-magellan/Makefile
open-src/driver/xf86-input-microtouch/Makefile
open-src/driver/xf86-input-mouse/Makefile
open-src/driver/xf86-input-mutouch/Makefile
open-src/driver/xf86-input-palmax/Makefile
open-src/driver/xf86-input-penmount/Makefile
open-src/driver/xf86-input-spaceorb/Makefile
open-src/driver/xf86-input-summa/Makefile
open-src/driver/xf86-input-tek4957/Makefile
open-src/driver/xf86-input-vmmouse/COPYING
open-src/driver/xf86-input-vmmouse/Makefile
open-src/driver/xf86-input-vmmouse/hal-configure-options.patch
open-src/driver/xf86-video-apm/Makefile
open-src/driver/xf86-video-ark/Makefile
open-src/driver/xf86-video-ast/Makefile
open-src/driver/xf86-video-ati/6205248.patch
open-src/driver/xf86-video-ati/6675166.patch
open-src/driver/xf86-video-ati/6675188.patch
open-src/driver/xf86-video-ati/Makefile
open-src/driver/xf86-video-ati/build-dri.patch
open-src/driver/xf86-video-ati/mapfiles.patch
open-src/driver/xf86-video-ati/solaris-dri-drv-port.patch
open-src/driver/xf86-video-chips/Makefile
open-src/driver/xf86-video-cirrus/Makefile
open-src/driver/xf86-video-cirrus/mapfiles.patch
open-src/driver/xf86-video-cyrix/COPYING
open-src/driver/xf86-video-cyrix/Makefile
open-src/driver/xf86-video-dummy/Makefile
open-src/driver/xf86-video-glint/Makefile
open-src/driver/xf86-video-i128/Makefile
open-src/driver/xf86-video-i740/Makefile
open-src/driver/xf86-video-intel/6538497_6554161.patch
open-src/driver/xf86-video-intel/6767351.patch
open-src/driver/xf86-video-intel/845_workaround.patch
open-src/driver/xf86-video-intel/Add-support-for-G41-chipset.patch
open-src/driver/xf86-video-intel/Do-force-CRT-detect-sequence-twice-on-4-series-chips.patch
open-src/driver/xf86-video-intel/Fix-broken-stolen-memory-counting-on-G4X.patch
open-src/driver/xf86-video-intel/Makefile
open-src/driver/xf86-video-intel/Render-register-clock-gating-disable-fix-on-4-series.patch
open-src/driver/xf86-video-intel/build-dri-new.patch
open-src/driver/xf86-video-intel/build-dri.patch
open-src/driver/xf86-video-intel/eaglelake-support.patch
open-src/driver/xf86-video-intel/libraries.patch
open-src/driver/xf86-video-mach64/6205248.patch
open-src/driver/xf86-video-mach64/COPYING
open-src/driver/xf86-video-mach64/Makefile
open-src/driver/xf86-video-mga/Makefile
open-src/driver/xf86-video-neomagic/Makefile
open-src/driver/xf86-video-nsc/COPYING
open-src/driver/xf86-video-nsc/Makefile
open-src/driver/xf86-video-nv/Makefile
open-src/driver/xf86-video-nv/pci-match.patch
open-src/driver/xf86-video-openchrome/Makefile
open-src/driver/xf86-video-r128/COPYING
open-src/driver/xf86-video-r128/Makefile
open-src/driver/xf86-video-radeonhd/Makefile
open-src/driver/xf86-video-rendition/Makefile
open-src/driver/xf86-video-s3/Makefile
open-src/driver/xf86-video-s3/newmmio.patch
open-src/driver/xf86-video-s3virge/Makefile
open-src/driver/xf86-video-savage/Makefile
open-src/driver/xf86-video-siliconmotion/Makefile
open-src/driver/xf86-video-sis/Makefile
open-src/driver/xf86-video-tdfx/Makefile
open-src/driver/xf86-video-tga/Makefile
open-src/driver/xf86-video-trident/Makefile
open-src/driver/xf86-video-tseng/Makefile
open-src/driver/xf86-video-vesa/Makefile
open-src/driver/xf86-video-vesa/copying.patch
open-src/driver/xf86-video-vesa/randr-crash.patch
open-src/driver/xf86-video-vesa/vesa_xorg72.patch
open-src/driver/xf86-video-vga/COPYING
open-src/driver/xf86-video-vga/Makefile
open-src/driver/xf86-video-via/COPYING
open-src/driver/xf86-video-via/Makefile
open-src/driver/xf86-video-vmware/Makefile
open-src/driver/xf86-video-wsfb/Makefile
open-src/driver/xf86-video-wsfb/wsfb-updates.patch
open-src/driver/xf86-video-wsfb/xfbpp-removal.patch
open-src/font/Makefile.inc
open-src/lib/Makefile
open-src/lib/libXaw/Makefile
open-src/lib/libdrm/Makefile
open-src/lib/libdrm/solaris-drm-port.patch
open-src/lib/libpciaccess/Makefile
open-src/lib/libpciaccess/sparc-byteswap.patch
open-src/lib/libxtrans/Makefile
open-src/lib/libxtrans/bug-6688467.patch
open-src/lib/libxtrans/inetv6.patch
open-src/lib/libxtrans/socket-perm.patch
open-src/lib/libxtrans/tsol-unix-domain.patch
open-src/lib/mesa/6538497.patch
open-src/lib/mesa/6559710.patch
open-src/lib/mesa/6709716.patch
open-src/lib/mesa/6709720.patch
open-src/lib/mesa/6756412.patch
open-src/lib/mesa/Makefile
open-src/lib/mesa/execmem.patch
open-src/lib/mesa/glext.h.patch
open-src/lib/mesa/glxext.h.patch
open-src/lib/mesa/maxtexunit.patch
open-src/lib/mesa/mesa965.patch
open-src/lib/mesa/mklib-SunCC.patch
open-src/lib/mesa/mklib-exports.patch
open-src/lib/mesa/mklib-libc.patch
open-src/lib/mesa/mklib.patch
open-src/lib/mesa/no-hidden.patch
open-src/lib/mesa/solaris-dri-port.patch
open-src/lib/mesa/solaris-paths.patch
open-src/lib/mesa/solaris-port.patch
open-src/lib/mesa/sun-src/src/glx/x11/mapfile.scope
open-src/lib/mesa/sun-src/src/mesa/drivers/dri/mapfile.externs
open-src/proto/Makefile
open-src/proto/Makefile.inc
open-src/proto/inputproto/6649171.patch
open-src/proto/inputproto/Makefile
open-src/proto/inputproto/c++.patch
open-src/proto/printproto/Makefile
open-src/proto/randrproto/B32.patch
open-src/proto/randrproto/Makefile
open-src/proto/renderproto/Makefile
open-src/proto/x11proto/Makefile
open-src/proto/xextproto/Makefile
open-src/proto/xf86driproto/Makefile
open-src/util/build-tools/find-build-errors
open-src/xserver/Makefile.inc
open-src/xserver/xorg/6278039.patch
open-src/xserver/xorg/6406044.patch
open-src/xserver/xorg/6425775.patch
open-src/xserver/xorg/6535006.patch
open-src/xserver/xorg/6540484.patch
open-src/xserver/xorg/6559710.patch
open-src/xserver/xorg/6561019.patch
open-src/xserver/xorg/6577124.patch
open-src/xserver/xorg/6618220.patch
open-src/xserver/xorg/6635721.patch
open-src/xserver/xorg/6635727.patch
open-src/xserver/xorg/6635732.patch
open-src/xserver/xorg/6635740.patch
open-src/xserver/xorg/6636174.patch
open-src/xserver/xorg/6640505.patch
open-src/xserver/xorg/6642762.patch
open-src/xserver/xorg/6668806.patch
open-src/xserver/xorg/6683567.patch
open-src/xserver/xorg/6685465.patch
open-src/xserver/xorg/6721634.patch
open-src/xserver/xorg/6740339.patch
open-src/xserver/xorg/6742579.patch
open-src/xserver/xorg/COPYING.xorg-docs
open-src/xserver/xorg/IA.patch
open-src/xserver/xorg/KB_EncodingAtXCrash.patch
open-src/xserver/xorg/Makefile
open-src/xserver/xorg/RandR-1.2-man.patch
open-src/xserver/xorg/XkbSetRulesDflts.patch
open-src/xserver/xorg/Xorg-mapfile.patch
open-src/xserver/xorg/amd64-loader-path.patch
open-src/xserver/xorg/autoconfig.patch
open-src/xserver/xorg/autoconfig2.patch
open-src/xserver/xorg/automake-1.10.patch
open-src/xserver/xorg/cfbmskbits.patch
open-src/xserver/xorg/cli-nobanner.patch
open-src/xserver/xorg/cli-nolock.patch
open-src/xserver/xorg/composite-7447.patch
open-src/xserver/xorg/composite-default.patch
open-src/xserver/xorg/composite-grabs.patch
open-src/xserver/xorg/dixmods-deps.patch
open-src/xserver/xorg/dri.patch
open-src/xserver/xorg/driver-autoconfig.patch
open-src/xserver/xorg/dtlogin-userinfo.patch
open-src/xserver/xorg/dtrace.patch
open-src/xserver/xorg/faster-devPrivates.patch
open-src/xserver/xorg/fontmod.patch
open-src/xserver/xorg/glapi-DEBUG.patch
open-src/xserver/xorg/glx-byteswap.patch
open-src/xserver/xorg/glx-impure.patch
open-src/xserver/xorg/glx-textwarn.patch
open-src/xserver/xorg/hal-verbose-msg.patch
open-src/xserver/xorg/kbd-driver.patch
open-src/xserver/xorg/kbd_mode.patch
open-src/xserver/xorg/kdsetmode.patch
open-src/xserver/xorg/keep-aperture-open.patch
open-src/xserver/xorg/lg3d.patch
open-src/xserver/xorg/libmd-sha1.patch
open-src/xserver/xorg/make_xkm_output_dir.patch
open-src/xserver/xorg/nvidia-autoconfig.patch
open-src/xserver/xorg/patch-list
open-src/xserver/xorg/pci-stubs.patch
open-src/xserver/xorg/pciids-version.patch
open-src/xserver/xorg/popen-signal.patch
open-src/xserver/xorg/pre-faster-devPrivates.patch
open-src/xserver/xorg/ramdac-symbols.patch
open-src/xserver/xorg/remove-ppcPci.patch
open-src/xserver/xorg/remove-sparcPci.patch
open-src/xserver/xorg/render-security.patch
open-src/xserver/xorg/restore-kbd-mouse.patch
open-src/xserver/xorg/secure-rpc.patch
open-src/xserver/xorg/shm-across-zones.patch
open-src/xserver/xorg/signal-handler.patch
open-src/xserver/xorg/solaris-mapping.patch
open-src/xserver/xorg/sparc-nopciprobe.patch
open-src/xserver/xorg/sun-apm.patch
open-src/xserver/xorg/sun-extramodes.patch
open-src/xserver/xorg/sun-kb-autodetect.patch
open-src/xserver/xorg/sun-keymappings.patch
open-src/xserver/xorg/sun-loginfo.patch
open-src/xserver/xorg/sun-manpage.patch
open-src/xserver/xorg/sun-paths.patch
open-src/xserver/xorg/sun-src/IA/interactive.c
open-src/xserver/xorg/sun-src/Xext/lge.c
open-src/xserver/xorg/sun-src/Xext/lgeint.h
open-src/xserver/xorg/sun-src/Xext/tsolCompat.c
open-src/xserver/xorg/sun-src/dix/xytosubwin.c
open-src/xserver/xorg/sun-src/doc/LG/lg_event_trip.odt
open-src/xserver/xorg/sun-src/doc/LG/lg_event_trip.pdf
open-src/xserver/xorg/sun-src/doc/LG/lg_xorg_mods.odt
open-src/xserver/xorg/sun-src/doc/LG/lg_xorg_mods.pdf
open-src/xserver/xorg/sun-src/doc/LG/lge_protocol.odt
open-src/xserver/xorg/sun-src/doc/LG/lge_protocol.pdf
open-src/xserver/xorg/sun-src/hw/xfree86/dixmods/iamodule.c
open-src/xserver/xorg/sun-src/hw/xfree86/os-support/solaris/sun_apm.c
open-src/xserver/xorg/sun-src/hw/xfree86/os-support/solaris/sun_xkbtable.c
open-src/xserver/xorg/sun-src/hw/xfree86/os-support/solaris/sun_xkbtable.h
open-src/xserver/xorg/sun-src/hw/xfree86/scanpci/pci.ids
open-src/xserver/xorg/sun-src/mesa/Makefile.am
open-src/xserver/xorg/sun-src/tsol/Makefile.am
open-src/xserver/xorg/sun-src/tsol/tsol.h
open-src/xserver/xorg/sun-src/tsol/tsolextension.c
open-src/xserver/xorg/sun-src/tsol/tsolinfo.h
open-src/xserver/xorg/sun-src/tsol/tsolpolicy.c
open-src/xserver/xorg/sun-src/tsol/tsolpolicy.h
open-src/xserver/xorg/sun-src/tsol/tsolprotocol.c
open-src/xserver/xorg/sun-src/tsol/tsolutils.c
open-src/xserver/xorg/sun-virtual-mouse.patch
open-src/xserver/xorg/sys-kd.h.patch
open-src/xserver/xorg/wsfb.patch
open-src/xserver/xorg/x86-64-ifdef.patch
open-src/xserver/xorg/x86emu-fix-build.patch
open-src/xserver/xorg/xephyr-man.patch
open-src/xserver/xorg/xephyr.patch
open-src/xserver/xorg/xevie.patch
open-src/xserver/xorg/xkb-defaults-compat.patch
open-src/xserver/xorg/xkb-defaults.patch
open-src/xserver/xorg/xorgcfg.patch
open-src/xserver/xorg/xorgconfig.patch
open-src/xserver/xorg/xprint.patch
open-src/xserver/xorg/xprint01.patch
open-src/xserver/xorg/xpstubs.patch
open-src/xserver/xorg/xtsol.patch
open-src/xserver/xorg/xv-swap.patch
open-src/xserver/xvnc/COPYING
open-src/xserver/xvnc/Makefile
open-src/xserver/xvnc/build-without-Xorg.patch
open-src/xserver/xvnc/solaris-port.patch
open-src/xserver/xvnc/vnc-24bit.patch
open-src/xserver/xvnc/vnc-Makefile.am.patch
open-src/xserver/xvnc/vnc-allocate.patch
open-src/xserver/xvnc/vnc-always_use_fb.patch
open-src/xserver/xvnc/vnc-autotools-compile.patch
open-src/xserver/xvnc/vnc-autotools.patch
open-src/xserver/xvnc/vnc-bounds.patch
open-src/xserver/xvnc/vnc-fasterPrivates.patch
open-src/xserver/xvnc/vnc-gcc43.patch
open-src/xserver/xvnc/vnc-includes.patch
open-src/xserver/xvnc/vnc-int10.patch
open-src/xserver/xvnc/vnc-ipv6.patch
open-src/xserver/xvnc/vnc-mieq.patch
open-src/xserver/xvnc/vnc-modular-xorg.patch
open-src/xserver/xvnc/vnc-module_crash.patch
open-src/xserver/xvnc/vnc-nohttpd.patch
open-src/xserver/xvnc/vnc-paint.patch
open-src/xserver/xvnc/vnc-privates.patch
open-src/xserver/xvnc/vnc-restart.patch
open-src/xserver/xvnc/vnc-scrollbars.patch
open-src/xserver/xvnc/vnc-selections.patch
open-src/xserver/xvnc/vnc-use-fb.patch
open-src/xserver/xvnc/vnc-viewerIPv6.patch
open-src/xserver/xvnc/vnc-vncpasswd.patch
open-src/xserver/xvnc/vnc-xorg.patch
packages/SUNW0xman/Makefile
packages/SUNWxorg-cfg/prototype_com
packages/SUNWxorg-doc/copyright.add
packages/SUNWxorg-doc/copyright.add.i386
packages/SUNWxorg-doc/copyright.add.sparc
packages/SUNWxorg-doc/depend
packages/SUNWxorg-doc/pkginfo.tmpl
packages/SUNWxorg-doc/prototype_com
packages/SUNWxorg-doc/prototype_i386
packages/SUNWxorg-doc/prototype_sparc
packages/SUNWxorg-graphics-ddx/copyright.add.i386
packages/SUNWxorg-graphics-ddx/depend_com
packages/SUNWxorg-graphics-ddx/depend_i386
packages/SUNWxorg-graphics-ddx/depend_i386.tmpl
packages/SUNWxorg-graphics-ddx/depend_sparc
packages/SUNWxorg-graphics-ddx/depend_sparc.tmpl
packages/SUNWxorg-graphics-ddx/prototype_com
packages/SUNWxorg-graphics-ddx/prototype_i386
packages/SUNWxorg-graphics-ddx/prototype_sparc
packages/SUNWxorg-headers/prototype
packages/SUNWxorg-mesa/prototype
packages/SUNWxorg-server/depend_com
packages/SUNWxorg-server/depend_i386
packages/SUNWxorg-server/depend_i386.tmpl
packages/SUNWxorg-server/depend_sparc
packages/SUNWxorg-server/depend_sparc.tmpl
packages/SUNWxorg-server/prototype_com
packages/SUNWxorg-server/prototype_i386
packages/SUNWxorg-tsol-module/depend
packages/SUNWxorg-tsol-module/depend.tmpl
packages/SUNWxwinc/prototype
packages/SUNWxwplr/prototype_com
packages/SUNWxwplr/prototype_i386
packages/copyright
packages/depend
packages/upgrade-X
--- a/make_release_packages	Sat Jan 10 10:35:32 2009 -0800
+++ b/make_release_packages	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 #! /bin/ksh93
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 # 
-# @(#)make_release_packages	1.64 08/12/10
+# @(#)make_release_packages	1.65	09/01/14
 #
 #	Create and fill a package staging area for X
 #
@@ -58,7 +58,7 @@
     SUNWpciaccess SUNWpixman SUNWfreetype2 SUNWvncviewer SUNWxcursor-themes
     SUNWxorg-cfg SUNWxorg-client-docs SUNWxorg-client-programs
     SUNWxorg-clientlibs SUNWxorg-compatlinks SUNWxorg-devel-docs
-    SUNWxorg-doc SUNWxorg-graphics-ddx SUNWxorg-headers
+    SUNWxorg-graphics-ddx SUNWxorg-headers
     SUNWxorg-server SUNWxorg-tsol-module SUNWxprint-server
     SUNWxscreensaver-hacks SUNWxscreensaver-hacks-gl SUNWxsun-server
     SUNWxvnc SUNWxwacx SUNWxwcft SUNWxwdem SUNWxwdim SUNWxwdxm
@@ -134,6 +134,15 @@
     exit 1
 }
 
+function process_includes
+{
+    nawk \
+	"/^include / 	{
+			  system(\"cat $1/\" \$2)
+			  next
+			}
+	{ print }" $2
+}
 
 # Which platform name do we use for 64-bit?
 case "${MACH}" in
@@ -184,6 +193,11 @@
 /bin/cp copyright depend i.* r.* ${PACKAGE_DIR} >/dev/null 2>&1
 
 for package in ${PACKAGE_LIST} common_files ; do
+    if [[ ! -d ${package} ]] ; then
+	print "packages/${package} not found ; skipping"
+	continue
+    fi
+
     cd ${package}
 
     /bin/mkdir ${PACKAGE_DIR}/${package}
@@ -197,14 +211,8 @@
     for F in copyright.add copyright.add.${MACH} ; do
 	if [[ -f $F ]] ; then
 	    chmod +w ${PACKAGE_DIR}/${package}/copyright
-	    PROTODIR=${PROTODIR} nawk \
-		'BEGIN   	{ PROTODIR = ENVIRON [ "PROTODIR" ]; }
-		 /^include / 	{
-				        system("cat " PROTODIR "/licenses/" $2)
-				        next
-				}
-				{ print }' \
-		    $F >> ${PACKAGE_DIR}/${package}/copyright
+	    process_includes "${PROTODIR}/licenses" $F \
+		>> ${PACKAGE_DIR}/${package}/copyright
 	fi
     done
     cd ..
@@ -233,9 +241,14 @@
 PKGMK_VARS="plat_64=${PLAT_64} plat=${MACH}"
 
 for package in ${PACKAGE_LIST} ; do
+    print "******** Making the ${package} package ********"
+    if [[ ! -d ${package} ]] ; then
+	print "${PACKAGE_DIR}/${package} was not found ; skipping"
+	continue
+    fi
+
     cd ${package}
     date
-    print "******** Making the ${package} package ********"
 
     sed -e '/ARCH/s/ISA/'${MACH}'/' -e 's/SUNW_PRODVERS=.*$/SUNW_PRODVERS='${VERSION}/ -e 's/VERSION=.*$/VERSION='${VERSION}.${BUILD},REV=${DATE}/ pkginfo.tmpl > pkginfo
     if [[ -f Makefile ]] ; then
@@ -252,6 +265,14 @@
 	done
     fi
 
+    for df in depend depend_${MACH} ; do
+	# If filename.tmpl exists, but filename does not, 
+	# build filename from the .tmpl
+	if [[ -f "${df}.tmpl" && ! -f "${df}" ]] ; then
+	    process_includes "${PKG_SOURCE_DIR}/${package}" ${df}.tmpl > ${df}
+	fi
+    done
+
     if [[ -f prototype ]] ; then
 	# Simple package with the same prototype on all platforms
 	PROTOTYPE="prototype"
--- a/open-src/README	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/README	Thu Jan 15 12:55:00 2009 -0800
@@ -226,6 +226,10 @@
  - C preprocessor flags (-I & -D) passed to configure via CPPFLAGS 
    variable by default_config rule.
 
+MODULE_DEBUG_FLAGS
+ - C Compiler flags passed to configure via CFLAGS variable by
+   default_config rule when building debug versions (such as via "make debug")
+
 MODULE_LDFLAGS
  - Linker flags passed to configure via LDFLAGS variable by default_config
    rule.
@@ -401,6 +405,7 @@
 	- MODTYPE_CFLAGS
 	- MODTYPE_CXXFLAGS
 	- MODTYPE_CPPFLAGS
+	- MODTYPE_DEBUG_FLAGS
 	- MODTYPE_LDFLAGS
 	- MODTYPE_LD_OPTIONS
 	- MODTYPE_BUILD_ENV
@@ -508,7 +513,7 @@
 
 =============================================================================
 
-Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 Use subject to license terms.
 
 Permission is hereby granted, free of charge, to any person obtaining a
--- a/open-src/app/mesa-demos/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/app/mesa-demos/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,14 +28,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.10	08/08/08
+# @(#)Makefile	1.11	09/01/14
 #
 
 # Package name used in tarballs
 MODULE_NAME=MesaDemos
 
 # Version number (used in path names)
-MODULE_VERSION=6.5.2
+MODULE_VERSION=7.2
 
 # Directory created by unpacking source
 SOURCE_DIRNAME=Mesa-$(MODULE_VERSION)
@@ -52,28 +52,25 @@
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES= \
-	null-display.patch 		\
-	Xorg-6.9-changes.patch 
+
+#	Xorg-6.9-changes.patch 
 
 # Binaries built in tree
 GLXGEARS_BIN=$(SOURCE_DIR)/progs/xdemos/glxgears
 GLXINFO_BIN=$(SOURCE_DIR)/progs/xdemos/glxinfo
 
-# Where to install files
-MESA_prefix=$(PROTODIR)$(X11_DIR)
-
-# 6.5.2 doesn't use autoconf, just links configuration files
+# configure script is run in ../lib/mesa build, just link to results here
 CONFIGURE_TARGETS=$(SOURCE_DIR)/configs/current
 CONFIGURE_TARGETS_SET=yes
 
 # What to build
-BUILD_TARGETS_sparc=$(GLXGEARS_BIN)
+BUILD_TARGETS_sparc=
 BUILD_TARGETS_i386=$(GLXGEARS_BIN) $(GLXINFO_BIN)
 BUILD_TARGETS= $(BUILD_TARGETS_$(MACH))
 BUILD_TARGETS_SET=yes
 
 # What to install
-INSTALL_TARGETS_sparc=install_glxgears install_man
+INSTALL_TARGETS_sparc=install_man
 INSTALL_TARGETS_i386=install_glxgears install_glxinfo install_man
 INSTALL_TARGETS= $(INSTALL_TARGETS_$(MACH))
 INSTALL_TARGETS_SET=yes
@@ -83,63 +80,50 @@
 
 ### Rules specific to this directory:
 
-# Merge in additional sources from Mesa library sun-src directory
-source_gen:: $(LNDIR)
-	mkdir -p $(SOURCE_DIR)
-	(cd $(SOURCE_DIR) && $(LNDIR) ../../../../lib/mesa/sun-src)
-	(cd $(SOURCE_DIR)/configs && touch default)
-
 # Only care about building X demos
 DEMOS_DIR=$(SOURCE_DIR)/progs/xdemos
 
-# Mesa config file names
-MESA_CFG_32_sparc=solaris-sparcv8-cc
-MESA_CFG_64_sparc=solaris-sparcv9-cc
-MESA_CFG_32_i386=solaris-x86-cc-dri
-MESA_CFG_64_i386=solaris-x64-cc-dri
-
-MESA_CFG_32= $(MESA_CFG_32_$(MACH))
-MESA_CFG_64= $(MESA_CFG_64_$(MACH))
-
-MODULE_BUILD_32_FLAGS= MESA_CFG=$(MESA_CFG_32)
-MODULE_BUILD_64_FLAGS= MESA_CFG=$(MESA_CFG_64)
-
 # Flags passed on make command line when building
-ADD_MAKE_FLAGS = X11_INCLUDES="-I$(PROTODIR)$(X11_INCLUDES_DIR)" \
+MODULE_BUILD_MAKEFLAGS = \
 	LDFLAGS="$(PROG_LDFLAGS) -L$(PROTODIR)$(X11_DIR)/lib$(ARCHLIBSUBDIR)"
 
-# 6.5.2 doesn't use autoconf, just links configuration files
+# Use configuration generated by Mesa library build
 $(SOURCE_DIR)/configs/current: $(UNPACK_TARGET)
+	mkdir -p $(SOURCE_DIR)/configs
 	(cd $(SOURCE_DIR)/configs && \
-	 rm -f current && \
-	 ln -s $(MESA_CFG) current )
+	 $(LNDIR) ../../../../../lib/mesa/$(SOURCE_DIR)/configs)
 
 # Build Mesa demos
 $(GLXGEARS_BIN): $(UNPACK_TARGET) $(CONFIGURE_TARGETS)
-	(cd $(DEMOS_DIR) && $(MAKE) $(MAKEFLAGS) $(ADD_MAKE_FLAGS) glxgears )
+	(cd $(DEMOS_DIR) && \
+	 $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS) glxgears )
 
 $(GLXINFO_BIN): $(UNPACK_TARGET) $(CONFIGURE_TARGETS)
-	(cd $(DEMOS_DIR) && $(MAKE) $(MAKEFLAGS) $(ADD_MAKE_FLAGS) glxinfo )
+	(cd $(DEMOS_DIR) && \
+	 $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS) glxinfo )
 
 # For testing - we don't ship the rest of these
 all-xdemos_gen: $(UNPACK_TARGET) $(CONFIGURE_TARGETS)
-	(cd $(DEMOS_DIR) && $(MAKE) $(MAKEFLAGS) $(ADD_MAKE_FLAGS) )
+	(cd $(DEMOS_DIR) && \
+	 $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS))
 
 all-xdemos:
 	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) all-xdemos_gen
 
 install_gen:: $(INSTALL_TARGETS)
 
+DESTDIR=$(PROTODIR)
+
 install_glxgears: $(GLXGEARS_BIN)
-	mkdir -p $(MESA_prefix)/bin
-	cp -pf $(GLXGEARS_BIN) $(MESA_prefix)/bin
+	mkdir -p $(DESTDIR)$(MODULE_PREFIX)/bin
+	cp -pf $(GLXGEARS_BIN) $(DESTDIR)$(MODULE_PREFIX)/bin
 
 install_glxinfo: $(GLXINFO_BIN)
-	mkdir -p $(MESA_prefix)/bin
-	cp -pf $(GLXINFO_BIN) $(MESA_prefix)/bin
+	mkdir -p $(DESTDIR)$(MODULE_PREFIX)/bin
+	cp -pf $(GLXINFO_BIN) $(DESTDIR)$(MODULE_PREFIX)/bin
 
 install_man: 
-	mkdir -p $(MESA_prefix)/share/man/man1
-	cp -pf glxgears.1 glxinfo.1 $(MESA_prefix)/share/man/man1
+	mkdir -p $(DESTDIR)$(MODULE_PREFIX)/share/man/man1
+	cp -pf glxgears.1 glxinfo.1 $(DESTDIR)$(MODULE_PREFIX)/share/man/man1
 
 
--- a/open-src/common/Makefile.inc	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/common/Makefile.inc	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 # -*- Makefile -*- rules commonly shared among X consolidation open source dirs
 #
-# Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.97	08/12/19
+# @(#)Makefile.inc	1.98	09/01/14
 #
 
 ### Default rules
@@ -56,6 +56,8 @@
 $(SOURCE_DIRNAME_DEFAULT)	SOURCE_DIRNAME=$(MODULE_NAME)-$(MODULE_VERSION)
 
 SOURCE_DIR = $(BUILD_DIR)/$(SOURCE_DIRNAME)
+SOURCE_DIR_32 = $(BUILD_DIR_32)/$(SOURCE_DIRNAME)
+SOURCE_DIR_64 = $(BUILD_DIR_64)/$(SOURCE_DIRNAME)
 
 # Set default tarball if not set in module makefile
 SOURCE_TARBALL_NAME_DEFAULT	= $(SOURCE_TARBALL_NAME_SET:yes=$(POUND_SIGN))
@@ -126,12 +128,12 @@
 
 source_gen:: $(SOURCE_TARGETS)
 
-source_32: $(BUILD_DIR_32)/.unpack_done
-$(BUILD_DIR_32)/.unpack_done:
+source_32: $(SOURCE_DIR_32)/$(UNPACK_FILE)
+$(SOURCE_DIR_32)/$(UNPACK_FILE):
 	$(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_32) source_gen
 
-source_64: $(BUILD_DIR_64)/.unpack_done
-$(BUILD_DIR_64)/.unpack_done:
+source_64: $(SOURCE_DIR_64)/$(UNPACK_FILE)
+$(SOURCE_DIR_64)/$(UNPACK_FILE):
 	$(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_64) source_gen
 
 configure: $(BUILD_TYPES:%=configure_%)
@@ -156,7 +158,7 @@
 
 install: $(BUILD_TYPES:%=install_%)
 
-install_gen:: $(INSTALL_TARGETS) install_license
+install_gen:: $(INSTALL_TARGETS) install_license install_pkgconfig_uninstalled
 
 install_32:: build_32
 	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) install_gen
@@ -235,7 +237,6 @@
 	-e 's|Requires.private: .*$$||;'
 
 #	-e 's|(Requires: .*)\bx11\b|$$1|;' \
-#	-e 's|^prefix=@prefix@|prefix=\$$\{top_builddir\}@prefix@|'
 
 SUNTOUCH_MAN_FLAGS = \
 	-a '{Availability, $(SUN_PACKAGE)}' \
@@ -262,8 +263,8 @@
 	  if [[ ! -x $(LNDIR) ]] ; then \
 	    (cd $(TOP)/util/lndir && $(MAKE) $(MAKEFLAGS) install) ; \
 	  fi ; \
-	  print "cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR)" ; \
-	  (cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR) ) ; \
+	  (PS4="" ; set -x ; \
+	   cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR) ) ; \
 	fi ; \
 	if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \
 	    for p in $(SOURCE_PATCHES) x ; do \
@@ -275,20 +276,18 @@
 	    done ; \
 	fi ; \
 	if [[ "$(SUNTOUCHED_MANPAGES)" != "" ]] ; then \
-	    print "/usr/perl5/bin/perl $(TOP)/common/suntouch-manpages.pl \
-		$(SUNTOUCH_MAN_FLAGS) $(SUNTOUCHED_MANPAGES)" ; \
-	    (cd $(SOURCE_DIR) && \
+	    (PS4="" ; set -x ; \
+		cd $(SOURCE_DIR) && \
 		/usr/perl5/bin/perl $(TOP)/common/suntouch-manpages.pl \
 		$(SUNTOUCH_MAN_FLAGS) $(SUNTOUCHED_MANPAGES) ) ; \
 	fi ; \
 	if [[ "$(FIX_PC_FILES)" != "" ]] ; then \
-	    print "/usr/perl5/bin/perl -i.orig -p \
-			$(FIX_PC_OPS) $(FIX_PC_FILES)" ; \
-	    (cd $(SOURCE_DIR) && \
+	    (PS4="" ; set -x ; \
+		cd $(SOURCE_DIR) && \
 		/usr/perl5/bin/perl -i.orig -p \
 			$(FIX_PC_OPS) $(FIX_PC_FILES) ); \
 	fi
-	touch $(BUILD_DIR)/$(UNPACK_FILE)
+	touch $(UNPACK_TARGET)
 
 ### Run configure scripts
 
@@ -324,7 +323,7 @@
 	-L$(PROTODIR)/usr/lib$(ARCHLIBSUBDIR) \
 	-L$(PROTODIR)$(X11_DIR)/lib$(ARCHLIBSUBDIR)
 
-DEFAULT_PKG_CONFIG_PATH=$(TOP)/common/pc-files/$(BUILD_DIR):$(PROTODIR)/usr/lib/$(ARCHLIBSUBDIR)/pkgconfig:/usr/lib$(ARCHLIBSUBDIR)/pkgconfig
+DEFAULT_PKG_CONFIG_PATH=$(TOP)/common/pc-files/$(BUILD_DIR):$(PROTODIR)$(PKGCONFIG_DIR):$(PKGCONFIG_DIR)
 
 # Set USE_DEFAULT_CONFIG_ENV=no in a Makefile to not use this default
 # autoconfig environment
@@ -390,6 +389,7 @@
 	$(MODTYPE_LD_OPTIONS) $(MODULE_LD_OPTIONS)
 
 BUILD_ENV = LD_OPTIONS='$(LD_OPTIONS)' \
+	PROTODIR='$(PROTODIR)' \
 	$(MODTYPE_BUILD_ENV) $(MODULE_BUILD_ENV)
 
 DEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
@@ -410,7 +410,7 @@
 	 $(subdir_cmd) )
 
 DEFAULT_INSTALL_MAKEFLAGS= -e DESTDIR=$(PROTODIR) \
-	pkgconfigdir=/usr/lib$(ARCHLIBSUBDIR)/pkgconfig \
+	pkgconfigdir=$(PKGCONFIG_DIR) \
 	$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
 	$(MODTYPE_INSTALL_MAKEFLAGS) $(MODULE_INSTALL_MAKEFLAGS) \
 
@@ -432,6 +432,23 @@
 	 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS) \
 	 $(subdir_cmd))
 
+# Adjust paths in pkg-config files for -uninstalled variants used during build
+UNINSTALLED_PC_OPS= \
+	-e 's|(-[LI]\s*)\$$|$$1$(PROTODIR)\$$|g;' \
+	-e 's|^sdkdir=|sdkdir=$(PROTODIR)|g;' \
+	-e 's|$(PROTODIR)\$${sdkdir}|\$${sdkdir}|g;'
+
+install_pkgconfig_uninstalled:
+	@ if [[ ! -z "$(FIX_PC_FILES)" ]] ; then \
+	    cd $(SOURCE_DIR) ; \
+	    for pcin in $(FIX_PC_FILES:.in=) ; do \
+		pc=$${pcin%%+(.pc|.in)} ; \
+		(PS4="" ; set -x ; \
+		 /usr/perl5/bin/perl -p $(UNINSTALLED_PC_OPS) $$pc.pc > \
+		    $(PROTODIR)$(PKGCONFIG_DIR)/$$(basename $${pc})-uninstalled.pc ) ; \
+	    done ; \
+	fi
+
 # Set comments in ELF binaries to help identify versions/builds
 ELF_COMMENTS = $(MODULE_NAME) $(MODULE_VERSION)
 ELF_COMMENTS += $(MODTYPE_ELF_COMMENTS)$(MODULE_ELF_COMMENTS)
@@ -476,14 +493,14 @@
 regen-patches: 
 	CUR_LIST=""
 	rm -rf tmp-regen
-	make SOURCE_PATCHES="$(CUR_LIST)" BUILD_DIR=tmp-regen source_gen
+	make SOURCE_PATCHES="$(CUR_LIST)" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source_gen
 	mkdir -p new
 	for f in $(SOURCE_PATCHES) ; do \
 	    p=$$(print $$f | sed 's/,.*$$//') ; \
 	    print '=================' $$p ; \
 	    rm -rf prev ; \
 	    mv tmp-regen prev ; \
-	    $(MAKE) SOURCE_PATCHES="$${CUR_LIST} $$f" BUILD_DIR=tmp-regen source_gen ; \
+	    $(MAKE) SOURCE_PATCHES="$${CUR_LIST} $$f" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source_gen ; \
 	    awk '/^--- /	{exit} \
 		 /^diff -u/	{exit} \
 			 	{print}' $$p > new/$$p ; \
@@ -496,6 +513,18 @@
 	done
 	rm -rf tmp-regen
 
+# Allows running "make list-patches" to get a list of all patches we 
+# currently apply in our builds
+list-patches:
+	@THIS_MODULE=$$(print $(PWD) | sed 's|.*/open-src/||') ; \
+	if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \
+	    for p in $(SOURCE_PATCHES) x ; do \
+		if [[ "$$p" != "x" ]] ; then \
+	            print "$${THIS_MODULE}/$$p" | sed 's/,-p[0-9]$$//' ;  \
+		fi ; \
+	    done ; \
+	fi
+
 ### Licensing files
 
 # Default license file name is COPYING (X.Org & GNU autoconf default)
--- a/open-src/common/Makefile.init	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/common/Makefile.init	Thu Jan 15 12:55:00 2009 -0800
@@ -1,7 +1,7 @@
 # -*- Makefile -*- rules commonly shared among X consolidation open source dirs
 # Makefile.init has definitions that are needed before the module/modtype rules
 #
-# Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -29,7 +29,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.init	1.5	08/10/06
+# @(#)Makefile.init	1.6	09/01/14
 #
 
 # Use ksh93 for shell commands in Makefiles so that builds are the same
@@ -87,24 +87,28 @@
 # requirements override this in their makefiles with MODULE_COMPILER.
 DEFAULT_COMPILER		= suncc
 
+# Flags used by either compiler in debug builds
+DEBUG_FLAGS_common	= -g $(MODTYPE_DEBUG_FLAGS) $(MODULE_DEBUG_FLAGS)
+
 ## Sun Studio
 CC_suncc		= cc
 CXX_suncc		= CC
 OPT_FLAGS_suncc		= -xO4 -xbuiltin=%none -xlibmil -xprefetch -xdepend
-DEBUG_FLAGS_suncc	= -g
+DEBUG_FLAGS_suncc	= $(DEBUG_FLAGS_common)
 $(BUILD_DEBUG:yes=) DEBUG_OR_OPT_FLAGS_suncc = $(DEBUG_FLAGS_suncc)
 $(BUILD_DEBUG:yes=$(POUND_SIGN)) DEBUG_OR_OPT_FLAGS_suncc = $(OPT_FLAGS_suncc)
 
-CFLAGS_suncc 		= $(DEBUG_OR_OPT_FLAGS_suncc) -v -mc -xstrconst
+CFLAGS_suncc 		= $(DEBUG_OR_OPT_FLAGS_suncc) -v -mc -xstrconst \
+			  -features=extensions
 CXXFLAGS_suncc		= $(DEBUG_OR_OPT_FLAGS_suncc) +w -mc -norunpath
 
-ARCH32_FLAGS_sparc_suncc 	= -xarch=v8plus
-ARCH64_FLAGS_sparc_suncc	= -xarch=v9
+ARCH32_FLAGS_sparc_suncc 	= -m32 -xarch=sparc
+ARCH64_FLAGS_sparc_suncc	= -m64 -xarch=sparc
 
 # -xregs=no%frameptr is required on x86 when compiling at -xO4 or higher to 
 # avoid losing stack frame pointers so you can't get stack traces or debug
-ARCH32_FLAGS_i386_suncc 	= -xtarget=pentium -xregs=no%frameptr
-ARCH64_FLAGS_i386_suncc 	= -xarch=generic64 -xregs=no%frameptr
+ARCH32_FLAGS_i386_suncc 	= -m32 -xtarget=pentium -xregs=no%frameptr
+ARCH64_FLAGS_i386_suncc 	= -m64 -xarch=sse2 -xregs=no%frameptr
 
 # SPARC ABI requires system libraries not use application registers
 ARCH_LIB_FLAGS_sparc_suncc 	= -xregs=no%appl
@@ -116,7 +120,7 @@
 CC_gcc				= $(GCC)
 CXX_gcc				= $(GXX)
 OPT_FLAGS_gcc			= -O3
-DEBUG_FLAGS_gcc			= -g
+DEBUG_FLAGS_gcc			= $(DEBUG_FLAGS_common)
 $(BUILD_DEBUG:yes=) DEBUG_OR_OPT_FLAGS_gcc = $(DEBUG_FLAGS_gcc)
 $(BUILD_DEBUG:yes=$(POUND_SIGN)) DEBUG_OR_OPT_FLAGS_gcc = $(OPT_FLAGS_gcc)
 CFLAGS_gcc			= $(DEBUG_OR_OPT_FLAGS_gcc) \
@@ -240,6 +244,13 @@
 SERVERMOD_subdir_i386=$(ARCHLIBSUBDIR)
 SERVERMOD_subdir=$(SERVERMOD_subdir_$(MACH))
 
+# PKGCONFIG_DIR is constructed of _prefix + ARCHLIBSUBDIR + _suffix
+PKGCONFIG_DIR_prefix=/usr/lib
+PKGCONFIG_DIR_suffix=/pkgconfig
+PKGCONFIG_DIR=$(PKGCONFIG_DIR_prefix)$(ARCHLIBSUBDIR)$(PKGCONFIG_DIR_suffix)
+PKGCONFIG_DIR_32=$(PKGCONFIG_DIR_prefix)$(PKGCONFIG_DIR_suffix)
+PKGCONFIG_DIR_64=$(PKGCONFIG_DIR_prefix)/$(SUBDIR64)$(PKGCONFIG_DIR_suffix)
+
 # Directory used for installing tools used during build but not
 # delivered in packages
 TOOLS_DIR=/tools
@@ -286,10 +297,10 @@
 
 # Target created when sources are unpacked
 UNPACK_FILE = .unpack_done
-UNPACK_TARGET = $(BUILD_DIR)/$(UNPACK_FILE)
+UNPACK_TARGET = $(SOURCE_DIR)/$(UNPACK_FILE) 
 
 ### Dependencies
 # Need to define more dependencies to enable simpler builds of subtree portions
 
 # Almost everything depends on the headers in xproto
-XPROTO_DEP=$(PROTODIR)/usr/lib/$(ARCHLIBSUBDIR)/pkgconfig/xproto.pc
+XPROTO_DEP=$(PROTODIR)$(PKGCONFIG_DIR)/xproto.pc
--- a/open-src/common/Makefile.subdirs	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/common/Makefile.subdirs	Thu Jan 15 12:55:00 2009 -0800
@@ -1,7 +1,7 @@
 # -*- Makefile -*- rules commonly shared among X consolidation open source dirs
 # Makefile.subdirs has rules for recursively iterating through module subdirs
 #
-# Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -29,7 +29,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.subdirs	1.1	08/08/07
+# @(#)Makefile.subdirs	1.2	09/01/14
 #
 
 # Need to set $MACH
@@ -38,37 +38,58 @@
 OS_SUBDIRS=$(OS_SUBDIRS_$(MACH))
 
 all: 
-	$(MAKE) $(MFLAGS) subdirs OS_TARGET=all
+	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=all
 
 World: clean all
 
 clean: 
-	$(MAKE) $(MFLAGS) subdirs OS_TARGET=clean
+	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=clean
+	$(MAKE) $(MAKEFLAGS) clean-obsolete-subdirs
 
 install:
-	$(MAKE) $(MFLAGS) subdirs OS_TARGET=install
+	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=install
 
 download:
-	$(MAKE) $(MFLAGS) subdirs OS_TARGET=download
+	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=download
 
 source:
-	$(MAKE) $(MFLAGS) subdirs OS_TARGET=source
+	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=source
 
 git-update:
-	$(MAKE) $(MFLAGS) subdirs OS_TARGET=git-update
+	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=git-update
 
 # Build debuggable versions
 debug-build:
-	$(MAKE) $(MFLAGS) subdirs OS_TARGET=debug
+	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=debug
 
 # Build & install debuggable versions
 debug-install:
-	$(MAKE) $(MFLAGS) subdirs OS_TARGET=debug-install
+	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=debug-install
+
+list-patches:
+	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=list-patches
 
 subdirs:
-	@case '${MFLAGS}' in *[ik]*) set +e;; esac; \
+	@case '${MAKEFLAGS}' in *[ik]*) set +e;; esac; \
 	for i in $(OS_SUBDIRS) ; do \
 	    (cd $$i ; \
 	     print "## making" $(OS_TARGET) "in open-src/$(DIRNAME)$$i..."; \
-	     $(MAKE) $(MFLAGS) CDEBUGFLAGS="$(CDEBUGFLAGS)" $(OS_TARGET)); \
+	     $(MAKE) $(MAKEFLAGS) CDEBUGFLAGS="$(CDEBUGFLAGS)" $(OS_TARGET)); \
 	done
+
+clean-obsolete-subdirs:
+	@case '${MAKEFLAGS}' in *[ik]*) set +e;; esac; \
+	if [[ ! -z "$(OBSOLETE_SUBDIRS)" ]] ; then \
+	    for i in $(OBSOLETE_SUBDIRS) ; do \
+	    	if [[ -d $$i ]] ; then \
+		    if [[ -f $$i/Makefile ]] ; then \
+		    	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=clean OS_SUBDIRS=$$i ; \
+		    else ; \
+		    	print "## removing obsolete build directories in open-src/$(DIRNAME)$$i..."; \
+			(set -x ; cd $$i && rm -rf build_32 build_64 ) ; \
+			(set -x ; rmdir $$i ) ; \
+		    fi ; \
+		fi ; \
+	    done ; \
+	fi ; \
+	return 0
--- a/open-src/data/xbitmaps/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/data/xbitmaps/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/10/24
+# @(#)Makefile	1.5	09/01/14
 #
 
 # Package name used in tarballs
@@ -46,7 +46,7 @@
 # Install copy of xbitmaps.pc in 64-bit pkgconfig files as well
 install_gen:: $(SOURCE_DIR)/Makefile
 	(cd $(SOURCE_DIR) ; \
-	 $(MAKE) $(MAKEFLAGS) -e DESTDIR=$(PROTODIR) pkgconfigdir=/usr/lib/$(SUBDIR64)/pkgconfig install-pkgconfigDATA )
+	 $(MAKE) $(MAKEFLAGS) -e DESTDIR=$(PROTODIR) pkgconfigdir=$(PKGCONFIGDIR_64) install-pkgconfigDATA )
 
 # Install bitmaps that we've shipped in Solaris, but which come from xmh
 # (which we're dropping)
--- a/open-src/driver/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 # Makefile for X Consolidation Open Source Xorg driver modules
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.10	08/08/08
+# @(#)Makefile	1.11	09/01/14
 #
 ###############################################################################
 
@@ -67,17 +67,18 @@
 	xf86-video-ati			\
 	xf86-video-chips		\
 	xf86-video-cirrus		\
-	xf86-video-cyrix		\
 	xf86-video-glint		\
 	xf86-video-i128			\
 	xf86-video-i740			\
 	xf86-video-intel		\
+	xf86-video-mach64		\
 	xf86-video-mga			\
 	xf86-video-neomagic		\
-	xf86-video-nsc			\
 	xf86-video-nv			\
+	xf86-video-openchrome		\
 	xf86-video-radeonhd		\
 	xf86-video-rendition		\
+	xf86-video-r128			\
 	xf86-video-s3			\
 	xf86-video-s3virge		\
 	xf86-video-savage		\
@@ -88,9 +89,15 @@
 	xf86-video-trident		\
 	xf86-video-tseng		\
 	xf86-video-vesa			\
+	xf86-video-vmware
+
+# Subdirs we used to build, but now just need to clean up
+OBSOLETE_SUBDIRS = \
+	xf86-video-cyrix		\
+	xf86-video-i810			\
+	xf86-video-nsc			\
 	xf86-video-vga			\
-	xf86-video-via			\
-	xf86-video-vmware
+	xf86-video-via
 
 PWD:sh=pwd
 TOP=$(PWD)/..
--- a/open-src/driver/Makefile.inc	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/Makefile.inc	Thu Jan 15 12:55:00 2009 -0800
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.13	08/11/26
+# @(#)Makefile.inc	1.14	09/01/10
 #
 
 PWD:sh=pwd
@@ -56,6 +56,8 @@
 MODTYPE_ADD_BUILD_TARGETS=set-elf-comments
 
 MODTYPE_CPPFLAGS= \
+	-I$(PROTODIR)/usr/include		\
+	-I$(PROTODIR)/usr/include/pixman-1	\
 	-I$(PROTODIR)/usr/X11/include/xorg	\
 	-I$(PROTODIR)/usr/X11/include/drm	\
 	-I$(PROTODIR)/usr/X11/include/X11/dri
--- a/open-src/driver/xf86-input-acecad/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-acecad/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,17 +30,17 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-acecad
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.2
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 
+SOURCE_PATCHES = usleep.patch,-p1
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-input-acecad/usleep.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,46 @@
+From 33e64334db17ed3d2307e3ac465450c5c9b39ad9 Mon Sep 17 00:00:00 2001
+From: Paulo Cesar Pereira de Andrade <[email protected]>
+Date: Sun, 16 Mar 2008 03:01:23 -0300
+Subject: [PATCH] Compile warning fixes.
+
+Don't call xf86usleep, just call usleep directly.
+Remove unused variables.
+
+Signed-off-by: Peter Hutterer <[email protected]>
+---
+ src/acecad.c |    3 +--
+ src/acecad.h |    2 +-
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/acecad.c b/src/acecad.c
+index 41caa8c..71d2578 100644
+--- a/src/acecad.c
++++ b/src/acecad.c
+@@ -245,10 +245,9 @@ #ifdef LINUX_SYSFS
+     char *link = NULL;
+     struct dlist *devs = NULL;
+     struct dlist *links = NULL;
+-    unsigned int major = 0, minor = 0;
+     void *libsysfs = NULL;
+ 
+-    if (libsysfs = dlopen("libsysfs.so", RTLD_NOW | RTLD_GLOBAL)) {
++    if ((libsysfs = dlopen("libsysfs.so", RTLD_NOW | RTLD_GLOBAL))) {
+         xf86MsgVerb(X_INFO, verb, "%s: querying sysfs for Acecad tablets\n", local->name);
+         usb_bus = sysfs_open_bus(usb_bus_name);
+         if (usb_bus) {
+diff --git a/src/acecad.h b/src/acecad.h
+index 2f910ea..9acfca2 100644
+--- a/src/acecad.h
++++ b/src/acecad.h
+@@ -63,7 +63,7 @@ #define AVAIL_FLAG		8
+ 
+ #define NOTAVAIL ((errno == ENODEV) || (errno == ENXIO) || (errno == ENOENT))
+ 
+-#define milisleep(ms) xf86usleep (ms * 1000)
++#define milisleep(ms) usleep (ms * 1000)
+ 
+ #define SYSCALL(call) while(((call) == -1) && (errno == EINTR))
+ 
+-- 
+1.4.1
+
--- a/open-src/driver/xf86-input-calcomp/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-calcomp/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-calcomp
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.1.2
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-citron/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-citron/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,17 +30,17 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-citron
 
 # Version number (used in path names)
-MODULE_VERSION=2.2.0
+MODULE_VERSION=2.2.1
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 
+SOURCE_PATCHES = input-abi.patch,-p1
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-input-citron/input-abi.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,66 @@
+From a59ffb3cdc9d68a0ad21f04831e4255ad0e985d8 Mon Sep 17 00:00:00 2001
+From: Paulo Cesar Pereira de Andrade <[email protected]>
+Date: Mon, 4 Feb 2008 01:10:27 -0200
+Subject: [PATCH] Don't call xf86SoundKbdBell and xf86XInputSetSendCoreEvents
+
+Only call those functions if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0.
+
+Signed-off-by: Peter Hutterer <[email protected]>
+---
+ src/citron.c |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/src/citron.c b/src/citron.c
+index 42152b5..38e5067 100644
+--- a/src/citron.c
++++ b/src/citron.c
+@@ -2058,12 +2058,14 @@ SwitchMode (ClientPtr client, DeviceIntP
+ 		DBG(6, ErrorF("%s\treporting mode = %s\n", CI_INFO, mode==TS_Raw?"raw":"scaled"));
+ 		return (Success);
+ 	}
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
+ 	else if ((mode == SendCoreEvents) || (mode == DontSendCoreEvents))
+ 	{
+ 		xf86XInputSetSendCoreEvents (local, (mode == SendCoreEvents));
+ 		DBG(6, ErrorF("%s\tmode = %sSend Core Events\n", CI_INFO, mode==DontSendCoreEvents?"Don\'t ":""));
+ 		return (Success);
+ 	}
++#endif
+ #ifdef CIT_MODE_EXT
+ 	else if (mode == ClickMode_Enter)
+ 	{
+@@ -2466,6 +2468,7 @@ #ifdef CIT_BEEP
+ 	if(priv->beep == 0)
+ 		return;
+ 
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
+ 	/* ring release bell */
+ 	if(press == 0)
+ 
+@@ -2492,6 +2495,7 @@ #ifdef CIT_BEEP
+ 	else
+ 	/* ring press bell */
+ 		xf86SoundKbdBell(priv->press_vol,priv->press_pitch, priv->press_dur);
++#endif
+ 
+ 	DBG(7, ErrorF("%scit_Beep called - %s\n", CI_INFO, (press == 0) ? "release" : "press"));
+ #endif
+@@ -2508,6 +2512,7 @@ #ifdef CIT_BEEP
+ 	if(priv->beepkey == 0)
+ 		return;
+ 
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
+ 	/* ring release bell */
+ 	if(press <= 0)
+ 
+@@ -2532,6 +2537,7 @@ #ifdef CIT_BEEP
+ 	else
+ 	/* ring press bell */
+ 		xf86SoundKbdBell(priv->presskey_vol,priv->presskey_pitch, priv->presskey_dur);
++#endif
+ 
+ 	DBG(7, ErrorF("%scit_BeepKey called - %s\n", CI_INFO, (press == 0) ? "release" : "press"));
+ #endif
+-- 
+1.4.1
+
--- a/open-src/driver/xf86-input-digitaledge/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-digitaledge/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-digitaledge
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.1.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-dmc/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-dmc/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-dmc
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.1.2
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-dynapro/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-dynapro/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-dynapro
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.1.2
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-elographics/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-elographics/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,17 +30,17 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.5	08/08/08
+# @(#)Makefile	1.6	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-elographics
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.3
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = copying.patch,-p1
+SOURCE_PATCHES =
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
--- a/open-src/driver/xf86-input-elographics/copying.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-From 768c17328041e2f3e59d25251772cb3be164ba71 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <[email protected]>
-Date: Tue, 29 May 2007 11:58:00 -0800
-Subject: [PATCH] Bug #11087: xf86-input-elographics COPYING file
-
-X.Org Bugzilla #11087 <https://bugs.freedesktop.org/show_bug.cgi?id=11087>
----
- COPYING |   26 +++++++++++++++++---------
- 1 files changed, 17 insertions(+), 9 deletions(-)
-
-diff --git a/COPYING b/COPYING
-index 7f33cbf..84c78d6 100644
---- a/COPYING
-+++ b/COPYING
-@@ -1,12 +1,20 @@
--This is a stub file.  This package has not yet had its complete licensing
--information compiled.  Please see the individual source files for details on
--your rights to use and modify this software.
-+Copyright 1995, 1999 by Patrick Lecoanet, France. <[email protected]>
- 
--Please submit updated COPYING files to the Xorg bugzilla:
-+Permission to use, copy, modify, distribute, and sell this software and its
-+documentation for any purpose is  hereby granted without fee, provided that
-+the  above copyright   notice appear  in   all  copies and  that both  that
-+copyright  notice   and   this  permission   notice  appear  in  supporting
-+documentation, and that   the  name of  Patrick  Lecoanet not  be  used  in
-+advertising or publicity pertaining to distribution of the software without
-+specific,  written      prior  permission.     Patrick Lecoanet   makes  no
-+representations about the suitability of this software for any purpose.  It
-+is provided "as is" without express or implied warranty.                   
- 
--https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-+PATRICK LECOANET DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-+EVENT  SHALL PATRICK LECOANET BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-+DATA  OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-+TORTIOUS  ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-+PERFORMANCE OF THIS SOFTWARE.
- 
--All licensing questions regarding this software should be directed at the
--Xorg mailing list:
--
--http://lists.freedesktop.org/mailman/listinfo/xorg
--- 
-1.4.1
-
--- a/open-src/driver/xf86-input-fpit/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-fpit/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-fpit
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-hyperpen/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-hyperpen/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-hyperpen
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-jamstudio/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-jamstudio/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-jamstudio
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-keyboard/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-keyboard/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-input-keyboard 1.x Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,17 +30,26 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.5	08/08/08
+# @(#)Makefile	1.6	09/01/14
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-keyboard
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.1
+MODULE_VERSION=1.3.2
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = copying.patch,-p1
+SOURCE_PATCHES = \
+	hal-man-page.patch,-p1 \
+	sun-keymappings.patch \
+	sun-kb-autodetect.patch
+
+# Regenerate files after patching Makefile.am in sun-kb-autodetect.patch
+AUTORECONF=yes
+
+# Link in additional source files from sun-src directory
+ADDITIONAL_SOURCE_DIR=sun-src
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
--- a/open-src/driver/xf86-input-keyboard/copying.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,428 +0,0 @@
-From 49bf7022f85886d06ba4991364e6e28f17d78f2b Mon Sep 17 00:00:00 2001
-From: Daniel Drake <[email protected]>
-Date: Mon, 21 May 2007 13:53:01 -0800
-Subject: [PATCH] Bug 11026: xf86-input-keyboard COPYING file
-
-X.Org Bugzilla #11026 <https://bugs.freedesktop.org/show_bug.cgi?id=11026>
----
- COPYING |  145 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
- 1 files changed, 137 insertions(+), 8 deletions(-)
-
-diff --git a/COPYING b/COPYING
-index 7f33cbf..17b278e 100644
---- a/COPYING
-+++ b/COPYING
-@@ -1,12 +1,141 @@
--This is a stub file.  This package has not yet had its complete licensing
--information compiled.  Please see the individual source files for details on
--your rights to use and modify this software.
-+Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
-+Copyright 1993 by David Dawes <[email protected]>
- 
--Please submit updated COPYING files to the Xorg bugzilla:
-+Permission to use, copy, modify, distribute, and sell this software and its
-+documentation for any purpose is hereby granted without fee, provided that
-+the above copyright notice appear in all copies and that both that copyright
-+notice and this permission notice appear in supporting documentation, and
-+that the names of Thomas Roell and David Dawes not be used in advertising or
-+publicity pertaining to distribution of the software without specific,
-+written prior permission.  Thomas Roell and David Dawes make no
-+representations about the suitability of this software for any purpose.  It
-+is provided "as is" without express or implied warranty.
- 
--https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-+THOMAS ROELL AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
-+IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR ANY SPECIAL,
-+INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-+PERFORMANCE OF THIS SOFTWARE.
- 
--All licensing questions regarding this software should be directed at the
--Xorg mailing list:
- 
--http://lists.freedesktop.org/mailman/listinfo/xorg
-+Copyright 2004-2005 Sun Microsystems, Inc.  All rights reserved.
-+
-+Permission is hereby granted, free of charge, to any person obtaining a
-+copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, and/or sell copies of the Software, and to permit persons
-+to whom the Software is furnished to do so, provided that the above
-+copyright notice(s) and this permission notice appear in all copies of
-+the Software and that both the above copyright notice(s) and this
-+permission notice appear in supporting documentation.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+Except as contained in this notice, the name of a copyright holder
-+shall not be used in advertising or otherwise to promote the sale, use
-+or other dealings in this Software without prior written authorization
-+of the copyright holder.
-+
-+
-+Copyright 2005 by J. Kean Johnston <[email protected]>
-+
-+Permission to use, copy, modify, distribute, and sell this software and its
-+documentation for any purpose is hereby granted without fee, provided that
-+the above copyright notice appear in all copies and that both that
-+copyright notice and this permission notice appear in supporting
-+documentation, and that the name J. Kean Johnston not be used in
-+advertising or publicity pertaining to distribution of the software without
-+specific, written prior permission.  J. Kean Johnston makes no
-+representations about the suitability of this software for any purpose.
-+It is provided "as is" without express or implied warranty.
-+
-+J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-+EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-+PERFORMANCE OF THIS SOFTWARE.
-+
-+
-+Copyright 1997,1998 by UCHIYAMA Yasushi
-+
-+Permission to use, copy, modify, distribute, and sell this software and its
-+documentation for any purpose is hereby granted without fee, provided that
-+the above copyright notice appear in all copies and that both that
-+copyright notice and this permission notice appear in supporting
-+documentation, and that the name of UCHIYAMA Yasushi not be used in
-+advertising or publicity pertaining to distribution of the software without
-+specific, written prior permission.  UCHIYAMA Yasushi makes no representations
-+about the suitability of this software for any purpose.  It is provided
-+"as is" without express or implied warranty.
-+
-+UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-+EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-+PERFORMANCE OF THIS SOFTWARE.
-+
-+
-+Copyright (c) 1994-2003 by The XFree86 Project, Inc.
-+
-+Permission is hereby granted, free of charge, to any person obtaining a
-+copy of this software and associated documentation files (the "Software"),
-+to deal in the Software without restriction, including without limitation
-+the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+and/or sell copies of the Software, and to permit persons to whom the
-+Software is furnished to do so, subject to the following conditions:
-+
-+The above copyright notice and this permission notice shall be included in
-+all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-+THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+OTHER DEALINGS IN THE SOFTWARE.
-+
-+Except as contained in this notice, the name of the copyright holder(s)
-+and author(s) shall not be used in advertising or otherwise to promote
-+the sale, use or other dealings in this Software without prior written
-+authorization from the copyright holder(s) and author(s).
-+
-+
-+Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
-+Copyright 1993 by David Dawes <[email protected]>
-+Copyright 1999 by David Holland <[email protected])
-+
-+Permission to use, copy, modify, distribute, and sell this software and its
-+documentation for any purpose is hereby granted without fee, provided that
-+the above copyright notice appear in all copies and that both that copyright
-+notice and this permission notice appear in supporting documentation, and
-+that the names of Thomas Roell, David Dawes, and David Holland not be used
-+in advertising or publicity pertaining to distribution of the software
-+without specific, written prior permission.  Thomas Roell, David Dawes, and
-+David Holland make no representations about the suitability of this software
-+for any purpose.  It is provided "as is" without express or implied
-+warranty.
-+
-+THOMAS ROELL, DAVID DAWES, AND DAVID HOLLAND DISCLAIM ALL WARRANTIES WITH
-+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-+AND FITNESS.  IN NO EVENT SHALL THOMAS ROELL, DAVID DAWES, OR DAVID HOLLAND
-+BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
-+OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
-+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
--- 
-1.4.1
-
-From af3adb8e24c03fcd86ad63208ce525cd4db876ac Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <[email protected]>
-Date: Mon, 17 Mar 2008 19:19:45 -0700
-Subject: [PATCH] Correct COPYING file and note which notices apply to which code/OS'es
----
- COPYING |  209 +++++++++++++++++++++++++++++++++++++++++++++------------------
- 1 files changed, 149 insertions(+), 60 deletions(-)
-
-diff --git a/COPYING b/COPYING
-index 17b278e..1e67ee7 100644
---- a/COPYING
-+++ b/COPYING
-@@ -1,3 +1,32 @@
-+Code common to all operating systems is covered by these notices:
-+
-+Copyright (c) 1992-2003 by The XFree86 Project, Inc.
-+Copyright 1997 by Metro Link, Inc.
-+
-+Permission is hereby granted, free of charge, to any person obtaining a
-+copy of this software and associated documentation files (the "Software"),
-+to deal in the Software without restriction, including without limitation
-+the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+and/or sell copies of the Software, and to permit persons to whom the
-+Software is furnished to do so, subject to the following conditions:
-+
-+The above copyright notice and this permission notice shall be included in
-+all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-+THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+OTHER DEALINGS IN THE SOFTWARE.
-+
-+Except as contained in this notice, the name of the copyright holder(s)
-+and author(s) shall not be used in advertising or otherwise to promote
-+the sale, use or other dealings in this Software without prior written
-+authorization from the copyright holder(s) and author(s).
-+
-+
- Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- Copyright 1993 by David Dawes <[email protected]>
- 
-@@ -20,55 +49,34 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF
- PERFORMANCE OF THIS SOFTWARE.
- 
- 
--Copyright 2004-2005 Sun Microsystems, Inc.  All rights reserved.
-+Code for BSD operating systems is additionally covered by this notice:
- 
--Permission is hereby granted, free of charge, to any person obtaining a
--copy of this software and associated documentation files (the
--"Software"), to deal in the Software without restriction, including
--without limitation the rights to use, copy, modify, merge, publish,
--distribute, and/or sell copies of the Software, and to permit persons
--to whom the Software is furnished to do so, provided that the above
--copyright notice(s) and this permission notice appear in all copies of
--the Software and that both the above copyright notice(s) and this
--permission notice appear in supporting documentation.
--
--THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
--OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
--MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
--OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
--HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
--INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
--FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
--NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
--WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
--Except as contained in this notice, the name of a copyright holder
--shall not be used in advertising or otherwise to promote the sale, use
--or other dealings in this Software without prior written authorization
--of the copyright holder.
--
--
--Copyright 2005 by J. Kean Johnston <[email protected]>
-+Copyright 1992 by Rich Murphey <[email protected]>
-+Copyright 1993 by David Dawes <[email protected]>
- 
- Permission to use, copy, modify, distribute, and sell this software and its
- documentation for any purpose is hereby granted without fee, provided that
- the above copyright notice appear in all copies and that both that
- copyright notice and this permission notice appear in supporting
--documentation, and that the name J. Kean Johnston not be used in
--advertising or publicity pertaining to distribution of the software without
--specific, written prior permission.  J. Kean Johnston makes no
--representations about the suitability of this software for any purpose.
--It is provided "as is" without express or implied warranty.
-+documentation, and that the names of Rich Murphey and David Dawes 
-+not be used in advertising or publicity pertaining to distribution of 
-+the software without specific, written prior permission.  Rich Murphey and
-+David Dawes make no representations about the suitability of this 
-+software for any purpose.  It is provided "as is" without express or 
-+implied warranty.
-+
-+RICH MURPHEY AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO 
-+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-+FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID DAWES BE LIABLE FOR 
-+ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER 
-+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
-+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
-+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- 
--J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
--INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
--EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
--CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
--USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
--OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
--PERFORMANCE OF THIS SOFTWARE.
- 
- 
-+Code for the GNU Hurd operating system is additionally covered by this notice:
-+
- Copyright 1997,1998 by UCHIYAMA Yasushi
- 
- Permission to use, copy, modify, distribute, and sell this software and its
-@@ -90,32 +98,87 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CO
- PERFORMANCE OF THIS SOFTWARE.
- 
- 
--Copyright (c) 1994-2003 by The XFree86 Project, Inc.
- 
--Permission is hereby granted, free of charge, to any person obtaining a
--copy of this software and associated documentation files (the "Software"),
--to deal in the Software without restriction, including without limitation
--the rights to use, copy, modify, merge, publish, distribute, sublicense,
--and/or sell copies of the Software, and to permit persons to whom the
--Software is furnished to do so, subject to the following conditions:
-+Code for Linux operating systems is additionally covered by these notices:
- 
--The above copyright notice and this permission notice shall be included in
--all copies or substantial portions of the Software.
-+Based on the code from lnx_io.c which is
-+Copyright 1992 by Orest Zborowski <[email protected]>
-+Copyright 1993 by David Dawes <[email protected]>
- 
--THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
--IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
--FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
--THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
--OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
--ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
--OTHER DEALINGS IN THE SOFTWARE.
-+Permission to use, copy, modify, distribute, and sell this software and its
-+documentation for any purpose is hereby granted without fee, provided that
-+the above copyright notice appear in all copies and that both that
-+copyright notice and this permission notice appear in supporting
-+documentation, and that the names of Orest Zborowski and David Dawes 
-+not be used in advertising or publicity pertaining to distribution of 
-+the software without specific, written prior permission.  Orest Zborowski
-+and David Dawes make no representations about the suitability of this 
-+software for any purpose.  It is provided "as is" without express or 
-+implied warranty.
- 
--Except as contained in this notice, the name of the copyright holder(s)
--and author(s) shall not be used in advertising or otherwise to promote
--the sale, use or other dealings in this Software without prior written
--authorization from the copyright holder(s) and author(s).
-+OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD 
-+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-+FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES BE LIABLE 
-+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 
-+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 
-+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 
-+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+Portions based on kbdrate.c from util-linux 2.9t, which is
-+Copyright 1992 Rickard E. Faith.  Distributed under the GPL.
-+This program comes with ABSOLUTELY NO WARRANTY.
-+
-+
-+
-+Code for SCO operating systems is additionally covered by these notices:
-+
-+Copyright 2003, 2005 by J. Kean Johnston <[email protected]>
-+
-+Permission to use, copy, modify, distribute, and sell this software and its
-+documentation for any purpose is hereby granted without fee, provided that
-+the above copyright notice appear in all copies and that both that
-+copyright notice and this permission notice appear in supporting
-+documentation, and that the name J. Kean Johnston not be used in
-+advertising or publicity pertaining to distribution of the software without
-+specific, written prior permission.  J. Kean Johnston makes no
-+representations about the suitability of this software for any purpose.
-+It is provided "as is" without express or implied warranty.
-+
-+J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-+EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-+PERFORMANCE OF THIS SOFTWARE.
-+
-+Based on lnx_kbd.c which is
-+Copyright 1992 by Orest Zborowski <[email protected]>
-+Copyright 1993 by David Dawes <[email protected]>
-+
-+Permission to use, copy, modify, distribute, and sell this software and its
-+documentation for any purpose is hereby granted without fee, provided that
-+the above copyright notice appear in all copies and that both that
-+copyright notice and this permission notice appear in supporting
-+documentation, and that the names of Orest Zborowski and David Dawes 
-+not be used in advertising or publicity pertaining to distribution of 
-+the software without specific, written prior permission.  Orest Zborowski
-+and David Dawes make no representations about the suitability of this 
-+software for any purpose.  It is provided "as is" without express or 
-+implied warranty.
-+
-+OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD 
-+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-+FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES BE LIABLE 
-+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 
-+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 
-+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 
-+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- 
- 
-+
-+Code for Solaris operating systems is additionally covered by these notices:
-+
- Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- Copyright 1993 by David Dawes <[email protected]>
- Copyright 1999 by David Holland <[email protected])
-@@ -139,3 +202,29 @@ WHATSOEVER RESULTING FROM LOSS OF USE, D
- OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- 
-+Copyright 2004-2007 Sun Microsystems, Inc.  All rights reserved.
-+
-+Permission is hereby granted, free of charge, to any person obtaining a
-+copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, and/or sell copies of the Software, and to permit persons
-+to whom the Software is furnished to do so, provided that the above
-+copyright notice(s) and this permission notice appear in all copies of
-+the Software and that both the above copyright notice(s) and this
-+permission notice appear in supporting documentation.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+Except as contained in this notice, the name of a copyright holder
-+shall not be used in advertising or otherwise to promote the sale, use
-+or other dealings in this Software without prior written authorization
-+of the copyright holder.
--- 
-1.4.1
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-input-keyboard/hal-man-page.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,36 @@
+From f9857c498803ce8e5902df7319d2928b0db8cd49 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Fri, 9 Jan 2009 14:50:56 -0800
+Subject: [PATCH] Add note on hal-based configuration to man page
+
+---
+ man/kbd.man |    9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+diff --git a/man/kbd.man b/man/kbd.man
+index 9971b91..ff4bc27 100644
+--- a/man/kbd.man
++++ b/man/kbd.man
+@@ -27,6 +27,11 @@ The
+ driver functions as a keyboard input device, and may be used as the
+ X server's core keyboard.
+ .SH CONFIGURATION DETAILS
++.PP
++Depending on the X server version in use, input device options may be set
++in either a __xconfigfile__ file, or in the configuration files read by the
++Hardware Abstraction Layer (HAL) daemon, hald(1).
++.PP
+ Please refer to __xconfigfile__(__filemansuffix__) for general configuration
+ details and for options that can be used with all input drivers.  This
+ section only covers configuration details specific to this driver.
+@@ -136,4 +141,6 @@ EndSection
+ .fi
+ .SH "SEE ALSO"
+ __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), 
+-xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__).
++Xserver(__appmansuffix__), X(__miscmansuffix__).
++
++hal(__miscmansuffix__), hald(__adminmansuffix__), fdi(__filemansuffix__).
+-- 
+1.5.6.5
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-input-keyboard/sun-kb-autodetect.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,154 @@
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+# Use subject to license terms.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+# 
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+
+
+diff -urp -x '*~' -x '*.orig' src/Makefile.am src/Makefile.am
+--- src/Makefile.am	2009-01-07 08:47:02.000000000 -0800
++++ src/Makefile.am	2009-01-11 17:49:44.006395000 -0800
+@@ -28,7 +28,7 @@ BSD_SRCS = bsd_KbdMap.c bsd_kbd.c bsd_kb
+ HURD_SRCS = hurd_kbd.c at_scancode.c
+ LINUX_SRCS = lnx_KbdMap.c lnx_kbd.c lnx_kbd.h at_scancode.c
+ SCO_SRCS = sco_KbdMap.c sco_kbd.c sco_kbd.h
+-SOLARIS_SRCS = sun_kbd.c sun_kbd.h sun_kbdMap.c
++SOLARIS_SRCS = sun_kbd.c sun_kbd.h sun_kbdMap.c sun_xkbtable.c sun_xkbtable.h
+ 
+ if BSD
+ kbd_drv_la_SOURCES += $(BSD_SRCS)
+diff -urp -x '*~' -x '*.orig' src/sun_kbd.c src/sun_kbd.c
+--- src/sun_kbd.c	2009-01-07 08:35:10.000000000 -0800
++++ src/sun_kbd.c	2009-01-11 17:49:44.007550000 -0800
+@@ -64,6 +64,12 @@
+ #include <sys/vuid_event.h>
+ #include <sys/kbd.h>
+ 
++#ifdef SUNSOFT
++# ifdef XKB
++#  include "sun_xkbtable.h"
++# endif
++#endif
++
+ static void
+ sunKbdSetLeds(InputInfoPtr pInfo, int leds)
+ {
+@@ -98,6 +104,13 @@ sunKbdGetLeds(InputInfoPtr pInfo)
+ static int
+ KbdInit(InputInfoPtr pInfo, int what)
+ {
++    /* Does nothing now - sunKbdInit called from OpenKeyboard instead */
++    return Success;
++}
++
++static int
++sunKbdInit(InputInfoPtr pInfo)
++{
+     KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+     sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+     pointer options = pInfo->options;
+@@ -155,6 +168,7 @@ KbdInit(InputInfoPtr pInfo, int what)
+     xf86Msg(X_PROBED, "%s: Keyboard layout: %d\n", pInfo->name, klayout);
+ 
+     priv->ktype 	= ktype;
++    priv->klayout 	= klayout;
+     priv->oleds 	= sunKbdGetLeds(pInfo);
+ 
+     return Success;
+@@ -403,6 +417,63 @@ OpenKeyboard(InputInfoPtr pInfo)
+     if (pInfo->fd == -1) {
+ 	return FALSE;
+     } else {
++	if (sunKbdInit(pInfo) != Success) {
++	    close(pInfo->fd);
++	    pInfo->fd = -1;
++	    return FALSE;
++	}
++#ifdef SUNSOFT
++# ifdef XKB
++	else {
++	    /* Probe keyboard settings if not specified in configuration */
++	    KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
++	    sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
++	    char *xkbkeymap = NULL, *xkbmodel = NULL, *xkblayout = NULL;
++	    int i, found;
++	    
++	    const char *kbdDefaults[] = {
++		"Protocol",         "standard",
++		"AutoRepeat",       "500 30",
++		"XkbRules",         "xorg",
++		"XkbModel",         "pc105",
++		"XkbLayout",        "us",
++		"Panix106",         "off",
++		"CustomKeycodes",   "off",
++		NULL, NULL, 	    /* leave room to add XkbKeymap if needed */
++		NULL 		    /* list terminator */
++	    };
++	    
++	    sun_find_xkbnames(priv->ktype, priv->klayout,
++			      &xkbkeymap, &xkbmodel, &xkblayout);
++
++#define SetXkbDefaults(OPTION, VALUE) \
++	if (VALUE != NULL) { \
++	    for (i = 0, found = 0; kbdDefaults[i] != NULL; i += 2) { \
++		if (strcmp(kbdDefaults[i], OPTION) == 0) { \
++		    kbdDefaults[i+1] = VALUE; found++; \
++		    xf86Msg(X_PROBED, "%s: %s = %s\n", priv->devName, \
++			    OPTION, VALUE); \
++		    break; \
++		} \
++	    } \
++	}
++	    
++#define AddXkbDefaults(OPTION, VALUE) \
++	if (VALUE != NULL) { \
++	    for (i = 0; kbdDefaults[i] != NULL; i += 2) \
++	    { /* skip to end */ ; } \
++	    kbdDefaults[i++] = OPTION; \
++	    kbdDefaults[i++] = VALUE; \
++	}
++
++	    SetXkbDefaults("XkbModel", xkbmodel);
++	    SetXkbDefaults("XkbLayout", xkblayout);
++	    AddXkbDefaults("XkbKeymap", xkbkeymap);
++
++	    xf86CollectInputOptions(pInfo, kbdDefaults, NULL);
++	}
++# endif
++#endif
+ 	pInfo->read_input = ReadInput;
+ 	return TRUE;
+     }
+diff -urp -x '*~' -x '*.orig' src/sun_kbd.h src/sun_kbd.h
+--- src/sun_kbd.h	2009-01-07 08:35:10.000000000 -0800
++++ src/sun_kbd.h	2009-01-11 17:49:44.016628000 -0800
+@@ -31,6 +31,7 @@
+ 
+ typedef struct {
+     int 		ktype;		/* Keyboard type from KIOCTYPE */
++    int 		klayout;	/* Keyboard layout from KIOCLAYOUT */
+     Bool		kbdActive;	/* Have we set kbd modes for X? */
+     int 		otranslation;	/* Original translation mode */
+     int 		odirect;	/* Original "direct" mode setting */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-input-keyboard/sun-keymappings.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,46 @@
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+# Use subject to license terms.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+# 
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+
+
+diff -urp -x '*~' -x '*.orig' src/atKeynames.h src/atKeynames.h
+--- src/atKeynames.h	2009-01-07 08:35:10.000000000 -0800
++++ src/atKeynames.h	2009-01-11 17:32:33.059998000 -0800
+@@ -213,11 +213,11 @@
+ #define KEY_F13          /* F13                   0x6e  */  110
+ #define KEY_F14          /* F14                   0x6f  */  111
+ #define KEY_F15          /* F15                   0x70  */  112
+-#define KEY_HKTG         /* Hirugana/Katakana tog 0x70  */  112
++#define KEY_HKTG         /* Hirugana/Katakana tog 0x70  */  200 /* was 112 */
+ #define KEY_F16          /* F16                   0x71  */  113
+ #define KEY_F17          /* F17                   0x72  */  114
+ #define KEY_KP_DEC       /* KP_DEC                0x73  */  115
+-#define KEY_BSlash2      /* \           _         0x73  */  115
++#define KEY_BSlash2      /* \           _         0x73  */  203 /* was 115 */
+ #define KEY_KP_Equal	 /* Equal (Keypad)        0x76  */  118
+ #define KEY_XFER         /* Kanji Transfer        0x79  */  121
+ #define KEY_NFER         /* No Kanji Transfer     0x7b  */  123
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-input-keyboard/sun-src/src/sun_xkbtable.c	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,231 @@
+/* Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, and/or sell copies of the Software, and to permit persons
+ * to whom the Software is furnished to do so, provided that the above
+ * copyright notice(s) and this permission notice appear in all copies of
+ * the Software and that both the above copyright notice(s) and this
+ * permission notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+ * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder
+ * shall not be used in advertising or otherwise to promote the sale, use
+ * or other dealings in this Software without prior written authorization
+ * of the copyright holder.
+ */
+
+#pragma ident   "@(#)sun_xkbtable.c	1.5	06/11/20 SMI"
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#ifdef HAVE_XKB_CONFIG_H
+#include <xkb-config.h>
+#endif
+
+#ifdef XKB
+#include "xf86.h"
+#include "sun_xkbtable.h"
+
+#ifndef DFLT_XKB_CONFIG_ROOT
+#define DFLT_XKB_CONFIG_ROOT XKB_BASE_DIRECTORY
+#endif
+
+#define MAXLINELEN              256
+
+static char    *getaline(FILE *);
+static char    *skipwhite(char *);
+
+static int		global_linenumber = 0;
+#define	commentchar '#'/* Comment char */
+static char		line[MAXLINELEN + 1];
+static char	       *whitespace = " \t\n";
+
+static char *
+getaline(
+    FILE    *fp
+)
+{
+    char    *ptr;
+    char    *tmp;
+    int      index;
+    int      c;
+
+
+    while(1) {
+	ptr = fgets(line, MAXLINELEN, fp);
+        if (!ptr) {
+	    (void) fclose(fp);
+            return NULL;
+        }
+
+        global_linenumber++;
+
+        if (ptr[0] == commentchar) {        /* Comment line */
+            continue; 
+        }
+
+        if (ptr[0] == '\n') {               /* Blank line */
+            continue;
+        }
+
+        tmp = strchr(ptr, '#');
+        if (tmp != NULL) {
+            *tmp = '\0';
+        }
+
+        if (ptr[strlen(ptr) - 1] == '\n') {
+            ptr[strlen(ptr) - 1] = '\0';    /* get rid of '\n' */
+        }
+
+        ptr = skipwhite(ptr);
+        if (*ptr) {
+            break;
+        }
+
+    }
+    return ptr;
+}
+
+
+/*
+ * Skips over the white space character in the string. 
+ */
+
+static char *
+skipwhite(
+    char *ptr
+)
+{
+    while ((*ptr == ' ') || (*ptr == '\t')) {
+        ptr++;
+    }
+
+    if (*ptr == '\n') {             /* This should not occur. but .. */
+        ptr = '\0';
+    }
+
+    return ptr;
+}
+
+/*
+ * Looks up in the .../etc/keytables/xkbtable.map file for the appropriate 
+ * XKB names for the keyboard
+ */
+
+int
+sun_find_xkbnames(
+    int          kb_type,	/* input */
+    int          kb_layout,	/* input */
+    char       **xkb_keymap,	/* output */
+    char       **xkb_model,	/* output */
+    char       **xkb_layout	/* output */
+)
+{
+    const char  *type, *layout;
+    char	*keymap, *defkeymap = NULL;	/* XKB Keymap name */
+    char	*model , *defmodel = NULL;	/* XKB model name */
+    char	*xkblay, *defxkblay = NULL;	/* XKB layout name */
+    FILE        *fp;
+    int          found_error,
+                 found_keytable;
+
+    fp = fopen(DFLT_XKB_CONFIG_ROOT "/xkbtable.map", "r");
+    if (fp == NULL) {
+	xf86Msg(X_WARNING, DFLT_XKB_CONFIG_ROOT "/xkbtable.map not found.\n"
+	  "\tCannot automap keyboard layout.\n");
+        return !Success;
+    } 
+
+    global_linenumber = 0;
+    found_error = 0;
+    found_keytable = 0;
+
+    while (getaline(fp)) { 
+	type = strtok(line, " \t\n");
+	if (type == NULL) {
+	    found_error = 1;
+	}
+	
+	layout = strtok(NULL, " \t\n");
+	if (layout == NULL) {
+	    found_error = 1;
+	}
+	
+	keymap = strtok(NULL, " \t\n");
+	if (keymap == NULL) {
+	    found_error = 1;
+	}
+
+	/* These two are optional entries */
+	model = strtok(NULL, " \t\n");
+	if ((model == NULL) || (*model == commentchar)) {
+	    model = xkblay = NULL;
+	} else {
+	    xkblay = strtok(NULL, " \t\n");
+	    if ((xkblay !=NULL) && (*xkblay == commentchar)) {
+		xkblay = NULL;
+	    }
+	}
+
+	if (found_error) {
+	    found_error = 0;
+	    continue;
+	}
+	
+	/* record default entry if/when found */
+	if (*type == '*') {
+	    if (defkeymap == NULL) {
+		defkeymap = keymap;
+		defmodel = model;
+		defxkblay = xkblay;
+	    }
+	} else if (atoi(type) == kb_type) {
+	    if (*type == '*') {
+		if (defkeymap == NULL) {
+		    defkeymap = keymap;
+		    defmodel = model;
+		    defxkblay = xkblay;
+		}
+	    } else if (atoi(layout) == kb_layout) {
+		found_keytable = 1;
+		break;
+	    }
+	}
+    }
+    (void) fclose(fp);
+             
+    if (! found_keytable ) {
+	keymap = defkeymap;
+	model = defmodel;
+	xkblay = defxkblay;
+    }
+
+    if ((keymap != NULL) && (strcmp(keymap,"-") !=0)) {
+	xf86Msg(X_PROBED, "XKB: keymap: \"%s\"\n", keymap);
+	*xkb_keymap = keymap;
+    }
+    if ((model != NULL) && (strcmp(model,"-") !=0)) {
+	*xkb_model = model;
+	xf86Msg(X_PROBED, "XKB: model: \"%s\"\n", model);
+    }
+    if ((xkblay != NULL) && (strcmp(xkblay,"-") !=0)) {
+	*xkb_layout = xkblay;
+	xf86Msg(X_PROBED, "XKB: layout: \"%s\"\n", xkblay);
+    }
+    return Success;
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-input-keyboard/sun-src/src/sun_xkbtable.h	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,50 @@
+/* Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, and/or sell copies of the Software, and to permit persons
+ * to whom the Software is furnished to do so, provided that the above
+ * copyright notice(s) and this permission notice appear in all copies of
+ * the Software and that both the above copyright notice(s) and this
+ * permission notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+ * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder
+ * shall not be used in advertising or otherwise to promote the sale, use
+ * or other dealings in this Software without prior written authorization
+ * of the copyright holder.
+ */
+
+#ifndef _SUN_XKBTABLE_H
+#define	_SUN_XKBTABLE_H
+
+#pragma ident	"@(#)sun_xkbtable.h	1.2	05/11/08 SMI"
+
+#include "xf86Priv.h"
+#include "xf86_OSlib.h"
+
+
+/*
+ * Functions for autodetecting Sun keyboard type and mapping to XKB names
+ */
+extern int
+sun_find_xkbnames(
+    int          kb_type,	/* input */
+    int          kb_layout,	/* input */
+    char       **xkb_keymap,	/* output */
+    char       **xkb_model,	/* output */
+    char       **xkb_layout	/* output */
+);
+
+#endif /* _SUN_XKBTABLE_H */
--- a/open-src/driver/xf86-input-magellan/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-magellan/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-magellan
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-microtouch/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-microtouch/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-microtouch
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-mouse/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-mouse/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-input-mouse 1.x Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-mouse
 
 # Version number (used in path names)
-MODULE_VERSION=1.2.3
+MODULE_VERSION=1.4.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-mutouch/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-mutouch/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-mutouch
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-palmax/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-palmax/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-palmax
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-penmount/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-penmount/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-penmount
 
 # Version number (used in path names)
-MODULE_VERSION=1.2.0
+MODULE_VERSION=1.3.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-spaceorb/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-spaceorb/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-spaceorb
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.1.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-summa/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-summa/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-summa
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-tek4957/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-tek4957/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/08/08
+# @(#)Makefile	1.5	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-tek4957
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-input-vmmouse/COPYING	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-vmmouse/COPYING	Thu Jan 15 12:55:00 2009 -0800
@@ -1,157 +1,53 @@
-
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- * Copyright 1993 by David Dawes <[email protected]>
- * Copyright 2002 by SuSE Linux AG, Author: Egbert Eich
- * Copyright 1994-2002 by The XFree86 Project, Inc.
- * Copyright 2002 by Paul Elliott
- * Copyright 2002-2006 by VMware, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of copyright holders not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.  The copyright holders
- * make no representations about the suitability of this
- * software for any purpose.  It is provided "as is" without express or
- * implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
+ Copyright 1999-2008 by VMware, Inc.
+ 
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
  
- * Copyright 2002-2006 by VMware, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
  
-
- * Copyright 2002-2006 by VMware, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
  
+ Except as contained in this notice, the name of the copyright holder(s)
+ and author(s) shall not be used in advertising or otherwise to promote
+ the sale, use or other dealings in this Software without prior written
+ authorization from the copyright holder(s) and author(s).
 
- * Copyright 2002-2006 by VMware, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
- 
 
- * Copyright 1999-2006 by VMware, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
+ Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ Copyright 1993 by David Dawes <[email protected]>
+ Copyright 2002 by SuSE Linux AG, Author: Egbert Eich
+ Copyright 1994-2002 by The XFree86 Project, Inc.
+ Copyright 2002 by Paul Elliott
+ Copyright 2002-2006 by VMware, Inc.
  
-
- * Copyright 1999-2006 by VMware, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation, and that the names of copyright holders not be
+ used in advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.  The copyright holders
+ make no representations about the suitability of this
+ software for any purpose.  It is provided "as is" without express or
+ implied warranty.
  
+ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ 
+ 
--- a/open-src/driver/xf86-input-vmmouse/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-input-vmmouse/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,8 +1,8 @@
 ###############################################################################
 #
-# xf86-input-vmmouse 1.x Makefile
+# xf86-input-vmmouse Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,23 +30,34 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.2	08/08/08
+# ident "@(#)Makefile	1.3	09/01/15 SMI"
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-input-vmmouse
 
 # Version number (used in path names)
-MODULE_VERSION=12.4.1
+MODULE_VERSION=12.6.3
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 
+SOURCE_PATCHES = hal-configure-options.patch,-p1
+
+# Rebuild configure after patching configure.ac in hal-configure-options.patch
+AUTORECONF=yes
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
 SUN_PACKAGE=SUNWxorg-server
 MODULE_STABILITY=Volatile
 
+# Extra flags to pass to configure script
+# - need to set install locations for HAL config file & probe util/script
+MODULE_CONFIG_OPTS= \
+	--with-hal-bin-dir=/usr/sbin \
+	--with-hal-callouts-dir=/usr/lib/hal \
+	--with-hal-fdi-dir=/etc/hal/fdi/policy/10osvendor \
+	--bindir=$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR)
+
 # Libraries/modules to link with
 MODULE_LD_OPTIONS=
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-input-vmmouse/hal-configure-options.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,43 @@
+From 9719534fa3a184b848ef9e9c3a755703b8708fd2 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Thu, 15 Jan 2009 07:29:44 -0800
+Subject: [PATCH] Make --with-hal* configure options match their help output
+
+---
+ configure.ac |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 5c5f639..118ae84 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -70,7 +70,7 @@ AC_ARG_WITH(xorg-module-dir,
+ inputdir=${moduledir}/input
+ AC_SUBST(inputdir)
+ 
+-AC_ARG_WITH(hal_bin_dir,
++AC_ARG_WITH(hal-bin-dir,
+ 	    AC_HELP_STRING([--with-hal-bin-dir=DIR],
+ 			   [Directory where HAL binaries where installed [[default=$bindir]]]),
+ 	    [halbindir="$withval"],
+@@ -78,7 +78,7 @@ AC_ARG_WITH(hal_bin_dir,
+ HAL_BIN_DIR=${halbindir}
+ AC_SUBST(HAL_BIN_DIR)
+ 
+-AC_ARG_WITH(hal_callouts_dir,
++AC_ARG_WITH(hal-callouts-dir,
+ 	    AC_HELP_STRING([--with-hal-callouts-dir=DIR],
+ 			   [Directory where HAL expects its callout scripts to be located
+ 			    [[default=$libdir/hal]]]),
+@@ -87,7 +87,7 @@ AC_ARG_WITH(hal_callouts_dir,
+ HAL_CALLOUTS_DIR=${halcalloutsdir}
+ AC_SUBST(HAL_CALLOUTS_DIR)
+ 
+-AC_ARG_WITH(hal_fdi_dir,
++AC_ARG_WITH(hal-fdi-dir,
+ 	    AC_HELP_STRING([--with-hal-fdi-dir=DIR],
+ 			   [Directory where HAL expects its fdi files to be located
+ 			   [[default=$datadir/hal/fdi/policy/20thirdparty]]]),
+-- 
+1.5.6.5
+
--- a/open-src/driver/xf86-video-apm/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-apm/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/13
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-apm
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.1
+MODULE_VERSION=1.2.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -53,7 +53,7 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa -lxf1bpp -lxf4bpp
+	-lfb -lint10 -lpciaccess -lshadowfb -lvbe -lvgahw -lxaa
 
 include ../Makefile.inc
 
--- a/open-src/driver/xf86-video-ark/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-ark/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.5	08/08/08
+# @(#)Makefile	1.6	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-ark
 
 # Version number (used in path names)
-MODULE_VERSION=0.6.0
+MODULE_VERSION=0.7.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -51,6 +51,7 @@
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-lfb -lvgahw -lxaa
+	-lfb -lvgahw -lxaa \
+	-L$(PROTODIR)/usr/lib -lpciaccess
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-ast/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-ast/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.8	08/12/22
+# @(#)Makefile	1.9	09/01/13
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-ast
 
 # Version number (used in path names)
-MODULE_VERSION=0.87.0
+MODULE_VERSION=0.88.7
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -51,6 +51,6 @@
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-lfb -lint10 -lvbe -lvgahw -lxaa
+	-lfb -lint10 -lpciaccess -lvbe -lvgahw -lxaa
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-ati/6205248.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
---- src/aticonsole.c	2006-10-03 07:49:13.000000000 -0700
-+++ src/aticonsole.c	2006-04-26 15:45:53.781236000 -0700
-@@ -564,6 +565,20 @@
-     ATIPtr      pATI
- )
- {
-+    unsigned int PciReg;
-+    pciConfigPtr           pPCI;
-+    pciVideoPtr            pVideo, *xf86PciVideoInfo = xf86GetPciVideoInfo();
-+
-+    pVideo = xf86PciVideoInfo[pScreenInfo->scrnIndex];
-+    pPCI = pVideo->thisCard;
-+/*
-+* Possibly fix block I/O indicator in PCI configuration space.
-+*/
-+    PciReg = pciReadLong(pPCI->tag, PCI_REG_USERCONFIG);
-+    if (!(PciReg & 0x00000004U))
-+		pciWriteLong(pPCI->tag, PCI_REG_USERCONFIG, PciReg | 
-+				0x00000004U);
-+
-     /* Map apertures */
-     if (!ATIMapApertures(pScreenInfo->scrnIndex, pATI))
-         return FALSE;
--- a/open-src/driver/xf86-video-ati/6675166.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
---- configure.ac	Thu Mar 13 11:54:25 2008
-+++ configure.ac	Thu Mar 13 12:07:45 2008
-@@ -284,6 +284,11 @@
- fi
- AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
- 
-+case $host_os in
-+  *linux*)
-+  AC_DEFINE(FGL_LINUX, 1, [Use linux pragma pack]) ;;
-+esac
-+
- AC_SUBST([XORG_CFLAGS])
- AC_SUBST([DRI_CFLAGS])
- AC_SUBST([moduledir])
-
---- src/Makefile.am	Thu Mar 13 11:55:00 2008
-+++ src/Makefile.am	Thu Mar 13 11:55:47 2008
-@@ -77,7 +77,7 @@
- RADEON_EXA_SOURCES = radeon_exa.c
- endif
- 
--AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ @XMODES_CFLAGS@ -DDISABLE_EASF -DENABLE_ALL_SERVICE_FUNCTIONS -DATOM_BIOS -DATOM_BIOS_PARSER -DFGL_LINUX -DDRIVER_PARSER
-+AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ @XMODES_CFLAGS@ -DDISABLE_EASF -DENABLE_ALL_SERVICE_FUNCTIONS -DATOM_BIOS -DATOM_BIOS_PARSER -DDRIVER_PARSER
- INCLUDES = -I$(srcdir)/AtomBios/includes
- 
- ati_drv_la_LTLIBRARIES = ati_drv.la
--- a/open-src/driver/xf86-video-ati/6675188.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
---- src/radeon_crtc.c	Thu Mar 13 12:17:42 2008
-+++ src/radeon_crtc.c	Thu Mar 13 12:18:26 2008
-@@ -238,6 +238,9 @@
-     }
- 
-     radeon_crtc_dpms(crtc, DPMSModeOn);
-+
-+    if (crtc->scrn->pScreen != NULL)
-+	xf86_reload_cursors (crtc->scrn->pScreen);
- }
- 
- void
--- a/open-src/driver/xf86-video-ati/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-ati/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,8 +1,8 @@
 ###############################################################################
 #
-# xf86-video-ati 1.x Makefile
+# xf86-video-ati Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,18 +30,23 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.16	08/08/08
+# @(#)Makefile	1.17	09/01/14
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-ati
 
 # Version number (used in path names)
-MODULE_VERSION=6.8.0
+MODULE_VERSION=6.10.0
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 6205248.patch 6675166.patch 6675188.patch \
-	build-dri.patch solaris-dri-drv-port.patch
+SOURCE_PATCHES = \
+	mapfiles.patch \
+	solaris-dri-drv-port.patch
+
+# Need to regenerate configure after patching configure.ac in build-dri.patch
+# and regenerate Makefile.in after patching Makefile.am in mapfiles.patch
+AUTORECONF=yes
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
@@ -49,27 +54,22 @@
 MODULE_STABILITY=Volatile
 
 # Extra flags to pass to configure script
-MODULE_CONFIG_OPTS=--with-xorg-sdk-dir=$(PROTODIR)/usr/X11/include/xorg
+MODULE_CONFIG_OPTS=--enable-dri
+
+# Need to override setting of CONFIG_SHELL from Makefile.init to work around
+# ksh93 bug that causes config.status/config.h to be incorrectly generated
+MODULE_CONFIG_ENV= CONFIG_SHELL=/usr/bin/bash
 
 # Paths to find libraries/modules to link with - libraries themselves listed
-# in src/Makefile.am since ATI has so many submodules with different needs
+# in src/Makefile.am since ATI has multiple submodules with different needs
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir)/extensions \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir)/linux \
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lexa -lint10 -lfb -lshadowfb -lvbe -lxaa -lfbdevhw \
-	-lvgahw -lm -lshadow  -ldrm -ldri -lglx \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)/extensions$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)/linux$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR)
 
-AUTORECONF=yes
-
 include ../Makefile.inc
-
-install_gen::
-	mkdir -p $(PROTODIR)$(X11_DOC_DIR)
-	cp -p $(SOURCE_DIR)/README.ati $(SOURCE_DIR)/README.r128 \
-	 $(PROTODIR)$(X11_DOC_DIR)/
--- a/open-src/driver/xf86-video-ati/build-dri.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-
---- configure.ac	2008-04-24 01:43:28.000000000 -0800
-+++ configure.ac	2008-04-24 10:18:56.490999000 -0800
-@@ -77,8 +77,13 @@
- 
- # Checks for pkg-config packages
- PKG_CHECK_MODULES(XORG, [xorg-server >= 1.2 xproto fontsproto $REQUIRED_MODULES])
--sdkdir=$(pkg-config --variable=sdkdir xorg-server)
- 
-+AC_ARG_WITH(xorg-sdk-dir,
-+            AC_HELP_STRING([--with-xorg-sdk-dir=DIR],
-+                           [Default xorg sdk include directory [[default is taken from pkgconfig]]]),
-+            [sdkdir="$withval"],
-+            [sdkdir=$(pkg-config --variable=sdkdir xorg-server)])
-+ 
- # Checks for libraries.
- 
- # Checks for header files.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-ati/mapfiles.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,64 @@
+# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Use subject to license terms.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+# 
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+
+diff -urp -x '*~' -x '*.orig' src/Makefile.am src/Makefile.am
+--- src/Makefile.am	2008-12-26 16:48:57.000000000 -0800
++++ src/Makefile.am	2009-01-10 19:09:03.425329000 -0800
+@@ -159,3 +159,32 @@ EXTRA_DIST = \
+ 	pcidb/ati_pciids.csv \
+ 	pcidb/parse_pci_ids.pl \
+ 	radeon_atombios.h
++
++
++# Generate linker mapfiles for symbols found in other modules and use them
++# and library flag additions to make sure all symbols are resolvable
++
++radeon_MAPFILES = \
++	mapfile-theatre_detect_drv-external \
++	mapfile-theatre_drv-external
++
++ati_drv_la_LDFLAGS += -lpciaccess
++
++radeon_drv_la_LDFLAGS += $(radeon_MAPFILES:%=-Wl,-M,%) \
++	-lexa -lfb -lint10 -lpciaccess -lvbe -lvgahw -lxaa -lshadow \
++	-ldrm -ldri -lglx -lm
++
++radeon_drv_la_DEPENDENCIES = $(radeon_MAPFILES)
++
++mapfiles: $(MAPFILES)
++
++mapfile-theatre_drv-external: $(theatre_drv_la_OBJECTS)
++mapfile-theatre_detect_drv-external: $(theatre_detect_drv_la_OBJECTS)
++
++mapfile-%-external:
++	-rm -f $@
++	printf '# Functions exported to loadable modules\n\n' > $@
++	printf '{\n  global:\n' >> $@
++	/usr/ccs/bin/nm -g $? | grep -v UNDEF | sed -n -e 's/^.*\|FUNC \|GLOB \|.*\|\(.*\)$$/    \1 = FUNCTION extern;/p' -e 's/^.*\|OBJT \|GLOB \|.*\|\(.*\)$$/    \1 = DATA extern;/p' >> $@
++	printf '};\n' >> $@
++
--- a/open-src/driver/xf86-video-ati/solaris-dri-drv-port.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-ati/solaris-dri-drv-port.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,7 @@
---- src/radeon_dri.h	Thu Apr 24 09:24:08 2008
-+++ src/radeon_dri.h	Thu Apr 24 09:19:49 2008
-@@ -80,14 +80,17 @@
+diff -urp -x '*~' -x '*.orig' src/radeon_dri.h src/radeon_dri.h
+--- src/radeon_dri.h	2008-08-17 10:54:00.000000000 -0700
++++ src/radeon_dri.h	2009-01-10 19:09:08.415906000 -0800
+@@ -75,20 +75,25 @@ typedef struct {
      /* MMIO register data */
      drm_handle_t     registerHandle;
      drmSize       registerSize;
@@ -18,7 +19,6 @@
      int           log2GARTTexGran;
      int           gartTexOffset;
      unsigned int  sarea_priv_offset;
-@@ -94,6 +97,8 @@
  
  #ifdef PER_CONTEXT_SAREA
      drmSize      perctx_sarea_size;
--- a/open-src/driver/xf86-video-chips/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-chips/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-chips
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.1
+MODULE_VERSION=1.2.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -53,7 +53,7 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa \
+	-lfb -lint10 -lpciaccess  -lshadowfb -lvbe -lvgahw -lxaa \
 	-lxf1bpp -lxf4bpp -lxf8_16bpp
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-cirrus/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-cirrus/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.6	08/08/08
+# @(#)Makefile	1.7	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-cirrus
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = mapfiles.patch
--- a/open-src/driver/xf86-video-cirrus/mapfiles.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-cirrus/mapfiles.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -26,9 +26,10 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 
---- src/Makefile.am	2007-01-10 19:12:16.281143000 -0800
-+++ src/Makefile.am	2007-01-10 19:24:44.193611000 -0800
-@@ -56,3 +56,42 @@
+diff -urp -x '*~' -x '*.orig' src/Makefile.am src/Makefile.am
+--- src/Makefile.am	2008-03-19 07:29:23.000000000 -0700
++++ src/Makefile.am	2009-01-10 19:15:45.025364000 -0800
+@@ -57,3 +57,42 @@ cirrus_laguna_la_SOURCES = \
           lg_i2c.c \
           lg_xaa.c \
           lg_xaa.h
@@ -47,16 +48,16 @@
 +cirrus_drv_la_LDFLAGS += \
 +	-Wl,-M,mapfile-cirrus_alpine-external \
 +	-Wl,-M,mapfile-cirrus_laguna-external \
-+	-lint10 -lvgahw -lvbe
++	-lint10 -lpciaccess -lvgahw -lvbe
 +
 +cirrus_alpine_la_LDFLAGS += \
 +	-Wl,-M,mapfile-cirrus_drv-external \
-+	-lfb -lint10 -lshadowfb -lvgahw -lxaa \
++	-lfb -lint10 -lpciaccess -lshadowfb -lvgahw -lxaa \
 +	-lxf1bpp -lxf4bpp 
 +
 +cirrus_laguna_la_LDFLAGS += \
 +	-Wl,-M,mapfile-cirrus_drv-external \
-+	-lfb -lint10 -lvgahw -lxaa
++	-lfb -lint10 -lpciaccess -lvgahw -lxaa
 +
 +mapfiles: $(MAPFILES)
 +
--- a/open-src/driver/xf86-video-cyrix/COPYING	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
- * Copyright 2000 by Richard A. Hecker, California, United States
- * Copyright 2002 by Red Hat Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission.  Alan Hourihane makes no representations
- * about the suitability of this software for any purpose.  It is provided
- * "as is" without express or implied warranty.
- *
- * RICHARD HECKER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL RICHARD HECKER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL RICHARD HECKER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Author:  Richard Hecker, [email protected]
- *          Re-written for XFree86 v4.0
- * Chunks re-written again for XFree86 v4.2
- *	    Alan Cox <[email protected]>
- * Previous driver (pre-XFree86 v4.0) by
- *          Annius V. Groenink ([email protected], [email protected]),
- *          Dirk H. Hohndel ([email protected]),
- *          Portions: the GGI project & confidential CYRIX databooks.
- 
- this code is partly based on the MediaGX sources from the GGI project
-   based on CYRIX example code (gxvideo.c) and included with CYRIX and
-   GGI's permission under the XFree86 license.
-
-
- * Copyright 2000 by Richard A. Hecker, California, United States
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Richard Hecker not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission.  Richard Hecker makes no representations
- * about the suitability of this software for any purpose.  It is provided
- * "as is" without express or implied warranty.
- *
- * RICHARD HECKER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL RICHARD HECKER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Author:  Richard Hecker, [email protected]
- *          Re-written for XFree86 v4.0
- * Previous driver (pre-XFree86 v4.0) by
- *          Annius V. Groenink ([email protected], [email protected]),
- *          Dirk H. Hohndel ([email protected]),
- *          Portions: the GGI project & confidential CYRIX databooks.
- 
-
- * Copyright 2000 by Richard A. Hecker, California, United States
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Richard Hecker not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission.  Richard Hecker makes no representations
- * about the suitability of this software for any purpose.  It is provided
- * "as is" without express or implied warranty.
- *
- * RICHARD HECKER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL RICHARD HECKER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Author:  Richard Hecker, [email protected]
- *          Re-written for XFree86 v4.0
- * Previous driver (pre-XFree86 v4.0) by
- *          Annius V. Groenink ([email protected], [email protected]),
- *          Dirk H. Hohndel ([email protected]),
- *          Portions: the GGI project & confidential CYRIX databooks.
- 
-
- * Copyright 2000 by Richard A. Hecker, California, United States
- * Copyright 2002 by Red Hat Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Richard Hecker not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission.  Richard Hecker makes no representations
- * about the suitability of this software for any purpose.  It is provided
- * "as is" without express or implied warranty.
- *
- * RICHARD HECKER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL RICHARD HECKER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL RICHARD HECKER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Author:  Richard Hecker, [email protected]
- *          Re-written for XFree86 v4.0
- *
- * Chunks re-written again for XFree86 v4.2
- *	    Alan Cox <[email protected]>
- *		- Fixed cursor handling
- *		- Rewrote parts of the broken mode switch code
- *		- Added proper PCI detection
- *		- Added ShadowFB support
- *		- Added rotate support
- *		- Fixed palette loading/restore
- *		- Added "Nocompression" option
- *		- Fixed line length loading
- *		- Fixed panning logic
- *
- * Previous driver (pre-XFree86 v4.0) by
- *          Annius V. Groenink ([email protected], [email protected]),
- *          Dirk H. Hohndel ([email protected]),
- *          Portions: the GGI project & confidential CYRIX databooks.
- *		(note that most of the data books have been released by
- *		 NatSemi and are downloadable for free as pdf files)
- 
-
- * Copyright 2000 by Richard A. Hecker, California, United States
- * Copyright 2002 by Red Hat Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Richard Hecker not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission.  Richard Hecker makes no representations
- * about the suitability of this software for any purpose.  It is provided
- * "as is" without express or implied warranty.
- *
- * RICHARD HECKER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL RICHARD HECKER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL RICHARD HECKER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Author:  Richard Hecker, [email protected]
- *          Re-written for XFree86 v4.0
- *
- * Chunks re-written again for XFree86 v4.2
- *	    Alan Cox <[email protected]>
- *
- * Previous driver (pre-XFree86 v4.0) by
- *          Annius V. Groenink ([email protected], [email protected]),
- *          Dirk H. Hohndel ([email protected]),
- *          Portions: the GGI project & confidential CYRIX databooks.
- 
-
-   Copyright (c) 1999,  The XFree86 Project Inc. 
-   Written by Mark Vojkovich <[email protected]>
--- a/open-src/driver/xf86-video-cyrix/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-###############################################################################
-#
-# xf86-video-cyrix 1.x Makefile
-#
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-# @(#)Makefile	1.7	08/08/08
-#
-
-# Package name used in tarballs
-MODULE_NAME=xf86-video-cyrix
-
-# Version number (used in path names)
-MODULE_VERSION=1.1.0
-
-# Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 
-
-# Man pages to apply Sun footer to & attributes to list
-SUNTOUCHED_MANPAGES=man/*.man
-SUN_PACKAGE=SUNWxorg-graphics-ddx
-MODULE_STABILITY=Volatile
-
-# Libraries/modules to link with
-MODULE_LD_OPTIONS= \
-	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa
-
-include ../Makefile.inc
-
-install_gen::
-	mkdir -p $(PROTODIR)$(X11_DOC_DIR)
-	cp -p $(SOURCE_DIR)/README $(PROTODIR)$(X11_DOC_DIR)/README.cyrix
--- a/open-src/driver/xf86-video-dummy/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-dummy/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-dummy
 
 # Version number (used in path names)
-MODULE_VERSION=0.2.0
+MODULE_VERSION=0.3.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-video-glint/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-glint/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-video-glint 1.x Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.6	08/08/08
+# @(#)Makefile	1.7	09/01/14
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-glint
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.1
+MODULE_VERSION=1.2.2
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -55,7 +55,11 @@
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)/linux$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadowfb -lvbe \
+	-lfb -lint10 -lpciaccess -lshadowfb -lvbe \
 	-lvgahw -lxaa -lxf8_32bpp -lcfb -lmfb -lfbdevhw
 
+# Extra flags to pass to configure script
+# - Disable DRI since the kernel module isn't ported
+MODULE_CONFIG_OPTS=--disable-dri
+
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-i128/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-i128/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.8	08/08/08
+# @(#)Makefile	1.9	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-i128
 
 # Version number (used in path names)
-MODULE_VERSION=1.2.1
+MODULE_VERSION=1.3.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -53,7 +53,7 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lexa -lfb -lvgahw -lxaa
+	-lexa -lfb -lvgahw -lxaa -lpciaccess
 
 include ../Makefile.inc
 
--- a/open-src/driver/xf86-video-i740/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-i740/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-i740
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -51,7 +51,7 @@
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-lfb -lint10 -lvbe -lvgahw -lxaa -lm
+	-lfb -lint10 -lpciaccess -lvbe -lvgahw -lxaa -lm
 
 include ../Makefile.inc
 
--- a/open-src/driver/xf86-video-intel/6538497_6554161.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-intel/6538497_6554161.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,18 @@
---- src/i830_dri.h	Tue May 22 10:57:01 2007
-+++ src/i830_dri.h	Tue May 22 10:57:57 2007
-@@ -22,16 +22,20 @@
+diff -urp -x '*~' -x '*.orig' src/i830_common.h src/i830_common.h
+--- src/i830_common.h	2008-07-22 23:14:09.000000000 -0700
++++ src/i830_common.h	2009-01-10 20:01:43.664950000 -0800
+@@ -94,6 +94,7 @@ typedef struct {
+         int pf_current_page;	/* which buffer is being displayed? */
+         int perf_boxes;	        /* performance boxes to be displayed */   
+ 	int width, height;      /* screen size in pixels */
++	int pad0;
+ 
+ 	drm_handle_t front_handle;
+ 	int front_offset;
+diff -urp -x '*~' -x '*.orig' src/i830_dri.h src/i830_dri.h
+--- src/i830_dri.h	2008-08-25 18:25:53.000000000 -0700
++++ src/i830_dri.h	2009-01-10 20:01:43.652983000 -0800
+@@ -22,16 +22,20 @@ typedef struct _I830DRIRec {
     drm_handle_t unused2; /* backbuffer */
  
     drmSize unused3; /* depthbufferSize */
@@ -22,19 +34,10 @@
  
     int deviceID;
     int width;
---- src/i830_common.h	Tue May 22 10:58:16 2007
-+++ src/i830_common.h	Tue May 22 10:58:40 2007
-@@ -92,6 +92,7 @@
-         int pf_current_page;	/* which buffer is being displayed? */
-         int perf_boxes;	        /* performance boxes to be displayed */   
- 	int width, height;      /* screen size in pixels */
-+	int pad0;
- 
- 	drm_handle_t front_handle;
- 	int front_offset;
---- src/modes/xf86RandR12.c	Tue May 22 10:59:52 2007
-+++ src/modes/xf86RandR12.c	Tue May 22 11:00:45 2007
-@@ -207,6 +207,11 @@
+diff -urp -x '*~' -x '*.orig' src/modes/xf86RandR12.c src/modes/xf86RandR12.c
+--- src/modes/xf86RandR12.c	2008-04-13 18:57:30.000000000 -0700
++++ src/modes/xf86RandR12.c	2009-01-10 20:01:43.666024000 -0800
+@@ -207,6 +207,11 @@ xf86RandR12SetMode (ScreenPtr	    pScree
          /* Reset, just so we ensure the drivers SwitchMode is called */
          scrp->currentMode = NULL;
      }
--- a/open-src/driver/xf86-video-intel/6767351.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
---- src/bios_reader/bios_dumper.c	Tue Nov  4 08:08:36 2008
-+++ src/bios_reader/bios_dumper.c	Tue Nov  4 08:09:07 2008
-@@ -36,6 +36,10 @@
- #include <pciaccess.h>
- #include <err.h>
- 
-+#ifndef DEFFILEMODE
-+#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) /* 0666*/
-+#endif
-+
- static void usage(void)
- {
-     fprintf(stderr, "usage: bios_dumper <filename>\n");
--- a/open-src/driver/xf86-video-intel/845_workaround.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-intel/845_workaround.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,7 @@
---- src/i830_driver.c	Wed May 28 08:34:24 2008
-+++ src/i830_driver.c	Wed May 28 08:38:55 2008
-@@ -1510,6 +1510,9 @@
+diff -urp -x '*~' -x '*.orig' src/i830_driver.c src/i830_driver.c
+--- src/i830_driver.c	2008-08-25 18:25:53.000000000 -0700
++++ src/i830_driver.c	2009-01-10 20:01:46.246642000 -0800
+@@ -1589,6 +1589,9 @@ I830PreInit(ScrnInfoPtr pScrn, int flags
  	       pI830->useEXA = FALSE;
  	   }
         }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-intel/Add-support-for-G41-chipset.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,106 @@
+From ec17c88a0ed7c9cf4ad68aa52a7a891946a1c0f4 Mon Sep 17 00:00:00 2001
+From: Zhenyu Wang <[email protected]>
+Date: Thu, 11 Sep 2008 16:14:47 +0800
+Subject: [PATCH] Add support for G41 chipset
+
+G41 is another 4 series chipset like G45/43.
+---
+ src/common.h      |    7 ++++++-
+ src/i810_driver.c |    4 ++++
+ src/i830_driver.c |    5 +++++
+ 3 files changed, 15 insertions(+), 1 deletions(-)
+
+diff --git a/src/common.h b/src/common.h
+index ece1def..840d30a 100644
+--- a/src/common.h
++++ b/src/common.h
+@@ -323,6 +323,11 @@ extern int I810_DEBUG;
+ #define PCI_CHIP_Q45_G_BRIDGE	0x2E10
+ #endif
+ 
++#ifndef PCI_CHIP_G41_G
++#define PCI_CHIP_G41_G		0x2E32
++#define PCI_CHIP_G41_G_BRIDGE	0x2E30
++#endif
++
+ #if XSERVER_LIBPCIACCESS
+ #define I810_MEMBASE(p,n) (p)->regions[(n)].base_addr
+ #define VENDOR_ID(p)      (p)->vendor_id
+@@ -355,7 +360,7 @@ extern int I810_DEBUG;
+ #define IS_I945G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I945_G)
+ #define IS_I945GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I945_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I945_GME)
+ #define IS_GM45(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_GM45_GM)
+-#define IS_G4X(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_E_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G45_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q45_G)
++#define IS_G4X(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_E_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G45_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q45_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G41_G)
+ #define IS_I965GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME)
+ #define IS_I965G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G35_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_Q || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I946_GZ || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME || IS_GM45(pI810) || IS_G4X(pI810))
+ #define IS_G33CLASS(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G33_G ||\
+diff --git a/src/i810_driver.c b/src/i810_driver.c
+index 856f5ec..a7f408c 100644
+--- a/src/i810_driver.c
++++ b/src/i810_driver.c
+@@ -156,6 +156,7 @@ static const struct pci_id_match intel_device_match[] = {
+    INTEL_DEVICE_MATCH (PCI_CHIP_IGD_E_G, 0 ),
+    INTEL_DEVICE_MATCH (PCI_CHIP_G45_G, 0 ),
+    INTEL_DEVICE_MATCH (PCI_CHIP_Q45_G, 0 ),
++   INTEL_DEVICE_MATCH (PCI_CHIP_G41_G, 0 ),
+     { 0, 0, 0 },
+ };
+ 
+@@ -212,6 +213,7 @@ static SymTabRec I810Chipsets[] = {
+    {PCI_CHIP_IGD_E_G,		"Intel Integrated Graphics Device"},
+    {PCI_CHIP_G45_G,		"G45/G43"},
+    {PCI_CHIP_Q45_G,		"Q45/Q43"},
++   {PCI_CHIP_G41_G,		"G41"},
+    {-1,				NULL}
+ };
+ 
+@@ -245,6 +247,7 @@ static PciChipsets I810PciChipsets[] = {
+    {PCI_CHIP_IGD_E_G,		PCI_CHIP_IGD_E_G,	RES_SHARED_VGA},
+    {PCI_CHIP_G45_G,		PCI_CHIP_G45_G,		RES_SHARED_VGA},
+    {PCI_CHIP_Q45_G,		PCI_CHIP_Q45_G,		RES_SHARED_VGA},
++   {PCI_CHIP_G41_G,		PCI_CHIP_G41_G,		RES_SHARED_VGA},
+    {-1,				-1, RES_UNDEFINED }
+ };
+ 
+@@ -812,6 +815,7 @@ I810Probe(DriverPtr drv, int flags)
+ 	    case PCI_CHIP_IGD_E_G:
+ 	    case PCI_CHIP_G45_G:
+ 	    case PCI_CHIP_Q45_G:
++	    case PCI_CHIP_G41_G:
+     	       xf86SetEntitySharable(usedChips[i]);
+ 
+     	       /* Allocate an entity private if necessary */		
+diff --git a/src/i830_driver.c b/src/i830_driver.c
+index bab86a5..e48e20e 100644
+--- a/src/i830_driver.c
++++ b/src/i830_driver.c
+@@ -254,6 +254,7 @@ static SymTabRec I830Chipsets[] = {
+    {PCI_CHIP_IGD_E_G,		"Intel Integrated Graphics Device"},
+    {PCI_CHIP_G45_G,		"G45/G43"},
+    {PCI_CHIP_Q45_G,		"Q45/Q43"},
++   {PCI_CHIP_G41_G,		"G41"},
+    {-1,				NULL}
+ };
+ 
+@@ -281,6 +282,7 @@ static PciChipsets I830PciChipsets[] = {
+    {PCI_CHIP_IGD_E_G,		PCI_CHIP_IGD_E_G,	RES_SHARED_VGA},
+    {PCI_CHIP_G45_G,		PCI_CHIP_G45_G,		RES_SHARED_VGA},
+    {PCI_CHIP_Q45_G,		PCI_CHIP_Q45_G,		RES_SHARED_VGA},
++   {PCI_CHIP_G41_G,		PCI_CHIP_G41_G,		RES_SHARED_VGA},
+    {-1,				-1,			RES_UNDEFINED}
+ };
+ 
+@@ -1267,6 +1269,9 @@ i830_detect_chipset(ScrnInfoPtr pScrn)
+     case PCI_CHIP_Q45_G:
+ 	chipname = "Q45/Q43";
+ 	break;
++    case PCI_CHIP_G41_G:
++	chipname = "G41";
++	break;
+    default:
+ 	chipname = "unknown chipset";
+ 	break;
+-- 
+1.5.6.5
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-intel/Do-force-CRT-detect-sequence-twice-on-4-series-chips.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,41 @@
+From d6b2696f9ac14a81598e0147698209ad428fd45d Mon Sep 17 00:00:00 2001
+From: Zhenyu Wang <[email protected]>
+Date: Fri, 26 Sep 2008 09:53:03 +0800
+Subject: [PATCH] Do force CRT detect sequence twice on 4 series chipset
+
+---
+ src/i830_crt.c |   11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+diff --git a/src/i830_crt.c b/src/i830_crt.c
+index 5812e2b..2e70eb8 100644
+--- a/src/i830_crt.c
++++ b/src/i830_crt.c
+@@ -161,6 +161,14 @@ i830_crt_detect_hotplug(xf86OutputPtr output)
+     uint32_t	temp;
+     const int	timeout_ms = 1000;
+     int		starttime, curtime;
++    int		tries = 1;
++
++    /* On 4 series, CRT detect sequence need to be done twice for safe. */
++    if (IS_G4X(pI830))
++	tries = 2;
++
++retry:
++    tries--;
+ 
+     temp = INREG(PORT_HOTPLUG_EN);
+ 
+@@ -173,6 +181,9 @@ i830_crt_detect_hotplug(xf86OutputPtr output)
+ 	    break;
+     }
+ 
++    if (tries > 0)
++	goto retry;
++
+     if ((INREG(PORT_HOTPLUG_STAT) & CRT_HOTPLUG_MONITOR_MASK) ==
+ 	CRT_HOTPLUG_MONITOR_COLOR)
+     {
+-- 
+1.5.6.5
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-intel/Fix-broken-stolen-memory-counting-on-G4X.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,36 @@
+From 4dd00681dd0f9fce8dfd4592b46418edbbd2eeb4 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <[email protected]>
+Date: Tue, 14 Oct 2008 11:33:33 -0700
+Subject: [PATCH] Fix broken stolen memory counting on G4X.
+
+On the GM45 we were assuming too little stolen memory (mostly harmless,
+except when it wasn't, until the AGP fix), and on the G45 we were assuming too
+much stolen memory, which was quite harmful when we touched the page that
+didn't get mapped.
+
+Future stolen memory accounting should use src/reg_dumper/intel_gtt before and
+after enabling AGP on the chipset to confirm that only the GTT entries not
+mapped to stolen are replaced, and that all of the unmapped GTT entries are
+replaced with the constant scratch page.
+---
+ src/i830_driver.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/i830_driver.c b/src/i830_driver.c
+index c1d61f4..eaf5d27 100644
+--- a/src/i830_driver.c
++++ b/src/i830_driver.c
+@@ -502,8 +502,8 @@ I830DetectMemory(ScrnInfoPtr pScrn)
+    range = gtt_size + 4;
+ 
+    /* new 4 series hardware has seperate GTT stolen with GFX stolen */
+-   if (IS_G4X(pI830))
+-       range = 0;
++   if (IS_G4X(pI830) || IS_GM45(pI830))
++       range = 4;
+ 
+    if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I9XX(pI830)) {
+       switch (gmch_ctrl & I855_GMCH_GMS_MASK) {
+-- 
+1.5.6.5
+
--- a/open-src/driver/xf86-video-intel/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-intel/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-video-intel Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,26 +30,30 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.19	08/11/04
+# @(#)Makefile	1.20	09/01/14
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-intel
 
 # Version number (used in path names)
-MODULE_VERSION=2.3.0
+MODULE_VERSION=2.4.2
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES= build-dri.patch libraries.patch \
 		6538497_6554161.patch 845_workaround.patch \
-		eaglelake-support.patch 6767351.patch
+		Add-support-for-G41-chipset.patch,-p1 \
+		Fix-broken-stolen-memory-counting-on-G4X.patch,-p1 \
+		Render-register-clock-gating-disable-fix-on-4-series.patch,-p1 \
+		Do-force-CRT-detect-sequence-twice-on-4-series-chips.patch,-p1
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
 SUN_PACKAGE=SUNWxorg-graphics-ddx
 MODULE_STABILITY=Volatile
 
-MODULE_CONFIG_OPTS=--with-xorg-sdk-dir=$(PROTODIR)/usr/X11/include/xorg
+# Extra flags to pass to configure script
+MODULE_CONFIG_OPTS=--enable-dri
 
 # Libraries/modules to link with
 MODULE_LD_OPTIONS= \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-intel/Render-register-clock-gating-disable-fix-on-4-series.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,54 @@
+From 1cc15ba454fdf54a7dea9da066e0a023a4742fab Mon Sep 17 00:00:00 2001
+From: Zhenyu Wang <[email protected]>
+Date: Fri, 26 Sep 2008 10:01:52 +0800
+Subject: [PATCH] Render register clock gating disable fix on 4 series chipset
+
+---
+ src/i810_reg.h    |    3 +++
+ src/i830_driver.c |   14 ++++++++++----
+ 2 files changed, 13 insertions(+), 4 deletions(-)
+
+diff --git a/src/i810_reg.h b/src/i810_reg.h
+index 5b90e12..6458008 100644
+--- a/src/i810_reg.h
++++ b/src/i810_reg.h
+@@ -1167,6 +1167,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ # define I965_DM_CLOCK_GATE_DISABLE		(1 << 0)
+ 
+ #define RENCLK_GATE_D2		0x6208
++#define VF_UNIT_CLOCK_GATE_DISABLE		(1 << 9)
++#define GS_UNIT_CLOCK_GATE_DISABLE		(1 << 7)
++#define CL_UNIT_CLOCK_GATE_DISABLE		(1 << 6)
+ #define RAMCLK_GATE_D		0x6210		/* CRL only */
+ #define DEUC			0x6214          /* CRL only */
+ 
+diff --git a/src/i830_driver.c b/src/i830_driver.c
+index 1317c1d..389775f 100644
+--- a/src/i830_driver.c
++++ b/src/i830_driver.c
+@@ -965,12 +965,18 @@ i830_init_clock_gating(ScrnInfoPtr pScrn)
+     /* Disable clock gating reported to work incorrectly according to the specs.
+      */
+     if (IS_GM45(pI830) || IS_G4X(pI830)) {
++	uint32_t dspclk_gate;
+ 	OUTREG(RENCLK_GATE_D1, 0);
+-	OUTREG(RENCLK_GATE_D2, 0);
++	OUTREG(RENCLK_GATE_D2, VF_UNIT_CLOCK_GATE_DISABLE |
++		GS_UNIT_CLOCK_GATE_DISABLE |
++		CL_UNIT_CLOCK_GATE_DISABLE);
+ 	OUTREG(RAMCLK_GATE_D, 0);
+-	OUTREG(DSPCLK_GATE_D, VRHUNIT_CLOCK_GATE_DISABLE |
+-	       OVRUNIT_CLOCK_GATE_DISABLE |
+-	       OVCUNIT_CLOCK_GATE_DISABLE);
++	dspclk_gate = VRHUNIT_CLOCK_GATE_DISABLE |
++	    OVRUNIT_CLOCK_GATE_DISABLE |
++	    OVCUNIT_CLOCK_GATE_DISABLE;
++	if (IS_GM45(pI830))
++	    dspclk_gate |= DSSUNIT_CLOCK_GATE_DISABLE;
++	OUTREG(DSPCLK_GATE_D, dspclk_gate);
+     } else if (IS_I965GM(pI830)) {
+ 	OUTREG(RENCLK_GATE_D1, I965_RCC_CLOCK_GATE_DISABLE);
+ 	OUTREG(RENCLK_GATE_D2, 0);
+-- 
+1.5.6.5
+
--- a/open-src/driver/xf86-video-intel/build-dri-new.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
---- configure.ac	Mon Aug 25 18:28:31 2008
-+++ configure.ac	Mon Sep 15 15:32:01 2008
-@@ -37,7 +37,7 @@
- # Checks for programs.
- AC_DISABLE_STATIC
- AC_PROG_LIBTOOL
--DOLT
-+#DOLT
- AC_PROG_CC
- AM_PROG_CC_C_O
-
-@@ -84,7 +84,11 @@
- 
- # Checks for pkg-config packages
- PKG_CHECK_MODULES(XORG, [xorg-server xproto fontsproto $REQUIRED_MODULES])
--sdkdir=$(pkg-config --variable=sdkdir xorg-server)
-+AC_ARG_WITH(xorg-sdk-dir,
-+	    AC_HELP_STRING([--with-xorg-sdk-dir=DIR],
-+		           [Default xorg sdk include directory [[default is taken from pkgconfig]]]),
-+	    [sdkdir="$withval"],
-+	    [sdkdir=$(pkg-config --variable=sdkdir xorg-server)])
- 
- # Checks for libraries.
- 
--- a/open-src/driver/xf86-video-intel/build-dri.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-intel/build-dri.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -27,18 +27,27 @@
 # of the copyright holder.
 
 diff -urp -x '*~' -x '*.orig' configure.ac configure.ac
---- configure.ac	2007-04-19 20:00:18.000000000 -0700
-+++ configure.ac	2007-06-15 17:45:43.059034000 -0700
-@@ -85,7 +85,11 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xex
+--- configure.ac	2008-08-25 18:28:31.000000000 -0700
++++ configure.ac	2009-01-10 20:01:38.516058000 -0800
+@@ -37,7 +37,7 @@ AM_MAINTAINER_MODE
+ # Checks for programs.
+ AC_DISABLE_STATIC
+ AC_PROG_LIBTOOL
+-DOLT
++#DOLT
+ AC_PROG_CC
+ AM_PROG_CC_C_O
+ 
+@@ -84,7 +84,11 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xex
  
  # Checks for pkg-config packages
- PKG_CHECK_MODULES(XORG, [xorg-server xproto xvmc fontsproto $REQUIRED_MODULES])
+ PKG_CHECK_MODULES(XORG, [xorg-server xproto fontsproto $REQUIRED_MODULES])
 -sdkdir=$(pkg-config --variable=sdkdir xorg-server)
 +AC_ARG_WITH(xorg-sdk-dir,
-+            AC_HELP_STRING([--with-xorg-sdk-dir=DIR],
-+                           [Default xorg sdk include directory [[default is taken from pkgconfig]]]),
-+            [sdkdir="$withval"],
-+            [sdkdir=$(pkg-config --variable=sdkdir xorg-server)])
++	    AC_HELP_STRING([--with-xorg-sdk-dir=DIR],
++		           [Default xorg sdk include directory [[default is taken from pkgconfig]]]),
++	    [sdkdir="$withval"],
++	    [sdkdir=$(pkg-config --variable=sdkdir xorg-server)])
  
- PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.5.0], have_pciaccess=yes, have_pciaccess=no)
- AM_CONDITIONAL(HAVE_PCIACCESS, test "x$have_pciaccess" = xyes)
+ # Checks for libraries.
+ 
--- a/open-src/driver/xf86-video-intel/eaglelake-support.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,376 +0,0 @@
---- src/i810_driver.c	Mon Oct 13 08:41:56 2008
-+++ src/i810_driver.c	Mon Oct 13 08:45:56 2008
-@@ -152,7 +152,10 @@
-    INTEL_DEVICE_MATCH (PCI_CHIP_G33_G, 0 ),
-    INTEL_DEVICE_MATCH (PCI_CHIP_Q35_G, 0 ),
-    INTEL_DEVICE_MATCH (PCI_CHIP_Q33_G, 0 ),
--   INTEL_DEVICE_MATCH (PCI_CHIP_IGD_GM, 0 ),
-+   INTEL_DEVICE_MATCH (PCI_CHIP_GM45_GM, 0 ),
-+   INTEL_DEVICE_MATCH (PCI_CHIP_IGD_E_G, 0 ),
-+   INTEL_DEVICE_MATCH (PCI_CHIP_G45_G, 0 ),
-+   INTEL_DEVICE_MATCH (PCI_CHIP_Q45_G, 0 ),
-     { 0, 0, 0 },
- };
- 
-@@ -205,7 +208,10 @@
-    {PCI_CHIP_G33_G,		"G33"},
-    {PCI_CHIP_Q35_G,		"Q35"},
-    {PCI_CHIP_Q33_G,		"Q33"},
--   {PCI_CHIP_IGD_GM,		"Intel Integrated Graphics Device"},
-+   {PCI_CHIP_GM45_GM,           "Mobile Intel\302\256 GM45 Express Chipset"},
-+   {PCI_CHIP_IGD_E_G,           "Intel Integrated Graphics Device"},
-+   {PCI_CHIP_G45_G,             "G45/G43"},
-+   {PCI_CHIP_Q45_G,             "Q45/Q43"},
-    {-1,				NULL}
- };
- 
-@@ -235,7 +241,10 @@
-    {PCI_CHIP_G33_G,		PCI_CHIP_G33_G,		RES_SHARED_VGA},
-    {PCI_CHIP_Q35_G,		PCI_CHIP_Q35_G,		RES_SHARED_VGA},
-    {PCI_CHIP_Q33_G,		PCI_CHIP_Q33_G,		RES_SHARED_VGA},
--   {PCI_CHIP_IGD_GM,		PCI_CHIP_IGD_GM,	RES_SHARED_VGA},
-+   {PCI_CHIP_GM45_GM,           PCI_CHIP_GM45_GM,       RES_SHARED_VGA},
-+   {PCI_CHIP_IGD_E_G,           PCI_CHIP_IGD_E_G,       RES_SHARED_VGA},
-+   {PCI_CHIP_G45_G,             PCI_CHIP_G45_G,         RES_SHARED_VGA},
-+   {PCI_CHIP_Q45_G,             PCI_CHIP_Q45_G,         RES_SHARED_VGA},
-    {-1,				-1, RES_UNDEFINED }
- };
- 
-@@ -799,7 +808,10 @@
-  	    case PCI_CHIP_G33_G:
-  	    case PCI_CHIP_Q35_G:
-  	    case PCI_CHIP_Q33_G:
-- 	    case PCI_CHIP_IGD_GM:
-+            case PCI_CHIP_GM45_GM:
-+            case PCI_CHIP_IGD_E_G:
-+            case PCI_CHIP_G45_G:
-+            case PCI_CHIP_Q45_G:
-     	       xf86SetEntitySharable(usedChips[i]);
- 
-     	       /* Allocate an entity private if necessary */		
---- src/i830_quirks.c	Mon Oct 13 08:44:25 2008
-+++ src/i830_quirks.c	Mon Oct 13 08:47:46 2008
-@@ -253,7 +253,7 @@
-     { PCI_CHIP_I965_GM, 0x144d, 0xc510, quirk_ignore_tv },
- 
-     /* HP Compaq 6730s has no TV output */
--    { PCI_CHIP_IGD_GM, 0x103c, 0x30e8, quirk_ignore_tv },
-+    { PCI_CHIP_GM45_GM, 0x103c, 0x30e8, quirk_ignore_tv },
- 
-     /* Dell Inspiron 510m needs pipe A force quirk */
-     { PCI_CHIP_I855_GM, 0x1028, 0x0164, quirk_pipea_force },
---- src/i830_display.c	Mon Oct 13 08:51:46 2008
-+++ src/i830_display.c	Mon Oct 13 08:53:14 2008
-@@ -665,7 +665,7 @@
-     ScrnInfoPtr pScrn = crtc->scrn;
-     I830Ptr pI830 = I830PTR(pScrn);
- 
--    if (IS_IGD_GM(pI830))
-+    if (IS_GM45(pI830))
- 	return i830_enable_fb_compression2(crtc);
- 
-     i830_enable_fb_compression_8xx(crtc);
-@@ -677,7 +677,7 @@
-     ScrnInfoPtr pScrn = crtc->scrn;
-     I830Ptr pI830 = I830PTR(pScrn);
- 
--    if (IS_IGD_GM(pI830))
-+    if (IS_GM45(pI830))
- 	return i830_disable_fb_compression2(crtc);
- 
-     i830_disable_fb_compression_8xx(crtc);
---- src/i830_memory.c	Mon Oct 13 08:52:09 2008
-+++ src/i830_memory.c	Mon Oct 13 15:38:39 2008
-@@ -445,7 +445,7 @@
- 	/* Overlay and cursors, if physical, need to be allocated outside
- 	 * of the kernel memory manager.
- 	 */
--	if (!OVERLAY_NOPHYSICAL(pI830) && !IS_IGD_GM(pI830)) {
-+	if (!OVERLAY_NOPHYSICAL(pI830) && !IS_GM45(pI830)) {
- 	    mmsize -= ROUND_TO(OVERLAY_SIZE, GTT_PAGE_SIZE);
- 	}
- 	if (pI830->CursorNeedsPhysical) {
-@@ -457,7 +457,7 @@
- 	/* Can't do TTM on stolen memory */
- 	mmsize -= pI830->stolen_size;
- 
--	if (HWS_NEED_GFX(pI830) && IS_IGD_GM(pI830))
-+	if (HWS_NEED_GFX(pI830) && HWS_NEED_NONSTOLEN(pI830))
- 	    mmsize -= HWSTATUS_PAGE_SIZE;
- 
- 	/* Create the aperture allocation */
-@@ -1025,7 +1025,7 @@
-     if (!pI830->XvEnabled)
- 	return TRUE;
- 
--    if (IS_IGD_GM(pI830))
-+    if (IS_GM45(pI830))
- 	return TRUE;
- 
-     if (!OVERLAY_NOPHYSICAL(pI830))
-@@ -1279,7 +1279,7 @@
- 	goto out;
-     }
- 
--    if (IS_IGD_GM(pI830)) {
-+    if (IS_GM45(pI830)) {
- 	/* Update i830_display.c too if compression ratio changes */
- 	compressed_size = fb_height * (pScrn->displayWidth / 4);
-     } else {
-@@ -1306,7 +1306,7 @@
- 	goto out;
-     }
- 
--    if (!IS_IGD_GM(pI830)) {
-+    if (!IS_GM45(pI830)) {
- 	pI830->compressed_ll_buffer =
- 	    i830_allocate_memory(pScrn, "compressed ll buffer",
- 				 FBC_LL_SIZE + FBC_LL_PAD, KB(4),
-@@ -1641,7 +1641,7 @@
-      * (i.e. not through buffer objects).
-      */
-     flags = NEED_LIFETIME_FIXED;
--    if (IS_IGD_GM(pI830))
-+    if (HWS_NEED_NONSTOLEN(pI830))
- 	    flags |= NEED_NON_STOLEN;
-     pI830->hw_status = i830_allocate_memory(pScrn, "HW status",
- 	    HWSTATUS_PAGE_SIZE, GTT_PAGE_SIZE, flags);
---- src/i830_driver.c	Mon Oct 13 08:41:53 2008
-+++ src/i830_driver.c	Mon Oct 13 15:48:43 2008
-@@ -251,7 +251,10 @@
-    {PCI_CHIP_G33_G,		"G33"},
-    {PCI_CHIP_Q35_G,		"Q35"},
-    {PCI_CHIP_Q33_G,		"Q33"},
--   {PCI_CHIP_IGD_GM,		"Intel Integrated Graphics Device"},
-+   {PCI_CHIP_GM45_GM,           "Mobile Intel\302\256 GM45 Express Chipset"},
-+   {PCI_CHIP_IGD_E_G,           "Intel Integrated Graphics Device"},
-+   {PCI_CHIP_G45_G,             "G45/G43"},
-+   {PCI_CHIP_Q45_G,             "Q45/Q43"},
-    {-1,				NULL}
- };
- 
-@@ -275,7 +278,10 @@
-    {PCI_CHIP_G33_G,		PCI_CHIP_G33_G,		RES_SHARED_VGA},
-    {PCI_CHIP_Q35_G,		PCI_CHIP_Q35_G,		RES_SHARED_VGA},
-    {PCI_CHIP_Q33_G,		PCI_CHIP_Q33_G,		RES_SHARED_VGA},
--   {PCI_CHIP_IGD_GM,		PCI_CHIP_IGD_GM,	RES_SHARED_VGA},
-+   {PCI_CHIP_GM45_GM,           PCI_CHIP_GM45_GM,       RES_SHARED_VGA},
-+   {PCI_CHIP_IGD_E_G,           PCI_CHIP_IGD_E_G,       RES_SHARED_VGA},
-+   {PCI_CHIP_G45_G,             PCI_CHIP_G45_G,         RES_SHARED_VGA},
-+   {PCI_CHIP_Q45_G,             PCI_CHIP_Q45_G,         RES_SHARED_VGA},
-    {-1,				-1,			RES_UNDEFINED}
- };
- 
-@@ -509,6 +515,10 @@
-     */
-    range = gtt_size + 4;
- 
-+   /* new 4 series hardware has seperate GTT stolen with GFX stolen */
-+   if (IS_G4X(pI830))
-+       range = 0;
-+
-    if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I9XX(pI830)) {
-       switch (gmch_ctrl & I855_GMCH_GMS_MASK) {
-       case I855_GMCH_GMS_STOLEN_1M:
-@@ -625,7 +635,7 @@
- 
-       if (IS_I965G(pI830)) 
-       {
--	 if (IS_IGD_GM(pI830)) {
-+	 if (IS_GM45(pI830) || IS_G4X(pI830)) {
- 	     gttaddr = pI830->MMIOAddr + MB(2);
- 	     pI830->GTTMapSize = MB(2);
- 	 } else {
-@@ -1141,9 +1151,18 @@
-     case PCI_CHIP_Q33_G:
- 	chipname = "Q33";
- 	break;
--    case PCI_CHIP_IGD_GM:
--	chipname = "Intel Integrated Graphics Device";
--	break;
-+    case PCI_CHIP_GM45_GM:
-+        chipname = "Mobile Intel\302\256 GM45 Express Chipset";
-+        break;
-+    case PCI_CHIP_IGD_E_G:
-+        chipname = "Intel Integrated Graphics Device";
-+        break;
-+    case PCI_CHIP_G45_G:
-+        chipname = "G45/G43";
-+        break;
-+    case PCI_CHIP_Q45_G:
-+        chipname = "Q45/Q43";
-+        break;
-    default:
- 	chipname = "unknown chipset";
- 	break;
-@@ -2733,7 +2752,7 @@
- 
-    /* Enable FB compression if possible */
-    if (i830_fb_compression_supported(pI830) && !IS_I965GM(pI830)
--	   && !IS_IGD_GM(pI830))
-+	   && !IS_GM45(pI830))
-        pI830->fb_compression = TRUE;
-    else
-        pI830->fb_compression = FALSE;
-@@ -2844,7 +2863,7 @@
- 		    "needs 2D acceleration.\n");
- 	 pI830->XvEnabled = FALSE;
-       }
--      if (!IS_IGD_GM(pI830) && pI830->overlay_regs == NULL) {
-+      if (!IS_GM45(pI830) && pI830->overlay_regs == NULL) {
- 	  xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
- 		     "Disabling Xv because the overlay register buffer "
- 		      "allocation failed.\n");
-@@ -2884,7 +2903,7 @@
-     *       alone in that case.
-     * Also make sure the DRM can handle the swap.
-     */
--   if (I830LVDSPresent(pScrn) && !IS_I965GM(pI830) && !IS_IGD_GM(pI830) &&
-+   if (I830LVDSPresent(pScrn) && !IS_I965GM(pI830) && !IS_GM45(pI830) &&
-        (!pI830->directRenderingEnabled ||
- 	(pI830->directRenderingEnabled && pI830->drmMinor >= 10))) {
-        xf86DrvMsg(pScrn->scrnIndex, X_INFO, "adjusting plane->pipe mappings "
---- src/i830_video.c	Mon Oct 13 08:42:13 2008
-+++ src/i830_video.c	Mon Oct 13 08:57:59 2008
-@@ -620,7 +620,7 @@
-     }
- 
-     /* Set up overlay video if we can do it at this depth. */
--    if (!IS_IGD_GM(pI830) && pScrn->bitsPerPixel != 8 &&
-+    if (!IS_GM45(pI830) && pScrn->bitsPerPixel != 8 &&
- 	    pI830->overlay_regs != NULL)
-     {
- 	overlayAdaptor = I830SetupImageVideoOverlay(pScreen);
---- src/i965_render.c	Mon Oct 13 08:42:24 2008
-+++ src/i965_render.c	Mon Oct 13 08:58:45 2008
-@@ -983,7 +983,7 @@
-         BEGIN_BATCH(12);
- 
-         /* Match Mesa driver setup */
--	if (IS_IGD_GM(pI830))
-+	if (IS_GM45(pI830) || IS_G4X(pI830))
- 	    OUT_BATCH(NEW_PIPELINE_SELECT | PIPELINE_SELECT_3D);
- 	else
- 	    OUT_BATCH(BRW_PIPELINE_SELECT | PIPELINE_SELECT_3D);
---- src/i965_video.c	Mon Oct 13 08:42:30 2008
-+++ src/i965_video.c	Mon Oct 13 08:59:11 2008
-@@ -509,7 +509,7 @@
-     {
- 	BEGIN_BATCH(12);
- 	/* Match Mesa driver setup */
--	if (IS_IGD_GM(pI830))
-+	if (IS_GM45(pI830) || IS_G4X(pI830))
- 	    OUT_BATCH(NEW_PIPELINE_SELECT | PIPELINE_SELECT_3D);
- 	else
- 	    OUT_BATCH(BRW_PIPELINE_SELECT | PIPELINE_SELECT_3D);
---- src/common.h	Mon Oct 13 08:41:37 2008
-+++ src/common.h	Mon Oct 13 09:01:35 2008
-@@ -303,11 +303,26 @@
- #define PCI_CHIP_Q33_G_BRIDGE 	0x29D0
- #endif
- 
--#ifndef PCI_CHIP_IGD_GM
--#define PCI_CHIP_IGD_GM		0x2A42
--#define PCI_CHIP_IGD_GM_BRIDGE  0x2A40
-+#ifndef PCI_CHIP_GM45_GM
-+#define PCI_CHIP_GM45_GM        0x2A42
-+#define PCI_CHIP_GM45_BRIDGE    0x2A40
- #endif
- 
-+#ifndef PCI_CHIP_IGD_E_G
-+#define PCI_CHIP_IGD_E_G        0x2E02
-+#define PCI_CHIP_IGD_E_G_BRIDGE 0x2E00
-+#endif
-+
-+#ifndef PCI_CHIP_G45_G
-+#define PCI_CHIP_G45_G          0x2E22
-+#define PCI_CHIP_G45_G_BRIDGE   0x2E20
-+#endif
-+
-+#ifndef PCI_CHIP_Q45_G
-+#define PCI_CHIP_Q45_G          0x2E12
-+#define PCI_CHIP_Q45_G_BRIDGE   0x2E10
-+#endif
-+
- #if XSERVER_LIBPCIACCESS
- #define I810_MEMBASE(p,n) (p)->regions[(n)].base_addr
- #define VENDOR_ID(p)      (p)->vendor_id
-@@ -339,20 +354,27 @@
- #define IS_I915GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I915_GM)
- #define IS_I945G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I945_G)
- #define IS_I945GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I945_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I945_GME)
--#define IS_IGD_GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_GM)
-+#define IS_GM45(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_GM45_GM)
-+#define IS_G4X(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_E_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G45_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q45_G)
- #define IS_I965GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME)
--#define IS_I965G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G35_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_Q || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I946_GZ || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME || IS_IGD_GM(pI810))
-+#define IS_I965G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G35_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_Q || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I946_GZ || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME || IS_GM45(pI810) || IS_G4X(pI810))
- #define IS_G33CLASS(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G33_G ||\
-  			    DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q35_G ||\
-  			    DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q33_G)
- #define IS_I9XX(pI810) (IS_I915G(pI810) || IS_I915GM(pI810) || IS_I945G(pI810) || IS_I945GM(pI810) || IS_I965G(pI810) || IS_G33CLASS(pI810))
- 
--#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810) || IS_I945GM(pI810) || IS_I965GM(pI810) || IS_IGD_GM(pI810))
-+#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810) || IS_I945GM(pI810) || IS_I965GM(pI810) || IS_GM45(pI810))
- /* mark chipsets for using gfx VM offset for overlay */
- #define OVERLAY_NOPHYSICAL(pI810) (IS_G33CLASS(pI810) || IS_I965G(pI810))
- /* chipsets require graphics mem for hardware status page */
--#define HWS_NEED_GFX(pI810) (IS_G33CLASS(pI810) || IS_IGD_GM(pI810))
-+#define HWS_NEED_GFX(pI810) (IS_G33CLASS(pI810) || IS_GM45(pI810) || IS_G4X(pI810))
- 
-+#define OVERLAY_NOEXIST(pI810) (IS_GM45(pI810) || IS_G4X(pI810))
-+#define HWS_NEED_GFX(pI810) (IS_G33CLASS(pI810) || IS_GM45(pI810) || IS_G4X(pI810))
-+#define HWS_NEED_NONSTOLEN(pI810) (IS_GM45(pI810) || IS_G4X(pI810))
-+#define SUPPORTS_INTEGRATED_HDMI(pI810) (IS_GM45(pI810) || IS_G4X(pI810))
-+#define DSPARB_HWCONTROL(pI810) (IS_G4X(pI810) || IS_GM45(pI810))
-+
- #define GTT_PAGE_SIZE			KB(4)
- #define ROUND_TO(x, y)			(((x) + (y) - 1) / (y) * (y))
- #define ROUND_DOWN_TO(x, y)		((x) / (y) * (y))
---- src/i830_lvds.c	Mon Oct 13 08:51:50 2008
-+++ src/i830_lvds.c	Mon Oct 13 13:37:11 2008
-@@ -129,7 +129,7 @@
- 
-     if (i830_kernel_backlight_available(output)) {
- 	    method = BCM_KERNEL;
--    } else if (IS_I965GM(pI830) || IS_IGD_GM(pI830)) {
-+    } else if (IS_I965GM(pI830) || IS_GM45(pI830)) {
- 	blc_pwm_ctl2 = INREG(BLC_PWM_CTL2);
- 	if (blc_pwm_ctl2 & BLM_LEGACY_MODE2)
- 	    method = BCM_COMBO;
-@@ -177,7 +177,7 @@
-     uint32_t pwm_ctl = INREG(BLC_PWM_CTL);
-     int val;
- 
--    if (IS_I965GM(pI830) || IS_IGD_GM(pI830)) {
-+    if (IS_I965GM(pI830) || IS_GM45(pI830)) {
- 	val = ((pwm_ctl & BACKLIGHT_MODULATION_FREQ_MASK2) >>
- 	       BACKLIGHT_MODULATION_FREQ_SHIFT2);
-     } else {
-@@ -440,7 +440,7 @@
-     ScrnInfoPtr		    pScrn = output->scrn;
-     I830Ptr		    pI830 = I830PTR(pScrn);
- 
--    if (IS_I965GM(pI830) || IS_IGD_GM(pI830))
-+    if (IS_I965GM(pI830) || IS_GM45(pI830))
- 	pI830->saveBLC_PWM_CTL2 = INREG(BLC_PWM_CTL2);
-     pI830->savePP_ON = INREG(LVDSPP_ON);
-     pI830->savePP_OFF = INREG(LVDSPP_OFF);
-@@ -456,7 +456,7 @@
-     ScrnInfoPtr	pScrn = output->scrn;
-     I830Ptr	pI830 = I830PTR(pScrn);
- 
--    if (IS_I965GM(pI830) || IS_IGD_GM(pI830))
-+    if (IS_I965GM(pI830) || IS_GM45(pI830))
- 	OUTREG(BLC_PWM_CTL2, pI830->saveBLC_PWM_CTL2);
-     OUTREG(BLC_PWM_CTL, pI830->saveBLC_PWM_CTL);
-     OUTREG(LVDSPP_ON, pI830->savePP_ON);
-@@ -1305,7 +1305,7 @@
- 	}  else {
- 	    dev_priv->panel_fixed_mode = bios_mode;
- 	}
--    } else {
-+    } else if (!dev_priv->panel_fixed_mode) {
- 	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
- 		   "Couldn't detect panel mode.  Disabling panel\n");
- 	goto disable_exit;
--- a/open-src/driver/xf86-video-intel/libraries.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-intel/libraries.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,31 +1,22 @@
---- src/Makefile.am	Fri May 18 16:11:28 2007
-+++ src/Makefile.am	Mon May 21 10:53:07 2007
-@@ -34,7 +34,9 @@
- 	-DI830_XV -DI830_USE_XAA -DI830_USE_EXA
+diff -urp -x '*~' -x '*.orig' src/Makefile.am src/Makefile.am
+--- src/Makefile.am	2008-08-25 18:25:53.000000000 -0700
++++ src/Makefile.am	2009-01-10 20:01:41.033942000 -0800
+@@ -34,7 +34,9 @@ AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ 
+ 	@XMODES_CFLAGS@ -DI830_XV -DI830_USE_XAA -DI830_USE_EXA
  
  intel_drv_la_LTLIBRARIES = intel_drv.la
 -intel_drv_la_LDFLAGS = -module -avoid-version
 +intel_drv_la_LDFLAGS = -module -avoid-version \
-+	-ldrm -lfb -lint10 -lshadow -lshadowfb \
++	-ldrm -lfb -lint10 -lpciaccess -lshadow -lshadowfb \
 +	-lvbe -lvgahw -lxaa -lexa -ldri -lglx -lm
  intel_drv_ladir = @moduledir@/drivers
- 
- XMODE_SRCS=\
---- src/xvmc/Makefile.am	2007-05-18 16:24:27.389284000 +0800
-+++ src/xvmc/Makefile.am	2007-05-18 16:35:43.860267000 +0800
-@@ -5,6 +5,7 @@
- 
- libI810XvMC_la_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRI_CFLAGS@ \
- 	-I$(top_srcdir)/src -DTRUE=1 -DFALSE=0
--libI810XvMC_la_LDFLAGS = -version-number 1:0:0
-+libI810XvMC_la_LDFLAGS = -version-number 1:0:0 \
-+	-lXvMC -lXv -lX11 -ldrm
- libI810XvMC_la_LIBADD = @DRI_LIBS@ 
- endif
---- src/ch7017/Makefile.am	Mon May 21 11:06:12 2007
-+++ src/ch7017/Makefile.am	Mon May 21 11:06:27 2007
-@@ -6,7 +6,9 @@
- AM_CFLAGS = @WARN_CFLAGS@ @XMODES_CFLAGS@ @XORG_CFLAGS@ @DRI_CFLAGS@
+ intel_drv_la_LIBADD =
+ if XSERVER_LIBPCIACCESS
+diff -urp -x '*~' -x '*.orig' src/ch7017/Makefile.am src/ch7017/Makefile.am
+--- src/ch7017/Makefile.am	2008-07-22 23:14:09.000000000 -0700
++++ src/ch7017/Makefile.am	2009-01-10 20:01:41.042690000 -0800
+@@ -7,7 +7,9 @@ AM_CFLAGS = @WARN_CFLAGS@ @XMODES_CFLAGS
+ 	@PCIACCESS_CFLAGS@
  
  ch7017_la_LTLIBRARIES = ch7017.la
 -ch7017_la_LDFLAGS = -module -avoid-version
@@ -35,3 +26,16 @@
  ch7017_ladir = @moduledir@/drivers
  
  ch7017_la_SOURCES = \
+diff -urp -x '*~' -x '*.orig' src/xvmc/Makefile.am src/xvmc/Makefile.am
+--- src/xvmc/Makefile.am	2008-08-25 18:25:53.000000000 -0700
++++ src/xvmc/Makefile.am	2009-01-10 20:01:41.036760000 -0800
+@@ -6,7 +6,8 @@ libI810XvMC_la_SOURCES = I810XvMC.c \
+ 
+ libI810XvMC_la_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRI_CFLAGS@ \
+ 	-I$(top_srcdir)/src -DTRUE=1 -DFALSE=0
+-libI810XvMC_la_LDFLAGS = -version-number 1:0:0
++libI810XvMC_la_LDFLAGS = -version-number 1:0:0 \
++	-lXvMC -lXv -lX11 -ldrm
+ libI810XvMC_la_LIBADD = @DRI_LIBS@ 
+ 
+ libIntelXvMC_la_SOURCES = intel_xvmc.c \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-mach64/6205248.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,52 @@
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+# Use subject to license terms.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+# 
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+
+Change needed to resume from S3 suspend on Rage XL chipset in Ultra 20.
+https://bugs.freedesktop.org/show_bug.cgi?id=6829
+
+diff -urp -x '*~' -x '*.orig' src/aticonsole.c src/aticonsole.c
+--- src/aticonsole.c	2008-03-25 23:09:43.000000000 -0700
++++ src/aticonsole.c	2009-01-12 18:24:36.680149000 -0800
+@@ -514,6 +514,16 @@ ATIEnterGraphics
+     ATIPtr      pATI
+ )
+ {
++    CARD32 PciReg;
++    pciVideoPtr pVideo = pATI->PCIInfo;
++
++/*
++* Possibly fix block I/O indicator in PCI configuration space.
++*/
++    PCI_READ_LONG(pVideo, &PciReg, PCI_REG_USERCONFIG);
++    if (!(PciReg & 0x00000004U))
++	PCI_WRITE_LONG(pVideo, (PciReg | 0x00000004U), PCI_REG_USERCONFIG);
++
+     /* Map apertures */
+     if (!ATIMapApertures(pScreenInfo->scrnIndex, pATI))
+         return FALSE;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-mach64/COPYING	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,128 @@
+ * Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), [email protected]
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of Marc Aurele La France not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  Marc Aurele La France makes no representations
+ * about the suitability of this software for any purpose.  It is provided
+ * "as-is" without express or implied warranty.
+ *
+ * MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO
+ * EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ 
+
+ * Copyright 1999-2000 Precision Insight, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
+ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+
+
+ * Copyright 2000 Gareth Hughes
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * GARETH HUGHES BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ 
+
+ * Copyright 2006 George Sapountzis
+ * All Rights Reserved.
+ *
+ * Based on the mach64 DRI and DRM drivers:
+ * Copyright 2000 Gareth Hughes
+ * Copyright 2002-2003 Leif Delgass
+ * All Rights Reserved.
+ *
+ * Based on the ati hw/kdrive driver:
+ * Copyright 2003 Eric Anholt, Anders Carlsson
+ *
+ * Based on the via hw/xfree86 driver:
+ * Copyright 2006 Thomas Hellstrom. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Authors:
+ *    George Sapountzis <[email protected]>
+ 
+
+ * Copyright (c) 1995-2003 by The XFree86 Project, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of the copyright holder(s)
+ * and author(s) shall not be used in advertising or otherwise to promote
+ * the sale, use or other dealings in this Software without prior written
+ * authorization from the copyright holder(s) and author(s).
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-mach64/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,66 @@
+###############################################################################
+#
+# xf86-video-mach64 1.x Makefile
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+# Use subject to license terms.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+# 
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+# @(#)Makefile	1.1	09/01/14
+#
+
+# Package name used in tarballs
+MODULE_NAME=xf86-video-mach64
+
+# Version number (used in path names)
+MODULE_VERSION=6.8.0
+
+# Patches to apply to source after unpacking, in order
+SOURCE_PATCHES = 6205248.patch  
+
+# Man pages to apply Sun footer to & attributes to list
+#SUNTOUCHED_MANPAGES=man/*.man
+SUN_PACKAGE=SUNWxorg-graphics-ddx
+MODULE_STABILITY=Volatile
+
+# Extra flags to pass to configure script
+# - Disable DRI since the kernel module isn't ported
+MODULE_CONFIG_OPTS=--disable-dri
+
+# Paths to find libraries/modules to link with
+MODULE_LD_OPTIONS= \
+	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
+	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
+	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
+	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
+	-lexa -lint10 -lpciaccess -lfb -lshadowfb -lvbe -lxaa
+
+include ../Makefile.inc
+
+install_gen::
+	mkdir -p $(PROTODIR)$(X11_DOC_DIR)
+	cp -p $(SOURCE_DIR)/README.ati $(PROTODIR)$(X11_DOC_DIR)/
--- a/open-src/driver/xf86-video-mga/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-mga/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-video-mga Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.11	08/08/08
+# @(#)Makefile	1.12	09/01/14
 #
 
 # Package name used in tarballs
@@ -47,6 +47,10 @@
 SUN_PACKAGE=SUNWxorg-graphics-ddx
 MODULE_STABILITY=Volatile
 
+# Extra flags to pass to configure script
+# - Disable DRI since the kernel module isn't ported
+MODULE_CONFIG_OPTS=--disable-dri
+
 # Libraries/modules to link with
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
@@ -55,7 +59,7 @@
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)/linux$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lexa -lfb -lint10 -lshadowfb -lvbe \
+	-lexa -lfb -lint10 -lpciaccess -lshadowfb -lvbe \
 	-lvgahw -lxaa -lxf8_32bpp -lcfb -lmfb -lfbdevhw
 
 AUTORECONF=yes
--- a/open-src/driver/xf86-video-neomagic/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-neomagic/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.6	08/08/08
+# @(#)Makefile	1.7	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-neomagic
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.1
+MODULE_VERSION=1.2.2
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -51,7 +51,7 @@
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-lfb -lint10 -lshadow -lvbe -lvgahw -lxaa
+	-lfb -lint10 -lpciaccess -lshadow -lvbe -lvgahw -lxaa
 
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-nsc/COPYING	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4069 +0,0 @@
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- *
- * This file contains routines for the first generation display controller.  
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
- * $Workfile: disp_gu2.c $
- *
- * This file contains routines for the second generation display controller.  
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
- * $Workfile: durango.c $
- *
- * This is the main file used to add Durango graphics support to a software 
- * project.  The main reason to have a single file include the other files
- * is that it centralizes the location of the compiler options.  This file
- * should be tuned for a specific implementation, and then modified as needed
- * for new Durango releases.  The releases.txt file indicates any updates to
- * this main file, such as a new definition for a new hardware platform. 
- *
- * In other words, this file should be copied from the Durango source files
- * once when a software project starts, and then maintained as necessary.  
- * It should not be recopied with new versions of Durango unless the 
- * developer is willing to tune the file again for the specific project.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_dcdr.c $
- *
- * This file contains routines to control the video decoder.
- * 
- *    gfx_set_decoder_defaults
- *    gfx_set_decoder_analog_input
- *    gfx_set_decoder_brightness
- *    gfx_set_decoder_contrast	
- *    gfx_set_decoder_luminance_filter
- *    gfx_set_decoder_hue
- *    gfx_set_decoder_saturation
- *    gfx_set_decoder_input_offset
- *    gfx_set_decoder_input_size
- *    gfx_set_decoder_output_size
- *    gfx_set_decoder_scale
- *    gfx_set_decoder_TV_standard
- *    gfx_set_decoder_vbi_enable
- *    gfx_set_decoder_vbi_format
- *    gfx_set_decoder_vbi_upscale
- *    gfx_decoder_software_reset
- *    gfx_decoder_detect_macrovision
- *    gfx_decoder_detect_video
- *
- * And the following routines if GFX_READ_ROUTINES is set:
- *
- *    gfx_get_decoder_brightness
- *    gfx_get_decoder_contrast
- *    gfx_get_decoder_hue
- *    gfx_get_decoder_saturation
- *    gfx_get_decoder_input_offset
- *    gfx_get_decoder_input_size
- *    gfx_get_decoder_output_size
- *    gfx_get_decoder_vbi_format
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
- * $Workfile: gfx_defs.h $
- *
- * This header file contains the macros used to access the hardware.  These
- * macros assume that 32-bit access is possible, which is true for most 
- * applications.  Projects using 16-bit compilers (the Windows98 display
- * driver) and special purpose applications (such as Darwin) need to define 
- * their own versions of these macros, which typically call a subroutine.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
- * $Workfile: gfx_disp.c $
- *
- * This file contains routines to program the display controller.  
- *
- * The "disp_gu1.c" and "disp_gu2.c" files implement the following routines:
- *
- *    gfx_get_display_mode_count
- *    gfx_get_display_mode
- *    gfx_is_display_mode_supported
- *    gfx_get_display_details
- *    gfx_set_display_mode
- *    gfx_set_display_bpp
- *	  gfx_set_display_timings
- *    gfx_set_vtotal
- *    gfx_get_display_pitch
- *    gfx_set_display_pitch
- *    gfx_set_display_offset
- *    gfx_set_display_palette
- *    gfx_set_display_palette_entry
- *    gfx_set_cursor_enable
- *    gfx_set_cursor_colors
- *    gfx_set_cursor_position
- *	  gfx_set_cursor_shape32
- *	  gfx_set_cursor_shape64
- *    gfx_set_icon_enable
- *    gfx_set_icon_colors
- *    gfx_set_icon_position
- *    gfx_set_icon_shape64
- *    gfx_set_compression_enable
- *    gfx_set_compression_offset
- *    gfx_set_compression_pitch
- *    gfx_set_compression_size
- *    gfx_set_display_priority_high
- *    gfx_test_timing_active
- *    gfx_test_vertical_active
- *    gfx_wait_vertical_blank
- *    gfx_reset_timing_lock
- *
- * And the following routines if GFX_READ_ROUTINES is set:
- *	
- *	  gfx_get_hactive
- *    gfx_get_hblank_start
- *    gfx_get_hsync_start
- *    gfx_get_hsync_end
- *    gfx_get_hblank_end
- *    gfx_get_htotal
- *    gfx_get_vactive
- *    gfx_get_vblank_start
- *    gfx_get_vsync_start
- *    gfx_get_vsync_end
- *    gfx_get_vblank_end
- *    gfx_get_vtotal
- *    gfx_get_vline
- *    gfx_get_display_bpp
- *    gfx_get_display_offset
- *    gfx_get_display_palette
- *    gfx_get_cursor_enable
- *    gfx_get_cursor_base
- *    gfx_get_cursor_position
- *    gfx_get_cursor_offset
- *    gfx_get_cursor_color
- *    gfx_get_icon_enable
- *    gfx_get_icon_color
- *    gfx_get_icon_offset
- *    gfx_get_icon_position
- *    gfx_get_compression_enable
- *    gfx_get_compression_offset
- *    gfx_get_compression_pitch
- *    gfx_get_compression_size
- *    gfx_get_display_priority_high
- *    gfx_get_valid_bit
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_i2c.c $
- *
- * This file contains routines to write to and read from the I2C bus.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_init.c $
- *
- * This file contains routines typically used in driver initialization.
- *
- * Routines:
- * 
- *       gfx_pci_config_read
- *       gfx_cpu_config_read
- *       gfx_detect_cpu
- *       gfx_detect_video
- *       gfx_get_cpu_register_base
- *       gfx_get_frame_buffer_base
- *       gfx_get_frame_buffer_size
- *       gfx_get_vid_register_base
- *       gfx_get_vip_register_base
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_mode.h $
- *
- * This header file contains the mode tables.  It is used by the "gfx_disp.c" 
- * file to set a display mode.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_msr.c $
- *
- * This file contains routines to read machine-specific registers (MSRs)
- *
- * Routines:
- * 
- *       gfx_msr_init
- *       gfx_id_msr_device
- *       gfx_get_msr_dev_address
- *       gfx_get_glink_id_at_address
- *       gfx_msr_read
- *       gfx_msr_write
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_regs.h $
- *
- * This header file contains the graphics register definitions.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_rndr.c $
- *
- * This file contains routines to program the 2D acceleration hardware:
- * 
- *    gfx_set_bpp
- *    gfx_set_solid_pattern
- *    gfx_set_mono_pattern
- *    gfx_set_color_pattern
- *    gfx_load_color_pattern_line
- *    gfx_set_solid_source  
- *    gfx_set_mono_source
- *    gfx_set_raster_operation
- *    gfx_pattern_fill
- *    gfx_color_pattern_fill
- *    gfx_screen_to_screen_blt
- *    gfx_screen_to_screen_xblt
- *    gfx_color_bitmap_to_screen_blt
- *    gfx_color_bitmap_to_screen_xblt
- *    gfx_mono_bitmap_to_screen_blt
- *    gfx_bresenham_line 
- *    gfx_wait_until_idle   
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_rtns.h $
- *
- * This header file defines the Durango routines and variables used
- * to access the memory mapped regions.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_tv.c $
- *
- * This file contains routines to program TVOUT and TV encoder. 
- *
- * Routines:
- * 
- *    gfx_set_tv_format
- *    gfx_set_tv_output
- *    gfx_set_tv_enable
- *    gfx_set_tv_flicker_filter
- *    gfx_set_tv_sub_carrier_reset
- *    gfx_set_tv_vphase
- *    gfx_set_tv_YC_delay
- *    gfx_set_tvenc_reset_interval
- *    gfx_set_tv_cc_enable
- *    gfx_set_tv_cc_data
- *    gfx_test_tvout_odd_field
- *    gfx_test_tvenc_odd_field
- *    gfx_set_tv_field_status_invert
- *    gfx_get_tv_vphase
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_type.h $
- *
- * This header file defines the pneumonics used when calling Durango routines. 
- * This file is automatically included by gfx_rtns.h
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_vga.c $
- *
- * This file contains routines to interface to the VGA registers.  Some
- * operating systems require mode sets be done through VGA, rather than
- * directly using the "gfx_set_display_mode" routine.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_vid.c $
- *
- * This file contains routines to control the video overlay window.
- *
- * Video overlay routines:
- * 
- *    gfx_set_clock_frequency
- *    gfx_set_crt_enable
- *    gfx_set_video_enable
- *    gfx_set_video_format
- *    gfx_set_video_size
- *    gfx_set_video_offset
- *    gfx_set_video_yuv_offsets
- *    gfx_set_video_yuv_pitch
- *    gfx_set_video_scale
- *    gfx_set_video_upscale
- *    gfx_set_video_downscale_config
- *    gfx_set_video_downscale_coefficients
- *    gfx_set_video_downscale_enable
- *    gfx_set_video_vertical_downscale
- *    gfx_set_video_vertical_downscale_enable
- *    gfx_set_video_window
- *    gfx_set_video_left_crop
- *    gfx_set_video_color_key
- *    gfx_set_video_filter
- *    gfx_set_video_palette
- *    gfx_set_video_request
- *    gfx_set_video_source
- *    gfx_set_vbi_source
- *    gfx_set_vbi_lines
- *    gfx_set_vbi_total
- *    gfx_set_video_interlaced
- *    gfx_set_color_space_YUV
- *    gfx_set_vertical_scaler_offset
- *    gfx_set_top_line_in_odd
- *    gfx_set_genlock_delay
- *    gfx_set_genlock_enable
- *    gfx_set_video_cursor
- *    gfx_set_video_cursor_enable
- * 
- * Alpha blending routines (SC1200 ONLY):
- *
- *    gfx_select_alpha_region
- *	  gfx_set_alpha_enable
- *	  gfx_set_alpha_window
- *    gfx_set_alpha_value
- *    gfx_set_alpha_priority
- *    gfx_set_alpha_color
- *    gfx_set_alpha_color_enable
- *    gfx_set_no_ck_outside_alpha
- *    gfx_test_tvout_odd_field
- *
- * And the following routines if GFX_READ_ROUTINES is set:
- *
- *    gfx_get_sync_polarities
- *    gfx_get_video_enable
- *    gfx_get_video_format
- *    gfx_get_video_src_size
- *    gfx_get_video_line_size
- *    gfx_get_video_xclip
- *    gfx_get_video_offset
- *    gfx_get_video_yuv_offsets
- *    gfx_get_video_yuv_pitch
- *    gfx_get_video_scale
- *    gfx_get_video_upscale
- *    gfx_get_video_downscale_config
- *    gfx_get_video_downscale_coefficients
- *    gfx_get_video_downscale_enable
- *    gfx_get_video_downscale_delta
- *    gfx_get_video_vertical_downscale_enable
- *    gfx_get_video_dst_size
- *    gfx_get_video_position
- *    gfx_get_video_color_key
- *    gfx_get_video_color_key_mask
- *    gfx_get_video_color_key_src
- *    gfx_get_video_filter
- *    gfx_get_video_request
- *    gfx_get_video_source
- *    gfx_get_vbi_source
- *    gfx_get_vbi_lines
- *    gfx_get_vbi_total
- *    gfx_get_video_interlaced
- *    gfx_get_color_space_YUV
- *    gfx_get_vertical_scaler_offset
- *    gfx_get_genlock_delay
- *    gfx_get_genlock_enable
- *    gfx_get_video_cursor
- *    gfx_get_clock_frequency
- *    gfx_read_crc
- *
- * Alpha blending read routines (SC1200 ONLY):
- *
- *    gfx_get_alpha_enable
- *    gfx_get_alpha_size
- *    gfx_get_alpha_value
- *    gfx_get_alpha_priority
- *    gfx_get_alpha_color
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gfx_vip.c $
- *
- * This file contains routines to control the video input port (VIP).
- * 
- *    gfx_set_vip_enable
- *    gfx_set_vip_capture_run_mode
- *    gfx_set_vip_base
- *    gfx_set_vip_pitch
- *    gfx_set_vip_mode
- *    gfx_set_vbi_enable
- *    gfx_set_vbi_mode
- *    gfx_set_vbi_base
- *    gfx_set_vbi_pitch
- *    gfx_set_vbi_direct
- *    gfx_set_vbi_interrupt
- *    gfx_set_vip_bus_request_threshold_high
- *    gfx_set_vip_last_line
- *    gfx_test_vip_odd_field
- *    gfx_test_vip_bases_updated
- *    gfx_test_vip_fifo_overflow
- *    gfx_get_vip_line
- *    gfx_get_vip_base
- *    gfx_get_vbi_pitch
- *
- * And the following routines if GFX_READ_ROUTINES is set:
- *
- *    gfx_get_vip_enable
- *    gfx_get_vip_pitch
- *    gfx_get_vip_mode
- *    gfx_get_vbi_enable
- *    gfx_get_vbi_mode
- *    gfx_get_vbi_base
- *    gfx_get_vbi_direct
- *    gfx_get_vbi_interrupt
- *    gfx_get_vip_bus_request_threshold_high
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: history.h $
- *
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: i2c_acc.c $
- *
- * This file contains routines to write to and read from the I2C bus using
- * the ACCESS.bus hardware in the SC1200. 
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: i2c_gpio.c $
- *
- * This file contains routines to write to and read from the I2C bus using
- * the GPIO pins of the CS5530.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: init_gu1.c $
- *
- * This file contains routines used in the initialization of Geode-family 
- * processors.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: init_gu2.c $
- *
- * This file contains routines used in Redcloud initialization.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: msr_rdcl.c $
- *
- * This file contains MSR access routines for Redcloud.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: rndr_gu1.c $
- *
- * This file contains routines to program the 2D acceleration hardware for
- * the first generation graphics unit (GXLV, SC1200).
- * 
- *    gfx_set_bpp            
- *    gfx_set_solid_pattern  
- *    gfx_set_mono_pattern
- *    gfx_set_color_pattern
- *    gfx_set_solid_source  
- *    gfx_set_mono_source
- *    gfx_set_raster_operation
- *    gfx_pattern_fill
- *    gfx_screen_to_screen_blt
- *    gfx_screen_to_screen_xblt
- *    gfx_color_bitmap_to_screen_blt
- *    gfx_color_bitmap_to_screen_xblt
- *    gfx_mono_bitmap_to_screen_blt
- *    gfx_bresenham_line 
- *    gfx_wait_until_idle   
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: rndr_gu2.c $
- *
- * This file contains routines to program the 2D acceleration hardware for
- * the second generation graphics unit.
- * 
- * Basic rendering routines (common to all Geode processors):
- *    gfx_set_bpp           
- *    gfx_set_solid_pattern  
- *    gfx_set_mono_pattern
- *    gfx_set_color_pattern
- *    gfx_set_solid_source  
- *    gfx_set_mono_source
- *    gfx_set_raster_operation
- *    gfx_pattern_fill
- *    gfx_color_pattern_fill
- *    gfx_screen_to_screen_blt
- *    gfx_screen_to_screen_xblt
- *    gfx_color_bitmap_to_screen_blt
- *    gfx_color_bitmap_to_screen_xblt
- *    gfx_mono_bitmap_to_screen_blt
- *    gfx_bresenham_line 
- *    gfx_wait_until_idle   
- *
- * Extended rendering routines for second generation functionality:
- *    gfx2_set_source_stride
- *    gfx2_set_destination_stride
- *    gfx2_set_pattern_origins
- *    gfx2_set_source_transparency
- *    gfx2_set_alpha_mode
- *    gfx2_set_alpha_value
- *    gfx2_pattern_fill
- *    gfx2_color_pattern_fill
- *    gfx2_screen_to_screen_blt
- *    gfx2_mono_expand_blt
- *    gfx2_color_bitmap_to_screen_blt
- *    gfx2_mono_bitmap_to_screen_blt
- *    gfx2_bresenham_line
- *    gfx2_sync_to_vblank
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: saa7114.c $
- *
- * This file contains routines to control the Philips SAA7114 video decoder.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: tv_1200.c $
- *
- * This file contains routines to control the SC1200 TVOUT and TV encoder.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: tv_fs450.c $
- *
- * This file contains routines to control the FS450 tvout encoder.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: tv_fs450.h $
- *
- * This file defines the common FS450 API.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: tv_fs451.c $
- * $Revision$
- *
- * This file contains routines to control the FS451 tvout encoder.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
------------------------------------------------------------------------------
- * TV_GEODE.C
- *
- * Version 1.20 - February 9, 2000
- *
- * This file contains routines to program the TV encoder when it is 
- * integrated onto a Geode processor.
- *
- * History:
- *    Initial version ported from code by Ilia Stolov.
- *    Versions 0.1 through 1.20 by Brian Falardeau.
- *
- * Copyright (c) 1999-2000 National Semiconductor.
- *-----------------------------------------------------------------------------
- 
-
- * $Workfile: vga_gu1.c $
- *
- * This file contains routines to set modes using the VGA registers.  
- * Since this file is for the first generation graphics unit, it interfaces
- * to SoftVGA registers.  It works for both VSA1 and VSA2.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: vid_1200.c $
- *
- * This file contains routines to control the SC1200 video overlay hardware.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
------------------------------------------------------------------------------
- * VID_1400.C
- *
- * Version 2.0 - February 21, 2000
- *
- * This file contains routines to control the SC1400 video overlay hardware.
- *
- * History:
- *    Versions 0.1 through 2.0 by Brian Falardeau.
- *
- * Copyright (c) 1999-2000 National Semiconductor.
- *-----------------------------------------------------------------------------
- 
-
- * $Workfile: vid_5530.c $
- *
- * This file contains routines to control the CS5530 video overlay hardware.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: vid_rdcl.c $
- *
- * This file contains routines to control the Redcloud display filter video overlay hardware.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: vip_1200.c $
- *
- * This file contains routines to control the SC1200 video input port (VIP) hardware.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
------------------------------------------------------------------------------
- * VIP_1400.C
- *
- * Version 2.0 - February 21, 2000.
- *
- * This file routines to control the SC1400 video input port (VIP) hardware.
- *
- * History:
- *    Versions 0.1 through 2.0 by Brian Falardeau.
- *
- * Copyright (c) 1999-2000 National Semiconductor.
- *-----------------------------------------------------------------------------
- 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Geode frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
-
- * $Workfile: nsc_gx2_vga.c $
- * $Revision$
- * $Author$
- *
- * This file contains routines to set modes using the VGA registers.  
- * Since this file is for the first generation graphics unit, it interfaces
- * to SoftVGA registers.  It works for both VSA1 and VSA2.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      nsc XFree86
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * National Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Durango
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *     Geode graphics driver for panel support
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *     Geode graphics driver for panel support
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
-
- * $Workfile: gx2_9211.c $
- *
- * This header file defines the pneumonics used when calling Durango routines. 
- * This file is automatically included by gfx_rtns.h
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
-
- * $Workfile: gx2_9211.h $
- *
- * This header file defines the pneumonics used when calling Durango routines. 
- * This file is automatically included by gfx_rtns.h
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- *      Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- *   * Redistributions of source code must retain the above copyright 
- *     notice, this list of conditions and the following disclaimer. 
- *
- *   * Redistributions in binary form must reproduce the above 
- *     copyright notice, this list of conditions and the following 
- *     disclaimer in the documentation and/or other materials provided 
- *     with the distribution. 
- *
- *   * Neither the name of the National Semiconductor Corporation nor 
- *     the names of its contributors may be used to endorse or promote 
- *     products derived from this software without specific prior 
- *     written permission. 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY 
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF 
- * YOUR JURISDICTION. It is licensee's responsibility to comply with 
- * any export regulations applicable in licensee's jurisdiction. Under 
- * CURRENT (2001) U.S. export regulations this software 
- * is eligible for export from the U.S. and can be downloaded by or 
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed 
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran, 
- * Syria, Sudan, Afghanistan and any other country to which the U.S. 
- * has embargoed goods and services. 
- *
- * END_NSC_LIC_BSD 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
- 
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software 
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the 
- * Software is received by the Licensee.
- * 
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated 
- * NSC_LIC_GPL applies to this Software; in all other circumstances 
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE 
--- a/open-src/driver/xf86-video-nsc/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-###############################################################################
-#
-# xf86-video-nsc 1.x Makefile
-#
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-# @(#)Makefile	1.6	08/08/08
-#
-
-# Package name used in tarballs
-MODULE_NAME=xf86-video-nsc
-
-# Version number (used in path names)
-MODULE_VERSION=2.8.2
-
-# Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 
-
-# Man pages to apply Sun footer to & attributes to list
-SUNTOUCHED_MANPAGES=man/*.man
-SUN_PACKAGE=SUNWxorg-graphics-ddx
-MODULE_STABILITY=Volatile
-
-# Need to make sure cppflags are passed when assembling .S file to get the
-# right include path set to find the Xorg assyntax.h header.
-MODULE_CONFIG_ENV=CCASFLAGS='$$(CFLAGS) $$(CPPFLAGS)'
-
-# Need to add XFree86Server define to get symbols right
-# See https://bugs.freedesktop.org/show_bug.cgi?id=9588
-MODULE_CPPFLAGS=-DXFree86Server
-
-# Libraries/modules to link with
-MODULE_LD_OPTIONS= \
-	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa
-
-include ../Makefile.inc
--- a/open-src/driver/xf86-video-nv/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-nv/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.19	08/08/28
+# @(#)Makefile	1.20	09/01/10
 #
 
 # Package name used in tarballs
@@ -40,7 +40,7 @@
 MODULE_VERSION=2.1.12
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 
+SOURCE_PATCHES = pci-match.patch,-p1
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
@@ -53,7 +53,8 @@
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir)/linux \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)/linux$(SERVERMOD_subdir) \
-	-lexa -lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa -lfbdevhw -lm
+	-lexa -lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa -lfbdevhw -lm \
+	-L$(PROTODIR)/usr/lib -lpciaccess
 
 include ../Makefile.inc
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-nv/pci-match.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,68 @@
+From e387bf31aae78d4447b4af555a8d09f79f72e6e7 Mon Sep 17 00:00:00 2001
+From: Aaron Plattner <[email protected]>
+Date: Fri, 17 Oct 2008 20:45:18 -0700
+Subject: [PATCH] Only match PCI display devices in our display driver.
+
+Apparently the server needs the driver to tell it that no, we really don't want
+screen sections on our NIC, USB hubs, bridge devices, etc.
+
+Stop whining about PROBE_DETECT in G80 PreInit and just bail out instead.
+
+Bug #18099: Xorg -configure tries to create a screen for every nvidia device.
+---
+ src/g80_driver.c |    7 ++-----
+ src/nv_driver.c  |   19 +++++++++++++++----
+ 2 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/src/g80_driver.c b/src/g80_driver.c
+index 50d55a0..ad8a424 100644
+--- a/src/g80_driver.c
++++ b/src/g80_driver.c
+@@ -206,11 +206,8 @@ #endif
+     CARD32 tmp;
+     memType BAR1sizeKB;
+ 
+-    if(flags & PROBE_DETECT) {
+-        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+-                "G80 PROBE_DETECT unimplemented\n");
+-        return FALSE;
+-    }
++    if(flags & PROBE_DETECT)
++        return TRUE;
+ 
+     /* Check the number of entities, and fail if it isn't one. */
+     if(pScrn->numEntities != 1)
+diff --git a/src/nv_driver.c b/src/nv_driver.c
+index 831e90b..faf73a9 100644
+--- a/src/nv_driver.c
++++ b/src/nv_driver.c
+@@ -77,11 +77,22 @@ static Bool	NVModeInit(ScrnInfoPtr pScrn
+ static Bool	NVSetModeVBE(ScrnInfoPtr pScrn, DisplayModePtr pMode);
+ 
+ #if XSERVER_LIBPCIACCESS
+-/* For now, just match any NVIDIA PCI device and sort through them in the probe
+- * routine */
++/* For now, just match any NVIDIA display device and sort through them in the
++ * probe routine */
++
++/*
++ * libpciaccess's masks are shifted by 8 bits compared to the ones in xf86Pci.h.
++ */
++#define LIBPCIACCESS_CLASS_SHIFT (PCI_CLASS_SHIFT - 8)
++#define LIBPCIACCESS_CLASS_MASK (PCI_CLASS_MASK >> 8)
++
+ static const struct pci_id_match NVPciIdMatchList[] = {
+-    { PCI_VENDOR_NVIDIA, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0 },
+-    { PCI_VENDOR_NVIDIA_SGS, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0},
++    { PCI_VENDOR_NVIDIA, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
++      PCI_CLASS_DISPLAY << LIBPCIACCESS_CLASS_SHIFT, LIBPCIACCESS_CLASS_MASK, 0 },
++
++    { PCI_VENDOR_NVIDIA_SGS, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
++      PCI_CLASS_DISPLAY << LIBPCIACCESS_CLASS_SHIFT, LIBPCIACCESS_CLASS_MASK, 0 },
++
+     { 0, 0, 0 }
+ };
+ #endif
+-- 
+1.4.1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-openchrome/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,62 @@
+###############################################################################
+#
+# xf86-video-openchrome Makefile
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+# Use subject to license terms.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+# 
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+#
+
+# Package name used in tarballs
+MODULE_NAME=xf86-video-openchrome
+
+# Version number (used in path names)
+MODULE_VERSION=0.2.903
+
+# Patches to apply to source after unpacking, in order
+SOURCE_PATCHES = 
+
+# Man pages to apply Sun footer to & attributes to list
+SUNTOUCHED_MANPAGES=man/*.man
+SUN_PACKAGE=SUNWxorg-server
+MODULE_STABILITY=Volatile
+
+# Extra flags to pass to configure script
+# - Disable DRI since the kernel module isn't ported
+MODULE_CONFIG_OPTS=--disable-dri
+
+# Libraries/modules to link with
+MODULE_LD_OPTIONS= \
+	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
+	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
+	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
+	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
+	-lfb -lint10 -lpciaccess -lshadow -lvbe -lxf1bpp -lxf4bpp \
+	-lexa -lxaa -lvgahw -lshadowfb -lm
+
+include ../Makefile.inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-r128/COPYING	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,46 @@
+ * Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
+ *                      Precision Insight, Inc., Cedar Park, Texas, and
+ *                      VA Linux Systems Inc., Fremont, California.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation on the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, PRECISION INSIGHT, VA LINUX
+ * SYSTEMS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+
+ * Copyright 2000 through 2004 by Marc Aurele La France (TSI @ UQV), [email protected]
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of Marc Aurele La France not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  Marc Aurele La France makes no representations
+ * about the suitability of this software for any purpose.  It is provided
+ * "as-is" without express or implied warranty.
+ *
+ * MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO
+ * EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-r128/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,70 @@
+###############################################################################
+#
+# xf86-video-r128 1.x Makefile
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+# Use subject to license terms.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+# 
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+# @(#)Makefile	1.1	09/01/14
+#
+
+# Package name used in tarballs
+MODULE_NAME=xf86-video-r128
+
+# Version number (used in path names)
+MODULE_VERSION=6.8.0
+
+# Patches to apply to source after unpacking, in order
+SOURCE_PATCHES = 
+
+# Man pages to apply Sun footer to & attributes to list
+SUNTOUCHED_MANPAGES=man/*.man
+SUN_PACKAGE=SUNWxorg-graphics-ddx
+MODULE_STABILITY=Volatile
+
+# Extra flags to pass to configure script
+# - Disable DRI since the kernel module isn't ported
+MODULE_CONFIG_OPTS=--disable-dri
+
+# Paths to find libraries/modules to link with
+MODULE_LD_OPTIONS= \
+	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
+	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir)/extensions \
+	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir)/linux \
+	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
+	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
+	-R$(X11_SERVERMODS_DIR)/extensions$(SERVERMOD_subdir) \
+	-R$(X11_SERVERMODS_DIR)/linux$(SERVERMOD_subdir) \
+	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
+	-lint10 -lpciaccess -lfb -lvbe -lxaa -lfbdevhw -lvgahw
+
+include ../Makefile.inc
+
+install_gen::
+	mkdir -p $(PROTODIR)$(X11_DOC_DIR)
+	cp -p $(SOURCE_DIR)/README.r128 $(PROTODIR)$(X11_DOC_DIR)/
--- a/open-src/driver/xf86-video-radeonhd/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-radeonhd/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-video-radeonhd Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.1	07/12/03
+# @(#)Makefile	1.5	09/01/14
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-radeonhd
 
 # Version number (used in path names)
-MODULE_VERSION=1.2.1
+MODULE_VERSION=1.2.4
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES= 
@@ -47,8 +47,6 @@
 SUN_PACKAGE=SUNWxorg-graphics-ddx
 MODULE_STABILITY=Volatile
 
-MODULE_CONFIG_OPTS=--with-xorg-sdk-dir=$(PROTODIR)/usr/X11/include/xorg
-
 # Libraries/modules to link with
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
--- a/open-src/driver/xf86-video-rendition/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-rendition/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.8	08/08/08
+# @(#)Makefile	1.9	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-rendition
 
 # Version number (used in path names)
-MODULE_VERSION=4.1.3
+MODULE_VERSION=4.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -53,7 +53,7 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa 
+	-lfb -lint10 -lpciaccess -lshadowfb -lvbe -lvgahw -lxaa
 
 include ../Makefile.inc
 
--- a/open-src/driver/xf86-video-s3/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-s3/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,17 +30,17 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-s3
 
 # Version number (used in path names)
-MODULE_VERSION=0.5.0
+MODULE_VERSION=0.6.1
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = newmmio.patch,-p1
+SOURCE_PATCHES = 
 
 # Man pages to apply Sun footer to & attributes to list
 #SUNTOUCHED_MANPAGES=man/*.man
@@ -51,6 +51,6 @@
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-lfb -lint10 -lvbe -lvgahw -lxaa
+	-lfb -lint10 -lpciaccess -lvbe -lvgahw -lxaa
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-s3/newmmio.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-commit 9465c594e919bd2ac3e41ac96e72a432daf81fa7
-Author: Alan Coopersmith <[email protected]>
-Date:   Tue Jan 9 19:33:45 2007 -0800
-
-    Was previously done in monolith Imakefile as:
-    SpecialCObjectRule(s3_video,$(_NOOP_), -DS3_NEWMMIO)
-    
-    Needed to get definitions of GET_PSTREAM_*, GET_SSTREAM_*, etc.
-
-diff --git a/src/s3_video.c b/src/s3_video.c
-index 77f4930..8189fdf 100644
---- a/src/s3_video.c
-+++ b/src/s3_video.c
-@@ -30,6 +30,8 @@ #ifdef HAVE_CONFIG_H
- #include "config.h"
- #endif
- 
-+#define S3_NEWMMIO	/* previously defined in Imakefile in monolith */
-+
- #include "xf86.h"
- #include "xf86_OSproc.h"
- 
--- a/open-src/driver/xf86-video-s3virge/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-s3virge/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-s3virge
 
 # Version number (used in path names)
-MODULE_VERSION=1.9.1
+MODULE_VERSION=1.10.2
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -53,7 +53,7 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa
+	-lfb -lint10 -lpciaccess -lshadowfb -lvbe -lvgahw -lxaa
 
 include ../Makefile.inc
 
--- a/open-src/driver/xf86-video-savage/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-savage/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-video-savage 1.x Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/14
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-savage
 
 # Version number (used in path names)
-MODULE_VERSION=2.1.3
+MODULE_VERSION=2.2.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -47,13 +47,17 @@
 SUN_PACKAGE=SUNWxorg-graphics-ddx
 MODULE_STABILITY=Volatile
 
+# Extra flags to pass to configure script
+# - Disable DRI since the kernel module isn't ported
+MODULE_CONFIG_OPTS=--disable-dri
+
 # Libraries/modules to link with
 MODULE_LD_OPTIONS= -M $(PWD)/mapfile-vbemodeinit-external \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lexa -lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa -lm
+	-lexa -lfb -lint10 -lpciaccess -lshadowfb -lvbe -lvgahw -lxaa -lm
 
 include ../Makefile.inc
 
--- a/open-src/driver/xf86-video-siliconmotion/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-siliconmotion/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-video-siliconmotion 1.x Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-siliconmotion
 
 # Version number (used in path names)
-MODULE_VERSION=1.5.1
+MODULE_VERSION=1.7.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -53,6 +53,6 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa -lexa
+	-lfb -lint10 -lpciaccess -lshadowfb -lvbe -lvgahw -lxaa -lexa
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-sis/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-sis/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.9	08/08/08
+# @(#)Makefile	1.10	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-sis
 
 # Version number (used in path names)
-MODULE_VERSION=0.9.4
+MODULE_VERSION=0.10.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -56,7 +56,7 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lexa -lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa -lm
+	-lexa -lfb -lint10 -lpciaccess -lshadowfb -lvbe -lvgahw -lxaa -lm 
 
 include ../Makefile.inc
 
--- a/open-src/driver/xf86-video-tdfx/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-tdfx/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-video-tdfx 1.x Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/14
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-tdfx
 
 # Version number (used in path names)
-MODULE_VERSION=1.3.0
+MODULE_VERSION=1.4.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -47,10 +47,14 @@
 SUN_PACKAGE=SUNWxorg-graphics-ddx
 MODULE_STABILITY=Volatile
 
+# Extra flags to pass to configure script
+# - Disable DRI since the kernel module isn't ported
+MODULE_CONFIG_OPTS=--disable-dri
+
 # Libraries/modules to link with
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-lfb -lint10 -lvbe -lvgahw -lxaa
+	-lfb -lint10 -lpciaccess -lvbe -lvgahw -lxaa
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-tga/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-tga/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.6	08/08/08
+# @(#)Makefile	1.7	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-tga
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.0
+MODULE_VERSION=1.2.0
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -51,7 +51,7 @@
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-lfb -lxaa
+	-lfb -lxaa -lpciaccess
 
 include ../Makefile.inc
 
--- a/open-src/driver/xf86-video-trident/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-trident/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.8	08/08/08
+# @(#)Makefile	1.9	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-trident
 
 # Version number (used in path names)
-MODULE_VERSION=1.2.4
+MODULE_VERSION=1.3.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -53,9 +53,7 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lexa -lfb -lint10 -lshadow -lvbe -lvgahw -lxaa -lm
-
-AUTORECONF=yes
+	-lexa -lfb -lint10 -lpciaccess -lshadow -lvbe -lvgahw -lxaa -lm
 
 include ../Makefile.inc
 
--- a/open-src/driver/xf86-video-tseng/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-tseng/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.6	08/08/08
+# @(#)Makefile	1.7	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-tseng
 
 # Version number (used in path names)
-MODULE_VERSION=1.1.1
+MODULE_VERSION=1.2.1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -53,7 +53,7 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lvgahw -lxaa -lxf1bpp -lxf4bpp
+	-lfb -lint10 -lpciaccess -lvgahw -lxaa -lxf1bpp -lxf4bpp
 
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-vesa/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-vesa/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,17 +30,17 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.10	08/08/08
+# @(#)Makefile	1.11	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-vesa
 
 # Version number (used in path names)
-MODULE_VERSION=1.3.0
+MODULE_VERSION=2.1.0
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = vesa_xorg72.patch copying.patch,-p1 randr-crash.patch,-p1
+SOURCE_PATCHES = vesa_xorg72.patch
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
@@ -53,6 +53,6 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadow -lvbe -lxf1bpp -lxf4bpp
+	-lfb -lint10 -lpciaccess -lshadow -lvbe
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-vesa/copying.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-From 8e8efd5de2b3f5985b6df814392e6eecff2f97a3 Mon Sep 17 00:00:00 2001
-From: Daniel Drake <[email protected]>
-Date: Tue, 29 May 2007 12:17:00 -0800
-Subject: [PATCH] Bug #11090: xf86-video-vesa COPYING file
-
-X.Org Bugzilla #11090 <https://bugs.freedesktop.org/show_bug.cgi?id=11090>
----
- COPYING |   30 +++++++++++++++++++++---------
- 1 files changed, 21 insertions(+), 9 deletions(-)
-
-diff --git a/COPYING b/COPYING
-index 7f33cbf..22b4b13 100644
---- a/COPYING
-+++ b/COPYING
-@@ -1,12 +1,24 @@
--This is a stub file.  This package has not yet had its complete licensing
--information compiled.  Please see the individual source files for details on
--your rights to use and modify this software.
-+Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
- 
--Please submit updated COPYING files to the Xorg bugzilla:
-+Permission is hereby granted, free of charge, to any person obtaining a
-+copy of this software and associated documentation files (the "Software"),
-+to deal in the Software without restriction, including without limitation
-+the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+and/or sell copies of the Software, and to permit persons to whom the
-+Software is furnished to do so, subject to the following conditions:
- 
--https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-+The above copyright notice and this permission notice shall be included in
-+all copies or substantial portions of the Software.
-+ 
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-+CONECTIVA LINUX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-+SOFTWARE.
- 
--All licensing questions regarding this software should be directed at the
--Xorg mailing list:
--
--http://lists.freedesktop.org/mailman/listinfo/xorg
-+Except as contained in this notice, the name of Conectiva Linux shall
-+not be used in advertising or otherwise to promote the sale, use or other
-+dealings in this Software without prior written authorization from
-+Conectiva Linux.
--- 
-1.4.1
-
--- a/open-src/driver/xf86-video-vesa/randr-crash.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-From f5315667c0d827cca56a0a855b33e0efe83e3fa0 Mon Sep 17 00:00:00 2001
-From: Aaron Plattner <[email protected]>
-Date: Fri, 11 May 2007 15:06:50 -0700
-Subject: [PATCH] Don't disable FB access when it's already disabled.
-
-Fixes a server segfault during xrandr resize.
----
- src/vesa.c |   21 ++++++++++++++++++---
- src/vesa.h |    2 ++
- 2 files changed, 20 insertions(+), 3 deletions(-)
-
-diff --git a/src/vesa.c b/src/vesa.c
-index f6fa4e4..85fb4af 100644
---- a/src/vesa.c
-+++ b/src/vesa.c
-@@ -814,6 +814,16 @@ vesaCreateScreenResources(ScreenPtr pScr
-     return ret;
- }
- 
-+static void
-+vesaEnableDisableFBAccess(int scrnIndex, Bool enable)
-+{
-+    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-+    VESAPtr pVesa = VESAGetRec(pScrn);
-+
-+    pVesa->accessEnabled = enable;
-+    pVesa->EnableDisableFBAccess(scrnIndex, enable);
-+}
-+
- static Bool
- VESAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- {
-@@ -1039,6 +1049,10 @@ #endif
- 	VESALoadPalette, NULL, flags))
- 	return (FALSE);
- 
-+    pVesa->accessEnabled = TRUE;
-+    pVesa->EnableDisableFBAccess = pScrn->EnableDisableFBAccess;
-+    pScrn->EnableDisableFBAccess = vesaEnableDisableFBAccess;
-+
-     pVesa->CloseScreen = pScreen->CloseScreen;
-     pScreen->CloseScreen = VESACloseScreen;
-     pScreen->SaveScreen = VESASaveScreen;
-@@ -1091,6 +1105,7 @@ VESACloseScreen(int scrnIndex, ScreenPtr
-     }
-     pScrn->vtSema = FALSE;
- 
-+    pScrn->EnableDisableFBAccess = pVesa->EnableDisableFBAccess;
-     pScreen->CreateScreenResources = pVesa->CreateScreenResources;
-     pScreen->CloseScreen = pVesa->CloseScreen;
-     return pScreen->CloseScreen(scrnIndex, pScreen);
-@@ -1101,12 +1116,12 @@ VESASwitchMode(int scrnIndex, DisplayMod
- {
-     ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-     VESAPtr pVesa = VESAGetRec(pScrn);
--    Bool ret;
-+    Bool ret, disableAccess = pVesa->ModeSetClearScreen && pVesa->accessEnabled;
- 
--    if (pVesa->ModeSetClearScreen) 
-+    if (disableAccess)
- 	pScrn->EnableDisableFBAccess(scrnIndex,FALSE);
-     ret = VESASetMode(xf86Screens[scrnIndex], pMode);
--    if (pVesa->ModeSetClearScreen) 
-+    if (disableAccess)
- 	pScrn->EnableDisableFBAccess(scrnIndex,TRUE);
-     return ret;
- }
-diff --git a/src/vesa.h b/src/vesa.h
-index f0c79da..b9e6009 100644
---- a/src/vesa.h
-+++ b/src/vesa.h
-@@ -125,6 +125,8 @@ #endif
-     int nDGAMode;
-     CloseScreenProcPtr CloseScreen;
-     CreateScreenResourcesProcPtr CreateScreenResources;
-+    xf86EnableDisableFBAccessProc *EnableDisableFBAccess;
-+    Bool accessEnabled;
-     OptionInfoPtr Options;
-     IOADDRESS ioBase;
-     Bool ModeSetClearScreen;
--- 
-1.4.1
-
--- a/open-src/driver/xf86-video-vesa/vesa_xorg72.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-vesa/vesa_xorg72.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,7 +1,10 @@
-diff -ur xf86-video-vesa-X11R7.2-1.3.0/src/vesa.c vesa/src/vesa.c
---- xf86-video-vesa-X11R7.2-1.3.0/src/vesa.c	2007-01-08 18:50:04.000000000 -0500
-+++ src/vesa.c	2007-02-23 08:56:40.000000000 -0500
-@@ -1406,19 +1406,19 @@
+Fixes Sun bug 6526933: Matrox MGA chip (embedded in ServerEngines "Pilot" BSC)
+does not work with vesa driver
+
+diff -urp -x '*~' -x '*.orig' src/vesa.c src/vesa.c
+--- src/vesa.c	2008-12-21 18:34:59.000000000 -0800
++++ src/vesa.c	2009-01-11 10:09:13.986045000 -0800
+@@ -1450,19 +1450,19 @@ SaveFonts(ScrnInfoPtr pScrn)
      WriteGr(0x06, 0x05);	/* set graphics */
      slowbcopy_frombus(pVesa->VGAbase, pVesa->fonts + 8192, 8192);
  
@@ -28,7 +31,7 @@
  }
  
  static void
-@@ -1475,11 +1475,6 @@
+@@ -1519,11 +1519,6 @@ RestoreFonts(ScrnInfoPtr pScrn)
      WriteGr(0x06, 0x05);    /* set graphics */
      slowbcopy_tobus(pVesa->fonts + 8192, pVesa->VGAbase, 8192);
  
@@ -40,7 +43,7 @@
      /* restore the registers that were changed */
      WriteMiscOut(miscOut);
      WriteAttr(pVesa, 0x10, attr10);
-@@ -1491,6 +1486,11 @@
+@@ -1535,6 +1530,11 @@ RestoreFonts(ScrnInfoPtr pScrn)
      WriteGr(0x08, gr8);
      WriteSeq(0x02, seq2);
      WriteSeq(0x04, seq4);
--- a/open-src/driver/xf86-video-vga/COPYING	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
- * Copyright (C) 1998 The XFree86 Project, Inc.  All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the XFree86 Project shall
- * not be used in advertising or otherwise to promote the sale, use or other
- * dealings in this Software without prior written authorization from the
- * XFree86 Project.
--- a/open-src/driver/xf86-video-vga/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-###############################################################################
-#
-# xf86-video-vga 1.x Makefile
-#
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-# @(#)Makefile	1.6	08/08/08
-#
-
-# Package name used in tarballs
-MODULE_NAME=xf86-video-vga
-
-# Version number (used in path names)
-MODULE_VERSION=4.1.0
-
-# Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 
-
-# Man pages to apply Sun footer to & attributes to list
-SUNTOUCHED_MANPAGES=man/*.man
-SUN_PACKAGE=SUNWxorg-server
-MODULE_STABILITY=Volatile
-
-# Libraries/modules to link with
-MODULE_LD_OPTIONS= \
-	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lint10 -lshadowfb -lvgahw -lxf1bpp -lxf4bpp
-
-include ../Makefile.inc
--- a/open-src/driver/xf86-video-via/COPYING	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,545 +0,0 @@
- * Copyright 2006 Thomas Hellstrom. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- * Copyright 2006 Thomas Hellstrom. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Mostly rewritten and modified for EXA support by Thomas Hellstrom 2005.
- 
- * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 2004 The Unichrome Project  [unichrome.sf.net]
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
- *
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright (C) 2004 Thomas Hellstrom, All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 2003 Red Hat, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 2004 The Unichrome Project  [unichrome.sf.net]
- * Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
- * VIA Unichrome XvMC extension X server driver.
- *
- * Copyright (c) 2004 The Unichrome Project. All rights reserved.
- * Copyright (c) 2000 Intel Corporation. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHOR(S) OR COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
-****************************************************************************
- * driDrawable.c: Lean Version of DRI utilities.
- *
- * Copyright (c) 2005 Thomas Hellstrom. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHOR(S) OR COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
-****************************************************************************
- * VIA Unichrome XvMC extension client lib.
- *
- * Copyright (c) 2004 Thomas Hellstr�m. All rights reserved.
- * Copyright (c) 2003 Andreas Robinson. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHOR(S) OR COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
-****************************************************************************
- * VIA Unichrome XvMC extension client lib.
- *
- * Copyright (c) 2004 Thomas Hellstr�m. All rights reserved.
- * Copyright (c) 2003 Andreas Robinson. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHOR(S) OR COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
-****************************************************************************
- * VIA Unichrome XvMC extension client lib.
- *
- * Copyright (c) 2004-2005 Thomas Hellstr�m. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHOR(S) OR COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- 
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright 2000 VA Linux Systems, Inc.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sub license, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice (including the
-next paragraph) shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*************************************************************************
-## comments end
--- a/open-src/driver/xf86-video-via/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-###############################################################################
-#
-# xf86-video-via Makefile
-#
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-# @(#)Makefile	1.6	08/08/08
-#
-
-# Package name used in tarballs
-MODULE_NAME=xf86-video-via
-
-# Version number (used in path names)
-MODULE_VERSION=0.2.2
-
-# Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 
-
-# Man pages to apply Sun footer to & attributes to list
-SUNTOUCHED_MANPAGES=man/*.man
-SUN_PACKAGE=SUNWxorg-graphics-ddx
-MODULE_STABILITY=Volatile
-
-# Extra flags to pass to configure script
-MODULE_CONFIG_OPTS= --disable-dri
-
-# Libraries/modules to link with
-MODULE_LD_OPTIONS= \
-	-L$(PROTODIR)$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
-	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lexa -lfb -lint10 -lshadowfb -lvbe -lvgahw -lxaa -lm
-
-include ../Makefile.inc
--- a/open-src/driver/xf86-video-vmware/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-vmware/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,14 +30,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.9	08/08/08
+# @(#)Makefile	1.10	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86-video-vmware
 
 # Version number (used in path names)
-MODULE_VERSION=10.15.2
+MODULE_VERSION=10.16.5
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 6370961.patch
@@ -53,6 +53,6 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lshadowfb -lvgahw
+	-lfb -lshadowfb -lvgahw -lpciaccess
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-wsfb/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/driver/xf86-video-wsfb/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.8	08/08/08
+# @(#)Makefile	1.9	09/01/14
 #
 
 # Package name used in tarballs
@@ -42,6 +42,7 @@
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = \
 	shadow-crash.patch,-p1 \
+	xfbpp-removal.patch,-p1 \
 	solaris-port.patch
 
 
@@ -56,6 +57,6 @@
         -L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir) \
         -R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lfb -lshadow -lxf4bpp -lxf1bpp
+	-lfb -lshadow
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-wsfb/wsfb-updates.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,453 +0,0 @@
-commit b5d1de955b4bf40edd1ff08fc4d562590a4e1f98
-Author: Matthieu Herrb <[email protected]>
-Date:   Sun Dec 3 18:07:02 2006 +0100
-
-    Pull code from OpenBSD 4.0 version.
-    
-        - rotation support
-        - only allocate space for colormap save/restore at 8bpp
-        - switch on render extension at 8bpp
-
-diff --git a/src/wsfb_driver.c b/src/wsfb_driver.c
-index 4844d3d..d97bf3f 100644
---- a/src/wsfb_driver.c
-+++ b/src/wsfb_driver.c
-@@ -114,6 +114,7 @@ static Bool WsfbScreenInit(int, ScreenPt
- static Bool WsfbCloseScreen(int, ScreenPtr);
- static void *WsfbWindowLinear(ScreenPtr, CARD32, CARD32, int, CARD32 *,
- 			      void *);
-+static void WsfbPointerMoved(int, int, int);
- static Bool WsfbEnterVT(int, int);
- static void WsfbLeaveVT(int, int);
- static Bool WsfbSwitchMode(int, DisplayModePtr, int);
-@@ -138,17 +139,23 @@ static Bool WsfbDriverFunc(ScrnInfoPtr p
- static int wsfb_open(char *);
- static pointer wsfb_mmap(size_t, off_t, int);
- 
-+enum { WSFB_ROTATE_NONE = 0,
-+       WSFB_ROTATE_CCW = 90,
-+       WSFB_ROTATE_UD = 180,
-+       WSFB_ROTATE_CW = 270
-+};
-+
- /*
-  * This is intentionally screen-independent.  It indicates the binding
-  * choice made in the first PreInit.
-  */
- static int pix24bpp = 0;
- 
--#define WSFB_VERSION		4000
-+#define WSFB_VERSION 		4000
- #define WSFB_NAME		"wsfb"
- #define WSFB_DRIVER_NAME	"wsfb"
- #define WSFB_MAJOR_VERSION	0
--#define WSFB_MINOR_VERSION	1
-+#define WSFB_MINOR_VERSION	2
- 
- _X_EXPORT DriverRec WSFB = {
- 	WSFB_VERSION,
-@@ -170,10 +177,12 @@ static SymTabRec WsfbChipsets[] = {
- /* Supported options */
- typedef enum {
- 	OPTION_SHADOW_FB,
-+	OPTION_ROTATE
- } WsfbOpts;
- 
- static const OptionInfoRec WsfbOptions[] = {
- 	{ OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE},
-+	{ OPTION_ROTATE, "Rotate", OPTV_STRING, {0}, FALSE},
- 	{ -1, NULL, OPTV_NONE, {0}, FALSE}
- };
- 
-@@ -184,8 +193,12 @@ static const char *fbSymbols[] = {
- 	NULL
- };
- static const char *shadowSymbols[] = {
--	"shadowInit",
-+	"shadowAdd",
-+	"shadowSetup",
-+	"shadowUpdatePacked",
- 	"shadowUpdatePackedWeak",
-+	"shadowUpdateRotatePacked",
-+	"shadowUpdateRotatePackedWeak",
- 	NULL
- };
- 
-@@ -242,13 +255,12 @@ typedef struct {
- 	unsigned char*		fbstart;
- 	unsigned char*		fbmem;
- 	size_t			fbmem_len;
-+	int			rotate;
- 	Bool			shadowFB;
- 	CloseScreenProcPtr	CloseScreen;
-+	void			(*PointerMoved)(int, int, int);
- 	EntityInfoPtr		pEnt;
- 	struct wsdisplay_cmap	saved_cmap;
--	unsigned char		saved_red[256];
--	unsigned char		saved_green[256];
--	unsigned char		saved_blue[256];
- 
- #ifdef XFreeXDGA
- 	/* DGA info */
-@@ -373,7 +385,7 @@ WsfbProbe(DriverPtr drv, int flags)
- 						   NULL,NULL,NULL,NULL);
- 			if (pScrn != NULL) {
- 				foundScreen = TRUE;
--				pScrn->driverVersion = VERSION;
-+				pScrn->driverVersion = WSFB_VERSION;
- 				pScrn->driverName = WSFB_DRIVER_NAME;
- 				pScrn->name = WSFB_NAME;
- 				pScrn->Probe = WsfbProbe;
-@@ -401,7 +413,7 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags
- {
- 	WsfbPtr fPtr;
- 	int default_depth, wstype;
--	char *dev;
-+	char *dev, *s;
- 	char *mod = NULL;
- 	const char *reqSym = NULL;
- 	Gamma zeros = {0.0, 0.0, 0.0};
-@@ -447,6 +459,35 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags
- 			   strerror(errno));
- 		return FALSE;
- 	}
-+	/*
-+	 * Allocate room for saving the colormap 
-+	 */
-+	if (fPtr->info.cmsize != 0) {
-+		fPtr->saved_cmap.red =
-+		    (unsigned char *)xalloc(fPtr->info.cmsize);
-+		if (fPtr->saved_cmap.red == NULL) {
-+			xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-+			    "Cannot malloc %d bytes\n", fPtr->info.cmsize);
-+			return FALSE;
-+		}
-+		fPtr->saved_cmap.green =
-+		    (unsigned char *)xalloc(fPtr->info.cmsize);
-+		if (fPtr->saved_cmap.green == NULL) {
-+			xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-+			    "Cannot malloc %d bytes\n", fPtr->info.cmsize);
-+			xfree(fPtr->saved_cmap.red);
-+			return FALSE;
-+		}
-+		fPtr->saved_cmap.blue =
-+		    (unsigned char *)xalloc(fPtr->info.cmsize);
-+		if (fPtr->saved_cmap.blue == NULL) {
-+			xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-+			    "Cannot malloc %d bytes\n", fPtr->info.cmsize);
-+			xfree(fPtr->saved_cmap.red);
-+			xfree(fPtr->saved_cmap.green);
-+			return FALSE;
-+		}
-+	}
- 
- 	/* Handle depth */
- 	default_depth = fPtr->info.depth <= 24 ? fPtr->info.depth : 24;
-@@ -531,9 +572,42 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags
- 		if (xf86ReturnOptValBool(fPtr->Options,
- 					 OPTION_SHADOW_FB, FALSE)) {
- 			xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
--				   "Shadow FB option ignored on depth 1");
-+				   "Shadow FB option ignored on depth < 8");
- 		}
- 
-+	/* rotation */
-+	fPtr->rotate = WSFB_ROTATE_NONE;
-+	if ((s = xf86GetOptValString(fPtr->Options, OPTION_ROTATE))) {
-+		if (pScrn->depth >= 8) {
-+			if (!xf86NameCmp(s, "CW")) {
-+				fPtr->shadowFB = TRUE;
-+				fPtr->rotate = WSFB_ROTATE_CW;
-+				xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
-+				    "Rotating screen clockwise\n");
-+			} else if (!xf86NameCmp(s, "CCW")) {
-+				fPtr->shadowFB = TRUE;
-+				fPtr->rotate = WSFB_ROTATE_CCW;
-+				xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
-+				    "Rotating screen counter clockwise\n");
-+			} else if (!xf86NameCmp(s, "UD")) {
-+				fPtr->shadowFB = TRUE;
-+				fPtr->rotate = WSFB_ROTATE_UD;
-+				xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
-+				    "Rotating screen upside down\n");
-+			} else {
-+				xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
-+				    "\"%s\" is not a valid value for Option "
-+				    "\"Rotate\"\n", s);
-+				xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-+				    "Valid options are \"CW\", \"CCW\","
-+				    " or \"UD\"\n");
-+			}
-+		} else {
-+			xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-+			    "Option \"Rotate\" ignored on depth < 8");
-+		}
-+	}
-+	
- 	/* fake video mode struct */
- 	mode = (DisplayModePtr)xalloc(sizeof(DisplayModeRec));
- 	mode->prev = mode;
-@@ -612,14 +686,14 @@ WsfbScreenInit(int scrnIndex, ScreenPtr 
- 	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- 	WsfbPtr fPtr = WSFBPTR(pScrn);
- 	VisualPtr visual;
--	int ret, flags, width, height;
-+	int ret, flags, width, height, ncolors;
- 	int wsmode = WSDISPLAYIO_MODE_DUMBFB;
- 	size_t len;
- 
- 	TRACE_ENTER("WsfbScreenInit");
- #if DEBUG
- 	ErrorF("\tbitsPerPixel=%d, depth=%d, defaultVisual=%s\n"
--	       "\tmask: %x,%x,%x, offset: %d,%d,%d\n",
-+	       "\tmask: %x,%x,%x, offset: %u,%u,%u\n",
- 	       pScrn->bitsPerPixel,
- 	       pScrn->depth,
- 	       xf86GetVisualName(pScrn->defaultVisual),
-@@ -628,6 +702,7 @@ #if DEBUG
- #endif
- 	switch (fPtr->info.depth) {
- 	case 1:
-+	case 4:
- 	case 8:
- 		len = fPtr->linebytes*fPtr->info.height;
- 		break;
-@@ -638,6 +713,13 @@ #endif
- 			len = fPtr->linebytes*fPtr->info.height;
- 		}
- 		break;
-+	case 24:
-+		if (fPtr->linebytes == fPtr->info.width) {
-+			len = fPtr->info.width*fPtr->info.height*3;
-+		} else {
-+			len = fPtr->linebytes*fPtr->info.height;
-+		}
-+		break;
- 	case 32:
- 		if (fPtr->linebytes == fPtr->info.width) {
- 			len = fPtr->info.width*fPtr->info.height*sizeof(int);
-@@ -684,10 +766,20 @@ #endif
- 	if (!miSetPixmapDepths())
- 		return FALSE;
- 
--	height = pScrn->virtualY;
--	width = pScrn->virtualX;
-+	if (fPtr->rotate == WSFB_ROTATE_CW 
-+	    || fPtr->rotate == WSFB_ROTATE_CCW) {
-+		height = pScrn->virtualX;
-+		width = pScrn->displayWidth = pScrn->virtualY;
-+	} else {
-+		height = pScrn->virtualY;
-+		width = pScrn->virtualX;
-+	}
-+	if (fPtr->rotate && !fPtr->PointerMoved) {
-+		fPtr->PointerMoved = pScrn->PointerMoved;
-+		pScrn->PointerMoved = WsfbPointerMoved;
-+	}
- 
--	fPtr->fbstart   = fPtr->fbmem;
-+	fPtr->fbstart = fPtr->fbmem;
- 
- 	switch (pScrn->bitsPerPixel) {
- 	case 1:
-@@ -704,6 +796,7 @@ #endif
- 		break;
- 	case 8:
- 	case 16:
-+	case 24:
- 	case 32:
- 		ret = fbScreenInit(pScreen,
- 				   fPtr->fbstart,
-@@ -736,25 +829,54 @@ #endif
- 		}
- 	}
- 
--	if (pScrn->bitsPerPixel > 8) {
-+	if (pScrn->bitsPerPixel >= 8) {
- 		if (!fbPictureInit(pScreen, NULL, 0))
- 			xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
- 				   "RENDER extension initialisation failed.");
- 	}
- 	if (fPtr->shadowFB) {
-+		PixmapPtr pPixmap;
-+
- 		if (pScrn->bitsPerPixel < 8) {
- 			xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- 				   "Shadow FB not available on < 8 depth");
- 		} else {
--			if (!shadowInit(pScreen, shadowUpdatePackedWeak(),
--					WsfbWindowLinear))
--			return FALSE;
-+			ErrorF("XXX w %d h %d d %d\n",
-+			    pScreen->width, pScreen->height,
-+			    pScreen->rootDepth);
-+			pPixmap = pScreen->CreatePixmap(pScreen, 
-+			    pScreen->width, pScreen->height,
-+			    pScreen->rootDepth);
-+			if (!pPixmap)
-+				return FALSE;
-+    			if (!shadowSetup(pScreen) ||
-+			    !shadowAdd(pScreen, pPixmap,
-+				fPtr->rotate ? shadowUpdateRotatePackedWeak() :
-+				shadowUpdatePackedWeak(),
-+				WsfbWindowLinear, fPtr->rotate, NULL)) {
-+				xf86DrvMsg(scrnIndex, X_ERROR,
-+				    "Shadow FB initialization failed\n");
-+				pScreen->DestroyPixmap(pPixmap);
-+				return FALSE;
-+			}
- 		}
- 	}
- 
- #ifdef XFreeXDGA
--	WsfbDGAInit(pScrn, pScreen);
-+	if (!fPtr->rotate) 
-+		WsfbDGAInit(pScrn, pScreen);
-+	else 
-+		xf86DrvMsg(scrnIndex, X_INFO, "Rotated display, "
-+		    "disabling DGA\n");
- #endif
-+	if (fPtr->rotate) {
-+		xf86DrvMsg(scrnIndex, X_INFO, "Enabling Driver Rotation, "
-+		    "disabling RandR\n");
-+		xf86DisableRandR();
-+		if (pScrn->bitsPerPixel == 24) 
-+			xf86DrvMsg(scrnIndex, X_WARNING, 
-+			    "Rotation might be broken in 24 bpp\n");
-+	}
- 
- 	xf86SetBlackWhitePixels(pScreen);
- 	miInitializeBackingStore(pScreen);
-@@ -766,8 +888,12 @@ #endif
- 	/* colormap */
- 	if (!miCreateDefColormap(pScreen))
- 		return FALSE;
--		flags = CMAP_RELOAD_ON_MODE_SWITCH;
--	if(!xf86HandleColormaps(pScreen, 256, 8, WsfbLoadPalette,
-+	flags = CMAP_RELOAD_ON_MODE_SWITCH;
-+	ncolors = fPtr->info.cmsize;
-+	/* on StaticGray visuals, fake a 256 entries colormap */
-+	if (ncolors == 0)
-+		ncolors = 256;
-+	if(!xf86HandleColormaps(pScreen, ncolors, 8, WsfbLoadPalette,
- 				NULL, flags))
- 		return FALSE;
- 
-@@ -840,6 +966,44 @@ WsfbWindowLinear(ScreenPtr pScreen, CARD
- 	return ((CARD8 *)fPtr->fbmem + row *fPtr->linebytes + offset);
- }
- 
-+static void
-+WsfbPointerMoved(int index, int x, int y)
-+{
-+    ScrnInfoPtr pScrn = xf86Screens[index];
-+    WsfbPtr fPtr = WSFBPTR(pScrn);
-+    int newX, newY;
-+
-+    switch (fPtr->rotate)
-+    {
-+    case WSFB_ROTATE_CW:
-+	/* 90 degrees CW rotation. */
-+	newX = pScrn->pScreen->height - y - 1;
-+	newY = x;
-+	break;
-+
-+    case WSFB_ROTATE_CCW:
-+	/* 90 degrees CCW rotation. */
-+	newX = y;
-+	newY = pScrn->pScreen->width - x - 1;
-+	break;
-+
-+    case WSFB_ROTATE_UD:
-+	/* 180 degrees UD rotation. */
-+	newX = pScrn->pScreen->width - x - 1;
-+	newY = pScrn->pScreen->height - y - 1;
-+	break;
-+
-+    default:
-+	/* No rotation. */
-+	newX = x;
-+	newY = y;
-+	break;
-+    }
-+
-+    /* Pass adjusted pointer coordinates to wrapped PointerMoved function. */
-+    (*fPtr->PointerMoved)(index, newX, newY);
-+}
-+
- static Bool
- WsfbEnterVT(int scrnIndex, int flags)
- {
-@@ -934,6 +1098,7 @@ WsfbLoadPalette(ScrnInfoPtr pScrn, int n
- 		if (ioctl(fPtr->fd,WSDISPLAYIO_PUTCMAP, &cmap) == -1)
- 			ErrorF("ioctl FBIOPUTCMAP: %s\n", strerror(errno));
- 	}
-+	TRACE_EXIT("LoadPalette");
- }
- 
- static Bool
-@@ -964,11 +1129,12 @@ WsfbSave(ScrnInfoPtr pScrn)
- 	WsfbPtr fPtr = WSFBPTR(pScrn);
- 
- 	TRACE_ENTER("WsfbSave");
-+
-+	if (fPtr->info.cmsize == 0)
-+		return;
-+
- 	fPtr->saved_cmap.index = 0;
--	fPtr->saved_cmap.count = 256;
--	fPtr->saved_cmap.red = fPtr->saved_red;
--	fPtr->saved_cmap.green = fPtr->saved_green;
--	fPtr->saved_cmap.blue = fPtr->saved_blue;
-+	fPtr->saved_cmap.count = fPtr->info.cmsize;
- 	if (ioctl(fPtr->fd, WSDISPLAYIO_GETCMAP,
- 		  &(fPtr->saved_cmap)) == -1) {
- 		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-@@ -985,16 +1151,14 @@ WsfbRestore(ScrnInfoPtr pScrn)
- 
- 	TRACE_ENTER("WsfbRestore");
- 
--	/* reset colormap for text mode */
--	fPtr->saved_cmap.index = 0;
--	fPtr->saved_cmap.count = 256;
--	fPtr->saved_cmap.red = fPtr->saved_red;
--	fPtr->saved_cmap.green = fPtr->saved_green;
--	fPtr->saved_cmap.blue = fPtr->saved_blue;
--	if (ioctl(fPtr->fd, WSDISPLAYIO_PUTCMAP,
--		  &(fPtr->saved_cmap)) == -1) {
--		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
--			   "error restoring colormap %s\n", strerror(errno));
-+	if (fPtr->info.cmsize != 0) {
-+		/* reset colormap for text mode */
-+		if (ioctl(fPtr->fd, WSDISPLAYIO_PUTCMAP,
-+			  &(fPtr->saved_cmap)) == -1) {
-+			xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-+				   "error restoring colormap %s\n",
-+				   strerror(errno));
-+		}
- 	}
- 
- 	/* Clear the screen */
-commit 579e15946892894f4ee75576855767dae27292d3
-Author: Jeremy C. Reed <[email protected]>
-Date:   Thu Dec 21 05:53:21 2006 -0600
-
-    "framebuffer size is linebytes * height, not linebytes * height *
-    depth" Noticed in recent NetBSD CVS commit. Also in OpenBSD's CVS.
-    Okayed by Matthieu.  Before my system said: "(II) wsfb(0): Vidmem: 24576k".
-    Now says: "(II) wsfb(0): Vidmem: 1536k"
-
-diff --git a/src/wsfb_driver.c b/src/wsfb_driver.c
-index d97bf3f..341f4af 100644
---- a/src/wsfb_driver.c
-+++ b/src/wsfb_driver.c
-@@ -550,8 +550,7 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags
- 	pScrn->progClock = TRUE;
- 	pScrn->rgbBits   = 8;
- 	pScrn->chipset   = "wsfb";
--	pScrn->videoRam  = fPtr->linebytes * fPtr->info.height
--		* fPtr->info.depth;
-+	pScrn->videoRam  = fPtr->linebytes * fPtr->info.height;
- 
- 	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Vidmem: %dk\n",
- 		   pScrn->videoRam/1024);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-wsfb/xfbpp-removal.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,91 @@
+From f5540f76b1c756521b541601902b20e1fa118a87 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Tue, 13 Jan 2009 15:04:12 -0800
+Subject: [PATCH] Don't call xf1bpp or xf4bpp if they're not present (xorg-server-1.6 & later)
+
+---
+ configure.ac      |    7 +++++++
+ src/wsfb_driver.c |   16 ++++++++++++++--
+ 2 files changed, 21 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 893153d..a0882e9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -61,6 +61,13 @@ sdkdir=$(pkg-config --variable=sdkdir xorg-server)
+ # Checks for header files.
+ AC_HEADER_STDC
+ 
++# Check for xf1bpp & xf4bpp (removed in xorg-server 1.6 & later)
++SAVE_CPPFLAGS="$CPPFLAGS"
++CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
++AC_CHECK_HEADER(xf1bpp.h,[AC_DEFINE(HAVE_XF1BPP, 1, [Have 1bpp support])],[])
++AC_CHECK_HEADER(xf4bpp.h,[AC_DEFINE(HAVE_XF4BPP, 1, [Have 4bpp support])],[])
++CPPFLAGS="$SAVE_CPPFLAGS"
++
+ AC_SUBST([XORG_CFLAGS])
+ AC_SUBST([moduledir])
+ 
+diff --git a/src/wsfb_driver.c b/src/wsfb_driver.c
+index 0d6246b..bb33a79 100644
+--- a/src/wsfb_driver.c
++++ b/src/wsfb_driver.c
+@@ -60,8 +60,12 @@
+ #include "dgaproc.h"
+ 
+ /* for visuals */
+-#include "xf1bpp.h"
+-#include "xf4bpp.h"
++#ifdef HAVE_XF1BPP
++# include "xf1bpp.h"
++#endif
++#ifdef HAVE_XF4BPP
++# include "xf4bpp.h"
++#endif
+ #include "fb.h"
+ 
+ #include "xf86Resources.h"
+@@ -637,14 +641,18 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags)
+ 
+ 	/* Load bpp-specific modules */
+ 	switch(pScrn->bitsPerPixel) {
++#ifdef HAVE_XF1BPP
+ 	case 1:
+ 		mod = "xf1bpp";
+ 		reqSym = "xf1bppScreenInit";
+ 		break;
++#endif
++#ifdef HAVE_XF4BPP
+ 	case 4:
+ 		mod = "xf4bpp";
+ 		reqSym = "xf4bppScreenInit";
+ 		break;
++#endif
+ 	default:
+ 		mod = "fb";
+ 		break;
+@@ -828,17 +836,21 @@ WsfbScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ 	
+ 	switch (pScrn->bitsPerPixel) {
+ 	case 1:
++#ifdef HAVE_XF1BPP
+ 		ret = xf1bppScreenInit(pScreen, fPtr->fbstart,
+ 				       pScrn->virtualX, pScrn->virtualY,
+ 				       pScrn->xDpi, pScrn->yDpi,
+ 				       pScrn->displayWidth);
+ 		break;
++#endif
+ 	case 4:
++#ifdef HAVE_XF4BPP
+ 		ret = xf4bppScreenInit(pScreen, fPtr->fbstart,
+ 				       pScrn->virtualX, pScrn->virtualY,
+ 				       pScrn->xDpi, pScrn->yDpi,
+ 				       pScrn->displayWidth);
+ 		break;
++#endif
+ 	case 8:
+ 	case 16:
+ 	case 24:
+-- 
+1.5.6.5
+
--- a/open-src/font/Makefile.inc	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/font/Makefile.inc	Thu Jan 15 12:55:00 2009 -0800
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.7	08/10/06
+# @(#)Makefile.inc	1.8	09/01/14
 #
 
 ### Makefile settings/rules common to all X.Org font modules
@@ -62,8 +62,7 @@
 
 # Environment variable options needed when building
 MODTYPE_BUILD_ENV = PATH="$(FONT_UTILS_PATH):$$PATH" \
-	LD_LIBRARY_PATH="$(FONT_LIBS_PATH)" \
-	PROTODIR="$(PROTODIR)"
+	LD_LIBRARY_PATH="$(FONT_LIBS_PATH)"
 
 ### Include common rulesets
 include $(TOP)/common/Makefile.inc
--- a/open-src/lib/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 # Makefile for X Consolidation Open Source Library modules
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.27	08/10/30
+# @(#)Makefile	1.28	09/01/14
 #
 ###############################################################################
 
@@ -40,9 +40,11 @@
 # X11 before Xext
 # (X11 and SM) before Xt
 # Xt before Xmu and Xpm and Xtst
-# Xext before any other extension library
+# Xext before any other extension library, including mesa
 # Xfixes before Xcomposite
 # Xp before XprintUtil before XprintAppUtil
+# libpthread-stubs before libdrm (and in the future, before xcb)
+# libdrm before mesa
 
 OS_SUBDIRS_common = \
 	freetype \
--- a/open-src/lib/libXaw/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/libXaw/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # Xaw Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.4	08/10/05
+# @(#)Makefile	1.5	09/01/14
 #
 
 # Package name used in tarballs
@@ -55,7 +55,7 @@
 # MODULE_LD_OPTIONS = -M $(PWD)/mapfile-vers
 
 # pkg-config files that need to have -R added
-FIX_PC_FILES=xaw*.pc.in
+FIX_PC_FILES=xaw7.pc.in
 
 # Additional arguments to pass to configure
 # We only ship libXaw.so.7 right now, since we don't need to maintain binary
--- a/open-src/lib/libdrm/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/libdrm/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -27,14 +27,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.8	08/08/08
+# @(#)Makefile	1.9	09/01/10
 #
 
 # Package name used in tarballs
 MODULE_NAME=libdrm
 
 # Version number (used in path names)
-MODULE_VERSION=2.3.0
+MODULE_VERSION=2.3.1
 
 # Library name (used for specfiles/mapfiles)
 LIBNAME=drm
@@ -48,14 +48,15 @@
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = solaris-drm-port.patch
 
+# Need to regenerate files after patching Makefile.am in solaris-drm-port.patch
+AUTORECONF=yes
+
 # Man pages to apply Sun footer to & attributes to list
 #SUNTOUCHED_MANPAGES=*.man
 #SUN_PACKAGE=SUNWxorg-server
 #MODULE_STABILITY=Volatile
 #LIB_MAN_SUFFIX=3drm
 
-
-
 # pkg-config files that need to have -R added
 FIX_PC_FILES=libdrm.pc.in
 
--- a/open-src/lib/libdrm/solaris-drm-port.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/libdrm/solaris-drm-port.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -26,194 +26,190 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 
-diff -urp -x '*~' libdrm/xf86drm.c libdrm/xf86drm.c
---- libdrm/xf86drm.c	2006-11-08 13:54:38.000000000 -0800
-+++ libdrm/xf86drm.c	2006-11-30 20:01:39.007051000 -0800
-@@ -882,7 +882,7 @@ int drmRmMap(int fd, drm_handle_t handle
+diff -urp -x '*~' -x '*.orig' Makefile.am Makefile.am
+--- Makefile.am	2008-07-01 00:50:43.000000000 -0700
++++ Makefile.am	2009-01-10 22:17:00.792398000 -0800
+@@ -22,7 +22,7 @@
+ # here too, but let's just do libdrm for now
+ 
+ AUTOMAKE_OPTIONS = foreign
+-SUBDIRS = libdrm shared-core tests
++SUBDIRS = libdrm shared-core
+ 
+ pkgconfigdir = @pkgconfigdir@
+ pkgconfig_DATA = libdrm.pc
+diff -urp -x '*~' -x '*.orig' libdrm/xf86drm.c libdrm/xf86drm.c
+--- libdrm/xf86drm.c	2008-07-01 00:51:40.000000000 -0700
++++ libdrm/xf86drm.c	2009-01-10 22:17:00.782591000 -0800
+@@ -894,7 +894,7 @@ int drmRmMap(int fd, drm_handle_t handle
  {
      drm_map_t map;
  
 -    map.handle = (void *)handle;
 +    map.handle = (drm_handle_t)handle;
  
-     if(ioctl(fd, DRM_IOCTL_RM_MAP, &map)) return -errno;
-     return 0;
-@@ -1112,6 +1112,7 @@ drmBufMapPtr drmMapBufs(int fd)
-     bufs.count = 0;
-     bufs.list  = NULL;
-     bufs.virtual = NULL;
-+    bufs.fd = fd;
-     if (ioctl(fd, DRM_IOCTL_MAP_BUFS, &bufs)) return NULL;
- 
-     if (!bufs.count) return NULL;
-diff -urp -x '*~' libdrm/xf86drm.h libdrm/xf86drm.h
---- libdrm/xf86drm.h	2006-11-08 13:55:14.000000000 -0800
-+++ libdrm/xf86drm.h	2006-11-30 20:01:39.008328000 -0800
-@@ -40,6 +40,11 @@
- #include <sys/types.h>
- #include <drm.h>
- 
-+#if defined(__SUNPRO_C)
-+#define STRINGIZE(x) #x
-+#define STRINGIZE_EVAL(x) STRINGIZE(x)
-+#define __FUNCTION__    STRINGIZE_EVAL(__FILE__)",line"STRINGIZE_EVAL(__LINE__)
-+#endif
- 				/* Defaults, if nothing set in xf86config */
- #define DRM_DEV_UID	 0
- #define DRM_DEV_GID	 0
-@@ -423,6 +428,17 @@ do {	register unsigned int __old __asm("
+     if(ioctl(fd, DRM_IOCTL_RM_MAP, &map))
+ 	return -errno;
+diff -urp -x '*~' -x '*.orig' libdrm/xf86drm.h libdrm/xf86drm.h
+--- libdrm/xf86drm.h	2008-07-01 00:51:40.000000000 -0700
++++ libdrm/xf86drm.h	2009-01-10 22:17:00.783241000 -0800
+@@ -423,6 +423,19 @@ do {	register unsigned int __old __asm("
  #endif /* architecture */
  #endif /* __GNUC__ >= 2 */
  
 +#if defined(__SUNPRO_C)
-+extern char atomic_cmpset_int(void *, unsigned int, unsigned int);
-+#define DRM_CAS(lock,old,new,__ret)             \
-+	        do {                                    \
-+			                unsigned int __result, __old = (old);   \
-+			                __result = !atomic_cmpset_int(lock,old,new); \
-+			                __ret = __result;          \
-+			        } while(0)
++#include <atomic.h>
++#define atomic_cmpset_int(p, c, n) ((c == atomic_cas_uint(p, c, n)) ? 1 : 0)
++#define DRM_CAS(lock,old,new,__ret)          \
++               do {                          \
++                                       unsigned int __result, __old = (old);\
++                                       __result = !atomic_cmpset_int(lock,__old,new);\
++                                       __ret = __result;          \
++                               } while(0)
 +#endif
 +
 +
++
  #ifndef DRM_CAS
  #define DRM_CAS(lock,old,new,ret) do { ret=1; } while (0) /* FAST LOCK FAILS */
  #endif
-diff -urp -x '*~' shared-core/drm.h shared-core/drm.h
---- shared-core/drm.h	2006-11-07 20:05:14.000000000 -0800
-+++ shared-core/drm.h	2006-11-30 20:01:39.009785000 -0800
-@@ -58,6 +58,9 @@
+diff -urp -x '*~' -x '*.orig' shared-core/drm.h shared-core/drm.h
+--- shared-core/drm.h	2008-07-01 00:55:17.000000000 -0700
++++ shared-core/drm.h	2009-01-10 22:17:00.781413000 -0800
+@@ -58,6 +58,8 @@
  #ifndef _DRM_H_
  #define _DRM_H_
  
-+
 +#include <sys/types32.h>
 +
  #ifndef __user
  #define __user
  #endif
-@@ -66,6 +69,7 @@
+@@ -69,6 +71,12 @@
  # define DEPRECATED  __attribute__ ((deprecated))
  #else
  # define DEPRECATED
-+# define __volatile__ volatile
++# ifndef __FUNCTION__
++#  define __FUNCTION__ __func__ /* C99 */
++# endif
++# ifndef __volatile__
++#  define __volatile__ volatile
++# endif
  #endif
  
  #if defined(__linux__)
-@@ -93,6 +97,63 @@
+@@ -89,6 +97,62 @@
  #define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size)
  #endif
  
 +/* Solaris-specific. */
-+#if defined(__SOLARIS__) || defined(sun)
-+#define	_IOC_NR(nr)	(((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
++#if defined(__SOLARIS__) || defined(__sun)
++#define        _IOC_NR(nr)     (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
 +
-+#define	_IOC_NRBITS	8
-+#define	_IOC_TYPEBITS   8
-+#define	_IOC_SIZEBITS   14
-+#define	_IOC_DIRBITS    2
++#define        _IOC_NRBITS     8
++#define        _IOC_TYPEBITS   8
++#define        _IOC_SIZEBITS   14
++#define        _IOC_DIRBITS    2
 +
-+#define	_IOC_NRMASK	((1 << _IOC_NRBITS)-1)
-+#define	_IOC_TYPEMASK   ((1 << _IOC_TYPEBITS)-1)
-+#define	_IOC_SIZEMASK   ((1 << _IOC_SIZEBITS)-1)
-+#define	_IOC_DIRMASK    ((1 << _IOC_DIRBITS)-1)
++#define        _IOC_NRMASK     ((1 << _IOC_NRBITS)-1)
++#define        _IOC_TYPEMASK   ((1 << _IOC_TYPEBITS)-1)
++#define        _IOC_SIZEMASK   ((1 << _IOC_SIZEBITS)-1)
++#define        _IOC_DIRMASK    ((1 << _IOC_DIRBITS)-1)
 +
-+#define	_IOC_NRSHIFT    0
-+#define	_IOC_TYPESHIFT  (_IOC_NRSHIFT+_IOC_NRBITS)
-+#define	_IOC_SIZESHIFT  (_IOC_TYPESHIFT+_IOC_TYPEBITS)
-+#define	_IOC_DIRSHIFT   (_IOC_SIZESHIFT+_IOC_SIZEBITS)
++#define        _IOC_NRSHIFT    0
++#define        _IOC_TYPESHIFT  (_IOC_NRSHIFT+_IOC_NRBITS)
++#define        _IOC_SIZESHIFT  (_IOC_TYPESHIFT+_IOC_TYPEBITS)
++#define        _IOC_DIRSHIFT   (_IOC_SIZESHIFT+_IOC_SIZEBITS)
 +
-+#define	_IOC_NONE	0U
-+#define	_IOC_WRITE	1U
-+#define	_IOC_READ	2U
++#define        _IOC_NONE       0U
++#define        _IOC_WRITE      1U
++#define        _IOC_READ       2U
 +
-+#define	_IOC(dir, type, nr, size) \
-+	(((dir)  << _IOC_DIRSHIFT) | \
-+	((type) << _IOC_TYPESHIFT) | \
-+	((nr)   << _IOC_NRSHIFT) | \
-+	((size) << _IOC_SIZESHIFT))
++#define        _IOC(dir, type, nr, size) \
++       (((dir)  << _IOC_DIRSHIFT) | \
++       ((type) << _IOC_TYPESHIFT) | \
++       ((nr)   << _IOC_NRSHIFT) | \
++       ((size) << _IOC_SIZESHIFT))
 +
 +/* used for X server compile */
 +#if !defined(_KERNEL)
-+#define	_IO(type, nr)		_IOC(_IOC_NONE, (type), (nr), 0)
-+#define	_IOR(type, nr, size)	_IOC(_IOC_READ, (type), (nr), sizeof (size))
-+#define	_IOW(type, nr, size)	_IOC(_IOC_WRITE, (type), (nr), sizeof (size))
-+#define	_IOWR(type, nr, size)	_IOC(_IOC_READ|_IOC_WRITE, \
++#define        _IO(type, nr)           _IOC(_IOC_NONE, (type), (nr), 0)
++#define        _IOR(type, nr, size)    _IOC(_IOC_READ, (type), (nr), sizeof (size))
++#define        _IOW(type, nr, size)    _IOC(_IOC_WRITE, (type), (nr), sizeof (size))
++#define        _IOWR(type, nr, size)   _IOC(_IOC_READ|_IOC_WRITE, \
 +				(type), (nr), sizeof (size))
-+
-+#define	_IOC_DIR(nr)		(((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
-+#define	_IOC_TYPE(nr)		(((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
-+#define	_IOC_NR(nr)		(((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
-+#define	_IOC_SIZE(nr)		(((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
-+
-+#define	IOC_IN			(_IOC_WRITE << _IOC_DIRSHIFT)
-+#define	IOC_OUT			(_IOC_READ << _IOC_DIRSHIFT)
-+#define	IOC_INOUT		((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
-+#define	IOCSIZE_MASK		(_IOC_SIZEMASK << _IOC_SIZESHIFT)
-+#define	IOCSIZE_SHIFT		(_IOC_SIZESHIFT)
++#define        _IOC_DIR(nr)            (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
++#define        _IOC_TYPE(nr)           (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
++#define        _IOC_NR(nr)             (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
++#define        _IOC_SIZE(nr)           (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
++#define        IOC_IN                  (_IOC_WRITE << _IOC_DIRSHIFT)
++#define        IOC_OUT                 (_IOC_READ << _IOC_DIRSHIFT)
++#define        IOC_INOUT               ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
++#define        IOCSIZE_MASK            (_IOC_SIZEMASK << _IOC_SIZESHIFT)
++#define        IOCSIZE_SHIFT           (_IOC_SIZESHIFT)
 +#endif /* _KERNEL */
 +
-+#define	DRM_IOCTL_NR(n)		_IOC_NR(n)
-+#define	DRM_IOC_VOID		IOC_VOID
-+#define	DRM_IOC_READ		IOC_OUT
-+#define	DRM_IOC_WRITE		IOC_IN
-+#define	DRM_IOC_READWRITE	IOC_INOUT
-+#define	DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size)
++#define        DRM_IOCTL_NR(n)         _IOC_NR(n)
++#define        DRM_IOC_VOID            IOC_VOID
++#define        DRM_IOC_READ            IOC_OUT
++#define        DRM_IOC_WRITE           IOC_IN
++#define        DRM_IOC_READWRITE       IOC_INOUT
++#define        DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size)
 +
-+#endif /* __Solaris__ or sun */
- #define XFREE86_VERSION(major,minor,patch,snap) \
- 		((major << 16) | (minor << 8) | patch)
- 
-@@ -140,8 +201,8 @@ typedef unsigned long long drm_u64_t;
++#endif /* __Solaris__ or __sun */
++
+ #ifdef __OpenBSD__
+ #define DRM_MAJOR       81
+ #endif
+@@ -112,7 +176,7 @@
  typedef unsigned int drm_handle_t;
  #else
  #include <sys/types.h>
--typedef u_int64_t drm_u64_t;
 -typedef unsigned long drm_handle_t;	/**< To mapped regions */
-+typedef uint64_t drm_u64_t;
 +typedef unsigned long long drm_handle_t;	/**< To mapped regions */
  #endif
  typedef unsigned int drm_context_t;	/**< GLXContext handle */
  typedef unsigned int drm_drawable_t;
-@@ -206,7 +267,9 @@ typedef struct drm_hw_lock {
+@@ -169,7 +233,9 @@ struct drm_hw_lock {
  #ifdef __SIZE_TYPE__
  # define DRM_SIZE_T __SIZE_TYPE__
  #else
-+#if !defined(__SOLARIS__) && !defined(sun)
++#if !defined(__SOLARIS__) && !defined(__sun)
  # warning "__SIZE_TYPE__ not defined.  Assuming sizeof(size_t) == sizeof(unsigned long)!"
 +#endif
  # define DRM_SIZE_T unsigned long
  #endif
  
-@@ -301,12 +364,13 @@ typedef struct drm_ctx_priv_map {
+@@ -264,12 +330,13 @@ struct drm_ctx_priv_map {
   * \sa drmAddMap().
   */
- typedef struct drm_map {
+ struct drm_map {
 -	unsigned long offset;	 /**< Requested physical address (0 for SAREA)*/
 +	unsigned long long offset;	 /**< Requested physical address (0 for SAREA)*/
-+	unsigned long long handle;
-+				/**< User-space: "Handle" to pass to mmap() */
-+				/**< Kernel-space: kernel-virtual address */
++        unsigned long long handle;  
++				 /**< User-space: "Handle" to pass to mmap() */
++			         /**< Kernel-space: kernel-virtual address */
  	unsigned long size;	 /**< Requested physical size (bytes) */
- 	drm_map_type_t type;	 /**< Type of memory to map */
- 	drm_map_flags_t flags;	 /**< Flags */
+ 	enum drm_map_type type;	 /**< Type of memory to map */
+ 	enum drm_map_flags flags;	 /**< Flags */
 -	void *handle;		 /**< User-space: "Handle" to pass to mmap() */
 -				 /**< Kernel-space: kernel-virtual address */
  	int mtrr;		 /**< MTRR slot used */
  	/*   Private data */
- } drm_map_t;
-@@ -413,18 +477,19 @@ typedef enum drm_dma_flags {
+ };
+@@ -376,18 +443,20 @@ enum drm_dma_flags {
   *
   * \sa drmAddBufs().
   */
 +typedef enum {
-+	_DRM_PAGE_ALIGN = 0x01,	/**< Align on page boundaries for DMA */
-+	_DRM_AGP_BUFFER = 0x02,	/**< Buffer is in AGP space */
-+	_DRM_SG_BUFFER  = 0x04,	/**< Scatter/gather memory buffer */
-+	_DRM_FB_BUFFER  = 0x08, /**< Buffer is in frame buffer */
-+	_DRM_PCI_BUFFER_RO = 0x10 /**< Map PCI DMA buffer read-only */
++       _DRM_PAGE_ALIGN = 0x01, /**< Align on page boundaries for DMA */
++       _DRM_AGP_BUFFER = 0x02, /**< Buffer is in AGP space */
++       _DRM_SG_BUFFER  = 0x04, /**< Scatter/gather memory buffer */
++       _DRM_FB_BUFFER  = 0x08, /**< Buffer is in frame buffer */
++       _DRM_PCI_BUFFER_RO = 0x10 /**< Map PCI DMA buffer read-only */
 +} drm_buf_flag;
- typedef struct drm_buf_desc {
++
+ struct drm_buf_desc {
  	int count;		 /**< Number of buffers of this size */
  	int size;		 /**< Size in bytes */
  	int low_mark;		 /**< Low water mark */
@@ -225,21 +221,15 @@
 -		_DRM_FB_BUFFER  = 0x08, /**< Buffer is in frame buffer */
 -		_DRM_PCI_BUFFER_RO = 0x10 /**< Map PCI DMA buffer read-only */
 -	} flags;
-+	drm_buf_flag flags;
++        drm_buf_flag flags;
  	unsigned long agp_start; /**<
  				  * Start address of where the AGP buffers are
  				  * in the AGP aperture
-@@ -470,6 +535,7 @@ typedef struct drm_buf_map {
+@@ -433,6 +502,7 @@ struct drm_buf_map {
  	void __user *virtual;		/**< Mmap'd area in user-virtual */
  #endif
- 	drm_buf_pub_t __user *list;	/**< Buffer information */
+ 	struct drm_buf_pub __user *list;	/**< Buffer information */
 +	int	fd;
- } drm_buf_map_t;
+ };
  
  /**
-@@ -930,4 +996,4 @@ typedef union drm_mm_init_arg{
- #define DRM_COMMAND_BASE                0x40
- #define DRM_COMMAND_END                 0xA0
- 
--#endif
-+#endif /* _DRM_H_ */
--- a/open-src/lib/libpciaccess/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/libpciaccess/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -38,7 +38,10 @@
 MODULE_VERSION=0.10.5
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = scanpci.man.patch 6785726.patch
+SOURCE_PATCHES = \
+	sparc-byteswap.patch,-p1 \
+	6785726.patch \
+	scanpci.man.patch 
 
 # Library name
 LIBNAME=libpciaccess
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/libpciaccess/sparc-byteswap.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,41 @@
+From 2525d8703f6948f3fa4879fd8483a964cb06faf8 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Tue, 18 Nov 2008 19:54:42 -0800
+Subject: [PATCH] Fill in byte swapping routines for big-endian Solaris machines
+
+---
+ src/common_interface.c |   18 ++++++++++++++----
+ 1 files changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/src/common_interface.c b/src/common_interface.c
+index 0cdf25d..8808fdf 100644
+--- a/src/common_interface.c
++++ b/src/common_interface.c
+@@ -52,10 +52,20 @@
+ #endif /* linux */
+ 
+ #elif defined(__sun)
+-#define	LETOH_16(x)	(x)
+-#define	HTOLE_16(x)	(x)
+-#define	LETOH_32(x)	(x)
+-#define	HTOLE_32(x)	(x)
++
++#include <sys/byteorder.h>
++
++#ifdef _BIG_ENDIAN
++# define LETOH_16(x)   BSWAP_16(x)
++# define HTOLE_16(x)   BSWAP_16(x)
++# define LETOH_32(x)   BSWAP_32(x)
++# define HTOLE_32(x)   BSWAP_32(x)
++#else
++# define LETOH_16(x)   (x)
++# define HTOLE_16(x)   (x)
++# define LETOH_32(x)   (x)
++# define HTOLE_32(x)   (x)
++#endif /* Solaris */
+ 
+ #else
+ 
+-- 
+1.5.6.5
+
--- a/open-src/lib/libxtrans/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/libxtrans/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # xtrans 1.x Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.10	08/09/18
+# @(#)Makefile	1.11	09/01/11
 #
 
 # IMPORTANT NOTE:  xtrans is not really a library, but shared source code
@@ -40,10 +40,10 @@
 MODULE_NAME=xtrans
 
 # Version number (used in path names)
-MODULE_VERSION=1.0.4
+MODULE_VERSION=1.2.3
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = inetv6.patch socket-perm.patch bug-6688467.patch,-p1 \
+SOURCE_PATCHES = inetv6.patch socket-perm.patch \
 	tsol-unix-domain.patch
 
 # Library name (used for specfiles/mapfiles)
@@ -52,8 +52,7 @@
 # Man pages to apply Sun footer to & attributes to list
 # - Xtrans has none
 
-
-# - Xtrans doesn't build a library, so we use the pkgconfig file it builds instead
+# Xtrans doesn't build a library, so use the pkgconfig file it builds instead
 LIB_BUILT = xtrans.pc
 
 include ../Makefile.inc
--- a/open-src/lib/libxtrans/bug-6688467.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-From ac13a1a34b61247a21da130f0ba9922f35d3dc3b Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <[email protected]>
-Date: Tue, 15 Apr 2008 12:32:35 -0700
-Subject: [PATCH] Sun bug #6688467: _X11TransConvertAddress: Unknown family type on 64-bit SPARC
-
-Check for socklen_t definition and if found use it instead of size_t or
-int for the length argument to getpeername/getsockname/etc.
-
-<http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6688467>
----
- Xtranssock.c |   36 ++++++++++++++++--------------------
- xtrans.m4    |    6 ++++++
- 2 files changed, 22 insertions(+), 20 deletions(-)
-
-diff --git a/Xtranssock.c b/Xtranssock.c
-index da4afe9..5ac6a62 100644
---- a/Xtranssock.c
-+++ b/Xtranssock.c
-@@ -281,6 +281,14 @@ #ifndef MAXHOSTNAMELEN
- #define MAXHOSTNAMELEN 255
- #endif
- 
-+#if defined HAVE_SOCKLEN_T || (defined(IPv6) && defined(AF_INET6))
-+# define SOCKLEN_T socklen_t
-+#elif defined(SVR4) || defined(__SCO__)
-+# define SOCKLEN_T size_t 
-+#else
-+# define SOCKLEN_T int
-+#endif
-+
- /*
-  * This provides compatibility for apps linked against system libraries
-  * that don't have IPv6 support.
-@@ -330,11 +338,7 @@ #if defined(IPv6) && defined(AF_INET6)
- #endif
-     struct sockaddr_in socknamev4;
-     void *socknamePtr;
--#if defined(SVR4) || defined(__SCO__)
--    size_t namelen;
--#else
--    int namelen;
--#endif
-+    SOCKLEN_T namelen;
- 
-     PRMSG (3,"SocketINETGetAddr(%p)\n", ciptr, 0, 0);
- 
-@@ -407,11 +411,7 @@ #if defined(IPv6) && defined(AF_INET6)
- #endif
-     struct sockaddr_in 	socknamev4;
-     void *socknamePtr;
--#if defined(SVR4) || defined(__SCO__)
--    size_t namelen;
--#else
--    int namelen;
--#endif
-+    SOCKLEN_T namelen;
- 
- #if defined(IPv6) && defined(AF_INET6)
-     if (haveIPv6 && ciptr->family == AF_INET6)
-@@ -918,7 +918,7 @@ TRANS(SocketCreateListener) (XtransConnI
- 			     int socknamelen, unsigned int flags)
- 
- {
--    int	namelen = socknamelen;
-+    SOCKLEN_T namelen = socknamelen;
-     int	fd = ciptr->fd;
-     int	retry;
- 
-@@ -998,7 +998,7 @@ #else
-     struct sockaddr_in	    sockname;
- #endif
-     unsigned short	    sport;
--    int		namelen = sizeof(sockname);
-+    SOCKLEN_T	namelen = sizeof(sockname);
-     int		status;
-     long	tmpport;
- #ifdef XTHREADS_NEEDS_BYNAMEPARAMS
-@@ -1315,7 +1315,7 @@ TRANS(SocketINETAccept) (XtransConnInfo 
- {
-     XtransConnInfo	newciptr;
-     struct sockaddr_in	sockname;
--    int			namelen = sizeof(sockname);
-+    SOCKLEN_T		namelen = sizeof(sockname);
- 
-     PRMSG (2, "SocketINETAccept(%p,%d)\n", ciptr, ciptr->fd, 0);
- 
-@@ -1394,11 +1394,7 @@ TRANS(SocketUNIXAccept) (XtransConnInfo 
- {
-     XtransConnInfo	newciptr;
-     struct sockaddr_un	sockname;
--#if defined(SVR4) || defined(__SCO__)
--    size_t namelen = sizeof sockname;
--#else
--    int namelen = sizeof sockname;
--#endif
-+    SOCKLEN_T 		namelen = sizeof sockname;
- 
-     PRMSG (2, "SocketUNIXAccept(%p,%d)\n", ciptr, ciptr->fd, 0);
- 
-@@ -2031,11 +2027,11 @@ TRANS(SocketUNIXConnect) (XtransConnInfo
- 
- {
-     struct sockaddr_un	sockname;
--    int			namelen;
-+    SOCKLEN_T		namelen;
- 
- #if defined(hpux) && defined(X11_t)
-     struct sockaddr_un	old_sockname;
--    int			old_namelen;
-+    SOCKLEN_T		old_namelen;
- #endif
- 
-     int abstract = 0;
-diff --git a/xtrans.m4 b/xtrans.m4
-index 1d80595..dfc5dd3 100644
---- a/xtrans.m4
-+++ b/xtrans.m4
-@@ -52,6 +52,12 @@ #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
-  ])
-+
-+ # POSIX.1g changed the type of pointer passed to getsockname/getpeername/etc.
-+ AC_CHECK_TYPES([socklen_t], [], [], [
-+AC_INCLUDES_DEFAULT
-+#include <sys/socket.h>])
-+ 
- ]) # XTRANS_TCP_FLAGS
- 
- # XTRANS_CONNECTION_FLAGS()
--- 
-1.4.1
-
--- a/open-src/lib/libxtrans/inetv6.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/libxtrans/inetv6.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -33,10 +33,10 @@
 shipped, we retain the old name for backwards compatibility.  
 (See PSARC 2004/285.)
 
-diff -urp -x '*~' Xtranssock.c Xtranssock.c
---- Xtranssock.c	2006-07-11 11:06:40.000000000 -0700
-+++ Xtranssock.c	2006-08-24 15:13:33.433126000 -0700
-@@ -197,6 +197,9 @@ static Sockettrans2dev Sockettrans2devta
+diff -urp -x '*~' -x '*.orig' Xtranssock.c Xtranssock.c
+--- Xtranssock.c	2008-08-07 07:31:14.000000000 -0700
++++ Xtranssock.c	2008-10-07 09:15:45.520783000 -0700
+@@ -167,6 +167,9 @@ static Sockettrans2dev Sockettrans2devta
      {"tcp",AF_INET6,SOCK_STREAM,SOCK_DGRAM,0},
      {"tcp",AF_INET,SOCK_STREAM,SOCK_DGRAM,0}, /* fallback */
      {"inet6",AF_INET6,SOCK_STREAM,SOCK_DGRAM,0},
--- a/open-src/lib/libxtrans/socket-perm.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/libxtrans/socket-perm.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -32,9 +32,9 @@
 uid or gid 0 processes.
 
 diff -urp -x '*~' -x '*.orig' Xtranssock.c Xtranssock.c
---- Xtranssock.c	2008-02-08 11:15:46.190622000 -0800
-+++ Xtranssock.c	2008-02-08 11:15:46.377257000 -0800
-@@ -1086,6 +1086,9 @@ TRANS(SocketUNIXCreateListener) (XtransC
+--- Xtranssock.c	2008-10-07 09:15:45.520783000 -0700
++++ Xtranssock.c	2008-10-07 09:15:45.707795000 -0700
+@@ -1085,6 +1085,9 @@ TRANS(SocketUNIXCreateListener) (XtransC
      oldUmask = umask (0);
  
  #ifdef UNIX_DIR
--- a/open-src/lib/libxtrans/tsol-unix-domain.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/libxtrans/tsol-unix-domain.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -34,21 +34,20 @@
 to the above loopback mounted dir.
 (See LSARC/2008/506)
 
-diff -urp -x '*~' Xtranssock.c Xtranssock.c
---- Xtranssock.c	2008-09-18 14:32:55
-+++ Xtransock.c		2008-09-18 14:35:26
-@@ -83,6 +83,10 @@
+diff -urp -x '*~' -x '*.orig' Xtranssock.c Xtranssock.c
+--- Xtranssock.c	2008-10-07 09:15:45.707795000 -0700
++++ Xtranssock.c	2008-10-07 09:15:46.001995000 -0700
+@@ -74,6 +74,9 @@ from the copyright holders.
  #include <sys/stat.h>
  #endif
  
 +#if defined(X11_t)
 +#include <tsol/label.h>
 +#endif /* X11_t */
-+
- #if defined(hpux) || (defined(MOTOROLA) && defined(SYSV))
- #define NO_TCP_H
- #endif 
-@@ -252,6 +256,7 @@
+ 
+ #ifndef NO_TCP_H
+ #if defined(linux) || defined(__GLIBC__) 
+@@ -192,6 +195,7 @@ static int TRANS(SocketINETClose) (Xtran
  #if defined(X11_t)
  #define UNIX_PATH "/tmp/.X11-unix/X"
  #define UNIX_DIR "/tmp/.X11-unix"
@@ -56,7 +55,7 @@
  #endif /* X11_t */
  #if defined(XIM_t)
  #define UNIX_PATH "/tmp/.XIM-unix/XIM"
-@@ -1094,6 +1099,29 @@
+@@ -1093,6 +1097,29 @@ TRANS(SocketUNIXCreateListener) (XtransC
  #else
      mode = 0777;
  #endif
@@ -65,7 +64,7 @@
 +    if (is_system_labeled()) {
 +	struct stat sbuf;
 +
-+        if (trans_mkdir(TSOL_UNIX_DIR, mode) == -1) {
++        if (!abstract && trans_mkdir(TSOL_UNIX_DIR, mode) == -1) {
 +	    PRMSG (1, "SocketUNIXCreateListener: mkdir(%s) failed, errno = %d\n",
 +	       TSOL_UNIX_DIR, errno, 0);
 +	    (void) umask (oldUmask);
@@ -83,10 +82,10 @@
 +
 +    } else 
 +#endif /* X11_t */
-     if (trans_mkdir(UNIX_DIR, mode) == -1) {
+     if (!abstract && trans_mkdir(UNIX_DIR, mode) == -1) {
  	PRMSG (1, "SocketUNIXCreateListener: mkdir(%s) failed, errno = %d\n",
  	       UNIX_DIR, errno, 0);
-@@ -1992,10 +2020,28 @@
+@@ -1996,10 +2023,28 @@ TRANS(SocketUNIXConnect) (XtransConnInfo
  	return TRANS_CONNECT_FAILED;
      }
  
@@ -115,4 +114,4 @@
 +
      sockname.sun_family = AF_UNIX;
  
-     if (set_sun_path(port, UNIX_PATH, sockname.sun_path) != 0) {
+     if (set_sun_path(port, UNIX_PATH, sockname.sun_path, abstract) != 0) {
--- a/open-src/lib/mesa/6538497.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
---- src/mesa/drivers/dri/i915/server/i830_common.h	Fri Sep 29 00:42:14 2006
-+++ src/mesa/drivers/dri/i915/server/i830_common.h	Wed Apr  4 09:59:55 2007
-@@ -89,6 +89,7 @@
-         int pf_current_page;	/* which buffer is being displayed? */
-         int perf_boxes;	        /* performance boxes to be displayed */   
- 	int width, height;      /* screen size in pixels */
-+	int pad0;
- 
- 	drm_handle_t front_handle;
- 	int front_offset;
-
-
---- src/mesa/drivers/dri/i915/server/i830_dri.h	Mon Jan 23 18:10:49 2006
-+++ src/mesa/drivers/dri/i915/server/i830_dri.h	Wed Apr  4 10:04:50 2007
-@@ -22,16 +22,20 @@
-    drm_handle_t backbuffer;
- 
-    drmSize depthbufferSize;
-+   drmSize pad0;
-    drm_handle_t depthbuffer;
- 
-    drmSize rotatedSize;
-+   drmSize pad1;
-    drm_handle_t rotatedbuffer;
- 
-    drm_handle_t textures;
-    int textureSize;
-+   drmSize pad2;
- 
-    drm_handle_t agp_buffers;
-    drmSize agp_buf_size;
-+   drmSize pad3;
- 
-    int deviceID;
-    int width;
--- a/open-src/lib/mesa/6559710.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
---- src/mesa/drivers/dri/i915/intel_screen.c	Fri Jun  1 14:32:10 2007
-+++ src/mesa/drivers/dri/i915/intel_screen.c	Fri Jun  1 14:31:24 2007
-@@ -362,8 +362,6 @@
-    (void) sigset(SIGTSTP, stop_handler);
-    (void) sigset(SIGTTIN, stop_handler);
-    (void) sigset(SIGTTOU, stop_handler);
--   (void) sigset(SIGINT, exit_handler);
--   (void) sigset(SIGTERM, exit_handler);
- 
- 
-    return GL_TRUE;
--- a/open-src/lib/mesa/6709716.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
---- src/mesa/drivers/dri/i965/intel_screen.h	Wed Aug  9 12:14:05 2006
-+++ src/mesa/drivers/dri/i965/intel_screen.h	Mon Apr 28 14:30:06 2008
-@@ -42,6 +42,7 @@
-    char *map;           /* memory map */
-    int offset;          /* from start of video mem, in bytes */
-    int pitch;           /* row stride, in pixels */
-+   unsigned int tiled;
- } intelRegion;
- 
- typedef struct 
---- src/mesa/drivers/dri/i965/intel_screen.c	Sat Oct 28 16:10:56 2006
-+++ src/mesa/drivers/dri/i965/intel_screen.c	Mon Apr 28 14:28:03 2008
-@@ -230,16 +230,19 @@
-    intelScreen->front.pitch = sarea->pitch * intelScreen->cpp;
-    intelScreen->front.handle = sarea->front_handle;
-    intelScreen->front.size = sarea->front_size;
-+   intelScreen->front.tiled = sarea->front_tiled;
- 
-    intelScreen->back.offset = sarea->back_offset;
-    intelScreen->back.pitch = sarea->pitch * intelScreen->cpp;
-    intelScreen->back.handle = sarea->back_handle;
-    intelScreen->back.size = sarea->back_size;
-+   intelScreen->back.tiled = sarea->back_tiled;
- 			 
-    intelScreen->depth.offset = sarea->depth_offset;
-    intelScreen->depth.pitch = sarea->pitch * intelScreen->cpp;
-    intelScreen->depth.handle = sarea->depth_handle;
-    intelScreen->depth.size = sarea->depth_size;
-+   intelScreen->depth.tiled = sarea->depth_tiled;
- 
-    intelScreen->tex.offset = sarea->tex_offset;
-    intelScreen->logTextureGranularity = sarea->log_tex_granularity;
-@@ -249,6 +252,7 @@
-    intelScreen->rotated.offset = sarea->rotated_offset;
-    intelScreen->rotated.pitch = sarea->rotated_pitch * intelScreen->cpp;
-    intelScreen->rotated.size = sarea->rotated_size;
-+   intelScreen->rotated.tiled = sarea->rotated_tiled;
-    intelScreen->current_rotation = sarea->rotation;
- #if 0
-    matrix23Rotate(&intelScreen->rotMatrix,
--- a/open-src/lib/mesa/6709720.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,323 +0,0 @@
---- src/mesa/drivers/dri/i965/intel_context.c	Mon Apr 28 14:46:55 2008
-+++ src/mesa/drivers/dri/i965/intel_context.c	Tue Apr 29 08:35:16 2008
-@@ -117,6 +117,12 @@
-       case PCI_CHIP_I946_GZ:
- 	 chipset = "Intel(R) 946GZ"; break;
-          break;
-+      case PCI_CHIP_I965_GM:
-+         chipset = "Intel(R) 965GM"; break;
-+         break;
-+      case PCI_CHIP_I965_GME:
-+         chipset = "Intel(R) 965GME/GLE";
-+         break;
-       default:
- 	 chipset = "Unknown Intel Chipset"; break;
-       }
-@@ -537,6 +543,11 @@
-    return GL_TRUE;
- }
- 
-+static void lost_hardware( struct intel_context *intel )
-+{
-+   bm_fake_NotifyContendedLockTake( intel );
-+   intel->vtbl.lost_hardware( intel );
-+}
- 
- static void intelContendedLock( struct intel_context *intel, GLuint flags )
- {
-@@ -565,7 +576,7 @@
-    if (sarea->ctxOwner != me) {
-       DBG("Lost Context: sarea->ctxOwner %x me %x\n", sarea->ctxOwner, me);
-       sarea->ctxOwner = me;
--      intel->vtbl.lost_hardware( intel );
-+      lost_hardware( intel );
-    }
- 
-    /* As above, but don't evict the texture data on transitions
---- src/mesa/drivers/dri/i965/intel_context.h	Sat Dec  2 10:14:17 2006
-+++ src/mesa/drivers/dri/i965/intel_context.h	Tue Apr 29 08:36:18 2008
-@@ -383,8 +383,11 @@
- #define PCI_CHIP_I965_Q			0x2992
- #define PCI_CHIP_I965_G_1		0x2982
- #define PCI_CHIP_I946_GZ		0x2972
-+#define PCI_CHIP_I965_GM               0x2A02
-+#define PCI_CHIP_I965_GME              0x2A12
- 
- 
-+
- /* ================================================================
-  * intel_context.c:
-  */
---- src/mesa/drivers/dri/i965/intel_ioctl.c	Sat Oct 28 16:10:56 2006
-+++ src/mesa/drivers/dri/i965/intel_ioctl.c	Tue Apr 29 08:37:39 2008
-@@ -75,7 +75,7 @@
- {
-    if (!intel->no_hw) {
-       drmI830IrqWait iw;
--      int ret;
-+      int ret, lastdispatch;
-       
-       if (0)
- 	 fprintf(stderr, "%s %d\n", __FUNCTION__, seq );
-@@ -83,12 +83,14 @@
-       iw.irq_seq = seq;
- 	
-       do {
-+         lastdispatch = intel->sarea->last_dispatch;
- 	 ret = drmCommandWrite( intel->driFd, DRM_I830_IRQ_WAIT, &iw, sizeof(iw) );
- 
- 	 /* This seems quite often to return before it should!?! 
- 	  */
--      } while (ret == -EAGAIN || ret == -EINTR || (ret == 0 && seq > intel->sarea->last_dispatch));
--      
-+     } while (ret == -EAGAIN || ret == -EINTR || (ret == -EBUSY && lastdispa
-+tch != intel->sarea->last_dispatch) || (ret == 0 && seq > intel->sarea->last_dis
-+patch) || (ret == 0 && intel->sarea->last_dispatch - seq >= (1 << 24))); 
- 
-       if ( ret ) {
- 	 fprintf( stderr, "%s: drmI830IrqWait: %d\n", __FUNCTION__, ret );
-
---- src/mesa/drivers/dri/i965/intel_regions.c	Tue Nov 21 07:03:46 2006
-+++ src/mesa/drivers/dri/i965/intel_regions.c	Tue Apr 29 08:38:35 2008
-@@ -122,10 +122,10 @@
- 						 GLuint cpp,
- 						 GLuint pitch, 
- 						 GLuint height,
-+ 					         GLuint size,
- 						 GLboolean tiled )
- {
-    struct intel_region *region = calloc(sizeof(*region), 1);
--   GLuint size = cpp * pitch * height;
-    GLint pool;
- 
-    DBG("%s\n", __FUNCTION__);
-
---- src/mesa/drivers/dri/i965/intel_regions.h	Mon Sep 11 14:35:49 2006
-+++ src/mesa/drivers/dri/i965/intel_regions.h	Tue Apr 29 08:39:25 2008
-@@ -78,6 +78,7 @@
- 						 GLuint cpp,
- 						 GLuint pitch,
- 						 GLuint height,
-+						 GLuint size,
- 						 GLboolean tiled );
- 
- /* Map/unmap regions.  This is refcounted also: 
-
-
---- src/mesa/drivers/dri/i965/brw_exec_api.c	Mon Sep 25 17:46:39 2006
-+++ src/mesa/drivers/dri/i965/brw_exec_api.c	Tue Apr 29 08:28:37 2008
-@@ -40,6 +40,7 @@
- #include "api_arrayelt.h"
- #include "api_noop.h"
- #include "dispatch.h"
-+#include "intel_context.h"
- 
- #include "brw_exec.h"
- 
-@@ -522,6 +523,15 @@
-       
- }
- 
-+static GLuint brw_max_prim( GLcontext *ctx )
-+{
-+        struct intel_context *intel = intel_context( ctx );
-+        if (intel->numClipRects <= 1)
-+                return BRW_MAX_PRIM;
-+        return BRW_MAX_PRIM/intel->numClipRects;
-+}
-+
-+
- static void GLAPIENTRY brw_exec_End( void )
- {
-    GET_CURRENT_CONTEXT( ctx ); 
-@@ -536,7 +546,7 @@
- 
-       ctx->Driver.CurrentExecPrimitive = GL_POLYGON+1;
- 
--      if (exec->vtx.prim_count == BRW_MAX_PRIM)
-+      if (exec->vtx.prim_count >= brw_max_prim(ctx))
- 	 brw_exec_vtx_flush( exec );	
-    }
-    else 
-
---- src/mesa/drivers/dri/i965/brw_save_api.c	Tue Nov 21 07:03:46 2006
-+++ src/mesa/drivers/dri/i965/brw_save_api.c	Tue Apr 29 08:30:41 2008
-@@ -417,7 +417,7 @@
-    struct brw_save_context *save = IMM_CONTEXT(ctx)->save; 
-    GLuint i;
- 
--   for (i = BRW_ATTRIB_POS+1 ; i < BRW_ATTRIB_MAX ; i++) {
-+   for (i = 0 ; i < BRW_ATTRIB_MAX ; i++) {
-       if (save->attrsz[i]) {
- 	 save->currentsz[i][0] = save->attrsz[i];
- 	 COPY_CLEAN_4V(save->current[i], 
-@@ -445,7 +445,7 @@
-    struct brw_save_context *save = IMM_CONTEXT(ctx)->save; 
-    GLint i;
- 
--   for (i = BRW_ATTRIB_POS+1 ; i < BRW_ATTRIB_MAX ; i++) 
-+   for (i = 0 ; i < BRW_ATTRIB_MAX ; i++)
-       switch (save->attrsz[i]) {
-       case 4: save->attrptr[i][3] = save->current[i][3];
-       case 3: save->attrptr[i][2] = save->current[i][2];
-
---- src/mesa/drivers/dri/i965/brw_save_draw.c	Tue Nov 21 07:03:46 2006
-+++ src/mesa/drivers/dri/i965/brw_save_draw.c	Tue Apr 29 08:31:47 2008
-@@ -37,6 +37,7 @@
- #include "brw_save.h"
- #include "brw_draw.h"
- #include "brw_fallback.h"
-+#include "brw_context.h"
- 
- /*
-  * After playback, copy everything but the position from the
-@@ -77,12 +78,6 @@
-       }
-    }
- 
--   /* Edgeflag requires special treatment:
--    */
--   if (node->attrsz[BRW_ATTRIB_EDGEFLAG]) {
--      ctx->Current.EdgeFlag = (data[0] == 1.0);
--   }
--
- 
- #if 1
-    /* Colormaterial -- this kindof sucks.
-
---- src/mesa/drivers/dri/i915/intel_context.c	Thu Nov  2 14:29:39 2006
-+++ src/mesa/drivers/dri/i915/intel_context.c	Tue Apr 29 08:21:01 2008
-@@ -122,6 +122,14 @@
- 	 chipset = "Intel(R) 945G"; break;
-       case PCI_CHIP_I945_GM:
- 	 chipset = "Intel(R) 945GM"; break;
-+      case PCI_CHIP_I945_GME:
-+        chipset = "Intel(R) 945GME"; break;
-+      case PCI_CHIP_G33_G:
-+        chipset = "Intel(R) G33"; break;
-+      case PCI_CHIP_Q35_G:
-+        chipset = "Intel(R) Q35"; break;
-+      case PCI_CHIP_Q33_G:
-+        chipset = "Intel(R) Q33"; break;
-       default:
- 	 chipset = "Unknown Intel Chipset"; break;
-       }
-
---- src/mesa/drivers/dri/i915/intel_screen.c	Mon Apr 28 14:46:55 2008
-+++ src/mesa/drivers/dri/i915/intel_screen.c	Tue Apr 29 08:23:52 2008
-@@ -530,6 +530,10 @@
-    case PCI_CHIP_I915_GM:
-    case PCI_CHIP_I945_G:
-    case PCI_CHIP_I945_GM:
-+   case PCI_CHIP_I945_GME:
-+   case PCI_CHIP_G33_G:
-+   case PCI_CHIP_Q35_G:
-+   case PCI_CHIP_Q33_G:
-       return i915CreateContext( mesaVis, driContextPriv, 
- 			       sharedContextPrivate );
-  
---- src/mesa/drivers/dri/i915/intel_tex.c	Fri Apr  7 01:50:39 2006
-+++ src/mesa/drivers/dri/i915/intel_tex.c	Tue Apr 29 08:25:03 2008
-@@ -675,7 +675,11 @@
-    /* Time for another vtbl entry:
-     */
-    else if (intel->intelScreen->deviceID == PCI_CHIP_I945_G ||
--            intel->intelScreen->deviceID == PCI_CHIP_I945_GM) {
-+            intel->intelScreen->deviceID == PCI_CHIP_I945_GM ||
-+	    intel->intelScreen->deviceID == PCI_CHIP_I945_GME ||
-+            intel->intelScreen->deviceID == PCI_CHIP_G33_G ||
-+            intel->intelScreen->deviceID == PCI_CHIP_Q33_G ||
-+            intel->intelScreen->deviceID == PCI_CHIP_Q35_G) {
-       GLuint row_len = image->Width * image->TexFormat->TexelBytes;
-       GLubyte *dst = (GLubyte *)(t->BufAddr + offset);
-       GLubyte *src = (GLubyte *)image->Data;
-
---- src/mesa/drivers/dri/i915/i915_texstate.c	Thu Apr  6 09:23:40 2006
-+++ src/mesa/drivers/dri/i915/i915_texstate.c	Tue Apr 29 08:19:12 2008
-@@ -496,11 +496,19 @@
-    }
- 
- 
--   if (i915->intel.intelScreen->deviceID == PCI_CHIP_I945_G ||
--       i915->intel.intelScreen->deviceID == PCI_CHIP_I945_GM)
--      i945LayoutTextureImages( i915, tObj );	 
--   else
--      i915LayoutTextureImages( i915, tObj );
-+   switch (i915->intel.intelScreen->deviceID) {
-+  	case PCI_CHIP_I945_G:
-+  	case PCI_CHIP_I945_GM:
-+  	case PCI_CHIP_I945_GME:
-+  	case PCI_CHIP_G33_G:
-+  	case PCI_CHIP_Q33_G:
-+  	case PCI_CHIP_Q35_G:
-+      		i945LayoutTextureImages( i915, tObj );	 
-+      		break;
-+  	default:
-+      		i915LayoutTextureImages( i915, tObj );
-+		break;
-+   }
- 
-    t->Setup[I915_TEXREG_MS3] = 
-       (((tObj->Image[0][t->intel.base.firstLevel]->Height - 1) << MS3_HEIGHT_SHIFT) |
-
---- src/mesa/drivers/dri/i915/intel_context.h	Tue Apr 29 08:51:01 2008
-+++ src/mesa/drivers/dri/i915/intel_context.h	Tue Apr 29 08:57:33 2008
-@@ -495,8 +495,13 @@
- #define PCI_CHIP_I915_GM		0x2592
- #define PCI_CHIP_I945_G			0x2772
- #define PCI_CHIP_I945_GM		0x27A2
-+#define PCI_CHIP_I945_GME              0x27AE
-+#define PCI_CHIP_G33_G                 0x29C2
-+#define PCI_CHIP_Q35_G                 0x29B2
-+#define PCI_CHIP_Q33_G                 0x29D2
- 
- 
-+
- /* ================================================================
-  * intel_context.c:
-  */
---- src/mesa/drivers/dri/i965/intel_context.c	Tue Apr 29 09:04:54 2008
-+++ src/mesa/drivers/dri/i965/intel_context.c	Tue Apr 29 09:12:22 2008
-@@ -409,7 +409,8 @@
- 				 intelScreen->cpp,
- 				 intelScreen->front.pitch / intelScreen->cpp,
- 				 intelScreen->height,
--				 GL_FALSE);
-+				 intelScreen->front.size,
-+                                 intelScreen->front.tiled != 0);
- 
- 
-    intel->back_region = 
-@@ -420,7 +421,8 @@
- 				 intelScreen->cpp,
- 				 intelScreen->back.pitch / intelScreen->cpp,
- 				 intelScreen->height,
--				 (INTEL_DEBUG & DEBUG_TILE) ? 0 : 1);
-+				 intelScreen->back.size,
-+                                 intelScreen->back.tiled != 0);
- 
-    /* Still assuming front.cpp == depth.cpp
-     *
-@@ -436,7 +438,8 @@
- 				 intelScreen->cpp,
- 				 intelScreen->depth.pitch / intelScreen->cpp,
- 				 intelScreen->height,
--				 (INTEL_DEBUG & DEBUG_TILE) ? 0 : 1);
-+				 intelScreen->depth.size,
-+                                 intelScreen->depth.tiled != 0);
-    
-    intel_bufferobj_init( intel );
-    intel->batch = intel_batchbuffer_alloc( intel );
---- src/mesa/drivers/dri/i965/intel_ioctl.c	Tue Apr 29 09:18:46 2008
-+++ src/mesa/drivers/dri/i965/intel_ioctl.c	Tue Apr 29 09:30:08 2008
-@@ -88,9 +88,7 @@
- 
- 	 /* This seems quite often to return before it should!?! 
- 	  */
--     } while (ret == -EAGAIN || ret == -EINTR || (ret == -EBUSY && lastdispa
--tch != intel->sarea->last_dispatch) || (ret == 0 && seq > intel->sarea->last_dis
--patch) || (ret == 0 && intel->sarea->last_dispatch - seq >= (1 << 24))); 
-+     } while (ret == -EAGAIN || ret == -EINTR || (ret == -EBUSY && lastdispatch != intel->sarea->last_dispatch) || (ret == 0 && seq > intel->sarea->last_dispatch) || (ret == 0 && intel->sarea->last_dispatch - seq >= (1 << 24)));
- 
-       if ( ret ) {
- 	 fprintf( stderr, "%s: drmI830IrqWait: %d\n", __FUNCTION__, ret );
--- a/open-src/lib/mesa/6756412.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,423 +0,0 @@
---- include/GL/internal/glcore.h	Thu Jun 19 16:28:49 2008
-+++ include/GL/internal/glcore.h	Thu Jun 19 16:33:23 2008
-@@ -38,11 +38,17 @@
- 
- #include <sys/types.h>
- 
-+#ifdef CAPI
-+#undef CAPI
-+#endif
-+#define CAPI
-+
- #define GL_CORE_SGI  1
- #define GL_CORE_MESA 2
- #define GL_CORE_APPLE 4
- 
- typedef struct __GLcontextRec __GLcontext;
-+typedef struct __GLinterfaceRec __GLinterface;
- 
- /*
- ** This file defines the interface between the GL core and the surrounding
-@@ -180,4 +186,333 @@
- #define GLX_TEXTURE_2D_BIT_EXT             0x00000002
- #define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
- 
-+/************************************************************************/
-+
-+/*
-+** Structure used for allocating and freeing drawable private memory.
-+** (like software buffers, for example).
-+**
-+** The memory allocation routines are provided by the surrounding
-+** "operating system" code, and they are to be used for allocating
-+** software buffers and things which are associated with the drawable,
-+** and used by any context which draws to that drawable.  There are
-+** separate memory allocation functions for drawables and contexts
-+** since drawables and contexts can be created and destroyed independently
-+** of one another, and the "operating system" may want to use separate
-+** allocation arenas for each.
-+**
-+** The freePrivate function is filled in by the core routines when they
-+** allocates software buffers, and stick them in "private".  The freePrivate
-+** function will destroy anything allocated to this drawable (to be called
-+** when the drawable is destroyed).
-+*/
-+typedef struct __GLdrawableRegionRec __GLdrawableRegion;
-+typedef struct __GLdrawableBufferRec __GLdrawableBuffer;
-+typedef struct __GLdrawablePrivateRec __GLdrawablePrivate;
-+
-+typedef struct __GLregionRectRec {
-+    /* lower left (inside the rectangle) */
-+    GLint x0, y0;
-+    /* upper right (outside the rectangle) */
-+    GLint x1, y1;
-+} __GLregionRect;
-+
-+struct __GLdrawableRegionRec {
-+    GLint numRects;
-+    __GLregionRect *rects;
-+    __GLregionRect boundingRect;
-+};
-+
-+/************************************************************************/
-+
-+/* masks for the buffers */
-+#define __GL_FRONT_BUFFER_MASK		0x00000001
-+#define	__GL_FRONT_LEFT_BUFFER_MASK	0x00000001
-+#define	__GL_FRONT_RIGHT_BUFFER_MASK	0x00000002
-+#define	__GL_BACK_BUFFER_MASK		0x00000004
-+#define __GL_BACK_LEFT_BUFFER_MASK	0x00000004
-+#define __GL_BACK_RIGHT_BUFFER_MASK	0x00000008
-+#define	__GL_ACCUM_BUFFER_MASK		0x00000010
-+#define	__GL_DEPTH_BUFFER_MASK		0x00000020
-+#define	__GL_STENCIL_BUFFER_MASK	0x00000040
-+#define	__GL_AUX_BUFFER_MASK(i)		(0x0000080 << (i))
-+
-+#define __GL_ALL_BUFFER_MASK		0xffffffff
-+
-+/* what Resize routines return if resize resorted to fallback case */
-+#define __GL_BUFFER_FALLBACK	0x10
-+
-+typedef void (*__GLbufFallbackInitFn)(__GLdrawableBuffer *buf, 
-+				      __GLdrawablePrivate *glPriv, GLint bits);
-+typedef void (*__GLbufMainInitFn)(__GLdrawableBuffer *buf, 
-+				  __GLdrawablePrivate *glPriv, GLint bits,
-+				  __GLbufFallbackInitFn back);
-+
-+/*
-+** A drawable buffer
-+**
-+** This data structure describes the context side of a drawable.  
-+**
-+** According to the spec there could be multiple contexts bound to the same
-+** drawable at the same time (from different threads).  In order to avoid
-+** multiple-access conflicts, locks are used to serialize access.  When a
-+** thread needs to access (read or write) a member of the drawable, it takes
-+** a lock first.  Some of the entries in the drawable are treated "mostly
-+** constant", so we take the freedom of allowing access to them without
-+** taking a lock (for optimization reasons).
-+**
-+** For more details regarding locking, see buffers.h in the GL core
-+*/
-+struct __GLdrawableBufferRec {
-+    /*
-+    ** Buffer dimensions
-+    */
-+    GLint width, height, depth;
-+
-+    /*
-+    ** Framebuffer base address
-+    */
-+    void *base;
-+
-+    /*
-+    ** Framebuffer size (in bytes)
-+    */
-+    GLuint size;
-+
-+    /*
-+    ** Size (in bytes) of each element in the framebuffer
-+    */
-+    GLuint elementSize;
-+    GLuint elementSizeLog2;
-+
-+    /*
-+    ** Element skip from one scanline to the next.
-+    ** If the buffer is part of another buffer (for example, fullscreen
-+    ** front buffer), outerWidth is the width of that buffer.
-+    */
-+    GLint outerWidth;
-+
-+    /*
-+    ** outerWidth * elementSize
-+    */
-+    GLint byteWidth;
-+
-+    /*
-+    ** Allocation/deallocation is done based on this handle.  A handle
-+    ** is conceptually different from the framebuffer 'base'.
-+    */
-+    void *handle;
-+
-+    /* imported */
-+    GLboolean (*resize)(__GLdrawableBuffer *buf,
-+			GLint x, GLint y, GLuint width, GLuint height, 
-+			__GLdrawablePrivate *glPriv, GLuint bufferMask);
-+    void (*lock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
-+    void (*unlock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
-+    void (*fill)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv,
-+    		GLuint val, GLint x, GLint y, GLint w, GLint h);
-+    void (*free)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
-+
-+    /* exported */
-+    void (*freePrivate)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
-+#ifdef __cplusplus
-+    void *privatePtr;
-+#else
-+    void *private;
-+#endif
-+
-+    /* private */
-+    void *other;	/* implementation private data */
-+    __GLbufMainInitFn mainInit;
-+    __GLbufFallbackInitFn fallbackInit;
-+};
-+
-+/*
-+** The context side of the drawable private
-+*/
-+struct __GLdrawablePrivateRec {
-+    /*
-+    ** Drawable Modes
-+    */
-+    __GLcontextModes *modes;
-+
-+    /*
-+    ** Drawable size
-+    */
-+    GLuint width, height;
-+
-+    /*
-+    ** Origin in screen coordinates of the drawable
-+    */
-+    GLint xOrigin, yOrigin;
-+#ifdef __GL_ALIGNED_BUFFERS
-+    /*
-+    ** Drawable offset from screen origin
-+    */
-+    GLint xOffset, yOffset;
-+
-+    /*
-+    ** Alignment restriction
-+    */
-+    GLint xAlignment, yAlignment;
-+#endif
-+    /*
-+    ** Should we invert the y axis?
-+    */
-+    GLint yInverted;
-+
-+    /*
-+    ** Mask specifying which buffers are renderable by the hw
-+    */
-+    GLuint accelBufferMask;
-+
-+    /*
-+    ** the buffers themselves
-+    */
-+    __GLdrawableBuffer frontBuffer;
-+    __GLdrawableBuffer backBuffer;
-+    __GLdrawableBuffer accumBuffer;
-+    __GLdrawableBuffer depthBuffer;
-+    __GLdrawableBuffer stencilBuffer;
-+#if defined(__GL_NUMBER_OF_AUX_BUFFERS) && (__GL_NUMBER_OF_AUX_BUFFERS > 0)
-+    __GLdrawableBuffer *auxBuffer;
-+#endif
-+
-+    __GLdrawableRegion ownershipRegion;
-+
-+    /*
-+    ** Lock for the drawable private structure
-+    */
-+    void *lock;
-+#ifdef DEBUG
-+    /* lock debugging info */
-+    int lockRefCount;
-+    int lockLine[10];
-+    char *lockFile[10];
-+#endif
-+
-+    /* imported */
-+    void *(*malloc)(size_t size);
-+    void *(*calloc)(size_t numElem, size_t elemSize);
-+    void *(*realloc)(void *oldAddr, size_t newSize);
-+    void (*free)(void *addr);
-+
-+    GLboolean (*addSwapRect)(__GLdrawablePrivate *glPriv, 
-+			     GLint x, GLint y, GLsizei width, GLsizei height);
-+    void (*setClipRect)(__GLdrawablePrivate *glPriv, 
-+			GLint x, GLint y, GLsizei width, GLsizei height);
-+    void (*updateClipRegion)(__GLdrawablePrivate *glPriv);
-+    GLboolean (*resize)(__GLdrawablePrivate *glPriv);
-+    void (*getDrawableSize)(__GLdrawablePrivate *glPriv, 
-+			    GLint *x, GLint *y, GLuint *width, GLuint *height);
-+
-+    void (*lockDP)(__GLdrawablePrivate *glPriv, __GLcontext *gc);
-+    void (*unlockDP)(__GLdrawablePrivate *glPriv);
-+
-+    /* exported */
-+#ifdef __cplusplus
-+    void *privatePtr;
-+#else
-+    void *private;
-+#endif
-+    void (*freePrivate)(__GLdrawablePrivate *);
-+
-+    /* client data */
-+    void *other;
-+};
-+
-+/*
-+** Macros to lock/unlock the drawable private
-+*/
-+#if defined(DEBUG)
-+#define __GL_LOCK_DP(glPriv,gc) \
-+    (*(glPriv)->lockDP)(glPriv,gc); \
-+    (glPriv)->lockLine[(glPriv)->lockRefCount] = __LINE__; \
-+    (glPriv)->lockFile[(glPriv)->lockRefCount] = __FILE__; \
-+    (glPriv)->lockRefCount++
-+#define __GL_UNLOCK_DP(glPriv) \
-+    (glPriv)->lockRefCount--; \
-+    (glPriv)->lockLine[(glPriv)->lockRefCount] = 0; \
-+    (glPriv)->lockFile[(glPriv)->lockRefCount] = NULL; \
-+    (*(glPriv)->unlockDP)(glPriv)
-+#else /* DEBUG */
-+#define __GL_LOCK_DP(glPriv,gc)		(*(glPriv)->lockDP)(glPriv,gc)
-+#define	__GL_UNLOCK_DP(glPriv)		(*(glPriv)->unlockDP)(glPriv)
-+#endif /* DEBUG */
-+
-+
-+/*
-+** Procedures which are imported by the GL from the surrounding
-+** "operating system".  Math functions are not considered part of the
-+** "operating system".
-+*/
-+typedef struct __GLimportsRec {
-+    /* Memory management */
-+    void * (*malloc)(__GLcontext *gc, size_t size);
-+    void *(*calloc)(__GLcontext *gc, size_t numElem, size_t elemSize);
-+    void *(*realloc)(__GLcontext *gc, void *oldAddr, size_t newSize);
-+    void (*free)(__GLcontext *gc, void *addr);
-+
-+    /* Error handling */
-+    void (*warning)(__GLcontext *gc, char *fmt);
-+    void (*fatal)(__GLcontext *gc, char *fmt);
-+
-+    /* other system calls */
-+    char *(CAPI *getenv)(__GLcontext *gc, const char *var);
-+    int (CAPI *atoi)(__GLcontext *gc, const char *str);
-+    int (CAPI *sprintf)(__GLcontext *gc, char *str, const char *fmt, ...);
-+    void *(CAPI *fopen)(__GLcontext *gc, const char *path, const char *mode);
-+    int (CAPI *fclose)(__GLcontext *gc, void *stream);
-+    int (CAPI *fprintf)(__GLcontext *gc, void *stream, const char *fmt, ...);
-+
-+    /* Drawing surface management */
-+    __GLdrawablePrivate *(*getDrawablePrivate)(__GLcontext *gc);
-+    __GLdrawablePrivate *(*getReadablePrivate)(__GLcontext *gc);
-+
-+    /* Operating system dependent data goes here */
-+    void *other;
-+} __GLimports;
-+
-+/************************************************************************/
-+
-+/*
-+** Procedures which are exported by the GL to the surrounding "operating
-+** system" so that it can manage multiple GL context's.
-+*/
-+typedef struct __GLexportsRec {
-+    /* Context management (return GL_FALSE on failure) */
-+    GLboolean (*destroyContext)(__GLcontext *gc);
-+    GLboolean (*loseCurrent)(__GLcontext *gc);
-+    /* oldglPriv isn't used anymore, kept for backwards compatibility */
-+    GLboolean (*makeCurrent)(__GLcontext *gc);
-+    GLboolean (*shareContext)(__GLcontext *gc, __GLcontext *gcShare);
-+    GLboolean (*copyContext)(__GLcontext *dst, const __GLcontext *src, GLuint mask);
-+    GLboolean (*forceCurrent)(__GLcontext *gc);
-+
-+    /* Drawing surface notification callbacks */
-+    GLboolean (*notifyResize)(__GLcontext *gc);
-+    void (*notifyDestroy)(__GLcontext *gc);
-+    void (*notifySwapBuffers)(__GLcontext *gc);
-+
-+    /* Dispatch table override control for external agents like libGLS */
-+    struct __GLdispatchStateRec* (*dispatchExec)(__GLcontext *gc);
-+    void (*beginDispatchOverride)(__GLcontext *gc);
-+    void (*endDispatchOverride)(__GLcontext *gc);
-+} __GLexports;
-+
-+/************************************************************************/
-+
-+/*
-+** This must be the first member of a __GLcontext structure.  This is the
-+** only part of a context that is exposed to the outside world; everything
-+** else is opaque.
-+*/
-+struct __GLinterfaceRec {
-+    __GLimports imports;
-+    __GLexports exports;
-+};
-+
-+extern __GLcontext *__glCoreCreateContext(__GLimports *, __GLcontextModes *);
-+extern void __glCoreNopDispatch(void);
-+
- #endif /* __gl_core_h_ */
-
---- src/mesa/drivers/dri/i965/intel_buffers.c     Thu Nov  1 08:30:52 2007
-+++ src/mesa/drivers/dri/i965/intel_buffers.c        Thu Sep  4 21:35:02 2008
-@@ -192,6 +192,7 @@
-       }
-    }
- 
-+#if 0
-    {
-       if (intel->intelScreen->driScrnPriv->ddxMinor >= 7) {
-         volatile drmI830Sarea *sarea = intel->sarea;
-@@ -224,6 +225,8 @@
-          intel->vblank_flags &= ~VBLANK_FLAG_SECONDARY;
-       }
-    }
-+#endif
-+
-    _mesa_resize_framebuffer(&intel->ctx,
-                            (GLframebuffer*)dPriv->driverPrivate,
-                            dPriv->w, dPriv->h);
-
---- include/GL/glxext.h	Mon Oct  6 10:51:23 2008
-+++ include/GL/glxext.h	Mon Oct  6 10:54:36 2008
-@@ -406,10 +406,10 @@
- /* (as used in the GLX_OML_sync_control extension). */
- #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #include <inttypes.h>
--#elif defined(__sun__) || defined(__digital__)
-+#elif defined(sun) || defined(__digital__)
- #include <inttypes.h>
--#if defined(__STDC__)
--#if defined(__arch64__) || defined(_LP64)
-+#elif defined(__STDC__)
-+#if defined(__arch64__)
- typedef long int int64_t;
- typedef unsigned long int uint64_t;
- #else
-@@ -434,7 +434,6 @@
- #else
- #include <inttypes.h>     /* Fallback option */
- #endif
--#endif
- 
- #ifndef GLX_VERSION_1_3
- #define GLX_VERSION_1_3 1
---- include/GL/glext.h	Mon Oct  6 10:55:51 2008
-+++ include/GL/glext.h	Mon Oct  6 10:56:47 2008
-@@ -3739,10 +3739,10 @@
- /* (as used in the GL_EXT_timer_query extension). */
- #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #include <inttypes.h>
--#elif defined(__sun__) || defined(__digital__)
-+#elif defined(sun)
- #include <inttypes.h>
--#if defined(__STDC__)
--#if defined(__arch64__) || defined(_LP64)
-+#elif defined(__STDC__)
-+#if defined(__arch64__)
- typedef long int int64_t;
- typedef unsigned long int uint64_t;
- #else
-@@ -3767,7 +3767,6 @@
- #else
- #include <inttypes.h>     /* Fallback option */
- #endif
--#endif
- 
- #ifndef GL_EXT_timer_query
- typedef int64_t GLint64EXT;
--- a/open-src/lib/mesa/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/mesa/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,14 +28,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.16	08/10/07
+# @(#)Makefile	1.17	09/01/13
 #
 
 # Package name used in tarballs
 MODULE_NAME=mesa
 
 # Version number (used in path names)
-MODULE_VERSION=7.0.4
+MODULE_VERSION=7.2
 
 # Source tarball
 SOURCE_TARBALL_NAME=MesaLib-$(MODULE_VERSION).tar.bz2
@@ -54,59 +54,45 @@
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES= \
-	solaris-paths.patch	\
-	mklib.patch		\
-	solaris-dri-port.patch	\
-	mesa965.patch		\
-	6538497.patch		\
-	6559710.patch		\
-	6756412.patch
+	execmem.patch,-p1 \
+	mklib-libc.patch,-p1 \
+	mklib-exports.patch,-p1 \
+	mklib-SunCC.patch \
+	solaris-port.patch
+
+# Regenerate configure after patching configure.ac with mklib-libc.patch
+AUTORECONF=yes
+
+# File created by running configure script
+AUTOCONF_TARGET=$(SOURCE_DIR)/configs/autoconf
+AUTOCONF_TARGET_SET=yes
+
+DRI_DRIVER_LIST_sparc=
+DRI_DRIVER_LIST_i386=i915 i965 r200 r300 radeon
+DRI_DRIVER_LIST= $(DRI_DRIVER_LIST_$(MACH)) swrast
+
+# Command line options to GNU autoconf configure script
+MODULE_CONFIG_OPTS = --with-driver=dri \
+	--with-dri-driverdir='$(X11_SERVERMODS_DIR)/dri$(SERVERMOD_subdir)' \
+	--with-dri-drivers='$(DRI_DRIVER_LIST)'
+
+# Override LDFLAGS passed to configure to not include CFLAGS, since that
+# breaks building libGLU with Sun Studio C++ compiler
+MODULE_CONFIG_ENV = LDFLAGS="$(DEFAULT_CONFIG_LDFLAGS) $(ARCH_FLAGS) $(MODTYPE_LDFLAGS) $(MODULE_CFLAGS) $(MODULE_LDFLAGS)"
 
 # Need to use GNU Make to build
 MODULE_MAKE=$(GNUMAKE)
 MODULE_MAKE_SET=yes
 
-# Mesa doesn't use GNU autoconf until Mesa 7.1, but has it's own configuration
-CONFIGURE_TARGETS=$(SOURCE_DIR)/configs/current
-CONFIGURE_TARGETS_SET=yes
-
-MESA_CFG_32_sparc=sunos5-v8
-MESA_CFG_64_sparc=sunos5-v9
-
-# Build with gcc on x86:
-MODULE_COMPILER=gcc
-MODULE_COMPILER_SET=yes
-MESA_CFG_32_i386=solaris-x86-gcc-dri
-MESA_CFG_64_i386=solaris-x64-gcc-dri
-
-# Build with Sun Studio cc on x86:
-#MODULE_COMPILER=suncc
-#MODULE_COMPILER_SET=yes
-#MESA_CFG_32_i386=solaris-x86-cc-dri
-#MESA_CFG_64_i386=solaris-x64-cc-dri
+# Uncomment to build with gcc:
+# MODULE_COMPILER=gcc
+# MODULE_COMPILER_SET=yes
 
-MESA_CFG_32 = $(MESA_CFG_32_$(MACH))
-MESA_CFG_64 = $(MESA_CFG_64_$(MACH))
-
-MODULE_BUILD_32_FLAGS= MESA_CFG=$(MESA_CFG_32)
-MODULE_BUILD_64_FLAGS= MESA_CFG=$(MESA_CFG_64)
-
-# pkg-config --cflags libdrm
-LIBDRM_CFLAGS = -I$(PROTODIR)$(X11_INCLUDES_DIR) -I$(PROTODIR)$(X11_INCLUDES_DIR)/drm
-# pkg-config --libs libdrm
-LIBDRM_LIB = -L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) -R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) -ldrm
+# Add include paths and linker paths needed for DRM modules
+MODULE_CPPFLAGS = -I$(PROTODIR)$(X11_INCLUDES_DIR)/drm
 
-# Additional flags to pass to make
-MODULE_BUILD_MAKEFLAGS= \
-	SHELL=/usr/bin/ksh93 \
-	PASSED_CFLAGS="$(MODTYPE_CFLAGS)" \
-	PASSED_INCLUDES="$(DEFAULT_CONFIG_CPPFLAGS) $(MODTYPE_CPPFLAGS)" \
-	ARCH_FLAGS="" \
-	LIBDRM_CFLAGS="$(LIBDRM_CFLAGS)" LIBDRM_LIB="$(LIBDRM_LIB)" \
-	default
-
-# Additional environment variables to pass to make
-MODULE_BUILD_ENV= PKG_CONFIG_PATH=$(DEFAULT_PKG_CONFIG_PATH)
+MODULE_LDFLAGS= -L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
+		-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR)
 
 # Merge in additional sources from sun-src directory
 ADDITIONAL_SOURCE_DIR=sun-src
@@ -116,14 +102,10 @@
 
 ### Rules specific to this directory:
 
-# Configure Mesa
-$(SOURCE_DIR)/configs/current: $(UNPACK_TARGET)
-	(cd $(SOURCE_DIR)/configs && \
-	 rm -f current && \
-	 ln -s $(MESA_CFG) current )
-
-# Additional headers to install that X server builds use
+# Mesa installs its gl.pc files under /usr/X11/lib/pkgconfig, gives no
+# option for alternate paths, so we just copy them here to the protodir
+# path everyone else uses
 install_gen::
-	mkdir -p $(PROTODIR)/$(X11_INCLUDES_DIR)/GL/internal/
-	$(INSTALL_SCRIPT) -m 644 $(SOURCE_DIR)/include/GL/internal/*h \
-		$(PROTODIR)/$(X11_INCLUDES_DIR)/GL/internal/
+	mkdir -p $(PROTODIR)$(PKGCONFIG_DIR)
+	$(INSTALL_SCRIPT) -m 644 $(SOURCE_DIR)/src/mesa/gl.pc \
+		$(PROTODIR)$(PKGCONFIG_DIR)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/mesa/execmem.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,24 @@
+From c2b838f049aa5f46c43b6a49b66a20c11d6128ab Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Wed, 16 Jul 2008 12:47:27 -0700
+Subject: [PATCH] Add Solaris to OS'es using PROT_EXEC mmap() to get executable heap space
+---
+ src/mesa/main/execmem.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/mesa/main/execmem.c b/src/mesa/main/execmem.c
+index f95c318..b71846c 100644
+--- a/src/mesa/main/execmem.c
++++ b/src/mesa/main/execmem.c
+@@ -36,7 +36,7 @@ #include "glapi/glthread.h"
+ 
+ 
+ 
+-#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__)
++#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__) || defined(__sun)
+ 
+ /*
+  * Allocate a large block of memory which can hold code then dole it out
+-- 
+1.4.1
+
--- a/open-src/lib/mesa/glext.h.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
---- include/GL/glext.h	2006-09-15 21:11:02.000000000 -0700
-+++ include/GL/glext.h	2006-11-10 15:35:02.232652000 -0800
-@@ -3165,9 +3165,9 @@
- /* (as used in the GLX_OML_sync_control extension). */
- #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #include <inttypes.h>
--#elif defined(__sun__)
-+#elif defined(sun)
- #include <inttypes.h>
--#if defined(__STDC__)
-+#elif defined(__STDC__)
- #if defined(__arch64__)
- typedef long int int64_t;
- typedef unsigned long int uint64_t;
-@@ -3193,7 +3193,6 @@
- #else
- #include <inttypes.h>     /* Fallback option */
- #endif
--#endif
- 
- #ifndef GL_EXT_timer_query
- typedef int64_t GLint64EXT;
--- a/open-src/lib/mesa/glxext.h.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
---- include/GL/glxext.h.orig	2008-02-21 22:32:25.557861019 +0530
-+++ include/GL/glxext.h	2008-02-21 22:34:25.799989188 +0530
-@@ -347,9 +347,9 @@
- /* (as used in the GLX_OML_sync_control extension). */
- #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
- #include <inttypes.h>
--#elif defined(__sun__)
-+#elif defined(sun)
- #include <inttypes.h>
--#if defined(__STDC__)
-+#elif defined(__STDC__)
- #if defined(__arch64__)
- typedef long int int64_t;
- typedef unsigned long int uint64_t;
-@@ -371,7 +371,6 @@
- #else
- #include <inttypes.h>     /* Fallback option */
- #endif
--#endif
- 
- #ifndef GLX_VERSION_1_3
- #define GLX_VERSION_1_3 1
--- a/open-src/lib/mesa/maxtexunit.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
---- src/mesa/main/texenvprogram.c	Fri Sep 14 11:26:06 2007
-+++ src/mesa/main/texenvprogram.c	Fri Sep 14 11:28:04 2007
-@@ -34,10 +34,10 @@
- #include "shader/program_instruction.h"
- 
- /**
-- * According to Glean's texCombine test, no more than 21 instructions
-- * are needed.  Allow a few extra just in case.
-+ * The ARB specification for texture unit range is 0 to 31, so 31 instructions
-+ * should be enough.  Allow a few extra just in case.
-  */
--#define MAX_INSTRUCTIONS 24
-+#define MAX_INSTRUCTIONS (3*31+3)
- 
- #define DISASSEM (MESA_VERBOSE & VERBOSE_DISASSEM)
- 
--- a/open-src/lib/mesa/mesa965.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
---- src/mesa/drivers/dri/i965/server/i830_common.h	Fri Sep 29 00:42:14 2006
-+++ src/mesa/drivers/dri/i965/server/i830_common.h	Wed Apr  4 09:59:55 2007
-@@ -89,6 +89,7 @@
-         int pf_current_page;	/* which buffer is being displayed? */
-         int perf_boxes;	        /* performance boxes to be displayed */   
- 	int width, height;      /* screen size in pixels */
-+	int pad0;
- 
- 	drm_handle_t front_handle;
- 	int front_offset;
-
---- src/mesa/drivers/dri/i965/server/i830_dri.h	Fri Aug 11 05:26:50 2006
-+++ src/mesa/drivers/dri/i965/server/i830_dri.h	Wed Aug 29 10:17:18 2007
-@@ -22,16 +22,20 @@
-    drm_handle_t unused2; /* backbuffer */
- 
-    drmSize unused3; /* depthbufferSize */
-+   drmSize pad0;
-    drm_handle_t unused4; /* depthbuffer */
- 
--   drmSize unused5; /* rotatedSize /*/
-+   drmSize unused5; /* rotatedSize */
-+   drmSize pad1;
-    drm_handle_t unused6; /* rotatedbuffer */
- 
-    drm_handle_t unused7; /* textures */
-    int unused8; /* textureSize */
-+   drmSize pad2;
- 
-    drm_handle_t unused9; /* agp_buffers */
-    drmSize unused10; /* agp_buf_size */
-+   drmSize pad3;
- 
-    int deviceID;
-    int width;
---- src/mesa/drivers/dri/i965/brw_draw_upload.c	2006-11-21 23:03:46.000000000 +0800
-+++ src/mesa/drivers/dri/i965/brw_draw_upload.c	2007-06-20 16:24:44.984501652 +0800
-@@ -26,6 +26,7 @@
-  **************************************************************************/
- 
- #include <stdlib.h>
-+#include <string.h>
- 
- #include "glheader.h"
- #include "context.h"
-@@ -187,6 +188,23 @@
-    BRW_SURFACEFORMAT_R8G8B8A8_SSCALED
- };
- 
-+#if defined (sun)
-+/* Solaris does not have ffsll in libc */
-+#define	NBITS_INT	(CHAR_BIT * sizeof (int))
-+static int ffsll(long long i)
-+{
-+	int i1;
-+	int ret;
-+
-+	i1 = i & UINT_MAX;
-+	ret = ffs(i1);
-+	if (ret == 0) {
-+		i1 = (i & 0xffffffff00000000) >> NBITS_INT;
-+		ret = ffs(i1) + NBITS_INT;
-+	}
-+	return ret;
-+}
-+#endif
- 
- static GLuint get_surface_type( GLenum type, GLuint size, GLboolean normalized )
- {
---- src/mesa/drivers/dri/i965/brw_aub.c	Mon Jun 11 09:57:08 2007
-+++ src/mesa/drivers/dri/i965/brw_aub.c	Mon Jun 11 09:57:23 2007
-@@ -34,7 +34,7 @@
- #include "intel_regions.h"
- #include <stdio.h>
- 
--extern char *__progname;
-+char *__progname = "testaub";
- 
- 
- /* Registers to control page table
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/mesa/mklib-SunCC.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,26 @@
+diff -urp -x '*~' -x '*.orig' bin/mklib bin/mklib
+--- bin/mklib	2008-10-03 14:18:14.760469000 -0700
++++ bin/mklib	2008-10-03 14:18:25.239726000 -0700
+@@ -372,6 +372,12 @@ case $ARCH in
+ 		fi
+ 	    fi
+ 
++	    # If using Sun C++ compiler, need to tell it not to add runpaths
++	    # that are specific to the build machine
++	    if [ ${LINK} = "CC" ] ; then
++		OPTS="${OPTS} -norunpath"
++	    fi
++
+ 	    # Check if objects are SPARC v9
+ 	    # file says: ELF 64-bit MSB relocatable SPARCV9 Version 1
+ 	    set ${OBJECTS}
+@@ -387,6 +393,9 @@ case $ARCH in
+ 
+ 	    # Solaris linker requires explicitly listing the Standard C & C++
+ 	    # libraries in the link path when building shared objects
++	    if [ ${LINK} = "CC" ] ; then
++		DEPS="${DEPS} -lCrun"
++	    fi
+ 	    DEPS="${DEPS} -lc"
+ 
+ 	    if [ $EXPORTS ] ; then
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/mesa/mklib-exports.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,33 @@
+From 29f082e4d47699c09f909532cc0eae725e31851b Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Wed, 16 Jul 2008 13:16:19 -0700
+Subject: [PATCH] Convert mklib -exports list into a linker mapfile on Solaris
+---
+ bin/mklib |   11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+diff --git a/bin/mklib b/bin/mklib
+index aaae3a8..3eddb74 100755
+--- a/bin/mklib
++++ b/bin/mklib
+@@ -389,6 +389,17 @@ #	    rm -f exptmp
+ 	    # libraries in the link path when building shared objects
+ 	    DEPS="${DEPS} -lc"
+ 
++	    if [ $EXPORTS ] ; then
++		# Make the 'mapfile.scope' linker mapfile
++		echo "{" > mapfile.scope
++		echo "global:" >> mapfile.scope
++		sed 's/$/;/' ${EXPORTS} >> mapfile.scope
++		echo "local:" >> mapfile.scope
++		echo "    *;" >> mapfile.scope
++		echo "};" >> mapfile.scope
++		OPTS="${OPTS} -M mapfile.scope"
++	    fi
++
+ 	    # for debug:
+ 	    #echo "mklib: linker is" ${LINK} ${OPTS}
+ 	    if [ $NOPREFIX = 1 ] ; then
+-- 
+1.4.1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/mesa/mklib-libc.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,100 @@
+From 3ff63b8a12e2d266b59a22e380cb4f40c00cc895 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Wed, 16 Jul 2008 12:56:29 -0700
+Subject: [PATCH] Move Solaris -lc linking flag for shared objects from configure.ac to mklib
+---
+ bin/mklib    |    5 +++++
+ configure.ac |   23 ++++++-----------------
+ 2 files changed, 11 insertions(+), 17 deletions(-)
+
+diff --git a/bin/mklib b/bin/mklib
+index a25d5bf..aaae3a8 100755
+--- a/bin/mklib
++++ b/bin/mklib
+@@ -384,6 +384,11 @@ #	    rm -f exptmp
+             if [ "${ALTOPTS}" ] ; then
+                 OPTS=${ALTOPTS}
+             fi
++
++	    # Solaris linker requires explicitly listing the Standard C & C++
++	    # libraries in the link path when building shared objects
++	    DEPS="${DEPS} -lc"
++
+ 	    # for debug:
+ 	    #echo "mklib: linker is" ${LINK} ${OPTS}
+ 	    if [ $NOPREFIX = 1 ] ; then
+diff --git a/configure.ac b/configure.ac
+index 463821b..5d89bfa 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -345,17 +345,6 @@ if test "x$enable_selinux" = "xyes"; the
+     DEFINES="$DEFINES -DMESA_SELINUX"
+ fi
+ 
+-dnl OS-specific libraries
+-OS_LIBS=""
+-case "$host_os" in
+-solaris*)
+-    OS_LIBS="-lc"
+-    if test "x$GXX" != xyes; then
+-        OS_CPLUSPLUS_LIBS="-lCrun $OS_LIBS"
+-    fi
+-    ;;
+-esac
+-
+ dnl
+ dnl Driver configuration. Options are xlib, dri and osmesa right now.
+ dnl More later: directfb, fbdev, ...
+@@ -514,7 +503,7 @@ xlib)
+         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
+         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
+     fi
+-    GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $OS_LIBS"
++    GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
+ 
+     # if static, move the external libraries to the programs
+     # and empty the libraries for libGL
+@@ -558,11 +547,11 @@ dri)
+     fi
+ 
+     # need DRM libs, -lpthread, etc.
+-    GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS $OS_LIBS"
++    GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
+     ;;
+ osmesa)
+     # No libGL for osmesa
+-    GL_LIB_DEPS="$OS_LIBS"
++    GL_LIB_DEPS=""
+     ;;
+ esac
+ AC_SUBST([GL_LIB_DEPS])
+@@ -799,7 +788,7 @@ osmesa)
+     ;;
+ esac
+ if test "$enable_static" = no; then
+-    OSMESA_LIB_DEPS="$OSMESA_LIB_DEPS $OS_LIBS"
++    OSMESA_LIB_DEPS="$OSMESA_LIB_DEPS"
+ fi
+ AC_SUBST([OSMESA_LIB_DEPS])
+ AC_SUBST([OSMESA_MESA_DEPS])
+@@ -900,7 +889,7 @@ if test "x$enable_glw" = xyes; then
+     # If static, empty GLW_LIB_DEPS and add libs for programs to link
+     if test "$enable_static" = no; then
+         GLW_MESA_DEPS='-l$(GL_LIB)'
+-        GLW_LIB_DEPS="$GLW_LIB_DEPS $OS_LIBS"
++        GLW_LIB_DEPS="$GLW_LIB_DEPS"
+     else
+         APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
+         GLW_LIB_DEPS=""
+@@ -950,7 +939,7 @@ if test "x$enable_glut" = xyes; then
+         # should check these...
+         GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
+     fi
+-    GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm $OS_LIBS"
++    GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
+ 
+     # If glut is available, we can build most programs
+     if test "$with_demos" = yes; then
+-- 
+1.4.1
+
--- a/open-src/lib/mesa/mklib.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-
-Pass -R flags through to linker, add -lc when building .so files
-
---- bin/mklib	2006-04-20 18:03:51.000000000 -0700
-+++ bin/mklib	2006-11-08 15:51:57.924308000 -0800
-@@ -61,6 +61,8 @@
- 	    echo '  -patch N      specifies patch version number (default is 0)'
- 	    echo '  -lLIBRARY     specifies a dependency on LIBRARY'
- 	    echo '  -LDIR         search in DIR for library dependencies'
-+	    echo '  -RDIR         search in DIR for library dependencies'
-+	    echo '  -Wl           explicitly pass flags through to linker'
- 	    echo '  -linker L     explicity specify the linker program to use (eg: gcc, g++)'
- 	    echo '                Not observed on all systems at this time.'
- 	    echo '  -cplusplus    link with C++ runtime'
-@@ -100,6 +101,9 @@
- 	-L*)
- 	    DEPS="$DEPS $1"
- 	    ;;
-+	-R*|-Wl*)
-+	    DEPS="$DEPS $1"
-+	    ;;
- 	'-cplusplus')
- 	    CPLUSPLUS=1
- 	    ;;
-@@ -288,6 +293,10 @@
- 	    fi
- 	    echo "mklib: Making SunOS shared library: " ${LIBNAME}
- 
-+	    # Solaris linker requires expliciting listing libc in shared
-+	    # object dependencies
-+	    DEPS="${DEPS} -lc"
-+
- 	    if [ "x$LINK" = "x" ] ; then
- 		# -linker was not specified, choose default linker now
- 		if [ $CPLUSPLUS = 1 ] ; then
--- a/open-src/lib/mesa/no-hidden.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-Disable hidden attribute to prevent linker error:
-ld: fatal: relocation error: R_386_GOTOFF: file indirect_init.o: symbol __indirect_glNewList: relocation must bind locally
-
-
---- src/glx/x11/indirect.h	2006-08-25 15:09:00.000000000 -0700
-+++ src/glx/x11/indirect.h	2006-11-08 16:18:20.013840000 -0800
-@@ -37,7 +37,7 @@
-  * \author Ian Romanick <[email protected]>
-  */
- 
--#  if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__)
-+#  if 0
- #    define HIDDEN  __attribute__((visibility("hidden")))
- #  else
- #    define HIDDEN
--- a/open-src/lib/mesa/solaris-dri-port.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,280 +0,0 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-
-diff -urp -x '*~' src/mesa/drivers/dri/common/dri_util.h src/mesa/drivers/dri/common/dri_util.h
---- src/mesa/drivers/dri/common/dri_util.h	2006-03-31 07:48:04.000000000 -0800
-+++ src/mesa/drivers/dri/common/dri_util.h	2006-11-09 18:03:19.022744000 -0800
-@@ -60,6 +60,10 @@
- 
- #define GLX_BAD_CONTEXT                    5
- 
-+#define u_int64_t uint64_t
-+#define u_int32_t uint32_t
-+#define u_int8_t uint8_t
-+
- typedef struct __DRIdisplayPrivateRec  __DRIdisplayPrivate;
- typedef struct __DRIscreenPrivateRec   __DRIscreenPrivate;
- typedef struct __DRIcontextPrivateRec  __DRIcontextPrivate;
-diff -urp -x '*~' src/mesa/drivers/dri/i915/intel_context.h src/mesa/drivers/dri/i915/intel_context.h
---- src/mesa/drivers/dri/i915/intel_context.h	2006-08-18 10:04:03.000000000 -0700
-+++ src/mesa/drivers/dri/i915/intel_context.h	2006-11-09 18:03:19.023582000 -0800
-@@ -44,6 +44,11 @@
- #include "tnl_dd/t_dd_vertex.h"
- #undef TAG
- 
-+#if defined(sun)
-+extern void _sigoff(void);
-+extern void _sigon(void);
-+#endif
-+
- #define DV_PF_555  (1<<8)
- #define DV_PF_565  (2<<8)
- #define DV_PF_8888 (3<<8)
-@@ -316,6 +321,23 @@ extern int prevLockLine;
- 
- /* Lock the hardware and validate our state.  
-  */
-+#if defined(sun)
-+#define LOCK_HARDWARE( intel )				\
-+do {							\
-+    char __ret=0;					\
-+    DEBUG_CHECK_LOCK();					\
-+    assert(!(intel)->locked);				\
-+    _sigoff();                                          \
-+    DRM_CAS((intel)->driHwLock, (intel)->hHWContext,	\
-+        (DRM_LOCK_HELD|(intel)->hHWContext), __ret);	\
-+    if (__ret)						\
-+        intelGetLock( (intel), 0 );			\
-+      DEBUG_LOCK();					\
-+    (intel)->locked = 1;				\
-+}while (0)
-+
-+#else
-+
- #define LOCK_HARDWARE( intel )				\
- do {							\
-     char __ret=0;					\
-@@ -328,10 +350,13 @@ do {							\
-       DEBUG_LOCK();					\
-     (intel)->locked = 1;				\
- }while (0)
-+
-+#endif
-  
-   
-   /* Unlock the hardware using the global current context 
-    */
-+#if defined(sun)
- #define UNLOCK_HARDWARE(intel)						\
- do {									\
-    intel->locked = 0;							\
-@@ -341,8 +366,24 @@ do {									\
-    }									\
-    DRM_UNLOCK((intel)->driFd, (intel)->driHwLock, (intel)->hHWContext);	\
-    DEBUG_RESET();							\
-+   _sigon();                                                            \
- } while (0)
- 
-+#else
-+
-+#define UNLOCK_HARDWARE(intel)						\
-+do {									\
-+   intel->locked = 0;							\
-+   if (0) { 								\
-+      intel->perf_boxes |= intel->sarea->perf_boxes;  			\
-+      intel->sarea->perf_boxes = 0;					\
-+   }									\
-+   DRM_UNLOCK((intel)->driFd, (intel)->driHwLock, (intel)->hHWContext);	\
-+   DEBUG_RESET();							\
-+} while (0)
-+
-+#endif
-+
- 
- #define SUBPIXEL_X 0.125
- #define SUBPIXEL_Y 0.125
-@@ -383,7 +424,7 @@ do {						\
-  * From linux kernel i386 header files, copes with odd sizes better
-  * than COPY_DWORDS would:
-  */
--#if defined(i386) || defined(__i386__)
-+#if (defined(i386) || defined(__i386__)) && !(defined(__SOLARIS__) || defined(sun))
- static __inline__ void * __memcpy(void * to, const void * from, size_t n)
- {
-    int d0, d1, d2;
-diff -urp -x '*~' src/mesa/drivers/dri/i915/intel_screen.c src/mesa/drivers/dri/i915/intel_screen.c
---- src/mesa/drivers/dri/i915/intel_screen.c	2006-09-11 14:35:49.000000000 -0700
-+++ src/mesa/drivers/dri/i915/intel_screen.c	2006-11-09 18:03:19.029524000 -0800
-@@ -25,6 +25,8 @@
-  * 
-  **************************************************************************/
- 
-+#include <unistd.h>
-+#include <signal.h>
- #include "glheader.h"
- #include "context.h"
- #include "framebuffer.h"
-@@ -45,6 +47,15 @@
- 
- #include "i830_dri.h"
- 
-+static void stop_handler(int sig)
-+{
-+	kill(getpid(), SIGSTOP);
-+}
-+static void exit_handler(int sig)
-+{
-+	_exit(1);
-+}
-+
- PUBLIC const char __driConfigOptions[] =
- DRI_CONF_BEGIN
-     DRI_CONF_SECTION_PERFORMANCE
-@@ -348,6 +359,13 @@ static GLboolean intelInitDriver(__DRIsc
-    sPriv->psc->freeMemory     = (void *) intelFreeMemoryMESA;
-    sPriv->psc->memoryOffset   = (void *) intelGetMemoryOffsetMESA;
- 
-+   (void) sigset(SIGTSTP, stop_handler);
-+   (void) sigset(SIGTTIN, stop_handler);
-+   (void) sigset(SIGTTOU, stop_handler);
-+   (void) sigset(SIGINT, exit_handler);
-+   (void) sigset(SIGTERM, exit_handler);
-+
-+
-    return GL_TRUE;
- }
- 		
-diff -urp -x '*~' src/mesa/drivers/dri/i915/intel_tris.c src/mesa/drivers/dri/i915/intel_tris.c
---- src/mesa/drivers/dri/i915/intel_tris.c	2006-07-20 09:41:26.000000000 -0700
-+++ src/mesa/drivers/dri/i915/intel_tris.c	2006-11-09 18:03:19.030336000 -0800
-@@ -50,7 +50,7 @@ static void intelRasterPrimitive( GLcont
-  *                    Emit primitives as inline vertices               *
-  ***********************************************************************/
- 
--#ifdef __i386__
-+#if (defined(i386) || defined(__i386__)) && !(defined(__SOLARIS__) || defined(sun))
- #define COPY_DWORDS( j, vb, vertsize, v )			\
- do {								\
-    int __tmp;							\
-diff -urp -x '*~' src/mesa/main/glheader.h src/mesa/main/glheader.h
---- src/mesa/main/glheader.h	2006-04-12 18:52:32.000000000 -0700
-+++ src/mesa/main/glheader.h	2006-11-09 18:03:19.041666000 -0800
-@@ -197,7 +197,7 @@
- #  define INLINE __inline
- #elif defined(__ICL)
- #  define INLINE __inline
--#elif defined(__INTEL_COMPILER)
-+#elif defined(__INTEL_COMPILER) || defined(__SUNPRO_C)
- #  define INLINE inline
- #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
- #  define INLINE __inline
-@@ -205,6 +205,11 @@
- #  define INLINE
- #endif
- 
-+/* for Sun CC compiler */
-+#ifdef __SUNPRO_C
-+#define __inline inline
-+#define __inline__ inline
-+#endif
- 
- /* If we build the library with gcc's -fvisibility=hidden flag, we'll
-  * use the PUBLIC macro to mark functions that are to be exported.
-diff -urp -x '*~' src/mesa/tnl_dd/t_dd_tritmp.h src/mesa/tnl_dd/t_dd_tritmp.h
---- src/mesa/tnl_dd/t_dd_tritmp.h	2005-05-25 06:35:21.000000000 -0700
-+++ src/mesa/tnl_dd/t_dd_tritmp.h	2006-11-09 18:03:19.042310000 -0800
-@@ -393,7 +393,7 @@ static void TAG(triangle)( GLcontext *ct
- 
- #if DO_QUAD
- #if DO_FULL_QUAD
--static void TAG(quad)( GLcontext *ctx,
-+static void TAG(quadr)( GLcontext *ctx,
- 		       GLuint e0, GLuint e1, GLuint e2, GLuint e3 )
- {
-    struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb;
-@@ -681,7 +681,7 @@ static void TAG(quad)( GLcontext *ctx,
-    }
- }
- #else
--static void TAG(quad)( GLcontext *ctx, GLuint e0,
-+static void TAG(quadr)( GLcontext *ctx, GLuint e0,
- 		       GLuint e1, GLuint e2, GLuint e3 )
- {
-    if (DO_UNFILLED) {
-@@ -773,7 +773,7 @@ static void TAG(points)( GLcontext *ctx,
- static void TAG(init)( void )
- {
- #if DO_QUAD
--   TAB[IND].quad = TAG(quad);
-+   TAB[IND].quad = TAG(quadr);
- #endif
- #if DO_TRI
-    TAB[IND].triangle = TAG(triangle);
-
---- src/mesa/drivers/dri/common/mmio.h	Mon Apr 25 11:03:10 2005
-+++ src/mesa/drivers/dri/common/mmio.h	Mon Jul  2 21:19:02 2007
-@@ -34,6 +34,7 @@
- #define MMIO_H
- 
- #include "glheader.h"
-+#include "dri_util.h"
- 
- #if defined( __powerpc__ )
- 
---- src/mesa/drivers/dri/radeon/server/radeon_dri.h	Mon Jul  2 23:10:21 2007
-+++ src/mesa/drivers/dri/radeon/server/radeon_dri.h	Mon Jul  2 23:09:58 2007
-@@ -90,6 +90,7 @@
-     /*@{*/
-     drm_handle_t     registerHandle; /**< \brief MMIO register map size */
-     drmSize       registerSize;   /**< \brief MMIO register map handle */
-+	int			padding0;
-     /*@}*/
- 
-     /**
-@@ -98,6 +99,7 @@
-     /*@{*/
-     drm_handle_t     statusHandle;   /**< \brief status map handle */
-     drmSize       statusSize;     /**< \brief status map size */
-+	int			padding1;
-     /*@}*/
- 
-     /**
-@@ -106,11 +108,13 @@
-     /*@{*/
-     drm_handle_t     gartTexHandle;   /**< \brief AGP texture area map handle */
-     drmSize       gartTexMapSize;  /**< \brief AGP texture area map size */
-+	int			padding2;
-     int           log2GARTTexGran; /**< \brief AGP texture granularity in log base 2 */
-     int           gartTexOffset;   /**< \brief AGP texture area offset in AGP space */
-     /*@}*/
- 
-     unsigned int  sarea_priv_offset; /**< \brief offset of the private SAREA data*/
-+	int			padding3;
- } RADEONDRIRec, *RADEONDRIPtr;
- 
- #endif
--- a/open-src/lib/mesa/solaris-paths.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
---- configs/default	2006-09-11 14:35:46.000000000 -0700
-+++ configs/default	2006-11-06 23:55:26.411551000 -0800
-@@ -79,8 +79,8 @@
- 
- 
- # Installation directories (for make install)
--INSTALL_DIR = /usr/local
--DRI_DRIVER_INSTALL_DIR = /usr/X11R6/lib/modules/dri
-+INSTALL_DIR = /usr/X11$(ARCHLIBSUBDIR)
-+DRI_DRIVER_INSTALL_DIR = /usr/X11/lib/modules/dri$(ARCHLIBSUBDIR)
- 
- # Where libGL will look for DRI hardware drivers
- DRI_DRIVER_SEARCH_DIR = $(DRI_DRIVER_INSTALL_DIR)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/mesa/solaris-port.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,287 @@
+--- src/glx/x11/Makefile	2008-09-13 13:25:44.000000000 -0700
++++ src/glx/x11/Makefile	2008-10-03 07:51:04.249576000 -0700
+@@ -66,6 +66,10 @@
+ 
+ default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+ 
++# Needed to truly hide symbols gcc treats as HIDDEN/INTERNAL but doesn't mark
++# as hidden in the ELF files properly.
++GL_LIB_DEPS += -Wl,-M,mapfile.scope
++
+ # Make libGL
+ $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME):  $(OBJECTS) Makefile
+ 	$(MKLIB) -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+
+--- src/mesa/drivers/dri/Makefile.template	2008-08-25 07:49:40.000000000 -0700
++++ src/mesa/drivers/dri/Makefile.template	2008-10-03 10:53:42.854207000 -0700
+@@ -1,5 +1,10 @@
+ # -*-makefile-*-
+ 
++# Needed to specify symbols which are allowed to be undefined when
++# linking DRI modules with -z defs
++DRI_LIB_DEPS += -Wl,-M,$(TOP)/src/mesa/drivers/dri/mapfile.externs
++
++
+ MESA_MODULES = $(TOP)/src/mesa/libmesa.a
+ 
+ COMMON_SOURCES = \
+
+--- src/mesa/drivers/dri/intel/intel_context.c	Tue Sep 30 10:14:35 2008
++++ src/mesa/drivers/dri/intel/intel_context.c	Tue Sep 30 10:29:38 2008
+@@ -69,6 +69,11 @@
+ int INTEL_DEBUG = (0);
+ #endif
+ 
++#if defined(sun)
++extern void _sigoff(void);
++extern void _sigon(void);
++#endif
++
+ #define need_GL_NV_point_sprite
+ #define need_GL_ARB_multisample
+ #define need_GL_ARB_point_parameters
+@@ -867,7 +872,7 @@
+    intel->locked = 1;
+ 
+    if (INTEL_DEBUG & DEBUG_LOCK)
+-      _mesa_printf("%s - got contended lock\n", __progname);
++      _mesa_printf("%s - got contended lock\n", __FUNCTION__);
+ 
+    /* If the window moved, may need to set a new cliprect now.
+     *
+@@ -966,6 +971,9 @@
+ 				    intel_fb->Base._ColorDrawBufferIndexes[0]);
+     }
+ 
++#if defined(sun)
++    _sigoff();
++#else
+     if (intel_rb && dPriv->vblFlags &&
+ 	!(dPriv->vblFlags & VBLANK_FLAG_NO_IRQ) &&
+ 	(intel_fb->vbl_waited - intel_rb->vbl_pending) > (1<<23)) {
+@@ -981,6 +989,7 @@
+ 	drmWaitVBlank(intel->driFd, &vbl);
+ 	intel_fb->vbl_waited = vbl.reply.sequence;
+     }
++#endif
+ 
+     DRM_CAS(intel->driHwLock, intel->hHWContext,
+         (DRM_LOCK_HELD|intel->hHWContext), __ret);
+@@ -998,7 +1007,7 @@
+ 
+ 
+     if (INTEL_DEBUG & DEBUG_LOCK)
+-      _mesa_printf("%s - locked\n", __progname);
++      _mesa_printf("%s - locked\n", __FUNCTION__);
+ }
+ 
+ 
+@@ -1014,7 +1023,7 @@
+    _glthread_UNLOCK_MUTEX(lockMutex);
+ 
+    if (INTEL_DEBUG & DEBUG_LOCK)
+-      _mesa_printf("%s - unlocked\n", __progname);
++      _mesa_printf("%s - unlocked\n", __FUNCTION__);
+ 
+    /**
+     * Nothing should be left in batch outside of LOCK/UNLOCK which references
+@@ -1021,5 +1030,9 @@
+     * cliprects.
+     */
+    assert(intel->batch->cliprect_mode != REFERENCES_CLIPRECTS);
++
++#if defined(sun)
++   _sigon();
++#endif
+ }
+ 
+--- src/mesa/drivers/dri/intel/intel_screen.c	Tue Sep 30 10:38:08 2008
++++ src/mesa/drivers/dri/intel/intel_screen.c	Tue Sep 30 10:41:06 2008
+@@ -25,6 +25,8 @@
+  * 
+  **************************************************************************/
+ 
++#include <unistd.h>
++#include <signal.h>
+ #include "glheader.h"
+ #include "context.h"
+ #include "framebuffer.h"
+@@ -51,6 +53,15 @@
+ #include "intel_batchbuffer.h"
+ #include "intel_bufmgr_ttm.h"
+ 
++static void stop_handler(int sig)
++{
++       kill(getpid(), SIGSTOP);
++}
++static void exit_handler(int sig)
++{
++       _exit(1);
++}
++
+ PUBLIC const char __driConfigOptions[] =
+    DRI_CONF_BEGIN
+    DRI_CONF_SECTION_PERFORMANCE
+@@ -488,6 +499,12 @@
+ 
+    sPriv->extensions = intelScreenExtensions;
+ 
++   (void) sigset(SIGTSTP, stop_handler);
++   (void) sigset(SIGTTIN, stop_handler);
++   (void) sigset(SIGTTOU, stop_handler);
++
++
++
+    return GL_TRUE;
+ }
+ 
+--- src/mesa/drivers/dri/common/dri_util.h	Wed Sep 24 13:38:44 2008
++++ src/mesa/drivers/dri/common/dri_util.h	Wed Sep 24 13:39:06 2008
+@@ -60,6 +60,10 @@
+ 
+ #define GLX_BAD_CONTEXT                    5
+ 
++#define u_int64_t uint64_t
++#define u_int32_t uint32_t
++#define u_int8_t uint8_t
++
+ typedef struct __DRIswapInfoRec        __DRIswapInfo;
+ 
+ /* Typedefs to avoid rewriting the world. */
+--- src/mesa/drivers/dri/i915/intel_tris.c	Mon Aug 25 07:49:40 2008
++++ src/mesa/drivers/dri/i915/intel_tris.c	Wed Sep 24 13:53:25 2008
+@@ -156,7 +156,7 @@
+  *                    Emit primitives as inline vertices               *
+  ***********************************************************************/
+ 
+-#ifdef __i386__
++#if (defined(i386) || defined(__i386__)) && !(defined(__SOLARIS__) || defined(sun))
+ #define COPY_DWORDS( j, vb, vertsize, v )			\
+ do {								\
+    int __tmp;							\
+224c224
+--- src/mesa/drivers/dri/common/mio.h	Wed Sep 24 14:04:29 2008
++++ src/mesa/drivers/dri/common/mmio.h	Wed Sep 24 14:04:45 2008
+@@ -34,6 +34,7 @@
+ #define MMIO_H
+ 
+ #include "glheader.h"
++#include "dri_util.h"
+ 
+ #if defined( __powerpc__ )
+ 
+--- src/mesa/drivers/dri/radeon/server/radeon_dri.h	Wed Sep 24 14:05:24 2008
++++ src/mesa/drivers/dri/radeon/server/radeon_dri.h	Wed Sep 24 14:06:48 2008
+@@ -90,6 +90,7 @@
+     /*@{*/
+     drm_handle_t     registerHandle; /**< \brief MMIO register map size */
+     drmSize       registerSize;   /**< \brief MMIO register map handle */
++    int      	  padding0;
+     /*@}*/
+ 
+     /**
+@@ -98,6 +99,7 @@
+     /*@{*/
+     drm_handle_t     statusHandle;   /**< \brief status map handle */
+     drmSize       statusSize;     /**< \brief status map size */
++    int		  padding1;
+     /*@}*/
+ 
+     /**
+@@ -106,11 +108,13 @@
+     /*@{*/
+     drm_handle_t     gartTexHandle;   /**< \brief AGP texture area map handle */
+     drmSize       gartTexMapSize;  /**< \brief AGP texture area map size */
++    int 	  padding2;
+     int           log2GARTTexGran; /**< \brief AGP texture granularity in log base 2 */
+     int           gartTexOffset;   /**< \brief AGP texture area offset in AGP space */
+     /*@}*/
+ 
+     unsigned int  sarea_priv_offset; /**< \brief offset of the private SAREA data*/
++    int		  padding3;
+ } RADEONDRIRec, *RADEONDRIPtr;
+ 
+ #endif
+
+--- src/mesa/drivers/dri/i965/brw_draw_upload.c	Wed Sep 24 14:14:46 2008
++++ src/mesa/drivers/dri/i965/brw_draw_upload.c	Wed Sep 24 14:16:22 2008
+@@ -26,6 +26,7 @@
+  **************************************************************************/
+ 
+ #include <stdlib.h>
++#include <string.h>
+ 
+ #include "glheader.h"
+ #include "context.h"
+@@ -156,7 +157,24 @@
+    BRW_SURFACEFORMAT_R8G8B8A8_SSCALED
+ };
+ 
++#if defined (sun)
++/* Solaris does not have ffsll in libc */
++#define        NBITS_INT       (CHAR_BIT * sizeof (int))
++static int ffsll(long long i)
++{
++      int i1;
++       int ret;
+ 
++       i1 = i & UINT_MAX;
++       ret = ffs(i1);
++      if (ret == 0) {
++               i1 = (i & 0xffffffff00000000) >> NBITS_INT;
++               ret = ffs(i1) + NBITS_INT;
++       }
++       return ret;
++}
++#endif
++
+ static GLuint get_surface_type( GLenum type, GLuint size, GLboolean normalized )
+ {
+    if (INTEL_DEBUG & DEBUG_VERTS)
+
+--- src/mesa/drivers/dri/intel/server/i830_dri.h	Tue Sep 30 09:13:02 2008
++++ src/mesa/drivers/dri/intel/server/i830_dri.h	Tue Sep 30 09:15:40 2008
+@@ -21,16 +21,20 @@
+    drm_handle_t unused2; /* backbuffer */
+ 
+    drmSize unused3; /* depthbufferSize */
++   drmSize pad0;
+    drm_handle_t unused4; /* depthbuffer */
+ 
+    drmSize unused5; /* rotatedSize */
++   drmSize pad1;
+    drm_handle_t unused6; /* rotatedbuffer */
+ 
+    drm_handle_t unused7; /* textures */
+    int unused8; /* textureSize */
++   drmSize pad2;
+ 
+    drm_handle_t unused9; /* agp_buffers */
+    drmSize unused10; /* agp_buf_size */
++   drmSize pad3;
+ 
+    int deviceID;
+    int width;
+--- src/mesa/drivers/dri/intel/intel_buffers.c	Tue Sep 30 10:54:45 2008
++++ src/mesa/drivers/dri/intel/intel_buffers.c	Tue Sep 30 10:55:09 2008
+@@ -224,7 +224,7 @@
+ 
+    if (INTEL_DEBUG & DEBUG_LOCK)
+       if (pf_active != intel_fb->pf_active)
+-	 _mesa_printf("%s - Page flipping %sactive\n", __progname,
++	 _mesa_printf("%s - Page flipping %sactive\n", __FUNCTION__,
+ 		      pf_active ? "" : "in");
+ 
+    if (pf_active) {
+--- src/mesa/drivers/dri/intel/intel_context.h	Tue Sep 30 10:31:32 2008
++++ src/mesa/drivers/dri/intel/intel_context.h	Tue Sep 30 12:01:59 2008
+@@ -327,7 +327,7 @@
+  * than COPY_DWORDS would:
+  * XXX Put this in src/mesa/main/imports.h ???
+  */
+-#if defined(i386) || defined(__i386__)
++#if (defined(i386) || defined(__i386__)) && !(defined(__SOLARIS__) || defined(sun))
+ static INLINE void * __memcpy(void * to, const void * from, size_t n)
+ {
+    int d0, d1, d2;
+
--- a/open-src/lib/mesa/sun-src/src/glx/x11/mapfile.scope	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/lib/mesa/sun-src/src/glx/x11/mapfile.scope	Thu Jan 15 12:55:00 2009 -0800
@@ -562,10 +562,6 @@
 	__indirect_glGetVertexAttribivNV;
 	__indirect_glIsProgramNV;
 	__indirect_glLoadProgramNV;
-	__indirect_glProgramParameter4dNV;
-	__indirect_glProgramParameter4dvNV;
-	__indirect_glProgramParameter4fNV;
-	__indirect_glProgramParameter4fvNV;
 	__indirect_glProgramParameters4dvNV;
 	__indirect_glProgramParameters4fvNV;
 	__indirect_glRequestResidentProgramsNV;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/mesa/sun-src/src/mesa/drivers/dri/mapfile.externs	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,17 @@
+# Functions which are allowed to be unresolved when building dri modules
+
+{
+  global:
+    _glapi_Context = DATA extern;
+    _glapi_Dispatch = DATA extern;
+    _glapi_add_dispatch = FUNCTION extern;
+    _glapi_get_dispatch = FUNCTION extern;
+    _glapi_get_dispatch_table_size = FUNCTION extern;
+    _glapi_set_dispatch = FUNCTION extern;
+    _glapi_get_context = FUNCTION extern;
+    _glapi_set_context = FUNCTION extern;
+    _glapi_set_warning_func = FUNCTION extern;
+    _glapi_noop_enable_warnings = FUNCTION extern;
+    _glapi_check_multithread = FUNCTION extern;
+    _glthread_GetID = FUNCTION extern;
+};
--- a/open-src/proto/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/proto/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 # Makefile for X Consolidation Open Source Protocol modules
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,22 +28,45 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.12	08/09/15
+# @(#)Makefile	1.13	09/01/14
 #
 ###############################################################################
 
-OS_SUBDIRS_common = \
-	x11proto bigreqsproto compositeproto damageproto evieproto \
-	fixesproto fontcacheproto fontsproto glproto inputproto kbproto pmproto \
-	randrproto recordproto renderproto resourceproto scrnsaverproto \
-	trapproto videoproto xcmiscproto xextproto xf86bigfontproto \
-	xf86dgaproto xf86miscproto xf86vidmodeproto xineramaproto \
-	lg3dproto sun-ext-protos printproto
+OS_SUBDIRS_common = 		\
+	x11proto 		\
+	bigreqsproto 		\
+	compositeproto 		\
+	damageproto 		\
+	evieproto 		\
+	fixesproto 		\
+	fontcacheproto 		\
+	fontsproto 		\
+	glproto 		\
+	inputproto 		\
+	kbproto 		\
+	pmproto 		\
+	printproto 		\
+	randrproto 		\
+	recordproto 		\
+	renderproto 		\
+	resourceproto 		\
+	scrnsaverproto 		\
+	trapproto 		\
+	videoproto 		\
+	xcmiscproto 		\
+	xextproto 		\
+	xf86bigfontproto 	\
+	xf86dgaproto 		\
+	xf86driproto 		\
+	xf86miscproto 		\
+	xf86vidmodeproto 	\
+	xineramaproto 		\
+	lg3dproto 		\
+	sun-ext-protos
 
 OS_SUBDIRS_sparc = $(OS_SUBDIRS_common)
 
-OS_SUBDIRS_i386 = $(OS_SUBDIRS_common)       \
-	xf86driproto
+OS_SUBDIRS_i386 = $(OS_SUBDIRS_common)
 
 # Need to install to proto area by default for inter-package dependencies to
 # work right.
--- a/open-src/proto/Makefile.inc	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/proto/Makefile.inc	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 # -*- Makefile -*- rules common to most X.Org protocol modules
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.6	08/08/08
+# @(#)Makefile.inc	1.7	09/01/14
 #
 
 PWD:sh=pwd
@@ -56,7 +56,7 @@
 # Install
 default_install::
 	(cd $(SOURCE_DIR) ; \
-	 $(MAKE) $(MFLAGS) -e DESTDIR=$(PROTODIR) pkgconfigdir=/usr/lib/$(SUBDIR64)/pkgconfig install-pkgconfigDATA )
+	 $(MAKE) $(MFLAGS) -e DESTDIR=$(PROTODIR) pkgconfigdir=$(PKGCONFIG_DIR_64) install-pkgconfigDATA )
 
 
 
--- a/open-src/proto/inputproto/6649171.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
---- XI.h	Fri Aug 31 01:27:29 2007
-+++ XI.h	Tue Jan 15 10:51:05 2008
-@@ -214,6 +214,12 @@
- #define DeviceMode              (1L << 0)
- #define Relative                0
- #define Absolute                1
-+/* Merged from Metrolink tree for XINPUT stuff	*/
-+#define TS_Raw					57
-+#define TS_Scaled				58
-+#define SendCoreEvents			59
-+#define DontSendCoreEvents		60
-+/* End of merged section	*/
- 
- #define ProximityState          (1L << 1)
- #define InProximity             (0L << 1)
---- XIproto.h	Fri Aug 31 01:27:29 2007
-+++ XIproto.h	Tue Jan 15 10:51:39 2008
-@@ -1413,6 +1413,21 @@
-     CARD16          pad1 B16;
- } xDeviceEnableCtl;
- 
-+/* Merged from Metrolink tree for XINPUT stuff	*/
-+
-+typedef struct {
-+     CARD16         control;
-+     CARD16         length;
-+     CARD32         min_x;
-+     CARD32         max_x;
-+     CARD32         min_y;
-+     CARD32         max_y;
-+     CARD32         button_threshold;
-+} xDeviceTSCalibrationCtl;
-+
-+/* End of merged section	*/
-+
-+
- /**********************************************************
-  *
-  * Input extension events.
--- a/open-src/proto/inputproto/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/proto/inputproto/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.5	08/08/27
+# @(#)Makefile	1.6	09/01/11
 #
 
 # Package name used in tarballs
@@ -38,7 +38,7 @@
 MODULE_VERSION=1.4.4
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES=6649171.patch
+SOURCE_PATCHES= c++.patch,-p1
 
 ### Include common rulesets
 include ../Makefile.inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/proto/inputproto/c++.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,35 @@
+From 60c449cbb1769569ed5e98c75f26bd15627bd146 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <[email protected]>
+Date: Mon, 15 Dec 2008 12:16:10 +1000
+Subject: [PATCH] Protect _XiDevicePresenceNotifyEvent declaration against C++ includes. #19075
+
+X.Org Bug 19075 <http://bugs.freedesktop.org/show_bug.cgi?id=19075>
+---
+ XInput.h |    9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+diff --git a/XInput.h b/XInput.h
+index 702706d..3092e62 100644
+--- a/XInput.h
++++ b/XInput.h
+@@ -156,9 +156,16 @@ SOFTWARE.
+ #define NoExtensionEvent(d,type,_class) \
+     { _class =  ((XDevice *) d)->device_id << 8 | _noExtensionEvent;}
+ 
++#if defined(__cplusplus) || defined(c_plusplus)
++extern "C" {
++#endif
++    extern int _XiGetDevicePresenceNotifyEvent(Display *);
++#if defined(__cplusplus) || defined(c_plusplus)
++}
++#endif
++
+ #define DevicePresence(dpy, type, _class)                       \
+     {                                                           \
+-        extern int _XiGetDevicePresenceNotifyEvent(Display *);  \
+         type = _XiGetDevicePresenceNotifyEvent(dpy);            \
+         _class =  (0x10000 | _devicePresence);                  \
+     }
+-- 
+1.5.6.5
+
--- a/open-src/proto/printproto/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/proto/printproto/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,14 +28,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.1	08/09/15
+# @(#)Makefile	1.2	09/01/11
 #
 
 # Package name used in tarballs
 MODULE_NAME=printproto
 
 # Version number (used in path names)
-MODULE_VERSION=1.0.3
+MODULE_VERSION=1.0.4
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 6725007.patch
--- a/open-src/proto/randrproto/B32.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-commit d1c5739ae19f7cc01a6a5603d3fae93e1f9ee3d1
-Author: Alan Coopersmith <[email protected]>
-Date:   Mon Apr 9 14:31:10 2007 -0700
-
-    Delete duplicate B32's in xRRScreenChangeNotifyEvent
-    
-    Caused compiler warnings:
-      "randrproto.h", line 567: warning: syntax error:  empty member declaration
-      "randrproto.h", line 568: warning: syntax error:  empty member declaration
-
-diff --git a/randrproto.h b/randrproto.h
-index abca369..cf7a022 100644
---- a/randrproto.h
-+++ b/randrproto.h
-@@ -564,8 +564,8 @@ typedef struct {
-     CARD8 type;				/* always evBase + ScreenChangeNotify */
-     CARD8 rotation;			/* new rotation */
-     CARD16 sequenceNumber B16;
--    Time timestamp B32; B32;			/* time screen was changed */
--    Time configTimestamp B32; B32;		/* time config data was changed */
-+    Time timestamp B32;			/* time screen was changed */
-+    Time configTimestamp B32;		/* time config data was changed */
-     Window root B32;			/* root window */
-     Window window B32;			/* window requesting notification */
-     SizeID sizeID B16;			/* new size ID */
--- a/open-src/proto/randrproto/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/proto/randrproto/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,17 +28,17 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.3	08/08/08
+# @(#)Makefile	1.4	09/01/11
 #
 
 # Package name used in tarballs
 MODULE_NAME=randrproto
 
 # Version number (used in path names)
-MODULE_VERSION=1.2.1
+MODULE_VERSION=1.2.2
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES=	B32.patch,-p1
+SOURCE_PATCHES=	
 
 ### Include common rulesets
 include ../Makefile.inc
--- a/open-src/proto/renderproto/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/proto/renderproto/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -28,14 +28,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.2	08/08/08
+# @(#)Makefile	1.3	09/01/11
 #
 
 # Package name used in tarballs
 MODULE_NAME=renderproto
 
 # Version number (used in path names)
-MODULE_VERSION=0.9.2
+MODULE_VERSION=0.9.3
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES=	
--- a/open-src/proto/x11proto/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/proto/x11proto/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,14 +28,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.7	08/08/08
+# @(#)Makefile	1.8	09/01/11
 #
 
 # Package name used in tarballs
 MODULE_NAME=xproto
 
 # Version number (used in path names)
-MODULE_VERSION=7.0.12
+MODULE_VERSION=7.0.14
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES=	Xos.h-patch Xpoll.h-patch X.h-patch
--- a/open-src/proto/xextproto/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/proto/xextproto/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -28,14 +28,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.2	08/08/08
+# @(#)Makefile	1.3	09/01/11
 #
 
 # Package name used in tarballs
 MODULE_NAME=xextproto
 
 # Version number (used in path names)
-MODULE_VERSION=7.0.2
+MODULE_VERSION=7.0.4
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES=	Xsun-mbx-abi.patch
--- a/open-src/proto/xf86driproto/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/proto/xf86driproto/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -28,14 +28,14 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.3	08/08/08
+# @(#)Makefile	1.4	09/01/14
 #
 
 # Package name used in tarballs
 MODULE_NAME=xf86driproto
 
 # Version number (used in path names)
-MODULE_VERSION=2.0.3
+MODULE_VERSION=2.0.4
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES=	
--- a/open-src/util/build-tools/find-build-errors	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/util/build-tools/find-build-errors	Thu Jan 15 12:55:00 2009 -0800
@@ -29,7 +29,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# ident "@(#)find-build-errors 1.1     08/08/07 SMI"
+# ident "@(#)find-build-errors 1.2     09/01/11 SMI"
 #
 
 require 5.005;				# minimal Perl version required
@@ -236,7 +236,7 @@
       @pkglines = ();
     }
 
-    if ($l =~ m{Packaging was not successful.}ms) {
+    if ($l =~ m{(Packaging was not successful.|was not found ; skipping)}ms) {
       print join('', @pkglines);
     } else {
       push @pkglines, $l;
--- a/open-src/xserver/Makefile.inc	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/Makefile.inc	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 # -*- Makefile -*- rules common to both Xorg & Xvnc builds
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.9	08/10/07
+# @(#)Makefile.inc	1.10	09/01/14
 #
 
 PWD:sh=pwd
@@ -40,16 +40,16 @@
 include $(TOP)/common/Makefile.init
 
 # Xorg server source tarball to use sources from
-XORGSERVER_VERS=1.3.0.0
+XORGSERVER_VERS=1.5.3
 
 # Patches shared between Xorg & Xvnc builds
 XORG_SOURCE_PATCHES:sh=cat -s ../xorg/patch-list ../xorg/closed-src/patch-list | sed '/^\#/ d'
 
 XSERVER_FONTDIR=$(X11_DIR)/lib/X11/fonts
-MESA_SRC_DIR=$(TOP)/lib/mesa/$(BUILD_DIR)/Mesa-7.0.4
+MESA_SRC_DIR=$(TOP)/lib/mesa/$(BUILD_DIR)/Mesa-7.2
 
-SERVER_MODULES_DIR='$${libdir}/modules$(SERVERMOD_subdir)'
-DRI_MODULES_DIR='$${libdir}/modules/dri$(SERVERMOD_subdir)'
+SERVER_MODULES_DIR='$(X11_SERVERMODS_DIR)$(SERVERMOD_subdir)'
+DRI_MODULES_DIR='$(X11_SERVERMODS_DIR)/dri$(SERVERMOD_subdir)'
 
 # Command line options to GNU autoconf configure script for xorg-server
 XSERVER_CONFIG_OPTS_COMMON = \
@@ -67,9 +67,14 @@
 	--with-dri-driver-path=$(DRI_MODULES_DIR) \
 	--with-xkb-path='$${libdir}/X11/xkb' \
 	--with-rgb-path='$${libdir}/X11/rgb' \
-	--with-default-font-path="catalogue:/etc/X11/fontpath.d,$(FONT_DIR)/TrueType/,$(FONT_DIR)/Type1/,$(FONT_DIR)/Type1/sun/,$(FONT_DIR)/F3bitmaps/,$(FONT_DIR)/misc/,$(FONT_DIR)/100dpi/,$(FONT_DIR)/75dpi/" 
+	--with-serverconfig-path='$${libdir}/X11/xserver' \
+	--with-default-font-path="catalogue:/etc/X11/fontpath.d" \
+	--with-default-xkb-rules=xorg \
+	--with-default-xkb-model=pc105 \
+	$(ADDITIONAL_CONFIG_OPTS)
 
-XSERVER_CONFIG_OPTS_sparc=$(XSERVER_CONFIG_OPTS_COMMON)
+XSERVER_CONFIG_OPTS_sparc=$(XSERVER_CONFIG_OPTS_COMMON) \
+	--disable-glx
 XSERVER_CONFIG_OPTS_i386=$(XSERVER_CONFIG_OPTS_COMMON) \
 	--with-mesa-source=$(MESA_SRC_DIR)
 XSERVER_CONFIG_OPTS=$(XSERVER_CONFIG_OPTS_$(MACH))
@@ -86,8 +91,11 @@
 MODTYPE_CPPFLAGS_gcc= $(GCC_HEADERS)
 
 MODTYPE_CPPFLAGS=  \
-	-I$(MESA_SRC_DIR)/include \
+	-I$(PROTODIR)/usr/include \
+	-I$(PROTODIR)/usr/include/pixman-1 \
 	-I$(PROTODIR)$(X11_INCLUDES_DIR) \
+	-I$(PROTODIR)$(X11_INCLUDES_DIR)/drm \
+	-I$(PROTODIR)$(X11_INCLUDES_DIR)/X11/dri \
 	-I$(PROTODIR)$(X11_INCLUDES_DIR)/X11/extensions \
 	$(DPMS_DEFINES) -DSUNSOFT -DTSOL \
 	$(MODTYPE_CPPFLAGS_$(MODULE_COMPILER))
@@ -103,6 +111,11 @@
 	XSERVERCFLAGS_CFLAGS="-DHAS_FCHOWN -DHAS_STICKY_DIR_BIT -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DXTHREADS -DXUSE_MTSAFE_API" \
 	PATH=$(PATH):/usr/sbin
 
+# 64-bit X servers on SPARC crash on startup when built with Sun Studio 
+# with -g unless -xmemalign=8i is also used (Sun bug #6545113)
+MODTYPE_DEBUG_FLAGS_sparc_suncc = -xmemalign=8i
+MODTYPE_DEBUG_FLAGS=$(MODTYPE_DEBUG_FLAGS_$(MACH)_$(MODULE_COMPILER)) -DDEBUG
+
 MODTYPE_CFLAGS=$(PROG_CFLAGS)
 MODTYPE_CXXFLAGS=$(PROG_CXXFLAGS)
 MODTYPE_LDFLAGS=$(PROG_LDFLAGS) $(XSERVER_LDFLAGS_$(MODULE_COMPILER)) \
--- a/open-src/xserver/xorg/6278039.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-diff -urp -x '*~'  Xext/xevie.c Xext~/xevie.c
---- Xext/xevie.c        2007-12-18 10:18:57.909319000 -0800
-+++ Xext~/xevie.c       2007-12-18 10:49:21.126425000 -0800
-@@ -374,7 +374,11 @@ int SProcSelectInput (ClientPtr client)
- 
-     REQUEST (xXevieSelectInputReq);
-     swaps (&stuff->length, n);
--    REQUEST_AT_LEAST_SIZE (xXevieSendReq);
-+/* 6278039(P2) [jds3.1] All applications crashes when accessibility
-+    **             is enable via dtremote
-+    **             betweeen X86 and Sparc platforms
-+*/
-+    REQUEST_AT_LEAST_SIZE (xXevieSelectInputReq);
-     swapl(&stuff->event_mask, n);
-     return ProcSelectInput (client);
- }
-
--- a/open-src/xserver/xorg/6406044.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/6406044.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -10,7 +10,7 @@
 # copyright notice(s) and this permission notice appear in all copies of
 # the Software and that both the above copyright notice(s) and this
 # permission notice appear in supporting documentation.
-# 
+#
 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
@@ -20,66 +20,34 @@
 # FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
 # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
+#
 # Except as contained in this notice, the name of a copyright holder
 # shall not be used in advertising or otherwise to promote the sale, use
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 
-Merge the fix for bug 6398094 in 6.9 tree: Screen off center with left
-margin on 24.1" monitor with analog input
-
-Merge the fix for bug 6553135: libddc.so doesn't handle null mode
+Redo the patch for Xorg 1.5. The patch is helpful only for nv driver.
 
-diff -urp -x '*~' -x '*.orig' hw/xfree86/ddc/ddcProperty.c hw/xfree86/ddc/ddcProperty.c
---- hw/xfree86/ddc/ddcProperty.c	2007-02-16 08:03:12.000000000 -0800
-+++ hw/xfree86/ddc/ddcProperty.c	2007-07-30 18:38:26.379355000 -0700
-@@ -296,6 +296,25 @@ DDCGuessRangesFromModes(int scrnIndex, M
-     }
- }
- 
-+static double
-+ModeVRefresh(DisplayModePtr mode)
-+{
-+    double refresh = 0.0;
+--- hw/xfree86/modes/xf86EdidModes.c.orig	Fri Dec  5 15:42:03 2008
++++ hw/xfree86/modes/xf86EdidModes.c		Fri Dec 12 15:40:54 2008
+@@ -622,6 +622,20 @@
+                                              &det_mon->section.d_timings,
+ 					     preferred,
+ 					     quirks);
 +
-+    if (mode->VRefresh > 0.0)
-+	refresh = mode->VRefresh;
-+    else if (mode->HTotal > 0 && mode->VTotal > 0) {
-+	refresh = mode->Clock * 1000.0 / mode->HTotal / mode->VTotal;
-+	if (mode->Flags & V_INTERLACE)
-+	    refresh *= 2.0;
-+	if (mode->Flags & V_DBLSCAN)
-+	    refresh /= 2.0;
-+	if (mode->VScan > 1)
-+	    refresh /= (float)(mode->VScan);
-+    }
-+    return refresh;
-+}
-+
- /*
-  * Fill out MonPtr with xf86MonPtr information.
-  */
-@@ -375,6 +394,22 @@ xf86DDCMonitorSet(int scrnIndex, MonPtr 
-             Mode = DDCModeFromDetailedTiming(scrnIndex, 
-                                              &DDC->det_mon[i].section.d_timings,
- 					     preferred);
-+
-+	    if (Mode == NULL)
-+		break;
-+	    if ((DDC->features.input_type == 0) &&
++	    if (Mode && (DDC->features.input_type == 0) &&
 +            	(((Mode->HDisplay * 5 / 4) & ~0x07) > Mode->HTotal)) {
 +		struct detailed_timings *dt = &DDC->det_mon[i].section.d_timings;
 +		DisplayModeRec *cvtmode;
 +
 +		cvtmode = xf86CVTMode(dt->h_active, dt->v_active,
-+                                (double) ModeVRefresh(Mode), TRUE, FALSE);
++                                (double) xf86ModeVRefresh(Mode), TRUE, FALSE);
 +		memcpy(Mode, cvtmode, sizeof(DisplayModeRec));
 +		Mode->type       = M_T_DRIVER;
 +    		if (preferred)
 +		    Mode->type |= M_T_PREFERRED;
 +	    }
 +		
- 	    preferred = 0;
+ 	    preferred = FALSE;
              Modes = xf86ModesAdd(Modes, Mode);
              break;
--- a/open-src/xserver/xorg/6425775.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
---- hw/xfree86/os-support/solaris/sun_kbd.c     2007-07-24 16:45:36.000000000 -0700
-+++ hw/xfree86/os-support/solaris/sun_kbd.c     2007-07-25 10:53:36.000000000 -0700
-@@ -443,6 +443,10 @@
- sunKbdSoundBell(sunKbdPrivPtr priv, int loudness, int pitch, int duration)
- {
-     int	kbdCmd, i;
-+#ifdef KIOCMKTONE
-+    int cycles;
-+    int mktonevalue;
-+#endif
- 
-     if (loudness && pitch)
-     {
-@@ -454,6 +458,32 @@
- 	}
- #endif
- 	
-+#ifdef KIOCMKTONE
-+	if (pitch == 0)
-+	    cycles = UINT16_MAX;
-+	else if (pitch >= UINT16_MAX)
-+	    cycles = 0;
-+	else {
-+	    cycles = (PIT_HZ + pitch / 2) / pitch;
-+	    if (cycles > UINT16_MAX)
-+		cycles = UINT16_MAX;
-+	}
-+
-+	mktonevalue = cycles | (((duration * loudness * 20) / 1000) << 16);
-+
-+	errno = 0;
-+	SYSCALL(i = ioctl (priv->kbdFD, KIOCMKTONE, mktonevalue));
-+	if (i == 0)
-+	    return;
-+
-+	if (errno != EINVAL) {
-+	    if (errno != EAGAIN)
-+		xf86Msg(X_ERROR, "%s: Failed to activate bell: %s\n",
-+		    priv->devName, strerror(errno));
-+	    return;
-+	}
-+#endif
-+
-  	kbdCmd = KBD_CMD_BELL;
- 		
- 	SYSCALL(i = ioctl (priv->kbdFD, KIOCCMD, &kbdCmd));
--- a/open-src/xserver/xorg/6535006.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/6535006.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,7 @@
---- hw/xfree86/common/xf86Mode.c.orig	Fri May  4 17:59:09 2007
-+++ hw/xfree86/common/xf86Mode.c	Fri May  4 17:58:42 2007
-@@ -1508,7 +1508,45 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Mode.c hw/xfree86/common/xf86Mode.c
+--- hw/xfree86/common/xf86Mode.c	2008-09-24 20:23:48.393454000 -0700
++++ hw/xfree86/common/xf86Mode.c	2008-09-24 20:24:02.313999000 -0700
+@@ -1415,7 +1415,45 @@ xf86ValidateModes(ScrnInfoPtr scrp, Disp
  	virtX = virtualX;
  	virtY = virtualY;
  	scrp->virtualFrom = X_CONFIG;
@@ -47,7 +48,7 @@
  	/* No virtual size given in the config, try to infer */
  	/* XXX this doesn't take m{in,ax}Pitch into account; oh well */
  	inferred_virtual = inferVirtualSize(scrp, availModes, &virtX, &virtY);
-@@ -1593,12 +1631,7 @@
+@@ -1500,12 +1538,7 @@ xf86ValidateModes(ScrnInfoPtr scrp, Disp
  	xf86DeleteMode(&scrp->modes, scrp->modes);
      endp = &scrp->modes;
      last = NULL;
--- a/open-src/xserver/xorg/6540484.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
---- hw/xfree86/common/xf86Mode.c.orig	Fri May  4 18:05:14 2007
-+++ hw/xfree86/common/xf86Mode.c	Fri May  4 18:05:35 2007
-@@ -1865,7 +1865,7 @@
- 		       virtX, virtY, vx, vy);
- 	    virtX = vx;
- 	    virtY = vy;
--	    linePitch = miScanLineWidth(vx, vy, linePitch, apertureSize,
-+	    linePitch = miScanLineWidth(vx, vy, minPitch, apertureSize,
- 					BankFormat, pitchInc);
- 	}
-     }
--- a/open-src/xserver/xorg/6559710.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
---- hw/xfree86/common/xf86RandR.c	Tue Jan 23 13:39:16 2007
-+++ hw/xfree86/common/xf86Randr.c	Fri Jun  1 12:29:46 2007
-@@ -416,6 +416,12 @@
- 	xfree (randrp);
- 	return FALSE;
-     }
-+    
-+    if (rrPrivIndex == xf86RandRIndex)
-+    {
-+	xf86RandRIndex = AllocateScreenPrivateIndex();
-+    }
-+
-     rp = rrGetScrPriv(pScreen);
-     rp->rrGetInfo = xf86RandRGetInfo;
-     rp->rrSetConfig = xf86RandRSetConfig;
--- a/open-src/xserver/xorg/6561019.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
---- hw/xfree86/ddc/ddcProperty.c.orig	Fri Jun  1 14:43:50 2007
-+++ hw/xfree86/ddc/ddcProperty.c	Wed Jun  6 11:50:25 2007
-@@ -264,11 +264,11 @@
- 
-     /* set up the ranges for scanning through the modes */
-     Monitor->nHsync = 1;
--    Monitor->hsync[0].lo = 1024.0;
-+    Monitor->hsync[0].lo = 31.5;
-     Monitor->hsync[0].hi = 0.0;
- 
-     Monitor->nVrefresh = 1;
--    Monitor->vrefresh[0].lo = 1024.0;
-+    Monitor->vrefresh[0].lo = 50.0;
-     Monitor->vrefresh[0].hi = 0.0;
- 
-     while (Mode) {
--- a/open-src/xserver/xorg/6577124.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
---- GL/glx/glxdri.c	Tue Jan 23 13:39:15 2007
-+++ GL/glx/glxdri.c	Thu Jul  5 09:18:56 2007
-@@ -231,9 +231,12 @@
- {
-     __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext;
- 
--    context->driContext.destroyContext(NULL,
--				       context->base.pScreen->myNum,
--				       context->driContext.private);
-+
-+    if (context->driContext.destroyContext != NULL) {
-+	    context->driContext.destroyContext(NULL,
-+		context->base.pScreen->myNum,
-+		context->driContext.private);
-+    }
-     __glXContextDestroy(&context->base);
-     xfree(context);
- }
-@@ -243,6 +246,9 @@
- {
-     __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext;
- 
-+    if (context->driContext.bindContext == NULL)
-+	    return GL_FALSE;
-+
-     return (*context->driContext.bindContext)(NULL,
- 					      context->base.pScreen->myNum,
- 					      baseContext->drawPriv->drawId,
--- a/open-src/xserver/xorg/6618220.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/6618220.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,7 @@
---- hw/xfree86/common/xf86RandR.c	Fri Jan 18 17:29:10 2008
-+++ hw/xfree86/common/xf86RandR.c	Fri Feb  1 13:13:42 2008
-@@ -71,7 +71,7 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86RandR.c hw/xfree86/common/xf86RandR.c
+--- hw/xfree86/common/xf86RandR.c	2008-09-24 20:24:55.563464000 -0700
++++ hw/xfree86/common/xf86RandR.c	2008-09-24 20:25:14.259832000 -0700
+@@ -72,7 +72,7 @@ xf86RandRGetInfo (ScreenPtr pScreen, Rot
  
      *rotations = RR_Rotate_0;
  
--- a/open-src/xserver/xorg/6635721.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
---- Xi/chgfctl.c-old	Mon Dec 17 07:58:38 2007
-+++ Xi/chgfctl.c	Mon Dec 17 08:00:15 2007
-@@ -451,7 +451,6 @@
- 		     xStringFeedbackCtl * f)
- {
-     register char n;
--    register long *p;
-     int i, j;
-     KeySym *syms, *sup_syms;
- 
-@@ -458,11 +457,7 @@
-     syms = (KeySym *) (f + 1);
-     if (client->swapped) {
- 	swaps(&f->length, n);	/* swapped num_keysyms in calling proc */
--	p = (long *)(syms);
--	for (i = 0; i < f->num_keysyms; i++) {
--	    swapl(p, n);
--	    p++;
--	}
-+	SwapLongs((CARD32 *) syms, f->num_keysyms);
-     }
- 
-     if (f->num_keysyms > s->ctrl.max_symbols) {
---- Xi/chgkmap.c-old	Sun Dec 16 23:44:47 2007
-+++ Xi/chgkmap.c	Mon Dec 17 01:54:07 2007
-@@ -79,18 +79,14 @@
- SProcXChangeDeviceKeyMapping(register ClientPtr client)
- {
-     register char n;
--    register long *p;
--    register int i, count;
-+    register unsigned int count;
- 
-     REQUEST(xChangeDeviceKeyMappingReq);
-     swaps(&stuff->length, n);
-     REQUEST_AT_LEAST_SIZE(xChangeDeviceKeyMappingReq);
--    p = (long *)&stuff[1];
-     count = stuff->keyCodes * stuff->keySymsPerKeyCode;
--    for (i = 0; i < count; i++) {
--	swapl(p, n);
--	p++;
--    }
-+    REQUEST_FIXED_SIZE(xChangeDeviceKeyMappingReq, count * sizeof(CARD32));
-+    SwapLongs((CARD32 *) (&stuff[1]), count);
-     return (ProcXChangeDeviceKeyMapping(client));
- }
- 
-@@ -106,10 +102,14 @@
-     int ret;
-     unsigned len;
-     DeviceIntPtr dev;
-+    unsigned int count;
- 
-     REQUEST(xChangeDeviceKeyMappingReq);
-     REQUEST_AT_LEAST_SIZE(xChangeDeviceKeyMappingReq);
- 
-+    count = stuff->keyCodes * stuff->keySymsPerKeyCode;
-+    REQUEST_FIXED_SIZE(xChangeDeviceKeyMappingReq, count * sizeof(CARD32));
-+
-     dev = LookupDeviceIntRec(stuff->deviceid);
-     if (dev == NULL) {
- 	SendErrorToClient(client, IReqCode, X_ChangeDeviceKeyMapping, 0,
---- Xi/chgprop.c-old	Sun Dec 16 23:44:54 2007
-+++ Xi/chgprop.c	Mon Dec 17 01:54:16 2007
-@@ -81,8 +81,6 @@
- SProcXChangeDeviceDontPropagateList(register ClientPtr client)
- {
-     register char n;
--    register long *p;
--    register int i;
- 
-     REQUEST(xChangeDeviceDontPropagateListReq);
-     swaps(&stuff->length, n);
-@@ -89,11 +87,9 @@
-     REQUEST_AT_LEAST_SIZE(xChangeDeviceDontPropagateListReq);
-     swapl(&stuff->window, n);
-     swaps(&stuff->count, n);
--    p = (long *)&stuff[1];
--    for (i = 0; i < stuff->count; i++) {
--	swapl(p, n);
--	p++;
--    }
-+    REQUEST_FIXED_SIZE(xChangeDeviceDontPropagateListReq,
-+			stuff->count * sizeof(CARD32));
-+    SwapLongs((CARD32 *) (&stuff[1]), stuff->count);
-     return (ProcXChangeDeviceDontPropagateList(client));
- }
- 
---- Xi/grabdev.c-old	Sun Dec 16 23:45:04 2007
-+++ Xi/grabdev.c	Mon Dec 17 01:54:30 2007
-@@ -82,8 +82,6 @@
- SProcXGrabDevice(register ClientPtr client)
- {
-     register char n;
--    register long *p;
--    register int i;
- 
-     REQUEST(xGrabDeviceReq);
-     swaps(&stuff->length, n);
-@@ -91,12 +89,11 @@
-     swapl(&stuff->grabWindow, n);
-     swapl(&stuff->time, n);
-     swaps(&stuff->event_count, n);
--    p = (long *)&stuff[1];
--    for (i = 0; i < stuff->event_count; i++) {
--	swapl(p, n);
--	p++;
--    }
- 
-+    if (stuff->length != (sizeof(xGrabDeviceReq) >> 2) + stuff->event_count)
-+	return BadLength;
-+
-+    SwapLongs((CARD32 *) (&stuff[1]), stuff->event_count);
-     return (ProcXGrabDevice(client));
- }
- 
---- Xi/grabdevb.c-old	Sun Dec 16 23:45:11 2007
-+++ Xi/grabdevb.c	Mon Dec 17 01:54:42 2007
-@@ -80,8 +80,6 @@
- SProcXGrabDeviceButton(register ClientPtr client)
- {
-     register char n;
--    register long *p;
--    register int i;
- 
-     REQUEST(xGrabDeviceButtonReq);
-     swaps(&stuff->length, n);
-@@ -89,12 +87,10 @@
-     swapl(&stuff->grabWindow, n);
-     swaps(&stuff->modifiers, n);
-     swaps(&stuff->event_count, n);
--    p = (long *)&stuff[1];
--    for (i = 0; i < stuff->event_count; i++) {
--	swapl(p, n);
--	p++;
--    }
- 
-+    REQUEST_FIXED_SIZE(xGrabDeviceButtonReq,
-+			stuff->event_count * sizeof(CARD32));
-+    SwapLongs((CARD32 *) (&stuff[1]), stuff->event_count);
-     return (ProcXGrabDeviceButton(client));
- }
- 
---- Xi/grabdevk.c-old	Sun Dec 16 23:45:18 2007
-+++ Xi/grabdevk.c	Mon Dec 17 01:54:53 2007
-@@ -80,8 +80,6 @@
- SProcXGrabDeviceKey(register ClientPtr client)
- {
-     register char n;
--    register long *p;
--    register int i;
- 
-     REQUEST(xGrabDeviceKeyReq);
-     swaps(&stuff->length, n);
-@@ -89,11 +87,8 @@
-     swapl(&stuff->grabWindow, n);
-     swaps(&stuff->modifiers, n);
-     swaps(&stuff->event_count, n);
--    p = (long *)&stuff[1];
--    for (i = 0; i < stuff->event_count; i++) {
--	swapl(p, n);
--	p++;
--    }
-+    REQUEST_FIXED_SIZE(xGrabDeviceKeyReq, stuff->event_count * sizeof(CARD32));
-+    SwapLongs((CARD32 *) (&stuff[1]), stuff->event_count);
-     return (ProcXGrabDeviceKey(client));
- }
- 
---- Xi/selectev.c-old	Sun Dec 16 23:45:24 2007
-+++ Xi/selectev.c	Mon Dec 17 01:55:06 2007
-@@ -84,8 +84,6 @@
- SProcXSelectExtensionEvent(register ClientPtr client)
- {
-     register char n;
--    register long *p;
--    register int i;
- 
-     REQUEST(xSelectExtensionEventReq);
-     swaps(&stuff->length, n);
-@@ -92,11 +90,9 @@
-     REQUEST_AT_LEAST_SIZE(xSelectExtensionEventReq);
-     swapl(&stuff->window, n);
-     swaps(&stuff->count, n);
--    p = (long *)&stuff[1];
--    for (i = 0; i < stuff->count; i++) {
--	swapl(p, n);
--	p++;
--    }
-+    REQUEST_FIXED_SIZE(xSelectExtensionEventReq,
-+			stuff->count * sizeof(CARD32));
-+    SwapLongs((CARD32 *) (&stuff[1]), stuff->count);
-     return (ProcXSelectExtensionEvent(client));
- }
- 
---- Xi/sendexev.c-old	Sun Dec 16 23:45:31 2007
-+++ Xi/sendexev.c	Mon Dec 17 01:55:15 2007
-@@ -83,7 +83,7 @@
- SProcXSendExtensionEvent(register ClientPtr client)
- {
-     register char n;
--    register long *p;
-+    register CARD32 *p;
-     register int i;
-     xEvent eventT;
-     xEvent *eventP;
-@@ -94,6 +94,11 @@
-     REQUEST_AT_LEAST_SIZE(xSendExtensionEventReq);
-     swapl(&stuff->destination, n);
-     swaps(&stuff->count, n);
-+
-+    if (stuff->length != (sizeof(xSendExtensionEventReq) >> 2) + stuff->count +
-+	(stuff->num_events * (sizeof(xEvent) >> 2)))
-+	return BadLength;
-+
-     eventP = (xEvent *) & stuff[1];
-     for (i = 0; i < stuff->num_events; i++, eventP++) {
- 	proc = EventSwapVector[eventP->u.u.type & 0177];
-@@ -103,11 +108,8 @@
- 	*eventP = eventT;
-     }
- 
--    p = (long *)(((xEvent *) & stuff[1]) + stuff->num_events);
--    for (i = 0; i < stuff->count; i++) {
--	swapl(p, n);
--	p++;
--    }
-+    p = (CARD32 *)(((xEvent *) & stuff[1]) + stuff->num_events);
-+    SwapLongs(p, stuff->count);
-     return (ProcXSendExtensionEvent(client));
- }
- 
--- a/open-src/xserver/xorg/6635727.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-diff -up xorg-server-1.1.1/Xext/cup.c.jx xorg-server-1.1.1/Xext/cup.c
---- xorg-server-1.1.1/Xext/cup.c.jx	2006-07-05 14:31:36.000000000 -0400
-+++ xorg-server-1.1.1/Xext/cup.c	2007-12-11 14:28:37.000000000 -0500
-@@ -198,6 +198,9 @@ int ProcGetReservedColormapEntries(
- 
-     REQUEST_SIZE_MATCH (xXcupGetReservedColormapEntriesReq);
- 
-+    if (stuff->screen >= screenInfo.numScreens)
-+	return BadValue;
-+
- #ifndef HAVE_SPECIAL_DESKTOP_COLORS
-     citems[CUP_BLACK_PIXEL].pixel = 
- 	screenInfo.screens[stuff->screen]->blackPixel;
--- a/open-src/xserver/xorg/6635732.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-diff --git a/Xext/EVI.c b/Xext/EVI.c
-index 8fe3481..13bd32a 100644
---- a/Xext/EVI.c
-+++ b/Xext/EVI.c
-@@ -34,6 +34,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
- #include <X11/extensions/XEVIstr.h>
- #include "EVIstruct.h"
- #include "modinit.h"
-+#include "scrnintstr.h"
- 
- #if 0
- static unsigned char XEVIReqCode = 0;
-@@ -87,10 +88,22 @@ ProcEVIGetVisualInfo(ClientPtr client)
- {
-     REQUEST(xEVIGetVisualInfoReq);
-     xEVIGetVisualInfoReply rep;
--    int n, n_conflict, n_info, sz_info, sz_conflict;
-+    int i, n, n_conflict, n_info, sz_info, sz_conflict;
-     VisualID32 *conflict;
-+    unsigned int total_visuals = 0;
-     xExtendedVisualInfo *eviInfo;
-     int status;
-+
-+    /*
-+     * do this first, otherwise REQUEST_FIXED_SIZE can overflow.  we assume
-+     * here that you don't have more than 2^32 visuals over all your screens;
-+     * this seems like a safe assumption.
-+     */
-+    for (i = 0; i < screenInfo.numScreens; i++)
-+	total_visuals += screenInfo.screens[i]->numVisuals;
-+    if (stuff->n_visual > total_visuals)
-+	return BadValue;
-+
-     REQUEST_FIXED_SIZE(xEVIGetVisualInfoReq, stuff->n_visual * sz_VisualID32);
-     status = eviPriv->getVisualInfo((VisualID32 *)&stuff[1], (int)stuff->n_visual,
- 		&eviInfo, &n_info, &conflict, &n_conflict);
-diff --git a/Xext/sampleEVI.c b/Xext/sampleEVI.c
-index 7508aa7..b8f39c7 100644
---- a/Xext/sampleEVI.c
-+++ b/Xext/sampleEVI.c
-@@ -34,6 +34,13 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
- #include <X11/extensions/XEVIstr.h>
- #include "EVIstruct.h"
- #include "scrnintstr.h"
-+
-+#if HAVE_STDINT_H
-+#include <stdint.h>
-+#elif !defined(UINT32_MAX)
-+#define UINT32_MAX 0xffffffff
-+#endif
-+
- static int sampleGetVisualInfo(
-     VisualID32 *visual,
-     int n_visual,
-@@ -42,24 +49,36 @@ static int sampleGetVisualInfo(
-     VisualID32 **conflict_rn,
-     int *n_conflict_rn)
- {
--    int max_sz_evi = n_visual * sz_xExtendedVisualInfo * screenInfo.numScreens;
-+    unsigned int max_sz_evi;
-     VisualID32 *temp_conflict;
-     xExtendedVisualInfo *evi;
--    int max_visuals = 0, max_sz_conflict, sz_conflict = 0;
-+    unsigned int max_visuals = 0, max_sz_conflict, sz_conflict = 0;
-     register int visualI, scrI, sz_evi = 0, conflictI, n_conflict;
--    *evi_rn = evi = (xExtendedVisualInfo *)xalloc(max_sz_evi);
--    if (!*evi_rn)
--         return BadAlloc;
-+
-+    if (n_visual > UINT32_MAX/(sz_xExtendedVisualInfo * screenInfo.numScreens))
-+	return BadAlloc;
-+    max_sz_evi = n_visual * sz_xExtendedVisualInfo * screenInfo.numScreens;
-+    
-     for (scrI = 0; scrI < screenInfo.numScreens; scrI++) {
-         if (screenInfo.screens[scrI]->numVisuals > max_visuals)
-             max_visuals = screenInfo.screens[scrI]->numVisuals;
-     }
-+
-+    if (n_visual > UINT32_MAX/(sz_VisualID32 * screenInfo.numScreens 
-+			       * max_visuals)) 
-+	return BadAlloc;
-     max_sz_conflict = n_visual * sz_VisualID32 * screenInfo.numScreens * max_visuals;
-+
-+    *evi_rn = evi = (xExtendedVisualInfo *)xalloc(max_sz_evi);
-+    if (!*evi_rn)
-+         return BadAlloc;
-+
-     temp_conflict = (VisualID32 *)xalloc(max_sz_conflict);
-     if (!temp_conflict) {
-         xfree(*evi_rn);
-         return BadAlloc;
-     }
-+
-     for (scrI = 0; scrI < screenInfo.numScreens; scrI++) {
-         for (visualI = 0; visualI < n_visual; visualI++) {
- 	    evi[sz_evi].core_visual_id = visual[visualI];
--- a/open-src/xserver/xorg/6635740.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-diff --git a/Xext/shm.c b/Xext/shm.c
-index be79862..ed7dc28 100644
---- a/Xext/shm.c
-+++ b/Xext/shm.c
-@@ -723,6 +723,8 @@ ProcPanoramiXShmCreatePixmap(
-     int i, j, result;
-     ShmDescPtr shmdesc;
-     REQUEST(xShmCreatePixmapReq);
-+    unsigned int width, height, depth;
-+    unsigned long size;
-     PanoramiXRes *newPix;
- 
-     REQUEST_SIZE_MATCH(xShmCreatePixmapReq);
-@@ -732,11 +734,18 @@ ProcPanoramiXShmCreatePixmap(
-     LEGAL_NEW_RESOURCE(stuff->pid, client);
-     VERIFY_GEOMETRABLE(pDraw, stuff->drawable, client);
-     VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client);
--    if (!stuff->width || !stuff->height)
-+
-+    width = stuff->width;
-+    height = stuff->height;
-+    depth = stuff->depth;
-+    if (!width || !height || !depth)
-     {
- 	client->errorValue = 0;
-         return BadValue;
-     }
-+    if (width > 32767 || height > 32767)
-+        return BadAlloc;
-+
-     if (stuff->depth != 1)
-     {
-         pDepth = pDraw->pScreen->allowedDepths;
-@@ -746,10 +755,18 @@ ProcPanoramiXShmCreatePixmap(
- 	client->errorValue = stuff->depth;
-         return BadValue;
-     }
-+
- CreatePmap:
--    VERIFY_SHMSIZE(shmdesc, stuff->offset,
--		   PixmapBytePad(stuff->width, stuff->depth) * stuff->height,
--		   client);
-+    size = PixmapBytePad(width, depth) * height;
-+    if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) {
-+        if (size < width * height)
-+            return BadAlloc;
-+        /* thankfully, offset is unsigned */
-+        if (stuff->offset + size < size)
-+            return BadAlloc;
-+    }
-+
-+    VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client);
- 
-     if(!(newPix = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes))))
- 	return BadAlloc;
-@@ -1047,6 +1064,8 @@ ProcShmCreatePixmap(client)
-     register int i;
-     ShmDescPtr shmdesc;
-     REQUEST(xShmCreatePixmapReq);
-+    unsigned int width, height, depth;
-+    unsigned long size;
- 
-     REQUEST_SIZE_MATCH(xShmCreatePixmapReq);
-     client->errorValue = stuff->pid;
-@@ -1055,11 +1074,18 @@ ProcShmCreatePixmap(client)
-     LEGAL_NEW_RESOURCE(stuff->pid, client);
-     VERIFY_GEOMETRABLE(pDraw, stuff->drawable, client);
-     VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client);
--    if (!stuff->width || !stuff->height)
-+    
-+    width = stuff->width;
-+    height = stuff->height;
-+    depth = stuff->depth;
-+    if (!width || !height || !depth)
-     {
- 	client->errorValue = 0;
-         return BadValue;
-     }
-+    if (width > 32767 || height > 32767)
-+	return BadAlloc;
-+
-     if (stuff->depth != 1)
-     {
-         pDepth = pDraw->pScreen->allowedDepths;
-@@ -1069,10 +1095,18 @@ ProcShmCreatePixmap(client)
- 	client->errorValue = stuff->depth;
-         return BadValue;
-     }
-+
- CreatePmap:
--    VERIFY_SHMSIZE(shmdesc, stuff->offset,
--		   PixmapBytePad(stuff->width, stuff->depth) * stuff->height,
--		   client);
-+    size = PixmapBytePad(width, depth) * height;
-+    if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) {
-+	if (size < width * height)
-+	    return BadAlloc;
-+	/* thankfully, offset is unsigned */
-+	if (stuff->offset + size < size)
-+	    return BadAlloc;
-+    }
-+
-+    VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client);
-     pMap = (*shmFuncs[pDraw->pScreen->myNum]->CreatePixmap)(
- 			    pDraw->pScreen, stuff->width,
- 			    stuff->height, stuff->depth,
--- a/open-src/xserver/xorg/6636174.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
---- xorg-server-1.3.0.0/hw/xfree86/common/xf86MiscExt.c	2006-11-16 10:01:24.000000000 -0800
-+++ xorg-server-1.3.0.0/hw/xfree86/common/xf86MiscExt.c	2007-12-13 18:32:08.476098000 -0800
-@@ -640,6 +640,10 @@
- 
-     DEBUG_P("MiscExtPassMessage");
- 
-+    /* should check this in the protocol, but xf86NumScreens isn't exported */
-+    if (scrnIndex >= xf86NumScreens)
-+	return BadValue;
-+
-     if (*pScr->HandleMessage == NULL)
- 	    return BadImplementation;
-     return (*pScr->HandleMessage)(scrnIndex, msgtype, msgval, retstr);
--- a/open-src/xserver/xorg/6640505.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
---- dix/dixfonts.c.orig Thu Nov 16 10:01:22 2006
-+++ dix/dixfonts.c      Tue Dec 18 17:16:22 2007
-@@ -329,6 +329,13 @@
-        err = BadFontName;
-        goto bail;
-     }
-+    /* check values for firstCol, lastCol, firstRow, and lastRow for CR 6640505 */
-+    if (pfont->info.firstCol>pfont->info.lastCol ||
-+       pfont->info.firstRow>pfont->info.lastRow ||
-+       pfont->info.lastCol-pfont->info.firstCol > 255) {
-+       err = AllocError;
-+       goto bail;
-+    }
-     if (!pfont->fpe)
-        pfont->fpe = fpe;
-     pfont->refcnt++;
--- a/open-src/xserver/xorg/6642762.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
---- xorg-server-1.3.0.0/Xext/security.c	2007-12-19 23:00:48.062636000 -0800
-+++ xorg-server-1.3.0.0/Xext/security.c	2007-12-21 14:04:40.604373000 -0800
-@@ -1572,7 +1572,7 @@
- 	return;
- 
- #ifndef __UNIXOS2__
--    f = fopen(SecurityPolicyFile, "r");
-+    f = Fopen(SecurityPolicyFile, "r");
- #else
-     f = fopen((char*)__XOS2RedirRoot(SecurityPolicyFile), "r");
- #endif    
-@@ -1658,7 +1658,7 @@
-     }
- #endif /* PROPDEBUG */
- 
--    fclose(f);
-+    Fclose(f);
- } /* SecurityLoadPropertyAccessList */
- 
- 
-
---- xorg-server-1.3.0.0/os/utils.c	Mon Sep 10 21:05:28 2007
-+++ xorg-server-1.3.0.0/os/utils.c	Fri Dec 21 16:52:08 2007
-@@ -1889,17 +1889,20 @@
- 
-     return iop;
- #else
--    int ruid, euid;
-+    uid_t ruid, euid;
-+    gid_t rgid, egid;
- 
-     ruid = getuid();
-     euid = geteuid();
-+    rgid = getgid();
-+    egid = getegid();
-     
--    if (seteuid(ruid) == -1) {
-+    if ((seteuid(ruid) == -1) || (setegid(rgid) == -1)) {
- 	    return NULL;
-     }
-     iop = fopen(file, type);
- 
--    if (seteuid(euid) == -1) {
-+    if ((seteuid(euid) == -1) || (setegid(egid) == -1)) {
- 	    fclose(iop);
- 	    return NULL;
-     }
--- a/open-src/xserver/xorg/6668806.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/6668806.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,7 @@
---- hw/xfree86/os-support/bus/ix86Pci.c.orig	Thu May  1 16:40:37 2008
-+++ hw/xfree86/os-support/bus/ix86Pci.c	Thu May  1 16:41:21 2008
-@@ -245,6 +245,7 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/os-support/bus/ix86Pci.c hw/xfree86/os-support/bus/ix86Pci.c
+--- hw/xfree86/os-support/bus/ix86Pci.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/os-support/bus/ix86Pci.c	2008-09-24 20:25:29.280648000 -0700
+@@ -267,6 +267,7 @@ ix86PciBusCheck(void)
  	case (PCI_CLASS_PREHISTORIC << 8) | PCI_SUBCLASS_PREHISTORIC_VGA:
  	case (PCI_CLASS_DISPLAY << 8) | PCI_SUBCLASS_DISPLAY_VGA:
  	case (PCI_CLASS_BRIDGE << 8) | PCI_SUBCLASS_BRIDGE_HOST:
--- a/open-src/xserver/xorg/6683567.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,291 +0,0 @@
---- Xext/security.c-old	Mon Jun  2 01:44:29 2008
-+++ Xext/security.c	Mon Jun  2 01:45:54 2008
-@@ -656,6 +656,7 @@
-     register char 	n;
-     CARD32 *values;
-     unsigned long nvalues;
-+    int values_offset;
- 
-     swaps(&stuff->length, n);
-     REQUEST_AT_LEAST_SIZE(xSecurityGenerateAuthorizationReq);
-@@ -662,9 +663,12 @@
-     swaps(&stuff->nbytesAuthProto, n);
-     swaps(&stuff->nbytesAuthData, n);
-     swapl(&stuff->valueMask, n);
--    values = (CARD32 *)(&stuff[1]) +
--	((stuff->nbytesAuthProto + (unsigned)3) >> 2) +
--	((stuff->nbytesAuthData + (unsigned)3) >> 2);
-+    values_offset = ((stuff->nbytesAuthProto + (unsigned)3) >> 2) +
-+		    ((stuff->nbytesAuthData + (unsigned)3) >> 2);
-+    if (values_offset >
-+	stuff->length - (sz_xSecurityGenerateAuthorizationReq >> 2))
-+	return BadLength;
-+    values = (CARD32 *)(&stuff[1]) + values_offset;
-     nvalues = (((CARD32 *)stuff) + stuff->length) - values;
-     SwapLongs(values, nvalues);
-     return ProcSecurityGenerateAuthorization(client);
---- record/record.c-old	Mon Jun  2 01:52:45 2008
-+++ record/record.c	Mon Jun  2 01:56:19 2008
-@@ -2656,7 +2656,7 @@
- } /* SProcRecordQueryVersion */
- 
- 
--static void
-+static int
- SwapCreateRegister(xRecordRegisterClientsReq *stuff)
- {
-     register char n;
-@@ -2667,11 +2667,17 @@
-     swapl(&stuff->nClients, n);
-     swapl(&stuff->nRanges, n);
-     pClientID = (XID *)&stuff[1];
-+    if (stuff->nClients > stuff->length - (sz_xRecordRegisterClientsReq >> 2))
-+	return BadLength;
-     for (i = 0; i < stuff->nClients; i++, pClientID++)
-     {
- 	swapl(pClientID, n);
-     }
-+    if (stuff->nRanges > stuff->length - (sz_xRecordRegisterClientsReq >> 2)
-+	- stuff->nClients)
-+	return BadLength;
-     RecordSwapRanges((xRecordRange *)pClientID, stuff->nRanges);
-+    return Success;
- } /* SwapCreateRegister */
- 
- 
-@@ -2680,10 +2686,12 @@
- {
-     REQUEST(xRecordCreateContextReq);
-     register char 	n;
-+    int			status;
- 
-     swaps(&stuff->length, n);
-     REQUEST_AT_LEAST_SIZE(xRecordCreateContextReq);
--    SwapCreateRegister((pointer)stuff);
-+    if ((status = SwapCreateRegister((pointer)stuff)) != Success)
-+	return status;
-     return ProcRecordCreateContext(client);
- } /* SProcRecordCreateContext */
- 
-@@ -2693,10 +2701,12 @@
- {
-     REQUEST(xRecordRegisterClientsReq);
-     register char 	n;
-+    int			status;
- 
-     swaps(&stuff->length, n);
-     REQUEST_AT_LEAST_SIZE(xRecordRegisterClientsReq);
--    SwapCreateRegister((pointer)stuff);
-+    if ((status = SwapCreateRegister((pointer)stuff)) != Success)
-+	return status;
-     return ProcRecordRegisterClients(client);
- } /* SProcRecordRegisterClients */
- 
---- render/glyph.c-old	Mon Jun  2 01:27:50 2008
-+++ render/glyph.c	Mon Jun  2 01:34:18 2008
-@@ -626,8 +626,12 @@
-     int		     size;
-     GlyphPtr	     glyph;
-     int		     i;
-+    size_t	     padded_width;
- 
--    size = gi->height * PixmapBytePad (gi->width, glyphDepths[fdepth]);
-+    padded_width = PixmapBytePad (gi->width, glyphDepths[fdepth]);
-+    if (gi->height && padded_width > (UINT32_MAX - sizeof(GlyphRec))/gi->height)
-+	return 0;
-+    size = gi->height * padded_width;
-     glyph = (GlyphPtr) xalloc (size + sizeof (GlyphRec));
-     if (!glyph)
- 	return 0;
---- render/render.c-old	Mon Jun  2 01:28:00 2008
-+++ render/render.c	Mon Jun  2 02:06:03 2008
-@@ -1502,6 +1502,8 @@
-     pScreen = pSrc->pDrawable->pScreen;
-     width = pSrc->pDrawable->width;
-     height = pSrc->pDrawable->height;
-+    if (height && width > UINT32_MAX/(height*sizeof(CARD32)))
-+	return BadAlloc;
-     if ( stuff->x > width 
-       || stuff->y > height )
- 	return (BadMatch);
-@@ -1915,6 +1917,8 @@
-     LEGAL_NEW_RESOURCE(stuff->pid, client);
- 
-     len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq);
-+    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-+	return BadLength;
-     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
-         return BadLength;
- 
-@@ -2486,18 +2490,18 @@
-     return (*ProcRenderVector[stuff->renderReqType]) (client);
- }
- 
--static void swapStops(void *stuff, int n)
-+static void swapStops(void *stuff, int num)
- {
--    int i;
-+    int i, n;
-     CARD32 *stops;
-     CARD16 *colors;
-     stops = (CARD32 *)(stuff);
--    for (i = 0; i < n; ++i) {
-+    for (i = 0; i < num; ++i) {
-         swapl(stops, n);
-         ++stops;
-     }
-     colors = (CARD16 *)(stops);
--    for (i = 0; i < 4*n; ++i) {
-+    for (i = 0; i < 4*num; ++i) {
-         swaps(stops, n);
-         ++stops;
-     }
-@@ -2520,6 +2524,8 @@
-     swapl(&stuff->nStops, n);
- 
-     len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq);
-+    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-+	return BadLength;
-     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
-         return BadLength;
- 
-@@ -2547,6 +2553,8 @@
-     swapl(&stuff->nStops, n);
- 
-     len = (client->req_len << 2) - sizeof(xRenderCreateRadialGradientReq);
-+    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-+	return BadLength;
-     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
-         return BadLength;
- 
-@@ -2571,6 +2579,8 @@
-     swapl(&stuff->nStops, n);
- 
-     len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq);
-+    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-+	return BadLength;
-     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
-         return BadLength;
- 
---- dbe/dbe.c-old	Mon Jun  2 02:08:30 2008
-+++ dbe/dbe.c	Mon Jun  2 02:25:43 2008
-@@ -405,6 +405,7 @@
-     xDbeSwapAction		swapAction;
-     VisualID			visual;
-     int				status;
-+    int				add_index;
- 
- 
-     REQUEST_SIZE_MATCH(xDbeAllocateBackBufferNameReq);
-@@ -478,14 +479,6 @@
-             return(BadAlloc);
-         }
- 
--        /* Make the window priv a DBE window priv resource. */
--        if (!AddResource(stuff->buffer, dbeWindowPrivResType,
--            (pointer)pDbeWindowPriv))
--        {
--            xfree(pDbeWindowPriv);
--            return(BadAlloc);
--        }
--
-         /* Fill out window priv information. */
-         pDbeWindowPriv->pWindow      = pWin;
-         pDbeWindowPriv->width        = pWin->drawable.width;
-@@ -499,8 +492,9 @@
- 
-         /* Initialize the buffer ID list. */ 
-         pDbeWindowPriv->maxAvailableIDs = DBE_INIT_MAX_IDS;
--        pDbeWindowPriv->IDs[0] = stuff->buffer;
--        for (i = 1; i < DBE_INIT_MAX_IDS; i++)
-+
-+	add_index = 0;
-+        for (i = 0; i < DBE_INIT_MAX_IDS; i++)
-         {
-             pDbeWindowPriv->IDs[i] = DBE_FREE_ID_ELEMENT;
-         }
-@@ -569,18 +563,8 @@
- 
-             pDbeWindowPriv->maxAvailableIDs += DBE_INCR_MAX_IDS;
-         }
-+	add_index = i;
- 
--        /* Finally, record the buffer ID in the array. */
--        pDbeWindowPriv->IDs[i] = stuff->buffer;
--
--        /* Associate the new ID with an existing window priv. */
--        if (!AddResource(stuff->buffer, dbeWindowPrivResType,
--                         (pointer)pDbeWindowPriv))
--        {
--            pDbeWindowPriv->IDs[i] = DBE_FREE_ID_ELEMENT;
--            return(BadAlloc);
--        }
--
-     } /* else -- A buffer is already associated with the window. */
- 
- 
-@@ -588,13 +572,27 @@
-     status = (*pDbeScreenPriv->AllocBackBufferName)(pWin, stuff->buffer,
-                                                     stuff->swapAction);
- 
--    if ((status != Success) && (pDbeWindowPriv->nBufferIDs == 0))
-+    if (status == Success)
-     {
-+	pDbeWindowPriv->IDs[add_index] = stuff->buffer;
-+	if (!AddResource(stuff->buffer, dbeWindowPrivResType,
-+			 (pointer)pDbeWindowPriv))
-+	{
-+	    pDbeWindowPriv->IDs[add_index] = DBE_FREE_ID_ELEMENT;
-+
-+	    if (pDbeWindowPriv->nBufferIDs == 0) {
-+		status = BadAlloc;
-+		goto out_free;
-+	    }
-+	}
-+    } else {
-         /* The DDX buffer allocation routine failed for the first buffer of
-          * this window.
-          */
--        xfree(pDbeWindowPriv);
--        return(status);
-+
-+	if (pDbeWindowPriv->nBufferIDs == 0) {
-+	    goto out_free;
-+	}
-     }
- 
-     /* Increment the number of buffers (XIDs) associated with this window. */
-@@ -606,6 +604,11 @@
- 
-     return(status);
- 
-+out_free:
-+    pWin->devPrivates[dbeWindowPrivIndex].ptr = (pointer)NULL;
-+    xfree(pDbeWindowPriv);
-+    return(status);
-+
- } /* ProcDbeAllocateBackBufferName() */
- 
- 
---- Xext/shm.c-old	Tue Jun  3 01:48:14 2008
-+++ Xext/shm.c	Tue Jun  3 01:51:24 2008
-@@ -909,8 +909,17 @@
-         return BadValue;
-     }
- 
--    VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight,
--		   client);
-+    /*
-+     * There's a potential integer overflow in this check:
-+     * VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight,
-+     *                client);
-+     * the version below ought to avoid it
-+     */
-+    if (stuff->totalHeight != 0 &&
-+	length > (shmdesc->size - stuff->offset)/stuff->totalHeight) {
-+	client->errorValue = stuff->totalWidth;
-+	return BadValue;
-+    }
-     if (stuff->srcX > stuff->totalWidth)
-     {
- 	client->errorValue = stuff->srcX;
--- a/open-src/xserver/xorg/6685465.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/6685465.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,70 +1,134 @@
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-diff -urp -x '*~'  hw/kdrive/ephyr/hostx.c hw/kdrive/ephyr/hostx.c
---- hw/kdrive/ephyr/hostx.c	2008-06-05 14:53:51.603935000 -0700
-+++ hw/kdrive/ephyr/hostx.c	2008-06-10 11:26:28.531089800 -0700
-@@ -430,14 +430,37 @@
+From c8216aede6c4ac41976947521d884fa010913204 Mon Sep 17 00:00:00 2001
+From: Jeremy Uejio <[email protected]>
+Date: Tue, 1 Jul 2008 13:37:12 -0700
+Subject: [PATCH] Sun bug #6685465: Xephyr uses wrong or bad colortable in 8-bit mode
+
+<http://bugs.opensolaris.org/view_bug.do?bug_id=6685465>
+
+This bug is caused by Xephyr not handling the RGB byte order correctly
+of the server where Xephyr is displaying on. The previous code just
+assumed that the order was RGB and did not take into account that
+Xservers may use different order (such as BGR).
+
+The fix is to add a function to calculate the byte order and bits
+to shift based on the visual mask and the visual bits_per_rgb (which
+is usually 8, but could be server dependent).  Since the shifts won't
+change once the display connection has been made, I can cache these
+values so that Xephyr doesn't have to keep recalculating them everytime
+it tries to translate the Xephyr colormap entries for Xephyr clients to
+the actual server colormap entries (i.e. calling the function
+hostx_set_cmap_entry() repeatedly for every colormap entry).
+---
+ hw/kdrive/ephyr/hostx.c |   30 ++++++++++++++++++++++++++++--
+ 1 files changed, 28 insertions(+), 2 deletions(-)
+
+diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
+index 74f9f16..171d78c 100644
+--- a/hw/kdrive/ephyr/hostx.c
++++ b/hw/kdrive/ephyr/hostx.c
+@@ -565,14 +565,40 @@ hostx_get_visual_masks (EphyrScreenInfo screen,
      }
  }
  
 +static int 
-+hostx_calculate_color_shift(unsigned long mask)
++hostx_calculate_color_shift(unsigned long mask,
++			    int bits_per_rgb)
 +{
-+  int shift=1;
-+  /* count # of bits in mask */
-+  while(mask=(mask>>1)) shift++;
-+  /* cmap entry is an unsigned char so adjust it by size of that */
-+  shift = shift - sizeof(unsigned char) * 8;
-+  if (shift < 0) shift=0;
-+  return shift;
++    int shift = 0;
++    while(mask) {
++	mask = mask >> bits_per_rgb;
++	if (mask) shift += bits_per_rgb;
++    }
++    return shift;
 +}
 +
  void
- hostx_set_cmap_entry(unsigned char idx, 
- 		     unsigned char r, 
- 		     unsigned char g, 
+ hostx_set_cmap_entry(unsigned char idx,
+ 		     unsigned char r,
+ 		     unsigned char g,
  		     unsigned char b)
  {
 -  /* XXX Will likely break for 8 on 16, not sure if this is correct */
 -  HostX.cmap[idx] = (r << 16) | (g << 8) | (b);
-+  /* need to calculate the shifts for RGB because server could be BGR. */
-+  /* XXX Not sure if this is correct for 8 on 16, but this works for 8 on 24.*/
-+  static int rshift, bshift, gshift = 0;
-+  static int first_time=1;
-+  if (first_time) {
-+    first_time=0;
-+    rshift = hostx_calculate_color_shift(HostX.visual->red_mask);
-+    gshift = hostx_calculate_color_shift(HostX.visual->green_mask);
-+    bshift = hostx_calculate_color_shift(HostX.visual->blue_mask);
-+  }
-+  HostX.cmap[idx] = ((r << rshift) & HostX.visual->red_mask) | 
-+		    ((g << gshift) & HostX.visual->green_mask) |
-+		    ((b << bshift) & HostX.visual->blue_mask);
++/* need to calculate the shifts for RGB because server could be BGR. */
++/* XXX Not sure if this is correct for 8 on 16, but this works for 8 on 24.*/
++    static int rshift, bshift, gshift = 0;
++    static int first_time = 1;
++    if (first_time) {
++	first_time = 0;
++	rshift = hostx_calculate_color_shift(HostX.visual->red_mask,
++					     HostX.visual->bits_per_rgb);
++	gshift = hostx_calculate_color_shift(HostX.visual->green_mask,
++					     HostX.visual->bits_per_rgb);
++	bshift = hostx_calculate_color_shift(HostX.visual->blue_mask,
++					     HostX.visual->bits_per_rgb);
++    }
++    HostX.cmap[idx] = ((r << rshift) & HostX.visual->red_mask) |
++		      ((g << gshift) & HostX.visual->green_mask) |
++		      ((b << bshift) & HostX.visual->blue_mask);
  }
  
  /**
+-- 
+1.5.6.5
+
+From 416685c295353b5816689994c7c58ae7db3e878d Mon Sep 17 00:00:00 2001
+From: Jeremy Uejio <[email protected]>
+Date: Tue, 25 Nov 2008 16:26:44 -0800
+Subject: [PATCH] Refix Sun bug #6685465: Xephyr uses wrong or bad colortable in 8-bit mode
+
+<http://bugs.opensolaris.org/view_bug.do?bug_id=6685465>
+
+This is a refix of the previous fix for CR 6685465.  In the first fix
+I was shifting the colors to match the mask by the bits_per_rgb amount
+in the visual structure.  That field has nothing to do with the # of
+bits to shift by.  I should just instead shift the bits to match the mask.
+---
+ hw/kdrive/ephyr/hostx.c |   23 ++++++++++-------------
+ 1 files changed, 10 insertions(+), 13 deletions(-)
+
+diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
+index 1bc95a8..d289d73 100644
+--- a/hw/kdrive/ephyr/hostx.c
++++ b/hw/kdrive/ephyr/hostx.c
+@@ -578,14 +578,14 @@ hostx_get_visual_masks (EphyrScreenInfo screen,
+ }
+ 
+ static int 
+-hostx_calculate_color_shift(unsigned long mask,
+-			    int bits_per_rgb)
++hostx_calculate_color_shift(unsigned long mask)
+ {
+-    int shift = 0;
+-    while(mask) {
+-	mask = mask >> bits_per_rgb;
+-	if (mask) shift += bits_per_rgb;
+-    }
++    int shift = 1;
++    /* count # of bits in mask */
++    while (mask=(mask>>1)) shift++;
++    /* cmap entry is an unsigned char so adjust it by size of that */
++    shift = shift - sizeof(unsigned char) * 8;
++    if (shift < 0) shift = 0;
+     return shift;
+ }
+ 
+@@ -601,12 +601,9 @@ hostx_set_cmap_entry(unsigned char idx,
+     static int first_time = 1;
+     if (first_time) {
+ 	first_time = 0;
+-	rshift = hostx_calculate_color_shift(HostX.visual->red_mask,
+-					     HostX.visual->bits_per_rgb);
+-	gshift = hostx_calculate_color_shift(HostX.visual->green_mask,
+-					     HostX.visual->bits_per_rgb);
+-	bshift = hostx_calculate_color_shift(HostX.visual->blue_mask,
+-					     HostX.visual->bits_per_rgb);
++	rshift = hostx_calculate_color_shift(HostX.visual->red_mask);
++	gshift = hostx_calculate_color_shift(HostX.visual->green_mask);
++	bshift = hostx_calculate_color_shift(HostX.visual->blue_mask);
+     }
+     HostX.cmap[idx] = ((r << rshift) & HostX.visual->red_mask) |
+ 		      ((g << gshift) & HostX.visual->green_mask) |
+-- 
+1.5.6.5
+
--- a/open-src/xserver/xorg/6721634.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/6721634.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -27,9 +27,9 @@
 # of the copyright holder.
 
 diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86AutoConfig.c hw/xfree86/common/xf86AutoConfig.c
---- hw/xfree86/common/xf86AutoConfig.c	2008-08-27 10:35:08.374335000 -0400
-+++ hw/xfree86/common/xf86AutoConfig.c	2008-08-27 10:28:59.856790000 -0400
-@@ -67,6 +67,18 @@
+--- hw/xfree86/common/xf86AutoConfig.c	2008-09-24 20:25:58.727068000 -0700
++++ hw/xfree86/common/xf86AutoConfig.c	2008-09-24 20:26:14.062161000 -0700
+@@ -56,6 +56,18 @@
  	"\tIdentifier\t" BUILTIN_DEVICE_NAME "\n" \
  	"\tDriver\t\"%s\"\n"
  
@@ -48,7 +48,7 @@
  #define BUILTIN_DEVICE_SECTION_POST \
  	"EndSection\n\n"
  
-@@ -74,6 +86,13 @@
+@@ -63,6 +75,13 @@
  	BUILTIN_DEVICE_SECTION_PRE \
  	BUILTIN_DEVICE_SECTION_POST
  
@@ -59,39 +59,21 @@
 +	BUILTIN_DEVICE_SECTION_POST
 +#endif
 +
- #define BUILTIN_MONITOR_NAME \
- 	"\"Builtin Default Monitor\""
+ #define BUILTIN_SCREEN_NAME \
+ 	"\"Builtin Default %s Screen %d\""
  
-@@ -242,6 +261,10 @@
- 	= { detectedDeviceList, fallbackDeviceList, NULL };
-     const char **p = detectedDeviceList;
-     const char ***d;
-+#ifdef sun
-+    const char *nvidia_string = "nvidia";
-+    const char *nvidia_opt_no_logo = "\tOption \"NoLogo\" \"True\"\n";
-+#endif
-     char buf[1024];
-     pciVideoPtr *pciptr, info = NULL;
-     ConfigStatus ret;
-@@ -260,7 +283,7 @@
+@@ -224,6 +243,14 @@ xf86AutoConfig(void)
+     listPossibleVideoDrivers(deviceList, 20);
  
- 	    /* Special case from before the general case was set */
- 	    if (strcmp(visid.name, "NVDAnvda") == 0) {
--		detectedDeviceList[ddi++] = "nvidia";
-+		detectedDeviceList[ddi++] = nvidia_string;
- 	    }
- 
- 	    /* General case - split into vendor name & driver name */
-@@ -306,6 +329,12 @@
-     for (d = deviceLists; *d ; d++) {
- 	for (p = *d; *p; p++) {
- 	    ErrorF(" \"%s\"", *p);
+     for (p = deviceList; *p; p++) {
 +#ifdef sun
-+	    if (!strncmp(*p, nvidia_string, sizeof(nvidia_string)))
-+	        snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION_OPT,
-+	            *p, 0, *p, nvidia_opt_no_logo);
-+	    else
++	const char *nvidia_string = "nvidia";
++	const char *nvidia_opt_no_logo = "\tOption \"NoLogo\" \"True\"\n";
++	if (!strncmp(*p, nvidia_string, sizeof(nvidia_string)))
++	    snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION_OPT,
++		     *p, 0, *p, nvidia_opt_no_logo);
++	else
 +#endif
- 	    snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
- 	    AppendToConfig(buf);
- 	    snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
+ 	snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
+ 	AppendToConfig(buf);
+ 	snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
--- a/open-src/xserver/xorg/6740339.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
---- exa/exa.c	Fri Feb 16 08:03:12 2007
-+++ exa/exa.c	Mon Sep  8 16:17:11 2008
-@@ -276,7 +276,7 @@
- 				     pExaScr->info->pixmapPitchAlign);
-     pExaPixmap->fb_size = pExaPixmap->fb_pitch * h;
- 
--    if (pExaPixmap->fb_pitch > 32767) {
-+    if (pExaPixmap->fb_pitch > 131071) {
- 	fbDestroyPixmap(pPixmap);
- 	return NULL;
-     }
--- a/open-src/xserver/xorg/6742579.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,496 +0,0 @@
---- GL/symlink-mesa.sh	Mon Jul  7 11:37:13 2008
-+++ GL/symlink-mesa.sh	Mon Jul  7 12:56:34 2008
-@@ -85,15 +85,15 @@
-     done
- }
- 
--symlink_mesa_ac() {
--    src_dir src/mesa/array_cache
--    dst_dir mesa/array_cache
-+#symlink_mesa_ac() {
-+#    src_dir src/mesa/array_cache
-+#    dst_dir mesa/array_cache
-+#
-+#    for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
-+#        action `basename $src`
-+#    done
-+#}
- 
--    for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
--        action `basename $src`
--    done
--}
--
- symlink_mesa_swrast() {
-     src_dir src/mesa/swrast
-     dst_dir mesa/swrast
-@@ -121,6 +121,15 @@
-     done
- }
- 
-+symlink_mesa_vbo() {
-+    src_dir src/mesa/vbo
-+    dst_dir mesa/vbo
-+
-+    for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
-+        action `basename $src`
-+    done
-+}
-+
- symlink_mesa_shader() {
-     src_dir src/mesa/shader
-     dst_dir mesa/shader
-@@ -172,6 +181,10 @@
-     action xm_span.c
-     action xm_tri.c
-     action xmesaP.h
-+    action xm_image.c
-+    action xm_image.h
-+    action xm_glide.c
-+    action xm_glide.h
- 
-     # another hack
-     src_dir src/mesa/drivers/common
-@@ -203,10 +216,11 @@
- symlink_mesa() {
-     symlink_mesa_main
-     symlink_mesa_math
--    symlink_mesa_ac
-+#symlink_mesa_ac
-     symlink_mesa_swrast
-     symlink_mesa_ss
-     symlink_mesa_tnl
-+    symlink_mesa_vbo
-     symlink_mesa_shader
-     symlink_mesa_shader_grammar
-     symlink_mesa_shader_slang
-@@ -226,10 +240,10 @@
- 
-     action indirect_size.h
- 
--    src_dir src/mesa/drivers/dri/common
-+    src_dir src/glx/x11
- 
--    action glcontextmodes.c
--    action glcontextmodes.h
-+    action glcontextmodes.c
-+    action glcontextmodes.h
- 
-     src_dir src/mesa/glapi
- 
-
---- GL/mesa/X/Makefile.am	Mon Jul  7 13:14:00 2008
-+++ GL/mesa/X/Makefile.am	Mon Jul  7 13:18:30 2008
-@@ -2,7 +2,6 @@
- 
- INCLUDES = -I@MESA_SOURCE@/include \
-            -I../X \
--           -I../array_cache \
-            -I../glapi \
-            -I../main \
-            -I../math \
-@@ -10,6 +9,7 @@
-            -I../swrast \
-            -I../swrast_setup \
-            -I../tnl \
-+           -I../vbo \
-            -I.. \
-            -I../../glx \
-            -I$(top_srcdir)/GL/glx \
-@@ -36,4 +36,6 @@
-                   xm_line.c \
-                   xm_span.c \
-                   xm_tri.c \
-+                  xm_image.c \
-+                  xm_glide.c \
- 		  drivers/common/driverfuncs.c
-
-
---- GL/mesa/Makefile.am	Mon Jul  7 13:10:15 2008
-+++ GL/mesa/Makefile.am	Mon Jul  7 13:13:10 2008
-@@ -1,4 +1,4 @@
--SUBDIRS = main math array_cache swrast swrast_setup tnl shader X glapi
-+SUBDIRS = main math swrast swrast_setup tnl vbo shader X glapi
- 
- noinst_LTLIBRARIES = libGLcore.la
- 
-@@ -5,10 +5,10 @@
- libGLcore_la_SOURCES = dummy.c
- libGLcore_la_LIBADD = main/libmain.la \
-                       math/libmath.la \
--                      array_cache/libac.la \
-                       swrast/libswrast.la \
-                       swrast_setup/libss.la \
-                       tnl/libtnl.la \
-+                      vbo/libvbo.la \
-                       shader/libshader.la \
- 		      shader/grammar/libgrammar.la \
- 		      shader/slang/libslang.la \
-
-
---- GL/mesa/glapi/Makefile.am	Mon Jul  7 13:18:29 2008
-+++ GL/mesa/glapi/Makefile.am	Mon Jul  7 13:21:01 2008
-@@ -7,7 +7,6 @@
- 
- INCLUDES = -I@MESA_SOURCE@/include \
-            -I../X \
--           -I../array_cache \
-            -I../glapi \
-            -I../main \
-            -I../math \
-@@ -15,6 +14,7 @@
-            -I../swrast \
-            -I../swrast_setup \
-            -I../tnl \
-+           -I../vbo \
-            -I.. \
-            -I$(top_srcdir)/hw/xfree86/os-support
- 
-
-
---- GL/mesa/math/Makefile.am	Mon Jul  7 13:21:51 2008
-+++ GL/mesa/math/Makefile.am	Mon Jul  7 13:24:36 2008
-@@ -7,7 +7,6 @@
- 
- INCLUDES = -I@MESA_SOURCE@/include \
-            -I../X \
--           -I../array_cache \
-            -I../glapi \
-            -I../main \
-            -I../math \
-@@ -15,6 +14,7 @@
-            -I../swrast \
-            -I../swrast_setup \
-            -I../tnl \
-+           -I../vbo \
-            -I.. \
-            -I$(top_srcdir)/hw/xfree86/os-support
- 
-
---- GL/mesa/shader/Makefile.am	Mon Jul  7 13:23:13 2008
-+++ GL/mesa/shader/Makefile.am	Mon Jul  7 13:28:35 2008
-@@ -9,7 +9,6 @@
- 
- INCLUDES = -I@MESA_SOURCE@/include \
-            -I../X \
--           -I../array_cache \
-            -I../glapi \
-            -I../main \
-            -I../math \
-@@ -19,6 +18,7 @@
-            -I../swrast \
-            -I../swrast_setup \
-            -I../tnl \
-+           -I../vbo \
-            -I.. \
-            -I$(top_srcdir)/hw/xfree86/os-support
- 
-@@ -28,8 +28,13 @@
-                       atifragshader.c \
-                       nvfragparse.c \
-                       nvprogram.c \
--                      nvvertexec.c \
- 		      nvvertparse.c \
-                       program.c \
--                      shaderobjects.c \
--		      shaderobjects_3dlabs.c
-+                      prog_debug.c \
-+                      prog_execute.c \
-+                      prog_instruction.c \
-+                      prog_parameter.c \
-+                      prog_print.c \
-+                      prog_statevars.c \
-+                      programopt.c \
-+		      shader_api.c
-
-
---- GL/mesa/tnl/Makefile.am	Mon Jul  7 13:28:59 2008
-+++ GL/mesa/tnl/Makefile.am	Mon Jul  7 13:34:02 2008
-@@ -7,7 +7,6 @@
- 
- INCLUDES = -I@MESA_SOURCE@/include \
-            -I../X \
--           -I../array_cache \
-            -I../glapi \
-            -I../main \
-            -I../math \
-@@ -16,19 +15,13 @@
-            -I../swrast \
-            -I../swrast_setup \
-            -I../tnl \
-+           -I../vbo \
-            -I.. \
-            -I$(top_srcdir)/hw/xfree86/os-support
- 
--nodist_libtnl_la_SOURCES = t_array_api.c \
--                      t_array_import.c \
--                      t_context.c \
-+nodist_libtnl_la_SOURCES = t_context.c \
-                       t_pipeline.c \
--                      t_save_api.c \
--                      t_save_loopback.c \
--                      t_save_playback.c \
--                      t_vb_arbprogram.c \
--                      t_vb_arbprogram_sse.c \
--                      t_vb_arbshader.c \
-+                      t_draw.c \
-                       t_vb_cull.c \
-                       t_vb_fog.c \
-                       t_vb_light.c \
-@@ -42,9 +35,4 @@
-                       t_vertex.c \
-                       t_vertex_generic.c \
-                       t_vertex_sse.c \
--                      t_vp_build.c \
--                      t_vtx_api.c \
--                      t_vtx_eval.c \
--                      t_vtx_exec.c \
--                      t_vtx_generic.c \
--                      t_vtx_x86.c
-+                      t_vp_build.c
-
-
---- GL/mesa/shader/slang/Makefile.am	Mon Jul  7 13:47:04 2008
-+++ GL/mesa/shader/slang/Makefile.am	Mon Jul  7 13:51:53 2008
-@@ -8,7 +8,6 @@
- INCLUDES = -I@MESA_SOURCE@/include \
-            -I../grammar \
-            -I../../X \
--           -I../../array_cache \
-            -I../../glapi \
-            -I../../main \
-            -I../../math \
-@@ -16,26 +15,28 @@
-            -I../../swrast \
-            -I../../swrast_setup \
-            -I../../tnl \
-+           -I../../vbo \
-            -I../.. \
-            -I$(top_srcdir)/hw/xfree86/os-support
- 
--nodist_libslang_la_SOURCES = slang_analyse.c \
--		      slang_assemble_assignment.c \
--		      slang_assemble.c \
--		      slang_assemble_conditional.c \
--		      slang_assemble_constructor.c \
--		      slang_assemble_typeinfo.c \
-+nodist_libslang_la_SOURCES = slang_builtin.c \
-+		      slang_codegen.c \
- 		      slang_compile.c \
- 		      slang_compile_function.c \
- 		      slang_compile_operation.c \
- 		      slang_compile_struct.c \
- 		      slang_compile_variable.c \
--		      slang_execute.c \
--		      slang_execute_x86.c \
--		      slang_export.c \
--		      slang_library_texsample.c \
-+		      slang_emit.c \
-+		      slang_ir.c \
-+		      slang_label.c \
- 		      slang_library_noise.c \
- 		      slang_link.c \
-+		      slang_log.c \
-+		      slang_mem.c \
- 		      slang_preprocess.c \
-+		      slang_print.c \
-+		      slang_simplify.c \
- 		      slang_storage.c \
-+		      slang_typeinfo.c \
-+		      slang_vartable.c \
- 		      slang_utility.c
-
-
---- GL/mesa/shader/grammar/Makefile.am	Mon Jul  7 13:50:10 2008
-+++ GL/mesa/shader/grammar/Makefile.am	Mon Jul  7 13:52:39 2008
-@@ -7,7 +7,6 @@
- 
- INCLUDES = -I@MESA_SOURCE@/include \
-            -I../../X \
--           -I../../array_cache \
-            -I../../glapi \
-            -I../../main \
-            -I../../math \
-@@ -15,6 +14,7 @@
-            -I../../swrast \
-            -I../../swrast_setup \
-            -I../../tnl \
-+           -I../../vbo \
-            -I../.. \
-            -I$(top_srcdir)/hw/xfree86/os-support
- 
-
-
---- GL/glx/Makefile.am	Mon Jul  7 13:58:38 2008
-+++ GL/glx/Makefile.am	Mon Jul  7 14:02:38 2008
-@@ -28,10 +28,14 @@
- 	-I$(top_srcdir)/mi
- 
- 
-+#nodist_libglx_la_SOURCES = indirect_size.h \
-+#			   glapi.c \
-+#			   glcontextmodes.c \
-+#			   glcontextmode.h \
-+#			   glthread.c
-+
- nodist_libglx_la_SOURCES = indirect_size.h \
- 			   glapi.c \
--			   glcontextmodes.c \
--			   glcontextmode.h \
- 			   glthread.c
- 
- libglxdri_la_SOURCES = \
-@@ -53,6 +57,9 @@
-         glxserver.h \
-         glxutil.c \
-         glxutil.h \
-+        glcontextmodes.c \
-+        glcontextmodes.h \
-+        glxutil.h \
-         indirect_dispatch.c \
-         indirect_dispatch.h \
-         indirect_dispatch_swap.c \
-
-
---- configure.ac	Mon Jul  7 17:03:19 2008
-+++ configure.ac	Mon Jul  7 17:03:41 2008
-@@ -1723,7 +1723,6 @@
- GL/Makefile
- GL/glx/Makefile
- GL/mesa/Makefile
--GL/mesa/array_cache/Makefile
- GL/mesa/glapi/Makefile
- GL/mesa/main/Makefile
- GL/mesa/math/Makefile
-@@ -1733,6 +1732,7 @@
- GL/mesa/swrast/Makefile
- GL/mesa/swrast_setup/Makefile
- GL/mesa/tnl/Makefile
-+GL/mesa/vbo/Makefile
- GL/mesa/X/Makefile
- include/Makefile
- afb/Makefile
-
-
---- GL/mesa/swrast/Makefile.am	Sun Sep 17 23:04:17 2006
-+++ GL/mesa/swrast/Makefile.am	Tue Jul  8 10:30:31 2008
-@@ -7,7 +7,6 @@
- 
- INCLUDES = -I@MESA_SOURCE@/include \
-            -I../X \
--           -I../array_cache \
-            -I../glapi \
-            -I../main \
-            -I../math \
-@@ -17,6 +16,7 @@
-            -I../swrast \
-            -I../swrast_setup \
-            -I../tnl \
-+           -I../vbo \
-            -I.. \
-            -I$(top_srcdir)/hw/xfree86/os-support
- 
-@@ -24,7 +24,6 @@
-                       s_aatriangle.c \
-                       s_accum.c \
-                       s_alpha.c \
--                      s_arbshader.c \
-                       s_atifragshader.c \
-                       s_bitmap.c \
-                       s_blend.c \
-@@ -40,10 +39,10 @@
-                       s_lines.c \
-                       s_logic.c \
-                       s_masking.c \
--                      s_nvfragprog.c \
-                       s_points.c \
-                       s_readpix.c \
-                       s_span.c \
-+                      s_fragprog.c \
-                       s_stencil.c \
- 		      s_texcombine.c \
- 		      s_texfilter.c \
-
-
---- GL/mesa/X/xf86glx_util.c	Sun Sep 17 23:04:17 2006
-+++ GL/mesa/X/xf86glx_util.c	Mon Jul  7 23:16:17 2008
-@@ -47,7 +47,7 @@
- #endif
- 
- #define ROUNDUP(nbytes, pad) ((((nbytes) + ((pad)-1)) / (pad)) * ((pad)>>3))
--
-+#if 0
- XMesaImage *XMesaCreateImage(int bitsPerPixel, int width, int height, char *data)
- {
-     XMesaImage *image;
-@@ -102,6 +102,7 @@
-     }
-     return 0;
- }
-+#endif
- 
- #ifndef XMESA_USE_PUTPIXEL_MACRO
- void XMesaPutPixel(XMesaImage *image, int x, int y, unsigned long pixel)
-
---- GL/mesa/main/Makefile.am	Fri Nov 17 09:47:26 2006
-+++ GL/mesa/main/Makefile.am	Tue Jul  8 10:32:41 2008
-@@ -7,7 +7,6 @@
- 
- INCLUDES = -I@MESA_SOURCE@/include \
-            -I../X \
--           -I../array_cache \
-            -I../glapi \
-            -I../main \
-            -I../math \
-@@ -15,6 +14,7 @@
-            -I../swrast \
-            -I../swrast_setup \
-            -I../tnl \
-+           -I../vbo \
-            -I.. \
-            -I$(top_srcdir)/hw/xfree86/os-support
- 
-@@ -62,7 +62,7 @@
-                     matrix.c \
-                     mipmap.c \
-                     mm.c \
--                    occlude.c \
-+                    queryobj.c \
-                     pixel.c \
-                     points.c \
-                     polygon.c \
-@@ -69,6 +69,7 @@
-                     rastpos.c \
-                     rbadaptors.c \
-                     renderbuffer.c \
-+                    shaders.c \
-                     state.c \
-                     stencil.c \
-                     texcompress.c \
-
---- GL/mesa/Makefile.in	Thu Apr 19 18:24:24 2007
-+++ GL/mesa/Makefile.in	Mon Aug 11 11:32:50 2008
-@@ -55,7 +55,7 @@
- CONFIG_CLEAN_FILES =
- LTLIBRARIES = $(noinst_LTLIBRARIES)
- libGLcore_la_DEPENDENCIES = main/libmain.la math/libmath.la \
--	array_cache/libac.la swrast/libswrast.la swrast_setup/libss.la \
-+	vbo/libvbo.la swrast/libswrast.la swrast_setup/libss.la \
- 	tnl/libtnl.la shader/libshader.la shader/grammar/libgrammar.la \
- 	shader/slang/libslang.la X/libX.la
- am_libGLcore_la_OBJECTS = dummy.lo
-@@ -540,12 +540,12 @@
- target_alias = @target_alias@
- xglmoduledir = @xglmoduledir@
- xpconfigdir = @xpconfigdir@
--SUBDIRS = main math array_cache swrast swrast_setup tnl shader X glapi
-+SUBDIRS = main math swrast swrast_setup vbo tnl shader X glapi
- noinst_LTLIBRARIES = libGLcore.la
- libGLcore_la_SOURCES = dummy.c
- libGLcore_la_LIBADD = main/libmain.la \
-                       math/libmath.la \
--                      array_cache/libac.la \
-+                      vbo/libvbo.la \
-                       swrast/libswrast.la \
-                       swrast_setup/libss.la \
-                       tnl/libtnl.la \
--- a/open-src/xserver/xorg/COPYING.xorg-docs	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-XFree86 code without an explicit copyright is covered by the
-following copyright/license:
-
-   Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
-
-   Permission is hereby granted, free of charge, to any person
-   obtaining a copy of this software and associated documentation
-   files (the "Software"), to deal in the Software without
-   restriction, including without limitation the rights to use,
-   copy, modify, merge, publish, distribute, sublicense, and/or
-   sell copies of the Software, and to permit persons to whom the
-   Software is furnished to do so, subject to the following
-   conditions:
-
-   The above copyright notice and this permission notice shall be
-   included in all copies or substantial portions of the
-   Software.
-
-   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-   KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-   WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-   PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86
-   PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-   OTHER DEALINGS IN THE SOFTWARE.
-
-   Except as contained in this notice, the name of the XFree86
-   Project shall not be used in advertising or otherwise to
-   promote the sale, use or other dealings in this Software
-   without prior written authorization from the XFree86 Project.
-
-     _________________________________________________________
-
-Copyright 1984 - 1991, 1993, 1994, 1998  The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-     _________________________________________________________
-
-Copyright 2000-2001 by VA Linux Systems, Inc.  All Rights Reserved.
-
-Permission is granted to make and distribute verbatim copies of this document
-provided the copyright notice and this permission notice are preserved on all
-copies.
-
-OpenGL is a registered trademark and SGI is a trademark of Silicon Graphics,
-Inc.  Unix is a registered trademark of The Open Group.  The `X' device and X
-Window System are trademarks of The Open Group.  XFree86 is a trademark of
-The XFree86 Project.  Linux is a registered trademark of Linus Torvalds.
-Intel is a registered trademark of Intel Corporation.  3Dlabs, GLINT, and
-Oxygen are either registered trademarks or trademarks of 3Dlabs Inc. Ltd.
-3dfx, Voodoo3, Voodoo4, and Voodoo5 are registered trademarks of 3dfx Inter-
-active, Incorporated.  Matrox is a registered trademark of Matrox Electronic
-Systems Ltd.  ATI Rage and Radeon are registered trademarks of ATI Technolo-
-gies, Inc.  All other trademarks mentioned are the property of their respec-
-tive owners.
-
--- a/open-src/xserver/xorg/IA.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/IA.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -26,23 +26,12 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 
-diff -urp -x '*~' -x '*.orig' Makefile.am Makefile.am
---- Makefile.am	2006-11-16 10:01:22.000000000 -0800
-+++ Makefile.am	2007-09-20 14:21:57.003122000 -0700
-@@ -58,6 +58,7 @@ SUBDIRS = \
- 	$(XTRAP_DIR) \
- 	$(COMPOSITE_DIR) \
- 	$(GLX_DIR) \
-+	IA \
- 	exa \
- 	hw
- 
 diff -urp -x '*~' -x '*.orig' configure.ac configure.ac
---- configure.ac	2007-09-20 14:21:36.871770000 -0700
-+++ configure.ac	2007-09-20 14:21:57.684612000 -0700
-@@ -783,6 +783,9 @@
- 	XI_INC='-I$(top_srcdir)/Xi'
- fi
+--- configure.ac	2008-10-17 15:44:42.831612000 -0700
++++ configure.ac	2008-10-17 15:44:58.744720000 -0700
+@@ -1003,6 +1003,9 @@ AC_DEFINE(XINPUT, 1, [Support X Input ex
+ XI_LIB='$(top_builddir)/Xi/libXi.la'
+ XI_INC='-I$(top_srcdir)/Xi'
  
 +# SolarisIA extension
 +IA_LIB='$(top_builddir)/IA/libIA.la'
@@ -50,82 +39,90 @@
  AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes)
  
  AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
-@@ -1023,7 +1026,7 @@
+@@ -1224,7 +1227,7 @@ AC_MSG_RESULT([$XVFB])
  AM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
  
  if test "x$XVFB" = xyes; then
--	XVFB_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB $LIBS"
-+	XVFB_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $CWRAP_LIB $OS_LIB $LIBS"
+-	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB"
++	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB"
+ 	XVFB_SYS_LIBS="$XVFBMODULES_LIBS"
  	AC_SUBST([XVFB_LIBS])
- fi
- 
-@@ -1039,7 +1042,7 @@
+ 	AC_SUBST([XVFB_SYS_LIBS])
+@@ -1242,7 +1245,7 @@ AC_MSG_RESULT([$XNEST])
  AM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes])
  
  if test "x$XNEST" = xyes; then
--	XNEST_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB $LIBS"
-+	XNEST_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $CWRAP_LIB $OS_LIB $LIBS"
+-	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $DIX_LIB $OS_LIB $CONFIG_LIB"
++	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $DIX_LIB $OS_LIB $CONFIG_LIB $IA_LIB"
+ 	XNEST_SYS_LIBS="$XNESTMODULES_LIBS"
  	AC_SUBST([XNEST_LIBS])
- fi
+ 	AC_SUBST([XNEST_SYS_LIBS])
+@@ -1962,7 +1965,7 @@ if test "$KDRIVE" = yes; then
+     
+     KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H $TSLIB_CFLAGS"
  
-@@ -1559,7 +1562,7 @@
-     # dix os fb mi extension glx (NOTYET) damage shadow xpstubs
-     #KDRIVE_PURE_LIBS="$DIX_LIB $OS_LIB $FB_LIB $XEXT_LIB $MIEXT_DAMAGE_LIB \
-     #    $MIEXT_SHADOW_LIB $XPSTUBS_LIB"
 -    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $OS_LIB"
 +    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $OS_LIB"
      KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a'
      case $host_os in
  	*linux*)
-@@ -1866,3 +1866,6 @@ hw/xprint/config/en_US/print/Makefile
+@@ -2266,3 +2269,6 @@ hw/xprint/config/en_US/print/Makefile
  hw/xprint/config/en_US/Makefile
  xorg-server.pc
  ])
 +
 +# Add Sun IA extension
 +AC_OUTPUT([IA/Makefile])
-diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86AutoConfig.c hw/xfree86/common/xf86AutoConfig.c
---- hw/xfree86/common/xf86AutoConfig.c	2006-11-16 10:01:24.000000000 -0800
-+++ hw/xfree86/common/xf86AutoConfig.c	2007-09-20 14:21:57.861184000 -0700
-@@ -51,6 +51,7 @@
- 	"\tLoad\t\"type1\"\n" \
- 	"\tLoad\t\"record\"\n" \
- 	"\tLoad\t\"dri\"\n" \
-+	"\tLoad\t\"IA\"\n" \
- 	"EndSection\n\n"
+diff -urp -x '*~' -x '*.orig' hw/dmx/Makefile.am hw/dmx/Makefile.am
+--- hw/dmx/Makefile.am	2007-10-17 07:01:23.000000000 -0700
++++ hw/dmx/Makefile.am	2008-10-17 15:44:58.745221000 -0700
+@@ -86,6 +86,7 @@ XDMX_LIBS = \
+ 	$(GLX_LIBS) \
+         input/libdmxinput.a \
+         config/libdmxconfig.a \
++	$(top_builddir)/IA/libIA.la \
+ 	$(XSERVER_LIBS)
  
- #define BUILTIN_DEVICE_NAME \
+ Xdmx_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
 diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Config.c hw/xfree86/common/xf86Config.c
---- hw/xfree86/common/xf86Config.c	2006-11-30 17:40:10.000000000 -0800
-+++ hw/xfree86/common/xf86Config.c	2007-09-20 14:21:57.862784000 -0700
-@@ -294,6 +294,10 @@ xf86ModulelistFromConfig(pointer **optli
- 	ptr = xf86addNewLoadDirective(ptr, "record", XF86_LOAD_MODULE, NULL);
- 	ptr = xf86addNewLoadDirective(ptr, "dri", XF86_LOAD_MODULE, NULL);
- 	count = 7;
-+
-+	/* Sun addition - IA extension */
-+	ptr = xf86addNewLoadDirective(ptr, "IA", XF86_LOAD_MODULE, NULL);
-+	count++;
-     }
+--- hw/xfree86/common/xf86Config.c	2008-10-10 11:12:48.000000000 -0700
++++ hw/xfree86/common/xf86Config.c	2008-10-17 15:44:58.746569000 -0700
+@@ -126,6 +126,7 @@ static ModuleDefault ModuleDefaults[] = 
+ #ifdef DRI2
+     {.name = "dri2",     .toLoad = TRUE,    .load_opt=NULL},
+ #endif
++    {.name = "ia",       .toLoad = TRUE,    .load_opt=NULL},
+     {.name = NULL,       .toLoad = FALSE,   .load_opt=NULL}
+ };
  
-     /*
 diff -urp -x '*~' -x '*.orig' hw/xfree86/dixmods/Makefile.am hw/xfree86/dixmods/Makefile.am
---- hw/xfree86/dixmods/Makefile.am	2006-11-16 10:01:24.000000000 -0800
-+++ hw/xfree86/dixmods/Makefile.am	2007-09-20 14:21:57.863164000 -0700
-@@ -102,3 +102,10 @@ libxorgxkb_la_LIBADD = $(top_builddir)/d
+--- hw/xfree86/dixmods/Makefile.am	2008-10-10 11:12:48.000000000 -0700
++++ hw/xfree86/dixmods/Makefile.am	2008-10-17 15:44:58.747030000 -0700
+@@ -112,3 +112,10 @@ libxorgxkb_la_LIBADD = $(top_builddir)/d
  libxtrap_la_LDFLAGS = -avoid-version
  libxtrap_la_LIBADD = $(top_builddir)/XTrap/libxtrap.la
  libxtrap_la_SOURCES = xf86XTrapModule.c
 +
 +
 +# Sun IA extension module additions
-+extsmodule_LTLIBRARIES += libIA.la
-+libIA_la_LDFLAGS = -avoid-version
-+libIA_la_LIBADD = $(top_builddir)/IA/libIA.la
-+libIA_la_SOURCES = iamodule.c
++extsmodule_LTLIBRARIES += libia.la
++libia_la_LDFLAGS = -avoid-version
++libia_la_LIBADD = $(top_builddir)/IA/libIA.la
++libia_la_SOURCES = iamodule.c
+diff -urp -x '*~' -x '*.orig' Makefile.am Makefile.am
+--- Makefile.am	2008-10-10 11:12:48.000000000 -0700
++++ Makefile.am	2008-10-17 15:44:58.741284000 -0700
+@@ -58,6 +58,7 @@ SUBDIRS = \
+ 	$(XTRAP_DIR) \
+ 	$(COMPOSITE_DIR) \
+ 	$(GLX_DIR) \
++	IA \
+ 	exa \
+ 	config \
+ 	hw
 diff -urp -x '*~' -x '*.orig' mi/miinitext.c mi/miinitext.c
---- mi/miinitext.c	2006-11-16 10:01:26.000000000 -0800
-+++ mi/miinitext.c	2007-09-20 14:21:57.965252000 -0700
+--- mi/miinitext.c	2008-10-10 11:12:48.000000000 -0700
++++ mi/miinitext.c	2008-10-17 15:44:58.747720000 -0700
 @@ -84,6 +84,8 @@ SOFTWARE.
  #include "micmap.h"
  #include "globals.h"
@@ -143,7 +140,7 @@
  #else
  #ifndef LOADABLEPRINTDDX
  #undef XPRINT
-@@ -215,6 +218,9 @@ extern Bool noXIdleExtension;
+@@ -221,6 +224,9 @@ extern Bool noSELinuxExtension;
  #ifdef XV
  extern Bool noXvExtension;
  #endif
@@ -153,7 +150,7 @@
  
  #ifndef XFree86LOADER
  #define INITARGS void
-@@ -257,6 +263,9 @@ typedef void (*InitExtension)(INITARGS);
+@@ -263,6 +269,9 @@ typedef void (*InitExtension)(INITARGS);
  #ifdef RES
  #include <X11/extensions/XResproto.h>
  #endif
@@ -163,7 +160,7 @@
  
  /* FIXME: this whole block of externs should be from the appropriate headers */
  #ifdef EVI
-@@ -384,6 +393,9 @@ extern void DamageExtensionInit(INITARGS
+@@ -386,6 +395,9 @@ extern void DamageExtensionInit(INITARGS
  #ifdef COMPOSITE
  extern void CompositeExtensionInit(INITARGS);
  #endif
@@ -173,7 +170,7 @@
  
  /* The following is only a small first step towards run-time
   * configurable extensions.
-@@ -447,6 +459,9 @@ static ExtensionToggle ExtensionToggleLi
+@@ -449,6 +461,9 @@ static ExtensionToggle ExtensionToggleLi
  #ifdef XSYNC
      { "SYNC", &noSyncExtension },
  #endif
@@ -183,9 +180,9 @@
  #ifdef TOGCUP
      { "TOG-CUP", &noXcupExtension },
  #endif
-@@ -663,6 +678,9 @@ InitExtensions(argc, argv)
- #ifdef DAMAGE
-     if (!noDamageExtension) DamageExtensionInit();
+@@ -664,6 +679,9 @@ InitExtensions(argc, argv)
+     GlxPushProvider(&__glXDRISWRastProvider);
+     if (!noGlxExtension) GlxExtensionInit();
  #endif
 +#ifdef SolarisIAExtension
 +    if (!noIAExtension) IAExtensionInit();
@@ -193,13 +190,3 @@
  }
  
  void
---- hw/dmx/Makefile.am.orig	2008-01-13 23:02:37.956946569 -0700
-+++ hw/dmx/Makefile.am	2008-01-13 23:01:59.409213790 -0700
-@@ -82,6 +82,7 @@
-              $(GLX_LIBS) \
-              input/libdmxinput.a \
-              config/libdmxconfig.a \
-+             $(top_builddir)/IA/libIA.la \
-              @DMXMODULES_LIBS@
- 
- Xdmx_CFLAGS = \
--- a/open-src/xserver/xorg/KB_EncodingAtXCrash.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/KB_EncodingAtXCrash.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,10 +1,9 @@
---- hw/xfree86/common/xf86Events.c	Sat Oct 20 10:14:20 2007
-+++ hw/xfree86/common/xf86Events.c	Sat Oct 20 10:15:59 2007
-@@ -1456,8 +1456,32 @@
- #endif
+diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Events.c hw/xfree86/common/xf86Events.c
+--- hw/xfree86/common/xf86Events.c	2008-09-23 11:24:58.000000000 -0700
++++ hw/xfree86/common/xf86Events.c	2008-09-24 20:24:56.137289000 -0700
+@@ -764,6 +764,31 @@ xf86SigHandler(int signo)
+   xorg_backtrace();
  
-   xorg_backtrace();
--    
    FatalError("Caught signal %d.  Server aborting\n", signo);
 +
 +/* CR 6545884 If server crashes keyboard left in un-encoded mode*/
@@ -33,4 +32,4 @@
 +    
  }
  
- #ifdef MEMDEBUG
+ static void
--- a/open-src/xserver/xorg/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -2,7 +2,7 @@
 #
 # Xorg server Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.71	08/11/26
+# @(#)Makefile	1.72	09/01/14
 #
 
 # Build 32-bit or 64-bit?
@@ -52,14 +52,14 @@
 # Man pages to apply Sun footer to & attributes to list
 # XXX: Need to adjust some of these to correct packages/stability
 SUNTOUCHED_MANPAGES= \
+	hw/kdrive/ephyr/Xephyr.man.pre \
 	hw/xfree86/utils/gtf/gtf.man.pre \
 	hw/xfree86/utils/cvt/cvt.man.pre \
-	hw/xfree86/utils/pcitweak/pcitweak.man.pre \
-	hw/xfree86/utils/scanpci/scanpci.man.pre \
 	hw/xfree86/utils/xorgcfg/xorgcfg.man.pre \
 	hw/xfree86/utils/xorgconfig/xorgconfig.man.pre \
 	hw/xfree86/doc/man/Xorg.man.pre \
-	hw/xfree86/doc/man/xorg.conf.man.pre 
+	hw/xfree86/doc/man/xorg.conf.man.pre \
+	hw/vfb/Xvfb.man.pre
 
 SUN_PACKAGE=SUNWxorg-server
 MODULE_STABILITY=Volatile
@@ -75,14 +75,13 @@
 # Binary built in tree
 XORGSERVER_BIN=$(SOURCE_DIR)/hw/xfree86/Xorg
 
-BUILD_TARGETS=fix-xf1bpp $(XORGSERVER_BIN) set-elf-comments \
+BUILD_TARGETS=$(XORGSERVER_BIN) set-elf-comments \
 	$(BUILD_DIR)/mapfile-Xorg-externs
 BUILD_TARGETS_SET=yes
 
 # Additional license files to install
 EXTRA_LICENSES = \
-	COPYING.Xprint-fonts \
-	COPYING.xorg-docs
+	COPYING.Xprint-fonts 
 
 # Need to regenerate autoconf/automake files after patching
 AUTORECONF=yes
@@ -91,17 +90,14 @@
 #  Need to override LD setting to add -xarch flags that libtool strips
 # XXX: --disable-dga
 MODULE_CONFIG_OPTS = $(XSERVER_CONFIG_OPTS) \
-        --enable-builddocs --enable-xorgcfg --enable-xprint \
+        --enable-builddocs --enable-xorgcfg --disable-xprint \
 	--enable-kdrive --enable-xephyr --disable-xsdl \
 	MKFONTDIR="$(MKFONTDIR)" \
 	MKFONTSCALE="$(MKFONTSCALE)" \
 	LD="$(CC) $(ARCH_FLAGS)"
 
-# Need specific ordering of CPPFLAGS for Mesa headers for now
-USE_DEFAULT_CONFIG_CPPFLAGS=no
-MODULE_CPPFLAGS= \
-	-I$(PROTODIR)$(X11_INCLUDES_DIR)/drm \
-	-I$(PROTODIR)$(X11_INCLUDES_DIR)/X11/dri
+# pkg-config files that need to have -R added
+FIX_PC_FILES=xorg-server.pc.in
 
 # Additional install targets beyond the defaults
 EXTRA_INSTALL_sparc=install_pc
@@ -112,18 +108,11 @@
 
 # Merge in additional sources from sun-src directory
 source_gen:: $(LNDIR)
-	-$(RM) -f $(SOURCE_DIR)/hw/xfree86/scanpci/pci.ids \
-		$(SOURCE_DIR)/hw/xfree86/scanpci/xf86PciIds.h
-	(mkdir -p $(SOURCE_DIR)/GL/mesa/vbo)
-	(cp ./sun-src/mesa/Makefile.am $(SOURCE_DIR)/GL/mesa/vbo)
 	(cd $(SOURCE_DIR) && $(LNDIR) ../../sun-src)
 
-# Force broken xf1bpp sources in 1.3 to be regenerated
-fix-xf1bpp: $(SOURCE_DIR)/Makefile
-	(cd $(SOURCE_DIR)/hw/xfree86/xf1bpp && \
-	 $(MAKE) $(MAKEFLAGS) maintainer-clean-generic)
+$(XORGSERVER_BIN): default_build
 
-$(XORGSERVER_BIN): default_build
+SDK_INCLUDES_DIR=$(PROTODIR)$(X11_INCLUDES_DIR)/xorg/
 
 install_extras: default_install
 	sed -e 's%#define XF86DRI 1%/* #define XF86DRI 1 */%' \
@@ -131,15 +120,23 @@
 #ifdef _LP64\
 #define _XSERVER64 1\
 #endif%' \
-	    $(SOURCE_DIR)/include/xorg-server.h > $(PROTODIR)$(X11_INCLUDES_DIR)/xorg/xorg-server.h
-	cp -p $(SOURCE_DIR)/mi/mioverlay.h $(PROTODIR)$(X11_INCLUDES_DIR)/xorg/mioverlay.h
-	cp -p $(SOURCE_DIR)/hw/xfree86/os-support/bus/xf86Sbus.h $(PROTODIR)$(X11_INCLUDES_DIR)/xorg/xf86Sbus.h
+	    $(SOURCE_DIR)/include/xorg-server.h > $(SDK_INCLUDES_DIR)/xorg-server.h
+	cp -p $(SOURCE_DIR)/mi/mioverlay.h $(SDK_INCLUDES_DIR)/mioverlay.h
+	cp -p $(SOURCE_DIR)/hw/xfree86/os-support/bus/xf86Sbus.h $(SDK_INCLUDES_DIR)/xf86Sbus.h
+	cp -p $(SOURCE_DIR)/hw/xfree86/dri/*.h $(SDK_INCLUDES_DIR)/
+	-rm -f $(SDK_INCLUDES_DIR)/xf1bpp.h $(SDK_INCLUDES_DIR)/xf4bpp.h
 	mkdir -p $(PROTODIR)$(X11_DOC_DIR)
 	cp -p $(SOURCE_DIR)/hw/xfree86/doc/README.* $(PROTODIR)$(X11_DOC_DIR)/
+	mkdir -p $(PROTODIR)$(X11_DIR)/share/hal/fdi/policy/10osvendor
+	cp -p $(SOURCE_DIR)/config/x11-input.fdi \
+	 $(PROTODIR)$(X11_DIR)/share/hal/fdi/policy/10osvendor/10-x11-input.fdi
 
 # Install xorg-server.pc in 32-bit pkgconfig dir on SPARC too
-install_pc:
-	cp -p $(SOURCE_DIR)/xorg-server.pc $(PROTODIR)/usr/lib/pkgconfig/
+install_pc: install_pkgconfig_uninstalled
+	cp -pf $(PROTODIR)$(PKGCONFIG_DIR_64)/xorg-server.pc \
+		$(PROTODIR)$(PKGCONFIG_DIR_32)/xorg-server.pc
+	cp -pf $(PROTODIR)$(PKGCONFIG_DIR_64)/xorg-server-uninstalled.pc \
+		$(PROTODIR)$(PKGCONFIG_DIR_32)/xorg-server-uninstalled.pc
 
 $(BUILD_DIR)/mapfile-Xorg-externs: $(XORGSERVER_BIN)
 	-rm -f $@
--- a/open-src/xserver/xorg/RandR-1.2-man.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-commit 92ba435bd9aa7b6eca9aef8e5193576ef62fc9db
-Author: Eric Anholt <[email protected]>
-Date:   Mon Mar 26 12:44:58 2007 -0700
-
-    Update xorg.conf manpage for new RandR 1.2 monitor options.
-
-diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
-index bbba211..cc60d07 100644
---- a/hw/xfree86/doc/man/xorg.conf.man.pre
-+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
-@@ -1004,12 +1004,22 @@ The
- .B Identifier
- entry specifies the unique name for this monitor.  The
- .B Monitor
--section provides information about the specifications of the monitor,
--monitor-specific
-+section may be used to provide information about the specifications of the
-+monitor, monitor-specific
- .BR Options ,
--and information about the video modes to use with the monitor.  Specifying
--video modes is optional because the server now has a built-in list of
--VESA standard modes.  When modes are specified explicitly in the
-+and information about the video modes to use with the monitor.
-+.PP
-+With RandR 1.2-enabled drivers, monitor sections are tied to specific outputs 
-+of the video card.  Each output has a name, and the server will look for a
-+Monitor named
-+.B \*qMonitor-outputname\*q
-+for configuration of that output (for example, 
-+.B \*qMonitor-VGA\*q
-+for a VGA output)
-+.PP
-+Specifying video modes is optional because the server will use the DDC or other
-+information provided by the monitor to automatically configure the list of
-+modes available.  When modes are specified explicitly in the
- .B Monitor
- section (with the
- .BR Modes ,
-@@ -1017,7 +1027,8 @@ section (with the
- or
- .B UseModes
- keywords), built-in modes with the same names are not included.  Built-in
--modes with different names are, however, still implicitly included.
-+modes with different names are, however, still implicitly included, when they
-+meet the requirements of the monitor.
- .PP
- The entries that may be used in
- .B Monitor
-@@ -1214,6 +1225,62 @@ monitors do not require it.  The default
- This optional entry specifies the vertical refresh rate that the server
- should aim for when selecting video modes.  Without this option, the
- default is to prefer modes with higher refresh rates.
-+.TP 7
-+.BI "Option " "\*qPreferredMode\*q  " \*qstring\*q
-+This optional entry specifies a mode to be marked as the preferred initial mode
-+of the monitor.
-+(RandR 1.2-supporting drivers only)
-+.TP 7
-+.BI "Option " "\*qPosition\*q  " "\*qx y\*q"
-+This optional entry specifies the position of the monitor within the X
-+screen.
-+(RandR 1.2-supporting drivers only)
-+.TP 7
-+.BI "Option " "\*qLeftOf\*q  " \*qmonitor\*q
-+This optional entry specifies that the monitor should be positioned to the
-+left of the monitor of the given name.
-+(RandR 1.2-supporting drivers only)
-+.TP 7
-+.BI "Option " "\*qRightOf\*q  " \*qmonitor\*q
-+This optional entry specifies that the monitor should be positioned to the
-+right of the monitor of the given name.
-+(RandR 1.2-supporting drivers only)
-+.TP 7
-+.BI "Option " "\*qAbove\*q  " \*qmonitor\*q
-+This optional entry specifies that the monitor should be positioned above the
-+monitor of the given name.
-+(RandR 1.2-supporting drivers only)
-+.TP 7
-+.BI "Option " "\*qBelow\*q  " \*qmonitor\*q
-+This optional entry specifies that the monitor should be positioned below the
-+monitor of the given name.
-+(RandR 1.2-supporting drivers only)
-+.TP 7
-+.BI "Option " "\*qEnable\*q  " \*qbool\*q
-+This optional entry specifies whether the monitor should be turned on
-+at startup.  By default, the server will attempt to enable all connected
-+monitors.
-+(RandR 1.2-supporting drivers only)
-+.TP 7
-+.BI "Option " "\*qMinClock\*q  " \*qfrequency\*q
-+This optional entry specifies the minimum dot clock, in kHz, that is supported
-+by the monitor.
-+.TP 7
-+.BI "Option " "\*qMaxClock\*q  " \*qfrequency\*q
-+This optional entry specifies the maximum dot clock, in kHz, that is supported
-+by the monitor.
-+.TP 7
-+.BI "Option " "\*qIgnore\*q  " \*qbool\*q
-+This optional entry specifies that the monitor should be ignored entirely,
-+and not reported through RandR.  This is useful if the hardware reports the
-+presence of outputs that don't exist.
-+(RandR 1.2-supporting drivers only)
-+.TP 7
-+.BI "Option " "\*qRotate\*q  " \*qrotation\*q
-+This optional entry specifies the initial rotation of the given monitor.
-+Valid values for rotation are \*qnormal\*q, \*qleft\*q, \*qright\*q, and
-+\*qinverted\*q.
-+(RandR 1.2-supporting drivers only)
- 
- .SH MODES SECTION
- The config file may have multiple
-
-
-commit 3de1f0d03b329b01856f664651db23ffefb58646
-Author: Eric Anholt <[email protected]>
-Date:   Tue May 29 10:08:58 2007 -0700
-
-    Fix documentation of association of outputs to monitor sections in xorg.conf(5)
-
-diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
-index 4103974..504e0c2 100644
---- a/hw/xfree86/doc/man/xorg.conf.man.pre
-+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
-@@ -1009,14 +1009,22 @@ monitor, monitor-specific
- .BR Options ,
- and information about the video modes to use with the monitor.
- .PP
--With RandR 1.2-enabled drivers, monitor sections are tied to specific outputs 
--of the video card.  Each output has a name, and the server will look for a
--Monitor named
--.B \*qMonitor-outputname\*q
--for configuration of that output (for example, 
--.B \*qMonitor-VGA\*q
-+With RandR 1.2-enabled drivers, monitor sections may be tied to specific
-+outputs of the video card.  Using the name of the output defined by the video
-+driver plus the identifier of a monitor section, one associates a monitor
-+section with an output by adding an option to the Device section in the
-+following format:
-+
-+.B Option \*qMonitor-outputname\*q \*qmonitorsection\*q
-+
-+(for example, 
-+.B Option \*qMonitor-VGA\*q \*qVGA monitor\*q
- for a VGA output)
- .PP
-+In the absence of specific association of monitor sections to outputs, if a
-+monitor section is present the server will associate it with an output to
-+preserve compatibility for previous single-head configurations.
-+.PP
- Specifying video modes is optional because the server will use the DDC or other
- information provided by the monitor to automatically configure the list of
- modes available.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/XkbSetRulesDflts.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,69 @@
+From 63b3bf85ed4e11ace433e6aa21b311cce7144007 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <[email protected]>
+Date: Wed, 3 Dec 2008 15:06:37 +1000
+Subject: [PATCH] xkb: Allow NULL as rulesFile in XkbSetRulesDflts.
+
+If no rules file is given, simply re-use the previous one. If no RF is given
+the first time this function is called, use the built-in default.
+This includes fixing the built-in default to something that actually exists.
+
+Signed-off-by: Peter Hutterer <[email protected]>
+(cherry picked from commit 463e02e7de5da3e582a3a049110a476713c7210e)
+---
+ xkb/xkbInit.c |   29 ++++++++++++++++++++++++-----
+ 1 files changed, 24 insertions(+), 5 deletions(-)
+
+diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
+index 0b93e87..3a0e375 100644
+--- a/xkb/xkbInit.c
++++ b/xkb/xkbInit.c
+@@ -93,7 +93,7 @@ typedef struct	_SrvXkmInfo {
+ #define	XKB_BIN_DIRECTORY	XKB_BASE_DIRECTORY
+ #endif
+ #ifndef XKB_DFLT_RULES_FILE
+-#define	XKB_DFLT_RULES_FILE	"rules"
++#define	XKB_DFLT_RULES_FILE	"base"
+ #endif
+ #ifndef XKB_DFLT_KB_LAYOUT
+ #define	XKB_DFLT_KB_LAYOUT	"us"
+@@ -240,14 +240,33 @@ XkbSetRulesUsed(XkbRF_VarDefsPtr defs)
+     return;
+ }
+ 
++/**
++ * Set the default RMLVO for the next device to be initialised.
++ * If a parameter is NULL, the previous setting will be used. Use empty
++ * strings if you want to delete a previous setting.
++ *
++ * If @rulesFile is NULL and no previous @rulesFile has been set, the
++ * built-in default is chosen as default.
++ */
+ _X_EXPORT void
+ XkbSetRulesDflts(char *rulesFile,char *model,char *layout,
+ 					char *variant,char *options)
+ {
+-    if (XkbRulesFile)
+-	_XkbFree(XkbRulesFile);
+-    XkbRulesFile= _XkbDupString(rulesFile);
+-    rulesDefined= True;
++    if (!rulesFile && !XkbRulesFile)
++    {
++	LogMessage(X_WARNING, "[xkb] No rule given, and no previous rule "
++		              "defined. Defaulting to '%s'.\n",
++                              XKB_DFLT_RULES_FILE);
++	rulesFile = XKB_DFLT_RULES_FILE;
++    }
++
++    if (rulesFile) {
++	if (XkbRulesFile)
++	    _XkbFree(XkbRulesFile);
++	XkbRulesFile= _XkbDupString(rulesFile);
++	rulesDefined= True;
++    }
++
+     if (model) {
+ 	if (XkbModelDflt)
+ 	    _XkbFree(XkbModelDflt);
+-- 
+1.5.6.5
+
--- a/open-src/xserver/xorg/Xorg-mapfile.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/Xorg-mapfile.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,12 +1,12 @@
 diff -urp -x '*~' -x '*.orig' hw/xfree86/Makefile.am hw/xfree86/Makefile.am
---- hw/xfree86/Makefile.am	2007-07-30 18:35:09.238323000 -0700
-+++ hw/xfree86/Makefile.am	2007-07-30 18:35:26.620143000 -0700
-@@ -60,7 +60,7 @@ Xorg_LDADD = $(XORG_LIBS) \
-              @XSERVER_LIBS@ \
- 	     dixmods/libxorgxkb.la
+--- hw/xfree86/Makefile.am	2008-09-23 11:24:58.000000000 -0700
++++ hw/xfree86/Makefile.am	2008-09-23 16:32:54.777197000 -0700
+@@ -72,7 +72,7 @@ XORG_LIBS = \
+ Xorg_DEPENDENCIES = $(XORG_LIBS)
+ Xorg_LDADD = $(XORG_LIBS) $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS)
  
 -Xorg_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
 +Xorg_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG) -Wl,-M,mapfile.scope
  
  BUILT_SOURCES = xorg.conf.example
- EXTRA_DIST = xorgconf.cpp
+ DISTCLEANFILES += xorg.conf.example xorg.conf.example.pre
--- a/open-src/xserver/xorg/amd64-loader-path.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/amd64-loader-path.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -26,10 +26,10 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 
-diff -urp -x '*~' hw/xfree86/loader/loadmod.c hw/xfree86/loader/loadmod.c
---- hw/xfree86/loader/loadmod.c	2006-10-11 15:42:19.000000000 -0700
-+++ hw/xfree86/loader/loadmod.c	2006-10-26 14:30:02.522460000 -0700
-@@ -176,6 +176,12 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/loader/loadmod.c hw/xfree86/loader/loadmod.c
+--- hw/xfree86/loader/loadmod.c	2008-09-23 16:32:33.084154000 -0700
++++ hw/xfree86/loader/loadmod.c	2008-09-23 16:32:43.661970000 -0700
+@@ -171,6 +171,12 @@ InitPathList(const char *path)
  		list[n][len - 1] = '/';
  		list[n][len] = '\0';
  	    }
@@ -42,7 +42,7 @@
  	    n++;
  	}
  	elem = strtok(NULL, ",");
-@@ -353,6 +359,9 @@
+@@ -349,6 +355,9 @@ InitSubdirs(const char **subdirlist)
  	    } else
  		slash = "";
  	    len += oslen + 2;
@@ -52,7 +52,7 @@
  	    if (!(subdirs[i] = xalloc(len))) {
  		while (--i >= 0)
  		    xfree(subdirs[i]);
-@@ -362,10 +371,26 @@
+@@ -358,10 +367,26 @@ InitSubdirs(const char **subdirlist)
  		return NULL;
  	    }
  	    /* tack on the OS name */
--- a/open-src/xserver/xorg/autoconfig.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/autoconfig.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -29,12 +29,12 @@
 6385111: Xorg auto-configuration Improvement
 
 diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Config.c hw/xfree86/common/xf86Config.c
---- hw/xfree86/common/xf86Config.c	2007-01-23 09:29:20.555219000 -0800
-+++ hw/xfree86/common/xf86Config.c	2007-01-23 09:29:37.247000000 -0800
-@@ -2326,7 +2326,7 @@ configMonitor(MonPtr monitorp, XF86ConfM
+--- hw/xfree86/common/xf86Config.c	2008-09-24 20:23:15.204372000 -0700
++++ hw/xfree86/common/xf86Config.c	2008-09-24 20:23:31.397650000 -0700
+@@ -2180,7 +2180,7 @@ configMonitor(MonPtr monitorp, XF86ConfM
+     cmodep = conf_monitor->mon_modeline_lst;
      while( cmodep ) {
-         mode = xnfalloc(sizeof(DisplayModeRec));
-         memset(mode,'\0',sizeof(DisplayModeRec));
+         mode = xnfcalloc(1, sizeof(DisplayModeRec));
 -	mode->type       = 0;
 +	mode->type       = M_T_USERDEF;
          mode->Clock      = cmodep->ml_clock;
--- a/open-src/xserver/xorg/autoconfig2.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/autoconfig2.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -27,9 +27,10 @@
 # of the copyright holder.
 
 Raise hsync and default to "1024x768" when DDC data not available.
---- hw.orig/xfree86/common/xf86Mode.c	Thu Dec  7 15:32:58 2006
-+++ hw/xfree86/common/xf86Mode.c	Wed Dec  6 17:23:22 2006
-@@ -1314,6 +1314,7 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Mode.c hw/xfree86/common/xf86Mode.c
+--- hw/xfree86/common/xf86Mode.c	2008-09-23 11:24:58.000000000 -0700
++++ hw/xfree86/common/xf86Mode.c	2008-09-24 20:23:48.393454000 -0700
+@@ -1215,6 +1215,7 @@ xf86ValidateModes(ScrnInfoPtr scrp, Disp
      range hsync[MAX_HSYNC];
      range vrefresh[MAX_VREFRESH];
      Bool inferred_virtual = FALSE;
@@ -37,7 +38,7 @@
  
  #ifdef DEBUG
      ErrorF("xf86ValidateModes(%p, %p, %p, %p,\n\t\t  %p, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x)\n",
-@@ -1361,8 +1362,9 @@
+@@ -1262,8 +1263,9 @@ xf86ValidateModes(ScrnInfoPtr scrp, Disp
  		}
  	    } else {
  		scrp->monitor->hsync[0].lo = 31.5;
@@ -48,7 +49,7 @@
  	    }
  	    type = "default ";
  	}
-@@ -1591,6 +1593,11 @@
+@@ -1498,6 +1500,11 @@ xf86ValidateModes(ScrnInfoPtr scrp, Disp
  	xf86DeleteMode(&scrp->modes, scrp->modes);
      endp = &scrp->modes;
      last = NULL;
--- a/open-src/xserver/xorg/automake-1.10.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-[Patches adjusted from originals in git to match current state of tree.]
-
-commit 8deaaa312ad7f9b492a2ae8ad17d74650112c25c
-Author: Bernhard Rosenkraenzer <[email protected]>
-Date:   Sat Nov 4 18:59:39 2006 +0200
-
-    automake: avoid use of reserved _SOURCES keyword (bug #8866)
-    Avoid using _SOURCES unless we're directly referencing a program or
-    library to be built; use _SRCS instead.  Shuts automake 1.10 up.
-
-diff --git a/hw/xfree86/os-support/linux/Makefile.am b/hw/xfree86/os-support/linux/Makefile.am
-index 9e09fb6..caf6007 100644
---- a/hw/xfree86/os-support/linux/Makefile.am
-+++ b/hw/xfree86/os-support/linux/Makefile.am
-@@ -12,12 +12,12 @@ PLATFORM_PCI_SUPPORT = lnx_ev56.c \
- endif
- 
- if LNXACPI
--ACPI_SOURCES = lnx_acpi.c lnx_apm.c
-+ACPI_SRCS = lnx_acpi.c lnx_apm.c
- XORG_CFLAGS += -DHAVE_ACPI
- endif
- 
- if LNXAPM
--APM_SOURCES = lnx_apm.c
-+APM_SRCS = lnx_apm.c
- XORG_CFLAGS += -DHAVE_APM
- endif
- 
-@@ -32,8 +32,8 @@ liblinux_la_SOURCES = lnx_init.c lnx_vid
-                      $(srcdir)/../shared/stdResource.c \
- 		     $(srcdir)/../shared/libc_wrapper.c \
-                      $(srcdir)/../shared/at_scancode.c \
--                     $(ACPI_SOURCES) \
--                     $(APM_SOURCES) \
-+                     $(ACPI_SRCS) \
-+                     $(APM_SRCS) \
-                      $(PLATFORM_PCI_SUPPORT)
- 
- AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(PLATFORM_DEFINES)
-@@ -41,13 +41,13 @@ AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC 
- INCLUDES = $(XORG_INCS) $(PLATFORM_INCLUDES) -I/usr/include/drm # FIXME this last part is crack
- 
- # FIXME: These need to be added to the build
--LNX_EXTRA_SOURCES = \
-+LNX_EXTRA_SRCS = \
- 	lnx_font.c \
- 	lnx_jstk.c \
- 	lnxResource.c
- 
- EXTRA_DIST = \
--	$(LNX_EXTRA_SOURCES) \
-+	$(LNX_EXTRA_SRCS) \
- 	lnx.h \
- 	lnx_kbd.h \
- 	$(srcdir)/../shared/xf86Axp.h \
-diff --git a/hw/xfree86/os-support/misc/Makefile.am b/hw/xfree86/os-support/misc/Makefile.am
-index f546e1a..8bec350 100644
---- a/hw/xfree86/os-support/misc/Makefile.am
-+++ b/hw/xfree86/os-support/misc/Makefile.am
-@@ -1,18 +1,18 @@
- # FIXME: Add the *.S files to build when applicable
--I386_SOURCES = BUSmemcpy.S IODelay.S SlowBcopy.S
--OTHER_SOURCES = BUSmemcpy.c IODelay.c SlowBcopy.c
-+I386_SRCS = BUSmemcpy.S IODelay.S SlowBcopy.S
-+OTHER_SRCS = BUSmemcpy.c IODelay.c SlowBcopy.c
- 
--ARCH_SOURCES = $(OTHER_SOURCES)
-+ARCH_SRCS = $(OTHER_SRCS)
- 
- # FIXME: Add to the build (NeedPortIO)
--PORTIO_SOURCES = PortIO.S
-+PORTIO_SRCS = PortIO.S
- 
- # FIXME: Add to the build (if HasGcc || HasGcc2)
--ILHACK_SOURCES = xf86_IlHack.c
-+ILHACK_SRCS = xf86_IlHack.c
- 
- noinst_LTLIBRARIES = libmisc.la
- 
--libmisc_la_SOURCES = xf86_Util.c Delay.c $(ARCH_SOURCES)
-+libmisc_la_SOURCES = xf86_Util.c Delay.c $(ARCH_SRCS)
- 
- #AM_LDFLAGS = -r
- 
-@@ -20,4 +20,4 @@ INCLUDES = $(XORG_INCS)
- 
- AM_CFLAGS = $(XORG_CFLAGS)
- 
--EXTRA_DIST = $(I386_SOURCES) $(PORTIO_SOURCES) $(ILHACK_SOURCES)
-+EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS) $(ILHACK_SRCS)
-diff --git a/os/Makefile.am b/os/Makefile.am
-index dcfe80a..7381797 100644
---- a/os/Makefile.am
-+++ b/os/Makefile.am
-@@ -3,14 +3,14 @@ noinst_LTLIBRARIES = libos.la libcwrappe
- AM_CFLAGS = $(DIX_CFLAGS)
- 
- # FIXME: Add support for these in configure.ac
--K5AUTH_SOURCES = k5auth.c
--SECURERPC_SOURCES = rpcauth.c
--INTERNALMALLOC_SOURCES = xalloc.c
-+K5AUTH_SRCS = k5auth.c
-+SECURERPC_SRCS = rpcauth.c
-+INTERNALMALLOC_SRCS = xalloc.c
- 
--XCSECURITY_SOURCES = secauth.c
--XDMCP_SOURCES = xdmcp.c
--STRLCAT_SOURCES = strlcat.c strlcpy.c
--XORG_SOURCES = log.c
-+XCSECURITY_SRCS = secauth.c
-+XDMCP_SRCS = xdmcp.c
-+STRLCAT_SRCS = strlcat.c strlcpy.c
-+XORG_SRCS = log.c
- 
- libos_la_SOURCES = 	\
- 	WaitFor.c	\
-@@ -27,18 +27,18 @@ libos_la_SOURCES = 	\
- 	xdmauth.c	\
- 	xstrans.c	\
- 	xprintf.c	\
--	$(XORG_SOURCES)
-+	$(XORG_SRCS)
- 
- if XCSECURITY
--libos_la_SOURCES += $(XCSECURITY_SOURCES)
-+libos_la_SOURCES += $(XCSECURITY_SRCS)
- endif
- 
- if XDMCP
--libos_la_SOURCES += $(XDMCP_SOURCES)
-+libos_la_SOURCES += $(XDMCP_SRCS)
- endif
- 
- if NEED_STRLCAT
--libos_la_SOURCES += $(STRLCAT_SOURCES)
-+libos_la_SOURCES += $(STRLCAT_SRCS)
- endif
- 
- libcwrapper_la_SOURCES = \
-@@ -48,8 +48,8 @@ libcwrapper_la_CFLAGS = \
- 	-I$(top_srcdir)/hw/xfree86/os-support \
- 	$(AM_CFLAGS)
- 
--EXTRA_DIST = $(K5AUTH_SOURCES) $(SECURERPC_SOURCES) $(INTERNALMALLOC_SOURCES) \
--     $(XCSECURITY_SOURCES) $(XDMCP_SOURCES) $(STRLCAT_SOURCES)
-+EXTRA_DIST = $(K5AUTH_SRCS) $(SECURERPC_SRCS) $(INTERNALMALLOC_SRCS) \
-+     $(XCSECURITY_SRCS) $(XDMCP_SRCS) $(STRLCAT_SRCS)
- 
- if XSERVER_DTRACE
- # Generate dtrace object code for probes in libos
-
-
-
- 
-commit 9fcb30ebf7b7b2137955f759e95c1d58c4f27a11
-Author: Alan Coopersmith <[email protected]>
-Date:   Thu Jul 12 13:00:32 2007 -0700
-
-    Make SOLARIS_INOUT_ARCH substitutions work better with automake-1.10
-
-diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
-index 50aa673..cef6b5b 100644
---- a/hw/xfree86/Makefile.am
-+++ b/hw/xfree86/Makefile.am
-@@ -69,10 +69,10 @@ if SOLARIS_ASM_INLINE
- # Needs to be built before any files are compiled when using Sun compilers
- # so in*/out* inline definitions are properly processed.
- 
--BUILT_SOURCES += os-support/solaris/solaris-$(SOLARIS_INOUT_ARCH).il
-+BUILT_SOURCES += os-support/solaris/solaris-@[email protected]
- 
--os-support/solaris/solaris-$(SOLARIS_INOUT_ARCH).il:
--	cd os-support/solaris ; make solaris-$(SOLARIS_INOUT_ARCH).il
-+os-support/solaris/solaris-@[email protected]:
-+	cd os-support/solaris ; make solaris-@[email protected]
- endif
- 
- # do not use $(mkdir_p) if you want automake 1.7 to work
-diff --git a/hw/xfree86/os-support/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am
-index d01e2e6..c027d9a 100644
---- a/hw/xfree86/os-support/solaris/Makefile.am
-+++ b/hw/xfree86/os-support/solaris/Makefile.am
-@@ -15,11 +15,11 @@ #else
- #AGP_SRC = $(srcdir)/../shared/agp_noop.c
- #endif
- 
--SOLARIS_INOUT_SRC = solaris-$(SOLARIS_INOUT_ARCH).S
--DISTCLEANFILES = solaris-$(SOLARIS_INOUT_ARCH).il
-+SOLARIS_INOUT_SRC = solaris-@[email protected]
-+DISTCLEANFILES = solaris-@[email protected]
- 
--solaris-$(SOLARIS_INOUT_ARCH).il: solaris-${SOLARIS_INOUT_ARCH}.S
--	$(CPP) -P -DINLINE_ASM solaris-${SOLARIS_INOUT_ARCH}.S > $@
-+solaris-@[email protected]: solaris-@[email protected]
-+	$(CPP) -P -DINLINE_ASM solaris-@[email protected] > $@
- 
- noinst_LTLIBRARIES = libsolaris.la
- libsolaris_la_SOURCES = sun_bios.c sun_init.c $(IO_SRC) $(KBD_SRCS) \
-@@ -32,7 +32,7 @@ libsolaris_la_SOURCES = sun_bios.c sun_i
- nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
- 
- sdk_HEADERS = agpgart.h
--nodist_sdk_HEADERS = solaris-$(SOLARIS_INOUT_ARCH).il
-+nodist_sdk_HEADERS = solaris-@[email protected]
- 
- AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS)
- 
--- a/open-src/xserver/xorg/cfbmskbits.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
---- cfb/cfbmskbits.h	2006-11-13 16:59:38.000000000 -0800
-+++ cfb/cfbmskbits.h	2007-01-10 11:36:12.912105000 -0800
-@@ -32,10 +32,7 @@
- #include	<X11/X.h>
- #include	<X11/Xmd.h>
- #include	"servermd.h"
--#if defined(XFREE86) || ( defined(__OpenBSD__) && defined(__alpha__) ) \
--	|| (defined(__bsdi__))
- #include	"compiler.h"
--#endif
- 
- /*
-  * ==========================================================================
--- a/open-src/xserver/xorg/cli-nobanner.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/cli-nobanner.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -27,9 +27,9 @@
 # of the copyright holder.
 
 diff -urp -x '*~' -x '*.orig' os/utils.c os/utils.c
---- os/utils.c	2007-07-30 18:32:29.905008000 -0700
-+++ os/utils.c	2007-07-30 18:32:46.146428000 -0700
-@@ -913,6 +913,12 @@ ProcessCommandLine(int argc, char *argv[
+--- os/utils.c	2008-09-24 20:18:58.790366000 -0700
++++ os/utils.c	2008-09-24 20:19:13.278843000 -0700
+@@ -903,6 +903,12 @@ ProcessCommandLine(int argc, char *argv[
  	}
  #endif
  #endif
--- a/open-src/xserver/xorg/cli-nolock.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/cli-nolock.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -28,9 +28,9 @@
 
 
 diff -urp -x '*~' -x '*.orig' os/utils.c os/utils.c
---- os/utils.c	2007-04-19 19:13:13.000000000 -0700
-+++ os/utils.c	2007-07-30 18:32:29.905008000 -0700
-@@ -614,9 +614,11 @@ void UseMsg(void)
+--- os/utils.c	2008-09-23 11:25:01.000000000 -0700
++++ os/utils.c	2008-09-24 20:18:58.790366000 -0700
+@@ -606,9 +606,11 @@ void UseMsg(void)
  #ifdef RLIMIT_STACK
      ErrorF("-ls int                limit stack space to N Kb\n");
  #endif
@@ -42,7 +42,7 @@
  #ifndef NOLOGOHACK
      ErrorF("-logo                  enable logo in screen saver\n");
      ErrorF("nologo                 disable logo in screen saver\n");
-@@ -898,6 +900,7 @@ ProcessCommandLine(int argc, char *argv[
+@@ -888,6 +890,7 @@ ProcessCommandLine(int argc, char *argv[
  		UseMsg();
  	}
  #endif
@@ -50,7 +50,7 @@
  #ifdef SERVER_LOCK
  	else if ( strcmp ( argv[i], "-nolock") == 0)
  	{
-@@ -909,6 +912,7 @@ ProcessCommandLine(int argc, char *argv[
+@@ -899,6 +902,7 @@ ProcessCommandLine(int argc, char *argv[
  	    nolock = TRUE;
  	}
  #endif
--- a/open-src/xserver/xorg/composite-7447.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-From f98dfec79dadb70fa7bba84e7335f92b3a73dc02 Mon Sep 17 00:00:00 2001
-From: Keith Packard <[email protected]>
-Date: Sat, 1 Sep 2007 21:14:22 -0700
-Subject: [PATCH] [COMPOSITE] Composite used for pixmap population on redirect. (Bug #7447)
-
-compNewPixmap copies bits from the parent window to the redirected child
-pixmap to populate the pixmap with reasonable data. It cannot always use
-CopyArea as that only works across matching depths. Use Composite when
-the depths do not match.
----
- composite/compalloc.c  |   73 ++++++++++++++++++++++++++++++++++++------------
- composite/compint.h    |    3 ++
- composite/compwindow.c |    2 +
- 3 files changed, 59 insertions(+), 19 deletions(-)
-
-diff --git a/composite/compalloc.c b/composite/compalloc.c
-index f555411..006e808 100644
---- a/composite/compalloc.c
-+++ b/composite/compalloc.c
-@@ -461,7 +461,6 @@ compNewPixmap (WindowPtr pWin, int x, in
-     ScreenPtr	    pScreen = pWin->drawable.pScreen;
-     WindowPtr	    pParent = pWin->parent;
-     PixmapPtr	    pPixmap;
--    GCPtr	    pGC;
- 
-     pPixmap = (*pScreen->CreatePixmap) (pScreen, w, h, pWin->drawable.depth);
- 
-@@ -471,25 +470,63 @@ compNewPixmap (WindowPtr pWin, int x, in
-     pPixmap->screen_x = x;
-     pPixmap->screen_y = y;
-     
--    pGC = GetScratchGC (pWin->drawable.depth, pScreen);
--    
--    /*
--     * Copy bits from the parent into the new pixmap so that it will
--     * have "reasonable" contents in case for background None areas.
--     */
--    if (pGC)
-+    if (pParent->drawable.depth == pWin->drawable.depth)
-     {
--	XID val = IncludeInferiors;
-+	GCPtr	pGC = GetScratchGC (pWin->drawable.depth, pScreen);
- 	
--	ValidateGC(&pPixmap->drawable, pGC);
--	dixChangeGC (serverClient, pGC, GCSubwindowMode, &val, NULL);
--	(*pGC->ops->CopyArea) (&pParent->drawable,
--			       &pPixmap->drawable,
--			       pGC,
--			       x - pParent->drawable.x,
--			       y - pParent->drawable.y,
--			       w, h, 0, 0);
--	FreeScratchGC (pGC);
-+	/*
-+	 * Copy bits from the parent into the new pixmap so that it will
-+	 * have "reasonable" contents in case for background None areas.
-+	 */
-+	if (pGC)
-+	{
-+	    XID val = IncludeInferiors;
-+	    
-+	    ValidateGC(&pPixmap->drawable, pGC);
-+	    dixChangeGC (serverClient, pGC, GCSubwindowMode, &val, NULL);
-+	    (*pGC->ops->CopyArea) (&pParent->drawable,
-+				   &pPixmap->drawable,
-+				   pGC,
-+				   x - pParent->drawable.x,
-+				   y - pParent->drawable.y,
-+				   w, h, 0, 0);
-+	    FreeScratchGC (pGC);
-+	}
-+    }
-+    else
-+    {
-+	PictFormatPtr	pSrcFormat = compWindowFormat (pParent);
-+	PictFormatPtr	pDstFormat = compWindowFormat (pWin);
-+	XID		inferiors = IncludeInferiors;
-+	int		error;
-+
-+	PicturePtr	pSrcPicture = CreatePicture (None,
-+						     &pParent->drawable,
-+						     pSrcFormat,
-+						     CPSubwindowMode,
-+						     &inferiors,
-+						     serverClient, &error);
-+						    
-+	PicturePtr	pDstPicture = CreatePicture (None,
-+						     &pPixmap->drawable,
-+						     pDstFormat,
-+						     0, 0,
-+						     serverClient, &error);
-+
-+	if (pSrcPicture && pDstPicture)
-+	{
-+	    CompositePicture (PictOpSrc,
-+			      pSrcPicture,
-+			      NULL,
-+			      pDstPicture,
-+			      x - pParent->drawable.x,
-+			      y - pParent->drawable.y,
-+			      0, 0, 0, 0, w, h);
-+	}
-+	if (pSrcPicture)
-+	    FreePicture (pSrcPicture, 0);
-+	if (pDstPicture)
-+	    FreePicture (pDstPicture, 0);
-     }
-     return pPixmap;
- }
-diff --git a/composite/compint.h b/composite/compint.h
-index 38b1777..f69595c 100644
---- a/composite/compint.h
-+++ b/composite/compint.h
-@@ -237,6 +237,9 @@ #else
- #define compCheckTree(s)
- #endif
- 
-+PictFormatPtr
-+compWindowFormat (WindowPtr pWin);
-+
- void
- compSetPixmap (WindowPtr pWin, PixmapPtr pPixmap);
- 
-diff --git a/composite/compwindow.c b/composite/compwindow.c
-index a4c4e6f..bfd2946 100644
---- a/composite/compwindow.c
-+++ b/composite/compwindow.c
-@@ -685,7 +685,7 @@ compGetWindowVisual (WindowPtr pWin)
-     return 0;
- }
- 
--static PictFormatPtr
-+PictFormatPtr
- compWindowFormat (WindowPtr pWin)
- {
-     ScreenPtr	pScreen = pWin->drawable.pScreen;
--- 
-1.4.1
-
--- a/open-src/xserver/xorg/composite-default.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-From 8afc7e2eb3ebec48d3879bf269143259c8bc18c8 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <[email protected]>
-Date: Mon, 26 Mar 2007 15:55:38 -0700
-Subject: [PATCH] Refuse to initialize Composite if Render is not present.
-
-Composite relies on the presence of Render, in particular for the automatic
-compositing.
----
- composite/compext.c |    6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/composite/compext.c b/composite/compext.c
-index 4c25cc7..3a9f896 100644
---- a/composite/compext.c
-+++ b/composite/compext.c
-@@ -678,6 +678,12 @@ CompositeExtensionInit (void)
-     ExtensionEntry  *extEntry;
-     int		    s;
- 
-+    /* Ensure that Render is initialized on all screens. */
-+    for (s = 0; s < screenInfo.numScreens; s++) {
-+	if (GetPictureScreenIfSet(screenInfo.screens[s]) == NULL)
-+	    return;
-+    }
-+
-     CompositeClientWindowType = CreateNewResourceType (FreeCompositeClientWindow);
-     if (!CompositeClientWindowType)
- 	return;
--- 
-1.4.1
-
-From 5e7936371c9e1ac48e19bf1e9e3f71f037fd9b5d Mon Sep 17 00:00:00 2001
-From: Eric Anholt <[email protected]>
-Date: Mon, 26 Mar 2007 20:18:18 -0700
-Subject: [PATCH] Disable Composite when the screen's visual is pseudocolor.
-
-Rendering fails badly in this case, and I don't care enough to fix it.
----
- composite/compext.c |   17 +++++++++++++++--
- 1 files changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/composite/compext.c b/composite/compext.c
-index 3a9f896..af05b4a 100644
---- a/composite/compext.c
-+++ b/composite/compext.c
-@@ -678,9 +678,22 @@ CompositeExtensionInit (void)
-     ExtensionEntry  *extEntry;
-     int		    s;
- 
--    /* Ensure that Render is initialized on all screens. */
-     for (s = 0; s < screenInfo.numScreens; s++) {
--	if (GetPictureScreenIfSet(screenInfo.screens[s]) == NULL)
-+	ScreenPtr pScreen = screenInfo.screens[s];
-+	VisualPtr vis;
-+
-+	/* Composite on 8bpp pseudocolor root windows appears to fail, so
-+	 * just disable it on anything pseudocolor for safety.
-+	 */
-+	for (vis = pScreen->visuals; vis->vid != pScreen->rootVisual; vis++)
-+	    ;
-+	if ((vis->class | DynamicClass) == PseudoColor)
-+	    return;
-+
-+	/* Ensure that Render is initialized, which is required for automatic
-+	 * compositing.
-+	 */
-+	if (GetPictureScreenIfSet(pScreen) == NULL)
- 	    return;
-     }
- 
--- 
-1.4.1
-
-From 0bfc3cc22db94ec6867596606fe93228e315c847 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <[email protected]>
-Date: Tue, 27 Mar 2007 13:12:21 -0700
-Subject: [PATCH] Disable composite when Xinerama is active.
-
-It will likely take a decent bit of work to make that work right.
----
- composite/compext.c |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/composite/compext.c b/composite/compext.c
-index af05b4a..ba37e7d 100644
---- a/composite/compext.c
-+++ b/composite/compext.c
-@@ -696,6 +696,11 @@ CompositeExtensionInit (void)
- 	if (GetPictureScreenIfSet(pScreen) == NULL)
- 	    return;
-     }
-+    /* Xinerama's rewriting of window drawing before Composite gets to it
-+     * breaks Composite.
-+     */
-+    if (!noPanoramiXExtension)
-+	return;
- 
-     CompositeClientWindowType = CreateNewResourceType (FreeCompositeClientWindow);
-     if (!CompositeClientWindowType)
--- 
-1.4.1
-
-From 1af2ef0b25fd8017a3271e624a5f1548f02b09f9 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <[email protected]>
-Date: Tue, 27 Mar 2007 13:13:45 -0700
-Subject: [PATCH] Enable Composite by default now that it disables itself in the known bad cases.
----
- os/utils.c |    5 +----
- 1 files changed, 1 insertions(+), 4 deletions(-)
-
-diff --git a/os/utils.c b/os/utils.c
-index 2fc5cbb..e605a6c 100644
---- a/os/utils.c
-+++ b/os/utils.c
-@@ -136,10 +136,7 @@ #ifdef BIGREQS
- _X_EXPORT Bool noBigReqExtension = FALSE;
- #endif
- #ifdef COMPOSITE
-- /* COMPOSITE is disabled by default for now until the
--  * interface is stable */
-- #define COMPOSITE_DEFAULT FALSE
--_X_EXPORT Bool noCompositeExtension = !COMPOSITE_DEFAULT;
-+_X_EXPORT Bool noCompositeExtension = FALSE;
- #endif
- 
- #ifdef DAMAGE
--- 
-1.4.1
-
-From 50fa8722d35c12e5f0322cebe25faf99c39d4f50 Mon Sep 17 00:00:00 2001
-From: Aaron Plattner <[email protected]>
-Date: Thu, 20 Sep 2007 14:00:33 -0700
-Subject: [PATCH] Set noCompositeExtension to TRUE when failing to initialize the extension (e.g. when Xinerama is enabled).
----
- composite/compext.c |    6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/composite/compext.c b/composite/compext.c
-index 944f8d8..ece51d0 100644
---- a/composite/compext.c
-+++ b/composite/compext.c
-@@ -674,6 +674,9 @@ CompositeExtensionInit (void)
-     ExtensionEntry  *extEntry;
-     int		    s;
- 
-+    /* Assume initialization is going to fail */
-+    noCompositeExtension = TRUE;
-+
-     for (s = 0; s < screenInfo.numScreens; s++) {
- 	ScreenPtr pScreen = screenInfo.screens[s];
- 	VisualPtr vis;
-@@ -731,4 +734,7 @@ #endif
- 	    return;
-     miRegisterRedirectBorderClipProc (compSetRedirectBorderClip,
- 				      compGetRedirectBorderClip);
-+
-+    /* Initialization succeeded */
-+    noCompositeExtension = FALSE;
- }
--- 
-1.4.1
-
--- a/open-src/xserver/xorg/composite-grabs.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-From a6a7fadbb03ee99312dfb15ac478ab3c414c1c0b Mon Sep 17 00:00:00 2001
-From: =?utf-8?q?Kristian_H=C3=B8gsberg?= <[email protected]>
-Date: Wed, 16 Jan 2008 20:24:11 -0500
-Subject: [PATCH] Don't break grab and focus state for a window when redirecting it.
-
-Composite uses an unmap/map cycle to trigger backing pixmap allocation
-and cliprect recomputation when a window is redirected or unredirected.
-To avoid protocol visible side effects, map and unmap events are
-disabled temporarily.  However, when a window is unmapped it is also
-removed from grabs and loses focus, but these state changes are not
-disabled.
-
-This change supresses the unmap side effects during the composite
-unmap/map cycle and fixes this bug:
-
-  http://bugzilla.gnome.org/show_bug.cgi?id=488264
-
-where compiz would cause gnome-screensaver to lose its grab when
-compiz unredirects the fullscreen lock window.
----
- dix/window.c |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/dix/window.c b/dix/window.c
-index 33cf76b..1ccf126 100644
---- a/dix/window.c
-+++ b/dix/window.c
-@@ -2993,7 +2993,8 @@ #ifdef PANORAMIX
- 	    } 
- #endif
- 	    (* Unrealize)(pChild);
--	    DeleteWindowFromAnyEvents(pChild, FALSE);
-+	    if (MapUnmapEventsEnabled(pWin))
-+		DeleteWindowFromAnyEvents(pChild, FALSE);
- 	    if (pChild->viewable)
- 	    {
- #ifdef DO_SAVE_UNDERS
--- 
-1.4.1
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/dixmods-deps.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,19 @@
+--- hw/xfree86/dixmods/Makefile.am	2008-09-26 21:45:31.528930000 -0700
++++ hw/xfree86/dixmods/Makefile.am	2008-09-27 09:30:57.338529000 -0700
+@@ -70,7 +70,7 @@
+ libdbe_la_SOURCES = dbemodule.c
+ 
+ libfb_la_LDFLAGS = -avoid-version
+-libfb_la_LIBADD = $(top_builddir)/fb/libfb.la
++libfb_la_LIBADD = $(top_builddir)/fb/libfb.la -lpixman-1
+ libfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
+ libfb_la_CFLAGS = $(AM_CFLAGS)
+ 
+--- hw/xfree86/int10/Makefile.am	2007-10-17 07:01:23.000000000 -0700
++++ hw/xfree86/int10/Makefile.am	2008-09-30 14:20:57.961539000 -0700
+@@ -42,3 +42,5 @@
+ endif
+ 
+ EXTRA_DIST = xf86x86emu.h INT10.HOWTO
++
++libint10_la_LIBADD = $(PCIACCESS_LIBS)
--- a/open-src/xserver/xorg/dri.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/dri.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -26,25 +26,9 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 
-diff -urp -x '*~' -x '*.orig' configure.ac configure.ac
---- configure.ac	2007-07-30 18:37:03.938884000 -0700
-+++ configure.ac	2007-07-30 18:37:20.626554000 -0700
-@@ -300,6 +300,12 @@ case $host_os in
- 	DRI=yes
- 	KDRIVE_HW=yes
- 	;;
-+  *solaris*)
-+	case $host_cpu in
-+		i*86)	DRI=yes ;;
-+		*)	DRI=no	;;
-+	esac
-+	;;
- esac
- AM_CONDITIONAL(KDRIVE_HW, test "x$KDRIVE_HW" = xyes)
- 
 diff -urp -x '*~' -x '*.orig' hw/xfree86/os-support/solaris/agpgart.h hw/xfree86/os-support/solaris/agpgart.h
---- hw/xfree86/os-support/solaris/agpgart.h	2006-09-17 23:04:18.000000000 -0700
-+++ hw/xfree86/os-support/solaris/agpgart.h	2007-07-30 18:37:20.681168000 -0700
+--- hw/xfree86/os-support/solaris/agpgart.h	2007-10-23 14:26:51.000000000 -0700
++++ hw/xfree86/os-support/solaris/agpgart.h	2008-09-24 20:22:57.390291000 -0700
 @@ -23,7 +23,7 @@
   * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   */
--- a/open-src/xserver/xorg/driver-autoconfig.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/driver-autoconfig.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,37 +1,23 @@
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
+From 5e847c1d4fc30a0d263a861a76982660f11998cd Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Mon, 7 Jul 2008 17:08:01 -0700
+Subject: [PATCH] Improved driver selection when autoconfiguring driver without xorg.conf
 
-diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86AutoConfig.c hw/xfree86/common/xf86AutoConfig.c
---- hw/xfree86/common/xf86AutoConfig.c	2008-05-07 18:53:54.780461000 -0700
-+++ hw/xfree86/common/xf86AutoConfig.c	2008-05-07 18:54:39.872308000 -0700
-@@ -40,6 +40,11 @@
- #include "xf86Priv.h"
+- Allow returning multiple drivers to try for a given PCI id (for instance,
+  try "geode" then "amd" for AMD Geode hardware)
+- On Solaris, use VIS_GETIDENTIFIER ioctl as well as PCI id to choose drivers
+- Use wsfb instead of fbdev as a fallback on non-Linux SPARC platforms
+---
+ hw/xfree86/common/xf86AutoConfig.c |  223 +++++++++++++++++++++++-------------
+ 1 files changed, 142 insertions(+), 81 deletions(-)
+
+diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
+index a786eed..45c42e1 100644
+--- a/hw/xfree86/common/xf86AutoConfig.c
++++ b/hw/xfree86/common/xf86AutoConfig.c
+@@ -41,6 +41,11 @@ #include "xf86Priv.h"
  #include "xf86_OSlib.h"
+ #include "dirent.h"
  
 +#ifdef sun
 +# include <sys/visual_io.h>
@@ -40,58 +26,75 @@
 +
  /* Sections for the default built-in configuration. */
  
- #define BUILTIN_MODULE_SECTION \
-@@ -99,7 +104,7 @@
+ #define BUILTIN_DEVICE_NAME \
+@@ -79,11 +84,8 @@ #define BUILTIN_LAYOUT_SECTION_POST \
  
  static const char **builtinConfig = NULL;
  static int builtinLines = 0;
 -static const char *deviceList[] = {
-+static const char *fallbackDeviceList[] = {
- #if defined(sun) && defined(__sparc)
- 	"wsfb",
- #else	
-@@ -160,70 +165,123 @@ AppendToConfig(const char *s)
+-	"fbdev",
+-	"vesa",
+-	NULL
+-};
++
++static void listPossibleVideoDrivers(char *matches[], int nmatches);
+ 
+ /*
+  * A built-in config file is stored as an array of strings, with each string
+@@ -135,87 +137,91 @@ AppendToConfig(const char *s)
      AppendToList(s, &builtinConfig, &builtinLines);
  }
  
 -static const char *
--videoPtrToDriverName(pciVideoPtr info)
-+static void
-+videoPtrToDriverName(pciVideoPtr info, const char *driverList[])
+-videoPtrToDriverName(struct pci_device *dev)
++static int
++videoPtrToDriverList(struct pci_device *dev,
++		     char *returnList[], int returnListMax)
  {
      /*
       * things not handled yet:
-      * amd/cyrix/nsc
-      * xgi
+      * cyrix/nsc.  should be merged into geode anyway.
+      * xgi.
       */
--
-     switch (info->vendor)
++    int i;
++    /* Add more entries here if we ever return more than 4 drivers for
++       any device */
++    char *driverList[5] = { NULL, NULL, NULL, NULL, NULL };
+ 
+     switch (dev->vendor_id)
      {
+ 	case 0x1022:
+-		if (dev->device_id == 0x2081)
+-			return "geode";
+-		else
+-			return NULL;
 -	case 0x1142:		    return "apm";
 -	case 0xedd8:		    return "ark";
 -	case 0x1a03:		    return "ast";
 -	case 0x1002:		    return "ati";
 -	case 0x102c:		    return "chips";
 -	case 0x1013:		    return "cirrus";
-+	case 0x1142:		    driverList[0] = "apm";	break;
-+	case 0xedd8:		    driverList[0] = "ark";	break;
-+	case 0x1a03:		    driverList[0] = "ast";	break;
-+	case 0x1002:
-+	    driverList[0] = "ati";
-+	    driverList[1] = "radeonhd";
++	    if (dev->device_id == 0x2081) {
++		driverList[0] = "geode";
++		driverList[1] = "amd";
++	    }
 +	    break;
-+	case 0x102c:		    driverList[0] = "chips";	break;
-+	case 0x1013:		    driverList[0] = "cirrus";	break;
++	case 0x1142:		    driverList[0] = "apm"; break;
++	case 0xedd8:		    driverList[0] = "ark"; break;
++	case 0x1a03:		    driverList[0] = "ast"; break;
++	case 0x1002:		    driverList[0] = "ati"; break;
++	case 0x102c:		    driverList[0] = "chips"; break;
++	case 0x1013:		    driverList[0] = "cirrus"; break;
  	case 0x8086:
--	    if ((info->chipType == 0x00d1) || (info->chipType == 0x7800))
+-	    if ((dev->device_id == 0x00d1) || (dev->device_id == 0x7800))
 -		return "i740";
--	    else return "i810";
+-	    else return "intel";
 -	case 0x102b:		    return "mga";
 -	case 0x10c8:		    return "neomagic";
 -	case 0x105d:		    return "i128";
 -	case 0x10de: case 0x12d2:   return "nv";
 -	case 0x1163:		    return "rendition";
-+	    if ((info->chipType == 0x00d1) || (info->chipType == 0x7800)) {
++	    if ((dev->device_id == 0x00d1) || (dev->device_id == 0x7800)) {
 +		driverList[0] = "i740";
 +	    } else {
 +		driverList[0] = "intel";
@@ -99,27 +102,24 @@
 +	    }
 +	    break;
 +	case 0x102b:		    driverList[0] = "mga";	break;
-+	case 0x10c8:		    driverList[0] = "neomagic";	break;
++	case 0x10c8:		    driverList[0] = "neomagic"; break;
 +	case 0x105d:		    driverList[0] = "i128";	break;
 +	case 0x10de: case 0x12d2:   driverList[0] = "nv";	break;
-+	case 0x1163:		    driverList[0] = "rendition";break;
++	case 0x1163:		    driverList[0] = "rendition"; break;
  	case 0x5333:
- 	    switch (info->chipType)
+ 	    switch (dev->device_id)
  	    {
  		case 0x88d0: case 0x88d1: case 0x88f0: case 0x8811:
  		case 0x8812: case 0x8814: case 0x8901:
 -		    return "s3";
-+		    driverList[0] = "s3";
-+		    break;
++		    driverList[0] = "s3"; break;
  		case 0x5631: case 0x883d: case 0x8a01: case 0x8a10:
  		case 0x8c01: case 0x8c03: case 0x8904: case 0x8a13:
 -		    return "s3virge";
-+		    driverList[0] = "s3virge";
-+		    break;
++		    driverList[0] = "s3virge"; break;
  		default:
 -		    return "savage";
-+		    driverList[0] = "savage";
-+		    break;
++		    driverList[0] = "savage"; break;
  	    }
 -	case 0x1039:		    return "sis";
 -	case 0x126f:		    return "siliconmotion";
@@ -127,7 +127,7 @@
 +	case 0x1039:		    driverList[0] = "sis";	break;
 +	case 0x126f:		    driverList[0] = "siliconmotion"; break;
  	case 0x121a:
- 	    if (info->chipType < 0x0003)
+ 	    if (dev->device_id < 0x0003)
 -	        return "voodoo";
 +	        driverList[0] = "voodoo";
  	    else
@@ -135,87 +135,36 @@
 -	case 0x3d3d:		    return "glint";
 -	case 0x1023:		    return "trident";
 -	case 0x100c:		    return "tseng";
--	case 0x1106:		    return "via";
+-	case 0x1106:		    return "openchrome";
 -	case 0x15ad:		    return "vmware";
 +	        driverList[0] = "tdfx";
 +	    break;
 +	case 0x3d3d:		    driverList[0] = "glint";	break;
-+	case 0x1023:		    driverList[0] = "trident";	break;
++	case 0x1023:		    driverList[0] = "trident"; break;
 +	case 0x100c:		    driverList[0] = "tseng";	break;
-+	case 0x1106:
-+	    driverList[0] = "openchrome";
-+	    driverList[1] = "via";
-+	    break;
++	case 0x1106:		    driverList[0] = "openchrome"; break;
 +	case 0x15ad:		    driverList[0] = "vmware";	break;
  	default: break;
      }
 -    return NULL;
++    for (i = 0; (i < returnListMax) && (driverList[i] != NULL); i++) {
++	returnList[i] = xnfstrdup(driverList[i]);
++    }
++    return i;	/* Number of entries added */
  }
  
  Bool
  xf86AutoConfig(void)
  {
 -    const char **p;
-+    const char *detectedDeviceList[8] = { NULL, NULL, NULL, NULL,
-+    					  NULL, NULL, NULL, NULL };
-+    const char **deviceLists[3]
-+	= { detectedDeviceList, fallbackDeviceList, NULL };
-+    const char **p = detectedDeviceList;
-+    const char ***d;
++    char *deviceList[20];
++    char **p;
++    const char **cp;
      char buf[1024];
-     pciVideoPtr *pciptr, info = NULL;
--    char *driver = NULL;
+-    const char *driver = NULL;
      ConfigStatus ret;
-+#ifdef sun
-+    char *vendorName = NULL, *driverName = NULL;
  
-+    /* Check for driver type based on /dev/fb type and if valid, replace
-+       detectedDeviceList */
-+    if (xf86Info.consoleFd  >= 0) {
-+	struct vis_identifier   visid;
-+	const char *cp;
-+	int ddi = 0;
-+
-+	if (ioctl(xf86Info.consoleFd, VIS_GETIDENTIFIER, &visid) >= 0) {
-+	    xf86Msg(X_PROBED, "console driver: %s\n", visid.name);
-+
-+	    /* Special case from before the general case was set */
-+	    if (strcmp(visid.name, "NVDAnvda") == 0) {
-+		detectedDeviceList[ddi++] = "nvidia";
-+	    }
-+
-+	    /* General case - split into vendor name & driver name */
-+	    if (strcmp(visid.name, "SUNWtext") != 0) {
-+		for (cp = visid.name; (*cp != '\0') && isupper(*cp); cp++) {
-+		    /* find end of all uppercase vendor section */
-+		}
-+		if ((cp != visid.name) && (*cp != '\0')) {
-+		    vendorName = xnfstrdup(visid.name);
-+		    vendorName[cp - visid.name] = '\0';
-+		    driverName = xnfstrdup(cp);
-+
-+		    detectedDeviceList[ddi++] = vendorName;
-+		    detectedDeviceList[ddi++] = driverName;
-+		}
-+	    }
-+	    p = &detectedDeviceList[ddi];
-+	}
-+    }
-+#endif
-+    
-     /* Find the primary device, and get some information about it. */
-     if (xf86PciVideoInfo) {
- 	for (pciptr = xf86PciVideoInfo; (info = *pciptr); pciptr++) {
-@@ -239,38 +297,29 @@ xf86AutoConfig(void)
-     }
- 
-     if (info)
--	driver = videoPtrToDriverName(info);
--
-+	videoPtrToDriverName(info, p);
-+    
-     AppendToConfig(BUILTIN_MODULE_SECTION);
-     AppendToConfig(BUILTIN_MONITOR_SECTION);
+-    driver = chooseVideoDriver();
 -
 -    if (driver) {
 -	snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION_PRE,
@@ -228,50 +177,167 @@
 -		 driver, 0, driver, 0);
 -	AppendToConfig(buf);
 -    }
--
--    for (p = deviceList; *p; p++) {
--	snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
--	AppendToConfig(buf);
--	snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
--	AppendToConfig(buf);
-+    
-+    ErrorF("Drivers to try are:");
-+    for (d = deviceLists; *d ; d++) {
-+	for (p = *d; *p; p++) {
-+	    ErrorF(" \"%s\"", *p);
-+	    snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
-+	    AppendToConfig(buf);
-+	    snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
-+	    AppendToConfig(buf);
-+	}
++    listPossibleVideoDrivers(deviceList, 20);
+ 
+     for (p = deviceList; *p; p++) {
+ 	snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
+@@ -225,23 +231,23 @@ xf86AutoConfig(void)
      }
-+    ErrorF("\n");
  
      AppendToConfig(BUILTIN_LAYOUT_SECTION_PRE);
 -    if (driver) {
 -	snprintf(buf, sizeof(buf), BUILTIN_LAYOUT_SCREEN_LINE, driver, 0);
 -	AppendToConfig(buf);
 -    }
--    for (p = deviceList; *p; p++) {
--	snprintf(buf, sizeof(buf), BUILTIN_LAYOUT_SCREEN_LINE, *p, 0);
--	AppendToConfig(buf);
-+    for (d = deviceLists; *d ; d++) {
-+	for (p = *d; *p; p++) {
-+	    snprintf(buf, sizeof(buf), BUILTIN_LAYOUT_SCREEN_LINE, *p, 0);
-+	    AppendToConfig(buf);
-+	}
+     for (p = deviceList; *p; p++) {
+ 	snprintf(buf, sizeof(buf), BUILTIN_LAYOUT_SCREEN_LINE, *p, 0);
+ 	AppendToConfig(buf);
      }
      AppendToConfig(BUILTIN_LAYOUT_SECTION_POST);
  
-@@ -287,6 +336,11 @@ xf86AutoConfig(void)
-     ret = xf86HandleConfigFile(TRUE);
-     FreeConfig();
++    for (p = deviceList; *p; p++) {
++	xfree(*p);
++    }
++
+     xf86MsgVerb(X_DEFAULT, 0,
+ 		"Using default built-in configuration (%d lines)\n",
+ 		builtinLines);
  
+     xf86MsgVerb(X_DEFAULT, 3, "--- Start of built-in configuration ---\n");
+-    for (p = builtinConfig; *p; p++)
+-	xf86ErrorFVerb(3, "\t%s", *p);
++    for (cp = builtinConfig; *cp; cp++)
++	xf86ErrorFVerb(3, "\t%s", *cp);
+     xf86MsgVerb(X_DEFAULT, 3, "--- End of built-in configuration ---\n");
+     
+     xf86setBuiltinConfig(builtinConfig);
+@@ -416,17 +422,51 @@ #endif /* __GLIBC __ */
+ }
+ #endif /* __linux__ */
+ 
+-char*
+-chooseVideoDriver(void)
++static void
++listPossibleVideoDrivers(char *matches[], int nmatches)
+ {
+     struct pci_device * info = NULL;
+     struct pci_device_iterator *iter;
+-    char *chosen_driver = NULL;
+     int i;
+-    char *matches[20]; /* If we have more than 20 drivers we're in trouble */
+     
+-    for (i=0 ; i<20 ; i++)
++    for (i = 0 ; i < nmatches ; i++) {
+         matches[i] = NULL;
++    }
++    i = 0;
++
 +#ifdef sun
-+    xfree(driverName);
-+    xfree(vendorName);
++    /* Check for driver type based on /dev/fb type and if valid, use
++       it instead of PCI bus probe results */
++    if (xf86Info.consoleFd >= 0) {
++	struct vis_identifier   visid;
++	const char *cp;
++
++	if (ioctl(xf86Info.consoleFd, VIS_GETIDENTIFIER, &visid) >= 0) {
++	    xf86Msg(X_PROBED, "console driver: %s\n", visid.name);
++
++	    /* Special case from before the general case was set */
++	    if (strcmp(visid.name, "NVDAnvda") == 0) {
++		matches[i++] = xnfstrdup("nvidia");
++	    }
++
++	    /* General case - split into vendor name (initial all-caps
++	       prefix) & driver name (rest of the string). */
++	    if (strcmp(visid.name, "SUNWtext") != 0) {
++		for (cp = visid.name; (*cp != '\0') && isupper(*cp); cp++) {
++		    /* find end of all uppercase vendor section */
++		}
++		if ((cp != visid.name) && (*cp != '\0')) {
++		    char *driverName = xnfstrdup(cp);
++		    char *vendorName = xnfstrdup(visid.name);
++		    vendorName[cp - visid.name] = '\0';
++
++		    matches[i++] = vendorName;
++		    matches[i++] = driverName;
++		}
++	    }
++	}
++    }
 +#endif
-+    
-     if (ret != CONFIG_OK)
- 	xf86Msg(X_ERROR, "Error parsing the built-in default configuration.\n");
+ 
+     /* Find the primary device, and get some information about it. */
+     iter = pci_slot_match_iterator_create(NULL);
+@@ -447,31 +487,52 @@ #ifdef __linux__
+     }
+ #endif /* __linux__ */
  
+-    /* TODO Handle multiple drivers claiming to support the same PCI ID */
+-    if (matches[0]) {
+-        chosen_driver = matches[0];
+-    } else {
+-	if (info != NULL)
+-	    chosen_driver = videoPtrToDriverName(info);
+-	if (chosen_driver == NULL) {
+-#if defined  __i386__ || defined __amd64__ || defined __hurd__
+-	    chosen_driver = "vesa";
+-#elif defined __sparc__
+-	    chosen_driver = "sunffb";
++    for (i = 0; (i < nmatches) && (matches[i]); i++) {
++	/* find end of matches list */
++    }
++
++    if ((info != NULL) && (i < nmatches)) {
++	i += videoPtrToDriverList(info, &(matches[i]), nmatches - i);
++    }
++
++    /* Fallback to platform default hardware */
++    if (i < (nmatches - 1)) {
++#if defined(__i386__) || defined(__amd64__) || defined(__hurd__)
++	matches[i++] = xnfstrdup("vesa");
++#elif defined(__sparc__) && !defined(sun)
++	matches[i++] = xnfstrdup("sunffb");
++#endif
++    }
++
++    /* Fallback to platform default frame buffer driver */
++    if (i < (nmatches - 1)) {
++#if !defined(__linux__) && defined(__sparc__)
++	matches[i++] = xnfstrdup("wsfb");
+ #else
+-	    chosen_driver = "fbdev";
++	matches[i++] = xnfstrdup("fbdev");
+ #endif
+-	}
+     }
++}
++
++char*
++chooseVideoDriver(void)
++{
++    char *chosen_driver = NULL;
++    int i;
++    char *matches[20]; /* If we have more than 20 drivers we're in trouble */
+ 
+-    xf86Msg(X_DEFAULT, "Matched %s for the autoconfigured driver\n", chosen_driver);
++    listPossibleVideoDrivers(matches, 20);
+ 
+-    i = 0;
+-    while (matches[i]) {
++    /* TODO Handle multiple drivers claiming to support the same PCI ID */
++    chosen_driver = matches[0];
++
++    xf86Msg(X_DEFAULT, "Matched %s for the autoconfigured driver\n",
++	    chosen_driver);
++
++    for (i = 0; matches[i] ; i++) {
+         if (matches[i] != chosen_driver) {
+             xfree(matches[i]);
+         }
+-        i++;
+     }
+ 
+     return chosen_driver;
+-- 
+1.4.1
+
--- a/open-src/xserver/xorg/dtlogin-userinfo.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/dtlogin-userinfo.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -27,40 +27,40 @@
 # of the copyright holder.
 
 diff -urp -x '*~' -x '*.orig' configure.ac configure.ac
---- configure.ac	2007-07-30 18:33:18.270657000 -0700
-+++ configure.ac	2007-07-30 18:33:33.880185000 -0700
-@@ -887,6 +887,7 @@ PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQ
- PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
- 
- XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS}"
-+LIBS="${LIBS} -lproject"
- XSERVER_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS}"
- AC_SUBST([SYS_LIBS])
+--- configure.ac	2008-09-23 11:27:01.000000000 -0700
++++ configure.ac	2008-09-24 20:20:03.627438000 -0700
+@@ -1157,6 +1157,7 @@ LIBCRYPTO="$OPENSSL_LIB_FLAGS -lcrypto"
+ XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS} ${SHA1_CFLAGS}"
+ XSERVER_LIBS="$DIX_LIB $CONFIG_LIB $MI_LIB $OS_LIB"
+ XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS} ${SHA1_LIB}"
++XSERVER_SYS_LIBS="${XSERVER_SYS_LIBS} -lproject"
+ AC_SUBST([XSERVER_LIBS])
+ AC_SUBST([XSERVER_SYS_LIBS])
  
 diff -urp -x '*~' -x '*.orig' os/Makefile.am os/Makefile.am
---- os/Makefile.am	2007-07-30 18:33:18.179832000 -0700
-+++ os/Makefile.am	2007-07-30 18:33:33.905121000 -0700
-@@ -27,6 +27,7 @@ libos_la_SOURCES = 	\
+--- os/Makefile.am	2008-09-23 11:25:01.000000000 -0700
++++ os/Makefile.am	2008-09-24 20:20:03.627940000 -0700
+@@ -22,6 +22,7 @@ libos_la_SOURCES = 	\
  	xdmauth.c	\
  	xstrans.c	\
  	xprintf.c	\
 +	dtlogin.c	\
  	$(XORG_SRCS)
  
- if XCSECURITY
-@@ -41,6 +42,8 @@ if NEED_STRLCAT
+ if SECURE_RPC
+@@ -36,6 +37,8 @@ if NEED_STRLCAT
  libos_la_SOURCES += $(STRLCAT_SRCS)
  endif
  
 +libos_la_LIBADD = -lproject
 +
- libcwrapper_la_SOURCES = \
- 	$(top_srcdir)/hw/xfree86/os-support/shared/libc_wrapper.c
- libcwrapper_la_CFLAGS = \
+ EXTRA_DIST = $(SECURERPC_SRCS) $(INTERNALMALLOC_SRCS) \
+      $(XDMCP_SRCS) $(STRLCAT_SRCS)
+ 
 diff -urp -x '*~' -x '*.orig' os/auth.c os/auth.c
---- os/auth.c	2006-09-17 23:04:18.000000000 -0700
-+++ os/auth.c	2007-07-30 18:33:33.905663000 -0700
-@@ -332,6 +332,19 @@ AddAuthorization (unsigned name_length, 
+--- os/auth.c	2008-09-23 11:25:01.000000000 -0700
++++ os/auth.c	2008-09-24 20:20:03.629219000 -0700
+@@ -289,6 +289,19 @@ AddAuthorization (unsigned name_length, 
      return 0;
  }
  
@@ -81,9 +81,9 @@
  
  XID
 diff -urp -x '*~' -x '*.orig' os/connection.c os/connection.c
---- os/connection.c	2007-07-30 18:33:18.168637000 -0700
-+++ os/connection.c	2007-07-30 18:33:33.906523000 -0700
-@@ -176,6 +176,10 @@ typedef const char *string;
+--- os/connection.c	2008-09-23 11:25:01.000000000 -0700
++++ os/connection.c	2008-09-24 20:20:03.630157000 -0700
+@@ -168,6 +168,10 @@ typedef const char *string;
  # include "../dix/Xserver-dtrace.h"
  #endif
  
@@ -91,18 +91,19 @@
 +extern void DtloginInit(void);
 +#endif /* SUNSOFT */
 +
- int lastfdesc;			/* maximum file descriptor */
+ static int lastfdesc;		/* maximum file descriptor */
  
  fd_set WellKnownConnections;	/* Listener mask */
-@@ -472,6 +476,11 @@ CreateWellKnownSockets(void)
-      */
-     ParentProcess = GetPPID (ParentProcess);
- #endif /* __UNIXOS2__ */
+@@ -472,6 +476,12 @@ CreateWellKnownSockets(void)
+     XFD_COPYSET (&WellKnownConnections, &AllSockets);
+     ResetHosts(display);
+ 
 +#ifdef SUNSOFT
 +    /* Create pipe for dtlogin authentication info before we tell dtlogin 
 +       we're done and ready for it to run. */
 +    DtloginInit ();
 +#endif
-     if (RunFromSmartParent) {
- 	if (ParentProcess > 1) {
- 	    kill (ParentProcess, SIGUSR1);
++
+     InitParentProcess();
+ 
+ #ifdef XDMCP
--- a/open-src/xserver/xorg/dtrace.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,600 +0,0 @@
-/* Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- * 
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-
---- dix/Xserver.d	1969-12-31 16:00:00.000000000 -0800
-+++ dix/Xserver.d	2005-07-04 11:09:17.267106000 -0700
-@@ -0,0 +1,59 @@
-+/* Copyright 2005-2006 Sun Microsystems, Inc.  All rights reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, and/or sell copies of the Software, and to permit persons
-+ * to whom the Software is furnished to do so, provided that the above
-+ * copyright notice(s) and this permission notice appear in all copies of
-+ * the Software and that both the above copyright notice(s) and this
-+ * permission notice appear in supporting documentation.
-+ * 
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-+ * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ * 
-+ * Except as contained in this notice, the name of a copyright holder
-+ * shall not be used in advertising or otherwise to promote the sale, use
-+ * or other dealings in this Software without prior written authorization
-+ * of the copyright holder.
-+ */
-+
-+/*
-+ * Xserver dtrace provider definition
-+ */
-+
-+#include <sys/types.h>
-+
-+provider Xserver {
-+	/* reqType, data, length, client id, request buffer */
-+	probe request__start(string, uint8_t, uint16_t, int, void *);
-+	/* reqType, data, sequence, client id, result */
-+	probe request__done(string, uint8_t, uint32_t, int, int);
-+	/* client id, client fd */
-+	probe client__connect(int, int);
-+	/* client id, client address, client pid, client zone id */
-+	probe client__auth(int, string, pid_t, zoneid_t);
-+	/* client id */
-+	probe client__disconnect(int);
-+	/* resource id, resource type, value, resource type name */
-+	probe resource__alloc(uint32_t, uint32_t, void *, string);
-+	/* resource id, resource type, value, resource type name */
-+	probe resource__free(uint32_t, uint32_t, void *, string);
-+	/* client id, event type, event* */
-+	probe send__event(int, uint8_t, void *);
-+};
-+
-+#pragma D attributes Unstable/Unstable/Common provider Xserver provider
-+#pragma D attributes Private/Private/Unknown  provider Xserver module
-+#pragma D attributes Private/Private/Unknown  provider Xserver function
-+#pragma D attributes Unstable/Unstable/Common provider Xserver name
-+#pragma D attributes Unstable/Unstable/Common provider Xserver args
-+
-
-diff -urp -x '*~' -x '*.orig' configure.ac configure.ac
---- configure.ac	2007-04-19 18:23:40.000000000 -0700
-+++ configure.ac	2007-07-30 18:29:34.753611000 -0700
-@@ -77,6 +77,15 @@ AC_PROG_LEX
- AC_PROG_YACC
- XORG_PROG_RAWCPP
- 
-+dnl Check for dtrace program (needed to build Xserver dtrace probes)
-+AC_PATH_PROG(DTRACE, [dtrace], [not_found], [$PATH:/usr/sbin])
-+if test "x$DTRACE" != "xnot_found" ; then
-+  AC_DEFINE(XSERVER_DTRACE, 1, 
-+      [Define to 1 if the DTrace Xserver provider probes should be built in.])
-+fi
-+AM_CONDITIONAL(XSERVER_DTRACE, [test "x$DTRACE" != "xnot_found"])
-+AC_DEFINE_DIR(XERRORDB_PATH, libdir/XErrorDB, [Path to XErrorDB file])
-+
- AC_HEADER_DIRENT
- AC_HEADER_STDC
- AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
-@@ -860,8 +869,8 @@ AC_DEFINE(XCMISC, 1, [Support XCMisc ext
- AC_DEFINE(BIGREQS, 1, [Support BigRequests extension])
- AC_DEFINE(PIXPRIV, 1, [Support pixmap privates])
- 
--DIX_LIB='$(top_builddir)/dix/libdix.la'
--OS_LIB='$(top_builddir)/os/libos.la'
-+DIX_LIB='$(top_builddir)/dix/dix.O'
-+OS_LIB='$(top_builddir)/os/os.O'
- CWRAP_LIB='$(top_builddir)/os/libcwrapper.la'
- MI_LIB='$(top_builddir)/mi/libmi.la'
- MINIMI_LIB='$(top_builddir)/mi/libminimi.la'
-diff -urp -x '*~' -x '*.orig' dix/Makefile.am dix/Makefile.am
---- dix/Makefile.am	2006-11-16 10:01:22.000000000 -0800
-+++ dix/Makefile.am	2007-07-30 18:29:34.754152000 -0700
-@@ -37,4 +37,21 @@ libxpstubs_la_SOURCES =	\
- 
- INCLUDES = -I$(top_srcdir)/Xprint
- 
--EXTRA_DIST = buildatoms BuiltInAtoms CHANGES
-+EXTRA_DIST = buildatoms BuiltInAtoms CHANGES Xserver.d
-+
-+if XSERVER_DTRACE
-+# Generate dtrace header file for C sources to include
-+BUILT_SOURCES = Xserver-dtrace.h
-+
-+Xserver-dtrace.h: $(srcdir)/Xserver.d
-+	$(DTRACE) -C -h -o $@ -s $(srcdir)/Xserver.d
-+
-+# Generate dtrace object code for probes in libdix
-+dtrace-os.o: $(top_srcdir)/dix/Xserver.d $(am_libdix_la_OBJECTS)
-+	$(DTRACE) -G -C -o $@ -s $(top_srcdir)/dix/Xserver.d .libs/*.o
-+
-+noinst_PROGRAMS = dix.O
-+
-+dix.O: dtrace-os.o $(am_libdix_la_OBJECTS)
-+	ld -r -o $@ dtrace-os.o .libs/*.o
-+endif
-diff -urp -x '*~' -x '*.orig' dix/dispatch.c dix/dispatch.c
---- dix/dispatch.c	2006-11-16 10:01:22.000000000 -0800
-+++ dix/dispatch.c	2007-07-30 18:29:34.761328000 -0700
-@@ -74,6 +74,36 @@ Equipment Corporation.
- 
- ******************************************************************/
- 
-+/* XSERVER_DTRACE additions:
-+ * Copyright 2005-2006 Sun Microsystems, Inc.  All rights reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, and/or sell copies of the Software, and to permit persons
-+ * to whom the Software is furnished to do so, provided that the above
-+ * copyright notice(s) and this permission notice appear in all copies of
-+ * the Software and that both the above copyright notice(s) and this
-+ * permission notice appear in supporting documentation.
-+ * 
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-+ * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ * 
-+ * Except as contained in this notice, the name of a copyright holder
-+ * shall not be used in advertising or otherwise to promote the sale, use
-+ * or other dealings in this Software without prior written authorization
-+ * of the copyright holder.
-+ */
-+
-+
- 
- #ifdef HAVE_DIX_CONFIG_H
- #include <dix-config.h>
-@@ -118,6 +148,17 @@ int ProcInitialConnection();
- #include <X11/extensions/XKBsrv.h>
- #endif
- 
-+#ifdef XSERVER_DTRACE
-+#include <sys/types.h>
-+typedef const char *string;
-+#include "Xserver-dtrace.h"
-+
-+char *RequestNames[256];
-+static void LoadRequestNames(void);
-+static void FreeRequestNames(void);
-+#define GetRequestName(i) (RequestNames[i])
-+#endif
-+
- #define mskcnt ((MAXCLIENTS + 31) / 32)
- #define BITMASK(i) (1U << ((i) & 31))
- #define MASKIDX(i) ((i) >> 5)
-@@ -372,6 +413,10 @@ Dispatch(void)
-     if (!clientReady)
- 	return;
- 
-+#ifdef XSERVER_DTRACE
-+    LoadRequestNames();
-+#endif
-+
-     while (!dispatchException)
-     {
-         if (*icheck[0] != *icheck[1])
-@@ -448,6 +493,11 @@ Dispatch(void)
- 		client->requestLog[client->requestLogIndex] = MAJOROP;
- 		client->requestLogIndex++;
- #endif
-+#ifdef XSERVER_DTRACE
-+		XSERVER_REQUEST_START(GetRequestName(MAJOROP), MAJOROP,
-+			      ((xReq *)client->requestBuffer)->length,
-+			      client->index, client->requestBuffer);
-+#endif
- 		if (result > (maxBigRequestSize << 2))
- 		    result = BadLength;
- 		else
-@@ -460,7 +510,11 @@ Dispatch(void)
- #else
-     		    result = (* client->requestVector[MAJOROP])(client);
- #endif /* XACE */
--	    
-+#ifdef XSERVER_DTRACE
-+		XSERVER_REQUEST_DONE(GetRequestName(MAJOROP), MAJOROP,
-+			      client->sequence, client->index, result);
-+#endif
-+
- 		if (result != Success) 
- 		{
- 		    if (client->noClientException != Success)
-@@ -491,6 +545,9 @@ Dispatch(void)
-     KillAllClients();
-     DEALLOCATE_LOCAL(clientReady);
-     dispatchException &= ~DE_RESET;
-+#ifdef XSERVER_DTRACE
-+    FreeRequestNames();
-+#endif
- }
- 
- #undef MAJOROP
-@@ -3565,6 +3622,9 @@ CloseDownClient(register ClientPtr clien
- 	    CallCallbacks((&ClientStateCallback), (pointer)&clientinfo);
- 	} 	    
- 	FreeClientResources(client);
-+#ifdef XSERVER_DTRACE
-+	XSERVER_CLIENT_DISCONNECT(client->index);
-+#endif	
- 	if (client->index < nextFreeClientID)
- 	    nextFreeClientID = client->index;
- 	clients[client->index] = NullClient;
-@@ -3990,3 +4050,60 @@ MarkClientException(ClientPtr client)
- {
-     client->noClientException = -1;
- }
-+
-+#ifdef XSERVER_DTRACE
-+#include <ctype.h>
-+
-+/* Load table of request names for dtrace probes */
-+static void LoadRequestNames(void)
-+{
-+    int i;
-+    FILE *xedb;
-+    extern void LoadExtensionNames(char **RequestNames);
-+
-+    bzero(RequestNames, 256 * sizeof(char *));
-+
-+    xedb = fopen(XERRORDB_PATH, "r");
-+    if (xedb != NULL) {
-+	char buf[256];
-+	while (fgets(buf, sizeof(buf), xedb)) {
-+	    if ((strncmp("XRequest.", buf, 9) == 0) && (isdigit(buf[9]))) {
-+		char *name;
-+		i = strtol(buf + 9, &name, 10);
-+		if (RequestNames[i] == 0) {
-+		    char *end = strchr(name, '\n');
-+		    if (end) { *end = '\0'; }
-+		    RequestNames[i] = strdup(name + 1);
-+		}
-+	    }
-+	}
-+	fclose(xedb);
-+    }
-+
-+    LoadExtensionNames(RequestNames);
-+
-+    for (i = 0; i < 256; i++) {
-+	if (RequestNames[i] == 0) {
-+#define RN_SIZE 12 /* "Request#' + up to 3 digits + \0 */
-+	    RequestNames[i] = xalloc(RN_SIZE);
-+	    if (RequestNames[i]) {
-+		snprintf(RequestNames[i], RN_SIZE, "Request#%d", i);
-+	    }
-+	}
-+	/* fprintf(stderr, "%d: %s\n", i, RequestNames[i]); */
-+    }
-+}
-+
-+static void FreeRequestNames(void)
-+{
-+    int i;
-+
-+    for (i = 0; i < 256; i++) {
-+	if (RequestNames[i] != 0) {
-+	    free(RequestNames[i]);
-+	    RequestNames[i] = 0;
-+	}
-+    }
-+}
-+
-+#endif
-diff -urp -x '*~' -x '*.orig' dix/events.c dix/events.c
---- dix/events.c	2006-11-16 10:01:22.000000000 -0800
-+++ dix/events.c	2007-07-30 18:29:34.764143000 -0700
-@@ -139,6 +139,12 @@ extern Bool XkbFilterEvents(ClientPtr, i
- #include "xace.h"
- #endif
- 
-+#ifdef XSERVER_DTRACE
-+#include <sys/types.h>
-+typedef const char *string;
-+#include "Xserver-dtrace.h"
-+#endif
-+
- #ifdef XEVIE
- extern WindowPtr *WindowTable;
- extern int       xevieFlag;
-@@ -4580,6 +4586,14 @@ WriteEventsToClient(ClientPtr pClient, i
- 	eventinfo.count = count;
- 	CallCallbacks(&EventCallback, (pointer)&eventinfo);
-     }
-+#ifdef XSERVER_DTRACE
-+    if (XSERVER_SEND_EVENT_ENABLED()) {
-+	for (i = 0; i < count; i++)
-+	{
-+	    XSERVER_SEND_EVENT(pClient->index, events[i].u.u.type, &events[i]);
-+	}
-+    }
-+#endif	
-     if(pClient->swapped)
-     {
- 	for(i = 0; i < count; i++)
-diff -urp -x '*~' -x '*.orig' dix/extension.c dix/extension.c
---- dix/extension.c	2006-11-16 10:01:23.000000000 -0800
-+++ dix/extension.c	2007-07-30 18:29:34.808650000 -0700
-@@ -482,3 +482,17 @@ RegisterScreenProc(char *name, ScreenPtr
-     }
-     return TRUE;
- }
-+
-+#ifdef XSERVER_DTRACE
-+void LoadExtensionNames(char **RequestNames) {
-+    int i;
-+
-+    for (i=0; i<NumExtensions; i++) {
-+	int r = extensions[i]->base;
-+
-+	if (RequestNames[r] == NULL) {
-+	    RequestNames[r] = strdup(extensions[i]->name);
-+	}
-+    }
-+}
-+#endif
-diff -urp -x '*~' -x '*.orig' dix/resource.c dix/resource.c
---- dix/resource.c	2006-11-16 10:01:23.000000000 -0800
-+++ dix/resource.c	2007-07-30 18:29:34.809719000 -0700
-@@ -72,6 +72,34 @@ dealings in this Software without prior 
- Equipment Corporation.
- 
- ******************************************************************/
-+/* XSERVER_DTRACE additions:
-+ * Copyright 2005-2006 Sun Microsystems, Inc.  All rights reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, and/or sell copies of the Software, and to permit persons
-+ * to whom the Software is furnished to do so, provided that the above
-+ * copyright notice(s) and this permission notice appear in all copies of
-+ * the Software and that both the above copyright notice(s) and this
-+ * permission notice appear in supporting documentation.
-+ * 
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-+ * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ * 
-+ * Except as contained in this notice, the name of a copyright holder
-+ * shall not be used in advertising or otherwise to promote the sale, use
-+ * or other dealings in this Software without prior written authorization
-+ * of the copyright holder.
-+ */
- 
- /* $TOG: resource.c /main/41 1998/02/09 14:20:31 kaleb $ */
- 
-@@ -125,6 +153,14 @@ Equipment Corporation.
- #endif
- #include <assert.h>
- 
-+#ifdef XSERVER_DTRACE
-+#include <sys/types.h>
-+typedef const char *string;
-+#include "Xserver-dtrace.h"
-+
-+#define TypeNameString(t) NameForAtom(ResourceNames[t & TypeMask])
-+#endif
-+
- static void RebuildTable(
-     int /*client*/
- );
-@@ -429,6 +465,9 @@ AddResource(XID id, RESTYPE type, pointe
-     register ClientResourceRec *rrec;
-     register ResourcePtr res, *head;
-     	
-+#ifdef XSERVER_DTRACE
-+    XSERVER_RESOURCE_ALLOC(id, type, value, TypeNameString(type));
-+#endif
-     client = CLIENT_ID(id);
-     rrec = &clientTable[client];
-     if (!rrec->buckets)
-@@ -528,6 +567,11 @@ FreeResource(XID id, RESTYPE skipDeleteF
- 	    if (res->id == id)
- 	    {
- 		RESTYPE rtype = res->type;
-+
-+#ifdef XSERVER_DTRACE
-+		XSERVER_RESOURCE_FREE(res->id, res->type,
-+			      res->value, TypeNameString(res->type));
-+#endif		    
- 		*prev = res->next;
- 		elements = --*eltptr;
- 		if (rtype & RC_CACHED)
-@@ -569,6 +613,10 @@ FreeResourceByType(XID id, RESTYPE type,
- 	{
- 	    if (res->id == id && res->type == type)
- 	    {
-+#ifdef XSERVER_DTRACE
-+		XSERVER_RESOURCE_FREE(res->id, res->type,
-+			      res->value, TypeNameString(res->type));
-+#endif		    		    
- 		*prev = res->next;
- 		if (type & RC_CACHED)
- 		    FlushClientCaches(res->id);
-@@ -731,6 +779,10 @@ FreeClientNeverRetainResources(ClientPtr
- 	    RESTYPE rtype = this->type;
- 	    if (rtype & RC_NEVERRETAIN)
- 	    {
-+#ifdef XSERVER_DTRACE
-+		XSERVER_RESOURCE_FREE(this->id, this->type,
-+			      this->value, TypeNameString(this->type));
-+#endif		    
- 		*prev = this->next;
- 		if (rtype & RC_CACHED)
- 		    FlushClientCaches(this->id);
-@@ -777,6 +829,10 @@ FreeClientResources(ClientPtr client)
-         for (this = *head; this; this = *head)
- 	{
- 	    RESTYPE rtype = this->type;
-+#ifdef XSERVER_DTRACE
-+	    XSERVER_RESOURCE_FREE(this->id, this->type,
-+			  this->value, TypeNameString(this->type));
-+#endif		    
- 	    *head = this->next;
- 	    if (rtype & RC_CACHED)
- 		FlushClientCaches(this->id);
-diff -urp -x '*~' -x '*.orig' include/dix-config.h.in include/dix-config.h.in
---- include/dix-config.h.in	2007-01-29 22:03:18.000000000 -0800
-+++ include/dix-config.h.in	2007-07-30 18:29:34.810329000 -0700
-@@ -440,4 +440,10 @@
- /* Have a monotonic clock from clock_gettime() */
- #undef MONOTONIC_CLOCK
- 
-+/* Define to 1 if the DTrace Xserver provider probes should be built in */
-+#undef XSERVER_DTRACE
-+
-+/* Path to XErrorDB file */
-+#undef XERRORDB_PATH
-+
- #endif /* _DIX_CONFIG_H_ */
-diff -urp -x '*~' -x '*.orig' os/Makefile.am os/Makefile.am
---- os/Makefile.am	2006-11-30 17:40:11.000000000 -0800
-+++ os/Makefile.am	2007-07-30 18:29:34.810652000 -0700
-@@ -50,3 +50,15 @@ libcwrapper_la_CFLAGS = \
- 
- EXTRA_DIST = $(K5AUTH_SOURCES) $(SECURERPC_SOURCES) $(INTERNALMALLOC_SOURCES) \
-      $(XCSECURITY_SOURCES) $(XDMCP_SOURCES) $(STRLCAT_SOURCES)
-+
-+if XSERVER_DTRACE
-+# Generate dtrace object code for probes in libos
-+dtrace-os.o: $(top_srcdir)/dix/Xserver.d $(am_libos_la_OBJECTS)
-+	$(DTRACE) -G -C -o $@ -s $(top_srcdir)/dix/Xserver.d .libs/*.o
-+
-+noinst_PROGRAMS = os.O
-+
-+os.O: dtrace-os.o $(am_libos_la_OBJECTS)
-+	ld -r -o $@ dtrace-os.o .libs/*.o
-+
-+endif
-diff -urp -x '*~' -x '*.orig' os/connection.c os/connection.c
---- os/connection.c	2007-02-17 17:37:56.000000000 -0800
-+++ os/connection.c	2007-07-30 18:29:34.811624000 -0700
-@@ -170,6 +170,12 @@ extern __const__ int _nfiles;
- # include <zone.h>
- #endif
- 
-+#ifdef XSERVER_DTRACE
-+# include <sys/types.h>
-+typedef const char *string;
-+# include "../dix/Xserver-dtrace.h"
-+#endif
-+
- int lastfdesc;			/* maximum file descriptor */
- 
- fd_set WellKnownConnections;	/* Listener mask */
-@@ -618,6 +624,10 @@ AuthAudit (ClientPtr client, Bool letin,
-     else {
- 	client_uid_string[0] = '\0';
-     }
-+
-+#ifdef XSERVER_DTRACE
-+  if (auditTrailLevel > 1) {
-+#endif
-     
-     if (proto_n)
- 	AuditF("client %d %s from %s%s\n  Auth name: %.*s ID: %d\n", 
-@@ -627,6 +637,24 @@ AuthAudit (ClientPtr client, Bool letin,
- 	AuditF("client %d %s from %s%s\n", 
- 	       client->index, letin ? "connected" : "rejected", addr,
- 	       client_uid_string);
-+#ifdef XSERVER_DTRACE
-+  }
-+  if (XSERVER_CLIENT_AUTH_ENABLED())
-+  {
-+      ucred_t *peercred = NULL;
-+      pid_t pid = -1;
-+      zoneid_t zid = -1;
-+      
-+      if (getpeerucred(((OsCommPtr)client->osPrivate)->fd, &peercred) >= 0) {
-+	  pid = ucred_getpid(peercred);
-+	  zid = ucred_getzoneid(peercred);
-+	  ucred_free(peercred);
-+      }
-+    
-+      XSERVER_CLIENT_AUTH(client->index, addr, pid, zid);
-+  }
-+#endif	
-+
- }
- 
- XID
-@@ -693,7 +721,9 @@ ClientAuthorized(ClientPtr client, 
- 	    else
- 	    {
- 		auth_id = (XID) 0;
-+#ifndef XSERVER_DTRACE
- 		if (auditTrailLevel > 1)
-+#endif
- 		    AuthAudit(client, TRUE,
- 			(struct sockaddr *) from, fromlen,
- 			proto_n, auth_proto, auth_id);
-@@ -709,7 +739,11 @@ ClientAuthorized(ClientPtr client, 
- 		return "Client is not authorized to connect to Server";
- 	}
-     }
-+#ifdef XSERVER_DTRACE
-+    else
-+#else
-     else if (auditTrailLevel > 1)
-+#endif
-     {
- 	if (_XSERVTransGetPeerAddr (trans_conn,
- 	    &family, &fromlen, &from) != -1)
-@@ -787,6 +821,9 @@ AllocNewConnection (XtransConnInfo trans
-     ErrorF("AllocNewConnection: client index = %d, socket fd = %d\n",
- 	   client->index, fd);
- #endif
-+#ifdef XSERVER_DTRACE
-+    XSERVER_CLIENT_CONNECT(client->index, fd);
-+#endif	
- 
-     return client;
- }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/faster-devPrivates.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,337 @@
+From b6ab114212c0e4c3346ceb5b207f14c526ab81e7 Mon Sep 17 00:00:00 2001
+From: Eamon Walsh <[email protected]>
+Date: Fri, 12 Sep 2008 19:11:53 -0400
+Subject: [PATCH] Array-index based devPrivates implementation.
+
+Note: DevPrivateKey is now pointer-to-int, which means
+each key now needs to point to some global storage of
+size at least sizeof(int).
+---
+ dix/privates.c     |  209 +++++++++++++++++++++++++++-------------------------
+ include/privates.h |    2 
+ 2 files changed, 109 insertions(+), 102 deletions(-)
+
+diff --git a/dix/privates.c b/dix/privates.c
+index efb3204..ca03317 100644
+--- a/dix/privates.c
++++ b/dix/privates.c
+@@ -40,9 +40,8 @@ #include "colormapst.h"
+ #include "inputstr.h"
+ 
+ struct _Private {
+-    DevPrivateKey      key;
+-    pointer            value;
+-    struct _Private    *next;
++    int state;
++    pointer value;
+ };
+ 
+ typedef struct _PrivateDesc {
+@@ -50,22 +49,36 @@ typedef struct _PrivateDesc {
+     unsigned size;
+     CallbackListPtr initfuncs;
+     CallbackListPtr deletefuncs;
+-    struct _PrivateDesc *next;
+ } PrivateDescRec;
+ 
++#define PRIV_MAX 256
++#define PRIV_STEP 16
++
+ /* list of all allocated privates */
+-static PrivateDescRec *items = NULL;
++static PrivateDescRec items[PRIV_MAX];
++static int nextPriv;
+ 
+-static _X_INLINE PrivateDescRec *
++static PrivateDescRec *
+ findItem(const DevPrivateKey key)
+ {
+-    PrivateDescRec *item = items;
+-    while (item) {
+-	if (item->key == key)
+-	    return item;
+-	item = item->next;
++    if (!*key) {
++	if (nextPriv >= PRIV_MAX)
++	    return NULL;
++
++	items[nextPriv].key = key;
++	*key = nextPriv;
++	nextPriv++;
+     }
+-    return NULL;
++
++    return items + *key;
++}
++
++static _X_INLINE int
++privateExists(PrivateRec **privates, const DevPrivateKey key)
++{
++    return *key && *privates &&
++	(*privates)[0].state > *key &&
++	(*privates)[*key].state;
+ }
+ 
+ /*
+@@ -75,21 +88,10 @@ _X_EXPORT int
+ dixRequestPrivate(const DevPrivateKey key, unsigned size)
+ {
+     PrivateDescRec *item = findItem(key);
+-    if (item) {
+-	if (size > item->size)
+-	    item->size = size;
+-    } else {
+-	item = (PrivateDescRec *)xalloc(sizeof(PrivateDescRec));
+-	if (!item)
+-	    return FALSE;
+-	memset(item, 0, sizeof(PrivateDescRec));
+-
+-	/* add privates descriptor */
+-	item->key = key;
++    if (!item)
++	return FALSE;
++    if (size > item->size)
+ 	item->size = size;
+-	item->next = items;
+-	items = item;
+-    }
+     return TRUE;
+ }
+ 
+@@ -100,25 +102,52 @@ _X_EXPORT pointer *
+ dixAllocatePrivate(PrivateRec **privates, const DevPrivateKey key)
+ {
+     PrivateDescRec *item = findItem(key);
++    PrivateCallbackRec calldata;
+     PrivateRec *ptr;
+-    unsigned size = sizeof(PrivateRec);
+-    
+-    if (item)
+-	size += item->size;
++    pointer value;
++    int oldsize, newsize;
++
++    newsize = (*key / PRIV_STEP + 1) * PRIV_STEP;
+ 
+-    ptr = (PrivateRec *)xcalloc(size, 1);
+-    if (!ptr)
++    /* resize or init privates array */
++    if (!item)
+ 	return NULL;
+-    ptr->key = key;
+-    ptr->value = (size > sizeof(PrivateRec)) ? (ptr + 1) : NULL;
+-    ptr->next = *privates;
+-    *privates = ptr;
+-
+-    /* call any init funcs and return */
+-    if (item) {
+-	PrivateCallbackRec calldata = { key, &ptr->value };
+-	CallCallbacks(&item->initfuncs, &calldata);
++
++    /* initialize privates array if necessary */
++    if (!*privates) {
++	ptr = xcalloc(newsize, sizeof(*ptr));
++	if (!ptr)
++	    return NULL;
++	*privates = ptr;
++	(*privates)[0].state = newsize;
++    }
++
++    oldsize = (*privates)[0].state;
++
++    /* resize privates array if necessary */
++    if (*key >= oldsize) {
++	ptr = xrealloc(*privates, newsize * sizeof(*ptr));
++	if (!ptr)
++	    return NULL;
++	memset(ptr + oldsize, 0, (newsize - oldsize) * sizeof(*ptr));
++	*privates = ptr;
++	(*privates)[0].state = newsize;
++    }
++
++    /* initialize slot */
++    ptr = *privates + *key;
++    ptr->state = 1;
++    if (item->size) {
++	value = xcalloc(item->size, 1);
++	if (!value)
++	    return NULL;
++	ptr->value = value;
+     }
++
++    calldata.key = key;
++    calldata.value = &ptr->value;
++    CallCallbacks(&item->initfuncs, &calldata);
++
+     return &ptr->value;
+ }
+ 
+@@ -128,14 +157,10 @@ dixAllocatePrivate(PrivateRec **privates
+ _X_EXPORT pointer
+ dixLookupPrivate(PrivateRec **privates, const DevPrivateKey key)
+ {
+-    PrivateRec *rec = *privates;
+     pointer *ptr;
+ 
+-    while (rec) {
+-	if (rec->key == key)
+-	    return rec->value;
+-	rec = rec->next;
+-    }
++    if (privateExists(privates, key))
++	return (*privates)[*key].value;
+ 
+     ptr = dixAllocatePrivate(privates, key);
+     return ptr ? *ptr : NULL;
+@@ -147,13 +172,8 @@ dixLookupPrivate(PrivateRec **privates, 
+ _X_EXPORT pointer *
+ dixLookupPrivateAddr(PrivateRec **privates, const DevPrivateKey key)
+ {
+-    PrivateRec *rec = *privates;
+-
+-    while (rec) {
+-	if (rec->key == key)
+-	    return &rec->value;
+-	rec = rec->next;
+-    }
++    if (privateExists(privates, key))
++	return &(*privates)[*key].value;
+ 
+     return dixAllocatePrivate(privates, key);
+ }
+@@ -164,16 +184,10 @@ dixLookupPrivateAddr(PrivateRec **privat
+ _X_EXPORT int
+ dixSetPrivate(PrivateRec **privates, const DevPrivateKey key, pointer val)
+ {
+-    PrivateRec *rec;
+-
+  top:
+-    rec = *privates;
+-    while (rec) {
+-	if (rec->key == key) {
+-	    rec->value = val;
+-	    return TRUE;
+-	}
+-	rec = rec->next;
++    if (privateExists(privates, key)) {
++	(*privates)[*key].value = val;
++	return TRUE;
+     }
+ 
+     if (!dixAllocatePrivate(privates, key))
+@@ -187,27 +201,23 @@ dixSetPrivate(PrivateRec **privates, con
+ _X_EXPORT void
+ dixFreePrivates(PrivateRec *privates)
+ {
+-    PrivateRec *ptr, *next;
+-    PrivateDescRec *item;
++    int i;
+     PrivateCallbackRec calldata;
+ 
+-    /* first pass calls the delete callbacks */
+-    for (ptr = privates; ptr; ptr = ptr->next) {
+-	item = findItem(ptr->key);
+-	if (item) {
+-	    calldata.key = ptr->key;
+-	    calldata.value = &ptr->value;
+-	    CallCallbacks(&item->deletefuncs, &calldata);
+-	}
+-    }
+-	
+-    /* second pass frees the memory */
+-    ptr = privates;
+-    while (ptr) {
+-	next = ptr->next;
+-	xfree(ptr);
+-	ptr = next;
+-    }
++    if (privates)
++	for (i = 1; i < privates->state; i++)
++	    if (privates[i].state) {
++		/* call the delete callbacks */
++		calldata.key = items[i].key;
++		calldata.value = &privates[i].value;
++		CallCallbacks(&items[i].deletefuncs, &calldata);
++
++		/* free pre-allocated memory */
++		if (items[i].size)
++		    xfree(privates[i].value);
++	    }
++
++    xfree(privates);
+ }
+ 
+ /*
+@@ -218,11 +228,9 @@ dixRegisterPrivateInitFunc(const DevPriv
+ 			   CallbackProcPtr callback, pointer data)
+ {
+     PrivateDescRec *item = findItem(key);
+-    if (!item) {
+-	if (!dixRequestPrivate(key, 0))
+-	    return FALSE;
+-	item = findItem(key);
+-    }
++    if (!item)
++	return FALSE;
++
+     return AddCallback(&item->initfuncs, callback, data);
+ }
+ 
+@@ -231,11 +239,9 @@ dixRegisterPrivateDeleteFunc(const DevPr
+ 			     CallbackProcPtr callback, pointer data)
+ {
+     PrivateDescRec *item = findItem(key);
+-    if (!item) {
+-	if (!dixRequestPrivate(key, 0))
+-	    return FALSE;
+-	item = findItem(key);
+-    }
++    if (!item)
++	return FALSE;
++
+     return AddCallback(&item->deletefuncs, callback, data);
+ }
+ 
+@@ -292,16 +298,17 @@ dixLookupPrivateOffset(RESTYPE type)
+ int
+ dixResetPrivates(void)
+ {
+-    PrivateDescRec *next;
+-
+-    /* reset internal structures */
+-    while (items) {
+-	next = items->next;
+-	DeleteCallbackList(&items->initfuncs);
+-	DeleteCallbackList(&items->deletefuncs);
+-	xfree(items);
+-	items = next;
++    int i;
++
++    /* reset private descriptors */
++    for (i = 1; i < nextPriv; i++) {
++	*items[i].key = 0;
++	DeleteCallbackList(&items[i].initfuncs);
++	DeleteCallbackList(&items[i].deletefuncs);
+     }
++    nextPriv = 1;
++
++    /* reset offsets */
+     if (offsets)
+ 	xfree(offsets);
+     offsetsSize = sizeof(offsetDefaults);
+diff --git a/include/privates.h b/include/privates.h
+index 98d893c..e3fa83c 100644
+--- a/include/privates.h
++++ b/include/privates.h
+@@ -19,7 +19,7 @@ #include "resource.h"
+  * STUFF FOR PRIVATES
+  *****************************************************************/
+ 
+-typedef void *DevPrivateKey;
++typedef int *DevPrivateKey;
+ struct _Private;
+ typedef struct _Private PrivateRec;
+ 
+-- 
+1.4.1
+
--- a/open-src/xserver/xorg/fontmod.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/fontmod.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -29,64 +29,17 @@
 Replace "type1" and "bitstream" font modules in xorg.conf files with
 "freetype"
 
-diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86AutoConfig.c hw/xfree86/common/xf86AutoConfig.c
---- hw/xfree86/common/xf86AutoConfig.c	2007-10-09 14:55:31.434564000 -0700
-+++ hw/xfree86/common/xf86AutoConfig.c	2007-10-09 15:09:48.232453000 -0700
-@@ -52,7 +52,6 @@
- 	"\tLoad\t\"dbe\"\n" \
- 	"\tLoad\t\"glx\"\n" \
- 	"\tLoad\t\"freetype\"\n" \
--	"\tLoad\t\"type1\"\n" \
- 	"\tLoad\t\"record\"\n" \
- 	"\tLoad\t\"dri\"\n" \
- 	"\tLoad\t\"IA\"\n" \
 diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Config.c hw/xfree86/common/xf86Config.c
---- hw/xfree86/common/xf86Config.c	2007-10-09 14:36:57.925355000 -0700
-+++ hw/xfree86/common/xf86Config.c	2007-10-09 14:37:20.862848000 -0700
-@@ -290,10 +290,9 @@ xf86ModulelistFromConfig(pointer **optli
- 	ptr = xf86addNewLoadDirective(ptr, "dbe", XF86_LOAD_MODULE, NULL);
- 	ptr = xf86addNewLoadDirective(ptr, "glx", XF86_LOAD_MODULE, NULL);
- 	ptr = xf86addNewLoadDirective(ptr, "freetype", XF86_LOAD_MODULE, NULL);
--	ptr = xf86addNewLoadDirective(ptr, "type1", XF86_LOAD_MODULE, NULL);
- 	ptr = xf86addNewLoadDirective(ptr, "record", XF86_LOAD_MODULE, NULL);
- 	ptr = xf86addNewLoadDirective(ptr, "dri", XF86_LOAD_MODULE, NULL);
--	count = 7;
-+	count = 6;
- 
- 	/* Sun addition - IA extension */
- 	ptr = xf86addNewLoadDirective(ptr, "IA", XF86_LOAD_MODULE, NULL);
-@@ -304,6 +303,34 @@ xf86ModulelistFromConfig(pointer **optli
- 	count++;
-     }
- 
-+    /* Map bitstream and type1 modules to freetype */
-+    if (xf86configptr->conf_modules) {
-+	int freetype_found = 0;
-+	int freetype_needed = 0;
-+	
-+	modp = xf86configptr->conf_modules->mod_load_lst;
-+	while (modp) {
-+	    if ((strcasecmp(modp->load_name, "bitstream") == 0) ||
-+		(strcasecmp(modp->load_name, "type1") == 0)) {
-+		modp->ignore = 1;
-+		count--;
-+		freetype_needed = 1;
-+		xf86MsgVerb(X_INFO, 0,
-+			    "Module \"%s\" is no longer provided "
-+			    " - using \"freetype\" instead\n",
-+			    modp->load_name);
-+	    } else if (strcasecmp(modp->load_name, "freetype") == 0) {
-+		freetype_found = 1;
-+            }
-+	    modp = (XF86LoadPtr) modp->list.next;
-+	}
-+	if ((freetype_found == 0) && (freetype_needed == 1)) {
-+	    xf86addNewLoadDirective(xf86configptr->conf_modules,
-+				    "freetype", XF86_LOAD_MODULE, NULL);
-+	    count++;
-+	}
-+    }
-+
-     /*
-      * allocate the memory and walk the list again to fill in the pointers
-      */
+--- hw/xfree86/common/xf86Config.c	2008-09-24 20:21:42.861097000 -0700
++++ hw/xfree86/common/xf86Config.c	2008-09-24 20:21:55.754653000 -0700
+@@ -254,7 +254,9 @@
+ {
+     int count = 0, i = 0;
+     char **modulearray;
+-    char *ignore[] = { "GLcore", "speedo", "bitmap", "drm", NULL };
++    char *ignore[] = { "GLcore", "speedo", "bitmap", "drm",
++		       "type1", "bitstream",
++		       NULL };
+     pointer *optarray;
+     XF86LoadPtr modp;
+     Bool found;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/glapi-DEBUG.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,27 @@
+From 8d4d0b47a07a298a20ffae9fefe96c8c7ca9dccc Mon Sep 17 00:00:00 2001
+From: Paulo Cesar Pereira de Andrade <[email protected]>
+Date: Thu, 5 Jun 2008 09:19:16 +0930
+Subject: [PATCH] gl: include assert.h if we're compiling with DEBUG.
+
+Signed-off-by: Peter Hutterer <[email protected]>
+---
+ glx/glapi.c |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/glx/glapi.c b/glx/glapi.c
+index c4d101a..94a8043 100644
+--- a/glx/glapi.c
++++ b/glx/glapi.c
+@@ -63,6 +63,9 @@
+ 
+ #include <stdlib.h>
+ #include <string.h>
++#ifdef DEBUG
++#include <assert.h>
++#endif
+ 
+ #include "glapi.h"
+ #include "glapioffsets.h"
+-- 
+1.5.6.5
+
--- a/open-src/xserver/xorg/glx-byteswap.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-
-diff -urp -x Makefile.in GL/glx/indirect_dispatch_swap.c GL/glx/indirect_dispatch_swap.c
---- GL/glx/indirect_dispatch_swap.c	2006-10-13 15:52:33.000000000 -0700
-+++ GL/glx/indirect_dispatch_swap.c	2006-11-10 19:25:30.378975000 -0800
-@@ -35,6 +35,18 @@
- #define bswap_16 __swap16
- #define bswap_32 __swap32
- #define bswap_64 __swap64
-+#elif defined(sun)
-+#define	bswap_16(value)  \
-+ 	((((value) & 0xff) << 8) | ((value) >> 8))
-+
-+#define	bswap_32(value)	\
-+ 	(((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
-+ 	(uint32_t)bswap_16((uint16_t)((value) >> 16)))
-+ 
-+#define	bswap_64(value)	\
-+ 	(((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
-+ 	    << 32) | \
-+ 	(uint64_t)bswap_32((uint32_t)((value) >> 32)))
- #else
- #include <sys/endian.h>
- #define bswap_16 bswap16
-diff -urp -x Makefile.in GL/glx/indirect_program.c GL/glx/indirect_program.c
---- GL/glx/indirect_program.c	2006-10-11 15:42:19.000000000 -0700
-+++ GL/glx/indirect_program.c	2006-11-10 19:24:45.323007000 -0800
-@@ -53,6 +53,18 @@
- #define bswap_16 __swap16
- #define bswap_32 __swap32
- #define bswap_64 __swap64
-+#elif defined(sun)
-+#define	bswap_16(value)  \
-+ 	((((value) & 0xff) << 8) | ((value) >> 8))
-+
-+#define	bswap_32(value)	\
-+ 	(((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
-+ 	(uint32_t)bswap_16((uint16_t)((value) >> 16)))
-+ 
-+#define	bswap_64(value)	\
-+ 	(((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
-+ 	    << 32) | \
-+ 	(uint64_t)bswap_32((uint32_t)((value) >> 32)))
- #else
- #include <sys/endian.h>
- #define bswap_16 bswap16
-diff -urp -x Makefile.in GL/glx/indirect_texture_compression.c GL/glx/indirect_texture_compression.c
---- GL/glx/indirect_texture_compression.c	2006-10-11 15:42:19.000000000 -0700
-+++ GL/glx/indirect_texture_compression.c	2006-11-10 19:25:39.197558000 -0800
-@@ -46,6 +46,18 @@
- #define bswap_16 __swap16
- #define bswap_32 __swap32
- #define bswap_64 __swap64
-+#elif defined(sun)
-+#define	bswap_16(value)  \
-+ 	((((value) & 0xff) << 8) | ((value) >> 8))
-+
-+#define	bswap_32(value)	\
-+ 	(((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
-+ 	(uint32_t)bswap_16((uint16_t)((value) >> 16)))
-+ 
-+#define	bswap_64(value)	\
-+ 	(((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
-+ 	    << 32) | \
-+ 	(uint64_t)bswap_32((uint32_t)((value) >> 32)))
- #else
- #include <sys/endian.h>
- #define bswap_16 bswap16
-diff -urp -x Makefile.in GL/glx/indirect_util.c GL/glx/indirect_util.c
---- GL/glx/indirect_util.c	2006-10-11 15:42:19.000000000 -0700
-+++ GL/glx/indirect_util.c	2006-11-10 19:26:04.183304000 -0800
-@@ -35,6 +35,18 @@
- #define bswap_16 __swap16
- #define bswap_32 __swap32
- #define bswap_64 __swap64
-+#elif defined(sun)
-+#define	bswap_16(value)  \
-+ 	((((value) & 0xff) << 8) | ((value) >> 8))
-+
-+#define	bswap_32(value)	\
-+ 	(((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
-+ 	(uint32_t)bswap_16((uint16_t)((value) >> 16)))
-+ 
-+#define	bswap_64(value)	\
-+ 	(((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
-+ 	    << 32) | \
-+ 	(uint64_t)bswap_32((uint32_t)((value) >> 32)))
- #else
- #include <sys/endian.h>
- #define bswap_16 bswap16
-diff -urp -x Makefile.in GL/glx/swap_interval.c GL/glx/swap_interval.c
---- GL/glx/swap_interval.c	2006-10-11 15:42:19.000000000 -0700
-+++ GL/glx/swap_interval.c	2006-11-10 19:26:43.705203000 -0800
-@@ -47,6 +47,18 @@
- #define bswap_16 __swap16
- #define bswap_32 __swap32
- #define bswap_64 __swap64
-+#elif defined(sun)
-+#define	bswap_16(value)  \
-+ 	((((value) & 0xff) << 8) | ((value) >> 8))
-+
-+#define	bswap_32(value)	\
-+ 	(((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
-+ 	(uint32_t)bswap_16((uint16_t)((value) >> 16)))
-+ 
-+#define	bswap_64(value)	\
-+ 	(((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
-+ 	    << 32) | \
-+ 	(uint64_t)bswap_32((uint32_t)((value) >> 32)))
- #else
- #include <sys/endian.h>
- #define bswap_16 bswap16
--- a/open-src/xserver/xorg/glx-impure.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/glx-impure.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,11 +1,12 @@
---- hw/xfree86/dixmods/Makefile.am	2006-10-13 15:52:55.000000000 -0700
-+++ hw/xfree86/dixmods/Makefile.am	2006-11-13 17:51:21.657883000 -0800
-@@ -66,7 +66,7 @@
- libfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c
- libfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS)
+diff -urp -x '*~' -x '*.orig' hw/xfree86/dixmods/Makefile.am hw/xfree86/dixmods/Makefile.am
+--- hw/xfree86/dixmods/Makefile.am	2008-09-24 20:22:24.347811000 -0700
++++ hw/xfree86/dixmods/Makefile.am	2008-09-24 20:22:41.701679000 -0700
+@@ -79,7 +79,7 @@ libwfb_la_LIBADD = $(top_builddir)/fb/li
+ libwfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
+ libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
  
 -libglx_la_LDFLAGS = -avoid-version
 +libglx_la_LDFLAGS = -avoid-version -mimpure-text
  if AIGLX
- GLXDRI_LIBRARY = $(top_builddir)/GL/glx/libglxdri.la
+ GLXDRI_LIBRARY = $(top_builddir)/glx/libglxdri.la
  endif
--- a/open-src/xserver/xorg/glx-textwarn.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
---- GL/glx/Makefile.am	2006-10-11 15:42:19.000000000 -0700
-+++ GL/glx/Makefile.am	2006-11-13 13:23:38.013703000 -0800
-@@ -80,3 +80,5 @@
-         swap_interval.c \
-         unpack.h \
-         xfont.c
-+
-+libglx_la_LDFLAGS = -z textwarn
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/hal-verbose-msg.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,27 @@
+From b4ca9dc2393ace2415163094b916f0d17ecba9ee Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Wed, 5 Nov 2008 21:58:04 -0800
+Subject: [PATCH] When HAL returns a NULL property, print "(null)" instead of a NULL pointer
+
+They've promised to fix Solaris printf soon to check for NULL pointers
+instead of segfaulting, but that won't help people on existing releases.
+---
+ config/hal.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/config/hal.c b/config/hal.c
+index c29a573..8dfbb07 100644
+--- a/config/hal.c
++++ b/config/hal.c
+@@ -120,7 +120,7 @@ get_prop_string(LibHalContext *hal_ctx, 
+     char *prop, *ret;
+ 
+     prop = libhal_device_get_property_string(hal_ctx, udi, name, NULL);
+-    LogMessageVerb(X_INFO, 10, "config/hal: getting %s on %s returned %s\n", name, udi, prop);
++    LogMessageVerb(X_INFO, 10, "config/hal: getting %s on %s returned %s\n", name, udi, prop ? prop : "(null)");
+     if (prop) {
+         ret = xstrdup(prop);
+         libhal_free_string(prop);
+-- 
+1.4.1
+
--- a/open-src/xserver/xorg/kbd-driver.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-# 
-
-Preserve compatibility with old xorg.conf files that have "keyboard" or
-"Keyboard" drivers listed.   (Sun bug 6560332)
-
---- hw/xfree86/common/xf86Init.c	2007-05-18 18:26:06.499884000 -0700
-+++ hw/xfree86/common/xf86Init.c	2007-05-22 16:13:04.691806000 -0700
-@@ -1033,6 +1033,14 @@
- 
- 		continue;
- 	    }
-+#else
-+	    /* Replace obsolete keyboard driver with kbd */
-+    	    if (!xf86NameCmp(pDev->driver, "keyboard")) {
-+		xf86MsgVerb(X_WARNING, 0, "*** WARNING the legacy keyboard driver \"%s\" is deprecated\n", pDev->driver);
-+		xf86MsgVerb(X_WARNING, 0, "*** Using the new \"kbd\" driver for \"%s\".\n",
-+			pDev->identifier);
-+		strcpy(pDev->driver, "kbd");
-+	    }
- #endif
- 
- 	    if ((pDrv = MatchInput(pDev)) == NULL) {
-@@ -1953,6 +1961,11 @@
- 	if (name == NULL || *name == '\0')
- 	    continue;
- 
-+	/* Replace obsolete keyboard driver with kbd */
-+	if (!xf86NameCmp(name, "keyboard")) {
-+	    strcpy(name, "kbd");
-+	}
-+	
- 	if (optlist)
- 	    opt = optlist[i];
- 	else
--- a/open-src/xserver/xorg/kbd_mode.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-From 50382652afc13021f041c42ae6e8893643ea2bfa Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <[email protected]>
-Date: Tue, 12 Aug 2008 14:53:14 -0700
-Subject: [PATCH] Fix --disable/--enable-kbd_mode configure flag
----
- configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 6b3b1ee..efef454 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2056,7 +2056,7 @@ AM_CONDITIONAL(USE_CURSES, [test x$CURSE
- 
- AC_ARG_ENABLE(kbd_mode, AS_HELP_STRING([--enable-kbd_mode],
- 	[Build kbd_mode utility (default: auto)]),
--	[BUILD_KBD_MODE=$enable_val], [BUILD_KBD_MODE="auto"])
-+	[BUILD_KBD_MODE=$enableval], [BUILD_KBD_MODE="auto"])
- if test x$BUILD_KBD_MODE != xno ; then
- 	case $host_os in
- 	  *bsd*)
--- 
-1.4.1
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/kdsetmode.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,53 @@
+From f094c8bae6188f8d6ba0913dcf6a657363948813 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Mon, 24 Nov 2008 14:58:43 -0800
+Subject: [PATCH] Solaris: Make KDSETMODE failure non fatal, and retry it on interrupts
+
+---
+ hw/xfree86/os-support/solaris/sun_init.c |   14 ++++++++++----
+ 1 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/hw/xfree86/os-support/solaris/sun_init.c b/hw/xfree86/os-support/solaris/sun_init.c
+index b79814d..795b0c1 100644
+--- a/hw/xfree86/os-support/solaris/sun_init.c
++++ b/hw/xfree86/os-support/solaris/sun_init.c
+@@ -49,8 +49,9 @@ static char fb_dev[PATH_MAX] = "/dev/console";
+ void
+ xf86OpenConsole(void)
+ {
++    int i;
+ #ifdef HAS_USL_VTS
+-    int fd, i;
++    int fd;
+     struct vt_mode VT;
+     struct vt_stat vtinfo;
+     int FreeVTslot;
+@@ -173,9 +174,14 @@ xf86OpenConsole(void)
+ 	if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0)
+ 	    FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed\n");
+ #endif
++
+ #ifdef KDSETMODE
+-	if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0)
+-	    FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed\n");
++	SYSCALL(i = ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS));
++	if (i < 0) {
++	    xf86Msg(X_WARNING,
++		    "xf86OpenConsole: KDSETMODE KD_GRAPHICS failed on %s (%s)\n",
++		    fb_dev, strerror(errno));
++	}
+ #endif
+     }
+     else /* serverGeneration != 1 */
+@@ -257,7 +263,7 @@ xf86CloseConsole(void)
+ 
+ #ifdef KDSETMODE
+     /* Reset the display back to text mode */
+-    ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT);
++    SYSCALL(ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT));
+ #endif
+ 
+ #ifdef HAS_USL_VTS
+-- 
+1.5.6.5
+
--- a/open-src/xserver/xorg/keep-aperture-open.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-
-6205507 - Xorg errors on ATI Radeon: xf86MapVidMem: failed to open /dev/xsvc (Not owner)
-
-
---- hw/xfree86/os-support/solaris/sun_vid.c	2006-10-11 13:46:15.000000000 -0700
-+++ hw/xfree86/os-support/sunos/sun_vid.c	2005-11-03 14:13:07.732827000 -0800
-@@ -39,6 +40,11 @@
- #define MAP_FAILED ((void *)-1)
- #endif
- 
-+#ifdef SUNSOFT
-+static int apertureDevFD_ro = -1;
-+static int apertureDevFD_rw = -1;
-+#endif
-+
- /***************************************************************************/
- /* Video Memory Mapping section 					   */
- /***************************************************************************/
-@@ -71,7 +77,24 @@
- 		return FALSE;
- 	    }
- 	}
-+#ifdef SUNSOFT
-+	apertureDevFD_rw = mmapFd;
-+	if ((apertureDevFD_ro = open(apertureDevName, O_RDONLY)) < 0)
-+	{
-+	  xf86MsgVerb(X_WARNING, 0,
-+		      "xf86LinearVidMem: failed to open %s (%s)\n",
-+		      apertureDevName, strerror(errno));
-+	  xf86MsgVerb(X_WARNING, 0,
-+		      "xf86LinearVidMem: either /dev/fbs/aperture or /dev/xsvc"
-+		      " device driver required\n");
-+	  xf86MsgVerb(X_WARNING, 0,
-+		      "xf86LinearVidMem: linear memory access disabled\n");
-+	  apertureDevName = NULL;
-+	  return FALSE;
-+	}
-+#else
- 	close(mmapFd);
-+#endif
- 	return TRUE;
- }
- 
-@@ -119,8 +142,11 @@
- 
- 		strcpy(vtname, apertureDevName);
- 	}
--
-+#ifdef SUNSOFT
-+	fd = dup((Flags & VIDMEM_READONLY) ? apertureDevFD_ro : apertureDevFD_rw);
-+#else
- 	fd = open(vtname, (Flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
-+#endif
- 	if (fd < 0)
- 		FatalError("xf86MapVidMem: failed to open %s (%s)\n",
- 			   vtname, strerror(errno));
--- a/open-src/xserver/xorg/lg3d.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1033 +0,0 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-
-diff -urp -x '*~' -x '*.orig' Xext/Makefile.am Xext/Makefile.am
---- Xext/Makefile.am	2007-09-20 14:28:19.261551000 -0700
-+++ Xext/Makefile.am	2007-09-20 14:28:43.819660000 -0700
-@@ -153,6 +153,12 @@ endif
- TSOL_SRCS = tsolCompat.c
- BUILTIN_SRCS += $(TSOL_SRCS)
- 
-+# Project Looking Glass Extension
-+LGE_SRCS = lge.c
-+if LGE
-+BUILTIN_SRCS += $(LGE_SRCS)
-+endif
-+
- # Now take all of the above, mix well, bake for 10 minutes and get libXext*.la
- 
- libXext_la_SOURCES =		$(BUILTIN_SRCS) $(MODULE_SRCS)
-@@ -182,5 +188,6 @@ EXTRA_DIST = \
- 	$(EXTRA_MULTIBUFFER_SRCS) \
- 	$(FONTCACHE_SRCS) \
- 	$(BIGFONT_SRCS) \
--	$(DPMS_SRCS)
-+	$(DPMS_SRCS) \
-+	$(LGE_SRCS) 
- 
-diff -urp -x '*~' -x '*.orig' configure.ac configure.ac
---- configure.ac	2007-09-20 14:28:19.766564000 -0700
-+++ configure.ac	2007-09-20 14:28:43.826445000 -0700
-@@ -444,6 +444,7 @@ AC_ARG_ENABLE(appgroup,       AS_HELP_ST
- AC_ARG_ENABLE(xcalibrate,     AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
- AC_ARG_ENABLE(tslib,          AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no])
- AC_ARG_ENABLE(xevie,          AS_HELP_STRING([--disable-xevie], [Build XEvIE extension (default: enabled)]), [XEVIE=$enableval], [XEVIE=yes])
-+AC_ARG_ENABLE(lge,            AS_HELP_STRING([--disable-lge], [Build Project Looking Glass extension (default: enabled)]), [LGE=$enableval], [LGE=yes])
- AC_ARG_ENABLE(cup,            AS_HELP_STRING([--disable-cup], [Build TOG-CUP extension (default: enabled)]), [CUP=$enableval], [CUP=yes])
- AC_ARG_ENABLE(evi,            AS_HELP_STRING([--disable-evi], [Build Extended-Visual-Information extension (default: enabled)]), [EVI=$enableval], [EVI=yes])
- AC_ARG_ENABLE(multibuffer,    AS_HELP_STRING([--enable-multibuffer], [Build Multibuffer extension (default: disabled)]), [MULTIBUFFER=$enableval], [MULTIBUFFER=no])
-@@ -674,6 +675,12 @@ if test "x$XEVIE" = xyes; then
- 	REQUIRED_MODULES="$REQUIRED_MODULES evieproto"
- fi
- 
-+AM_CONDITIONAL(LGE, [test "x$LGE" = xyes])
-+if test "x$LGE" = xyes; then
-+	AC_DEFINE(LGE, 1, [Build Project Looking Glass extension])
-+	REQUIRED_MODULES="$REQUIRED_MODULES lg3dproto"
-+fi
-+
- AM_CONDITIONAL(APPGROUP, [test "x$APPGROUP" = xyes])
- if test "x$APPGROUP" = xyes; then
- 	if test "x$XACE" != xyes || test "x$XCSECURITY" != xyes; then
-@@ -897,7 +904,7 @@ CORE_INCS='-I$(top_srcdir)/include -I$(t
- PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
- PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
- 
--XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS}"
-+XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS} -DLG3D"
- LIBS="${LIBS} -lproject"
- XSERVER_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS}"
- AC_SUBST([SYS_LIBS])
-diff -urp -x '*~' -x '*.orig' dix/Makefile.am dix/Makefile.am
---- dix/Makefile.am	2007-09-20 14:28:18.529208000 -0700
-+++ dix/Makefile.am	2007-09-20 14:28:43.826833000 -0700
-@@ -30,7 +30,8 @@ libdix_la_SOURCES = 	\
- 	swapreq.c	\
- 	tables.c	\
- 	window.c	\
--	strcasecmp.c
-+	strcasecmp.c    \
-+        xytosubwin.c
- 
- libxpstubs_la_SOURCES =	\
- 	xpstubs.c
-diff -urp -x '*~' -x '*.orig' dix/events.c dix/events.c
---- dix/events.c	2007-09-20 14:28:19.287006000 -0700
-+++ dix/events.c	2007-09-20 14:28:43.829681000 -0700
-@@ -167,6 +167,23 @@ xEvent *xeviexE;
- #include "dixgrabs.h"
- #include "dispatch.h"
- 
-+#ifdef LG3D
-+
-+#include <X11/extensions/damagewire.h>
-+#include "../Xext/lgeint.h"
-+
-+extern void
-+fillSpriteTraceFromRootToWin (WindowPtr pWin);
-+
-+extern WindowPtr XYToSubWindow (WindowPtr pWin, int x, int y, 
-+				int *xWinRel, int *yWinRel);
-+
-+Bool PointInBorderSize(WindowPtr pWin, int x, int y);
-+
-+extern Window GetLgPrwFromSprite(void);
-+
-+#endif /* LG3D */
-+
- #define EXTENSION_EVENT_BASE  64
- 
- #define NoSuchEvent 0x80000000	/* so doesn't match NoEventMask */
-@@ -230,10 +247,18 @@ static struct {
-  * windows between the root and the current pointer window each time a button
-  * or key goes down. The grabs on each of those windows must be checked.
-  */
-+#ifdef LG3D
-+WindowPtr *spriteTrace = (WindowPtr *)NULL;
-+WindowPtr lgeCurrentRootWin;
-+#define ROOT spriteTrace[0]
-+int spriteTraceSize = 0;
-+int spriteTraceGood;
-+#else
- static WindowPtr *spriteTrace = (WindowPtr *)NULL;
- #define ROOT spriteTrace[0]
- static int spriteTraceSize = 0;
- static int spriteTraceGood;
-+#endif /* LG3D */
- 
- static  struct {
-     CursorPtr	current;
-@@ -255,6 +280,15 @@ static  struct {
- #endif
- } sprite;			/* info about the cursor sprite */
- 
-+#ifdef LG3D
-+typedef struct virtual_sprite {
-+    WindowPtr win;              /* The top-level window the sprite is in (or PRW) */
-+    HotSpot   hot;		/* Sprite location relative to win */
-+} VirtualSprite;
-+
-+static VirtualSprite virtualSprite = { NULL, {0, 0} };
-+#endif /* LG3D */
-+
- #ifdef XEVIE
- _X_EXPORT WindowPtr xeviewin;
- _X_EXPORT HotSpot xeviehot;
-@@ -1160,7 +1194,28 @@ ComputeFreezes()
- 	count = replayDev->sync.evcount;
- 	syncEvents.replayDev = (DeviceIntPtr)NULL;
- 
-+#ifdef LG3D	
-+	{ WindowPtr pWin = (WindowPtr) LookupIDByType(XE_KBPTR.event, RT_WINDOW);
-+	  if (lgeDisplayServerIsAlive && GetLgePRWForRoot(pWin)) {
-+	      if (sprite.hotPhys.pScreen != pWin->drawable.pScreen) {
-+		  w = XYToSubWindow(pWin, 
-+				    xE->u.keyButtonPointer.eventX, xE->u.keyButtonPointer.eventY,
-+				    &virtualSprite.hot.x, &virtualSprite.hot.y);
-+		  if (IsWinLgePRWOne(w->drawable.id)) {
-+		      ErrorF("ComputeFreezes %d %d seq %d\n", (int)xE->u.keyButtonPointer.event,
-+			     (int)w->drawable.id, xE->u.u.sequenceNumber);
-+		  }
-+	      } else {
-+    	    	w = XYToWindow( XE_KBPTR.rootX, XE_KBPTR.rootY);	
-+	      }
-+	  } else {
-+	      w = XYToWindow( XE_KBPTR.rootX, XE_KBPTR.rootY);	
-+	  }
-+	}
-+#else
-         w = XYToWindow( XE_KBPTR.rootX, XE_KBPTR.rootY);
-+#endif /* LG3D */
-+
- 	for (i = 0; i < spriteTraceGood; i++)
- 	{
- 	    if (syncEvents.replayWin == spriteTrace[i])
-@@ -1770,6 +1825,151 @@ MaybeDeliverEventsToClient(register Wind
-     return 2;
- }
- 
-+#ifdef LG3D
-+
-+/*
-+** Returns true if the event type is one which was generated
-+** by an input device. These are the only types of events
-+** which been sent to the Display Server so they are the only
-+** types of events which have the event field already set.
-+**
-+** TODO: this macro does not yet support XINPUT devices.
-+*/
-+
-+#define EVENT_IS_DEVICE_EVENT(e) \
-+    ((e)->u.u.type == KeyPress      || \
-+     (e)->u.u.type == KeyRelease    || \
-+     (e)->u.u.type == ButtonPress   || \
-+     (e)->u.u.type == ButtonRelease || \
-+     (e)->u.u.type == MotionNotify)
-+
-+static void
-+lgeFixUpEventFromPRW(
-+    xEvent *xE,
-+    WindowPtr pWin,
-+    Window child,
-+    Bool calcChild)
-+{
-+    XE_KBPTR.root = ROOT->drawable.id;
-+
-+    /* 
-+    ** If the non-3D event is going to the DS (e.g. because 
-+    ** of a grab) make the the coordinates relative to the PRW 
-+    ** (that is, screen absolute),
-+    */
-+
-+    if (!IsWinLgePRWOne(XE_KBPTR.event)) {
-+	WindowPtr pOldWin = (WindowPtr) LookupIDByType(XE_KBPTR.event, RT_WINDOW);
-+	if (pOldWin != NULL) {
-+	    XE_KBPTR.eventX = XE_KBPTR.rootX;
-+	    XE_KBPTR.eventY = XE_KBPTR.rootY;
-+	}
-+    }
-+
-+    XE_KBPTR.event = pWin->drawable.id;
-+
-+    if (sprite.hot.pScreen != pWin->drawable.pScreen)
-+    {
-+	XE_KBPTR.sameScreen = xFalse;
-+        /*
-+	XE_KBPTR.child = None;
-+	XE_KBPTR.eventX = 0;
-+	XE_KBPTR.eventY = 0;
-+	*/
-+    } else {
-+	XE_KBPTR.sameScreen = xTrue;
-+    }
-+}
-+
-+static void
-+lgeFixUpEventFromXWindow(
-+    xEvent *xE,
-+    WindowPtr pWin,
-+    Window child,
-+    Bool calcChild)
-+{
-+    Window eventWindowOld = INVALID;
-+
-+    if (calcChild)
-+    {
-+        WindowPtr w=spriteTrace[spriteTraceGood-1];
-+	/* If the search ends up past the root should the child field be 
-+	   set to none or should the value in the argument be passed 
-+	   through. It probably doesn't matter since everyone calls 
-+	   this function with child == None anyway. */
-+
-+        while (w) 
-+        {
-+            /* If the source window is same as event window, child should be
-+	       none.  Don't bother going all all the way back to the root. */
-+
-+ 	    if (w == pWin)
-+	    { 
-+   		child = None;
-+ 		break;
-+	    }
-+	    
-+	    if (w->parent == pWin)
-+	    {
-+		child = w->drawable.id;
-+		break;
-+            }
-+ 	    w = w->parent;
-+        } 	    
-+    }
-+
-+    XE_KBPTR.root = WindowTable[sprite.hotPhys.pScreen->myNum]->drawable.id;    
-+    eventWindowOld = XE_KBPTR.event;
-+    XE_KBPTR.event = pWin->drawable.id;
-+
-+    XE_KBPTR.sameScreen = xTrue;
-+    if (sprite.hot.pScreen != pWin->drawable.pScreen)
-+    {
-+	XE_KBPTR.sameScreen = xFalse;
-+	/*
-+	XE_KBPTR.child = None;
-+	XE_KBPTR.eventX = 0;
-+	XE_KBPTR.eventY = 0;
-+	*/
-+	/* TODO: Amir commented this out. Does we really want to not return? */
-+	return;
-+    }
-+
-+    XE_KBPTR.child = child;
-+
-+    /* 
-+    ** The only events needing fixup at this point are mouse events
-+    ** where the event window has been changed.
-+    */
-+    if ((xE->u.u.type == ButtonPress   ||
-+	 xE->u.u.type == ButtonRelease  ||
-+	 xE->u.u.type == MotionNotify)  &&
-+	eventWindowOld != XE_KBPTR.event) {
-+
-+	/* TODO: it would be good to avoid a resource lookup here. Some sort of 
-+	   caching might optimize this */
-+	WindowPtr pOuterWin = (WindowPtr) LookupIDByType(eventWindowOld, RT_WINDOW);
-+	if (pOuterWin == NULL) {
-+	    /*
-+	    ** This can happen if the window has died since the pick on the window
-+	    ** occurred. So we don't need to be verbose about it.
-+	    ErrorF("Error: FixupEventFromWindow: outer window %d, not found. No XY fix up occuring.\n",
-+	           eventWindowOld);
-+	    */
-+	} else {
-+	    /* 
-+	    ** Make the event coords relative to the destination window
-+	    ** instead of relative to the outer window.
-+	    */
-+	    XE_KBPTR.eventX -= pWin->drawable.x - pOuterWin->drawable.x;
-+	    XE_KBPTR.eventY -= pWin->drawable.y - pOuterWin->drawable.y;
-+	    /*ErrorF("new eventxy = %d, %d", XE_KBPTR.eventX, XE_KBPTR.eventY);*/
-+	}		    
-+    }
-+}
-+
-+#endif /* LG3D */
-+
- static void
- FixUpEventFromWindow(
-     xEvent *xE,
-@@ -1777,6 +1977,17 @@ FixUpEventFromWindow(
-     Window child,
-     Bool calcChild)
- {
-+#ifdef LG3D
-+    if (lgeDisplayServerIsAlive && GetLgePRWForRoot(pWin)) {
-+	if (EVENT_IS_DEVICE_EVENT(xE) && IsWinLgePRWOne(pWin->drawable.id)) {
-+	    lgeFixUpEventFromPRW(xE, pWin, child, calcChild);
-+	} else {
-+	    lgeFixUpEventFromXWindow(xE, pWin, child, calcChild);
-+	}
-+	return;
-+    }
-+#endif /* LG3D */
-+
-     if (calcChild)
-     {
-         WindowPtr w=spriteTrace[spriteTraceGood-1];
-@@ -1824,6 +2035,163 @@ FixUpEventFromWindow(
-     }
- }
- 
-+#ifdef LG3D
-+
-+/* 
-+** Fix LG3D bug 293.
-+** This is similar to CheckMotion, but for button events 
-+*/
-+
-+static WindowPtr
-+lg3dDetermineButtonDestWindow (xEvent *xE, WindowPtr spriteWin)
-+{
-+   WindowPtr pEventWin;
-+   WindowPtr pDestWin;
-+   int       xDummy, yDummy;
-+
-+   if (!lgeDisplayServerIsAlive) {
-+       /* Backwards compatibility: the LG DS isn't running */
-+       return spriteWin;
-+   } 
-+
-+   if (IsWinLgePRWOne(XE_KBPTR.event)) {
-+       /* This is a 3D event. Always send these to the PRW */
-+       return GetLgePRWWinFor(XE_KBPTR.event);
-+   }
-+
-+   /* 
-+   ** At this point, we know that it is a 2D native window event.
-+   ** Determine the appropriate subwindow to which the event should be sent.
-+   */
-+   pEventWin = (WindowPtr) LookupIDByType(XE_KBPTR.event, RT_WINDOW); 
-+   if (pEventWin == NULL) {
-+       /* 
-+       ** This may happen if the top-level destination window has been destroyed
-+       ** since the pick was performed. So just make sure that the event is discarded.
-+       */
-+       return NULL;
-+   }
-+
-+   pDestWin = XYToSubWindow(pEventWin, XE_KBPTR.eventX, XE_KBPTR.eventY,
-+			    &xDummy, &yDummy);
-+
-+   return pDestWin;
-+}
-+
-+static int
-+DeliverDeviceEventsXorg(register WindowPtr pWin, register xEvent *xE, GrabPtr grab, 
-+			register WindowPtr stopAt, DeviceIntPtr dev, int count)
-+{
-+    Window child = None;
-+    int type = xE->u.u.type;
-+    Mask filter = filters[type];
-+    int deliveries = 0;
-+#ifdef LG3D
-+    WindowPtr tmpWin;
-+#endif /* LG3D */
-+
-+    if (type & EXTENSION_EVENT_BASE)
-+    {
-+	register OtherInputMasks *inputMasks;
-+	int mskidx = dev->id;
-+
-+	inputMasks = wOtherInputMasks(pWin);
-+	if (inputMasks && !(filter & inputMasks->deliverableEvents[mskidx]))
-+	    return 0;
-+	while (pWin)
-+	{
-+	    if (inputMasks && (inputMasks->inputEvents[mskidx] & filter))
-+	    {
-+		FixUpEventFromWindow(xE, pWin, child, FALSE);
-+		deliveries = DeliverEventsToWindow(pWin, xE, count, filter,
-+						   grab, mskidx);
-+		if (deliveries > 0)
-+		    return deliveries;
-+	    }
-+#ifdef LG3D
-+	    tmpWin = (pWin->parent) ? pWin->parent : pWin;
-+#endif /* LG3D */
-+	    if ((deliveries < 0) ||
-+		(pWin == stopAt) ||
-+#ifdef LG3D
-+		/*
-+		** Stop propogating when the parent of the window is the PRW.
-+		** This prevents events that are not caught by any X11 window from
-+		** being sent back to the the Display Server, because the DS can
-+		** misinterpret these.
-+		** TODO: we need to decide if a server change is the best way to 
-+		** deal with this problem, or whether the DS or WM can do something 
-+		** about it.
-+		*/
-+		(lgeDisplayServerIsAlive && (pWin->parent)
-+		&& pWin->parent->drawable.id == IsWinLgePRWOne(tmpWin->drawable.id)) ||
-+#endif /* LG3D */
-+		(inputMasks &&
-+		 (filter & inputMasks->dontPropagateMask[mskidx])))
-+		return 0;
-+	    child = pWin->drawable.id;
-+	    pWin = pWin->parent;
-+	    if (pWin)
-+		inputMasks = wOtherInputMasks(pWin);
-+	}
-+    }
-+    else
-+    {
-+	if (!(filter & pWin->deliverableEvents))
-+	    return 0;
-+	while (pWin)
-+	{
-+	    if ((wOtherEventMasks(pWin)|pWin->eventMask) & filter)
-+	    {
-+		FixUpEventFromWindow(xE, pWin, child, FALSE);
-+		deliveries = DeliverEventsToWindow(pWin, xE, count, filter,
-+						   grab, 0);
-+		if (deliveries > 0)
-+		    return deliveries;
-+	    }
-+#ifdef LG3D
-+	    tmpWin = (pWin->parent) ? pWin->parent : pWin;
-+#endif /* LG3D */
-+	    if ((deliveries < 0) ||
-+		(pWin == stopAt) ||
-+#ifdef LG3D
-+		/* See comment above */		
-+		(lgeDisplayServerIsAlive 		
-+		&& pWin->parent->drawable.id == IsWinLgePRWOne(tmpWin->drawable.id)) ||
-+#endif /* LG3D */
-+		(filter & wDontPropagateMask(pWin)))
-+		return 0;
-+	    child = pWin->drawable.id;
-+	    pWin = pWin->parent;
-+	}
-+    }
-+    return 0;
-+}
-+
-+int
-+DeliverDeviceEvents (WindowPtr pSpriteWin, xEvent *xE, GrabPtr grab, 
-+		     WindowPtr stopAt, DeviceIntPtr dev, int count)
-+{
-+    int ret;
-+
-+    /* 
-+    ** Fix LG3D bug 293: make sure that we send button events for
-+    ** 2D to a subwindow of the top-level window that the DS Picker
-+    ** has chosen.
-+    */
-+    if (xE->u.u.type == ButtonPress || xE->u.u.type == ButtonRelease) {
-+	WindowPtr pDestWin = lg3dDetermineButtonDestWindow(xE, pSpriteWin);
-+	if (pDestWin == NULL) return 0;
-+	ret = DeliverDeviceEventsXorg(pDestWin, xE, grab, stopAt, dev, count);
-+    } else {
-+	ret = DeliverDeviceEventsXorg(pSpriteWin, xE, grab, stopAt, dev, count);
-+    }
-+
-+    return ret;
-+}
-+
-+#else
-+
- int
- DeliverDeviceEvents(register WindowPtr pWin, register xEvent *xE, GrabPtr grab, 
-                     register WindowPtr stopAt, DeviceIntPtr dev, int count)
-@@ -1887,6 +2255,8 @@ DeliverDeviceEvents(register WindowPtr p
-     return 0;
- }
- 
-+#endif /* LG3D */
-+
- /* not useful for events that propagate up the tree or extension events */
- _X_EXPORT int
- DeliverEvents(register WindowPtr pWin, register xEvent *xE, int count, 
-@@ -1927,7 +2297,11 @@ DeliverEvents(register WindowPtr pWin, r
- }
- 
- 
-+#ifdef LG3D
-+Bool 
-+#else
- static Bool 
-+#endif /* LG3D */
- PointInBorderSize(WindowPtr pWin, int x, int y)
- {
-     BoxRec box;
-@@ -2052,10 +2426,58 @@ CheckMotion(xEvent *xE)
- 	XE_KBPTR.rootY = sprite.hot.y;
-     }
- 
-+#ifdef LG3D
-+   if (lgeDisplayServerIsAlive
-+       && (GetLgPrwFromSprite() != INVALID)) {
-+
-+	if (xE == NULL) {
-+	    /* WindowsRestructured case */
-+	    /* TODO: this may change */
-+	    sprite.win = XYToWindow(sprite.hot.x, sprite.hot.y);
-+	    virtualSprite.hot.x = sprite.hot.x - sprite.win->drawable.x;
-+	    virtualSprite.hot.y = sprite.hot.y - sprite.win->drawable.y;
-+	} else if (XE_KBPTR.event == IsWinLgePRWOne(XE_KBPTR.event)) {
-+	    /* 3D Event */
-+	    sprite.win = GetLgePRWWinFor(XE_KBPTR.event);
-+	    virtualSprite.hot.x = sprite.hot.x;
-+	    virtualSprite.hot.y = sprite.hot.y;
-+
-+	    /* We must keep the sprite trace up-to-date */
-+	    if (sprite.win != NULL) {
-+		fillSpriteTraceFromRootToWin(sprite.win);
-+	    }
-+	} else {
-+	    /* Normal X Event */
-+	    WindowPtr pEventWin = (WindowPtr) LookupIDByType(XE_KBPTR.event, RT_WINDOW); 
-+	    if (pEventWin == NULL) {
-+		/* 
-+		** TODO: this may not be the best way to handle this case,
-+		** but it's better than doing an XYToWindow, because XYToWindow
-+		** may return the PRW, and if we send a native window event to 
-+		** the PRW there won't be a corresponding evinfo, so the DS will crash.
-+		*/
-+		return FALSE;
-+	    }
-+	    lgeCurrentRootWin = WindowTable[sprite.hotPhys.pScreen->myNum];
-+	    sprite.win = XYToSubWindow(pEventWin, 
-+				       XE_KBPTR.eventX, XE_KBPTR.eventY,
-+				       &virtualSprite.hot.x, &virtualSprite.hot.y);
-+	}
-+	virtualSprite.win = sprite.win;
-+
-+    } else {
-+	sprite.win = XYToWindow(sprite.hot.x, sprite.hot.y);
-+    }
-+#ifdef XEVIE
-+    xeviewin = sprite.win;
-+#endif
-+#else
- #ifdef XEVIE
-     xeviewin =
- #endif
-     sprite.win = XYToWindow(sprite.hot.x, sprite.hot.y);
-+#endif /* LG3D */
-+
- #ifdef notyet
-     if (!(sprite.win->deliverableEvents &
- 	  Motion_Filter(inputInfo.pointer->button))
-@@ -2861,7 +3283,16 @@ drawable.id:0;
-     else
- 	DeliverFocusedEvent(keybd, xE, sprite.win, count);
-     if (deactivateGrab)
-+#ifdef LG3D
-+    /* Make sure any queued events which are released are sent to the DS */
-+    { int prevComesFromDS = lgeEventComesFromDS;
-+      lgeEventComesFromDS = 0;   
-+      (*keybd->DeactivateGrab)(keybd);
-+      lgeEventComesFromDS = prevComesFromDS;
-+    }
-+#else
-         (*keybd->DeactivateGrab)(keybd);
-+#endif /* LG3D */
- 
- #ifdef XACE
-     XaceHook(XACE_KEY_AVAIL, xE, keybd, count);
-@@ -2930,6 +3361,36 @@ ProcessPointerEvent (register xEvent *xE
-     }
- #endif
- 
-+#ifdef LG3D
-+    if (lgeDisplayServerIsAlive && 
-+	!lgePickerClient->clientGone &&
-+	!lgeEventComesFromDS) {
-+	Window prw = GetLgPrwFromSprite();
-+	if (prw != INVALID) {
-+	    xEvent *e = xE;
-+	    int i;
-+
-+	    for (i = 0; i < count; i++, e++) {
-+		/*
-+		  ErrorF("Send event XS->DS, type = %d xy = %d, %d, state = 0x%x\n", 
-+		  e->u.u.type, e->u.keyButtonPointer.rootX, 
-+		  e->u.keyButtonPointer.rootY,
-+		  e->u.keyButtonPointer.state);
-+		  */
-+		
-+		/* Note: the root id of raw device events on LG screens is the prw */
-+		e->u.keyButtonPointer.root = prw;
-+
-+		e->u.keyButtonPointer.child = 0;
-+
-+		WriteEventsToClient(lgePickerClient, 1, e);
-+	    }
-+
-+	    return;
-+	}
-+    }
-+#endif /* LG3D */
-+
-     if (!syncEvents.playingEvents)
- 	NoticeTime(xE)
-     XE_KBPTR.state = (butc->state | (
-@@ -3011,7 +3472,16 @@ ProcessPointerEvent (register xEvent *xE
- 	DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow,
- 			    mouse, count);
-     if (deactivateGrab)
-+#ifdef LG3D
-+    /* Make sure any queued events which are released are sent to the DS */
-+    { int prevComesFromDS = lgeEventComesFromDS;
-+      lgeEventComesFromDS = 0;   
-+      (*mouse->DeactivateGrab)(mouse);
-+      lgeEventComesFromDS = prevComesFromDS;
-+    }
-+#else
-         (*mouse->DeactivateGrab)(mouse);
-+#endif /* LG3D */
- }
- 
- #define AtMostOneClient \
-@@ -3995,8 +4465,29 @@ ProcQueryPointer(ClientPtr client)
-     if (sprite.hot.pScreen == pWin->drawable.pScreen)
-     {
- 	rep.sameScreen = xTrue;
-+#ifdef LG3D
-+	/* 
-+	** TODO: this only works when pWin is the top-level
-+        ** window (or a descendent of the top level window)
-+	** of the current virtual sprite window. We haven't
-+	** yet figured out what the semantics should be for
-+	** the case where this is not true.
-+	*/
-+        if (lgeDisplayServerIsAlive &&
-+    	    (GetLgPrwFromSprite() != INVALID) &&
-+	    virtualSprite.win != NULL) {
-+	    rep.winX = virtualSprite.win->drawable.x + virtualSprite.hot.x -
-+		       pWin->drawable.x;
-+            rep.winY = virtualSprite.win->drawable.y + virtualSprite.hot.y -
-+		       pWin->drawable.y;
-+	} else {
-+	    rep.winX = sprite.hot.x - pWin->drawable.x;
-+	    rep.winY = sprite.hot.y - pWin->drawable.y;
-+	}
-+#else
- 	rep.winX = sprite.hot.x - pWin->drawable.x;
- 	rep.winY = sprite.hot.y - pWin->drawable.y;
-+#endif /* LG3D */
- 	for (t = sprite.win; t; t = t->parent)
- 	    if (t->parent == pWin)
- 	    {
-@@ -4621,3 +5112,17 @@ WriteEventsToClient(ClientPtr pClient, i
- 	(void)WriteToClient(pClient, count * sizeof(xEvent), (char *) events);
-     }
- }
-+
-+#ifdef LG3D
-+
-+Window
-+GetLgPrwFromSprite(void)
-+{
-+    WindowPtr pWin = GetLgePRWForRoot(WindowTable[sprite.hotPhys.pScreen->myNum]);
-+    if (pWin == NULL) {
-+	return INVALID;
-+    }
-+    return pWin->drawable.id;
-+}
-+
-+#endif /* LG3D */
-diff -urp -x '*~' -x '*.orig' dix/extension.c dix/extension.c
---- dix/extension.c	2007-09-20 14:28:18.534141000 -0700
-+++ dix/extension.c	2007-09-20 14:28:43.830242000 -0700
-@@ -63,6 +63,10 @@ SOFTWARE.
- #include "xace.h"
- #endif
- 
-+#ifdef LG3D
-+#include "../Xext/lgeint.h"
-+#endif /* LG3D */
-+
- #define EXTENSION_BASE  128
- #define EXTENSION_EVENT_BASE  64
- #define LAST_EVENT  128
-@@ -70,11 +74,19 @@ SOFTWARE.
- 
- ScreenProcEntry AuxillaryScreenProcs[MAXSCREENS];
- 
-+#ifdef LG3D
-+ExtensionEntry **extensions = (ExtensionEntry **)NULL;
-+#else 
- static ExtensionEntry **extensions = (ExtensionEntry **)NULL;
-+#endif /* LG3D */
- 
- int lastEvent = EXTENSION_EVENT_BASE;
- static int lastError = FirstExtensionError;
-+#ifdef LG3D
-+unsigned int NumExtensions = 0;
-+#else
- static unsigned int NumExtensions = 0;
-+#endif /* LG3D */
- 
- extern int extensionPrivateLen;
- extern unsigned *extensionPrivateSizes;
-@@ -381,6 +393,12 @@ ProcListExtensions(ClientPtr client)
- 	    if (!XaceHook(XACE_EXT_ACCESS, client, extensions[i]))
- 		continue;
- #endif
-+#ifdef LG3D
-+	    if (lgeDisplayServerIsAlive &&
-+		!lgeCompatibleExtension(extensions[i])) {
-+		continue;
-+	    }
-+#endif /* LG3D */
- 	    total_length += strlen(extensions[i]->name) + 1;
- 	    reply.nExtensions += 1 + extensions[i]->num_aliases;
- 	    for (j = extensions[i]->num_aliases; --j >= 0;)
-@@ -397,6 +415,12 @@ ProcListExtensions(ClientPtr client)
- 	    if (!XaceHook(XACE_EXT_ACCESS, client, extensions[i]))
- 		continue;
- #endif
-+#ifdef LG3D
-+	    if (lgeDisplayServerIsAlive &&
-+		!lgeCompatibleExtension(extensions[i])) {
-+		continue;
-+	    }
-+#endif /* LG3D */
-             *bufptr++ = len = strlen(extensions[i]->name);
- 	    memmove(bufptr, extensions[i]->name,  len);
- 	    bufptr += len;
-diff -urp -x '*~' -x '*.orig' include/globals.h include/globals.h
---- include/globals.h	2006-09-17 23:04:18.000000000 -0700
-+++ include/globals.h	2007-09-20 14:28:43.830529000 -0700
-@@ -184,4 +184,8 @@ extern Bool noXIdleExtension;
- extern Bool noXvExtension;
- #endif
- 
-+#ifdef LG3D
-+extern Bool noLgeExtension;
-+#endif
-+
- #endif /* !_XSERV_GLOBAL_H_ */
-diff -urp -x '*~' -x '*.orig' mi/miinitext.c mi/miinitext.c
---- mi/miinitext.c	2007-09-20 14:28:19.434320000 -0700
-+++ mi/miinitext.c	2007-09-20 14:28:43.892780000 -0700
-@@ -90,6 +90,11 @@ SOFTWARE.
- #include "extnsionst.h"
- #endif
- 
-+#ifdef LG3D
-+#include "scrnintstr.h"
-+#include "../miext/damage/damage.h"
-+#endif /* LG3D */
-+
- #if defined(QNX4) /* sleaze for Watcom on QNX4 ... */
- #undef GLXEXT
- #endif
-@@ -116,6 +121,7 @@ SOFTWARE.
- #undef XFIXES
- #undef XEVIE
- #undef SolarisIAExtension
-+#undef LG3D
- #else
- #ifndef LOADABLEPRINTDDX
- #undef XPRINT
-@@ -188,6 +194,9 @@ extern Bool noXCMiscExtension;
- #ifdef XEVIE
- extern Bool noXevieExtension;
- #endif
-+#ifdef LG3D
-+extern Bool noLgeExtension;
-+#endif /* LG3D */
- #ifdef XF86BIGFONT
- extern Bool noXFree86BigfontExtension;
- #endif
-@@ -410,6 +419,9 @@ extern void IAExtensionInit(void);
- #ifdef TSOL
- extern void TsolExtensionInit(void);
- #endif
-+#ifdef LG3D
-+extern void LgeExtensionInit(INITARGS);
-+#endif
- 
- /* The following is only a small first step towards run-time
-  * configurable extensions.
-@@ -525,6 +537,9 @@ static ExtensionToggle ExtensionToggleLi
- #ifdef XV
-     { "XVideo", &noXvExtension },
- #endif
-+#ifdef LG3D
-+    { "LGE", &noLgeExtension },
-+#endif /* LG3D */
-     { NULL, NULL }
- };
- 
-@@ -561,6 +576,53 @@ InitExtensions(argc, argv)
-     int		argc;
-     char	*argv[];
- {
-+#ifdef LG3D
-+    /*
-+    ** This is a workaround for LG bug 488.
-+    ** 
-+    ** Problem: 
-+    ** 
-+    ** 1. Damage must be initialized before composite, otherwise you get that garbage rectangle.
-+    ** 
-+    ** 2. For Solaris Xorg, I implemented a wa for another bug which forced damage to be initialized 
-+    ** after InitOutput. Part 1 of the wa was in miSpriteInitialize where I skipped DamageSetup
-+    ** and Part 2 was in the -DXFree86LOADER version of InitExtensions, where I called
-+    ** DamageSetup before any other extensions are initialized. The -DXFree86LOADER case
-+    ** is the case used by Xorg.
-+    ** 
-+    ** 3. I skipped the workaround in the Xvfb case. DamageSetup was still being called from 
-+    ** InitOutput and therefore was getting called before InitExtensions. 
-+    ** 
-+    ** 4. The skipping was achieved by eliminating Part 1 of my wa when -DXVFB. In 6.8.2,
-+    ** this caused InitOutput to call DamageSetup, thereby ensuring that it was called
-+    ** before composite was initialized.
-+    ** 
-+    ** 5. THE PROBLEM - Part A: in 6.9, Xvfb is no longer compiled with -DXVFB. Therefore Part 1
-+    ** of my workaround was getting applied to both Xorg and Xvfb. So, in Xvfb 6.9,
-+    ** InitOutput no longer calls DamageSetup.
-+    ** 
-+    ** 6. THE PROBLEM - Part B: The other part of the problem is that I had put Part 2
-+    ** of the original bug wa only in the -DXFree86LOADER case of InitExtensions. 
-+    ** Unfortunately, Xvfb uses the -UXFree86LOADER case. Also unfortunately, 
-+    ** composite appears before damage in this function. So composite was getting 
-+    ** initialized BEFORE damage, not after it.
-+    ** 
-+    ** 7. THE FIX: since the only way we can distinguish between Xorg and Xvfb 
-+    ** initialization is in the version of InitExtension used, we will make
-+    ** Part 1 of the original bug wa (the one in miSpriteInitialize) apply 
-+    ** to both Xorg and Xvfb (we can't distinguish them in this function
-+    ** anyway). Then we will make sure that DamageSetup gets called first in 
-+    ** BOTH versions of InitExtension. This will fix the bug.
-+    */
-+    int	s;
-+
-+    for (s = 0; s < screenInfo.numScreens; s++) {
-+	if (!DamageSetup (screenInfo.screens[s])) {
-+	    FatalError("DamageSetup: initialization failed for screen %d.\n", s);
-+	}
-+    }
-+#endif /* LG3D */
-+
- #ifdef XCSECURITY
-     SecurityExtensionSetup();
- #endif
-@@ -706,6 +768,9 @@ InitExtensions(argc, argv)
- 	}
-     }
- #endif
-+#ifdef LG3D
-+    if (!noLgeExtension) LgeExtensionInit();
-+#endif
- }
- 
- void
-@@ -776,6 +841,9 @@ static ExtensionModule staticExtensions[
- #ifdef XEVIE
-     { XevieExtensionInit, "XEVIE", &noXevieExtension, NULL },
- #endif 
-+#ifdef LG3D
-+    { LgeExtensionInit, "LGE", &noLgeExtension, NULL },
-+#endif 
-     { NULL, NULL, NULL, NULL, NULL }
- };
-     
-@@ -789,6 +857,21 @@ InitExtensions(argc, argv)
-     ExtensionModule *ext;
-     static Bool listInitialised = FALSE;
- 
-+#ifdef LG3D
-+    /*
-+    ** Workaround for LG3D bug 329 (Part 2 of 2. For Part 1, 
-+    ** Refer to misprite.c). DamageSetup must be called after
-+    ** InitOutput is complete, but before CompositeExtensionInit.
-+    */
-+    int	s;
-+
-+    for (s = 0; s < screenInfo.numScreens; s++) {
-+	if (!DamageSetup (screenInfo.screens[s])) {
-+	    FatalError("DamageSetup: initialization failed for screen %d.\n", s);
-+	}
-+    }
-+#endif /* LG3D */
-+
-     if (!listInitialised) {
- 	/* Add built-in extensions to the list. */
- 	for (i = 0; staticExtensions[i].name; i++)
-diff -urp -x '*~' -x '*.orig' mi/misprite.c mi/misprite.c
---- mi/misprite.c	2006-09-17 23:04:18.000000000 -0700
-+++ mi/misprite.c	2007-09-20 14:28:43.893409000 -0700
-@@ -156,8 +156,23 @@ miSpriteInitialize (pScreen, cursorFuncs
-     miSpriteScreenPtr	pScreenPriv;
-     VisualPtr		pVisual;
-     
-+#if !defined(LG3D)
-+    /*
-+    ** Workaround for LG3D bug 329 (Part 1 of 2. For Part 2, 
-+    ** Refer to xf86IniExt.c). DamageSetup must be called after
-+    ** InitOutput is complete, but before CompositeExtensionInit.
-+    **
-+    ** Calling DamageSetup here causes screen op wrapping to occur during 
-+    ** InitOutput. The Solaris x86 Nvidia driver changes the screen ops 
-+    ** after calling miSpriteInitialize and this messes up the wrapping. 
-+    ** To achieve the proper wrapping, we don't want to initialize the 
-+    ** Damage and Composite Wrapper wrappers here, but rather, we want 
-+    ** to initialize them during InitExtensions. So skip this 
-+    ** initialization call.
-+    */
-     if (!DamageSetup (pScreen))
- 	return FALSE;
-+#endif /* !LG3D */
- 
-     if (miSpriteGeneration != serverGeneration)
-     {
-diff -urp -x '*~' -x '*.orig' os/utils.c os/utils.c
---- os/utils.c	2007-09-20 14:28:19.683418000 -0700
-+++ os/utils.c	2007-09-20 14:28:43.900842000 -0700
-@@ -236,6 +236,9 @@ _X_EXPORT Bool noXIdleExtension = FALSE;
- #ifdef XV
- _X_EXPORT Bool noXvExtension = FALSE;
- #endif
-+#ifdef LG3D
-+Bool noLgeExtension = FALSE;
-+#endif 
- 
- #define X_INCLUDE_NETDB_H
- #include <X11/Xos_r.h>
-diff -urp -x '*~' -x '*.orig' xkb/xkbPrKeyEv.c xkb/xkbPrKeyEv.c
---- xkb/xkbPrKeyEv.c	2006-09-17 23:04:18.000000000 -0700
-+++ xkb/xkbPrKeyEv.c	2007-09-20 14:28:43.901278000 -0700
-@@ -39,6 +39,10 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
- #include <X11/extensions/XKBsrv.h>
- #include <ctype.h>
- 
-+#ifdef LG3D
-+#include "../Xext/lgeint.h"
-+extern Window GetLgPrwFromSprite();
-+#endif /* LG3D */
- 
- /***====================================================================***/
- 
-@@ -51,6 +55,35 @@ int		key;
- XkbBehavior	behavior;
- unsigned        ndx;
- 
-+#ifdef LG3D
-+    if (lgeDisplayServerIsAlive && 
-+	!lgePickerClient->clientGone &&
-+	!lgeEventComesFromDS) {
-+	Window prw = GetLgPrwFromSprite();
-+	if (prw != INVALID) {
-+	    xEvent *e = xE;
-+	    int i;
-+
-+	    for (i = 0; i < count; i++, e++) {
-+		/*
-+		  ErrorF("Send event XS->DS, type = %d xy = %d, %d, state = 0x%x\n", 
-+		  e->u.u.type, e->u.keyButtonPointer.rootX, 
-+		  e->u.keyButtonPointer.rootY,
-+		  e->u.keyButtonPointer.state);
-+		  */
-+			   
-+		/* Note: the root id of raw device events on LG screens is the prw */
-+		e->u.keyButtonPointer.root = prw;
-+
-+		e->u.keyButtonPointer.child = 0;
-+
-+		WriteEventsToClient(lgePickerClient, 1, xE);
-+	    }
-+	    return;
-+	}
-+    }
-+#endif /* LG3D */
-+
-     xkbi= keyc->xkbInfo;
-     key= xE->u.u.detail;
- #ifdef DEBUG
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/libmd-sha1.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,118 @@
+From b6a0c6d4864f73a18beb841b16e9be56f2fcd77e Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Tue, 6 May 2008 17:06:34 -0700
+Subject: [PATCH] Allow using libmd instead of libcrypto for SHA1 hashing in render/glyph.c
+
+Builders can force one or the other by passing SHA1_LIB & SHA1_CFLAGS
+to configure
+---
+ configure.ac            |   22 ++++++++++++++++------
+ include/dix-config.h.in |    3 +++
+ render/glyph.c          |   17 +++++++++++++++--
+ 3 files changed, 34 insertions(+), 8 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 9b77534..beef3a2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1137,15 +1137,25 @@ PKG_CHECK_MODULES([XSERVERLIBS], [$REQUI
+ 
+ # OpenSSL used for SHA1 hashing in render/glyph.c, but we don't need all of
+ # the OpenSSL libraries, just libcrypto
+-PKG_CHECK_EXISTS([openssl],
+- [PKG_CHECK_MODULES([OPENSSL], [openssl],
++# Some systems have matching functionality in the smaller/simpler libmd
++# Builders who want to force a choice can set SHA1_LIB and SHA1_CFLAGS
++if test "x$SHA1_LIB" = "x" ; then
++ AC_CHECK_LIB([md], [SHA1Init], [SHA1_LIB="-lmd"
++	AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
++	   [Define to use libmd SHA1 functions instead of OpenSSL libcrypto])])
++fi
++if test "x$SHA1_LIB" = "x" ; then
++ PKG_CHECK_EXISTS([openssl],
++  [PKG_CHECK_MODULES([OPENSSL], [openssl],
+    [OPENSSL_LIB_FLAGS=`$PKG_CONFIG --libs-only-L --libs-only-other openssl`])])
+-LIBCRYPTO="$OPENSSL_LIB_FLAGS -lcrypto"
++ SHA1_LIB="$OPENSSL_LIB_FLAGS -lcrypto"
++ SHA1_CFLAGS="$OPENSSL_CFLAGS"
++fi
+ 
+ # Autotools has some unfortunate issues with library handling.  In order to
+ # get a server to rebuild when a dependency in the tree is changed, it must
+ # be listed in SERVERNAME_DEPENDENCIES.  However, no system libraries may be
+-# listed there, or some versions of autotols will break (especially if a -L
++# listed there, or some versions of autotools will break (especially if a -L
+ # is required to find the library).  So, we keep two sets of libraries
+ # detected: NAMESPACE_LIBS for in-tree libraries to be linked against, which
+ # will go into the _DEPENDENCIES and _LDADD of the server, and
+@@ -1157,9 +1167,9 @@ # XSERVER_LIBS is the set of in-tree lib
+ # XSERVER_SYS_LIBS is the set of out-of-tree libraries which all servers
+ # require.
+ #
+-XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS} ${OPENSSL_CFLAGS}"
++XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS} ${SHA1_CFLAGS}"
+ XSERVER_LIBS="$DIX_LIB $CONFIG_LIB $MI_LIB $OS_LIB"
+-XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS} ${LIBCRYPTO}"
++XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS} ${SHA1_LIB}"
+ AC_SUBST([XSERVER_LIBS])
+ AC_SUBST([XSERVER_SYS_LIBS])
+ 
+diff --git a/include/dix-config.h.in b/include/dix-config.h.in
+index fc1caa3..387f65a 100644
+--- a/include/dix-config.h.in
++++ b/include/dix-config.h.in
+@@ -193,6 +193,9 @@ #undef HAVE_NDIR_H
+ /* Define to 1 if you have the <rpcsvc/dbm.h> header file. */
+ #undef HAVE_RPCSVC_DBM_H
+ 
++/* Define to use libmd SHA1 functions instead of OpenSSL libcrypto */
++#undef HAVE_SHA1_IN_LIBMD
++
+ /* Define to 1 if you have the `shmctl64' function. */
+ #undef HAVE_SHMCTL64
+ 
+diff --git a/render/glyph.c b/render/glyph.c
+index 286e39d..de01970 100644
+--- a/render/glyph.c
++++ b/render/glyph.c
+@@ -26,8 +26,12 @@ #ifdef HAVE_DIX_CONFIG_H
+ #include <dix-config.h>
+ #endif
+ 
+-#include <stddef.h>  /* buggy openssl/sha.h wants size_t */
+-#include <openssl/sha.h>
++#ifdef HAVE_SHA1_IN_LIBMD /* Use libmd for SHA1 */
++# include <sha1.h>
++#else /* Use OpenSSL's libcrypto */
++# include <stddef.h>  /* buggy openssl/sha.h wants size_t */
++# include <openssl/sha.h>
++#endif
+ 
+ #include "misc.h"
+ #include "scrnintstr.h"
+@@ -202,6 +206,14 @@ HashGlyph (xGlyphInfo    *gi,
+ 	   unsigned long size,
+ 	   unsigned char sha1[20])
+ {
++#ifdef HAVE_SHA1_IN_LIBMD /* Use libmd for SHA1 */
++    SHA1_CTX ctx;
++
++    SHA1Init (&ctx);
++    SHA1Update (&ctx, gi, sizeof (xGlyphInfo));
++    SHA1Update (&ctx, bits, size);
++    SHA1Final (sha1, &ctx);
++#else /* Use OpenSSL's libcrypto */
+     SHA_CTX ctx;
+     int success;
+ 
+@@ -220,6 +232,7 @@ HashGlyph (xGlyphInfo    *gi,
+     success = SHA1_Final (sha1, &ctx);
+     if (! success)
+ 	return BadAlloc;
++#endif
+ 
+     return Success;
+ }
+-- 
+1.4.1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/make_xkm_output_dir.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,55 @@
+
+Based on Xorg upstream git commit b07602014061cb41540f6a7e74e4132e67aa1117 
+From: Alan Coopersmith <[email protected]>
+Date: Mon, 22 Aug 2005 21:47:59 +0000
+
+If MAKE_XKM_OUTPUT_DIR is defined, call trans_mkdir to create directory if
+it doesn't already exist. (ported from Solaris Xsun bug #5039004)
+
+[Xorg has since dropped upstream, but we still use.]
+
+diff -urp -x '*~' -x '*.orig' xkb/Makefile.am xkb/Makefile.am
+--- xkb/Makefile.am	2008-03-07 05:31:29.000000000 -0800
++++ xkb/Makefile.am	2008-09-22 21:39:13.086729000 -0700
+@@ -1,6 +1,7 @@
+ noinst_LTLIBRARIES = libxkb.la libxkbstubs.la
+ 
+ AM_CFLAGS = $(DIX_CFLAGS) \
++	-DMAKE_XKM_OUTPUT_DIR \
+ 	-DHAVE_XKB_CONFIG_H
+ 
+ DDX_SRCS = \
+diff -urp -x '*~' -x '*.orig' xkb/ddxLoad.c xkb/ddxLoad.c
+--- xkb/ddxLoad.c	2008-09-03 10:03:39.000000000 -0700
++++ xkb/ddxLoad.c	2008-09-22 21:39:13.086234000 -0700
+@@ -153,13 +153,29 @@ Win32System(const char *cmdline)
+ #define System(x) Win32System(x)
+ #endif
+ 
++#ifdef MAKE_XKM_OUTPUT_DIR
++/* Borrow trans_mkdir from Xtransutil.c to more safely make directories */
++# undef X11_t
++# define TRANS_SERVER
++# define PRMSG(lvl,x,a,b,c) \
++	if (lvl <= 1) { LogMessage(X_ERROR,x,a,b,c); } else ((void)0)
++# include <X11/Xtrans/Xtransutil.c>
++# ifndef XKM_OUTPUT_DIR_MODE
++#  define XKM_OUTPUT_DIR_MODE 0755
++# endif
++#endif
++
+ static void
+ OutputDirectory(
+     char* outdir,
+     size_t size)
+ {
+ #ifndef WIN32
+-    if (getuid() == 0 && (strlen(XKM_OUTPUT_DIR) < size))
++    if (getuid() == 0 && (strlen(XKM_OUTPUT_DIR) < size)
++#ifdef MAKE_XKM_OUTPUT_DIR    
++	&& (trans_mkdir(XKM_OUTPUT_DIR, XKM_OUTPUT_DIR_MODE) == 0)
++#endif
++	)
+     {
+ 	/* if server running as root it *may* be able to write */
+ 	/* FIXME: check whether directory is writable at all */
--- a/open-src/xserver/xorg/nvidia-autoconfig.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/nvidia-autoconfig.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -26,9 +26,10 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 
---- hw/xfree86/common/xf86Config.c	2006-12-06 22:08:26.479334000 -0800
-+++ hw/xfree86/common/xf86Config.c	2006-12-07 15:31:59.400139000 -0800
-@@ -513,11 +513,30 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Config.c hw/xfree86/common/xf86Config.c
+--- hw/xfree86/common/xf86Config.c	2008-09-24 20:22:56.371591000 -0700
++++ hw/xfree86/common/xf86Config.c	2008-09-24 20:23:15.204372000 -0700
+@@ -563,11 +563,30 @@ fixup_video_driver_list(char **drivers)
                  if (!strcmp(*drv, "ati")) {
                      ati = drv;
                      x = *ati; *ati = *atimisc; *atimisc = x;
--- a/open-src/xserver/xorg/patch-list	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/patch-list	Thu Jan 15 12:55:00 2009 -0800
@@ -1,23 +1,30 @@
-xephyr.patch,-p1
-dtrace.patch
-automake-1.10.patch,-p1
-render-security.patch,-p1
-ramdac-symbols.patch,-p1
-RandR-1.2-man.patch,-p1
-secure-rpc.patch,-p1
-composite-default.patch,-p1
-composite-7447.patch,-p1
-composite-grabs.patch,-p1
+libmd-sha1.patch,-p1
+glapi-DEBUG.patch,-p1
+x86-64-ifdef.patch,-p1
+x86emu-fix-build.patch,-p1
+driver-autoconfig.patch,-p1
+remove-ppcPci.patch,-p1
+remove-sparcPci.patch,-p1
+sys-kd.h.patch,-p1
+pre-faster-devPrivates.patch,-p1
+solaris-mapping.patch,-p1
+popen-signal.patch,-p1
+hal-verbose-msg.patch,-p1
+pci-stubs.patch,-p1
+xephyr-man.patch,-p1
+kdsetmode.patch,-p1
+6685465.patch,-p1
+XkbSetRulesDflts.patch,-p1
+xkb-defaults.patch,-p1
+xkb-defaults-compat.patch
+restore-kbd-mouse.patch,-p1
+hal-input-fdi.patch
 sun-paths.patch
 sun-extramodes.patch
-sun-apm.patch
-sun-kb-autodetect.patch
-sun-keymappings.patch
 sun-manpage.patch
 cli-nolock.patch
 cli-nobanner.patch
-keep-aperture-open.patch
-sun-virtual-mouse.patch
+make_xkm_output_dir.patch
 dtlogin-userinfo.patch
 IA.patch
 xtsol.patch
@@ -28,46 +35,23 @@
 Xorg-mapfile.patch
 fontmod.patch
 xevie.patch
-wsfb.patch
 sparc-probe.patch
-glx-byteswap.patch
+sparc-nopciprobe.patch
 glx-impure.patch
 dri.patch
 nvidia-autoconfig.patch
 autoconfig.patch
 autoconfig2.patch
 6406044.patch
-cfbmskbits.patch
-lg3d.patch
 6535006.patch
-6540484.patch
 signal-handler.patch
-kbd-driver.patch 
-6559710.patch
-6561019.patch
-6577124.patch
-shm-across-zones.patch
-6425775.patch
 KB_EncodingAtXCrash.patch
-6278039.patch
-xv-swap.patch
-6635727.patch,-p1
-6636174.patch,-p1
-6635740.patch,-p1
-6635721.patch
-6640505.patch
-6635732.patch,-p1
-6642762.patch,-p1
 6618220.patch
 6668806.patch
-driver-autoconfig.patch
-6683567.patch
-6685465.patch
-kbd_mode.patch,-p1
 6721634.patch
-6742579.patch
-6740339.patch
+xpstubs.patch
+dixmods-deps.patch
 xprint.patch
 xprint01.patch
 xprint02.patch
-pciids-version.patch
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/pci-stubs.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,51 @@
+From 570835b9a89187a36e08defbccc56051bb349b52 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Wed, 19 Nov 2008 10:19:20 -0800
+Subject: [PATCH] Use bsd_pci stub routines on Solaris too, since we use pciaccess for real work
+
+Depends on commit 70e18a3b6b9d52169bca650f6cd4ef5d8ab40d95 to get
+definition of xf86InitVidMem on Solaris.
+---
+ configure.ac                    |    5 ++++-
+ hw/xfree86/os-support/bus/Pci.h |    2 +-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 4bea8ac..048416f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1278,6 +1278,9 @@ if test "x$XORG" = xyes; then
+ 	  solaris*)
+ 	  	XORG_OS="solaris"
+ 		XORG_OS_SUBDIR="solaris"
++		# Use the same stubs as BSD for old functions, since we now
++		# use libpciaccess for PCI
++		xorg_bus_bsdpci="yes"
+ 		AC_CHECK_HEADERS([sys/kd.h])
+ 		# This really should be tests for specific features, but the #ifdef's
+ 		# were done as a simple version check in XFree86 4.x and haven't been 
+@@ -1346,7 +1349,7 @@ if test "x$XORG" = xyes; then
+ 		;;
+ 	  i*86|x86_64*|amd64*)
+ 		case $host_os in
+-		  *bsd*|linux*)
++		  *bsd*|linux*|solaris*)
+ 			;;
+ 		  *)
+ 			xorg_bus_ix86pci="yes"
+diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h
+index 31a7fbf..2eb1745 100644
+--- a/hw/xfree86/os-support/bus/Pci.h
++++ b/hw/xfree86/os-support/bus/Pci.h
+@@ -179,7 +179,7 @@
+ #define PCI_CFGMECH1_MAXDEV	32
+ 
+ #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
+-	defined(__DragonFly__)
++	defined(__DragonFly__) || defined(__sun)
+ #define ARCH_PCI_INIT bsdPciInit
+ #endif
+ 
+-- 
+1.5.6.5
+
--- a/open-src/xserver/xorg/pciids-version.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-###############################################################################
-#
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-# @(#)pciids-version.patch	1.1	08/10/13
-
-Use the snapshot date in the pci.ids file to generate a SCCS-like
-version info tag, so that running 'what pcidata.so' or 'what scanpci.so'
-will show what version of pci.ids data is included.
-
---- hw/xfree86/scanpci/pciid2c.pl	Wed Oct  4 14:46:03 2006
-+++ hw/xfree86/scanpci/pciid2c.pl	Thu Oct  9 18:11:53 2008
-@@ -110,6 +110,8 @@
- 	}
-     } elsif (/^\t\tC\s+([0-9a-f]{4})/) {
- 	$classes{$vendor}{$device} = $1;
-+    } elsif (/^#\s+(.* snapshot .*)$/) {
-+        $snapshot_version = $1;
-     }
-     # Ignore all other lines.
- }
-@@ -162,6 +164,14 @@
- 
- ";
- 
-+print qq(
-+\#ifdef __SUNPRO_C
-+\#pragma ident "\@(\#)pci.ids\t$snapshot_version"
-+\#else
-+const char sccsid[] = "\@(\#)pci.ids\t$snapshot_version";
-+\#endif
-+);
-+
- # The following #ifdefs are used:
- #  - INIT_SUBSYS_INFO -- initialise subsystem data
- #  - INIT_VENDOR_SUBSYS_INFO -- initialise a vendor<->subsystem table.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/popen-signal.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,51 @@
+From c9051b684b524549eab6d5b88ee3e195a6f6fbe8 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Wed, 5 Nov 2008 18:25:57 -0800
+Subject: [PATCH] Use OsSignal in Popen/Pclose to avoid SysV signal() stupidity
+---
+ os/utils.c |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/os/utils.c b/os/utils.c
+index f0bb717..b100949 100644
+--- a/os/utils.c
++++ b/os/utils.c
+@@ -1393,7 +1393,7 @@ static struct pid {
+     int pid;
+ } *pidlist;
+ 
+-void (*old_alarm)(int) = NULL; /* XXX horrible awful hack */
++OsSigHandlerPtr old_alarm = NULL; /* XXX horrible awful hack */
+ 
+ pointer
+ Popen(char *command, char *type)
+@@ -1417,7 +1417,7 @@ Popen(char *command, char *type)
+     }
+ 
+     /* Ignore the smart scheduler while this is going on */
+-    old_alarm = signal(SIGALRM, SIG_IGN);
++    old_alarm = OsSignal(SIGALRM, SIG_IGN);
+     if (old_alarm == SIG_ERR) {
+       perror("signal");
+       return NULL;
+@@ -1428,7 +1428,7 @@ Popen(char *command, char *type)
+ 	close(pdes[0]);
+ 	close(pdes[1]);
+ 	xfree(cur);
+-	if (signal(SIGALRM, old_alarm) == SIG_ERR)
++	if (OsSignal(SIGALRM, old_alarm) == SIG_ERR)
+ 	  perror("signal");
+ 	return NULL;
+     case 0:	/* child */
+@@ -1605,7 +1605,7 @@ #endif
+     /* allow EINTR again */
+     OsReleaseSignals ();
+     
+-    if (old_alarm && signal(SIGALRM, old_alarm) == SIG_ERR) {
++    if (old_alarm && OsSignal(SIGALRM, old_alarm) == SIG_ERR) {
+       perror("signal");
+       return -1;
+     }
+-- 
+1.4.1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/pre-faster-devPrivates.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,1498 @@
+[Adjusted to apply to xserver-1.5.2]
+
+From ebea78cdba0ff14a397239ee1936bd254c181e1b Mon Sep 17 00:00:00 2001
+From: Tomas Carnecky <[email protected]>
+Date: Thu, 28 Aug 2008 18:05:40 -0400
+Subject: [PATCH] Prepare for array-index based devPrivates.
+
+TODO: static indices can be made just an int; some indices
+can be combined.
+---
+ Xext/geext.c                          |    3 ++-
+ Xext/mbuf.c                           |    6 ++++--
+ Xext/panoramiX.c                      |    6 ++++--
+ Xext/saver.c                          |    3 ++-
+ Xext/security.c                       |    3 ++-
+ Xext/shm.c                            |    3 ++-
+ Xext/xevie.c                          |    4 +++-
+ Xext/xselinux.c                       |    9 ++++++---
+ Xext/xvmain.c                         |    3 ++-
+ Xext/xvmc.c                           |    5 +++--
+ Xi/extinit.c                          |    3 ++-
+ composite/compext.c                   |    3 ++-
+ composite/compinit.c                  |    9 ++++++---
+ damageext/damageext.c                 |    4 +++-
+ dbe/dbe.c                             |    6 ++++--
+ dbe/midbe.c                           |    9 ++++++---
+ dix/devices.c                         |    6 ++++--
+ dix/events.c                          |    3 ++-
+ dix/window.c                          |    3 ++-
+ exa/exa.c                             |    6 ++++--
+ fb/fballpriv.c                        |   11 ++++++++---
+ fb/fboverlay.c                        |    3 ++-
+ glx/glxext.c                          |    3 ++-
+ glx/glxscreens.c                      |    3 ++-
+ hw/dmx/dmxscrinit.c                   |   19 +++++++++++++------
+ hw/kdrive/ephyr/ephyrdriext.c         |    6 ++++--
+ hw/kdrive/src/kdrive.c                |    3 ++-
+ hw/kdrive/src/kxv.c                   |    7 ++++---
+ hw/xfree86/common/xf86DGA.c           |    5 +++--
+ hw/xfree86/common/xf86DPMS.c          |    5 +++--
+ hw/xfree86/common/xf86Globals.c       |    9 ++++++---
+ hw/xfree86/common/xf86RAC.c           |    6 ++++--
+ hw/xfree86/common/xf86RandR.c         |    5 +++--
+ hw/xfree86/common/xf86VidMode.c       |    5 +++--
+ hw/xfree86/common/xf86cmap.c          |    8 +++++---
+ hw/xfree86/common/xf86fbman.c         |    8 +++++---
+ hw/xfree86/common/xf86sbusBus.c       |    3 ++-
+ hw/xfree86/common/xf86xv.c            |    6 ++++--
+ hw/xfree86/common/xf86xvmc.c          |    3 ++-
+ hw/xfree86/dixmods/extmod/xf86dga2.c  |    3 ++-
+ hw/xfree86/dixmods/extmod/xf86vmode.c |    8 +++++---
+ hw/xfree86/dri/dri.c                  |    7 ++++---
+ hw/xfree86/dri2/dri2.c                |    9 ++++++---
+ hw/xfree86/exa/examodule.c            |    3 ++-
+ hw/xfree86/modes/xf86RandR12.c        |    3 ++-
+ hw/xfree86/ramdac/xf86Cursor.c        |    3 ++-
+ hw/xfree86/shadowfb/shadow.c          |    6 ++++--
+ hw/xfree86/xaa/xaaInit.c              |    9 ++++++---
+ hw/xfree86/xaa/xaaOverlayDF.c         |    3 ++-
+ hw/xfree86/xaa/xaaStateChange.c       |    3 ++-
+ hw/xfree86/xaa/xaaWrapper.c           |    6 ++++--
+ hw/xnest/GC.c                         |    3 ++-
+ hw/xnest/Pixmap.c                     |    3 ++-
+ hw/xnest/Screen.c                     |    3 ++-
+ hw/xnest/Window.c                     |    3 ++-
+ hw/xquartz/darwin.c                   |    3 ++-
+ hw/xquartz/quartz.c                   |    3 ++-
+ hw/xquartz/xpr/dri.c                  |    9 ++++++---
+ hw/xquartz/xpr/xprCursor.c            |    3 ++-
+ hw/xwin/winglobals.c                  |   15 ++++++++++-----
+ mi/mibank.c                           |    7 +++++--
+ mi/midispcur.c                        |    7 ++++---
+ mi/mioverlay.c                        |    6 ++++--
+ mi/mipointer.c                        |    6 ++++--
+ mi/miscrinit.c                        |    6 ++++--
+ mi/misprite.c                         |    6 ++++--
+ miext/cw/cw.c                         |   12 ++++++++----
+ miext/damage/damage.c                 |   12 ++++++++----
+ miext/rootless/rootlessScreen.c       |   12 ++++++++----
+ miext/shadow/shadow.c                 |    3 ++-
+ randr/randr.c                         |    6 ++++--
+ record/record.c                       |    3 ++-
+ render/animcur.c                      |    4 +++-
+ render/picture.c                      |    6 ++++--
+ render/render.c                       |    3 ++-
+ xfixes/cursor.c                       |    4 +++-
+ xfixes/xfixes.c                       |    4 +++-
+ xkb/xkbActions.c                      |    3 ++-
+ 78 files changed, 287 insertions(+), 146 deletions(-)
+
+#diff --git a/Xext/geext.c b/Xext/geext.c
+#index 171fda1..8de4e7c 100644
+#--- a/Xext/geext.c
+#+++ b/Xext/geext.c
+#@@ -40,7 +40,8 @@ #define rClient(obj) (clients[CLIENT_ID(
+# 
+# int GEEventBase;
+# int GEErrorBase;
+#-DevPrivateKey GEClientPrivateKey = &GEClientPrivateKey;
+#+static int GEClientPrivateKeyIndex;
+#+DevPrivateKey GEClientPrivateKey = &GEClientPrivateKeyIndex;
+# int GEEventType; /* The opcode for all GenericEvents will have. */
+# 
+# int RT_GECLIENT  = 0;
+diff --git a/Xext/mbuf.c b/Xext/mbuf.c
+index 08b9334..a23a4fa 100644
+--- a/Xext/mbuf.c
++++ b/Xext/mbuf.c
+@@ -61,8 +61,10 @@ #define ValidEventMasks (ExposureMask|Mu
+ 
+ static int		MultibufferEventBase;
+ static int		MultibufferErrorBase;
+-static DevPrivateKey MultibufferScreenPrivKey = &MultibufferScreenPrivKey;
+-static DevPrivateKey MultibufferWindowPrivKey = &MultibufferWindowPrivKey;
++static int MultibufferScreenPrivKeyIndex;
++static DevPrivateKey MultibufferScreenPrivKey = &MultibufferScreenPrivKeyIndex;
++static int MultibufferWindowPrivKeyIndex;
++static DevPrivateKey MultibufferWindowPrivKey = &MultibufferWindowPrivKeyIndex;
+ 
+ static void		PerformDisplayRequest (
+ 				MultibuffersPtr * /* ppMultibuffers */,
+diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
+index 17f587b..22b51aa 100644
+--- a/Xext/panoramiX.c
++++ b/Xext/panoramiX.c
+@@ -107,8 +107,10 @@ #include "panoramiXh.h"
+ 
+ int (* SavedProcVector[256]) (ClientPtr client) = { NULL, };
+ 
+-static DevPrivateKey PanoramiXGCKey = &PanoramiXGCKey;
+-static DevPrivateKey PanoramiXScreenKey = &PanoramiXScreenKey;
++static int PanoramiXGCKeyIndex;
++static DevPrivateKey PanoramiXGCKey = &PanoramiXGCKeyIndex;
++static int PanoramiXScreenKeyIndex;
++static DevPrivateKey PanoramiXScreenKey = &PanoramiXScreenKeyIndex;
+ 
+ typedef struct {
+   DDXPointRec clipOrg;
+diff --git a/Xext/saver.c b/Xext/saver.c
+index d74495b..0bdcb8b 100644
+--- a/Xext/saver.c
++++ b/Xext/saver.c
+@@ -228,7 +228,8 @@ MakeScreenPrivate (
+ 	ScreenPtr /* pScreen */
+ 	);
+ 
+-static DevPrivateKey ScreenPrivateKey = &ScreenPrivateKey;
++static int ScreenPrivateKeyIndex;
++static DevPrivateKey ScreenPrivateKey = &ScreenPrivateKeyIndex;
+ 
+ #define GetScreenPrivate(s) ((ScreenSaverScreenPrivatePtr) \
+     dixLookupPrivate(&(s)->devPrivates, ScreenPrivateKey))
+diff --git a/Xext/security.c b/Xext/security.c
+index bd92600..e379063 100644
+--- a/Xext/security.c
++++ b/Xext/security.c
+@@ -50,7 +50,8 @@ static RESTYPE RTEventClient;
+ static CallbackListPtr SecurityValidateGroupCallback = NULL;
+ 
+ /* Private state record */
+-static DevPrivateKey stateKey = &stateKey;
++static int stateKeyIndex;
++static DevPrivateKey stateKey = &stateKeyIndex;
+ 
+ /* This is what we store as client security state */
+ typedef struct {
+diff --git a/Xext/shm.c b/Xext/shm.c
+index 312b9d1..a48d2bd 100644
+--- a/Xext/shm.c
++++ b/Xext/shm.c
+@@ -139,7 +139,8 @@ static ShmDescPtr Shmsegs;
+ static Bool sharedPixmaps;
+ static ShmFuncsPtr shmFuncs[MAXSCREENS];
+ static DestroyPixmapProcPtr destroyPixmap[MAXSCREENS];
+-static DevPrivateKey shmPixmapPrivate = &shmPixmapPrivate;
++static int shmPixmapPrivateIndex;
++static DevPrivateKey shmPixmapPrivate = &shmPixmapPrivateIndex;
+ static ShmFuncs miFuncs = {NULL, NULL};
+ static ShmFuncs fbFuncs = {fbShmCreatePixmap, NULL};
+ 
+diff --git a/Xext/xevie.c b/Xext/xevie.c
+index bbbf045..292f207 100644
+--- a/Xext/xevie.c
++++ b/Xext/xevie.c
+@@ -77,9 +77,11 @@ DeviceIntPtr		xeviemouse = NULL;
+ Mask			xevieMask = 0;
+ int       		xevieEventSent = 0;
+ int			xevieKBEventSent = 0;
+-static DevPrivateKey    xevieDevicePrivateKey = &xevieDevicePrivateKey;
+ static Bool             xevieModifiersOn = FALSE;
+ 
++static int xevieDevicePrivateKeyIndex;
++static DevPrivateKey xevieDevicePrivateKey = &xevieDevicePrivateKeyIndex;
++
+ #define XEVIEINFO(dev)  ((xevieDeviceInfoPtr) \
+     dixLookupPrivate(&(dev)->devPrivates, xevieDevicePrivateKey))
+ 
+diff --git a/Xext/xselinux.c b/Xext/xselinux.c
+index a47df03..2a8be0b 100644
+--- a/Xext/xselinux.c
++++ b/Xext/xselinux.c
+@@ -62,9 +62,12 @@ #include "modinit.h"
+  */
+ 
+ /* private state keys */
+-static DevPrivateKey subjectKey = &subjectKey;
+-static DevPrivateKey objectKey = &objectKey;
+-static DevPrivateKey dataKey = &dataKey;
++static int subjectKeyIndex;
++static DevPrivateKey subjectKey = &subjectKeyIndex;
++static int objectKeyIndex;
++static DevPrivateKey objectKey = &objectKeyIndex;
++static int dataKeyIndex;
++static DevPrivateKey dataKey = &dataKeyIndex;
+ 
+ /* subject state (clients and devices only) */
+ typedef struct {
+diff --git a/Xext/xvmain.c b/Xext/xvmain.c
+index e92a248..fcca724 100644
+--- a/Xext/xvmain.c
++++ b/Xext/xvmain.c
+@@ -105,7 +105,8 @@ #include "panoramiXsrv.h"
+ #endif
+ #include "xvdisp.h"
+ 
+-static DevPrivateKey XvScreenKey = &XvScreenKey;
++static int XvScreenKeyIndex;
++static DevPrivateKey XvScreenKey = &XvScreenKeyIndex;
+ unsigned long XvExtensionGeneration = 0;
+ unsigned long XvScreenGeneration = 0;
+ unsigned long XvResourceGeneration = 0;
+diff --git a/Xext/xvmc.c b/Xext/xvmc.c
+index dc1e7dd..ad1b8ab 100644
+--- a/Xext/xvmc.c
++++ b/Xext/xvmc.c
+@@ -34,7 +34,8 @@ #endif /* HAS_XVMCSHM */
+ #define DR_CLIENT_DRIVER_NAME_SIZE 48
+ #define DR_BUSID_SIZE 48
+ 
+-static DevPrivateKey XvMCScreenKey = NULL;
++static int XvMCScreenKeyIndex;
++static DevPrivateKey XvMCScreenKey;
+ 
+ unsigned long XvMCGeneration = 0;
+ 
+@@ -709,7 +710,7 @@ XvMCScreenInit(ScreenPtr pScreen, int nu
+ {
+    XvMCScreenPtr pScreenPriv;
+ 
+-   XvMCScreenKey = &XvMCScreenKey;
++   XvMCScreenKey = &XvMCScreenKeyIndex;
+ 
+    if(!(pScreenPriv = (XvMCScreenPtr)xalloc(sizeof(XvMCScreenRec))))
+ 	return BadAlloc;
+#diff --git a/Xi/extinit.c b/Xi/extinit.c
+#index cb1f3a4..d8714ba 100644
+#--- a/Xi/extinit.c
+#+++ b/Xi/extinit.c
+#@@ -352,7 +352,8 @@ Mask PropagateMask[MAX_DEVICES];
+#  *
+#  */
+# 
+#-DevPrivateKey XIClientPrivateKey = &XIClientPrivateKey;
+#+static int XIClientPrivateKeyIndex;
+#+DevPrivateKey XIClientPrivateKey = &XIClientPrivateKeyIndex;
+# 
+# static XExtensionVersion thisversion = { XI_Present,
+#     XI_2_Major,
+diff --git a/composite/compext.c b/composite/compext.c
+index 154f719..c154402 100644
+--- a/composite/compext.c
++++ b/composite/compext.c
+@@ -51,7 +51,8 @@ #define SERVER_COMPOSITE_MAJOR	0
+ #define SERVER_COMPOSITE_MINOR	4
+ 
+ static CARD8	CompositeReqCode;
+-static DevPrivateKey CompositeClientPrivateKey = &CompositeClientPrivateKey;
++static int CompositeClientPrivateKeyIndex;
++static DevPrivateKey CompositeClientPrivateKey = &CompositeClientPrivateKeyIndex;
+ RESTYPE		CompositeClientWindowType;
+ RESTYPE		CompositeClientSubwindowsType;
+ RESTYPE		CompositeClientOverlayType;
+diff --git a/composite/compinit.c b/composite/compinit.c
+index 7914a8d..495188e 100644
+--- a/composite/compinit.c
++++ b/composite/compinit.c
+@@ -46,9 +46,12 @@ #endif
+ 
+ #include "compint.h"
+ 
+-DevPrivateKey CompScreenPrivateKey = &CompScreenPrivateKey;
+-DevPrivateKey CompWindowPrivateKey = &CompWindowPrivateKey;
+-DevPrivateKey CompSubwindowsPrivateKey = &CompSubwindowsPrivateKey;
++static int CompScreenPrivateKeyIndex;
++DevPrivateKey CompScreenPrivateKey = &CompScreenPrivateKeyIndex;
++static int CompWindowPrivateKeyIndex;
++DevPrivateKey CompWindowPrivateKey = &CompWindowPrivateKeyIndex;
++static int CompSubwindowsPrivateKeyIndex;
++DevPrivateKey CompSubwindowsPrivateKey = &CompSubwindowsPrivateKeyIndex;
+ 
+ 
+ static Bool
+diff --git a/damageext/damageext.c b/damageext/damageext.c
+index 7dd328a..4d91580 100755
+--- a/damageext/damageext.c
++++ b/damageext/damageext.c
+@@ -29,10 +29,12 @@ #include "damageextint.h"
+ static unsigned char	DamageReqCode;
+ static int		DamageEventBase;
+ static int		DamageErrorBase;
+-static DevPrivateKey	DamageClientPrivateKey = &DamageClientPrivateKey;
+ static RESTYPE		DamageExtType;
+ static RESTYPE		DamageExtWinType;
+ 
++static int DamageClientPrivateKeyIndex;
++static DevPrivateKey DamageClientPrivateKey = &DamageClientPrivateKeyIndex;
++
+ /* Version of the damage extension supported by the server, as opposed to the
+  * DAMAGE_* defines from damageproto for what version the proto header
+  * supports.
+diff --git a/dbe/dbe.c b/dbe/dbe.c
+index d34708d..1a08bda 100644
+--- a/dbe/dbe.c
++++ b/dbe/dbe.c
+@@ -62,8 +62,10 @@ #include "xace.h"
+ static Bool (* DbeInitFunct[MAXSCREENS])();	/* pScreen, pDbeScreenPriv */
+ 
+ /* These are static globals copied to DBE's screen private for use by DDX */
+-static DevPrivateKey dbeScreenPrivKey = &dbeScreenPrivKey;
+-static DevPrivateKey dbeWindowPrivKey = &dbeWindowPrivKey;
++static int dbeScreenPrivKeyIndex;
++static DevPrivateKey dbeScreenPrivKey = &dbeScreenPrivKeyIndex;
++static int dbeWindowPrivKeyIndex;
++static DevPrivateKey dbeWindowPrivKey = &dbeWindowPrivKeyIndex;
+ 
+ /* These are static globals copied to DBE's screen private for use by DDX */
+ static RESTYPE	dbeDrawableResType;
+diff --git a/dbe/midbe.c b/dbe/midbe.c
+index c02e591..f8a3acc 100644
+--- a/dbe/midbe.c
++++ b/dbe/midbe.c
+@@ -60,11 +60,14 @@ #include "xace.h"
+ 
+ #include <stdio.h>
+ 
+-static DevPrivateKey miDbeWindowPrivPrivKey = &miDbeWindowPrivPrivKey;
++static int miDbeWindowPrivPrivKeyIndex;
++static DevPrivateKey miDbeWindowPrivPrivKey = &miDbeWindowPrivPrivKeyIndex;
+ static RESTYPE	dbeDrawableResType;
+ static RESTYPE	dbeWindowPrivResType;
+-static DevPrivateKey dbeScreenPrivKey = &dbeScreenPrivKey;
+-static DevPrivateKey dbeWindowPrivKey = &dbeWindowPrivKey;
++static int dbeScreenPrivKeyIndex;
++static DevPrivateKey dbeScreenPrivKey = &dbeScreenPrivKeyIndex;
++static int dbeWindowPrivKeyIndex;
++static DevPrivateKey dbeWindowPrivKey = &dbeWindowPrivKeyIndex;
+ 
+ 
+ /******************************************************************************
+diff --git a/dix/devices.c b/dix/devices.c
+index 2225e08..7e1ce35 100644
+--- a/dix/devices.c
++++ b/dix/devices.c
+@@ -91,7 +91,8 @@ #include "xiproperty.h"
+  * This file handles input device-related stuff.
+  */
+ 
+-DevPrivateKey CoreDevicePrivateKey = &CoreDevicePrivateKey;
++static int CoreDevicePrivateKeyIndex;
++DevPrivateKey CoreDevicePrivateKey = &CoreDevicePrivateKeyIndex;
+ 
+ /**
+  * Create a new input device and init it to sane values. The device is added
+diff --git a/dix/events.c b/dix/events.c
+index 7a79d29..2947ff1 100644
+#--- a/dix/events.c
+#+++ b/dix/events.c
+#@@ -1504,7 +1504,8 @@ CheckGrabForSyncs(DeviceIntPtr thisDev, 
+# }
+# 
+# /* Only ever used if a grab is called on an attached slave device. */
+#-static DevPrivateKey GrabPrivateKey = &GrabPrivateKey;
+#+static int GrabPrivateKeyIndex;
+#+static DevPrivateKey GrabPrivateKey = &GrabPrivateKeyIndex;
+# typedef struct _GrabMemoryRec {
+#     DeviceIntPtr oldmaster;
+# } GrabMemoryRec, *GrabMemoryPtr;
+#diff --git a/dix/window.c b/dix/window.c
+#index 9bcf546..b588f44 100644
+#--- a/dix/window.c
+#+++ b/dix/window.c
+#@@ -154,7 +154,8 @@ _X_EXPORT int screenIsSaved = SCREEN_SAV
+# 
+# _X_EXPORT ScreenSaverStuffRec savedScreenInfo[MAXSCREENS];
+# 
+#-_X_EXPORT DevPrivateKey FocusPrivatesKey = &FocusPrivatesKey;
+#+static int FocusPrivatesKeyIndex;
+#+_X_EXPORT DevPrivateKey FocusPrivatesKey = &FocusPrivatesKeyIndex;
+# 
+# static Bool TileScreenSaver(int i, int kind);
+ 
+diff --git a/exa/exa.c b/exa/exa.c
+index 12c1549..677e2d5 100644
+--- a/exa/exa.c
++++ b/exa/exa.c
+@@ -38,8 +38,10 @@ #include "exa_priv.h"
+ #include "exa.h"
+ #include "cw.h"
+ 
+-DevPrivateKey exaScreenPrivateKey = &exaScreenPrivateKey;
+-DevPrivateKey exaPixmapPrivateKey = &exaPixmapPrivateKey;
++static int exaScreenPrivateKeyIndex;
++DevPrivateKey exaScreenPrivateKey = &exaScreenPrivateKeyIndex;
++static int exaPixmapPrivateKeyIndex;
++DevPrivateKey exaPixmapPrivateKey = &exaPixmapPrivateKeyIndex;
+ 
+ static _X_INLINE void*
+ ExaGetPixmapAddress(PixmapPtr p)
+diff --git a/fb/fballpriv.c b/fb/fballpriv.c
+index 2e77289..c40796c 100644
+--- a/fb/fballpriv.c
++++ b/fb/fballpriv.c
+@@ -27,19 +27,24 @@ #endif
+ #include "fb.h"
+ 
+ #ifdef FB_SCREEN_PRIVATE
+-static DevPrivateKey fbScreenPrivateKey = &fbScreenPrivateKey;
++static int fbScreenPrivateKeyIndex;
++static DevPrivateKey fbScreenPrivateKey = &fbScreenPrivateKeyIndex;
+ DevPrivateKey fbGetScreenPrivateKey(void)
+ {
+     return fbScreenPrivateKey;
+ }
+ #endif
+-static DevPrivateKey fbGCPrivateKey = &fbGCPrivateKey;
++
++static int fbGCPrivateKeyIndex;
++static DevPrivateKey fbGCPrivateKey = &fbGCPrivateKeyIndex;
+ DevPrivateKey fbGetGCPrivateKey(void)
+ {
+     return fbGCPrivateKey;
+ }
++
+ #ifndef FB_NO_WINDOW_PIXMAPS
+-static DevPrivateKey fbWinPrivateKey = &fbWinPrivateKey;
++static int fbWinPrivateKeyIndex;
++static DevPrivateKey fbWinPrivateKey = &fbWinPrivateKeyIndex;
+ DevPrivateKey fbGetWinPrivateKey(void)
+ {
+     return fbWinPrivateKey;
+diff --git a/fb/fboverlay.c b/fb/fboverlay.c
+index f9f7c52..1432cb6 100644
+--- a/fb/fboverlay.c
++++ b/fb/fboverlay.c
+@@ -33,7 +33,8 @@ #include "fb.h"
+ #include "fboverlay.h"
+ #include "shmint.h"
+ 
+-static DevPrivateKey fbOverlayScreenPrivateKey = &fbOverlayScreenPrivateKey;
++static int fbOverlayScreenPrivateKeyIndex;
++static DevPrivateKey fbOverlayScreenPrivateKey = &fbOverlayScreenPrivateKeyIndex;
+ 
+ DevPrivateKey fbOverlayGetScreenPrivateKey(void)
+ {
+diff --git a/glx/glxext.c b/glx/glxext.c
+index 6ba404f..c2171a8 100644
+--- a/glx/glxext.c
++++ b/glx/glxext.c
+@@ -54,7 +54,8 @@ RESTYPE __glXSwapBarrierRes;
+ */
+ xGLXSingleReply __glXReply;
+ 
+-static DevPrivateKey glxClientPrivateKey = &glxClientPrivateKey;
++static int glxClientPrivateKeyIndex;
++static DevPrivateKey glxClientPrivateKey = &glxClientPrivateKeyIndex;
+ 
+ /*
+ ** Client that called into GLX dispatch.
+diff --git a/glx/glxscreens.c b/glx/glxscreens.c
+index 505f797..d928bdf 100644
+--- a/glx/glxscreens.c
++++ b/glx/glxscreens.c
+@@ -48,7 +48,8 @@ #include "glxserver.h"
+ #include "glxutil.h"
+ #include "glxext.h"
+ 
+-static DevPrivateKey glxScreenPrivateKey = &glxScreenPrivateKey;
++static int glxScreenPrivateKeyIndex;
++static DevPrivateKey glxScreenPrivateKey = &glxScreenPrivateKeyIndex;
+ 
+ const char GLServerVersion[] = "1.4";
+ static const char GLServerExtensions[] = 
+diff --git a/hw/dmx/dmxscrinit.c b/hw/dmx/dmxscrinit.c
+index 0e49e96..7360750 100644
+--- a/hw/dmx/dmxscrinit.c
++++ b/hw/dmx/dmxscrinit.c
+@@ -67,15 +67,22 @@ static Bool dmxSaveScreen(ScreenPtr pScr
+ static unsigned long dmxGeneration;
+ static unsigned long *dmxCursorGeneration;
+ 
++static int dmxGCPrivateKeyIndex;
+ DevPrivateKey dmxGCPrivateKey = &dmxGCPrivateKey; /**< Private index for GCs       */
+-DevPrivateKey dmxWinPrivateKey = &dmxWinPrivateKey; /**< Private index for Windows   */
+-DevPrivateKey dmxPixPrivateKey = &dmxPixPrivateKey; /**< Private index for Pixmaps   */
++static int dmxWinPrivateKeyIndex;
++DevPrivateKey dmxWinPrivateKey = &dmxWinPrivateKeyIndex; /**< Private index for Windows   */
++static int dmxPixPrivateKeyIndex;
++DevPrivateKey dmxPixPrivateKey = &dmxPixPrivateKeyIndex; /**< Private index for Pixmaps   */
+ int dmxFontPrivateIndex;        /**< Private index for Fonts     */
+-DevPrivateKey dmxScreenPrivateKey = &dmxScreenPrivateKey; /**< Private index for Screens   */
+-DevPrivateKey dmxColormapPrivateKey = &dmxColormapPrivateKey; /**< Private index for Colormaps */
++static int dmxScreenPrivateKeyIndex;
++DevPrivateKey dmxScreenPrivateKey = &dmxScreenPrivateKeyIndex; /**< Private index for Screens   */
++static int dmxColormapPrivateKeyIndex;
++DevPrivateKey dmxColormapPrivateKey = &dmxColormapPrivateKeyIndex; /**< Private index for Colormaps */
+ #ifdef RENDER
+-DevPrivateKey dmxPictPrivateKey = &dmxPictPrivateKey; /**< Private index for Picts     */
+-DevPrivateKey dmxGlyphSetPrivateKey = &dmxGlyphSetPrivateKey; /**< Private index for GlyphSets */
++static int dmxPictPrivateKeyIndex;
++DevPrivateKey dmxPictPrivateKey = &dmxPictPrivateKeyIndex; /**< Private index for Picts     */
++static int dmxGlyphSetPrivateKeyIndex;
++DevPrivateKey dmxGlyphSetPrivateKey = &dmxGlyphSetPrivateKeyIndex; /**< Private index for GlyphSets */
+ #endif
+ 
+ /** Initialize the parts of screen \a idx that require access to the
+diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
+index 05cecf4..a906ad1 100644
+--- a/hw/kdrive/ephyr/ephyrdriext.c
++++ b/hw/kdrive/ephyr/ephyrdriext.c
+@@ -111,8 +111,10 @@ static Bool findWindowPairFromLocal (Win
+ 
+ static unsigned char DRIReqCode = 0;
+ 
+-static DevPrivateKey ephyrDRIWindowKey = &ephyrDRIWindowKey;
+-static DevPrivateKey ephyrDRIScreenKey = &ephyrDRIScreenKey;
++static int ephyrDRIWindowKeyIndex;
++static DevPrivateKey ephyrDRIWindowKey = &ephyrDRIWindowKeyIndex;
++static int ephyrDRIScreenKeyIndex;
++static DevPrivateKey ephyrDRIScreenKey = &ephyrDRIScreenKeyIndex;
+ 
+ #define GET_EPHYR_DRI_WINDOW_PRIV(win) ((EphyrDRIWindowPrivPtr) \
+     dixLookupPrivate(&(win)->devPrivates, ephyrDRIWindowKey))
+diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
+index 9e27840..1478a94 100644
+--- a/hw/kdrive/src/kdrive.c
++++ b/hw/kdrive/src/kdrive.c
+@@ -67,7 +67,8 @@ #define NUM_KD_DEPTHS (sizeof (kdDepths)
+ 
+ #define KD_DEFAULT_BUTTONS 5
+ 
+-DevPrivateKey       kdScreenPrivateKey = &kdScreenPrivateKey;
++static int          kdScreenPrivateKeyIndex;
++DevPrivateKey       kdScreenPrivateKey = &kdScreenPrivateKeyIndex;
+ unsigned long	    kdGeneration;
+ 
+ Bool                kdVideoTest;
+diff --git a/hw/kdrive/src/kxv.c b/hw/kdrive/src/kxv.c
+index 83ca393..9a74654 100644
+--- a/hw/kdrive/src/kxv.c
++++ b/hw/kdrive/src/kxv.c
+@@ -103,9 +103,10 @@ static void KdXVClipNotify(WindowPtr pWi
+ /* misc */
+ static Bool KdXVInitAdaptors(ScreenPtr, KdVideoAdaptorPtr*, int);
+ 
+-
+-DevPrivateKey KdXVWindowKey = &KdXVWindowKey;
+-DevPrivateKey KdXvScreenKey = &KdXvScreenKey;
++static int KdXVWindowKeyIndex;
++DevPrivateKey KdXVWindowKey = &KdXVWindowKeyIndex;
++static int KdXvScreenKeyIndex;
++DevPrivateKey KdXvScreenKey = &KdXvScreenKeyIndex;
+ static unsigned long KdXVGeneration = 0;
+ static unsigned long PortResource = 0;
+ 
+diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
+index a7e24a6..4dd31d8 100644
+--- a/hw/xfree86/common/xf86DGA.c
++++ b/hw/xfree86/common/xf86DGA.c
+@@ -50,7 +50,8 @@ #include "exglobals.h"
+ 
+ #include "mi.h"
+ 
+-static DevPrivateKey DGAScreenKey = NULL;
++static int DGAScreenKeyIndex;
++static DevPrivateKey DGAScreenKey;
+ static int mieq_installed = 0;
+ 
+ static Bool DGACloseScreen(int i, ScreenPtr pScreen);
+@@ -116,7 +117,7 @@ DGAInit(
+     if(!modes || num <= 0)
+ 	return FALSE;
+ 
+-    DGAScreenKey = &DGAScreenKey;
++    DGAScreenKey = &DGAScreenKeyIndex;
+ 
+     if(!(pScreenPriv = (DGAScreenPtr)xalloc(sizeof(DGAScreenRec))))
+ 	return FALSE;
+diff --git a/hw/xfree86/common/xf86DPMS.c b/hw/xfree86/common/xf86DPMS.c
+index 4fb901a..5ee5e24 100644
+--- a/hw/xfree86/common/xf86DPMS.c
++++ b/hw/xfree86/common/xf86DPMS.c
+@@ -47,7 +47,8 @@ #endif
+ 
+ 
+ #ifdef DPMSExtension
+-static DevPrivateKey DPMSKey = NULL;
++static int DPMSKeyIndex;
++static DevPrivateKey DPMSKey;
+ static Bool DPMSClose(int i, ScreenPtr pScreen);
+ static int DPMSCount = 0;
+ #endif
+@@ -62,7 +63,7 @@ #ifdef DPMSExtension
+     pointer DPMSOpt;
+     MessageType enabled_from = X_INFO;
+ 
+-    DPMSKey = &DPMSKey;
++    DPMSKey = &DPMSKeyIndex;
+ 
+     if (DPMSDisabledSwitch)
+ 	DPMSEnabled = FALSE;
+diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
+index 2362629..dffe988 100644
+--- a/hw/xfree86/common/xf86Globals.c
++++ b/hw/xfree86/common/xf86Globals.c
+@@ -47,10 +47,13 @@ #include "xf86InPriv.h"
+ /* Globals that video drivers may access */
+ 
+ /* Index into pScreen.devPrivates */
+-DevPrivateKey xf86CreateRootWindowKey = &xf86CreateRootWindowKey;
++static int xf86CreateRootWindowKeyIndex;
++DevPrivateKey xf86CreateRootWindowKey = &xf86CreateRootWindowKeyIndex;
+ /* Index of ScrnInfo in pScreen.devPrivates */
+-_X_EXPORT DevPrivateKey xf86ScreenKey = &xf86ScreenKey;
+-_X_EXPORT DevPrivateKey xf86PixmapKey = &xf86PixmapKey;
++static int xf86ScreenKeyIndex;
++_X_EXPORT DevPrivateKey xf86ScreenKey = &xf86ScreenKeyIndex;
++static int xf86PixmapKeyIndex;
++_X_EXPORT DevPrivateKey xf86PixmapKey = &xf86PixmapKeyIndex;
+ _X_EXPORT ScrnInfoPtr *xf86Screens = NULL;	/* List of ScrnInfos */
+ _X_EXPORT const unsigned char byte_reversed[256] =
+ {
+diff --git a/hw/xfree86/common/xf86RAC.c b/hw/xfree86/common/xf86RAC.c
+index 8215f98..24d29e4 100644
+--- a/hw/xfree86/rac/xf86RAC.c
++++ b/hw/xfree86/rac/xf86RAC.c
+@@ -256,8 +256,10 @@ static miPointerSpriteFuncRec RACSpriteF
+     RACSpriteMoveCursor
+ };
+ 
+-static DevPrivateKey RACScreenKey = &RACScreenKey;
+-static DevPrivateKey RACGCKey = &RACGCKey;
++static int RACScreenKeyIndex;
++static DevPrivateKey RACScreenKey = &RACScreenKeyIndex;
++static int RACGCKeyIndex;
++static DevPrivateKey RACGCKey = &RACGCKeyIndex;
+ 
+ 
+ Bool 
+diff --git a/hw/xfree86/common/xf86RandR.c b/hw/xfree86/common/xf86RandR.c
+index 10ec370..8471914 100644
+--- a/hw/xfree86/common/xf86RandR.c
++++ b/hw/xfree86/common/xf86RandR.c
+@@ -46,7 +46,8 @@ typedef struct _xf86RandRInfo {
+     Rotation			    rotation;
+ } XF86RandRInfoRec, *XF86RandRInfoPtr;
+ 
+-static DevPrivateKey xf86RandRKey = NULL;
++static int xf86RandRKeyIndex;
++static DevPrivateKey xf86RandRKey;
+ 
+ #define XF86RANDRINFO(p) ((XF86RandRInfoPtr)dixLookupPrivate(&(p)->devPrivates, xf86RandRKey))
+ 
+@@ -423,7 +424,7 @@ #ifdef PANORAMIX
+ 	return TRUE;
+ #endif
+ 
+-    xf86RandRKey = &xf86RandRKey;
++    xf86RandRKey = &xf86RandRKeyIndex;
+ 
+     randrp = xalloc (sizeof (XF86RandRInfoRec));
+     if (!randrp)
+diff --git a/hw/xfree86/common/xf86VidMode.c b/hw/xfree86/common/xf86VidMode.c
+index 9260bb5..24fccd3 100644
+--- a/hw/xfree86/common/xf86VidMode.c
++++ b/hw/xfree86/common/xf86VidMode.c
+@@ -47,7 +47,8 @@ #ifdef XF86VIDMODE
+ #include "vidmodeproc.h"
+ #include "xf86cmap.h"
+ 
+-static DevPrivateKey VidModeKey = NULL;
++static int VidModeKeyIndex;
++static DevPrivateKey VidModeKey;
+ static int VidModeCount = 0;
+ static Bool VidModeClose(int i, ScreenPtr pScreen);
+ 
+@@ -72,7 +73,7 @@ #ifdef XF86VIDMODE
+ 	return FALSE;
+     }
+ 
+-    VidModeKey = &VidModeKey;
++    VidModeKey = &VidModeKeyIndex;
+ 
+     if (!dixSetPrivate(&pScreen->devPrivates, VidModeKey,
+ 		       xcalloc(sizeof(VidModeRec), 1))) {
+diff --git a/hw/xfree86/common/xf86cmap.c b/hw/xfree86/common/xf86cmap.c
+index 8ae193a..e578447 100644
+--- a/hw/xfree86/common/xf86cmap.c
++++ b/hw/xfree86/common/xf86cmap.c
+@@ -101,8 +101,10 @@ typedef struct {
+   int		overscan;
+ } CMapColormapRec, *CMapColormapPtr;
+ 
+-static DevPrivateKey CMapScreenKey = NULL;
+-static DevPrivateKey CMapColormapKey = &CMapColormapKey;
++static int CMapScreenKeyIndex;
++static DevPrivateKey CMapScreenKey;
++static int CMapColormapKeyIndex;
++static DevPrivateKey CMapColormapKey = &CMapColormapKeyIndex;
+ 
+ static void CMapInstallColormap(ColormapPtr);
+ static void CMapStoreColors(ColormapPtr, int, xColorItem *);
+@@ -142,7 +144,7 @@ _X_EXPORT Bool xf86HandleColormaps(
+     if(!maxColors || !sigRGBbits || !loadPalette)
+ 	return FALSE;
+ 
+-    CMapScreenKey = &CMapScreenKey;
++    CMapScreenKey = &CMapScreenKeyIndex;
+ 
+     elements = 1 << sigRGBbits;
+ 
+diff --git a/hw/xfree86/common/xf86fbman.c b/hw/xfree86/common/xf86fbman.c
+index 9fd2e6c..5471c58 100644
+--- a/hw/xfree86/common/xf86fbman.c
++++ b/hw/xfree86/common/xf86fbman.c
+@@ -42,14 +42,15 @@ #include "xf86fbman.h"
+ #define DEBUG
+ */
+ 
+-static DevPrivateKey xf86FBManagerKey = NULL;
++static int xf86FBManagerKeyIndex;
++static DevPrivateKey xf86FBManagerKey;
+ 
+ _X_EXPORT Bool xf86RegisterOffscreenManager(
+     ScreenPtr pScreen, 
+     FBManagerFuncsPtr funcs
+ ){
+ 
+-   xf86FBManagerKey = &xf86FBManagerKey;
++   xf86FBManagerKey = &xf86FBManagerKeyIndex;
+    dixSetPrivate(&pScreen->devPrivates, xf86FBManagerKey, funcs);
+ 
+    return TRUE;
+@@ -269,7 +270,8 @@ xf86PurgeUnlockedOffscreenAreas(ScreenPt
+ 
+ \************************************************************/ 
+ 
+-static DevPrivateKey xf86FBScreenKey = &xf86FBScreenKey;
++static int xf86FBScreenKeyIndex;
++static DevPrivateKey xf86FBScreenKey = &xf86FBScreenKeyIndex;
+ 
+ typedef struct _FBLink {
+   FBArea area;
+diff --git a/hw/xfree86/common/xf86sbusBus.c b/hw/xfree86/common/xf86sbusBus.c
+index 63d1cb3..af2b145 100644
+--- a/hw/xfree86/common/xf86sbusBus.c
++++ b/hw/xfree86/common/xf86sbusBus.c
+@@ -602,7 +602,8 @@ xf86SbusUseBuiltinMode(ScrnInfoPtr pScrn
+     pScrn->virtualY = psdp->height;
+ }
+ 
+-static DevPrivateKey sbusPaletteKey = &sbusPaletteKey;
++static sbusPaletteKeyIndex;
++static DevPrivateKey sbusPaletteKey = &sbusPaletteKeyIndex;
+ typedef struct _sbusCmap {
+     sbusDevicePtr psdp;
+     CloseScreenProcPtr CloseScreen;
+diff --git a/hw/xfree86/common/xf86xv.c b/hw/xfree86/common/xf86xv.c
+index 7483e20..b263f9b 100644
+--- a/hw/xfree86/common/xf86xv.c
++++ b/hw/xfree86/common/xf86xv.c
+@@ -110,8 +110,10 @@ static void xf86XVAdjustFrame(int index,
+ static Bool xf86XVInitAdaptors(ScreenPtr, XF86VideoAdaptorPtr*, int);
+ 
+ 
+-static DevPrivateKey XF86XVWindowKey = &XF86XVWindowKey;
+-DevPrivateKey XF86XvScreenKey;
++static int XF86XVWindowKeyIndex;
++static DevPrivateKey XF86XVWindowKey = &XF86XVWindowKeyIndex;
++static int XF86XvScreenKeyIndex;
++DevPrivateKey XF86XvScreenKey = &XF86XvScreenKeyIndex;
+ static unsigned long PortResource = 0;
+ 
+ DevPrivateKey (*XvGetScreenKeyProc)(void) = NULL;
+diff --git a/hw/xfree86/common/xf86xvmc.c b/hw/xfree86/common/xf86xvmc.c
+index 05267a2..41ef0a0 100644
+--- a/hw/xfree86/common/xf86xvmc.c
++++ b/hw/xfree86/common/xf86xvmc.c
+@@ -56,7 +56,8 @@ typedef struct {
+   XvMCAdaptorPtr dixinfo;
+ } xf86XvMCScreenRec, *xf86XvMCScreenPtr;
+ 
+-static DevPrivateKey XF86XvMCScreenKey = &XF86XvMCScreenKey;
++static int XF86XvMCScreenKeyIndex;
++static DevPrivateKey XF86XvMCScreenKey = &XF86XvMCScreenKeyIndex;
+ 
+ #define XF86XVMC_GET_PRIVATE(pScreen) (xf86XvMCScreenPtr) \
+     dixLookupPrivate(&(pScreen)->devPrivates, XF86XvMCScreenKey)
+diff --git a/hw/xfree86/dixmods/extmod/xf86dga2.c b/hw/xfree86/dixmods/extmod/xf86dga2.c
+index 295e05e..c12178f 100644
+--- a/hw/xfree86/dixmods/extmod/xf86dga2.c
++++ b/hw/xfree86/dixmods/extmod/xf86dga2.c
+@@ -62,7 +62,8 @@ unsigned char DGAReqCode = 0;
+ int DGAErrorBase;
+ int DGAEventBase;
+ 
+-static DevPrivateKey DGAClientPrivateKey = &DGAClientPrivateKey;
++static int DGAClientPrivateKeyIndex;
++static DevPrivateKey DGAClientPrivateKey = &DGAClientPrivateKeyIndex;
+ static int DGACallbackRefCount = 0;
+ 
+ /* This holds the client's version information */
+diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c
+index 559f18b..6485a04 100644
+--- a/hw/xfree86/dixmods/extmod/xf86vmode.c
++++ b/hw/xfree86/dixmods/extmod/xf86vmode.c
+@@ -53,7 +53,8 @@ #include "globals.h"
+ #define DEFAULT_XF86VIDMODE_VERBOSITY	3
+ 
+ static int VidModeErrorBase;
+-static DevPrivateKey VidModeClientPrivateKey = &VidModeClientPrivateKey;
++static int VidModeClientPrivateKeyIndex;
++static DevPrivateKey VidModeClientPrivateKey = &VidModeClientPrivateKeyIndex;
+ 
+ /* This holds the client's version information */
+ typedef struct {
+@@ -141,8 +142,9 @@ typedef struct _XF86VidModeScreenPrivate
+     XF86VidModeEventPtr	events;
+     Bool		hasWindow;
+ } XF86VidModeScreenPrivateRec, *XF86VidModeScreenPrivatePtr;
+-   
+-static DevPrivateKey ScreenPrivateKey = &ScreenPrivateKey;
++
++static int ScreenPrivateKeyIndex;
++static DevPrivateKey ScreenPrivateKey = &ScreenPrivateKeyIndex;
+ 
+ #define GetScreenPrivate(s) ((ScreenSaverScreenPrivatePtr) \
+     dixLookupPrivate(&(s)->devPrivates, ScreenPrivateKey))
+diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c
+index ac40e0f..d2599a9 100644
+--- a/hw/xfree86/dri/dri.c
++++ b/hw/xfree86/dri/dri.c
+@@ -79,8 +79,10 @@ extern Bool noPanoramiXExtension;
+ #endif
+ 
+ static int DRIEntPrivIndex = -1;
+-static DevPrivateKey DRIScreenPrivKey = &DRIScreenPrivKey;
+-static DevPrivateKey DRIWindowPrivKey = &DRIWindowPrivKey;
++static int DRIScreenPrivKeyIndex;
++static DevPrivateKey DRIScreenPrivKey = &DRIScreenPrivKeyIndex;
++static int DRIWindowPrivKeyIndex;
++static DevPrivateKey DRIWindowPrivKey = &DRIWindowPrivKeyIndex;
+ static unsigned long DRIGeneration = 0;
+ static unsigned int DRIDrawableValidationStamp = 0;
+ 
+@@ -343,7 +345,6 @@ DRIScreenInit(ScreenPtr pScreen, DRIInfo
+ 
+     pDRIEntPriv = DRI_ENT_PRIV(pScrn);
+ 
+-    DRIScreenPrivKey = &DRIScreenPrivKey;
+     if (DRIGeneration != serverGeneration)
+ 	DRIGeneration = serverGeneration;
+ 
+diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
+index 74aef71..a5aef91 100644
+--- a/hw/xfree86/dri2/dri2.c
++++ b/hw/xfree86/dri2/dri2.c
+@@ -45,9 +45,12 @@ #include <GL/internal/dri_sarea.h>
+ 
+ #include "xf86.h"
+ 
+-static DevPrivateKey dri2ScreenPrivateKey = &dri2ScreenPrivateKey;
+-static DevPrivateKey dri2WindowPrivateKey = &dri2WindowPrivateKey;
+-static DevPrivateKey dri2PixmapPrivateKey = &dri2PixmapPrivateKey;
++static int dri2ScreenPrivateKeyIndex;
++static DevPrivateKey dri2ScreenPrivateKey = &dri2ScreenPrivateKeyIndex;
++static int dri2WindowPrivateKeyIndex;
++static DevPrivateKey dri2WindowPrivateKey = &dri2WindowPrivateKeyIndex;
++static int dri2PixmapPrivateKeyIndex;
++static DevPrivateKey dri2PixmapPrivateKey = &dri2PixmapPrivateKeyIndex;
+ 
+ typedef struct _DRI2DrawablePriv {
+     unsigned int		 refCount;
+diff --git a/hw/xfree86/exa/examodule.c b/hw/xfree86/exa/examodule.c
+index 4a8d8f2..601288c 100644
+--- a/hw/xfree86/exa/examodule.c
++++ b/hw/xfree86/exa/examodule.c
+@@ -42,7 +42,8 @@ typedef struct _ExaXorgScreenPrivRec {
+     OptionInfoPtr		 options;
+ } ExaXorgScreenPrivRec, *ExaXorgScreenPrivPtr;
+ 
+-static DevPrivateKey exaXorgScreenPrivateKey = &exaXorgScreenPrivateKey;
++static int exaXorgScreenPrivateKeyIndex;
++static DevPrivateKey exaXorgScreenPrivateKey = &exaXorgScreenPrivateKeyIndex;
+ 
+ typedef enum {
+     EXAOPT_MIGRATION_HEURISTIC,
+diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
+index ac0b438..2ae8ea7 100644
+--- a/hw/xfree86/modes/xf86RandR12.c
++++ b/hw/xfree86/modes/xf86RandR12.c
+@@ -63,7 +63,9 @@ #endif
+ #endif
+ 
+ static int xf86RandR12Generation;
++ 
++static int xf86RandR12KeyIndex;
+ static DevPrivateKey xf86RandR12Key;
+ 
+ #define XF86RANDRINFO(p) ((XF86RandRInfoPtr) \
+     dixLookupPrivate(&(p)->devPrivates, xf86RandR12Key))
+@@ -499,6 +500,6 @@ #endif
+ 	xf86RandR12Generation = serverGeneration;
+ 
+-    xf86RandR12Key = &xf86RandR12Key;
++    xf86RandR12Key = &xf86RandR12KeyIndex;
+ 
+     randrp = xalloc (sizeof (XF86RandRInfoRec));
+     if (!randrp)
+diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c
+index be4fb90..592eaad 100644
+--- a/hw/xfree86/ramdac/xf86Cursor.c
++++ b/hw/xfree86/ramdac/xf86Cursor.c
+@@ -18,7 +18,8 @@ #include "cursorstr.h"
+ #include "inputstr.h"
+ extern InputInfo inputInfo;
+ 
+-DevPrivateKey xf86CursorScreenKey = &xf86CursorScreenKey;
++static int xf86CursorScreenKeyIndex;
++DevPrivateKey xf86CursorScreenKey = &xf86CursorScreenKeyIndex;
+ 
+ /* sprite functions */
+ 
+diff --git a/hw/xfree86/shadowfb/shadow.c b/hw/xfree86/shadowfb/shadow.c
+index 74beefb..ff775ef 100644
+--- a/hw/xfree86/shadowfb/shadow.c
++++ b/hw/xfree86/shadowfb/shadow.c
+@@ -94,8 +94,10 @@ typedef struct {
+ } ShadowGCRec, *ShadowGCPtr;
+ 
+ 
+-static DevPrivateKey ShadowScreenKey = &ShadowScreenKey;
+-static DevPrivateKey ShadowGCKey = &ShadowGCKey;
++static int ShadowScreenKeyIndex;
++static DevPrivateKey ShadowScreenKey = &ShadowScreenKeyIndex;
++static int ShadowGCKeyIndex;
++static DevPrivateKey ShadowGCKey = &ShadowGCKeyIndex;
+ 
+ #define GET_SCREEN_PRIVATE(pScreen) \
+     (ShadowScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, ShadowScreenKey)
+diff --git a/hw/xfree86/xaa/xaaInit.c b/hw/xfree86/xaa/xaaInit.c
+index 22a35a0..deb1989 100644
+--- a/hw/xfree86/xaa/xaaInit.c
++++ b/hw/xfree86/xaa/xaaInit.c
+@@ -39,9 +39,12 @@ static int  XAASetDGAMode(int index, int
+ static void XAAEnableDisableFBAccess (int index, Bool enable);
+ static Bool XAAChangeWindowAttributes (WindowPtr pWin, unsigned long mask);
+ 
+-static DevPrivateKey XAAScreenKey = &XAAScreenKey;
+-static DevPrivateKey XAAGCKey = &XAAGCKey;
+-static DevPrivateKey XAAPixmapKey = &XAAPixmapKey;
++static int XAAScreenKeyIndex;
++static DevPrivateKey XAAScreenKey = &XAAScreenKeyIndex;
++static int XAAGCKeyIndex;
++static DevPrivateKey XAAGCKey = &XAAGCKeyIndex;
++static int XAAPixmapKeyIndex;
++static DevPrivateKey XAAPixmapKey = &XAAPixmapKeyIndex;
+ 
+ DevPrivateKey XAAGetScreenKey(void) {
+     return XAAScreenKey;
+diff --git a/hw/xfree86/xaa/xaaOverlayDF.c b/hw/xfree86/xaa/xaaOverlayDF.c
+index 64ca998..8db816e 100644
+--- a/hw/xfree86/xaa/xaaOverlayDF.c
++++ b/hw/xfree86/xaa/xaaOverlayDF.c
+@@ -151,7 +151,8 @@ typedef struct {
+    int (*TiledFillChooser)(GCPtr);
+ } XAAOverlayRec, *XAAOverlayPtr;
+ 
+-static DevPrivateKey XAAOverlayKey = &XAAOverlayKey;
++static int XAAOverlayKeyIndex;
++static DevPrivateKey XAAOverlayKey = &XAAOverlayKeyIndex;
+ 
+ #define GET_OVERLAY_PRIV(pScreen) \
+     (XAAOverlayPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAOverlayKey)
+diff --git a/hw/xfree86/xaa/xaaStateChange.c b/hw/xfree86/xaa/xaaStateChange.c
+index 443bda6..57d8aa3 100644
+--- a/hw/xfree86/xaa/xaaStateChange.c
++++ b/hw/xfree86/xaa/xaaStateChange.c
+@@ -274,7 +274,8 @@ #ifdef RENDER
+ #endif
+ } XAAStateWrapRec, *XAAStateWrapPtr;
+ 
+-static DevPrivateKey XAAStateKey = &XAAStateKey;
++static int XAAStateKeyIndex;
++static DevPrivateKey XAAStateKey = &XAAStateKeyIndex;
+ 
+ /* Wrap functions start here */
+ #define GET_STATEPRIV_GC(pGC)   XAAStateWrapPtr pStatePriv =\
+diff --git a/hw/xfree86/xaa/xaaWrapper.c b/hw/xfree86/xaa/xaaWrapper.c
+index 5d6ea05..8841894 100644
+--- a/hw/xfree86/xaa/xaaWrapper.c
++++ b/hw/xfree86/xaa/xaaWrapper.c
+@@ -129,8 +129,10 @@ #define xaaWrapperGetGCPriv(pGC) ((xaaWr
+ #define xaaWrapperGCPriv(pGC)   xaaWrapperGCPrivPtr  pGCPriv = xaaWrapperGetGCPriv(pGC)
+ 
+ 
+-static DevPrivateKey xaaWrapperScrPrivateKey = &xaaWrapperScrPrivateKey;
+-static DevPrivateKey xaaWrapperGCPrivateKey = &xaaWrapperGCPrivateKey;
++static int xaaWrapperScrPrivateKeyIndex;
++static DevPrivateKey xaaWrapperScrPrivateKey = &xaaWrapperScrPrivateKeyIndex;
++static int xaaWrapperGCPrivateKeyIndex;
++static DevPrivateKey xaaWrapperGCPrivateKey = &xaaWrapperGCPrivateKeyIndex;
+ 
+ static Bool
+ xaaWrapperCreateScreenResources(ScreenPtr pScreen)
+diff --git a/hw/xnest/GC.c b/hw/xnest/GC.c
+index 06e6e02..65425e9 100644
+--- a/hw/xnest/GC.c
++++ b/hw/xnest/GC.c
+@@ -35,7 +35,8 @@ #include "Drawable.h"
+ #include "XNFont.h"
+ #include "Color.h"
+ 
+-DevPrivateKey xnestGCPrivateKey = &xnestGCPrivateKey;
++static int xnestGCPrivateKeyIndex;
++DevPrivateKey xnestGCPrivateKey = &xnestGCPrivateKeyIndex;
+ 
+ static GCFuncs xnestFuncs = {
+   xnestValidateGC,
+diff --git a/hw/xnest/Pixmap.c b/hw/xnest/Pixmap.c
+index 0431196..08305b1 100644
+--- a/hw/xnest/Pixmap.c
++++ b/hw/xnest/Pixmap.c
+@@ -33,7 +33,8 @@ #include "Display.h"
+ #include "Screen.h"
+ #include "XNPixmap.h"
+ 
+-DevPrivateKey xnestPixmapPrivateKey = &xnestPixmapPrivateKey;
++static int xnestPixmapPrivateKeyIndex;
++DevPrivateKey xnestPixmapPrivateKey = &xnestPixmapPrivateKeyIndex;
+ 
+ PixmapPtr
+ xnestCreatePixmap(ScreenPtr pScreen, int width, int height, int depth,
+#diff --git a/hw/xnest/Screen.c b/hw/xnest/Screen.c
+#index 4e8616d..ca903d7 100644
+#--- a/hw/xnest/Screen.c
+#+++ b/hw/xnest/Screen.c
+#@@ -45,7 +45,8 @@ #include "mipointrst.h"
+# 
+# Window xnestDefaultWindows[MAXSCREENS];
+# Window xnestScreenSaverWindows[MAXSCREENS];
+#-DevPrivateKey xnestCursorScreenKey = &xnestCursorScreenKey;
+#+static int xnestCursorScreenKeyIndex;
+#+DevPrivateKey xnestCursorScreenKey = &xnestCursorScreenKeyIndex;
+# 
+# ScreenPtr
+# xnestScreen(Window window)
+diff --git a/hw/xnest/Window.c b/hw/xnest/Window.c
+index 23383e1..ae3487f 100644
+--- a/hw/xnest/Window.c
++++ b/hw/xnest/Window.c
+@@ -39,7 +39,8 @@ #include "Visual.h"
+ #include "Events.h"
+ #include "Args.h"
+ 
+-DevPrivateKey xnestWindowPrivateKey = &xnestWindowPrivateKey;
++static int xnestWindowPrivateKeyIndex;
++DevPrivateKey xnestWindowPrivateKey = &xnestWindowPrivateKeyIndex;
+ 
+ static int
+ xnestFindWindowMatch(WindowPtr pWin, pointer ptr)
+diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
+index 8107beb..559bc89 100644
+--- a/hw/xquartz/darwin.c
++++ b/hw/xquartz/darwin.c
+@@ -85,7 +85,8 @@ #endif
+  * X server shared global variables
+  */
+ int                     darwinScreensFound = 0;
+-DevPrivateKey           darwinScreenKey = &darwinScreenKey;
++static int              darwinScreenKeyIndex;
++DevPrivateKey           darwinScreenKey = &darwinScreenKeyIndex;
+ io_connect_t            darwinParamConnect = 0;
+ int                     darwinEventReadFD = -1;
+ int                     darwinEventWriteFD = -1;
+diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c
+index c4b889e..b17e561 100644
+--- a/hw/xquartz/quartz.c
++++ b/hw/xquartz/quartz.c
+@@ -71,7 +71,8 @@ int                     quartzUseAGL = 1
+ int                     quartzEnableKeyEquivalents = 1;
+ int                     quartzServerVisible = TRUE;
+ int                     quartzServerQuitting = FALSE;
+-DevPrivateKey           quartzScreenKey = &quartzScreenKey;
++static int              quartzScreenKeyIndex;
++DevPrivateKey           quartzScreenKey = &quartzScreenKeyIndex;
+ int                     aquaMenuBarHeight = 0;
+ QuartzModeProcsPtr      quartzProcs = NULL;
+ const char             *quartzOpenGLBundle = NULL;
+diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c
+index 3aacb19..5b79419 100644
+--- a/hw/xquartz/xpr/dri.c
++++ b/hw/xquartz/xpr/dri.c
+@@ -71,9 +71,12 @@ #include "x-hook.h"
+ 
+ #include <AvailabilityMacros.h>
+ 
+-static DevPrivateKey DRIScreenPrivKey = &DRIScreenPrivKey;
+-static DevPrivateKey DRIWindowPrivKey = &DRIWindowPrivKey;
+-static DevPrivateKey DRIPixmapPrivKey = &DRIPixmapPrivKey;
++static int DRIScreenPrivKeyIndex;
++static DevPrivateKey DRIScreenPrivKey = &DRIScreenPrivKeyIndex;
++static int DRIWindowPrivKeyIndex;
++static DevPrivateKey DRIWindowPrivKey = &DRIWindowPrivKeyIndex;
++static int DRIPixmapPrivKeyIndex;
++static DevPrivateKey DRIPixmapPrivKey = &DRIPixmapPrivKeyIndex;
+ 
+ static RESTYPE DRIDrawablePrivResType;
+ 
+diff --git a/hw/xquartz/xpr/xprCursor.c b/hw/xquartz/xpr/xprCursor.c
+index 76ab75c..c1890a2 100644
+--- a/hw/xquartz/xpr/xprCursor.c
++++ b/hw/xquartz/xpr/xprCursor.c
+@@ -56,7 +56,8 @@ typedef struct {
+     miPointerSpriteFuncPtr  spriteFuncs;
+ } QuartzCursorScreenRec, *QuartzCursorScreenPtr;
+ 
+-static DevPrivateKey darwinCursorScreenKey = &darwinCursorScreenKey;
++static int darwinCursorScreenKeyIndex;
++static DevPrivateKey darwinCursorScreenKey = &darwinCursorScreenKeyIndex;
+ 
+ #define CURSOR_PRIV(pScreen) ((QuartzCursorScreenPtr) \
+     dixLookupPrivate(&pScreen->devPrivates, darwinCursorScreenKey))
+diff --git a/hw/xwin/winglobals.c b/hw/xwin/winglobals.c
+index fddada3..3eb6091 100644
+--- a/hw/xwin/winglobals.c
++++ b/hw/xwin/winglobals.c
+@@ -44,11 +44,16 @@ int		g_iLastScreen = -1;
+ #ifdef HAS_DEVWINDOWS
+ int		g_fdMessageQueue = WIN_FD_INVALID;
+ #endif
+-DevPrivateKey	g_iScreenPrivateKey = &g_iScreenPrivateKey;
+-DevPrivateKey	g_iCmapPrivateKey = &g_iCmapPrivateKey;
+-DevPrivateKey	g_iGCPrivateKey = &g_iGCPrivateKey;
+-DevPrivateKey	g_iPixmapPrivateKey = &g_iPixmapPrivateKey;
+-DevPrivateKey	g_iWindowPrivateKey = &g_iWindowPrivateKey;
++static int	g_iScreenPrivateKeyIndex;
++DevPrivateKey	g_iScreenPrivateKey = &g_iScreenPrivateKeyIndex;
++static int	g_iCmapPrivateKeyIndex;
++DevPrivateKey	g_iCmapPrivateKey = &g_iCmapPrivateKeyIndex;
++static int	g_iGCPrivateKeyIndex;
++DevPrivateKey	g_iGCPrivateKey = &g_iGCPrivateKeyIndex;
++static int	g_iPixmapPrivateKeyIndex;
++DevPrivateKey	g_iPixmapPrivateKey = &g_iPixmapPrivateKeyIndex;
++static int	g_iWindowPrivateKeyIndex;
++DevPrivateKey	g_iWindowPrivateKey = &g_iWindowPrivateKeyIndex;
+ unsigned long	g_ulServerGeneration = 0;
+ Bool		g_fInitializedDefaultScreens = FALSE;
+ DWORD		g_dwEnginesSupported = 0;
+diff --git a/mi/mibank.c b/mi/mibank.c
+index ea79e9d..92288ab 100644
+--- a/mi/mibank.c
++++ b/mi/mibank.c
+@@ -175,8 +175,11 @@ #define SET_DESTINATION_BANK(_pPix, _wid
+ #define xalloc_ARRAY(atype, ntype) \
+     (atype *)xalloc((ntype) * sizeof(atype))
+ 
+-static DevPrivateKey miBankScreenKey = &miBankScreenKey;
+-static DevPrivateKey miBankGCKey = &miBankGCKey;
++static int miBankScreenKeyIndex;
++static DevPrivateKey miBankScreenKey = &miBankScreenKeyIndex;
++static int miBankGCKeyIndex;
++static DevPrivateKey miBankGCKey = &miBankGCKeyIndex;
++
+ static unsigned long miBankGeneration = 0;
+ 
+ #define BANK_SCRPRIVLVAL dixLookupPrivate(&pScreen->devPrivates, miBankScreenKey)
+diff --git a/mi/midispcur.c b/mi/midispcur.c
+index 1f2d8cf..05352fc 100644
+--- a/mi/midispcur.c
++++ b/mi/midispcur.c
+@@ -55,8 +55,8 @@ #endif
+ # include "inputstr.h" /* for MAX_DEVICES */
+ 
+ /* per-screen private data */
+-
+-static DevPrivateKey miDCScreenKey = &miDCScreenKey;
++static int miDCScreenKeyIndex;
++static DevPrivateKey miDCScreenKey = &miDCScreenKeyIndex;
+ 
+ static Bool	miDCCloseScreen(int index, ScreenPtr pScreen);
+ 
+#-static DevPrivateKey miPointerPrivKey = &miPointerPrivKey;
+#+static int miPointerPrivKeyIndex;
+#+static DevPrivateKey miPointerPrivKey = &miPointerPrivKeyIndex;
+# 
+# #define MIPOINTER(dev) \
+#     ((DevHasCursor((dev)) || (!dev->isMaster && !dev->u.master)) ? \
+
+diff --git a/mi/mioverlay.c b/mi/mioverlay.c
+index 2fc583e..395b1aa 100644
+--- a/mi/mioverlay.c
++++ b/mi/mioverlay.c
+@@ -54,8 +54,10 @@ typedef struct {
+    Bool				copyUnderlay;
+ } miOverlayScreenRec, *miOverlayScreenPtr;
+ 
+-static DevPrivateKey miOverlayWindowKey = &miOverlayWindowKey;
+-static DevPrivateKey miOverlayScreenKey = &miOverlayScreenKey;
++static int miOverlayWindowKeyKeyIndex;
++static DevPrivateKey miOverlayWindowKey = &miOverlayWindowKeyKeyIndex;
++static int miOverlayScreenKeyIndex;
++static DevPrivateKey miOverlayScreenKey = &miOverlayScreenKeyIndex;
+ 
+ static void RebuildTree(WindowPtr);
+ static Bool HasUnderlayChildren(WindowPtr);
+diff --git a/mi/mipointer.c b/mi/mipointer.c
+index 809ce5e..8293e9b 100644
+--- a/mi/mipointer.c
++++ b/mi/mipointer.c
+@@ -41,9 +41,10 @@ # include   "cursorstr.h"
+ # include   "dixstruct.h"
+ # include   "inputstr.h"
+ 
+-_X_EXPORT DevPrivateKey miPointerScreenKey = &miPointerScreenKey;
++static int miPointerScreenKeyIndex;
++_X_EXPORT DevPrivateKey miPointerScreenKey = &miPointerScreenKeyIndex;
+ 
+ #define GetScreenPrivate(s) ((miPointerScreenPtr) \
+     dixLookupPrivate(&(s)->devPrivates, miPointerScreenKey))
+ #define SetupScreen(s)	miPointerScreenPtr  pScreenPriv = GetScreenPrivate(s)
+ 
+#-static DevPrivateKey miPointerPrivKey = &miPointerPrivKey;
+#+static int miPointerPrivKeyIndex;
+#+static DevPrivateKey miPointerPrivKey = &miPointerPrivKeyIndex;
+# 
+# #define MIPOINTER(dev) \
+#     ((DevHasCursor((dev)) || (!dev->isMaster && !dev->u.master)) ? \
+#
+diff --git a/mi/miscrinit.c b/mi/miscrinit.c
+index 6cd4df3..df96993 100644
+--- a/mi/miscrinit.c
++++ b/mi/miscrinit.c
+@@ -280,7 +280,8 @@ #endif
+     return miScreenDevPrivateInit(pScreen, width, pbits);
+ }
+ 
+-static DevPrivateKey privateKey = &privateKey;
++static int privateKeyIndex;
++static DevPrivateKey privateKey = &privateKeyIndex;
+ 
+ _X_EXPORT DevPrivateKey
+ miAllocateGCPrivateIndex()
+@@ -288,7 +289,8 @@ miAllocateGCPrivateIndex()
+     return privateKey;
+ }
+ 
+-_X_EXPORT DevPrivateKey miZeroLineScreenKey = &miZeroLineScreenKey;
++static int miZeroLineScreenKeyIndex;
++_X_EXPORT DevPrivateKey miZeroLineScreenKey = &miZeroLineScreenKeyIndex;
+ 
+ _X_EXPORT void
+ miSetZeroLineBias(ScreenPtr pScreen, unsigned int bias)
+diff --git a/mi/misprite.c b/mi/misprite.c
+index 85755b7..692e6c9 100644
+--- a/mi/misprite.c
++++ b/mi/misprite.c
+@@ -109,7 +109,8 @@ miSpriteIsDown(miCursorInfoPtr pDevCurso
+  * screen wrappers
+  */
+ 
+-static DevPrivateKey miSpriteScreenKey = &miSpriteScreenKey;
++static int miSpriteScreenKeyIndex;
++static DevPrivateKey miSpriteScreenKey = &miSpriteScreenKeyIndex;
+ 
+ static Bool	    miSpriteCloseScreen(int i, ScreenPtr pScreen);
+ static void	    miSpriteGetImage(DrawablePtr pDrawable, int sx, int sy,
+diff --git a/miext/cw/cw.c b/miext/cw/cw.c
+index efb0469..56066fe 100644
+--- a/miext/cw/cw.c
++++ b/miext/cw/cw.c
+@@ -43,11 +43,15 @@ #else
+ #define CW_ASSERT(x) do {} while (0)
+ #endif
+ 
+-DevPrivateKey cwGCKey = &cwGCKey;
+-DevPrivateKey cwScreenKey = &cwScreenKey;
+-DevPrivateKey cwWindowKey = &cwWindowKey;
++static int cwGCKeyIndex;
++DevPrivateKey cwGCKey = &cwGCKeyIndex;
++static int cwScreenKeyIndex;
++DevPrivateKey cwScreenKey = &cwScreenKeyIndex;
++static int cwWindowKeyIndex;
++DevPrivateKey cwWindowKey = &cwWindowKeyIndex;
+ #ifdef RENDER
+-DevPrivateKey cwPictureKey = &cwPictureKey;
++static int cwPictureKeyIndex;
++DevPrivateKey cwPictureKey = &cwPictureKeyIndex;
+ #endif
+ extern GCOps cwGCOps;
+ 
+diff --git a/miext/damage/damage.c b/miext/damage/damage.c
+index 56864c5..5000a82 100755
+--- a/miext/damage/damage.c
++++ b/miext/damage/damage.c
+@@ -70,10 +70,14 @@ #define getPixmapDamageRef(pPixmap) ((Da
+ 
+ #define pixmapDamage(pPixmap)		damagePixPriv(pPixmap)
+ 
+-static DevPrivateKey damageScrPrivateKey = &damageScrPrivateKey;
+-static DevPrivateKey damagePixPrivateKey = &damagePixPrivateKey;
+-static DevPrivateKey damageGCPrivateKey = &damageGCPrivateKey;
+-static DevPrivateKey damageWinPrivateKey = &damageWinPrivateKey;
++static int damageScrPrivateKeyIndex;
++static DevPrivateKey damageScrPrivateKey = &damageScrPrivateKeyIndex;
++static int damagePixPrivateKeyIndex;
++static DevPrivateKey damagePixPrivateKey = &damagePixPrivateKeyIndex;
++static int damageGCPrivateKeyIndex;
++static DevPrivateKey damageGCPrivateKey = &damageGCPrivateKeyIndex;
++static int damageWinPrivateKeyIndex;
++static DevPrivateKey damageWinPrivateKey = &damageWinPrivateKeyIndex;
+ 
+ static DamagePtr *
+ getDrawableDamageRef (DrawablePtr pDrawable)
+diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c
+index 8eaacca..421c03c 100644
+--- a/miext/rootless/rootlessScreen.c
++++ b/miext/rootless/rootlessScreen.c
+@@ -62,10 +62,14 @@ extern int RootlessMiValidateTree(Window
+ extern Bool RootlessCreateGC(GCPtr pGC);
+ 
+ // Initialize globals
+-DevPrivateKey rootlessGCPrivateKey = &rootlessGCPrivateKey;
+-DevPrivateKey rootlessScreenPrivateKey = &rootlessScreenPrivateKey;
+-DevPrivateKey rootlessWindowPrivateKey = &rootlessWindowPrivateKey;
+-DevPrivateKey rootlessWindowOldPixmapPrivateKey = &rootlessWindowOldPixmapPrivateKey;
++static int rootlessGCPrivateKeyIndex;
++DevPrivateKey rootlessGCPrivateKey = &rootlessGCPrivateKeyIndex;
++static int rootlessScreenPrivateKeyIndex;
++DevPrivateKey rootlessScreenPrivateKey = &rootlessScreenPrivateKeyIndex;
++static int rootlessWindowPrivateKeyIndex;
++DevPrivateKey rootlessWindowPrivateKey = &rootlessWindowPrivateKeyIndex;
++static int rootlessWindowOldPixmapPrivateKeyIndex;
++DevPrivateKey rootlessWindowOldPixmapPrivateKey = &rootlessWindowOldPixmapPrivateKeyIndex;
+ 
+ 
+ /*
+diff --git a/miext/shadow/shadow.c b/miext/shadow/shadow.c
+index ef0df40..21f1de2 100644
+--- a/miext/shadow/shadow.c
++++ b/miext/shadow/shadow.c
+@@ -36,7 +36,8 @@ #include    "globals.h"
+ #include    "gcstruct.h"
+ #include    "shadow.h"
+ 
+-DevPrivateKey shadowScrPrivateKey = &shadowScrPrivateKey;
++static int shadowScrPrivateKeyIndex;
++DevPrivateKey shadowScrPrivateKey = &shadowScrPrivateKeyIndex;
+ 
+ #define wrap(priv, real, mem) {\
+     priv->mem = real->mem; \
+diff --git a/randr/randr.c b/randr/randr.c
+index 9bfed05..230d816 100644
+--- a/randr/randr.c
++++ b/randr/randr.c
+@@ -56,9 +56,11 @@ static int SProcRRDispatch (ClientPtr pC
+ int	RREventBase;
+ int	RRErrorBase;
+ RESTYPE RRClientType, RREventType; /* resource types for event masks */
+-DevPrivateKey RRClientPrivateKey = &RRClientPrivateKey;
++static int RRClientPrivateKeyIndex;
++DevPrivateKey RRClientPrivateKey = &RRClientPrivateKeyIndex;
+ 
+-DevPrivateKey rrPrivKey = &rrPrivKey;
++static int rrPrivKeyIndex;
++DevPrivateKey rrPrivKey = &rrPrivKeyIndex;
+ 
+ static void
+ RRClientCallback (CallbackListPtr	*list,
+diff --git a/record/record.c b/record/record.c
+index d7314b1..d6a1c98 100644
+--- a/record/record.c
++++ b/record/record.c
+@@ -165,7 +165,8 @@ typedef struct {
+     ProcFunctionPtr recordVector[256]; 
+ } RecordClientPrivateRec, *RecordClientPrivatePtr;
+ 
+-static DevPrivateKey RecordClientPrivateKey = &RecordClientPrivateKey;
++static int RecordClientPrivateKeyIndex;
++static DevPrivateKey RecordClientPrivateKey = &RecordClientPrivateKeyIndex;
+ 
+ /*  RecordClientPrivatePtr RecordClientPrivate(ClientPtr)
+  *  gets the client private of the given client.  Syntactic sugar.
+diff --git a/render/animcur.c b/render/animcur.c
+index 362607f..5723442 100644
+--- a/render/animcur.c
++++ b/render/animcur.c
+@@ -91,7 +91,9 @@ static CursorBits   animCursorBits = {
+ };
+ 
+ static int AnimCurGeneration;
+-static DevPrivateKey AnimCurScreenPrivateKey = &AnimCurScreenPrivateKey;
++
++static int AnimCurScreenPrivateKeyIndex;
++static DevPrivateKey AnimCurScreenPrivateKey = &AnimCurScreenPrivateKeyIndex;
+ 
+ #define IsAnimCur(c)	    ((c) && ((c)->bits == &animCursorBits))
+ #define GetAnimCur(c)	    ((AnimCurPtr) ((c) + 1))
+diff --git a/render/picture.c b/render/picture.c
+index b7874bb..9def47b 100644
+--- a/render/picture.c
++++ b/render/picture.c
+@@ -43,8 +43,10 @@ #include "picturestr.h"
+ #include "xace.h"
+ #include "registry.h"
+ 
+-_X_EXPORT DevPrivateKey PictureScreenPrivateKey = &PictureScreenPrivateKey;
+-DevPrivateKey	PictureWindowPrivateKey = &PictureWindowPrivateKey;
++static int PictureScreenPrivateKeyIndex;
++_X_EXPORT DevPrivateKey PictureScreenPrivateKey = &PictureScreenPrivateKeyIndex;
++static int PictureWindowPrivateKeyIndex;
++DevPrivateKey	PictureWindowPrivateKey = &PictureWindowPrivateKeyIndex;
+ static int	PictureGeneration;
+ RESTYPE		PictureType;
+ RESTYPE		PictFormatType;
+diff --git a/render/render.c b/render/render.c
+index b1d6d58..1b7d78b 100644
+--- a/render/render.c
++++ b/render/render.c
+@@ -211,7 +211,8 @@ int	(*SProcRenderVector[RenderNumberRequ
+ };
+ 
+ int	RenderErrBase;
+-DevPrivateKey RenderClientPrivateKey;
++static int RenderClientPrivateKeyIndex;
++DevPrivateKey RenderClientPrivateKey = &RenderClientPrivateKeyIndex;
+ 
+ typedef struct _RenderClient {
+     int	    major_version;
+diff --git a/xfixes/cursor.c b/xfixes/cursor.c
+index ca17397..c4069d9 100755
+--- a/xfixes/cursor.c
++++ b/xfixes/cursor.c
+@@ -56,10 +56,12 @@ #include "xace.h"
+ static RESTYPE		CursorClientType;
+ static RESTYPE		CursorHideCountType;
+ static RESTYPE		CursorWindowType;
+-static DevPrivateKey	CursorScreenPrivateKey = &CursorScreenPrivateKey;
+ static CursorPtr	CursorCurrent;
+ static CursorPtr        pInvisibleCursor = NULL;
+ 
++static int CursorScreenPrivateKeyIndex;
++static DevPrivateKey CursorScreenPrivateKey = &CursorScreenPrivateKeyIndex;
++
+ static void deleteCursorHideCountsForScreen (ScreenPtr pScreen);
+ 
+ #define VERIFY_CURSOR(pCursor, cursor, client, access) { \
+diff --git a/xfixes/xfixes.c b/xfixes/xfixes.c
+index 0db4989..d1225c6 100755
+--- a/xfixes/xfixes.c
++++ b/xfixes/xfixes.c
+@@ -56,7 +56,9 @@ #define SERVER_XFIXES_MINOR 0
+ static unsigned char	XFixesReqCode;
+ int		XFixesEventBase;
+ int		XFixesErrorBase;
+-static DevPrivateKey XFixesClientPrivateKey = &XFixesClientPrivateKey;
++
++static int XFixesClientPrivateKeyIndex;
++static DevPrivateKey XFixesClientPrivateKey = &XFixesClientPrivateKeyIndex;
+ 
+ static int
+ ProcXFixesQueryVersion(ClientPtr client)
+diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
+index 8a26825..35938a9 100644
+--- a/xkb/xkbActions.c
++++ b/xkb/xkbActions.c
+@@ -42,7 +42,8 @@ #include "xkb.h"
+ #include <ctype.h>
+ #define EXTENSION_EVENT_BASE 64
+ 
+-DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKey;
++static int xkbDevicePrivateKeyIndex;
++DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKeyIndex;
+ 
+ void
+ xkbUnwrapProc(DeviceIntPtr device, DeviceHandleProc proc,
+-- 
+1.4.1
+
--- a/open-src/xserver/xorg/ramdac-symbols.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-commit 3c6f1428489c1f71acd41066ea73ef4ae7c60f17
-Author: Julien Cristau <[email protected]>
-Date:   Tue May 29 22:01:30 2007 -0400
-
-    Make sure that the ramdac symbols are present in the server
-    
-    The former ramdac module is now built into the server, so its symbols need to
-    be explicitly exported to drivers (Debian #423129).
-
-diff --git a/hw/xfree86/loader/xf86sym.c b/hw/xfree86/loader/xf86sym.c
-index 5175f01..6535e4c 100644
---- a/hw/xfree86/loader/xf86sym.c
-+++ b/hw/xfree86/loader/xf86sym.c
-@@ -96,6 +96,11 @@ #include "xf86RandR12.h"
- #endif
- #include "xf86DDC.h"
- #include "edid.h"
-+#include "xf86Cursor.h"
-+#include "xf86RamDac.h"
-+#include "BT.h"
-+#include "IBM.h"
-+#include "TI.h"
- 
- #ifndef HAS_GLIBC_SIGSETJMP
- #if defined(setjmp) && defined(__GNU_LIBRARY__) && \
-@@ -1255,4 +1260,50 @@ #endif
-     SYMFUNC(xf86I2CWriteRead)
-     SYMFUNC(xf86I2CWriteVec)
-     SYMFUNC(xf86I2CWriteWord)
-+
-+    /* ramdac/xf86RamDac.c */
-+    SYMFUNC(RamDacCreateInfoRec)
-+    SYMFUNC(RamDacHelperCreateInfoRec)
-+    SYMFUNC(RamDacDestroyInfoRec)
-+    SYMFUNC(RamDacHelperDestroyInfoRec)
-+    SYMFUNC(RamDacInit)
-+    SYMFUNC(RamDacHandleColormaps)
-+    SYMFUNC(RamDacFreeRec)
-+    SYMFUNC(RamDacGetHWIndex)
-+    SYMVAR(RamDacHWPrivateIndex)
-+    SYMVAR(RamDacScreenPrivateIndex)
-+
-+    /* ramdac/xf86Cursor.c */
-+    SYMFUNC(xf86InitCursor)
-+    SYMFUNC(xf86CreateCursorInfoRec)
-+    SYMFUNC(xf86DestroyCursorInfoRec)
-+    SYMFUNC(xf86ForceHWCursor)
-+
-+    /* ramdac/BT.c */
-+    SYMFUNC(BTramdacProbe)
-+    SYMFUNC(BTramdacSave)
-+    SYMFUNC(BTramdacRestore)
-+    SYMFUNC(BTramdacSetBpp)
-+
-+    /* ramdac/IBM.c */
-+    SYMFUNC(IBMramdacProbe)
-+    SYMFUNC(IBMramdacSave)
-+    SYMFUNC(IBMramdacRestore)
-+    SYMFUNC(IBMramdac526SetBpp)
-+    SYMFUNC(IBMramdac640SetBpp)
-+    SYMFUNC(IBMramdac526CalculateMNPCForClock)
-+    SYMFUNC(IBMramdac640CalculateMNPCForClock)
-+    SYMFUNC(IBMramdac526HWCursorInit)
-+    SYMFUNC(IBMramdac640HWCursorInit)
-+    SYMFUNC(IBMramdac526SetBppWeak)
-+
-+    /* ramdac/TI.c */
-+    SYMFUNC(TIramdacCalculateMNPForClock)
-+    SYMFUNC(TIramdacProbe)
-+    SYMFUNC(TIramdacSave)
-+    SYMFUNC(TIramdacRestore)
-+    SYMFUNC(TIramdac3026SetBpp)
-+    SYMFUNC(TIramdac3030SetBpp)
-+    SYMFUNC(TIramdacHWCursorInit)
-+    SYMFUNC(TIramdacLoadPalette)
- };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/remove-ppcPci.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,174 @@
+From e1ae8db625b5e8c298a557592ef23656b3da4886 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <[email protected]>
+Date: Mon, 18 Aug 2008 09:53:48 -0400
+Subject: [PATCH] Drop dead PowerPC PCI code.
+
+Also add a warning for anyone still using legacy PCI code.
+---
+ configure.ac                          |   11 ----
+ hw/xfree86/os-support/bus/Makefile.am |    4 --
+ hw/xfree86/os-support/bus/Pci.h       |    3 -
+ hw/xfree86/os-support/bus/ppcPci.c    |   82 ---------------------------------
+ 4 files changed, 1 insertions(+), 99 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d42d7fd..95a084f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1217,7 +1217,6 @@ AC_MSG_RESULT([$XORG])
+ xorg_bus_linuxpci=no
+ xorg_bus_bsdpci=no
+ xorg_bus_ix86pci=no
+-xorg_bus_ppcpci=no
+ xorg_bus_sparcpci=no
+ xorg_bus_sparc=no
+ 
+@@ -1344,15 +1343,6 @@ if test "x$XORG" = xyes; then
+ 	esac
+ 
+ 	case $host_cpu in
+-	  powerpc*)
+-		case $host_os in
+-		  linux*|freebsd*|netbsd*|openbsd*|kfreebsd*-gnu)
+-			;;
+-		  *)
+-			xorg_bus_ppcpci="yes"
+-			;;
+-		esac
+-		;;
+ 	  sparc*)
+ 		xorg_bus_sparcpci="yes"
+ 		xorg_bus_sparc="yes"
+@@ -1460,7 +1450,6 @@ AM_CONDITIONAL([XORG], [test "x$XORG" = 
+ AM_CONDITIONAL([XORG_BUS_LINUXPCI], [test "x$xorg_bus_linuxpci" = xyes])
+ AM_CONDITIONAL([XORG_BUS_BSDPCI], [test "x$xorg_bus_bsdpci" = xyes])
+ AM_CONDITIONAL([XORG_BUS_IX86PCI], [test "x$xorg_bus_ix86pci" = xyes])
+-AM_CONDITIONAL([XORG_BUS_PPCPCI], [test "x$xorg_bus_ppcpci" = xyes])
+ AM_CONDITIONAL([XORG_BUS_SPARCPCI], [test "x$xorg_bus_sparcpci" = xyes])
+ AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
+ AM_CONDITIONAL([LINUX_IA64], [test "x$linux_ia64" = xyes])
+diff --git a/hw/xfree86/os-support/bus/Makefile.am b/hw/xfree86/os-support/bus/Makefile.am
+index d48fcb6..94c3750 100644
+--- a/hw/xfree86/os-support/bus/Makefile.am
++++ b/hw/xfree86/os-support/bus/Makefile.am
+@@ -15,10 +15,6 @@ if XORG_BUS_IX86PCI
+ PCI_SOURCES += ix86Pci.c
+ endif
+ 
+-if XORG_BUS_PPCPCI
+-PCI_SOURCES += ppcPci.c
+-endif
+-
+ if XORG_BUS_SPARCPCI
+ PCI_SOURCES += sparcPci.c
+ endif
+diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h
+index a1390c0..488e1e3 100644
+--- a/hw/xfree86/os-support/bus/Pci.h
++++ b/hw/xfree86/os-support/bus/Pci.h
+@@ -199,13 +199,12 @@ #endif /* defined(linux) */
+ 
+ 
+ #if !defined(ARCH_PCI_INIT)
++#warning You really need to port to libpciaccess.
+ /*
+  * Select architecture specific PCI init function
+  */
+ #if defined(__i386__) || defined(__i386) ||  defined(__amd64__) || defined(__amd64)
+ # define ARCH_PCI_INIT ix86PciInit
+-#elif defined(__powerpc__) || defined(__powerpc64__)
+-# define ARCH_PCI_INIT ppcPciInit
+ #elif defined(__sparc__) || defined(sparc)
+ # define ARCH_PCI_INIT sparcPciInit
+ # define ARCH_PCI_PCI_BRIDGE sparcPciPciBridge
+diff --git a/hw/xfree86/os-support/bus/ppcPci.c b/hw/xfree86/os-support/bus/ppcPci.c
+deleted file mode 100644
+index 49c1a2a..0000000
+--- a/hw/xfree86/os-support/bus/ppcPci.c
++++ /dev/null
+@@ -1,82 +0,0 @@
+-/*
+- * ppcPci.c - PowerPC PCI access functions
+- *
+- * PCI driver functions supporting Motorola PowerPC platforms
+- * including Powerstack(RiscPC/RiscPC+), PowerStackII, MTX, and
+- * MVME 160x/260x/360x/460x VME boards
+- *
+- * Gary Barton
+- * Concurrent Computer Corporation
+- * [email protected]
+- *
+- */
+-
+-/*
+- * Copyright 1998 by Concurrent Computer Corporation
+- *
+- * Permission to use, copy, modify, distribute, and sell this software
+- * and its documentation for any purpose is hereby granted without fee,
+- * provided that the above copyright notice appear in all copies and that
+- * both that copyright notice and this permission notice appear in
+- * supporting documentation, and that the name of Concurrent Computer
+- * Corporation not be used in advertising or publicity pertaining to
+- * distribution of the software without specific, written prior
+- * permission.  Concurrent Computer Corporation makes no representations
+- * about the suitability of this software for any purpose.  It is
+- * provided "as is" without express or implied warranty.
+- *
+- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
+- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
+- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
+- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+- * SOFTWARE.
+- *
+- * Copyright 1998 by Metro Link Incorporated
+- *
+- * Permission to use, copy, modify, distribute, and sell this software
+- * and its documentation for any purpose is hereby granted without fee,
+- * provided that the above copyright notice appear in all copies and that
+- * both that copyright notice and this permission notice appear in
+- * supporting documentation, and that the name of Metro Link
+- * Incorporated not be used in advertising or publicity pertaining to
+- * distribution of the software without specific, written prior
+- * permission.  Metro Link Incorporated makes no representations
+- * about the suitability of this software for any purpose.  It is
+- * provided "as is" without express or implied warranty.
+- *
+- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
+- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
+- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
+- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+- * SOFTWARE.
+- */
+-
+-#ifdef HAVE_XORG_CONFIG_H
+-#include <xorg-config.h>
+-#endif
+-
+-#include <stdio.h>
+-#include "compiler.h"
+-#include "xf86.h"
+-#include "xf86Priv.h"
+-#include "xf86_OSlib.h"
+-#include "Pci.h"
+-
+-#ifndef MAP_FAILED
+-#define MAP_FAILED (pointer)(-1)
+-#endif
+-
+-void
+-ppcPciInit()
+-{
+-  
+-  static void motoppcPciInit(void);
+-  motoppcPciInit();
+-
+-}
+-- 
+1.4.1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/remove-sparcPci.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,1069 @@
+From 3c03d9f1efbbacec6e8be58da99bf0977a8e0fec Mon Sep 17 00:00:00 2001
+From: Adam Jackson <[email protected]>
+Date: Mon, 18 Aug 2008 14:37:42 -0400
+Subject: [PATCH] Remove sparcPci.c
+
+There is no way this code can have been building for anyone since pciaccess
+was merged.  BSD and Linux were already using OS code on sparc, the only
+people who could want this are Solaris, who should be using pciaccess
+anyway.
+---
+ configure.ac                          |    3 
+ hw/xfree86/os-support/bus/Makefile.am |    4 
+ hw/xfree86/os-support/bus/Pci.h       |   10 
+ hw/xfree86/os-support/bus/sparcPci.c  |  979 ---------------------------------
+ 4 files changed, 2 insertions(+), 994 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 95a084f..52d35c3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1217,7 +1217,6 @@ AC_MSG_RESULT([$XORG])
+ xorg_bus_linuxpci=no
+ xorg_bus_bsdpci=no
+ xorg_bus_ix86pci=no
+-xorg_bus_sparcpci=no
+ xorg_bus_sparc=no
+ 
+ if test "x$XORG" = xyes; then
+@@ -1344,7 +1343,6 @@ if test "x$XORG" = xyes; then
+ 
+ 	case $host_cpu in
+ 	  sparc*)
+-		xorg_bus_sparcpci="yes"
+ 		xorg_bus_sparc="yes"
+ 		;;
+ 	  i*86|x86_64*|amd64*)
+@@ -1450,7 +1448,6 @@ AM_CONDITIONAL([XORG], [test "x$XORG" = 
+ AM_CONDITIONAL([XORG_BUS_LINUXPCI], [test "x$xorg_bus_linuxpci" = xyes])
+ AM_CONDITIONAL([XORG_BUS_BSDPCI], [test "x$xorg_bus_bsdpci" = xyes])
+ AM_CONDITIONAL([XORG_BUS_IX86PCI], [test "x$xorg_bus_ix86pci" = xyes])
+-AM_CONDITIONAL([XORG_BUS_SPARCPCI], [test "x$xorg_bus_sparcpci" = xyes])
+ AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
+ AM_CONDITIONAL([LINUX_IA64], [test "x$linux_ia64" = xyes])
+ AM_CONDITIONAL([LINUX_ALPHA], [test "x$linux_alpha" = xyes])
+diff --git a/hw/xfree86/os-support/bus/Makefile.am b/hw/xfree86/os-support/bus/Makefile.am
+index 94c3750..5199340 100644
+--- a/hw/xfree86/os-support/bus/Makefile.am
++++ b/hw/xfree86/os-support/bus/Makefile.am
+@@ -15,10 +15,6 @@ if XORG_BUS_IX86PCI
+ PCI_SOURCES += ix86Pci.c
+ endif
+ 
+-if XORG_BUS_SPARCPCI
+-PCI_SOURCES += sparcPci.c
+-endif
+-
+ if XORG_BUS_SPARC
+ PLATFORM_SOURCES = Sbus.c
+ sdk_HEADERS += xf86Sbus.h
+diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h
+index 26ba947..e56d61e 100644
+--- a/hw/xfree86/os-support/bus/Pci.h
++++ b/hw/xfree86/os-support/bus/Pci.h
+@@ -198,15 +198,9 @@ #endif /* defined(linux) */
+ 
+ #if !defined(ARCH_PCI_INIT)
+ #warning You really need to port to libpciaccess.
+-/*
+- * Select architecture specific PCI init function
+- */
+ #if defined(__i386__) || defined(__i386) ||  defined(__amd64__) || defined(__amd64)
+-# define ARCH_PCI_INIT ix86PciInit
+-#elif defined(__sparc__) || defined(sparc)
+-# define ARCH_PCI_INIT sparcPciInit
+-# define ARCH_PCI_PCI_BRIDGE sparcPciPciBridge
+-#endif
++#define ARCH_PCI_INIT ix86PciInit
++#endif /* i386/amd64 */
+ #endif /* !defined(ARCH_PCI_INIT) */
+ 
+ #ifndef ARCH_PCI_INIT
+diff --git a/hw/xfree86/os-support/bus/sparcPci.c b/hw/xfree86/os-support/bus/sparcPci.c
+deleted file mode 100644
+index 2d8039c..0000000
+--- a/hw/xfree86/os-support/bus/sparcPci.c
++++ /dev/null
+@@ -1,979 +0,0 @@
+-/*
+- * Copyright (C) 2001-2003 The XFree86 Project, Inc.  All Rights Reserved.
+- *
+- * Permission is hereby granted, free of charge, to any person obtaining a copy
+- * of this software and associated documentation files (the "Software"), to
+- * deal in the Software without restriction, including without limitation the
+- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+- * sell copies of the Software, and to permit persons to whom the Software is
+- * furnished to do so, subject to the following conditions:
+- *
+- * The above copyright notice and this permission notice shall be included in
+- * all copies or substantial portions of the Software.
+- *
+- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+- * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+- *
+- * Except as contained in this notice, the name of the XFree86 Project shall
+- * not be used in advertising or otherwise to promote the sale, use or other
+- * dealings in this Software without prior written authorization from the
+- * XFree86 Project.
+- */
+-
+-#ifdef HAVE_XORG_CONFIG_H
+-#include <xorg-config.h>
+-#endif
+-
+-#include "xf86.h"
+-#include "xf86Priv.h"
+-#include "xf86_OSlib.h"
+-#include "Pci.h"
+-#include "xf86sbusBus.h"
+-
+-#if defined(sun)
+-
+-extern char *apertureDevName;
+-static int  apertureFd = -1;
+-
+-/*
+- * A version of xf86MapVidMem() that allows for 64-bit displacements (but not
+- * sizes).  Areas thus mapped can be unmapped by xf86UnMapVidMem().
+- */
+-static pointer
+-sparcMapAperture(int iScreen, int Flags,
+-		 unsigned long long Base, unsigned long Size)
+-{
+-    pointer result;
+-    static int lastFlags = 0;
+-
+-    /* Assume both Base & Size are multiples of the page size */
+-
+-    if ((apertureFd < 0) || (Flags != lastFlags)) {
+-	if (apertureFd >= 0)
+-	    close(apertureFd);
+-	lastFlags = Flags;
+-	apertureFd = open(apertureDevName,
+-	    (Flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
+-	if (apertureFd < 0)
+-	    FatalError("sparcMapAperture:  open failure:  %s\n",
+-		       strerror(errno));
+-    }
+-
+-    result = mmap(NULL, Size,
+-		  (Flags & VIDMEM_READONLY) ?
+-		      PROT_READ : (PROT_READ | PROT_WRITE),
+-		  MAP_SHARED, apertureFd, (off_t)Base);
+-
+-    if (result == MAP_FAILED)
+-	FatalError("sparcMapAperture:  mmap failure:  %s\n", strerror(errno));
+-
+-    return result;
+-}
+-
+-/*
+- * Platform-specific bus privates.
+- */
+-typedef struct _sparcDomainRec {
+-    unsigned long long io_addr, io_size;
+-    unsigned long long mem_addr, mem_size;
+-    pointer pci, io;
+-    int bus_min, bus_max;
+-    unsigned char dfn_mask[256 / 8];
+-} sparcDomainRec, *sparcDomainPtr;
+-
+-#define SetBitInMap(bit, map) \
+-    do { \
+-	int _bit = (bit); \
+-	(map)[_bit >> 3] |= 1 << (_bit & 7); \
+-    } while (0)
+-
+-#define IsBitSetInMap(bit, map) \
+-    ((map)[(bit) >> 3] & (1 << ((bit) & 7)))
+-
+-/*
+- * Domain 0 is reserved for the one that represents the system as a whole, i.e.
+- * the one without any resource relocations.
+- */
+-#define MAX_DOMAINS (MAX_PCI_BUSES / 256)
+-static sparcDomainPtr xf86DomainInfo[MAX_DOMAINS];
+-static int            pciNumDomains = 1;
+-
+-/* Variables that are assigned this must be declared volatile */
+-#define PciReg(base, tag, off, type) \
+-    *(volatile type *)(pointer)((char *)(base) + \
+-	(PCI_TAG_NO_DOMAIN(tag) | (off)))
+-
+-/* Generic SPARC PCI access functions */
+-static CARD32
+-sparcPciCfgRead32(PCITAG tag, int off)
+-{
+-    pciBusInfo_t    *pBusInfo;
+-    sparcDomainPtr  pDomain;
+-    volatile CARD32 result = (CARD32)(-1);	/* Must be volatile */
+-    int             bus;
+-
+-    if ((off >= 0) && (off <= 252) && !(off & 3) &&
+-	((bus = PCI_BUS_FROM_TAG(tag)) < pciNumBuses) &&
+-	(pBusInfo = pciBusInfo[bus]) && (pDomain = pBusInfo->pciBusPriv) &&
+-	(bus >= pDomain->bus_min) && (bus < pDomain->bus_max) &&
+-	((bus > pDomain->bus_min) ||
+-	 IsBitSetInMap(PCI_DFN_FROM_TAG(tag), pDomain->dfn_mask))) {
+-	result = PciReg(pDomain->pci, tag, off, CARD32);
+-
+-	result = PCI_CPU(result);
+-    }
+-
+-    return result;
+-}
+-
+-static void
+-sparcPciCfgWrite32(PCITAG tag, int off, CARD32 val)
+-{
+-    pciBusInfo_t   *pBusInfo;
+-    sparcDomainPtr pDomain;
+-    int            bus;
+-
+-    if ((off < 0) || (off > 252) || (off & 3) ||
+-	((bus = PCI_BUS_FROM_TAG(tag)) >= pciNumBuses) ||
+-	!(pBusInfo = pciBusInfo[bus]) || !(pDomain = pBusInfo->pciBusPriv) ||
+-	(bus < pDomain->bus_min) || (bus >= pDomain->bus_max) ||
+-	((bus == pDomain->bus_min) &&
+-	 !IsBitSetInMap(PCI_DFN_FROM_TAG(tag), pDomain->dfn_mask)))
+-	return;
+-
+-    val = PCI_CPU(val);
+-    PciReg(pDomain->pci, tag, off, CARD32) = val;
+-}
+-
+-static void
+-sparcPciCfgSetBits32(PCITAG tag, int off, CARD32 mask, CARD32 bits)
+-{
+-    CARD32 PciVal;
+-
+-    PciVal = sparcPciCfgRead32(tag, off);
+-    PciVal &= ~mask;
+-    PciVal |= bits;
+-    sparcPciCfgWrite32(tag, off, PciVal);
+-}
+-
+-static pciBusFuncs_t sparcPCIFunctions =
+-{
+-    sparcPciCfgRead32,
+-    sparcPciCfgWrite32,
+-    sparcPciCfgSetBits32,
+-    pciAddrNOOP,
+-    pciAddrNOOP
+-};
+-
+-/*
+- * Sabre-specific versions of the above because of its peculiar access size
+- * requirements.
+- */
+-static CARD32
+-sabrePciCfgRead32(PCITAG tag, int off)
+-{
+-    pciBusInfo_t    *pBusInfo;
+-    sparcDomainPtr  pDomain;
+-    volatile CARD32 result;			/* Must be volatile */
+-    int             bus;
+-
+-    if (PCI_BDEV_FROM_TAG(tag))
+-	return sparcPciCfgRead32(tag, off);
+-
+-    if (PCI_FUNC_FROM_TAG(tag) || (off < 0) || (off > 252) || (off & 3) ||
+-	((bus = PCI_BUS_FROM_TAG(tag)) >= pciNumBuses) ||
+-	!(pBusInfo = pciBusInfo[bus]) || !(pDomain = pBusInfo->pciBusPriv) ||
+-	(bus != pDomain->bus_min))
+-	return (CARD32)(-1);
+-
+-    if (off < 8) {
+-	result = (PciReg(pDomain->pci, tag, off, CARD16) << 16) |
+-		  PciReg(pDomain->pci, tag, off + 2, CARD16);
+-	return PCI_CPU(result);
+-    }
+-
+-    result = (PciReg(pDomain->pci, tag, off + 3, CARD8) << 24) |
+-	     (PciReg(pDomain->pci, tag, off + 2, CARD8) << 16) |
+-	     (PciReg(pDomain->pci, tag, off + 1, CARD8) <<  8) |
+-	     (PciReg(pDomain->pci, tag, off    , CARD8)      );
+-    return result;
+-}
+-
+-static void
+-sabrePciCfgWrite32(PCITAG tag, int off, CARD32 val)
+-{
+-    pciBusInfo_t   *pBusInfo;
+-    sparcDomainPtr pDomain;
+-    int            bus;
+-
+-    if (PCI_BDEV_FROM_TAG(tag))
+-	sparcPciCfgWrite32(tag, off, val);
+-    else if (!PCI_FUNC_FROM_TAG(tag) &&
+-	     (off >= 0) && (off <= 252) && !(off & 3) &&
+-	     ((bus = PCI_BUS_FROM_TAG(tag)) < pciNumBuses) &&
+-	     (pBusInfo = pciBusInfo[bus]) &&
+-	     (pDomain = pBusInfo->pciBusPriv) &&
+-	     (bus == pDomain->bus_min)) {
+-	if (off < 8) {
+-	    val = PCI_CPU(val);
+-	    PciReg(pDomain->pci, tag, off    , CARD16) = val >> 16;
+-	    PciReg(pDomain->pci, tag, off + 2, CARD16) = val;
+-	} else {
+-	    PciReg(pDomain->pci, tag, off    , CARD8) = val;
+-	    PciReg(pDomain->pci, tag, off + 1, CARD8) = val >> 8;
+-	    PciReg(pDomain->pci, tag, off + 2, CARD8) = val >> 16;
+-	    PciReg(pDomain->pci, tag, off + 3, CARD8) = val >> 24;
+-	}
+-    }
+-}
+-
+-static void
+-sabrePciCfgSetBits32(PCITAG tag, int off, CARD32 mask, CARD32 bits)
+-{
+-    CARD32 PciVal;
+-
+-    PciVal = sabrePciCfgRead32(tag, off);
+-    PciVal &= ~mask;
+-    PciVal |= bits;
+-    sabrePciCfgWrite32(tag, off, PciVal);
+-}
+-
+-static pciBusFuncs_t sabrePCIFunctions =
+-{
+-    sabrePciCfgRead32,
+-    sabrePciCfgWrite32,
+-    sabrePciCfgSetBits32,
+-    pciAddrNOOP,
+-    pciAddrNOOP
+-};
+-
+-static int pagemask;
+-
+-/* Scan PROM for all PCI host bridges in the system */
+-void
+-sparcPciInit(void)
+-{
+-    int node, node2;
+-
+-    if (!xf86LinearVidMem())
+-	return;
+-
+-    apertureFd = open(apertureDevName, O_RDWR);
+-    if (apertureFd < 0) {
+-	xf86Msg(X_ERROR,
+-	    "sparcPciInit:  open failure:  %s\n", strerror(errno));
+-	return;
+-    }
+-
+-    sparcPromInit();
+-    pagemask = getpagesize() - 1;
+-
+-    for (node = promGetChild(promRootNode);
+-	 node;
+-	 node = promGetSibling(node)) {
+-	unsigned long long pci_addr;
+-	sparcDomainRec     domain;
+-	sparcDomainPtr     pDomain;
+-	pciBusFuncs_p      pFunctions;
+-	char               *prop_val;
+-	int                prop_len, bus;
+-
+-	prop_val = promGetProperty("name", &prop_len);
+-	/* Some PROMs include the trailing null;  some don't */
+-	if (!prop_val || (prop_len < 3) || (prop_len > 4) ||
+-	    strcmp(prop_val, "pci"))
+-	    continue;
+-
+-	prop_val = promGetProperty("model", &prop_len);
+-	if (!prop_val || (prop_len <= 0)) {
+-	    prop_val = promGetProperty("compatible", &prop_len);
+-	    if (!prop_val || (prop_len <= 0))
+-		continue;
+-	}
+-
+-	pFunctions = &sparcPCIFunctions;
+-	(void)memset(&domain, 0, sizeof(domain));
+-
+-	if (!strncmp("SUNW,sabre",   prop_val, prop_len) ||
+-	    !strncmp("pci108e,a000", prop_val, prop_len) ||
+-	    !strncmp("pci108e,a001", prop_val, prop_len)) {
+-	    /*
+-	     * There can only be one "Sabre" bridge in a system.  It provides
+-	     * PCI configuration space, a 24-bit I/O space and a 32-bit memory
+-	     * space, all three of which are at fixed physical CPU addresses.
+-	     */
+-	    static Bool sabre_seen = FALSE;
+-
+-	    xf86Msg(X_INFO,
+-		"Sabre or Hummingbird PCI host bridge found (\"%s\")\n",
+-		prop_val);
+-
+-	    /* There can only be one Sabre */
+-	    if (sabre_seen)
+-		continue;
+-	    sabre_seen = TRUE;
+-
+-	    /* Get "bus-range" property */
+-	    prop_val = promGetProperty("bus-range", &prop_len);
+-	    if (!prop_val || (prop_len != 8) ||
+-		(((unsigned int *)prop_val)[0]) ||
+-		(((unsigned int *)prop_val)[1] >= 256))
+-		continue;
+-
+-	    pci_addr         = 0x01fe01000000ull;
+-	    domain.io_addr   = 0x01fe02000000ull;
+-	    domain.io_size   = 0x000001000000ull;
+-	    domain.mem_addr  = 0x01ff00000000ull;
+-	    domain.mem_size  = 0x000100000000ull;
+-	    domain.bus_min   = 0;			/* Always */
+-	    domain.bus_max   = ((int *)prop_val)[1];
+-
+-	    pFunctions = &sabrePCIFunctions;
+-	} else
+-	if (!strncmp("SUNW,psycho",  prop_val, prop_len) ||
+-	    !strncmp("pci108e,8000", prop_val, prop_len)) {
+-	    /*
+-	     * A "Psycho" host bridge provides two PCI interfaces, each with
+-	     * its own 16-bit I/O and 31-bit memory spaces.  Both share the
+-	     * same PCI configuration space.  Here, they are assigned separate
+-	     * domain numbers to prevent unintentional I/O and/or memory
+-	     * resource conflicts.
+-	     */
+-	    xf86Msg(X_INFO,
+-		"Psycho PCI host bridge found (\"%s\")\n", prop_val);
+-
+-	    /* Get "bus-range" property */
+-	    prop_val = promGetProperty("bus-range", &prop_len);
+-	    if (!prop_val || (prop_len != 8) ||
+-		(((unsigned int *)prop_val)[1] >= 256) ||
+-		(((unsigned int *)prop_val)[0] > ((unsigned int *)prop_val)[1]))
+-		continue;
+-
+-	    domain.bus_min = ((int *)prop_val)[0];
+-	    domain.bus_max = ((int *)prop_val)[1];
+-
+-	    /* Get "ranges" property */
+-	    prop_val = promGetProperty("ranges", &prop_len);
+-	    if (!prop_val || (prop_len != 112) ||
+-		prop_val[0] || (prop_val[28] != 0x01u) ||
+-		(prop_val[56] != 0x02u) || (prop_val[84] != 0x03u) ||
+-		(((unsigned int *)prop_val)[4] != 0x01000000u) ||
+-		((unsigned int *)prop_val)[5] ||
+-		((unsigned int *)prop_val)[12] ||
+-		(((unsigned int *)prop_val)[13] != 0x00010000u) ||
+-		((unsigned int *)prop_val)[19] ||
+-		(((unsigned int *)prop_val)[20] != 0x80000000u) ||
+-		((((unsigned int *)prop_val)[11] & ~0x00010000u) !=
+-		 0x02000000u) ||
+-		(((unsigned int *)prop_val)[18] & ~0x80000000u) ||
+-		(((unsigned int *)prop_val)[3] !=
+-		 ((unsigned int *)prop_val)[10]) ||
+-		(((unsigned int *)prop_val)[17] !=
+-		 ((unsigned int *)prop_val)[24]) ||
+-		(((unsigned int *)prop_val)[18] !=
+-		 ((unsigned int *)prop_val)[25]) ||
+-		(((unsigned int *)prop_val)[19] !=
+-		 ((unsigned int *)prop_val)[26]) ||
+-		(((unsigned int *)prop_val)[20] !=
+-		 ((unsigned int *)prop_val)[27]))
+-		continue;
+-
+-	    /* Use memcpy() to avoid alignment issues */
+-	    (void)memcpy(&pci_addr, prop_val + 12,
+-			 sizeof(pci_addr));
+-	    (void)memcpy(&domain.io_addr, prop_val + 40,
+-			 sizeof(domain.io_addr));
+-	    (void)memcpy(&domain.mem_addr, prop_val + 68,
+-			 sizeof(domain.mem_addr));
+-
+-	    domain.io_size  = 0x000000010000ull;
+-	    domain.mem_size = 0x000080000000ull;
+-	} else
+-	if (!strncmp("SUNW,schizo",  prop_val, prop_len) ||
+-	    !strncmp("pci108e,8001", prop_val, prop_len)) {
+-	    /*
+-	     * I have no docs on the "Schizo", but judging from the Linux
+-	     * kernel, it also provides two PCI domains.  Each PCI
+-	     * configuration space is the usual 16M in size, followed by a
+-	     * variable-length I/O space.  Each domain also provides a
+-	     * variable-length memory space.  The kernel seems to think the I/O
+-	     * spaces are 16M long, and the memory spaces, 2G, but these
+-	     * assumptions are actually only present in source code comments.
+-	     * Sun has, however, confirmed to me the validity of these
+-	     * assumptions.
+-	     */
+-	    volatile unsigned long long mem_match, mem_mask, io_match, io_mask;
+-	    unsigned long Offset;
+-	    pointer pSchizo;
+-
+-	    xf86Msg(X_INFO,
+-		"Schizo PCI host bridge found (\"%s\")\n", prop_val);
+-
+-	    /* Get "bus-range" property */
+-	    prop_val = promGetProperty("bus-range", &prop_len);
+-	    if (!prop_val || (prop_len != 8) ||
+-		(((unsigned int *)prop_val)[1] >= 256) ||
+-		(((unsigned int *)prop_val)[0] > ((unsigned int *)prop_val)[1]))
+-		continue;
+-
+-	    domain.bus_min = ((int *)prop_val)[0];
+-	    domain.bus_max = ((int *)prop_val)[1];
+-
+-	    /* Get "reg" property */
+-	    prop_val = promGetProperty("reg", &prop_len);
+-	    if (!prop_val || (prop_len != 48))
+-		continue;
+-
+-	    /* Temporarily map some of Schizo's registers */
+-	    pSchizo = sparcMapAperture(-1, VIDMEM_MMIO,
+-		((unsigned long long *)prop_val)[2] - 0x000000010000ull,
+-		0x00010000ul);
+-
+-	    /* Determine where PCI config, I/O and memory spaces reside */
+-	    if ((((unsigned long long *)prop_val)[0] & 0x000000700000ull) ==
+-		0x000000600000ull)
+-		Offset = 0x0040;
+-	    else
+-		Offset = 0x0060;
+-
+-	    mem_match = PciReg(pSchizo, 0, Offset, unsigned long long);
+-	    mem_mask  = PciReg(pSchizo, 0, Offset + 8, unsigned long long);
+-	    io_match  = PciReg(pSchizo, 0, Offset + 16, unsigned long long);
+-	    io_mask   = PciReg(pSchizo, 0, Offset + 24, unsigned long long);
+-
+-	    /* Unmap Schizo registers */
+-	    xf86UnMapVidMem(-1, pSchizo, 0x00010000ul);
+-
+-	    /* Calculate sizes */
+-	    mem_mask = (((mem_mask - 1) ^ mem_mask) >> 1) + 1;
+-	    io_mask  = (((io_mask  - 1) ^ io_mask ) >> 1) + 1;
+-
+-	    if (io_mask <= 0x000001000000ull)	/* Nothing left for I/O */
+-		continue;
+-
+-	    domain.mem_addr = mem_match & ~0x8000000000000000ull;
+-	    domain.mem_size = mem_mask;
+-	    pci_addr        = io_match  & ~0x8000000000000000ull;
+-	    domain.io_addr  = pci_addr  +  0x0000000001000000ull;
+-	    domain.io_size  = io_mask   -  0x0000000001000000ull;
+-	} else {
+-	    xf86Msg(X_WARNING, "Unknown PCI host bridge: \"%s\"\n", prop_val);
+-	    continue;
+-	}
+-
+-	/* Only map as much PCI configuration as we need */
+-	domain.pci = (char *)sparcMapAperture(-1, VIDMEM_MMIO,
+-	    pci_addr + PCI_MAKE_TAG(domain.bus_min, 0, 0),
+-	    PCI_MAKE_TAG(domain.bus_max - domain.bus_min + 1, 0, 0)) -
+-	    PCI_MAKE_TAG(domain.bus_min, 0, 0);
+-
+-	/* Allocate a domain record */
+-	pDomain = xnfalloc(sizeof(sparcDomainRec));
+-	*pDomain = domain;
+-
+-	/*
+-	 * Allocate and prime pciBusInfo records.  These are allocated one at a
+-	 * time because those for empty buses are eventually released.
+-	 */
+-	bus = pDomain->bus_min =
+-	    PCI_MAKE_BUS(pciNumDomains, domain.bus_min);
+-	pciNumBuses = pDomain->bus_max =
+-	    PCI_MAKE_BUS(pciNumDomains, domain.bus_max) + 1;
+-
+-	pciBusInfo[bus] = xnfcalloc(1, sizeof(pciBusInfo_t));
+-	pciBusInfo[bus]->configMech = PCI_CFG_MECH_OTHER;
+-	pciBusInfo[bus]->numDevices = 32;
+-	pciBusInfo[bus]->funcs = pFunctions;
+-	pciBusInfo[bus]->pciBusPriv = pDomain;
+-	while (++bus < pciNumBuses) {
+-	    pciBusInfo[bus] = xnfalloc(sizeof(pciBusInfo_t));
+-	    *(pciBusInfo[bus]) = *(pciBusInfo[bus - 1]);
+-	    pciBusInfo[bus]->funcs = &sparcPCIFunctions;
+-	}
+-
+-	/* Next domain, please... */
+-	xf86DomainInfo[pciNumDomains++] = pDomain;
+-
+-	/*
+-	 * OK, enough of the straight-forward stuff.  Time to deal with some
+-	 * brokenness...
+-	 *
+-	 * The PCI specs require that when a bus transaction remains unclaimed
+-	 * for too long, the master entity on that bus is to cancel the
+-	 * transaction it issued or passed on with a master abort.  Two
+-	 * outcomes are possible:
+-	 *
+-	 * - the master abort can be treated as an error that is propogated
+-	 *   back through the bus tree to the entity that ultimately originated
+-	 *   the transaction; or
+-	 * - the transaction can be allowed to complete normally, which means
+-	 *   that writes are ignored and reads return all ones.
+-	 *
+-	 * In the first case, if the CPU happens to be at the tail end of the
+-	 * tree path through one of its host bridges, it will be told there is
+-	 * a hardware mal-function, despite being generated by software.
+-	 *
+-	 * For a software function (be it firmware, OS or userland application)
+-	 * to determine how a PCI bus tree is populated, it must be able to
+-	 * detect when master aborts occur.  Obviously, PCI discovery is much
+-	 * simpler when master aborts are allowed to complete normally.
+-	 *
+-	 * Unfortunately, a number of non-Intel PCI implementations have chosen
+-	 * to treat master aborts as severe errors.  The net effect is to
+-	 * cripple PCI discovery algorithms in userland.
+-	 *
+-	 * On SPARCs, master aborts cause a number of different behaviours,
+-	 * including delivering a signal to the userland application, rebooting
+-	 * the system, "dropping down" to firmware, or, worst of all, bus
+-	 * lockouts.  Even in the first case, the SIGBUS signal that is
+-	 * eventually generated isn't delivered in a timely enough fashion to
+-	 * allow an application to reliably detect the master abort that
+-	 * ultimately caused it.
+-	 *
+-	 * This can be somewhat mitigated.  On all architectures, master aborts
+-	 * that occur on secondary buses can be forced to complete normally
+-	 * because the PCI-to-PCI bridges that serve them are governed by an
+-	 * industry-wide specification.  (This is just another way of saying
+-	 * that whatever justification there might be for erroring out master
+-	 * aborts is deemed by the industry as insufficient to generate more
+-	 * PCI non-compliance than there already is...)
+-	 *
+-	 * This leaves us with master aborts that occur on primary buses.
+-	 * There is no specification for host-to-PCI bridges.  Bridges used in
+-	 * SPARCs can be told to ignore all PCI errors, but not specifically
+-	 * master aborts.  Not only is this too coarse-grained, but
+-	 * master-aborted read transactions on the primary bus end up returning
+-	 * garbage rather than all ones.
+-	 *
+-	 * I have elected to work around this the only way I can think of doing
+-	 * so right now.  The following scans an additional PROM level and
+-	 * builds a device/function map for the primary bus.  I can only hope
+-	 * this PROM information represents all devices on the primary bus,
+-	 * rather than only a subset of them.
+-	 *
+-	 * Master aborts are useful in other ways too, that are not addressed
+-	 * here.  These include determining whether or not a domain provides
+-	 * VGA, or if a PCI device actually implements PCI disablement.
+-	 *
+-	 * ---  TSI @ UQV  2001.09.19
+-	 */
+-	for (node2 = promGetChild(node);
+-	     node2;
+-	     node2 = promGetSibling(node2)) {
+-	    /* Get "reg" property */
+-	    prop_val = promGetProperty("reg", &prop_len);
+-	    if (!prop_val || (prop_len % 20))
+-		continue;
+-
+-	    /*
+-	     * It's unnecessary to scan the entire "reg" property, but I'll do
+-	     * so anyway.
+-	     */
+-	    prop_len /= 20;
+-	    for (;  prop_len--;  prop_val += 20)
+-		SetBitInMap(PCI_DFN_FROM_TAG(*(PCITAG *)prop_val),
+-		    pDomain->dfn_mask);
+-	}
+-
+-	/* Assume the host bridge is device 0, function 0 on its bus */
+-	SetBitInMap(0, pDomain->dfn_mask);
+-    }
+-
+-    sparcPromClose();
+-
+-    close(apertureFd);
+-    apertureFd = -1;
+-}
+-
+-#ifndef INCLUDE_XF86_NO_DOMAIN
+-
+-_X_EXPORT int
+-xf86GetPciDomain(PCITAG Tag)
+-{
+-    return PCI_DOM_FROM_TAG(Tag);
+-}
+-
+-_X_EXPORT pointer
+-xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
+-		    ADDRESS Base, unsigned long Size)
+-{
+-    sparcDomainPtr pDomain;
+-    pointer        result;
+-    int            domain = PCI_DOM_FROM_TAG(Tag);
+-
+-    if ((domain <= 0) || (domain >= pciNumDomains) ||
+-	!(pDomain = xf86DomainInfo[domain]) ||
+-	(((unsigned long long)Base + (unsigned long long)Size) >
+-	 pDomain->mem_size))
+-	FatalError("xf86MapDomainMemory() called with invalid parameters.\n");
+-
+-    result = sparcMapAperture(ScreenNum, Flags, pDomain->mem_addr + Base, Size);
+-
+-    if (apertureFd >= 0) {
+-	close(apertureFd);
+-	apertureFd = -1;
+-    }
+-
+-    return result;
+-}
+-
+-_X_EXPORT IOADDRESS
+-xf86MapLegacyIO(int ScreenNum, int Flags, PCITAG Tag,
+-		IOADDRESS Base, unsigned long Size)
+-{
+-    sparcDomainPtr pDomain;
+-    int            domain = PCI_DOM_FROM_TAG(Tag);
+-
+-    if ((domain <= 0) || (domain >= pciNumDomains) ||
+-	!(pDomain = xf86DomainInfo[domain]) ||
+-	(((unsigned long long)Base + (unsigned long long)Size) >
+-	 pDomain->io_size))
+-	FatalError("xf86MapLegacyIO() called with invalid parameters.\n");
+-
+-    /* Permanently map all of I/O space */
+-    if (!pDomain->io) {
+-	pDomain->io = sparcMapAperture(ScreenNum, Flags,
+-	    pDomain->io_addr, pDomain->io_size);
+-
+-	if (apertureFd >= 0) {
+-	    close(apertureFd);
+-	    apertureFd = -1;
+-	}
+-    }
+-
+-    return (IOADDRESS)pDomain->io + Base;
+-}
+-
+-resPtr
+-xf86AccResFromOS(resPtr pRes)
+-{
+-    sparcDomainPtr pDomain;
+-    resRange       range;
+-    int            domain;
+-
+-    for (domain = 1;  domain < pciNumDomains;  domain++) {
+-	if (!(pDomain = xf86DomainInfo[domain]))
+-	    continue;
+-
+-	/*
+-	 * At minimum, the top and bottom resources must be claimed, so that
+-	 * resources that are (or appear to be) unallocated can be relocated.
+-	 */
+-	RANGE(range, 0x00000000u, 0x0009ffffu,
+-	      RANGE_TYPE(ResExcMemBlock, domain));
+-	pRes = xf86AddResToList(pRes, &range, -1);
+-	RANGE(range, 0x000c0000u, 0x000effffu,
+-	      RANGE_TYPE(ResExcMemBlock, domain));
+-	pRes = xf86AddResToList(pRes, &range, -1);
+-	RANGE(range, 0x000f0000u, 0x000fffffu,
+-	      RANGE_TYPE(ResExcMemBlock, domain));
+-	pRes = xf86AddResToList(pRes, &range, -1);
+-
+-	RANGE(range, pDomain->mem_size - 1, pDomain->mem_size - 1,
+-	      RANGE_TYPE(ResExcMemBlock, domain));
+-	pRes = xf86AddResToList(pRes, &range, -1);
+-
+-	RANGE(range, 0x00000000u, 0x00000000u,
+-	      RANGE_TYPE(ResExcIoBlock, domain));
+-	pRes = xf86AddResToList(pRes, &range, -1);
+-	RANGE(range, pDomain->io_size - 1, pDomain->io_size - 1,
+-	      RANGE_TYPE(ResExcIoBlock, domain));
+-	pRes = xf86AddResToList(pRes, &range, -1);
+-    }
+-
+-    return pRes;
+-}
+-
+-#endif /* !INCLUDE_XF86_NO_DOMAIN */
+-
+-#endif /* defined(sun) */
+-
+-#if defined(ARCH_PCI_PCI_BRIDGE)
+-
+-/* Definitions specific to Sun's APB P2P bridge (a.k.a. Simba) */
+-#define APB_IO_ADDRESS_MAP	0xDE
+-#define APB_MEM_ADDRESS_MAP	0xDF
+-
+-/*
+- * Simba's can only occur on bus 0.  Furthermore, Simba's must have a non-zero
+- * device/function number because the Sabre interface they must connect to
+- * occupies the 0:0:0 slot.  Also, there can be only one Sabre interface in the
+- * system, and therefore, only one Simba function can route any particular
+- * resource.  Thus, it is appropriate to use a single set of static variables
+- * to hold the tag of the Simba function routing a VGA resource range at any
+- * one time, and to test these variables for non-zero to determine whether or
+- * not the Sabre would master-abort a VGA access (and kill the system).
+- *
+- * The trick is to determine when it is safe to re-route VGA, because doing so
+- * re-routes much more.
+- */
+-static PCITAG simbavgaIOTag = 0, simbavgaMemTag = 0;
+-static Bool simbavgaRoutingAllow = TRUE;
+-
+-/*
+- * Scan the bus subtree rooted at 'bus' for a non-display device that might be
+- * decoding the bottom 2 MB of I/O space and/or the bottom 512 MB of memory
+- * space.  Reset simbavgaRoutingAllow if such a device is found.
+- *
+- * XXX For now, this is very conservative and should be made less so as the
+- *     need arises.
+- */
+-static void
+-simbaCheckBus(CARD16 pcicommand, int bus)
+-{
+-    pciConfigPtr pPCI, *ppPCI = xf86scanpci(0);
+-
+-    while ((pPCI = *ppPCI++)) {
+-	if (pPCI->busnum < bus)
+-	    continue;
+-	if (pPCI->busnum > bus)
+-	    break;
+-
+-	/* XXX Assume all devices respect PCI disablement */
+-	if (!(pcicommand & pPCI->pci_command))
+-	    continue;
+-
+-	/* XXX This doesn't deal with mis-advertised classes */
+-	switch (pPCI->pci_base_class) {
+-	case PCI_CLASS_PREHISTORIC:
+-	    if (pPCI->pci_sub_class == PCI_SUBCLASS_PREHISTORIC_VGA)
+-		continue;	/* Ignore VGA */
+-	    break;
+-
+-	case PCI_CLASS_DISPLAY:
+-	    continue;
+-
+-	case PCI_CLASS_BRIDGE:
+-	    switch (pPCI->pci_sub_class) {
+-	    case PCI_SUBCLASS_BRIDGE_PCI:
+-	    case PCI_SUBCLASS_BRIDGE_CARDBUS:
+-		/* Scan secondary bus */
+-		/* XXX First check bridge routing? */
+-		simbaCheckBus(pcicommand & pPCI->pci_command,
+-		    PCI_SECONDARY_BUS_EXTRACT(pPCI->pci_pp_bus_register,
+-			pPCI->tag));
+-		if (!simbavgaRoutingAllow)
+-		    return;
+-
+-	    default:
+-		break;
+-	    }
+-
+-	default:
+-	    break;
+-	}
+-
+-	/*
+-	 * XXX We could check the device's bases here, but PCI doesn't limit
+-	 *     the device's decoding to them.
+-	 */
+-
+-	simbavgaRoutingAllow = FALSE;
+-	break;
+-    }
+-}
+-
+-static pciConfigPtr
+-simbaVerifyBus(int bus)
+-{
+-    pciConfigPtr pPCI;
+-    if ((bus < 0) || (bus >= pciNumBuses) ||
+-	!pciBusInfo[bus] || !(pPCI = pciBusInfo[bus]->bridge) ||
+-	(pPCI->pci_device_vendor != DEVID(VENDOR_SUN, CHIP_SIMBA)))
+-	return NULL;
+-
+-    return pPCI;
+-}
+-
+-static CARD16
+-simbaControlBridge(int bus, CARD16 mask, CARD16 value)
+-{
+-    pciConfigPtr pPCI;
+-    CARD16 current = 0, tmp;
+-    CARD8 iomap, memmap;
+-
+-    if ((pPCI = simbaVerifyBus(bus))) {
+-	/*
+-	 * The Simba does not implement VGA enablement as described in the P2P
+-	 * spec.  It does however route I/O and memory in large enough chunks
+-	 * so that we can determine were VGA resources would be routed
+-	 * (including ISA VGA I/O aliases).  We can allow changes to that
+-	 * routing only under certain circumstances.
+-	 */
+-	iomap = pciReadByte(pPCI->tag, APB_IO_ADDRESS_MAP);
+-	memmap = pciReadByte(pPCI->tag, APB_MEM_ADDRESS_MAP);
+-	if (iomap & memmap & 0x01) {
+-	    current |= PCI_PCI_BRIDGE_VGA_EN;
+-	    if ((mask & PCI_PCI_BRIDGE_VGA_EN) &&
+-		!(value & PCI_PCI_BRIDGE_VGA_EN)) {
+-		if (!simbavgaRoutingAllow) {
+-		    xf86MsgVerb(X_WARNING, 3, "Attempt to disable VGA routing"
+-				" through Simba at %x:%x:%x disallowed.\n",
+-				pPCI->busnum, pPCI->devnum, pPCI->funcnum);
+-		    value |= PCI_PCI_BRIDGE_VGA_EN;
+-		} else {
+-		    pciWriteByte(pPCI->tag, APB_IO_ADDRESS_MAP,
+-				 iomap & ~0x01);
+-		    pciWriteByte(pPCI->tag, APB_MEM_ADDRESS_MAP,
+-				 memmap & ~0x01);
+-		    simbavgaIOTag = simbavgaMemTag = 0;
+-		}
+-	    }
+-	} else {
+-	    if (mask & value & PCI_PCI_BRIDGE_VGA_EN) {
+-		if (!simbavgaRoutingAllow) {
+-		    xf86MsgVerb(X_WARNING, 3, "Attempt to enable VGA routing"
+-				" through Simba at %x:%x:%x disallowed.\n",
+-				pPCI->busnum, pPCI->devnum, pPCI->funcnum);
+-		    value &= ~PCI_PCI_BRIDGE_VGA_EN;
+-		} else {
+-		    if (pPCI->tag != simbavgaIOTag) {
+-			if (simbavgaIOTag) {
+-			    tmp = pciReadByte(simbavgaIOTag,
+-					      APB_IO_ADDRESS_MAP);
+-			    pciWriteByte(simbavgaIOTag, APB_IO_ADDRESS_MAP,
+-					 tmp & ~0x01);
+-			}
+-
+-			pciWriteByte(pPCI->tag, APB_IO_ADDRESS_MAP,
+-				     iomap | 0x01);
+-			simbavgaIOTag = pPCI->tag;
+-		    }
+-
+-		    if (pPCI->tag != simbavgaMemTag) {
+-			if (simbavgaMemTag) {
+-			    tmp = pciReadByte(simbavgaMemTag,
+-					      APB_MEM_ADDRESS_MAP);
+-			    pciWriteByte(simbavgaMemTag, APB_MEM_ADDRESS_MAP,
+-					 tmp & ~0x01);
+-			}
+-
+-			pciWriteByte(pPCI->tag, APB_MEM_ADDRESS_MAP,
+-				     memmap | 0x01);
+-			simbavgaMemTag = pPCI->tag;
+-		    }
+-		}
+-	    }
+-	}
+-
+-	/* Move on to master abort failure enablement (as per P2P spec) */
+-	tmp = pciReadWord(pPCI->tag, PCI_PCI_BRIDGE_CONTROL_REG);
+-	current |= tmp;
+-	if (tmp & PCI_PCI_BRIDGE_MASTER_ABORT_EN) {
+-	    if ((mask & PCI_PCI_BRIDGE_MASTER_ABORT_EN) &&
+-		!(value & PCI_PCI_BRIDGE_MASTER_ABORT_EN))
+-		pciWriteWord(pPCI->tag, PCI_PCI_BRIDGE_CONTROL_REG,
+-			     tmp & ~PCI_PCI_BRIDGE_MASTER_ABORT_EN);
+-	} else {
+-	    if (mask & value & PCI_PCI_BRIDGE_MASTER_ABORT_EN)
+-		pciWriteWord(pPCI->tag, PCI_PCI_BRIDGE_CONTROL_REG,
+-			     tmp | PCI_PCI_BRIDGE_MASTER_ABORT_EN);
+-	}
+-
+-	/* Insert emulation of other P2P controls here */
+-    }
+-
+-    return (current & ~mask) | (value & mask);
+-}
+-
+-static void
+-simbaGetBridgeResources(int bus,
+-			pointer *ppIoRes,
+-			pointer *ppMemRes,
+-			pointer *ppPmemRes)
+-{
+-    pciConfigPtr pPCI = simbaVerifyBus(bus);
+-    resRange range;
+-    int i;
+-
+-    if (!pPCI)
+-	return;
+-
+-    if (ppIoRes) {
+-	xf86FreeResList(*ppIoRes);
+-	*ppIoRes = NULL;
+-
+-	if (pPCI->pci_command & PCI_CMD_IO_ENABLE) {
+-	    unsigned char iomap = pciReadByte(pPCI->tag, APB_IO_ADDRESS_MAP);
+-	    if (simbavgaRoutingAllow)
+-		iomap |= 0x01;
+-	    for (i = 0;  i < 8;  i++) {
+-		if (iomap & (1 << i)) {
+-		    RANGE(range, i << 21, ((i + 1) << 21) - 1,
+-			  RANGE_TYPE(ResExcIoBlock,
+-				     xf86GetPciDomain(pPCI->tag)));
+-		    *ppIoRes = xf86AddResToList(*ppIoRes, &range, -1);
+-		}
+-	    }
+-	}
+-    }
+-
+-    if (ppMemRes) {
+-	xf86FreeResList(*ppMemRes);
+-	*ppMemRes = NULL;
+-
+-	if (pPCI->pci_command & PCI_CMD_MEM_ENABLE) {
+-	    unsigned char memmap = pciReadByte(pPCI->tag, APB_MEM_ADDRESS_MAP);
+-	    if (simbavgaRoutingAllow)
+-		memmap |= 0x01;
+-	    for (i = 0;  i < 8;  i++) {
+-		if (memmap & (1 << i)) {
+-		    RANGE(range, i << 29, ((i + 1) << 29) - 1,
+-			  RANGE_TYPE(ResExcMemBlock,
+-				     xf86GetPciDomain(pPCI->tag)));
+-		    *ppMemRes = xf86AddResToList(*ppMemRes, &range, -1);
+-		}
+-	    }
+-	}
+-    }
+-
+-    if (ppPmemRes) {
+-	xf86FreeResList(*ppPmemRes);
+-	*ppPmemRes = NULL;
+-    }
+-}
+-
+-void ARCH_PCI_PCI_BRIDGE(pciConfigPtr pPCI)
+-{
+-    static pciBusFuncs_t simbaBusFuncs;
+-    pciBusInfo_t *pBusInfo;
+-    CARD16 pcicommand;
+-
+-    if (pPCI->pci_device_vendor != DEVID(VENDOR_SUN, CHIP_SIMBA))
+-	return;
+-
+-    pBusInfo = pPCI->businfo;
+-
+-    simbaBusFuncs = *(pBusInfo->funcs);
+-    simbaBusFuncs.pciControlBridge = simbaControlBridge;
+-    simbaBusFuncs.pciGetBridgeResources = simbaGetBridgeResources;
+-
+-    pBusInfo->funcs = &simbaBusFuncs;
+-
+-    if (!simbavgaRoutingAllow)
+-	return;
+-
+-    pcicommand = 0;
+-
+-    if (pciReadByte(pPCI->tag, APB_IO_ADDRESS_MAP) & 0x01) {
+-	pcicommand |= PCI_CMD_IO_ENABLE;
+-	simbavgaIOTag = pPCI->tag;
+-    }
+-
+-    if (pciReadByte(pPCI->tag, APB_MEM_ADDRESS_MAP) & 0x01) {
+-	pcicommand |= PCI_CMD_MEM_ENABLE;
+-	simbavgaMemTag = pPCI->tag;
+-    }
+-
+-    if (!pcicommand)
+-	return;
+-
+-    simbaCheckBus(pcicommand,
+-	PCI_SECONDARY_BUS_EXTRACT(pPCI->pci_pp_bus_register, pPCI->tag));
+-}
+-
+-#endif /* defined(ARCH_PCI_PCI_BRIDGE) */
+-- 
+1.4.1
+
--- a/open-src/xserver/xorg/render-security.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-# On branch refs/heads/server-1.3-branch
-# Updated but not checked in:
-#   (will commit)
-#
-#	modified:   fb/fbtrap.c
-#	modified:   render/renderedge.c
-#
-diff --git a/fb/fbtrap.c b/fb/fbtrap.c
-index 8639695..52fcfed 100644
---- a/fb/fbtrap.c
-+++ b/fb/fbtrap.c
-@@ -115,6 +115,9 @@ fbRasterizeTrapezoid (PicturePtr    pPicture,
-     RenderEdge	l, r;
-     xFixed	t, b;
-     
-+    if (!xTrapezoidValid (trap))
-+	return;
-+
-     fbGetDrawable (pPicture->pDrawable, buf, stride, bpp, pxoff, pyoff);
- 
-     width = pPicture->pDrawable->width;
-diff --git a/render/renderedge.c b/render/renderedge.c
-index 199ec22..c2ffabe 100644
---- a/render/renderedge.c
-+++ b/render/renderedge.c
-@@ -143,6 +143,7 @@ RenderEdgeInit (RenderEdge	*e,
-     dx = x_bot - x_top;
-     dy = y_bot - y_top;
-     e->dy = dy;
-+    e->dx = 0;
-     if (dy)
-     {
- 	if (dx >= 0)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/restore-kbd-mouse.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,145 @@
+From aeb01b73c94b5c2154406695970494a408ba1fba Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Wed, 14 Jan 2009 18:53:15 -0800
+Subject: [PATCH] Revert "xfree86: If AEI is on, disable "kbd" and "mouse" devices."
+
+This reverts commit 3245bf113619500b7b6cae3a3f31ddd2984cbc05.
+---
+ hw/xfree86/common/xf86Config.c       |   39 +--------------------------------
+ hw/xfree86/doc/man/xorg.conf.man.pre |    1 -
+ 2 files changed, 2 insertions(+), 38 deletions(-)
+
+diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
+index e91eadd..a1c2e34 100644
+--- a/hw/xfree86/common/xf86Config.c
++++ b/hw/xfree86/common/xf86Config.c
+@@ -1340,7 +1340,7 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout)
+     }
+ 
+     /* 4. First pointer with 'mouse' as the driver. */
+-    if (!foundPointer && !xf86Info.allowEmptyInput) {
++    if (!foundPointer && (!xf86Info.allowEmptyInput || implicitLayout)) {
+ 	confInput = xf86findInput(CONF_IMPLICIT_POINTER,
+ 				  xf86configptr->conf_input_lst);
+ 	if (!confInput) {
+@@ -1480,7 +1480,7 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout)
+     }
+ 
+     /* 4. First keyboard with 'keyboard' or 'kbd' as the driver. */
+-    if (!foundKeyboard && !xf86Info.allowEmptyInput) {
++    if (!foundKeyboard && (!xf86Info.allowEmptyInput || implicitLayout)) {
+ 	confInput = xf86findInput(CONF_IMPLICIT_KEYBOARD,
+ 				  xf86configptr->conf_input_lst);
+ 	if (!confInput) {
+@@ -2481,41 +2481,6 @@ addDefaultModes(MonPtr monitorp)
+ static void
+ checkInput(serverLayoutPtr layout, Bool implicit_layout) {
+     checkCoreInputDevices(layout, implicit_layout);
+-
+-    /* AllowEmptyInput and the "kbd" and "mouse" drivers are mutually
+-     * exclusive. Trawl the list for mouse/kbd devices and disable them.
+-     */
+-    if (xf86Info.allowEmptyInput && layout->inputs)
+-    {
+-        IDevPtr *dev = layout->inputs;
+-        BOOL warned = FALSE;
+-
+-        while(*dev)
+-        {
+-            if (strcmp((*dev)->driver, "kbd") == 0 ||
+-                strcmp((*dev)->driver, "mouse") == 0)
+-            {
+-                IDevPtr *current;
+-                if (!warned)
+-                {
+-                    xf86Msg(X_WARNING, "AllowEmptyInput is on, devices using "
+-                            "drivers 'kbd' or 'mouse' will be disabled.\n");
+-                    warned = TRUE;
+-                }
+-
+-                xf86Msg(X_WARNING, "Disabling %s\n", (*dev)->identifier);
+-
+-                current = dev;
+-                xfree(*dev);
+-
+-                do {
+-                    *current = *(current + 1);
+-                    current++;
+-                } while(*current);
+-            } else
+-                dev++;
+-        }
+-    }
+ }
+ 
+ /*
+diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
+index de93aaf..74f8cef 100644
+--- a/hw/xfree86/doc/man/xorg.conf.man.pre
++++ b/hw/xfree86/doc/man/xorg.conf.man.pre
+@@ -698,7 +698,6 @@ the X server to load. Disabled by default.
+ If enabled, don't add the standard keyboard and mouse drivers, if there are no
+ input devices in the config file.  Enabled by default if AutoAddDevices and
+ AutoEnableDevices is enabled, otherwise disabled.
+-If AllowEmptyInput is on, devices using the kbd or mouse driver are ignored.
+ .TP 7
+ .BI "Option \*qAutoAddDevices\*q \*q" boolean \*q
+ If this option is disabled, then no devices will be added from HAL events.
+-- 
+1.5.6.5
+
+From 93d5891e83cc264c31f4da269434fec43a1900eb Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Wed, 14 Jan 2009 23:17:23 -0800
+Subject: [PATCH] Revert "xfree86: AllowEmptyInput is now enabled by default if hotplugging is enabled."
+
+This reverts commit c30f36c8c1dfd85deaf1c109823a1f15dd218ac7.
+---
+ hw/xfree86/common/xf86Config.c       |    8 +++++---
+ hw/xfree86/doc/man/xorg.conf.man.pre |    3 +--
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
+index a1c2e34..3812fe0 100644
+--- a/hw/xfree86/common/xf86Config.c
++++ b/hw/xfree86/common/xf86Config.c
+@@ -1088,9 +1088,9 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
+     }
+ #endif
+ 
+-    /* AllowEmptyInput is automatically true if we're hotplugging */
+-    xf86Info.allowEmptyInput = (xf86Info.autoAddDevices && xf86Info.autoEnableDevices);
+-    xf86GetOptValBool(FlagOptions, FLAG_ALLOW_EMPTY_INPUT, &xf86Info.allowEmptyInput);
++    xf86Info.allowEmptyInput = FALSE;
++    if (xf86GetOptValBool(FlagOptions, FLAG_ALLOW_EMPTY_INPUT, &value))
++        xf86Info.allowEmptyInput = TRUE;
+ 
+     xf86Info.useDefaultFontPath = TRUE;
+     xf86Info.useDefaultFontPathFrom = X_DEFAULT;
+@@ -1879,6 +1879,8 @@ configImpliedLayout(serverLayoutPtr servlayoutp, XF86ConfScreenPtr conf_screen)
+     indp = xnfalloc(sizeof(IDevPtr));
+     *indp = NULL;
+     servlayoutp->inputs = indp;
++    if (!xf86Info.allowEmptyInput && !checkCoreInputDevices(servlayoutp, TRUE))
++	return FALSE;
+     
+     return TRUE;
+ }
+diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
+index 74f8cef..9f39808 100644
+--- a/hw/xfree86/doc/man/xorg.conf.man.pre
++++ b/hw/xfree86/doc/man/xorg.conf.man.pre
+@@ -696,8 +696,7 @@ the X server to load. Disabled by default.
+ .TP 7
+ .BI "Option \*qAllowEmptyInput\*q \*q" boolean \*q
+ If enabled, don't add the standard keyboard and mouse drivers, if there are no
+-input devices in the config file.  Enabled by default if AutoAddDevices and
+-AutoEnableDevices is enabled, otherwise disabled.
++input devices in the config file.  Disabled by default.
+ .TP 7
+ .BI "Option \*qAutoAddDevices\*q \*q" boolean \*q
+ If this option is disabled, then no devices will be added from HAL events.
+
+-- 
+1.5.6.5
+
--- a/open-src/xserver/xorg/secure-rpc.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-From 23fbd5292d356067e85e1eec4eb4f743532b0503 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <[email protected]>
-Date: Fri, 17 Aug 2007 15:29:16 -0700
-Subject: [PATCH] Actually build Secure RPC authentication support (missed in modularization)
----
- configure.ac            |    1 +
- include/dix-config.h.in |    3 +++
- os/Makefile.am          |    6 +++++-
- os/rpcauth.c            |   16 ++++++++--------
- 4 files changed, 17 insertions(+), 9 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 41cc103..f0ede75 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -597,6 +597,7 @@ XTRANS_CONNECTION_FLAGS
- 
- # Secure RPC detection macro from xtrans.m4
- XTRANS_SECURE_RPC_FLAGS
-+AM_CONDITIONAL(SECURE_RPC, [test "x$SECURE_RPC" = xyes])
- 
- AM_CONDITIONAL(INT10_VM86, [test "x$INT10" = xvm86])
- AM_CONDITIONAL(INT10_X86EMU, [test "x$INT10" = xx86emu])
-diff --git a/include/dix-config.h.in b/include/dix-config.h.in
-index ad97605..69fab5e 100644
---- a/include/dix-config.h.in
-+++ b/include/dix-config.h.in
-@@ -282,6 +282,9 @@ #undef RES
- /* Support MIT-SCREEN-SAVER extension */
- #undef SCREENSAVER
- 
-+/* Support Secure RPC ("SUN-DES-1") authentication for X11 clients */
-+#undef SECURE_RPC
-+
- /* Use a lock to prevent multiple servers on a display */
- #undef SERVER_LOCK
- 
-diff --git a/os/Makefile.am b/os/Makefile.am
-index 53b2d7f..d2a9897 100644
---- a/os/Makefile.am
-+++ b/os/Makefile.am
-@@ -3,10 +3,10 @@ noinst_LTLIBRARIES = libos.la libcwrappe
- AM_CFLAGS = $(DIX_CFLAGS)
- 
- # FIXME: Add support for these in configure.ac
- K5AUTH_SRCS = k5auth.c
--SECURERPC_SRCS = rpcauth.c
- INTERNALMALLOC_SRCS = xalloc.c
- 
-+SECURERPC_SRCS = rpcauth.c
- XCSECURITY_SRCS = secauth.c
- XDMCP_SRCS = xdmcp.c
- STRLCAT_SRCS = strlcat.c strlcpy.c
-@@ -28,6 +28,10 @@ libos_la_SOURCES = 	\
- 	xprintf.c	\
- 	$(XORG_SRCS)
- 
-+if SECURE_RPC
-+libos_la_SOURCES += $(SECURERPC_SRCS)
-+endif
-+
- if XCSECURITY
- libos_la_SOURCES += $(XCSECURITY_SRCS)
- endif
-diff --git a/os/rpcauth.c b/os/rpcauth.c
-index 603844a..3451ac1 100644
---- a/os/rpcauth.c
-+++ b/os/rpcauth.c
-@@ -39,7 +39,7 @@ #endif
- #ifdef SECURE_RPC
- 
- #include <X11/X.h>
--#include "Xauth.h"
-+#include <X11/Xauth.h>
- #include "misc.h"
- #include "os.h"
- #include "dixstruct.h"
-@@ -135,7 +135,7 @@ CheckNetName (
- 
- static char rpc_error[MAXNETNAMELEN+50];
- 
--XID
-+_X_HIDDEN XID
- SecureRPCCheck (unsigned short data_length, char *data, 
-     ClientPtr client, char **reason)
- {
-@@ -159,14 +159,14 @@ SecureRPCCheck (unsigned short data_leng
-     return (XID) ~0L;
- }
-     
--void
-+_X_HIDDEN void
- SecureRPCInit (void)
- {
-     if (rpc_id == ~0L)
- 	AddAuthorization (9, "SUN-DES-1", 0, (char *) 0);
- }
- 
--int
-+_X_HIDDEN int
- SecureRPCAdd (unsigned short data_length, char *data, XID id)
- {
-     if (data_length)
-@@ -175,26 +175,26 @@ SecureRPCAdd (unsigned short data_length
-     return 1;
- }
- 
--int
-+_X_HIDDEN int
- SecureRPCReset (void)
- {
-     rpc_id = (XID) ~0L;
-     return 1;
- }
- 
--XID
-+_X_HIDDEN XID
- SecureRPCToID (unsigned short data_length, char *data)
- {
-     return rpc_id;
- }
- 
--int
-+_X_HIDDEN int
- SecureRPCFromID (XID id, unsigned short *data_lenp, char **datap)
- {
-     return 0;
- }
- 
--int
-+_X_HIDDEN int
- SecureRPCRemove (unsigned short data_length, char *data)
- {
-     return 0;
--- 
-1.4.1
-
--- a/open-src/xserver/xorg/shm-across-zones.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,571 +0,0 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-
-Implements PSARC 2007/500 X11 MIT-SHM Extension across zones
-6589829 X server should include zoneid of shared memory segment in access policy for MIT-SHM
-
-diff -urp -x '*~' -x '*.orig' Xext/shm.c Xext/shm.c
---- Xext/shm.c	2006-09-17 23:04:17.000000000 -0700
-+++ Xext/shm.c	2007-10-03 13:38:08.609611000 -0700
-@@ -61,6 +61,33 @@ in this Software without prior written a
- #include <X11/extensions/shmstr.h>
- #include <X11/Xfuncproto.h>
- 
-+/* Needed for Solaris cross-zone shared memory extension */
-+#ifdef HAVE_SHMCTL64
-+#include <sys/ipc_impl.h>
-+#define SHMSTAT(id, buf)	shmctl64(id, IPC_STAT64, buf)
-+#define SHMSTAT_TYPE 		struct shmid_ds64
-+#define SHMPERM_TYPE 		struct ipc_perm64
-+#define SHM_PERM(buf) 		buf.shmx_perm
-+#define SHM_SEGSZ(buf)		buf.shmx_segsz
-+#define SHMPERM_UID(p)		p->ipcx_uid
-+#define SHMPERM_CUID(p)		p->ipcx_cuid
-+#define SHMPERM_GID(p)		p->ipcx_gid
-+#define SHMPERM_CGID(p)		p->ipcx_cgid
-+#define SHMPERM_MODE(p)		p->ipcx_mode
-+#define SHMPERM_ZONEID(p)	p->ipcx_zoneid
-+#else
-+#define SHMSTAT(id, buf) 	shmctl(id, IPC_STAT, buf)
-+#define SHMSTAT_TYPE 		struct shmid_ds
-+#define SHMPERM_TYPE 		struct ipc_perm
-+#define SHM_PERM(buf) 		buf.shm_perm
-+#define SHM_SEGSZ(buf)		buf.shm_segsz
-+#define SHMPERM_UID(p)		p->uid
-+#define SHMPERM_CUID(p)		p->cuid
-+#define SHMPERM_GID(p)		p->gid
-+#define SHMPERM_CGID(p)		p->cgid
-+#define SHMPERM_MODE(p)		p->mode
-+#endif
-+
- #ifdef PANORAMIX
- #include "panoramiX.h"
- #include "panoramiXsrv.h"
-@@ -367,32 +394,57 @@ ProcShmQueryVersion(client)
-  * using the credentials from the client if available
-  */
- static int
--shm_access(ClientPtr client, struct ipc_perm *perm, int readonly)
-+shm_access(ClientPtr client, SHMPERM_TYPE *perm, int readonly)
- {
-     int uid, gid;
-     mode_t mask;
-+    int uidset = 0, gidset = 0;
-+    LocalClientCredRec *lcc;
-+    
-+    if (GetLocalClientCreds(client, &lcc) != -1) {
- 
--    if (LocalClientCred(client, &uid, &gid) != -1) {
--	
--	/* User id 0 always gets access */
--	if (uid == 0) {
--	    return 0;
-+	if (lcc->fieldsSet & LCC_UID_SET) {
-+	    uid = lcc->euid;
-+	    uidset = 1;
-+	}
-+	if (lcc->fieldsSet & LCC_GID_SET) {
-+	    gid = lcc->egid;
-+	    gidset = 1;
- 	}
--	/* Check the owner */
--	if (perm->uid == uid || perm->cuid == uid) {
--	    mask = S_IRUSR;
--	    if (!readonly) {
--		mask |= S_IWUSR;
-+
-+#if defined(HAVE_GETZONEID) && defined(SHMPERM_ZONEID)
-+	if ( ((lcc->fieldsSet & LCC_ZID_SET) == 0) || (lcc->zoneid == -1)
-+	     || (lcc->zoneid != SHMPERM_ZONEID(perm))) {
-+		uidset = 0;
-+		gidset = 0;
-+	}
-+#endif
-+	FreeLocalClientCreds(lcc);
-+	
-+	if (uidset) {
-+	    /* User id 0 always gets access */
-+	    if (uid == 0) {
-+		return 0;
-+	    }
-+	    /* Check the owner */
-+	    if (SHMPERM_UID(perm) == uid || SHMPERM_CUID(perm) == uid) {
-+		mask = S_IRUSR;
-+		if (!readonly) {
-+		    mask |= S_IWUSR;
-+		}
-+		return (SHMPERM_MODE(perm) & mask) == mask ? 0 : -1;
- 	    }
--	    return (perm->mode & mask) == mask ? 0 : -1;
- 	}
--	/* Check the group */
--	if (perm->gid == gid || perm->cgid == gid) {
--	    mask = S_IRGRP;
--	    if (!readonly) {
--		mask |= S_IWGRP;
-+
-+	if (gidset) {
-+	    /* Check the group */
-+	    if (SHMPERM_GID(perm) == gid || SHMPERM_CGID(perm) == gid) {
-+		mask = S_IRGRP;
-+		if (!readonly) {
-+		    mask |= S_IWGRP;
-+		}
-+		return (SHMPERM_MODE(perm) & mask) == mask ? 0 : -1;
- 	    }
--	    return (perm->mode & mask) == mask ? 0 : -1;
- 	}
-     }
-     /* Otherwise, check everyone else */
-@@ -400,14 +452,14 @@ shm_access(ClientPtr client, struct ipc_
-     if (!readonly) {
- 	mask |= S_IWOTH;
-     }
--    return (perm->mode & mask) == mask ? 0 : -1;
-+    return (SHMPERM_MODE(perm) & mask) == mask ? 0 : -1;
- }
- 
- static int
- ProcShmAttach(client)
-     register ClientPtr client;
- {
--    struct shmid_ds buf;
-+    SHMSTAT_TYPE buf;
-     ShmDescPtr shmdesc;
-     REQUEST(xShmAttachReq);
- 
-@@ -436,7 +488,7 @@ ProcShmAttach(client)
- 	shmdesc->addr = shmat(stuff->shmid, 0,
- 			      stuff->readOnly ? SHM_RDONLY : 0);
- 	if ((shmdesc->addr == ((char *)-1)) ||
--	    shmctl(stuff->shmid, IPC_STAT, &buf))
-+	    SHMSTAT(stuff->shmid, &buf))
- 	{
- 	    xfree(shmdesc);
- 	    return BadAccess;
-@@ -446,7 +498,7 @@ ProcShmAttach(client)
- 	 * do manual checking of access rights for the credentials 
- 	 * of the client */
- 
--	if (shm_access(client, &(buf.shm_perm), stuff->readOnly) == -1) {
-+	if (shm_access(client, &(SHM_PERM(buf)), stuff->readOnly) == -1) {
- 	    shmdt(shmdesc->addr);
- 	    xfree(shmdesc);
- 	    return BadAccess;
-@@ -455,7 +507,7 @@ ProcShmAttach(client)
- 	shmdesc->shmid = stuff->shmid;
- 	shmdesc->refcnt = 1;
- 	shmdesc->writable = !stuff->readOnly;
--	shmdesc->size = buf.shm_segsz;
-+	shmdesc->size = SHM_SEGSZ(buf);
- 	shmdesc->next = Shmsegs;
- 	Shmsegs = shmdesc;
-     }
-diff -urp -x '*~' -x '*.orig' configure.ac configure.ac
---- configure.ac	2007-10-03 13:37:45.856447000 -0700
-+++ configure.ac	2007-10-03 13:38:08.610833000 -0700
-@@ -105,7 +105,7 @@ dnl Checks for library functions.
- AC_FUNC_VPRINTF
- AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \
- 		strtol getopt getopt_long vsnprintf walkcontext backtrace \
--		getisax])
-+		getisax getzoneid shmctl64])
- AC_FUNC_ALLOCA
- dnl Old HAS_* names used in os/*.c.
- AC_CHECK_FUNC([getdtablesize],
-diff -urp -x '*~' -x '*.orig' include/dix-config.h.in include/dix-config.h.in
---- include/dix-config.h.in	2007-10-03 13:37:44.737563000 -0700
-+++ include/dix-config.h.in	2007-10-03 13:38:08.608763000 -0700
-@@ -124,6 +124,9 @@
- /* Define to 1 if you have the `getuid' function. */
- #undef HAVE_GETUID
- 
-+/* Define to 1 if you have the `getzoneid' function. */
-+#undef HAVE_GETZONEID
-+
- /* Define to 1 if you have the <inttypes.h> header file. */
- #undef HAVE_INTTYPES_H
- 
-@@ -166,6 +169,9 @@
- /* Define to 1 if you have the <rpcsvc/dbm.h> header file. */
- #undef HAVE_RPCSVC_DBM_H
- 
-+/* Define to 1 if you have the `shmctl64' function. */
-+#undef HAVE_SHMCTL64
-+
- /* Define to 1 if you have the <stdint.h> header file. */
- #undef HAVE_STDINT_H
- 
-diff -urp -x '*~' -x '*.orig' include/os.h include/os.h
---- include/os.h	2007-02-16 08:03:12.000000000 -0800
-+++ include/os.h	2007-10-03 13:38:08.590998000 -0700
-@@ -323,6 +323,24 @@ extern int LocalClient(ClientPtr /* clie
- 
- extern int LocalClientCred(ClientPtr, int *, int *);
- 
-+#define LCC_UID_SET	(1 << 0)
-+#define LCC_GID_SET	(1 << 1)
-+#define LCC_PID_SET	(1 << 2)
-+#define LCC_ZID_SET	(1 << 3)
-+
-+typedef struct {
-+    int fieldsSet;	/* Bit mask of fields set */
-+    int	euid;		/* Effective uid */
-+    int egid;		/* Primary effective group id */
-+    int nSuppGids;	/* Number of supplementary group ids */
-+    int *pSuppGids;	/* Array of supplementary group ids */
-+    int pid;		/* Process id */
-+    int zoneid;		/* Only set on Solaris 10 & later */
-+} LocalClientCredRec;
-+
-+extern int GetLocalClientCreds(ClientPtr, LocalClientCredRec **);
-+extern void FreeLocalClientCreds(LocalClientCredRec *); 
-+
- extern int ChangeAccessControl(ClientPtr /*client*/, int /*fEnabled*/);
- 
- extern int GetAccessControl(void);
-diff -urp -x '*~' -x '*.orig' os/access.c os/access.c
---- os/access.c	2006-10-24 17:25:19.000000000 -0700
-+++ os/access.c	2007-10-03 13:38:08.596211000 -0700
-@@ -236,10 +236,6 @@ static Bool NewHost(int /*family*/,
- 		    int /*len*/,
- 		    int /* addingLocalHosts */);
- 
--int LocalClientCredAndGroups(ClientPtr client, int *pUid, int *pGid, 
--                             int **pSuppGids, int *nSuppGids);
--
--
- /* XFree86 bug #156: To keep track of which hosts were explicitly requested in
-    /etc/X<display>.hosts, we've added a requested field to the HOST struct,
-    and a LocalHostRequested variable.  These default to FALSE, but are set
-@@ -1413,38 +1409,43 @@ _X_EXPORT Bool LocalClient(ClientPtr cli
- 
- /*
-  * Return the uid and gid of a connected local client
-- * or the uid/gid for nobody those ids cannot be determined
-- * 
-- * Used by XShm to test access rights to shared memory segments
-  */
- int
- LocalClientCred(ClientPtr client, int *pUid, int *pGid)
- {
--    return LocalClientCredAndGroups(client, pUid, pGid, NULL, NULL);
-+    LocalClientCredRec *lcc;
-+    int ret = GetLocalClientCreds(client, &lcc);
-+    
-+    if (ret == 0) {
-+	if ((lcc->fieldsSet & LCC_UID_SET) && (pUid != NULL))
-+	    *pUid = lcc->euid;
-+	if ((lcc->fieldsSet & LCC_GID_SET) && (pGid != NULL))
-+	    *pGid = lcc->egid;
-+	FreeLocalClientCreds(lcc);
-+    }
-+    return ret;
- }
- 
- /*
-  * Return the uid and all gids of a connected local client
-- * or the uid/gid for nobody those ids cannot be determined
-- * 
-- * If the caller passes non-NULL values for pSuppGids & nSuppGids,
-- * they are responsible for calling XFree(*pSuppGids) to release the
-- * memory allocated for the supplemental group ids list.
-+ * Allocates a LocalClientCredRec - caller must call FreeLocalClientCreds
-  *
-  * Used by localuser & localgroup ServerInterpreted access control forms below
-+ * Used by XShm to test access rights to shared memory segments
-  */
- int
--LocalClientCredAndGroups(ClientPtr client, int *pUid, int *pGid, 
--			 int **pSuppGids, int *nSuppGids)
-+GetLocalClientCreds(ClientPtr client, LocalClientCredRec **lccp)
- {
- #if defined(HAS_GETPEEREID) || defined(HAS_GETPEERUCRED) || defined(SO_PEERCRED)
-     int fd;
-     XtransConnInfo ci;
-+    LocalClientCredRec *lcc;
- #ifdef HAS_GETPEEREID
-     uid_t uid;
-     gid_t gid;
- #elif defined(HAS_GETPEERUCRED)
-     ucred_t *peercred = NULL;
-+    const gid_t *gids;
- #elif defined(SO_PEERCRED)
-     struct ucred peercred;
-     socklen_t so_len = sizeof(peercred);
-@@ -1463,57 +1464,64 @@ LocalClientCredAndGroups(ClientPtr clien
-     }
- #endif
- 
--    if (pSuppGids != NULL)
--	*pSuppGids = NULL;
--    if (nSuppGids != NULL)
--	*nSuppGids = 0;
--
-+    *lccp = Xcalloc(sizeof(LocalClientCredRec));
-+    if (*lccp == NULL)
-+	return -1;
-+    lcc = *lccp;
-+        
-     fd = _XSERVTransGetConnectionNumber(ci);
- #ifdef HAS_GETPEEREID
--    if (getpeereid(fd, &uid, &gid) == -1) 
--	    return -1;
--    if (pUid != NULL)
--	    *pUid = uid;
--    if (pGid != NULL)
--	    *pGid = gid;
-+    if (getpeereid(fd, &uid, &gid) == -1) {
-+	FreeLocalClientCreds(lcc);
-+	return -1;
-+    }
-+    lcc->euid = uid;
-+    lcc->egid = gid;
-+    lcc->fieldsSet = LCC_UID_SET | LCC_GID_SET;
-     return 0;
- #elif defined(HAS_GETPEERUCRED)
--    if (getpeerucred(fd, &peercred) < 0)
-+    if (getpeerucred(fd, &peercred) < 0) {
-+	FreeLocalClientCreds(lcc);
-     	return -1;
--#ifdef sun /* Ensure process is in the same zone */
--    if (getzoneid() != ucred_getzoneid(peercred)) {
--	ucred_free(peercred);
--	return -1;
-     }
--#endif
--    if (pUid != NULL)
--	*pUid = ucred_geteuid(peercred);
--    if (pGid != NULL)
--	*pGid = ucred_getegid(peercred);
--    if (pSuppGids != NULL && nSuppGids != NULL) {
--	const gid_t *gids;
--	*nSuppGids = ucred_getgroups(peercred, &gids);
--	if (*nSuppGids > 0) {
--	    *pSuppGids = xalloc(sizeof(int) * (*nSuppGids));
--	    if (*pSuppGids == NULL) {
--		*nSuppGids = 0;
--	    } else {
--		int i;
--		for (i = 0 ; i < *nSuppGids; i++) {
--		    (*pSuppGids)[i] = (int) gids[i];
--		}
-+    lcc->euid = ucred_geteuid(peercred);
-+    if (lcc->euid != -1)
-+	lcc->fieldsSet |= LCC_UID_SET;
-+    lcc->egid = ucred_getegid(peercred);
-+    if (lcc->egid != -1)
-+	lcc->fieldsSet |= LCC_GID_SET;
-+    lcc->pid = ucred_getpid(peercred);
-+    if (lcc->pid != -1)
-+	lcc->fieldsSet |= LCC_PID_SET;
-+#ifdef HAVE_GETZONEID
-+    lcc->zoneid = ucred_getzoneid(peercred);
-+    if (lcc->zoneid != -1)
-+	lcc->fieldsSet |= LCC_ZID_SET;
-+#endif
-+    lcc->nSuppGids = ucred_getgroups(peercred, &gids);
-+    if (lcc->nSuppGids > 0) {
-+	lcc->pSuppGids = Xcalloc((lcc->nSuppGids) * sizeof(int));
-+	if (lcc->pSuppGids == NULL) {
-+	    lcc->nSuppGids = 0;
-+	} else {
-+	    int i;
-+	    for (i = 0 ; i < lcc->nSuppGids; i++) {
-+		(lcc->pSuppGids)[i] = (int) gids[i];
- 	    }
- 	}
-+    } else {
-+	lcc->nSuppGids = 0;
-     }
-     ucred_free(peercred);
-     return 0;
- #elif defined(SO_PEERCRED)
--    if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &peercred, &so_len) == -1) 
--	    return -1;
--    if (pUid != NULL)
--	    *pUid = peercred.uid;
--    if (pGid != NULL)
--	    *pGid = peercred.gid;
-+    if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &peercred, &so_len) == -1) {
-+	FreeLocalClientCreds(lcc);
-+	return -1;
-+    }
-+    lcc->euid = peercred.uid;
-+    lcc->egid = peercred.gid;
-+    lcc->fieldsSet = LCC_UID_SET | LCC_GID_SET;
-     return 0;
- #endif
- #else
-@@ -1523,6 +1531,17 @@ LocalClientCredAndGroups(ClientPtr clien
- #endif
- }
- 
-+void
-+FreeLocalClientCreds(LocalClientCredRec *lcc)
-+{
-+    if (lcc != NULL) {
-+	if (lcc->nSuppGids > 0) {
-+	    Xfree(lcc->pSuppGids);
-+	}
-+	Xfree(lcc);
-+    }
-+}
-+
- static Bool
- AuthorizedClient(ClientPtr client)
- {
-@@ -2361,38 +2380,48 @@ static Bool 
- siLocalCredAddrMatch(int family, pointer addr, int len,
-   const char *siAddr, int siAddrlen, ClientPtr client, void *typePriv)
- {
--    int connUid, connGid, *connSuppGids, connNumSuppGids, siAddrId;
-+    int siAddrId;
-+    LocalClientCredRec *lcc;
-     siLocalCredPrivPtr lcPriv = (siLocalCredPrivPtr) typePriv;
- 
--    if (LocalClientCredAndGroups(client, &connUid, &connGid,
--      &connSuppGids, &connNumSuppGids) == -1) {
-+    if (GetLocalClientCreds(client, &lcc) == -1) {
- 	return FALSE;
-     }
- 
-+#ifdef HAVE_GETZONEID /* Ensure process is in the same zone */
-+    if (getzoneid() != lcc->zoneid) {
-+	FreeLocalClientCreds(lcc);
-+	return FALSE;
-+    }
-+#endif
-+
-     if (siLocalCredGetId(siAddr, siAddrlen, lcPriv, &siAddrId) == FALSE) {
-+	FreeLocalClientCreds(lcc);
- 	return FALSE;
-     }
- 
-     if (lcPriv->credType == LOCAL_USER) {
--	if (connUid == siAddrId) {
-+	if ((lcc->fieldsSet & LCC_UID_SET) && (lcc->euid == siAddrId)) {
-+	    FreeLocalClientCreds(lcc);
- 	    return TRUE;
- 	}
-     } else {
--	if (connGid == siAddrId) {
-+	if ((lcc->fieldsSet & LCC_GID_SET) && (lcc->egid == siAddrId)) {
-+	    FreeLocalClientCreds(lcc);
- 	    return TRUE;
- 	}
--	if (connSuppGids != NULL) {
-+	if (lcc->pSuppGids != NULL) {
- 	    int i;
- 
--	    for (i = 0 ; i < connNumSuppGids; i++) {
--		if (connSuppGids[i] == siAddrId) {
--		    xfree(connSuppGids);
-+	    for (i = 0 ; i < lcc->nSuppGids; i++) {
-+		if (lcc->pSuppGids[i] == siAddrId) {
-+		    FreeLocalClientCreds(lcc);
- 		    return TRUE;
- 		}
- 	    }
--	    xfree(connSuppGids);
- 	}
-     }
-+    FreeLocalClientCreds(lcc);
-     return FALSE;
- }
- 
-diff -urp -x '*~' -x '*.orig' os/connection.c os/connection.c
---- os/connection.c	2007-10-03 13:37:45.252958000 -0700
-+++ os/connection.c	2007-10-03 13:38:08.608318000 -0700
-@@ -603,11 +603,7 @@ AuthAudit (ClientPtr client, Bool letin,
-     char *out = addr;
-     int client_uid;
-     char client_uid_string[64];
--#ifdef HAS_GETPEERUCRED
--    ucred_t *peercred = NULL;
--    pid_t client_pid = -1;
--    zoneid_t client_zid = -1;
--#endif
-+    LocalClientCredRec *lcc;
- 
-     if (!len)
-         strcpy(out, "local host");
-@@ -645,23 +641,37 @@ AuthAudit (ClientPtr client, Bool letin,
- 	    strcpy(out, "unknown address");
- 	}
- 
--#ifdef HAS_GETPEERUCRED
--    if (getpeerucred(((OsCommPtr)client->osPrivate)->fd, &peercred) >= 0) {
--	client_uid = ucred_geteuid(peercred);
--	client_pid = ucred_getpid(peercred);
--	client_zid = ucred_getzoneid(peercred);
--
--	ucred_free(peercred);
--	snprintf(client_uid_string, sizeof(client_uid_string),
--		 " (uid %ld, pid %ld, zone %ld)",
--		 (long) client_uid, (long) client_pid, (long) client_zid);
--    }
--#else    
--    if (LocalClientCred(client, &client_uid, NULL) != -1) {
--	snprintf(client_uid_string, sizeof(client_uid_string),
--		 " (uid %d)", client_uid);
-+    if (GetLocalClientCreds(client, &lcc) != -1) {
-+	int slen; /* length written to client_uid_string */
-+
-+	strcpy(client_uid_string, "( ");
-+	slen = 2;
-+
-+	if (lcc->fieldsSet & LCC_UID_SET) {
-+	    snprintf(client_uid_string + slen,
-+		     sizeof(client_uid_string) - slen,
-+		     "uid=%ld", (long) lcc->euid);
-+	    slen = strlen(client_uid_string);
-+	}
-+
-+	if (lcc->fieldsSet & LCC_PID_SET) {
-+	    snprintf(client_uid_string + slen,
-+		     sizeof(client_uid_string) - slen,
-+		     " pid=%ld", (long) lcc->pid);
-+	    slen = strlen(client_uid_string);
-+	}
-+
-+	if (lcc->fieldsSet & LCC_ZID_SET) {
-+	    snprintf(client_uid_string + slen,
-+		     sizeof(client_uid_string) - slen,
-+		     " zoneid=%ld", (long) lcc->zoneid);
-+	    slen = strlen(client_uid_string);
-+	}
-+
-+	snprintf(client_uid_string + slen, sizeof(client_uid_string) - slen,
-+		 ")");
-+	FreeLocalClientCreds(lcc);
-     }
--#endif
-     else {
- 	client_uid_string[0] = '\0';
-     }
--- a/open-src/xserver/xorg/signal-handler.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/signal-handler.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,7 @@
---- hw/xfree86/dri/dri.c	Tue Jan 23 13:39:16 2007
-+++ hw/xfree86/dri/dri.c	Tue Mar 27 10:07:00 2007
-@@ -2158,7 +2158,11 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/dri/dri.c hw/xfree86/dri/dri.c
+--- hw/xfree86/dri/dri.c	2008-10-17 15:49:03.916893000 -0700
++++ hw/xfree86/dri/dri.c	2008-10-17 15:49:21.389521000 -0700
+@@ -2466,7 +2466,11 @@ int drmInstallSIGIOHandler(int fd, void 
      entry     = drmGetEntry(fd);
      entry->f  = f;
  
@@ -12,7 +13,7 @@
  }
  
  int drmRemoveSIGIOHandler(int fd)
-@@ -2167,5 +2171,9 @@
+@@ -2475,5 +2479,9 @@ int drmRemoveSIGIOHandler(int fd)
  
      entry->f = NULL;
  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/solaris-mapping.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,568 @@
+[Adjusted to apply to Xorg 1.5.3 tree]
+
+From 70e18a3b6b9d52169bca650f6cd4ef5d8ab40d95 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Thu, 30 Oct 2008 20:38:34 -0700
+Subject: [PATCH] Refactor Solaris mapping code to work with standard shared/vidmem.c
+
+Also merge sun_bios.c into sun_vid.c and upstream Solaris patch to
+keep aperture device open, to allow mappings to occur after X server
+has given up uid 0.
+---
+ hw/xfree86/os-support/solaris/Makefile.am |    3 +-
+ hw/xfree86/os-support/solaris/sun_bios.c  |  103 ---------
+ hw/xfree86/os-support/solaris/sun_vid.c   |  328 ++++++++++++++++++-----------
+ 3 files changed, 202 insertions(+), 232 deletions(-)
+ delete mode 100644 hw/xfree86/os-support/solaris/sun_bios.c
+
+diff --git a/hw/xfree86/os-support/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am
+index ca3dd31..a4ef67b 100644
+--- a/hw/xfree86/os-support/solaris/Makefile.am
++++ b/hw/xfree86/os-support/solaris/Makefile.am
+@@ -18,11 +18,12 @@ solaris-@[email protected]: solaris-@[email protected]
+ 	$(CPP) -P -DINLINE_ASM solaris-@[email protected] > $@
+ 
+ noinst_LTLIBRARIES = libsolaris.la
+-libsolaris_la_SOURCES = sun_bios.c sun_init.c \
++libsolaris_la_SOURCES = sun_init.c \
+ 	sun_mouse.c sun_vid.c sun_bell.c $(AGP_SRC) sun_apm.c \
+ 	$(srcdir)/../shared/kmod_noop.c \
+ 	$(srcdir)/../shared/posix_tty.c $(srcdir)/../shared/sigiostubs.c \
+ 	$(srcdir)/../shared/stdResource.c \
++	$(srcdir)/../shared/vidmem.c \
+ 	$(VTSW_SRC)
+ nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
+ 
+diff --git a/hw/xfree86/os-support/solaris/sun_bios.c b/hw/xfree86/os-support/solaris/sun_bios.c
+deleted file mode 100644
+index a27a5a5..0000000
+--- a/hw/xfree86/os-support/solaris/sun_bios.c
++++ /dev/null
+@@ -1,103 +0,0 @@
+-/*
+- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
+- * Copyright 1993 by David Wexelblat <[email protected]>
+- * Copyright 1999 by David Holland <[email protected]>
+- *
+- * Permission to use, copy, modify, distribute, and sell this software and its
+- * documentation for any purpose is hereby granted without fee, provided that
+- * the above copyright notice appear in all copies and that both that copyright
+- * notice and this permission notice appear in supporting documentation, and
+- * that the names of the copyright holders not be used in advertising or
+- * publicity pertaining to distribution of the software without specific,
+- * written prior permission.  The copyright holders make no representations
+- * about the suitability of this software for any purpose.  It is provided "as
+- * is" without express or implied warranty.
+- *
+- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+- * SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+- * OF THIS SOFTWARE.
+- */
+-
+-#ifdef HAVE_XORG_CONFIG_H
+-#include <xorg-config.h>
+-#endif
+-
+-#if defined(__i386__) || defined(__i386)
+-#define _NEED_SYSI86
+-#endif
+-#include "xf86.h"
+-#include "xf86Priv.h"
+-#include "xf86_OSlib.h"
+-
+-#ifndef MAP_FAILED
+-#define MAP_FAILED ((void *)-1)
+-#endif
+-
+-extern char *apertureDevName;
+-
+-/*
+- * Read BIOS via mmap()ing physical memory.
+- */
+-_X_EXPORT int
+-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
+-	     int Len)
+-{
+-	int fd;
+-	unsigned char *ptr;
+-	char solx86_vtname[20];
+-	int psize;
+-	int mlen;
+-
+-	/*
+-	 * Solaris 2.1 x86 SVR4 (10/27/93)
+-	 *	The server must treat the virtual terminal device file
+-	 *	as the standard SVR4 /dev/pmem. By default, then used VT
+-	 *	is considered the "default" file to open.
+-	 *
+-	 * Solaris 2.8 x86 (7/26/99) - DWH
+-	 *
+-	 *	Use /dev/xsvc for everything.
+-	 */
+-	psize = getpagesize();
+-	Offset += Base & (psize - 1);
+-	Base &= ~(psize - 1);
+-	mlen = (Offset + Len + psize - 1) & ~(psize - 1);
+-#if (defined(__i386__) || defined(__i386)) && !defined(__SOL8__)
+-	if (Base >= 0xA0000 && Base + mlen < 0xFFFFF && xf86Info.vtno >= 0)
+-		sprintf(solx86_vtname, "/dev/vt%02d", xf86Info.vtno);
+-	else
+-#endif
+-	{
+-		if (!xf86LinearVidMem())
+-			FatalError("xf86ReadBIOS: Could not mmap BIOS"
+-				   " [a=%lx]\n", Base);
+-		sprintf(solx86_vtname, apertureDevName);
+-	}
+-
+-	if ((fd = open(solx86_vtname, O_RDONLY)) < 0)
+-	{
+-		xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to open %s (%s)\n",
+-			solx86_vtname, strerror(errno));
+-		return(-1);
+-	}
+-	ptr = (unsigned char *)mmap((caddr_t)0, mlen, PROT_READ,
+-					MAP_SHARED, fd, (off_t)Base);
+-	if (ptr == MAP_FAILED)
+-	{
+-		xf86Msg(X_WARNING, "xf86ReadBIOS: %s mmap failed "
+-			"[0x%08lx, 0x%04x]\n",
+-			solx86_vtname, Base, mlen);
+-		close(fd);
+-		return -1;
+-	}
+-
+-	(void)memcpy(Buf, (void *)(ptr + Offset), Len);
+-	(void)munmap((caddr_t)ptr, mlen);
+-	(void)close(fd);
+-
+-	return Len;
+-}
+diff --git a/hw/xfree86/os-support/solaris/sun_vid.c b/hw/xfree86/os-support/solaris/sun_vid.c
+index e7b529c..2b50dd6 100644
+--- a/hw/xfree86/os-support/solaris/sun_vid.c
++++ b/hw/xfree86/os-support/solaris/sun_vid.c
+@@ -1,6 +1,7 @@
+ /*
+  * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
+  * Copyright 1993 by David Wexelblat <[email protected]>
++ * Copyright 1999 by David Holland <[email protected]>
+  *
+  * Permission to use, copy, modify, distribute, and sell this software and its
+  * documentation for any purpose is hereby granted without fee, provided that
+@@ -21,6 +22,33 @@
+  * OF THIS SOFTWARE.
+  *
+  */
++/* Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, and/or sell copies of the Software, and to permit persons
++ * to whom the Software is furnished to do so, provided that the above
++ * copyright notice(s) and this permission notice appear in all copies of
++ * the Software and that both the above copyright notice(s) and this
++ * permission notice appear in supporting documentation.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
++ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
++ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
++ * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
++ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
++ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
++ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ *
++ * Except as contained in this notice, the name of a copyright holder
++ * shall not be used in advertising or otherwise to promote the sale, use
++ * or other dealings in this Software without prior written authorization
++ * of the copyright holder.
++ */
+ 
+ #ifdef HAVE_XORG_CONFIG_H
+ #include <xorg-config.h>
+@@ -29,121 +57,176 @@
+ #include <sys/types.h> /* get __x86 definition if not set by compiler */
+ 
+ #if defined(__i386__) || defined(__i386) || defined(__x86)
+-#define _NEED_SYSI86
++# define _NEED_SYSI86
+ #endif
+ #include "xf86.h"
+ #include "xf86Priv.h"
+ #include "xf86_OSlib.h"
+-
+-#ifndef MAP_FAILED
+-#define MAP_FAILED ((void *)-1)
+-#endif
++#include "xf86OSpriv.h"
++#include <sys/mman.h>
+ 
+ /***************************************************************************/
+ /* Video Memory Mapping section 					   */
+ /***************************************************************************/
+ 
+-char *apertureDevName = NULL;
++static char *apertureDevName = NULL;
++static int apertureDevFD_ro = -1;
++static int apertureDevFD_rw = -1;
+ 
+-_X_EXPORT Bool
+-xf86LinearVidMem(void)
++static Bool
++solOpenAperture(void)
+ {
+-	int	mmapFd;
+-
+-	if (apertureDevName)
+-	    return TRUE;
+-
++    if (apertureDevName == NULL)
++    {
+ 	apertureDevName = "/dev/xsvc";
+-	if ((mmapFd = open(apertureDevName, O_RDWR)) < 0)
++	if ((apertureDevFD_rw = open(apertureDevName, O_RDWR)) < 0)
+ 	{
++	    xf86MsgVerb(X_WARNING, 0,
++			"solOpenAperture: failed to open %s (%s)\n",
++			apertureDevName, strerror(errno));
+ 	    apertureDevName = "/dev/fbs/aperture";
+-	    if((mmapFd = open(apertureDevName, O_RDWR)) < 0)
++	    apertureDevFD_rw = open(apertureDevName, O_RDWR);
++	}
++	apertureDevFD_ro = open(apertureDevName, O_RDONLY);
++
++	if ((apertureDevFD_rw < 0) || (apertureDevFD_ro < 0))
++	{
++	    xf86MsgVerb(X_WARNING, 0,
++			"solOpenAperture: failed to open %s (%s)\n",
++			apertureDevName, strerror(errno));
++	    xf86MsgVerb(X_WARNING, 0,
++			"solOpenAperture: either /dev/fbs/aperture"
++			" or /dev/xsvc required\n");
++
++	    apertureDevName = NULL;
++
++	    if (apertureDevFD_rw >= 0)
+ 	    {
+-		xf86MsgVerb(X_WARNING, 0,
+-		    "xf86LinearVidMem: failed to open %s (%s)\n",
+-		    apertureDevName, strerror(errno));
+-		xf86MsgVerb(X_WARNING, 0,
+-		    "xf86LinearVidMem: either /dev/fbs/aperture or /dev/xsvc"
+-		    " device driver required\n");
+-		xf86MsgVerb(X_WARNING, 0,
+-		    "xf86LinearVidMem: linear memory access disabled\n");
+-		apertureDevName = NULL;
+-		return FALSE;
++		close(apertureDevFD_rw);
+ 	    }
++	    apertureDevFD_rw = -1;
++
++	    if (apertureDevFD_ro >= 0)
++	    {
++		close(apertureDevFD_ro);
++	    }
++	    apertureDevFD_ro = -1;
++
++	    return FALSE;
+ 	}
+-	close(mmapFd);
+-	return TRUE;
++    }
++    return TRUE;
+ }
+ 
+-_X_EXPORT pointer
+-xf86MapVidMem(int ScreenNum, int Flags, unsigned long Base, unsigned long Size)
++static pointer
++solMapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int Flags)
+ {
+-	pointer base;
+-	int fd;
+-	char vtname[20];
+-
+-	/*
+-	 * Solaris 2.1 x86 SVR4 (10/27/93)
+-	 * The server must treat the virtual terminal device file as the
+-	 * standard SVR4 /dev/pmem.
+-	 *
+-	 * Using the /dev/vtXX device as /dev/pmem only works for the
+-	 * A0000-FFFFF region - If we wish you mmap the linear aperture
+-	 * it requires a device driver.
+-	 *
+-	 * So what we'll do is use /dev/vtXX for the A0000-FFFFF stuff, and
+-	 * try to use the /dev/fbs/aperture or /dev/xsvc driver if the server
+-	 * tries to mmap anything > FFFFF.  Its very very unlikely that the
+-	 * server will try to mmap anything below FFFFF that can't be handled
+-	 * by /dev/vtXX.
+-	 *
+-	 * DWH - 2/23/94
+-	 * DWH - 1/31/99 (Gee has it really been 5 years?)
+-	 *
+-	 * Solaris 2.8 7/26/99
+-	 * Use /dev/xsvc for everything
+-	 *
+-	 * DWH - 7/26/99 - Solaris8/dev/xsvc changes
+-	 *
+-	 * TSI - 2001.09 - SPARC changes
+-	 */
+-
+-#if defined(__i386__) && !defined(__SOL8__)
+-	if(Base < 0xFFFFF)
+-		sprintf(vtname, "/dev/vt%02d", xf86Info.vtno);
+-	else
+-#endif
+-	{
+-		if (!xf86LinearVidMem())
+-			FatalError("xf86MapVidMem:  no aperture device\n");
++    pointer base;
++    int fd;
++    int prot;
++
++    if (Flags & VIDMEM_READONLY)
++    {
++	fd = apertureDevFD_ro;
++	prot = PROT_READ;
++    }
++    else
++    {
++	fd = apertureDevFD_rw;
++	prot = PROT_READ | PROT_WRITE;
++    }
++
++    if (fd < 0)
++    {
++	xf86DrvMsg(ScreenNum, X_ERROR,
++		   "solMapVidMem: failed to open %s (%s)\n",
++		   apertureDevName, strerror(errno));
++	return NULL;
++    }
++
++    base = mmap(NULL, Size, prot, MAP_SHARED, fd, (off_t)Base);
++
++    if (base == MAP_FAILED) {
++        xf86DrvMsg(ScreenNum, X_ERROR,
++		   "solMapVidMem: failed to mmap %s (0x%08lx,0x%lx) (%s)\n",
++		   apertureDevName, Base, Size, strerror(errno));
++	return NULL;
++    }
++
++    return base;
++}
+ 
+-		strcpy(vtname, apertureDevName);
+-	}
++/* ARGSUSED */
++static void
++solUnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
++{
++    if (munmap(Base, Size) != 0) {
++	xf86DrvMsgVerb(ScreenNum, X_WARNING, 0,
++		       "solUnMapVidMem: failed to unmap %s"
++		       " (0x%08lx,0x%lx) (%s)\n",
++		       apertureDevName, Base, Size,
++		       strerror(errno));
++    }
++}
+ 
+-	fd = open(vtname, (Flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
+-	if (fd < 0)
+-		FatalError("xf86MapVidMem: failed to open %s (%s)\n",
+-			   vtname, strerror(errno));
+-
+-	base = mmap(NULL, Size,
+-		    (Flags & VIDMEM_READONLY) ?
+-			PROT_READ : (PROT_READ | PROT_WRITE),
+-		     MAP_SHARED, fd, (off_t)Base);
+-	close(fd);
+-	if (base == MAP_FAILED)
+-		FatalError("xf86MapVidMem:  mmap failure:  %s\n",
+-			   strerror(errno));
+-
+-	return(base);
++_X_HIDDEN void
++xf86OSInitVidMem(VidMemInfoPtr pVidMem)
++{
++    pVidMem->linearSupported = solOpenAperture();
++    if (pVidMem->linearSupported) {
++	pVidMem->mapMem = solMapVidMem;
++	pVidMem->unmapMem = solUnMapVidMem;
++    } else {
++	xf86MsgVerb(X_WARNING, 0,
++		    "xf86OSInitVidMem: linear memory access disabled\n");
++    }
++    pVidMem->initialised = TRUE;
+ }
+ 
+-/* ARGSUSED */
+-_X_EXPORT void
+-xf86UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
++/*
++ * Read BIOS via mmap()ing physical memory.
++ */
++_X_EXPORT int
++xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
++	     int Len)
+ {
+-	munmap(Base, Size);
++    unsigned char *ptr;
++    int psize;
++    int mlen;
++
++    psize = getpagesize();
++    Offset += Base & (psize - 1);
++    Base &= ~(psize - 1);
++    mlen = (Offset + Len + psize - 1) & ~(psize - 1);
++
++    if (solOpenAperture() == FALSE)
++    {
++	xf86Msg(X_WARNING,
++		"xf86ReadBIOS: Failed to open aperture to read BIOS\n");
++	return -1;
++    }
++
++    ptr = (unsigned char *)mmap(NULL, mlen, PROT_READ,
++				MAP_SHARED, apertureDevFD_ro, (off_t)Base);
++    if (ptr == MAP_FAILED)
++    {
++	xf86Msg(X_WARNING, "xf86ReadBIOS: %s mmap failed [0x%08lx, 0x%04x]\n",
++		apertureDevName, Base, mlen);
++	return -1;
++    }
++
++    (void)memcpy(Buf, (void *)(ptr + Offset), Len);
++    if (munmap((caddr_t)ptr, mlen) != 0) {
++	xf86MsgVerb(X_WARNING, 0,
++		    "solUnMapVidMem: failed to unmap %s"
++		    " (0x%08lx,0x%lx) (%s)\n",
++		    apertureDevName, ptr, mlen, strerror(errno));
++    }
++
++    return Len;
+ }
+ 
++
+ /***************************************************************************/
+ /* I/O Permissions section						   */
+ /***************************************************************************/
+@@ -156,28 +239,28 @@ _X_EXPORT Bool
+ xf86EnableIO(void)
+ {
+ #if defined(__i386__) || defined(__i386) || defined(__x86)
+-	if (ExtendedEnabled)
+-		return TRUE;
++    if (ExtendedEnabled)
++	return TRUE;
+ 
+-	if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0) {
+-		xf86Msg(X_WARNING,"xf86EnableIOPorts: Failed to set IOPL for I/O\n");
+-		return FALSE;
+-	}
+-	ExtendedEnabled = TRUE;
++    if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0) {
++	xf86Msg(X_WARNING, "xf86EnableIOPorts: Failed to set IOPL for I/O\n");
++	return FALSE;
++    }
++    ExtendedEnabled = TRUE;
+ #endif /* i386 */
+-	return TRUE;
++    return TRUE;
+ }
+ 
+ _X_EXPORT void
+ xf86DisableIO(void)
+ {
+ #if defined(__i386__) || defined(__i386) || defined(__x86)
+-	if(!ExtendedEnabled)
+-		return;
++    if(!ExtendedEnabled)
++	return;
+ 
+-	sysi86(SI86V86, V86SC_IOPL, 0);
++    sysi86(SI86V86, V86SC_IOPL, 0);
+ 
+-	ExtendedEnabled = FALSE;
++    ExtendedEnabled = FALSE;
+ #endif /* i386 */
+ }
+ 
+@@ -186,51 +269,40 @@ xf86DisableIO(void)
+ /* Interrupt Handling section						   */
+ /***************************************************************************/
+ 
+-_X_EXPORT Bool xf86DisableInterrupts(void)
++_X_EXPORT Bool
++xf86DisableInterrupts(void)
+ {
+ #if defined(__i386__) || defined(__i386) || defined(__x86)
+-	if (!ExtendedEnabled && (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0))
+-		return FALSE;
++    if (!ExtendedEnabled && (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0))
++	return FALSE;
+ 
+ #ifdef __GNUC__
+-	__asm__ __volatile__("cli");
++    __asm__ __volatile__("cli");
+ #else
+-	asm("cli");
++    asm("cli");
+ #endif /* __GNUC__ */
+ 
+-	if (!ExtendedEnabled)
+-		sysi86(SI86V86, V86SC_IOPL, 0);
++    if (!ExtendedEnabled)
++	sysi86(SI86V86, V86SC_IOPL, 0);
+ #endif /* i386 */
+ 
+-	return TRUE;
++    return TRUE;
+ }
+ 
+-_X_EXPORT void xf86EnableInterrupts(void)
++_X_EXPORT void
++xf86EnableInterrupts(void)
+ {
+ #if defined(__i386__) || defined(__i386) || defined(__x86)
+-	if (!ExtendedEnabled && (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0))
+-		return;
++    if (!ExtendedEnabled && (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0))
++	return;
+ 
+ #ifdef __GNUC__
+-	__asm__ __volatile__("sti");
++    __asm__ __volatile__("sti");
+ #else
+-	asm("sti");
++    asm("sti");
+ #endif /* __GNUC__ */
+ 
+-	if (!ExtendedEnabled)
+-		sysi86(SI86V86, V86SC_IOPL, 0);
++    if (!ExtendedEnabled)
++	sysi86(SI86V86, V86SC_IOPL, 0);
+ #endif /* i386 */
+ }
+-
+-_X_EXPORT void
+-xf86MapReadSideEffects(int ScreenNum, int Flags, pointer Base,
+-	unsigned long Size)
+-{
+-}
+-
+-_X_EXPORT Bool
+-xf86CheckMTRR(int ScreenNum)
+-{
+-	return FALSE;
+-}
+-
+-- 
+1.5.6.5
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/sparc-nopciprobe.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,46 @@
+# Copyright 2008 Sun Microsystems, Inc.	 All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+
+Omit Bus probing on sparc. It is terribly slow and we get the same info thru /dev/fb
+
+*** hw/xfree86/common/xf86Init.c.orig	Thu Dec 18 18:01:47 2008
+--- hw/xfree86/common/xf86Init.c	Thu Dec 18 18:02:31 2008
+***************
+*** 734,741 ****
+--- 734,744 ----
+      xf86OpenConsole();
+  
+      /* Do a general bus probe.  This will be a PCI probe for x86 platforms */
++ #if (!defined(__sparc__) && !defined(__sparc))
+      xf86BusProbe();
++ #endif
+  
++ 
+      if (xf86DoProbe)
+  	DoProbe();
+  
--- a/open-src/xserver/xorg/sun-apm.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
---- hw/xfree86/os-support/solaris/Makefile.am	2006-10-11 13:46:15.000000000 -0700
-+++ hw/xfree86/os-support/solaris/Makefile.am	2006-10-18 09:59:34.248813000 -0700
-@@ -23,9 +23,9 @@
- 
- noinst_LTLIBRARIES = libsolaris.la
- libsolaris_la_SOURCES = sun_bios.c sun_init.c $(IO_SRC) $(KBD_SRCS) \
--	sun_mouse.c sun_vid.c $(AGP_SRC) \
-+	sun_mouse.c sun_vid.c $(AGP_SRC) sun_apm.c \
- 	$(srcdir)/../shared/libc_wrapper.c \
--	$(srcdir)/../shared/kmod_noop.c $(srcdir)/../shared/pm_noop.c \
-+	$(srcdir)/../shared/kmod_noop.c \
- 	$(srcdir)/../shared/posix_tty.c $(srcdir)/../shared/sigiostubs.c \
- 	$(srcdir)/../shared/stdPci.c $(srcdir)/../shared/stdResource.c \
- 	$(VTSW_SRC)
-
---- configure.ac
-+++ configure.ac
-@@ -1226,6 +1226,8 @@ #               ])
- 			fi
- 			if test "${OS_MINOR}" -lt 8 ; then
- 				solaris_usl_console="yes"
-+			else
-+				XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
- 			fi
- 			;;
- 		  *)
-
--- a/open-src/xserver/xorg/sun-extramodes.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-extramodes.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,7 @@
---- hw/xfree86/common/extramodes	2006-10-11 13:46:14.000000000 -0700
-+++ hw/xfree86/common/extramodes	2006-10-11 19:16:28.059134000 -0700
-@@ -31,3 +31,50 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/common/extramodes hw/xfree86/common/extramodes
+--- hw/xfree86/common/extramodes	2008-07-02 10:10:44.000000000 -0700
++++ hw/xfree86/common/extramodes	2008-09-22 21:38:06.550110000 -0700
+@@ -25,3 +25,50 @@ Modeline "2048x1536" 340.48  2048 2216 2
  # 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz
  Modeline "2048x1536" 388.04  2048 2216 2440 2832  1536 1537 1540 1612 -hsync +vsync
  
--- a/open-src/xserver/xorg/sun-kb-autodetect.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-
---- hw/xfree86/os-support/solaris/sun_io.c	2006-10-11 13:46:15.000000000 -0700
-+++ hw/xfree86/os-support/sunos/sun_io.c	2005-11-21 16:13:24.136515000 -0800
-@@ -61,6 +62,12 @@
- #include "xf86_OSlib.h"
- #include "sun_kbd.h"
- 
-+#ifdef SUNSOFT
-+# ifdef XKB
-+#  include "sun_xkbtable.h"
-+# endif
-+#endif
-+
- static sunKbdPrivRec sunKeyboardPriv;
- 
- _X_HIDDEN void
-@@ -92,6 +99,14 @@
- 		   kbdName, kbdOptions)	!= Success) {
-     	FatalError("Unable to initialize keyboard driver\n");
-     }
-+
-+#ifdef SUNSOFT
-+    /* Probe keyboard settings if not specified in configuration */
-+    if (xf86Info.xkbcomponents_specified != TRUE) {
-+	sun_find_xkbnames(sunKeyboardPriv.ktype, sunKeyboardPriv.klayout,
-+	    &xf86Info.xkbkeymap, &xf86Info.xkbmodel, &xf86Info.xkblayout);
-+    }
-+#endif
- }
- 
- _X_HIDDEN int
-
-
---- hw/xfree86/os-support/solaris/sun_kbd.c	2006-10-11 13:46:15.000000000 -0700
-+++ hw/xfree86/os-support/sunos/sun_kbd.c	2005-11-21 16:14:05.978499000 -0800
-@@ -72,6 +74,12 @@
- #include <poll.h>
- #endif
- 
-+#ifdef SUNSOFT
-+# ifdef XKB
-+#  include "sun_xkbtable.h"
-+# endif
-+#endif
-+
- /***************************************************************************
-  * Common implementation of routines shared by "keyboard" driver in sun_io.c
-  * and "kbd" driver (later on in this file)
-@@ -180,6 +188,7 @@
-     xf86Msg(X_PROBED, "%s: Keyboard layout: %d\n", devName, klayout);
- 
-     priv->ktype 	= ktype;
-+    priv->klayout 	= klayout;
-     priv->keyMap	= sunGetKbdMapping(ktype);
-     priv->audioState	= AB_INITIALIZING;
-     priv->oleds 	= sunKbdGetLeds(priv);
-@@ -507,10 +516,8 @@
- static int
- KbdInit(InputInfoPtr pInfo, int what)
- {
--    KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
--    sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
--
--    return sunKbdInit(priv, pInfo->fd, pInfo->name, pInfo->options);
-+    /* Does nothing now - sunKbdInit called from OpenKeyboard instead */
-+    return Success;
- }
- 
- 
-@@ -616,6 +623,65 @@
-     pInfo->fd = sunKbdOpen(pInfo->name, pInfo->options);
- 
-     if (pInfo->fd >= 0) {
-+	KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-+	sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
-+
-+	if (sunKbdInit(priv, pInfo->fd, pInfo->name, pInfo->options)
-+	    != Success) {
-+	    close(pInfo->fd);
-+	    pInfo->fd = -1;
-+	    return FALSE;
-+	}
-+#ifdef SUNSOFT
-+# ifdef XKB
-+	else {
-+	    /* Probe keyboard settings if not specified in configuration */
-+	    char *xkbkeymap = NULL, *xkbmodel = NULL, *xkblayout = NULL;
-+	    int i, found;
-+	    
-+	    const char *kbdDefaults[] = {
-+		"Protocol",         "standard",
-+		"AutoRepeat",       "500 30",
-+		"XkbRules",         "xorg",
-+		"XkbModel",         "pc105",
-+		"XkbLayout",        "us",
-+		"Panix106",         "off",
-+		"CustomKeycodes",   "off",
-+		NULL, NULL, 	    /* leave room to add XkbKeymap if needed */
-+		NULL 		    /* list terminator */
-+	    };
-+	    
-+	    sun_find_xkbnames(priv->ktype, priv->klayout,
-+			      &xkbkeymap, &xkbmodel, &xkblayout);
-+
-+#define SetXkbDefaults(OPTION, VALUE) \
-+	if (VALUE != NULL) { \
-+	    for (i = 0, found = 0; kbdDefaults[i] != NULL; i += 2) { \
-+		if (strcmp(kbdDefaults[i], OPTION) == 0) { \
-+		    kbdDefaults[i+1] = VALUE; found++; \
-+		    xf86Msg(X_PROBED, "%s: %s = %s\n", priv->devName, \
-+			    OPTION, VALUE); \
-+		    break; \
-+		} \
-+	    } \
-+	}
-+	    
-+#define AddXkbDefaults(OPTION, VALUE) \
-+	if (VALUE != NULL) { \
-+	    for (i = 0; kbdDefaults[i] != NULL; i += 2) \
-+	    { /* skip to end */ ; } \
-+	    kbdDefaults[i++] = OPTION; \
-+	    kbdDefaults[i++] = VALUE; \
-+	}
-+
-+	    SetXkbDefaults("XkbModel", xkbmodel);
-+	    SetXkbDefaults("XkbLayout", xkblayout);
-+	    AddXkbDefaults("XkbKeymap", xkbkeymap);
-+
-+	    xf86CollectInputOptions(pInfo, kbdDefaults, NULL);
-+	}
-+# endif
-+#endif
- 	pInfo->read_input = ReadInput;
- 	return TRUE;
-     } else {
-
-
---- hw/xfree86/os-support/solaris/sun_kbd.h	2006-10-11 13:46:15.000000000 -0700
-+++ hw/xfree86/os-support/sunos/sun_kbd.h	2005-11-21 16:14:25.602187000 -0800
-@@ -38,6 +38,7 @@
-     int			kbdFD;
-     const char *	devName;
-     int 		ktype;		/* Keyboard type from KIOCTYPE */
-+    int 		klayout;	/* Keyboard layout from KIOCLAYOUT */
-     Bool		kbdActive;	/* Have we set kbd modes for X? */
-     int 		otranslation;	/* Original translation mode */
-     int 		odirect;	/* Original "direct" mode setting */
-
---- hw/xfree86/os-support/solaris/Makefile.am	2006-10-11 13:46:15.000000000 -0700
-+++ hw/xfree86/os-support/solaris/Makefile.am	2006-10-18 10:02:39.962011000 -0700
-@@ -4,7 +4,7 @@
- VTSW_SRC = $(srcdir)/../shared/VTsw_usl.c
- else
- IO_SRC   = sun_io.c sun_kbd.h
--KBD_SRCS = sun_kbd.c sun_kbdEv.c sun_kbd.h
-+KBD_SRCS = sun_kbd.c sun_kbdEv.c sun_kbd.h sun_xkbtable.c sun_xkbtable.h
- VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c
- endif
- 
--- a/open-src/xserver/xorg/sun-keymappings.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-
---- hw/xfree86/os-support/solaris/sun_kbdEv.c	2006-10-11 13:46:15.000000000 -0700
-+++ hw/xfree86/os-support/sunos/sun_kbdEv.c	2005-11-03 14:16:51.843027000 -0800
-@@ -77,6 +115,16 @@
- #define KEY_Kanji	0x82
- #define KEY_Execute	0x83
- 
-+#if 0 /* def SUNSOFT */
-+/* On Solaris we swap the modifier numbers for AltGraph & NumLock from the
-+ * values listed in common/atKeynames.h
-+ */
-+#undef NumLockMask
-+#undef AltLangMask
-+#define NumLockMask     Mod3Mask
-+#define AltLangMask     Mod2Mask
-+#endif /* SUNSOFT */
-+
- static unsigned char map[256] = {
- #if defined(i386) || defined(__i386) || defined(__i386__) || defined(__x86)
- 	KEY_NOTUSED,		/*   0 */
-
---- hw/xfree86/common/atKeynames.h	2006-10-11 15:42:19.000000000 -0700
-+++ hw/xfree86/common/atKeynames.h	2005-11-02 16:31:27.626268000 -0800
-@@ -215,11 +216,11 @@
- #define KEY_F13          /* F13                   0x6e  */  110
- #define KEY_F14          /* F14                   0x6f  */  111
- #define KEY_F15          /* F15                   0x70  */  112
--#define KEY_HKTG         /* Hirugana/Katakana tog 0x70  */  112
-+#define KEY_HKTG         /* Hirugana/Katakana tog 0x70  */  200 /* was 112 */
- #define KEY_F16          /* F16                   0x71  */  113
- #define KEY_F17          /* F17                   0x72  */  114
- #define KEY_KP_DEC       /* KP_DEC                0x73  */  115
--#define KEY_BSlash2      /* \           _         0x73  */  115
-+#define KEY_BSlash2      /* \           _         0x73  */  203 /* was 115 */
- #define KEY_KP_Equal	 /* Equal (Keypad)        0x76  */  118
- #define KEY_XFER         /* Kanji Transfer        0x79  */  121
- #define KEY_NFER         /* No Kanji Transfer     0x7b  */  123
--- a/open-src/xserver/xorg/sun-loginfo.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-loginfo.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -27,17 +27,17 @@
 # of the copyright holder.
 
 diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Init.c hw/xfree86/common/xf86Init.c
---- hw/xfree86/common/xf86Init.c	2006-11-30 17:40:10.000000000 -0800
-+++ hw/xfree86/common/xf86Init.c	2007-07-30 18:34:21.833819000 -0700
-@@ -103,6 +103,7 @@ static void xf86PrintMarkers(void);
+--- hw/xfree86/common/xf86Init.c	2008-09-23 11:24:58.000000000 -0700
++++ hw/xfree86/common/xf86Init.c	2008-09-23 16:32:10.752446000 -0700
+@@ -102,6 +102,7 @@ static void xf86PrintBanner(void);
+ static void xf86PrintMarkers(void);
  static void xf86PrintDefaultModulePath(void);
  static void xf86PrintDefaultLibraryPath(void);
- static void xf86RunVtInit(void);
 +static void sunLogInfo(void);
  
- #ifdef __UNIXOS2__
- extern void os2ServerVideoAccess();
-@@ -1770,7 +1771,7 @@ ddxUseMsg()
+ static Bool probe_devices_from_device_sections(DriverPtr drvp);
+ static Bool add_matching_devices_to_configure_list(DriverPtr drvp);
+@@ -1778,7 +1779,7 @@ ddxUseMsg()
  static void
  xf86PrintBanner()
  {
@@ -46,7 +46,7 @@
    ErrorF("\n"
      "This is a pre-release version of the X server from " XVENDORNAME ".\n"
      "It is not supported in any way.\n"
-@@ -1862,6 +1863,7 @@ xf86PrintBanner()
+@@ -1878,6 +1879,7 @@ xf86PrintBanner()
  #if defined(BUILDERSTRING)
    ErrorF("%s \n",BUILDERSTRING);
  #endif
@@ -54,7 +54,7 @@
    ErrorF("\tBefore reporting problems, check "__VENDORDWEBSUPPORT__"\n"
  	 "\tto make sure that you have the latest version.\n");
    ErrorF("Module Loader present\n");
-@@ -2025,3 +2027,73 @@ xf86GetBppFromDepth(ScrnInfoPtr pScrn, i
+@@ -2004,3 +2006,73 @@ xf86GetBppFromDepth(ScrnInfoPtr pScrn, i
  	return 0;
  }
  
@@ -129,18 +129,9 @@
 +    }
 +}
 diff -urp -x '*~' -x '*.orig' hw/xfree86/loader/loadmod.c hw/xfree86/loader/loadmod.c
---- hw/xfree86/loader/loadmod.c	2007-04-16 09:37:51.000000000 -0700
-+++ hw/xfree86/loader/loadmod.c	2007-07-30 18:34:21.915061000 -0700
-@@ -869,7 +869,7 @@ doLoadModule(const char *module, const c
-     for (cim = compiled_in_modules; *cim; cim++)
- 	if (!strcmp (module, *cim))
- 	{
--	    xf86MsgVerb(X_INFO, 0, "Module already built-in\n");
-+	    xf86MsgVerb(X_INFO, 0, "Module \"%s\" already built-in\n", module);
- 	    return (ModuleDescPtr) 1;
- 	}
- 
-@@ -1310,6 +1310,15 @@ LoaderErrorMsg(const char *name, const c
+--- hw/xfree86/loader/loadmod.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/loader/loadmod.c	2008-09-23 16:32:10.776094000 -0700
+@@ -1239,6 +1239,15 @@ LoaderErrorMsg(const char *name, const c
      default:
  	msg = "unknown error";
      }
--- a/open-src/xserver/xorg/sun-manpage.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-manpage.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
-diff -urp -x '*~' cpprules.in cpprules.in
---- cpprules.in	2006-12-21 10:50:45.000000000 -0800
-+++ cpprules.in	2006-12-21 14:20:39.105037000 -0800
+diff -urp -x '*~' -x '*.orig' cpprules.in cpprules.in
+--- cpprules.in	2007-05-29 12:36:50.000000000 -0700
++++ cpprules.in	2008-09-24 20:18:46.328453000 -0700
 @@ -25,7 +25,7 @@ XORGRELSTRING = @PACKAGE_STRING@
    XORGMANNAME = X Version 11
    XSERVERNAME = Xorg
@@ -10,11 +10,11 @@
          -D__vendorversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
          -D__xorgversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
  	-D__appmansuffix__=$(APP_MAN_SUFFIX) \
-diff -urp -x '*~' doc/Xserver.man.pre doc/Xserver.man.pre
---- doc/Xserver.man.pre	2006-12-21 10:50:46.000000000 -0800
-+++ doc/Xserver.man.pre	2007-01-19 16:24:28.082214000 -0800
+diff -urp -x '*~' -x '*.orig' doc/Xserver.man.pre doc/Xserver.man.pre
+--- doc/Xserver.man.pre	2008-09-23 11:24:56.000000000 -0700
++++ doc/Xserver.man.pre	2008-09-24 20:18:46.329753000 -0700
 @@ -1,3 +1,32 @@
-+.\" ident	"@(#)sun-manpage.patch	1.5	07/10/10 SMI"
++.\" ident	"@(#)sun-manpage.patch	1.6	09/01/14 SMI"
 +.\" 
 +.\" Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
 +.\" 
@@ -281,10 +281,10 @@
  .TP 8
  .B \-xkbmap \fIfilename\fP
  loads keyboard description in \fIfilename\fP on server startup.
-@@ -732,6 +873,91 @@ __default_font_path__ .
- .LP
- The font path can be set with the \fB\-fp\fP option or by \fIxset\fP(1)
- after the server has started.
+@@ -546,6 +687,91 @@ the following font path:
+     /usr/share/fonts/default/ghostscript
+ .fi
+ 
 +#ifdef __SUNSOFT__
 +.SH SMF PROPERTIES
 +.PP
@@ -373,7 +373,7 @@
  .SH FILES
  .TP 30
  .I /etc/X\fBn\fP.hosts
-@@ -739,15 +954,26 @@ Initial access control list for display 
+@@ -553,15 +779,26 @@ Initial access control list for display 
  .TP 30
  .IR __projectroot__/lib/X11/fonts/misc , __projectroot__/lib/X11/fonts/75dpi , __projectroot__/lib/X11/fonts/100dpi
  Bitmap font directories
@@ -402,7 +402,7 @@
  .TP 30
  .IR /tmp/rcX\fBn\fP
  Kerberos 5 replay cache for display number \fBn\fP
-@@ -757,6 +983,11 @@ Error log file for display number \fBn\f
+@@ -571,6 +808,11 @@ Error log file for display number \fBn\f
  .TP 30
  .I __projectroot__/lib/X11/xdm/xdm-errors
  Default error log file if the server is run from \fIxdm\fP(1)
@@ -414,7 +414,7 @@
  .SH "SEE ALSO"
  General information: \fIX\fP(__miscmansuffix__)
  .PP
-@@ -773,14 +1004,28 @@ Security: \fIXsecurity\fP(__miscmansuffi
+@@ -587,14 +829,28 @@ Security: \fIXsecurity\fP(__miscmansuffi
  \fIxdm\fP(1), \fIxhost\fP(1), \fIxfwp\fP(1),
  .I "Security Extension Specification"
  .PP
--- a/open-src/xserver/xorg/sun-paths.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-paths.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,42 +1,7 @@
-diff -urp -x '*~' Xext/Makefile.am Xext/Makefile.am
---- Xext/Makefile.am	2006-11-13 16:59:38.000000000 -0800
-+++ Xext/Makefile.am	2006-12-21 14:19:20.440059000 -0800
-@@ -34,7 +34,7 @@ MODULE_SRCS =			\
- 	xcmisc.c
- 
- # Extra configuration files ship with some extensions
--SERVERCONFIGdir = $(libdir)/xserver
-+SERVERCONFIGdir = $(libdir)/X11/xserver
- SERVERCONFIG_DATA =
- 
- # Optional sources included if extension enabled by configure.ac rules
-diff -urp -x '*~' xkb/Makefile.am xkb/Makefile.am
---- xkb/Makefile.am	2006-11-13 16:59:41.000000000 -0800
-+++ xkb/Makefile.am	2006-12-21 14:19:20.503671000 -0800
-@@ -1,6 +1,7 @@
- noinst_LTLIBRARIES = libxkb.la libxkbstubs.la
- 
- AM_CFLAGS = $(DIX_CFLAGS) \
-+	-DMAKE_XKM_OUTPUT_DIR \
- 	-DHAVE_XKB_CONFIG_H
- 
- DDX_SRCS = \
-diff -urp -x '*~' xkb/xkbInit.c xkb/xkbInit.c
---- xkb/xkbInit.c	2006-11-13 16:59:41.000000000 -0800
-+++ xkb/xkbInit.c	2006-12-21 14:19:20.503312000 -0800
-@@ -123,7 +123,7 @@ typedef struct	_SrvXkmInfo {
- #endif
- 
- char	*		XkbBaseDirectory=	XKB_BASE_DIRECTORY;
--char	*		XkbBinDirectory=	XKB_BIN_DIRECTORY;
-+char	*		XkbBinDirectory=	XKB_BASE_DIRECTORY;
- int	 		XkbWantAccessX=		0;	
- static XkbFileInfo *	_XkbInitFileInfo=	NULL;
- 
-
---- hw/xfree86/common/xf86Configure.c	2007-04-17 10:43:56.616816000 -0700
-+++ hw/xfree86/common/xf86Configure.c	2007-04-17 10:57:03.148386000 -0700
-@@ -642,7 +642,8 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Configure.c hw/xfree86/common/xf86Configure.c
+--- hw/xfree86/common/xf86Configure.c	2008-09-23 11:24:58.000000000 -0700
++++ hw/xfree86/common/xf86Configure.c	2008-09-24 20:18:22.067988000 -0700
+@@ -555,7 +555,8 @@ configureModuleSection (void)
              /* 'strstr(dFP,"/dir")' is meant as 'dFP =~ m(/dir\W)' */
      	    if (defaultFontPath && (
  		(strcmp(*el, "freetype")  == 0 &&
@@ -46,15 +11,15 @@
      	        (strcmp(*el, "type1")  == 0 &&
  		 strstr(defaultFontPath, "/Type1")))) 
  	    	ptr->mod_load_lst = (XF86LoadPtr)xf86addListItem(
-
---- configure.ac	2007-07-31 09:47:31.997346000 -0700
-+++ configure.ac	2007-08-06 18:05:43.360363000 -0700
-@@ -84,7 +84,7 @@
-       [Define to 1 if the DTrace Xserver provider probes should be built in.])
- fi
- AM_CONDITIONAL(XSERVER_DTRACE, [test "x$DTRACE" != "xnot_found"])
--AC_DEFINE_DIR(XERRORDB_PATH, libdir/XErrorDB, [Path to XErrorDB file])
-+AC_DEFINE([XERRORDB_PATH], ["/usr/openwin/lib/X11/XErrorDB"], [Path to XErrorDB file])
+diff -urp -x '*~' -x '*.orig' xkb/xkbInit.c xkb/xkbInit.c
+--- xkb/xkbInit.c	2008-09-23 11:25:01.000000000 -0700
++++ xkb/xkbInit.c	2008-09-24 20:18:22.068856000 -0700
+@@ -123,7 +123,7 @@ typedef struct	_SrvXkmInfo {
+ #endif
  
- AC_HEADER_DIRENT
- AC_HEADER_STDC
+ char	*		XkbBaseDirectory=	XKB_BASE_DIRECTORY;
+-char	*		XkbBinDirectory=	XKB_BIN_DIRECTORY;
++char	*		XkbBinDirectory=	XKB_BASE_DIRECTORY;
+ static int	 	XkbWantAccessX=		0;	
+ 
+ static Bool		rulesDefined=		False;
--- a/open-src/xserver/xorg/sun-src/IA/interactive.c	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/IA/interactive.c	Thu Jan 15 12:55:00 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@
  * of the copyright holder.
  */
 
-#pragma ident   "@(#)interactive.c 35.18     08/06/16 SMI"
+#pragma ident   "@(#)interactive.c 35.19     09/01/14 SMI"
 
 /************************************************************
 	Basic boilerplate extension.
@@ -75,14 +75,16 @@
 #define SET_PRIORITY		1
 #define SET_INTERACTIVE 	2
 
-#define SERVER			0x1
-#define WMGR			0x2
-#define BOTH			0x3
+typedef struct _ClientProcessInfo {
+    int 		count;
+    ConnectionPidPtr	pids;
+    Bool		boosted;
+} ClientProcessRec, *ClientProcessPtr;
 
-typedef struct _ClientProcessInfo {
-	int count;
-	ConnectionPidPtr pids;
-} ClientProcessRec, * ClientProcessPtr;
+typedef struct {
+    ClientProcessPtr    process; /* Process id information */    
+    Bool		wmgr;
+} IAClientPrivateRec, *IAClientPrivatePtr;
 
 static int ProcIADispatch(ClientPtr client), SProcIADispatch(ClientPtr client);
 static int ProcIASetProcessInfo(ClientPtr client), SProcIASetProcessInfo(ClientPtr client);
@@ -94,12 +96,11 @@
 static int InitializeClass(void );
 static void SetIAPrivate(int*);
 static void ChangeInteractive(ClientPtr);
-static int SetPriority(int, int);
-static void UnsetLastPriority(ClientProcessPtr LastPid); 
+static int SetPriority(const ClientProcessPtr, int);
 static void ChangePriority(register ClientPtr client);
 
 static int SetClientPrivate(ClientPtr client, ConnectionPidPtr stuff, int length);
-static void FreeProcessList(ClientPtr client);
+static void FreeProcessList(IAClientPrivatePtr priv);
 /* static int LocalConnection(OsCommPtr); */
 static int PidSetEqual(ClientProcessPtr, ClientProcessPtr);
 
@@ -111,23 +112,29 @@
 static iaclass_t 	IAClass;
 static id_t		TScid;
 static ClientProcessPtr	LastPids = NULL;
-static int 		specialIAset = 0;
 static int 		ia_nice = IA_BOOST;
-static Bool 		InteractiveOS = xTrue;
-static ClientPtr 	wmClientptr = NULL;
+static Bool 		InteractiveOS = TRUE;
 static unsigned long 	IAExtensionGeneration = 0;
 static OsTimerPtr 	IAInitTimer = NULL;
 static int (* IASavedProcVector[256]) (ClientPtr client);
 
-typedef struct {
-    ClientProcessPtr    process; /* Process id information */    
-    Bool		wmgr;
-} IAClientPrivateRec, *IAClientPrivatePtr;
+static int IAPrivKeyIndex;
+static DevPrivateKey IAPrivKey = &IAPrivKeyIndex;
+
+#define GetIAClient(pClient)	\
+    ((IAClientPrivatePtr) dixLookupPrivate(&(pClient)->devPrivates, IAPrivKey))
 
-static int	IAClientPrivateIndex;
+static inline ClientProcessPtr
+GetConnectionPids(ClientPtr pClient)
+{
+    IAClientPrivatePtr priv = GetIAClient(pClient);
 
-#define GetIAClient(pClient)    ((IAClientPrivatePtr) (pClient)->devPrivates[IAClientPrivateIndex].ptr)
-#define GetConnectionPids(pClient)	(GetIAClient(pClient)->process)
+    if (priv == NULL) {
+	return NULL;
+    } else {
+	return priv->process;
+    }
+}
 
 /* Set via xorg.conf option in loadable module */
 int IADebugLevel = 0;
@@ -141,30 +148,26 @@
 void
 IAExtensionInit(void)
 {
+    ConnectionPidRec	myPid = P_MYID;
+    ClientProcessRec	myProc = { 1, &myPid, FALSE };
+    
     IA_DEBUG(IA_DEBUG_BASIC, 
-      LogMessage(X_INFO, "SolarisIA: Initializing (generation %ld)\n",
-	IAExtensionGeneration));
+	     LogMessage(X_INFO, "SolarisIA: Initializing (generation %ld)\n",
+			IAExtensionGeneration));
 
     if (IAExtensionGeneration == serverGeneration)
 	return;
 
-    InteractiveOS=xFalse;
+    InteractiveOS = FALSE;
 
     if (InitializeClass() != Success)
 	return;
 
-    if (SetPriority(P_MYID, SET_INTERACTIVE) != Success)
-	return;
-
-    if (SetPriority(P_MYID, SET_PRIORITY) != Success)
+    if (SetPriority(&myProc, SET_INTERACTIVE) != Success)
 	return;
 
-    IAClientPrivateIndex = AllocateClientPrivateIndex();
-    if (IAClientPrivateIndex < 0)
+    if (SetPriority(&myProc, SET_PRIORITY) != Success)
 	return;
-    if (!AllocateClientPrivate (IAClientPrivateIndex,
-				      sizeof (IAClientPrivateRec)))
-        return;
 
     if (!AddCallback(&ClientStateCallback, IAClientStateChange, NULL))
         return;
@@ -173,8 +176,8 @@
 	return;
 
     if (!AddExtension(IANAME, IANumberEvents, IANumberErrors,
-				 ProcIADispatch, SProcIADispatch,
-				 IACloseDown, StandardMinorOpcode))
+		      ProcIADispatch, SProcIADispatch,
+		      IACloseDown, StandardMinorOpcode))
 	return;
 
     /* InitExtensions is called before InitClientPrivates(serverClient)
@@ -182,13 +185,37 @@
        to initialize the serverClient */
     IAInitTimer = TimerSet(IAInitTimer, 0, 1, IAInitTimerCall, NULL);
 
-    specialIAset = 0;
-    InteractiveOS = xTrue;
+    InteractiveOS = TRUE;
     IAExtensionGeneration = serverGeneration;
 
     IA_DEBUG(IA_DEBUG_BASIC, 
-      LogMessage(X_INFO, "SolarisIA: Finished initializing (generation %ld)\n",
-	IAExtensionGeneration));
+	     LogMessage(X_INFO,
+			"SolarisIA: Finished initializing (generation %ld)\n",
+			IAExtensionGeneration));
+}
+
+/* Allocate client private structure for this client */
+static int
+IAInitClientPrivate(ClientPtr pClient)
+{
+    IAClientPrivatePtr priv;
+
+    priv = GetIAClient(pClient);
+    if (priv != NULL) {
+	return Success;
+    }
+	
+    priv = xalloc(sizeof(IAClientPrivateRec));
+    if (priv == NULL) {
+	return BadAlloc;
+    }
+
+    priv->process = NULL;
+    priv->wmgr = FALSE;
+    
+    dixSetPrivate(&(pClient)->devPrivates, IAPrivKey, priv);
+
+    return Success;
 }
 
 /* Called when we first hit WaitForSomething to initialize serverClient */
@@ -197,11 +224,10 @@
 {
     ConnectionPidRec serverPid;
 
-    if (InteractiveOS != xTrue)
+    if (InteractiveOS != TRUE)
 	return 0;
 
-    GetConnectionPids(serverClient) = NULL;
-    GetIAClient(serverClient)->wmgr = FALSE;
+    IAInitClientPrivate(serverClient);
 
     serverPid = getpid();
     SetClientPrivate(serverClient, &serverPid, 1);
@@ -217,29 +243,40 @@
     NewClientInfoRec *pci = (NewClientInfoRec *)calldata;
     ClientPtr pClient = pci->client;
     ClientProcessPtr CurrentPids;
+    IAClientPrivatePtr priv;
 
     switch (pClient->clientState) {
-    case ClientStateGone:
-    case ClientStateRetained:
-	CurrentPids = GetConnectionPids(pClient);
+      case ClientStateGone:
+      case ClientStateRetained:
+	priv = GetIAClient(pClient);
+	if (priv == NULL) {
+	    return;
+	}
+	CurrentPids = priv->process;
 
-	if (pClient==wmClientptr) {
+	if (priv->wmgr) {
 	    IA_DEBUG(IA_DEBUG_BASIC,
-	      LogMessage(X_INFO, "SolarisIA: WindowManager closed (pid %d)\n",
-	      (CurrentPids && CurrentPids->pids) ? CurrentPids->pids[0] : -1));
-	    wmClientptr=NULL;
+		     LogMessage(X_INFO,
+				"SolarisIA: WindowManager closed (pid %d)\n",
+				(CurrentPids && CurrentPids->pids) ?
+				 CurrentPids->pids[0] : -1));
 	}
 
-	if (CurrentPids && LastPids && PidSetEqual(CurrentPids, LastPids))
-	    LastPids=NULL;
+	if (CurrentPids && CurrentPids->boosted) {
+	    SetPriority(CurrentPids, UNSET_PRIORITY);
+	}
+	
+	if (CurrentPids && LastPids && PidSetEqual(CurrentPids, LastPids)) {
+	    LastPids = NULL;
+	}
 
-	FreeProcessList(pClient);
-	GetIAClient(pClient)->wmgr = FALSE;
+	FreeProcessList(priv);
+	xfree(priv);
+	dixSetPrivate(&(pClient)->devPrivates, IAPrivKey, NULL);
 	break;
-	
+
     case ClientStateInitial:
-	GetConnectionPids(pClient) = NULL;
-	GetIAClient(pClient)->wmgr = FALSE;
+	IAInitClientPrivate(pClient);
 	break;
 
     default:
@@ -297,7 +334,7 @@
     if ((stuff->flags & INTERACTIVE_INFO) && 
 	(stuff->uid==ServerUid || ServerUid==0 || stuff->uid==0) &&
 	LocalClient(client)) {
-	length=stuff->length-(sizeof(xIASetProcessInfoReq)>>2);
+	length = stuff->length - (sizeof(xIASetProcessInfoReq)>>2);
 	SetClientPrivate(client, (ConnectionPidPtr)&stuff[1], length);
 	ChangeInteractive(client);
     }
@@ -314,24 +351,27 @@
 static int
 ProcIAGetProcessInfo(ClientPtr client)
 {
-    ClientProcessPtr CurrentPids=GetConnectionPids(client);
+    IAClientPrivatePtr	priv;
+    ClientProcessPtr CurrentPids;
     REQUEST(xIAGetProcessInfoReq);
     xIAGetProcessInfoReply rep;
-    register int length=0;
-    caddr_t write_back=NULL;
+    register int length = 0;
+    caddr_t write_back = NULL;
 
     REQUEST_SIZE_MATCH(xIAGetProcessInfoReq);
     rep.type = X_Reply;
     rep.length = 0;
     rep.sequenceNumber = client->sequence;
     if (stuff->flags & INTERACTIVE_INFO) {
-	    if (!CurrentPids) 
-    		rep.count = 0;
-	    else {
-    		rep.count = CurrentPids->count;
-       		length = rep.count << 2;
-	        write_back=(caddr_t)CurrentPids->pids;
-	    }
+	priv = GetIAClient(client);
+	if ( (priv == NULL) || (priv->process == NULL) ) {
+	    rep.count = 0;
+	} else {
+    	    CurrentPids = priv->process;
+	    rep.count = CurrentPids->count;
+	    length = rep.count << 2;
+	    write_back=(caddr_t)CurrentPids->pids;
+	}
     }
     if (stuff->flags & INTERACTIVE_SETTING) {
 	rep.count=1;
@@ -347,7 +387,7 @@
 static void
 IACloseDown(ExtensionEntry *ext)
 {
-    InteractiveOS=xFalse;
+    InteractiveOS = FALSE;
 
     IAUnwrapProcVectors();
 
@@ -409,184 +449,169 @@
 static void
 ChangeInteractive(ClientPtr client)
 {
-   ClientProcessPtr CurrentPids=GetConnectionPids(client);
-   register int count;
+    ClientProcessPtr CurrentPids = GetConnectionPids(client);
 
-   if (InteractiveOS==xFalse)
+    if (InteractiveOS==FALSE)
         return;
 
-   if (!CurrentPids || !CurrentPids->pids)
+    if (!CurrentPids || !CurrentPids->pids)
 	return;
 
-   count=CurrentPids->count;
-
-   while(count--)
-      SetPriority(CurrentPids->pids[count], SET_INTERACTIVE);
+    SetPriority(CurrentPids, SET_INTERACTIVE);
 }
 
 /*
-Loop through pids associated with client. Magically make last focus
-group go non-interactive -IA_BOOST.
-*/
+ * Loop through pids associated with client. Magically make last focus
+ * group go non-interactive -IA_BOOST.
+ */
 static void
 ChangePriority(register ClientPtr client)
 {
-   ClientProcessPtr CurrentPids=GetConnectionPids(client);
-   register int count;
+    IAClientPrivatePtr priv = GetIAClient(client);
+    ClientProcessPtr CurrentPids = (priv == NULL ? NULL : priv->process);
 
-   /* If no pid info for current client make sure to unset last focus group. */
-   /* This can happen if we have a remote client with focus or if the client */
-   /* is statically linked or if it is using a down rev version of libX11.   */
-   if (!CurrentPids || !CurrentPids->pids) {
-	if (LastPids && LastPids->pids) {
-	    UnsetLastPriority(LastPids);
-	    LastPids=NULL;
-	}
+    if (CurrentPids && LastPids && PidSetEqual(CurrentPids, LastPids)) {
+	/* Shortcut. Focus changed between two windows with same pid */
 	return;
-   }
-
-   /* Make sure server or wmgr isn't unset by testing for them */
-   /* this way LastPids is never set to point to the server or */
-   /* wmgr pid.						       */
-   if ((client->index==serverClient->index || 
-     GetIAClient(client)->wmgr==xTrue)) {
-
-       if ((specialIAset < BOTH) && CurrentPids->pids) {
+    }
 
-	   if (client->index == serverClient->index) {
-	       specialIAset |= SERVER;	
-	   }
-	   else {
-	       specialIAset |= WMGR; 
-	   }
-	   SetPriority(CurrentPids->pids[0], SET_PRIORITY);
-       }
-       return;
-   }
+    /* Remove priority boost for last focus group */
+    if (LastPids) {
+	SetPriority(LastPids, UNSET_PRIORITY);
+	LastPids = NULL;
+    }
+    
+    /* If no pid info for current client, then we're done here.
+     * This can happen if we have a remote client with focus or if the client
+     * is statically linked or if it is using a down rev version of libX11.
+     */
+    if ( (CurrentPids == NULL) || (CurrentPids->count == 0) ||
+	 (CurrentPids->pids == NULL) ) {
+	return;
+    }
 
-   if (LastPids && LastPids->pids) {
-	if (CurrentPids && LastPids && PidSetEqual(CurrentPids, LastPids))
-		return;				/*Shortcut. Focus changed
-						  between two windows with
-						  same pid */
-	UnsetLastPriority(LastPids);
-   }
-  
-   count=CurrentPids->count;
-   while(count--)
-      SetPriority(CurrentPids->pids[count], SET_PRIORITY);
-   LastPids=CurrentPids;
-}
-
-static void
-UnsetLastPriority(ClientProcessPtr LastPids)
-{
-    register int LastPidcount=LastPids->count;
-
-    while(LastPidcount--)
-      	SetPriority(LastPids->pids[LastPidcount], UNSET_PRIORITY);
+    /* Set the priority boost if it isn't already active */
+    if (!CurrentPids->boosted) {
+	SetPriority(CurrentPids, SET_PRIORITY);
+    }
+    
+    /* Make sure server or wmgr isn't unset by testing for them, so
+     * that LastPids is never set to point to the server or wmgr pid.
+     */
+    if ((client->index != serverClient->index) && (priv->wmgr != TRUE)) {
+	LastPids = CurrentPids;
+    }
 }
 
 static int
 InitializeClass(void)
 {
-   pcinfo_t  pcinfo;
-
-   /* Get TS class information 					*/ 
+    pcinfo_t  pcinfo;
 
-   strcpy (pcinfo.pc_clname, "TS");
-   priocntl(0, 0, PC_GETCID, (caddr_t)&pcinfo); 
-   TScid=pcinfo.pc_cid;
+    /* Get TS class information */
+    strcpy (pcinfo.pc_clname, "TS");
+    priocntl(0, 0, PC_GETCID, (caddr_t)&pcinfo); 
+    TScid = pcinfo.pc_cid;
 
-   /* Get IA class information */
-   strcpy (pcinfo.pc_clname, "IA");
-   if ((priocntl(0, 0, PC_GETCID, (caddr_t)&pcinfo)) == -1)
+    /* Get IA class information */
+    strcpy (pcinfo.pc_clname, "IA");
+    if ((priocntl(0, 0, PC_GETCID, (caddr_t)&pcinfo)) == -1)
         return ~Success;
  
-   IAClass.pc_cid=pcinfo.pc_cid;
-   ((iaparms_t*)IAClass.pc_clparms)->ia_uprilim=IA_NOCHANGE;
-   ((iaparms_t*)IAClass.pc_clparms)->ia_upri=IA_NOCHANGE;
+    IAClass.pc_cid = pcinfo.pc_cid;
+    ((iaparms_t*)IAClass.pc_clparms)->ia_uprilim = IA_NOCHANGE;
+    ((iaparms_t*)IAClass.pc_clparms)->ia_upri = IA_NOCHANGE;
 
-   return Success;
+    return Success;
 }
 
 static int
-SetPriority(int pid, int cmd)
+SetPriority(const ClientProcessPtr cpp, int cmd)
 {
-    pcparms_t pcinfo;
-    long	ret;
+    pcparms_t 	pcinfo;
+    long	ret = Success;
     gid_t	usr_egid = getegid();
+    int		i;
 
-    if ( setegid(0) < 0 )
+    if ( (cpp == NULL) || (cpp->pids == NULL) || (cpp->count == 0) ) {
+	return Success;
+    }
+    
+    if ( setegid(0) < 0 ) {
 	Error("Error in setting egid to 0");
-
-
-    pcinfo.pc_cid=PC_CLNULL;
-    if ((priocntl(P_PID, pid, PC_GETPARMS, (caddr_t)&pcinfo)) < 0) {
-	if ( setegid(usr_egid) < 0 )
-	    Error("Error in resetting egid");
-
-	return ~Success; /* Scary time; punt */
     }
 
-    /* If process is in TS or IA class we can safely set parameters */
-    if ((pcinfo.pc_cid == IAClass.pc_cid) || (pcinfo.pc_cid == TScid)) {
+    for (i = 0; i < cpp->count ; i++) {
+	id_t	pid = cpp->pids[i];
 
-       switch (cmd) {
-       case UNSET_PRIORITY:
+	pcinfo.pc_cid=PC_CLNULL;
+	if ((priocntl(P_PID, pid, PC_GETPARMS, (caddr_t)&pcinfo)) < 0) {
+	    if ( setegid(usr_egid) < 0 ) {
+		Error("Error in resetting egid");
+	    }
+	    return ~Success; /* Scary time; punt */
+	}
+
+	/* If process is in TS or IA class we can safely set parameters */
+	if ((pcinfo.pc_cid == IAClass.pc_cid) || (pcinfo.pc_cid == TScid)) {
+
+	    switch (cmd) {
+	      case UNSET_PRIORITY:
    		((iaparms_t*)IAClass.pc_clparms)->ia_mode=IA_INTERACTIVE_OFF;
 		break;
-       case SET_PRIORITY:
+	      case SET_PRIORITY:
    		((iaparms_t*)IAClass.pc_clparms)->ia_mode=IA_SET_INTERACTIVE;
 		break;
-       case SET_INTERACTIVE: 
-      /* If this returns true, the process is already in the IA class */
-      /* So just return.						   */
-		 if ( pcinfo.pc_cid == IAClass.pc_cid)
-			return Success;
+	      case SET_INTERACTIVE: 
+		/* If this returns true, the process is already in the 	*/
+		/* IA class, so we don't need to update it.		*/
+		if ( pcinfo.pc_cid == IAClass.pc_cid)
+		    continue;
 
    		((iaparms_t*)IAClass.pc_clparms)->ia_mode=IA_INTERACTIVE_OFF;
 		break;
-       }
+	    }
 
-	if ( priocntl(P_PID, pid, PC_SETPARMS, (caddr_t)&IAClass) == -1 )
+	    if (priocntl(P_PID, pid, PC_SETPARMS, (caddr_t)&IAClass) == -1)
 	    {
-	    ret = ~Success;
-	    }
-	else
-	    {
-	    ret = Success;
+		ret = ~Success;
 	    }
 
-
-	IA_DEBUG(IA_DEBUG_PRIOCNTL,
-	{
-	    const char *cmdmsg;
+	    IA_DEBUG(IA_DEBUG_PRIOCNTL,
+	    {
+		const char *cmdmsg;
 
-	    switch (cmd) {
-	    case UNSET_PRIORITY:   cmdmsg = "UNSET_PRIORITY"; break;
-	    case SET_PRIORITY:     cmdmsg = "SET_PRIORITY"; break;
-	    case SET_INTERACTIVE:  cmdmsg = "SET_INTERACTIVE"; break;
-	    default:		   cmdmsg = "UNKNOWN_CMD!!!"; break;
-	    }
-	    LogMessage(X_INFO, "SolarisIA: SetPriority(%d, %s): %s\n", 
-	      pid, cmdmsg, (ret == Success) ? "succeeeded" : "failed");
-	});
-
-
-	if ( setegid(usr_egid) < 0 )
-	    Error("Error in resetting egid");
-
-	return ret;
+		switch (cmd) {
+		  case UNSET_PRIORITY:	cmdmsg = "UNSET_PRIORITY";	break;
+		  case SET_PRIORITY:	cmdmsg = "SET_PRIORITY"; 	break;
+		  case SET_INTERACTIVE:	cmdmsg = "SET_INTERACTIVE"; 	break;
+		  default:		cmdmsg = "UNKNOWN_CMD!!!"; 	break;
+		}
+		LogMessage(X_INFO, "SolarisIA: SetPriority(%ld, %s): %s\n", 
+			   pid, cmdmsg,
+			   (ret == Success) ? "succeeeded" : "failed");
+	    });
+	}
     }
 
-    return ~Success;
+    if (setegid(usr_egid) < 0)
+	Error("Error in resetting egid");
+
+    if (ret == Success) {
+	if (cmd == SET_PRIORITY) {
+	    cpp->boosted = TRUE;
+	} else if (cmd == UNSET_PRIORITY) {
+	    cpp->boosted = FALSE;
+	}
+    }
+    
+    return ret;
 }
 
 static void
 SetIAPrivate(int * value)
 {
-	ia_nice=*value;
+    ia_nice = *value;
 }
 
 /*****************************************************************************
@@ -596,11 +621,17 @@
 /* In Xsun we used the osPrivate in OsCommPtr, so this was SetOsPrivate. */
 static int
 SetClientPrivate(ClientPtr client, ConnectionPidPtr stuff, int length)
-{	
+{
     ClientProcessPtr	cpp;
+    IAClientPrivatePtr priv;
 
-    FreeProcessList(client);
-	
+    priv = GetIAClient(client);
+    if (priv == NULL) {
+	IAInitClientPrivate(client);
+    } else {
+	FreeProcessList(priv);
+    }
+
     cpp = (ClientProcessPtr)xalloc(sizeof(ClientProcessRec));
 
     if (cpp == NULL)
@@ -613,20 +644,22 @@
 	return BadAlloc;
     }
 
-    GetConnectionPids(client) = cpp;
     cpp->count = length;
     memcpy(cpp->pids, stuff, sizeof(ConnectionPidRec)*length);
-    
+    cpp->boosted = FALSE;
+
+    priv->process = cpp;
     return Success;
 }
 
 static void
-FreeProcessList(ClientPtr client)
+FreeProcessList(IAClientPrivatePtr priv)
 {
-    ClientProcessPtr	cpp = GetConnectionPids(client);
-    
+    ClientProcessPtr	cpp = priv->process;
+
     if (cpp == NULL)
 	return;
+    priv->process = NULL;
 
     if ( LastPids == cpp )
 	LastPids = NULL;
@@ -635,38 +668,36 @@
 	xfree(cpp->pids);
 
     xfree(cpp);
-
-    GetConnectionPids(client) = NULL;
 }
 
 /*
-        Check to see that all in current (a) are in
-        last (b). And that a and b have the same number
-        of members in the set.
+  Check to see that all in current (a) are in last (b).
+  And that a and b have the same number of members in the set.
 */
-int
+static int
 PidSetEqual(ClientProcessPtr a, ClientProcessPtr b)
 {
-        register int currentcount=a->count;
-        register int lastcount=b->count;
-        int retval;
+    int aN, bN;
+    int count = a->count;
+    int retval = 1;
 
-        if (currentcount != lastcount)  
-                return 0; /* definately NOT the same set */
+    if (a->count != b->count) {
+	return 0; /* definately NOT the same set */
+    }
 
-        while(currentcount--) {
-            retval=0;
-            while(lastcount--)
-                if (a->pids[currentcount]==b->pids[lastcount]) {
-                        retval=1;
-                        break;
-                }
-            if (retval==0)
-                return retval;
-            lastcount=b->count;
-        }
+    for (aN = 0; aN < count; aN++) {
+	retval = 0;
+	for (bN = 0; bN < count ; bN++) {
+	    if (a->pids[aN] == b->pids[bN]) {
+		retval = 1;
+		break;
+	    }
+	}
+	if (retval == 0)
+	    return retval;
+    }
 
-        return retval;
+    return retval;
 }
 
 
@@ -681,11 +712,11 @@
 {
     int res;
     Window focusID;
-    register WindowPtr focusWin;
+    WindowPtr focusWin;
     REQUEST(xSetInputFocusReq);
 
     res = (*IASavedProcVector[X_SetInputFocus])(client);
-    if ((res != Success) || (InteractiveOS != xTrue))
+    if ((res != Success) || (InteractiveOS != TRUE))
 	return res;
 
     focusID = stuff->focus;
@@ -698,38 +729,14 @@
 	focusWin = PointerRootWin;
 	break;
       default:
-	if (!(focusWin = SecurityLookupWindow(focusID, client,
-                                               SecurityReadAccess)))
-	    return BadWindow;
+	res = dixLookupWindow(&focusWin, focusID, client, DixReadAccess);
+	if (res != Success)
+	    return res;
     }
 
     if ((focusWin != NullWindow) && (focusWin != PointerRootWin)) {
-	register ClientPtr requestee;
-        ClientProcessPtr wmPid=NULL;
-        ClientProcessPtr RequesteePids=NULL;
- 
-        if (wmClientptr)
-                wmPid=GetConnectionPids(wmClientptr);
- 
-        requestee=wClient(focusWin);
-        RequesteePids=GetConnectionPids(requestee);
- 
-        /* if wm is not setting focus to himself */
- 
-        if (wmPid && RequesteePids && !PidSetEqual(wmPid, RequesteePids))
-            ChangePriority(requestee);
-        else  {
- 
-            /* If wm is setting focus to himself and Lastpids exists and
-               LastPids pids are valid Unset the priority for the LastPids
-               focus group */
- 
-            if (wmPid && RequesteePids && PidSetEqual(wmPid, RequesteePids))
-                if (LastPids && LastPids->pids) {
-                    UnsetLastPriority(LastPids);
-                    LastPids=NULL;
-                }
-        }
+	register ClientPtr requestee = wClient(focusWin);
+	ChangePriority(requestee);
     }
 
     return res;
@@ -742,18 +749,16 @@
     REQUEST(xSendEventReq);
 
     res = (*IASavedProcVector[X_SendEvent])(client);
-    if ((res != Success) || (InteractiveOS != xTrue))
+    if ((res != Success) || (InteractiveOS != TRUE))
 	return res;
 
-    if ((InteractiveOS==xTrue) &&
-        (client == wmClientptr) &&
+    if ((InteractiveOS==TRUE) &&
+        (GetIAClient(client)->wmgr == TRUE) &&
         (stuff->event.u.u.type == ClientMessage) &&
         (stuff->event.u.u.detail == 32) ) {
  
         register ClientPtr requestee;
-        ClientProcessPtr wmPid=NULL;
-        ClientProcessPtr RequesteePids=NULL;
-	WindowPtr pWin;
+	WindowPtr pWin = NULL;
 
 	if (stuff->destination == PointerWindow)
 	    pWin = GetSpriteWindow();
@@ -775,31 +780,19 @@
 		pWin = inputFocus;
 	}
 	else
-	    pWin = SecurityLookupWindow(stuff->destination, client,
-	    				SecurityReadAccess);
+	{
+	    res = dixLookupWindow(&pWin, stuff->destination, client,
+				  DixReadAccess);
+	    if (res != Success)
+		return res;
+	}
+
+	    
 	if (!pWin)
 	    return BadWindow;
  
-        if (wmClientptr)
-	    wmPid=GetConnectionPids(wmClientptr);
-        requestee=wClient(pWin);
-        RequesteePids=GetConnectionPids(requestee);
- 
-        /* if wm is not setting focus to himself */
-        if (wmPid && RequesteePids && !PidSetEqual(wmPid, RequesteePids)) {
-            ChangePriority(requestee);
-	}
-	else {
- 
-            /* If wm is setting focus to himself and Lastpids exists and
-               LastPids pids are valid Unset the priority for the LastPids
-               focus group */
- 
-                if (LastPids && LastPids->pids) {
-                    UnsetLastPriority(LastPids);
-                    LastPids=NULL;
-                }
-        }
+        requestee = wClient(pWin);
+	ChangePriority(requestee);
     }
     return res;
 }
@@ -809,8 +802,8 @@
 {
     REQUEST(xChangeWindowAttributesReq);
 
-    if ((InteractiveOS==xTrue) && (stuff->valueMask & CWEventMask) &&
-	(GetIAClient(client)->wmgr == xFalse) ) {
+    if ((InteractiveOS==TRUE) && (stuff->valueMask & CWEventMask) &&
+	(GetIAClient(client)->wmgr == FALSE) ) {
 
 	register XID *pVlist = (XID *) &stuff[1];
 	register Mask tmask = stuff->valueMask;
@@ -827,15 +820,16 @@
 
 	if ((index2 == CWEventMask) && (*pVlist & SubstructureRedirectMask)) {
 	    IA_DEBUG(IA_DEBUG_BASIC,
-	    ClientProcessPtr CurrentPids=GetConnectionPids(client);
-
-	    LogMessage(X_INFO, "SolarisIA: WindowManager detected (pid %d)\n",
-	      (CurrentPids && CurrentPids->pids) ? CurrentPids->pids[0] : -1));
+		     ClientProcessPtr CurrentPids=GetConnectionPids(client);
 
+		     LogMessage(X_INFO,
+				"SolarisIA: WindowManager detected (pid %d)\n",
+				(CurrentPids && CurrentPids->pids) ?
+				 CurrentPids->pids[0] : -1));
 
-	    GetIAClient(client)->wmgr=xTrue;
-	    wmClientptr = client;
+	    GetIAClient(client)->wmgr = TRUE;
 	    ChangePriority(client);
+	    LastPids = NULL;
 	}
     }
 
--- a/open-src/xserver/xorg/sun-src/Xext/lge.c	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,729 +0,0 @@
-/************************************************************
-
-Copyright (c) 2004, Sun Microsystems, Inc. 
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-#ifdef LG3D
-
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <unistd.h>
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "dixstruct.h"
-#include "extnsionst.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "cursorstr.h"
-#include "inputstr.h"
-#include <X11/extensions/lgewire.h>
-#include "lgeint.h"
-
-extern void CoreProcessPointerEvent (xEvent *xE, DeviceIntPtr mouse, int count);
-
-int lgeDisplayServerIsAlive = 0;
-
-ClientPtr lgePickerClient = NULL;
-ClientPtr lgeEventDelivererClient = NULL;
-int lgeEventComesFromDS = 0;
-
-/*
-** If sendEventDirect == true we will call the core process event 
-** routine directly. The event will not be subject to queue freezing. 
-** If sendEventDirect == false we will reinsert the event via the 
-** device's processInputProc routine. This means that the event will
-** be subject to queue freezing. That is to say, if the queue is currently
-** frozen due to a synchronous grab the event will be enqueued and not
-** sent further up the event pipeline until the queue is unfrozen.
-*/
-
-Bool lgeSendEventDirect = FALSE;
-
-DeviceIntPtr lgekb = NULL;
-DeviceIntPtr lgems = NULL;
-
-/* The pseudo-root window of first screen */
-Window lgeDisplayServerPRW = INVALID;
-WindowPtr pLgeDisplayServerPRWWin = NULL;
-
-Window lgeDisplayServerPRWsList[MAXSCREENS];
-WindowPtr pLgeDisplayServerPRWWinsList[MAXSCREENS];
-WindowPtr pLgeDisplayServerPRWWinRoots[MAXSCREENS];
-
-static int numRegisteredScr = 0;
-
-static int  LgeReqCode;
-
-void LgeExtensionInit (void);
-int LgeShutdownDisplayServer (pointer data, XID id);
-int ProcLgeDispatch (ClientPtr client);
-int SProcLgeDispatch (ClientPtr client);
-
-static RESTYPE lgeClientResourceType;
-
-#ifdef PERF
-/* For performance analysis */
-#include "../dix/statbuf.h"
-static StatBuf *sbPerf = NULL;
-static struct timeval tvStart, tvStop;
-#endif /* PERF */
-
-extern void XkbProcessKeyboardEvent(xEvent *xE, DeviceIntPtr keybd, int count);
-
-extern WindowPtr *WindowTable;
-
-/* This must be the same as in dix/extension.c */
-#define EXTENSION_BASE  128
-
-static void lgeDisableIncompatibleExtensions ();
-static void lgeReenableIncompatibleExtensions ();
-
-extern unsigned int NumExtensions;
-extern ExtensionEntry **extensions;
-
-static int
-ProcLgeQueryVersion (ClientPtr client)
-{
-    REQUEST(xLgeQueryVersionReq);
-    xLgeQueryVersionReply rep;
-    int n;
-
-    REQUEST_SIZE_MATCH(xLgeQueryVersionReq);
-    rep.type = X_Reply;
-    rep.length = 0;
-    rep.sequenceNumber = client->sequence;
-    rep.majorVersion = LGE_MAJOR_VERSION;
-    rep.minorVersion = LGE_MINOR_VERSION;
-    rep.implementation = LG3D_IMPLEMENTATION;
-
-    if (client->swapped) {
-	swaps(&rep.sequenceNumber, n);
-	swapl(&rep.majorVersion, n);
-	swapl(&rep.minorVersion, n);
-	swapl(&rep.implementation, n);
-    }
-    WriteToClient(client, sizeof(xLgeQueryVersionReply), (char *) &rep);
-    return (client->noClientException);
-}
-
-/* For debug
-
-static void
-printEventMask (unsigned int mask) 
-{
-    int i;
-    unsigned int bit;
-
-    for (i = 0, bit = 0x1; i < 32; i++, bit <<= 1) {
-	if ((mask & bit) != 0) {
-	    switch (mask & bit) {
-	    case KeyPressMask: 
-		ErrorF("KeyPressMask ");
-		break;
-	    case KeyReleaseMask: 
-		ErrorF("KeyReleaseMask ");
-		break;
-	    case ButtonPressMask: 
-		ErrorF("ButtonPressMask ");
-		break;
-	    case ButtonReleaseMask: 
-		ErrorF("ButtonReleaseMask ");
-		break;
-	    case EnterWindowMask: 
-		ErrorF("EnterWindowMask ");
-		break;
-	    case LeaveWindowMask: 
-		ErrorF("LeaveWindowMask ");
-		break;
-	    case PointerMotionMask: 
-		ErrorF("PointerMotionMask ");
-		break;
-	    case PointerMotionHintMask: 
-		ErrorF("PointerMotionHintMask ");
-		break;
-	    case Button1MotionMask: 
-		ErrorF("Button1MotionMask ");
-		break;
-	    case Button2MotionMask: 
-		ErrorF("Button2MotionMask ");
-		break;
-	    case Button3MotionMask: 
-		ErrorF("Button3MotionMask ");
-		break;
-	    case Button4MotionMask: 
-		ErrorF("Button4MotionMask ");
-		break;
-	    case Button5MotionMask: 
-		ErrorF("Button5MotionMask ");
-		break;
-	    case ButtonMotionMask: 
-		ErrorF("ButtonMotionMask ");
-		break;
-	    case KeymapStateMask: 
-		ErrorF("KeymapStateMask ");
-		break;
-	    case ExposureMask: 
-		ErrorF("ExposureMask ");
-		break;
-	    case VisibilityChangeMask: 
-		ErrorF("VisibilityChangeMask ");
-		break;
-	    case StructureNotifyMask: 
-		ErrorF("StructureNotifyMask ");
-		break;
-	    case ResizeRedirectMask: 
-		ErrorF("ResizeRedirectMask ");
-		break;
-	    case SubstructureNotifyMask: 
-		ErrorF("SubstructureNotifyMask ");
-		break;
-	    case SubstructureRedirectMask: 
-		ErrorF("SubstructureRedirectMask ");
-		break;
-	    case FocusChangeMask: 
-		ErrorF("FocusChangeMask ");
-		break;
-	    case PropertyChangeMask: 
-		ErrorF("PropertyChangeMask ");
-		break;
-	    case ColormapChangeMask: 
-		ErrorF("ColormapChangeMask ");
-		break;
-	    case OwnerGrabButtonMask: 
-		ErrorF("OwnerGrabButtonMask ");
-		break;
-	    }
-	    ErrorF("\n");
-	}
-    }
-}
-
-static void
-printEventInterest (WindowPtr pWin) 
-{
-    OtherClients * others;
-
-    ErrorF("Owner client = %d\n", wClient(pWin)->index);
-    ErrorF("Client event interest for prw %d\n", pWin->drawable.id);
-    ErrorF("Owner interest: eventMask = 0x%x\n", pWin->eventMask);
-    printEventMask(pWin->eventMask);
-    ErrorF("\n");
-    ErrorF("Non-owner interest:\n");
-    for (others = wOtherClients(pWin); others; others = others->next) {
-	ErrorF("Other client mask = 0x%x\n", others->mask);
-	printEventMask(others->mask);
-	ErrorF("\n");
-    }
-}
-*/
-
-static int
-ProcLgeRegisterClient (ClientPtr client)
-{
-    REQUEST(xLgeRegisterClientReq);
-
-    REQUEST_SIZE_MATCH(xLgeRegisterClientReq);
-  
-    switch (stuff->clientType) {
-
-    case LGE_CLIENT_PICKER:
-	if (lgePickerClient != NULL) {
-	    return BadAccess;
-	}
-	lgePickerClient = client;
-        lgeSendEventDirect = stuff->sendEventDirect;
-	break;
-
-    case LGE_CLIENT_EVENT_DELIVERER:
-	if (lgeEventDelivererClient != NULL) {
-	    return BadAccess;
-	}
-	lgeEventDelivererClient = client;
-	break;
-    }
-
-    /* The first client to close down tells the server that the DS has shut down */
-    if (!AddResource (FakeClientID(client->index), lgeClientResourceType, NULL)) {
-	return BadAlloc;
-    }
-
-    return client->noClientException;
-}
-
-static int
-ProcLgeRegisterScreen (ClientPtr client)
-{
-    REQUEST(xLgeRegisterScreenReq);
-    ScreenPtr pScreen;
-    WindowPtr pWin;
-    int       scrNum;
-
-    REQUEST_SIZE_MATCH(xLgeRegisterScreenReq);
-  
-    /* Only the picker client can make this request */
-    if (client != lgePickerClient) {
-	return BadAccess;
-    }
-
-    pWin = (WindowPtr) LookupIDByType (stuff->prw, RT_WINDOW);
-    if (pWin == NULL) {
-	return BadMatch;
-    }
-    scrNum = pWin->drawable.pScreen->myNum;
-    lgeDisplayServerPRWsList[scrNum] = stuff->prw;
-    pLgeDisplayServerPRWWinsList[scrNum] = pWin;
-    pLgeDisplayServerPRWWinRoots[scrNum] = WindowTable[scrNum];
-
-    if (numRegisteredScr == 0) {
-	lgeDisplayServerPRW = stuff->prw;
-	pLgeDisplayServerPRWWin = pWin;
-    } 
-    else if (numRegisteredScr >= MAXSCREENS) {
-    	return BadAlloc;
-    }
-
-    pScreen = pWin->drawable.pScreen;
-    numRegisteredScr++;
-
-    /* Prevent events from being sent to the PRW owner, which is AWT */
-    pWin->eventMask = 0;
-
-#ifdef PERF
-    /* For performance analysis */
-    sbPerf = statBufCreate();
-    if (sbPerf == NULL) {
-	return BadAlloc;
-    }
-#endif /* PERF */
-
-    return client->noClientException;
-}
-
-static int
-ProcLgeControlLgMode (ClientPtr client)
-{
-    REQUEST (xLgeControlLgModeReq);
-
-    REQUEST_SIZE_MATCH(xLgeControlLgModeReq);
-
-    /* Only the picker client can make this request */
-    if (client != lgePickerClient) {
-	return BadAccess;
-    }
-
-    if (stuff->enable == TRUE) {
-	lgeDisplayServerIsAlive = 1;
-	lgeDisableIncompatibleExtensions();
-    } else {
-	lgeReenableIncompatibleExtensions();
-	LgeShutdownDisplayServer(NULL, INVALID);
-    }
-
-    return client->noClientException;
-}
-
-static int
-ProcLgeSendEvent (ClientPtr client)
-{
-    REQUEST (xLgeSendEventReq);
-    xEvent *xE = (xEvent *)&stuff->event;
-
-    REQUEST_SIZE_MATCH(xLgeSendEventReq);
-
-    /* Only the picker client can make this request */
-    if (client != lgePickerClient) {
-	return BadAccess;
-    }
-
-    /*
-    ErrorF("ProcLgeSendEvent, event type = %d, pickSeq = %d\n", 
-	   xE->u.u.type, xE->u.u.sequenceNumber);
-    ErrorF("detail = %d\n", xE->u.u.detail);
-    ErrorF("time   = %d\n", xE->u.keyButtonPointer.time);
-    ErrorF("root   = %d\n", xE->u.keyButtonPointer.root);
-    ErrorF("event   = %d\n", xE->u.keyButtonPointer.event);
-    ErrorF("child   = %d\n", xE->u.keyButtonPointer.child);
-    ErrorF("rootX   = %d\n", xE->u.keyButtonPointer.rootX);
-    ErrorF("rootY   = %d\n", xE->u.keyButtonPointer.rootY);
-    ErrorF("eventX   = %d\n", xE->u.keyButtonPointer.eventX);
-    ErrorF("eventY   = %d\n", xE->u.keyButtonPointer.eventY);
-    ErrorF("state   = %d\n", xE->u.keyButtonPointer.state);
-    */
-
-    lgeEventComesFromDS = 1;
-    if (xE->u.u.type == KeyPress || xE->u.u.type == KeyRelease) {
-
-	if (lgeSendEventDirect) {
-	    XkbProcessKeyboardEvent(xE, inputInfo.keyboard, 1);
-	} else {
-	    (*inputInfo.keyboard->public.processInputProc)(xE, inputInfo.keyboard, 1);
-	}
-
-    } else {
-
-#ifdef PERF
-	/* For performance analysis */
-	float usStart, usStop, msDelta;
-	gettimeofday(&tvStart, 0);
-#endif /* PERF */
-
-	if (lgeSendEventDirect) {
-	    CoreProcessPointerEvent(xE, inputInfo.pointer, 1);
-	} else {
-	    (*inputInfo.pointer->public.processInputProc)(xE, inputInfo.pointer, 1);
-	}
-
-#ifdef PERF
-	/* For performance analysis */
-	gettimeofday(&tvStop, 0);
-	usStart = 1000000.0f * tvStart.tv_sec + tvStart.tv_usec;
-	usStop = 1000000.0f * tvStop.tv_sec + tvStop.tv_usec;
-	msDelta = (usStop - usStart) / 1000.0f;
-	statBufAdd(sbPerf, msDelta);
-#endif /* PERF */
-    }
-    lgeEventComesFromDS = 0;
-
-    return client->noClientException;
-}
-
-static int
-SProcLgeQueryVersion (ClientPtr client)
-{
-    int n;
-    REQUEST(xLgeQueryVersionReq);
-
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xLgeQueryVersionReq);
-
-    return ProcLgeQueryVersion(client);
-}
-
-static int
-SProcLgeRegisterClient (ClientPtr client)
-{
-    int n;
-    REQUEST(xLgeRegisterClientReq);
-
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xLgeRegisterClientReq);
-    return ProcLgeRegisterClient(client);
-}
-
-static int
-SProcLgeRegisterScreen (ClientPtr client)
-{
-    int n;
-    REQUEST(xLgeRegisterScreenReq);
-
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xLgeRegisterScreenReq);
-    swapl(&stuff->prw, n);
-    return ProcLgeRegisterScreen(client);
-}
-
-static int
-SProcLgeControlLgMode (ClientPtr client)
-{
-    int n;
-    REQUEST(xLgeControlLgModeReq);
-
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xLgeControlLgModeReq);
-    return ProcLgeControlLgMode(client);
-}
-
-static int
-SProcLgeSendEvent (ClientPtr client)
-{
-    int n;
-    EventSwapPtr proc;
-    xEvent eventT;
-
-    REQUEST(xLgeSendEventReq);
-    swaps (&stuff->length, n);
-    REQUEST_AT_LEAST_SIZE (xLgeSendEventReq);
-
-    /* Swap event */
-    proc = EventSwapVector[stuff->event.u.u.type & 0177];
-    if (!proc ||  proc == NotImplemented)    /* no swapping proc; invalid event type? */
-       return (BadValue);
-    (*proc)(&stuff->event, &eventT);
-    stuff->event = eventT;
-
-    return ProcLgeSendEvent (client);
-}
-
-int
-ProcLgeDispatch (ClientPtr client)
-{
-  REQUEST(xReq);
-
-  switch (stuff->data) {
-  case X_LgeQueryVersion:
-      return ProcLgeQueryVersion(client);
-  case X_LgeRegisterClient:
-      return ProcLgeRegisterClient(client);
-  case X_LgeRegisterScreen:
-      return ProcLgeRegisterScreen(client);
-  case X_LgeControlLgMode:
-      return ProcLgeControlLgMode(client);
-  case X_LgeSendEvent:
-      return ProcLgeSendEvent(client);
-  default:
-      return BadRequest;
-  }
-}
-
-int
-SProcLgeDispatch (ClientPtr client)
-{
-  REQUEST(xReq);
-
-  switch (stuff->data) {
-
-  case X_LgeQueryVersion:
-      return SProcLgeQueryVersion(client);
-
-  case X_LgeRegisterClient: 
-      return SProcLgeRegisterClient(client);
-
-  case X_LgeRegisterScreen: 
-      return SProcLgeRegisterScreen(client);
-
-  case X_LgeControlLgMode: 
-      return SProcLgeControlLgMode(client);
-
-  case X_LgeSendEvent: 
-      return SProcLgeSendEvent(client);
-
-  default:
-      return BadRequest;
-  }
-}
-
-/*ARGSUSED*/
-int
-LgeShutdownDisplayServer (pointer data, XID id)
-{
-    int i;
-
-    if (!lgeDisplayServerIsAlive) {
-	return 1;
-    }
-
-    /*ErrorF("LG Display Server has shut down\n");*/
-
-    lgeDisplayServerIsAlive = 0;
-    lgeEventComesFromDS = 0;
-    lgekb = NULL;
-    lgems = NULL;
-
-    lgePickerClient = NULL;
-    lgeEventDelivererClient = NULL;
-
-    lgeDisplayServerPRW = INVALID;
-    pLgeDisplayServerPRWWin = NULL;
-
-    for (i = 0; i < MAXSCREENS; i++) {
-	lgeDisplayServerPRWsList[i] = INVALID;
-	pLgeDisplayServerPRWWinsList[i] = NULL;
-	pLgeDisplayServerPRWWinRoots[i] = NULL;
-    }
-    numRegisteredScr = 0;
-
-    return 1;
-}
-
-static void
-LgeReset (ExtensionEntry *extEntry)
-{
-    (void) LgeShutdownDisplayServer(NULL, INVALID);
-}
-
-void
-LgeExtensionInit (void)
-{
-  ExtensionEntry *extEntry;
-  int            i;
-
-  lgeClientResourceType = CreateNewResourceType(LgeShutdownDisplayServer);
-  if (lgeClientResourceType == 0) {
-      FatalError("LgeExtensionInit: Cannot create display server resource type\n");
-      exit(1);
-  }
-    
-  extEntry = AddExtension(LGE_NAME, 0, 0, ProcLgeDispatch,
-			  SProcLgeDispatch, LgeReset, StandardMinorOpcode);
-  if (extEntry == NULL) {
-      FatalError("LgeExtensionInit: AddExtension(%s) failed\n", LGE_NAME);
-      exit(1);
-  }
- 
-  LgeReqCode = extEntry->base;
-
-  for (i = 0; i < MAXSCREENS; i++) {
-      lgeDisplayServerPRWsList[i] = INVALID;
-      pLgeDisplayServerPRWWinsList[i] = NULL;
-      pLgeDisplayServerPRWWinRoots[i] = NULL;
-  }
-}          
-
-int
-IsWinLgePRWOne(int win) 
-{
-    int i;
-	
-    for (i=0; i < numRegisteredScr; i++)
-    {
-	if(lgeDisplayServerPRWsList[i] == win)
-            return win;
-    }	
-    return INVALID;
-}
-
-WindowPtr
-GetLgePRWWinFor(int win) 
-{
-    int i;
-	
-    for (i=0; i < numRegisteredScr; i++)
-    {
-	if(lgeDisplayServerPRWsList[i] == win)
-	     return pLgeDisplayServerPRWWinsList[i];			
-    }	
-    return NULL;
-}
-
-/*
-** Returns True if the given extension is compatible with LG mode.
-** Returns false if the given extension is incompatible.
-** Specifically, XVideo is incompatible because it not redirectable 
-** by the composite extension. 
-** 
-** TODO: GLX and NV-GLX are not compatible with LG either. But 
-** disabling these extensions has no effect; OpenGL apps run anyway
-** event without these extensions defined. I have not yet found
-** a way to gracefully keep OpenGL programs from running while
-** LG mode is abled.
-*/
-
-Bool
-lgeCompatibleExtension (ExtensionEntry *pExt)
-{
-    if (strcmp(pExt->name, "XVideo") == 0) {
-	return FALSE;
-    }
-    if (strcmp(pExt->name, "XVideo-MotionCompensation") == 0) {
-	return FALSE;
-    }
-
-    return TRUE;
-}
-
-/*
-** Shuts the given extension off by replacing its MainProc and SwappedMainProc
-** with a routine which prints out an error message and returns BadAccess,
-** or enables the given extension by replacing its original MainProc and 
-** SwappedMainProc routines.
-*/
-
-#define WARNING_MESSAGE "WARNING: client attempt to access the %s extension, which has been disabled because it is incompatible with LG3D"
-
-static int (*XVideoSavedMainProc)(ClientPtr);
-static int (*XVideoSavedSwappedMainProc)(ClientPtr);
-static int (*XVideoMCSavedMainProc)(ClientPtr);
-static int (*XVideoMCSavedSwappedMainProc)(ClientPtr);
-
-static int
-lgeXVideoError (ClientPtr client) 
-{
-    ErrorF(WARNING_MESSAGE, "XVideo");
-    return BadAccess;
-}
-
-static int
-lgeXVideoMCError (ClientPtr client) 
-{
-    ErrorF(WARNING_MESSAGE, "XVideo-MotionCompensation");
-    return BadAccess;
-}
-
-static void
-lgeControlIncompatibleExtension (ExtensionEntry *pExt, Bool enable)
-{
-    int idx = pExt->index;
-
-    if (strcmp(pExt->name, "XVideo") == 0) {
-	if (enable) {
-	    ProcVector[idx + EXTENSION_BASE] = XVideoSavedMainProc;
-	    SwappedProcVector[idx + EXTENSION_BASE] = XVideoSavedSwappedMainProc;
-	} else {
-	    XVideoSavedMainProc = ProcVector[idx + EXTENSION_BASE];
-	    ProcVector[idx + EXTENSION_BASE] = lgeXVideoError;
-	    XVideoSavedSwappedMainProc = SwappedProcVector[idx + EXTENSION_BASE];
-	    SwappedProcVector[idx + EXTENSION_BASE] = lgeXVideoError;
-	}
-    }
-    if (strcmp(pExt->name, "XVideo-MotionCompensation") == 0) {
-	if (enable) {
-	    ProcVector[idx + EXTENSION_BASE] = XVideoMCSavedMainProc;
-	    SwappedProcVector[idx + EXTENSION_BASE] = XVideoMCSavedSwappedMainProc;
-	} else {
-	    XVideoMCSavedMainProc = ProcVector[idx + EXTENSION_BASE];
-	    ProcVector[idx + EXTENSION_BASE] = lgeXVideoMCError;
-	    XVideoMCSavedSwappedMainProc = SwappedProcVector[idx + EXTENSION_BASE];
-	    SwappedProcVector[idx + EXTENSION_BASE] = lgeXVideoMCError;
-	}
-    }
-}
-
-static void
-lgeDisableIncompatibleExtensions ()
-{
-    int i;
-    
-    for (i = 0;  i < NumExtensions; i++) {
-	if (!lgeCompatibleExtension(extensions[i])) {
-	    lgeControlIncompatibleExtension(extensions[i], FALSE);
-	}
-    }
-}
-
-static void
-lgeReenableIncompatibleExtensions ()
-{
-    int i;
-    
-    for (i = 0;  i < NumExtensions; i++) {
-	if (!lgeCompatibleExtension(extensions[i])) {
-	    lgeControlIncompatibleExtension(extensions[i], TRUE);
-	}
-    }
-}
-
-#endif /* LG3D */
-
-
--- a/open-src/xserver/xorg/sun-src/Xext/lgeint.h	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/************************************************************
-
-Copyright (c) 2004, Sun Microsystems, Inc. 
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/*
- * lgeint.h - Server-internal defines for LGE
- */
-
-#ifndef _LGEINT_H
-#define _LGEINT_H
-
-#include "extnsionst.h"
-
-/* Bump this number for every change to the LG3D code in the X Server */
-#define LG3D_IMPLEMENTATION 	7
-
-extern int lgeDisplayServerIsAlive;
-extern ClientPtr lgePickerClient;
-extern ClientPtr lgeEventDelivererClient;
-extern Window lgeDisplayServerPRW;
-extern WindowPtr pLgeDisplayServerPRWWin;
-extern int lgeEventComesFromDS;
-extern DeviceIntPtr lgekb;
-extern DeviceIntPtr lgems;
-
-extern Window lgeDisplayServerPRWsList[MAXSCREENS];
-extern WindowPtr pLgeDisplayServerPRWWinsList[MAXSCREENS];
-extern WindowPtr pLgeDisplayServerPRWWinRoots[MAXSCREENS];
-
-#define IsWinLgePRWWin(pWin) \
-    ((pWin) == pLgeDisplayServerPRWWinsList[(pWin)->drawable.pScreen->myNum])
-
-#define GetLgePRWForRoot(pWin) \
-    (pLgeDisplayServerPRWWinsList[(pWin)->drawable.pScreen->myNum])
-
-extern int IsWinLgePRWOne(int win);
-extern WindowPtr GetLgePRWWinFor(int win);
-
-extern Bool lgeCompatibleExtension (ExtensionEntry *pExt);
-
-#endif /* LGEINT_H */
-
--- a/open-src/xserver/xorg/sun-src/Xext/tsolCompat.c	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/* Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */ 
-
-/* This file provides XACE wrappers around the TSOL hooks to provide
-   backwards binary compatibility for existing Xtsol extension modules. */
-
-#include "dix-config.h"
-#include "dix.h"
-#include "extnsionst.h"
-#include "xace.h"
-#include "xacestr.h"
-
-#define _XTSOL_SERVER
-#include <X11/extensions/Xtsol.h>
-
-#define CALLBACK(name) static void \
-name(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
-
-/*
-    int (*InitWindow)(ClientPtr, WindowPtr);
-*/
-CALLBACK(tsolCompatInitWindow)
-{
-    XaceWindowRec *rec = (XaceWindowRec *) calldata;
-    ClientPtr client = rec->client;
-    WindowPtr pWin = rec->pWin;
-
-    (*pSecHook->InitWindow)(client, pWin);
-}
-
-/*
-    char (*CheckPropertyAccess)(ClientPtr client, WindowPtr pWin,
-    				ATOM propertyName, Mask access_mode)
-*/
-CALLBACK(tsolCompatCheckPropertyAccess)
-{
-    XacePropertyAccessRec *rec = (XacePropertyAccessRec *) calldata;
-    ClientPtr client = rec->client;
-    WindowPtr pWin = rec->pWin;
-    ATOM propertyName = rec->propertyName;
-    Mask access_mode = rec->access_mode;
-
-    rec->rval = (*pSecHook->CheckPropertyAccess)(client, pWin, propertyName,
-					      access_mode);
-}
-
-/*
-    void (*ProcessKeyboard)(xEvent *, KeyClassPtr);
-*/
-CALLBACK(tsolCompatProcessKeyboard)
-{
-    XaceKeyAvailRec *rec = (XaceKeyAvailRec *) calldata;
-    xEventPtr event = rec->event;
-    DeviceIntPtr keybd = rec->keybd;
-/*  int count = rec->count; */
-    KeyClassPtr keyc = keybd->key;
-
-    (*pSecHook->ProcessKeyboard)(event, keyc);
-}
-
-/*
-    void (*AuditStart)(ClientPtr client);
-*/
-CALLBACK(tsolCompatAuditStart)
-{
-    XaceAuditRec *rec = (XaceAuditRec *) calldata;
-    ClientPtr client = rec->client;
-    
-    (*pSecHook->AuditStart)(client);
-}
-
-/*
-    void (*AuditEnd)(ClientPtr client, int result);
-*/
-CALLBACK(tsolCompatAuditEnd)
-{
-    XaceAuditRec *rec = (XaceAuditRec *) calldata;
-    ClientPtr client = rec->client;
-    int result = rec->requestResult;
-
-    (*pSecHook->AuditEnd)(client, result);
-}
-
-/*
-    pointer (* CheckAccess)(ClientPtr pClient, XID id, RESTYPE classes,
-	Mask access_mode, pointer resourceval);
-*/
-CALLBACK(tsolCompatCheckResourceIDAccess)
-{
-    XaceResourceAccessRec *rec = (XaceResourceAccessRec *) calldata;
-    ClientPtr client = rec->client;
-    XID id = rec->id;
-    RESTYPE rtype = rec->rtype;
-    Mask access_mode = rec->access_mode;
-    pointer res = rec->res;
-
-    if (client->CheckAccess) {
-	if ((*client->CheckAccess)(client, id, rtype, access_mode, res)
-	    == NULL) {
-	    rec->rval = FALSE;
-	}
-    }
-}
-
-
-_X_HIDDEN void
-tsolCompatRegisterHooks(void)
-{
-    if (pSecHook != NULL) {
-	/* register callbacks */
-	XaceRegisterCallback(XACE_WINDOW_INIT, tsolCompatInitWindow, NULL);
-	XaceRegisterCallback(XACE_PROPERTY_ACCESS,
-			     tsolCompatCheckPropertyAccess, NULL);
-	XaceRegisterCallback(XACE_KEY_AVAIL, tsolCompatProcessKeyboard, NULL);
-	XaceRegisterCallback(XACE_AUDIT_BEGIN, tsolCompatAuditStart, NULL);
-	XaceRegisterCallback(XACE_AUDIT_END, tsolCompatAuditEnd, NULL);
-	XaceRegisterCallback(XACE_RESOURCE_ACCESS,
-			     tsolCompatCheckResourceIDAccess, NULL);
-	DeclareExtensionSecurity(TSOLNAME, TRUE);
-    }
-}
--- a/open-src/xserver/xorg/sun-src/dix/xytosubwin.c	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,269 +0,0 @@
-/************************************************************
-
-Copyright (c) 2004, Sun Microsystems, Inc. 
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987, 1998  The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-
-			All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its 
-documentation for any purpose and without fee is hereby granted, 
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in 
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.  
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-********************************************************/
-
-#ifdef LG3D
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "resource.h"
-#define NEED_EVENTS
-#define NEED_REPLIES
-#include "windowstr.h"
-#include "inputstr.h"
-
-extern WindowPtr XYToSubWindow (WindowPtr pWin, int x, int y, 
-				int *xWinRel, int *yWinRel);
-extern void fillSpriteTraceFromRootToWin (WindowPtr pWin);
-extern Bool PointInBorderSize(WindowPtr pWin, int x, int y);
-
-extern WindowPtr *spriteTrace;
-extern int spriteTraceSize;
-extern int spriteTraceGood;
-extern WindowPtr lgeCurrentRootWin;
-
-/* For Debug 
-static void
-printSpriteTrace (void) 
-{
-    int i;
-
-    ErrorF("Sprite Trace: good = %d\n", spriteTraceGood);
-    ErrorF("--------------------------------\n");
-    for (i = 0; i < spriteTraceGood; i++) {
-	ErrorF("%d: %d\n", i, (int)spriteTrace[i]->drawable.id);
-    }
-    ErrorF("--------------------------------\n");
-}
-*/
-
-/*
-** Fill sprite trace starting from pWin upward through the parent
-** chain stopping at, and including, the root window. At this point
-** the sprite trace is in the reverse order it should be, so before
-** returning we reverse the order.
-*/
-
-void
-fillSpriteTraceFromRootToWin (WindowPtr pWin)
-{
-    WindowPtr pParent;
-    int       i;
-
-    spriteTrace[0] = pWin;
-    spriteTraceGood = 1;	
-
-    pParent = pWin->parent;
-    while (pParent != NULL) {
-        if (spriteTraceGood >= spriteTraceSize) {
-	    spriteTraceSize += 10;
-	    Must_have_memory = TRUE; 
-	    spriteTrace = (WindowPtr *)xrealloc(
-	                  spriteTrace, spriteTraceSize*sizeof(WindowPtr));
-    	    Must_have_memory = FALSE; 
-	}
-	spriteTrace[spriteTraceGood++] = pParent;
-	pParent = pParent->parent;
-    }
-
-    /* For debug
-    ErrorF("Before reversal\n");
-    printSpriteTrace();
-    */
-
-    /* 
-    ** Now reverse the order by swapping entries at either end,
-    ** working our way toward the center
-    */
-    /*ErrorF("num swap loops = %d\n", (spriteTraceGood >> 1));*/
-    for (i = 0; i < (spriteTraceGood >> 1); i++) {
-	int       k = spriteTraceGood - i - 1;     
-	/*ErrorF("Swap %d with %d\n", spriteTrace[i], spriteTrace[k]);*/
-	WindowPtr pWinTmp = spriteTrace[i];
-	spriteTrace[i] = spriteTrace[k];
-	spriteTrace[k] = pWinTmp;
-    }
-
-    /* For debug
-    ErrorF("After sprite trace fill:\n");
-    printSpriteTrace();
-    */
-}
-
-/*
-** Starting from a specified window, the deepest descendent 
-** in the tree which contains (x,y) (this point is in the
-** coordinate space of pWin). This descendent is returned.
-** (x,y) are in window relative coordinates.
-**
-** The sprite location relative to the sprite window is returned.
-**
-** This routine also appropriately updates the sprite trace 
-** to contain a trace from the deepest descendent upward through 
-** the parent chain to the root.
-**
-** Note: derived from events.c:XYToWindow
-*/
-
-WindowPtr 
-XYToSubWindow (WindowPtr pWin, int x, int y, int *xWinRel, int *yWinRel)
-{
-    WindowPtr pSpriteWin;
-
-    /* Convert to screen absolute coordinates */
-    x += pWin->drawable.x;
-    y += pWin->drawable.y;
-    /*ErrorF("scr abs xy = %d, %d\n", x, y);*/
-
-    /* Fill up the sprite trace to what we know so far */
-    fillSpriteTraceFromRootToWin(pWin);
-
-    /* Examine children of the window */
-    pWin = pWin->firstChild;
-
-    /* 
-    ** From here on, the function is identical to XYToWindow
-    */
-
-    while (pWin)
-    {
-	/*
-	if (pWin->mapped) {
-	    ErrorF("Testing against win %d\n", pWin->drawable.id);
-	    ErrorF("win rect (excl border) = %d %d %d %d\n", 
-		   pWin->drawable.x, 
-		   pWin->drawable.y,
-		   pWin->drawable.x + pWin->drawable.width, 
-		   pWin->drawable.y + pWin->drawable.height); 
-	}
-	*/
-
-	if ((pWin->mapped) &&
-		(x >= pWin->drawable.x - wBorderWidth (pWin)) &&
-		(x < pWin->drawable.x + (int)pWin->drawable.width +
-		    wBorderWidth(pWin)) &&
-		(y >= pWin->drawable.y - wBorderWidth (pWin)) &&
-		(y < pWin->drawable.y + (int)pWin->drawable.height +
-		    wBorderWidth (pWin))
-#ifdef SHAPE
-		/* When a window is shaped, a further check
-		 * is made to see if the point is inside
-		 * borderSize
-		 */
-#ifndef NO_XINERAMA_PORT
-		&& (!wBoundingShape(pWin) || PointInBorderSize(pWin, x, y))
-    	        && (!wInputShape(pWin))
-#else
-		&& (!wBoundingShape(pWin) ||
-		    POINT_IN_REGION(pWin->drawable.pScreen,
-				    &pWin->borderSize, x, y, &box))
-    	        && (!wInputShape(pWin))
-#endif
-#endif
-		)
-	{
-	    /*ErrorF("Hit win %d\n", pWin->drawable.id);*/
-	    if (spriteTraceGood >= spriteTraceSize)
-	    {
-		spriteTraceSize += 10;
-		Must_have_memory = TRUE; /* XXX */
-		spriteTrace = (WindowPtr *)xrealloc(
-		    spriteTrace, spriteTraceSize*sizeof(WindowPtr));
-		Must_have_memory = FALSE; /* XXX */
-	    }
-	    spriteTrace[spriteTraceGood++] = pWin;
-	    pWin = pWin->firstChild;
-	    /*ErrorF("Proceed to first child\n");*/
-	}
-	else {
-	    pWin = pWin->nextSib;
-	    /*ErrorF("Proceed to next sib\n");*/
-	}
-    }
-
-    /* For debug 
-    ErrorF("After subwin calculation:\n");
-    printSpriteTrace();
-    */
-
-    /* always make the root from sprite (lgeCurrentRootWin defined in events.c) */
-    spriteTrace[0] = lgeCurrentRootWin;
-
-    pSpriteWin = spriteTrace[spriteTraceGood-1];
-    *xWinRel = x - pSpriteWin->drawable.x;
-    *yWinRel = y - pSpriteWin->drawable.y;
-    /*ErrorF("xyWinRel = %d, %d\n", *xWinRel, *yWinRel);*/
-
-    return pSpriteWin;
-}
-
-#endif /* LG3D */
Binary file open-src/xserver/xorg/sun-src/doc/LG/lg_event_trip.odt has changed
Binary file open-src/xserver/xorg/sun-src/doc/LG/lg_event_trip.pdf has changed
Binary file open-src/xserver/xorg/sun-src/doc/LG/lg_xorg_mods.odt has changed
Binary file open-src/xserver/xorg/sun-src/doc/LG/lg_xorg_mods.pdf has changed
Binary file open-src/xserver/xorg/sun-src/doc/LG/lge_protocol.odt has changed
Binary file open-src/xserver/xorg/sun-src/doc/LG/lge_protocol.pdf has changed
--- a/open-src/xserver/xorg/sun-src/hw/xfree86/dixmods/iamodule.c	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/hw/xfree86/dixmods/iamodule.c	Thu Jan 15 12:55:00 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@
  * of the copyright holder.
  */
 
-#pragma ident "@(#)iamodule.c	1.3	07/01/18"
+#pragma ident "@(#)iamodule.c	1.4	09/01/14"
 
 #ifdef HAVE_XORG_CONFIG_H
 #include <xorg-config.h>
@@ -41,8 +41,9 @@
 static MODULESETUPPROTO(IASetup);
 
 extern void IAExtensionInit(void);
+extern int IADebugLevel;
 
-ExtensionModule IAExt =
+static ExtensionModule IAExt =
 {
     IAExtensionInit,
     IANAME,
@@ -65,7 +66,7 @@
         {0,0,0,0}
 };
 
-XF86ModuleData IAModuleData = { &VersRec, IASetup, NULL };
+_X_EXPORT XF86ModuleData iaModuleData = { &VersRec, IASetup, NULL };
 
 static pointer
 IASetup(pointer module, pointer opts, int *errmaj, int *errmin)
@@ -73,7 +74,6 @@
     if (opts) {
 	pointer o = xf86FindOption(opts, "IADebugLevel");
 	if (o) {
-	    extern int IADebugLevel;
 	    IADebugLevel = xf86SetIntOption(opts, "IADebugLevel", 0);
 	}
     }
--- a/open-src/xserver/xorg/sun-src/hw/xfree86/os-support/solaris/sun_apm.c	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/* $XFree86$ */
-/* Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSproc.h"
-#include "xf86_OSlib.h"
-
-#ifndef PLEASE_FIX_THIS
-#define APM_STANDBY_REQ 0xa01
-#define APM_SUSPEND_REQ 0xa02
-#define APM_NORMAL_RESUME 0xa03
-#define APM_CRIT_RESUME 0xa04
-#define APM_BATTERY_LOW 0xa05
-#define APM_POWER_CHANGE 0xa06
-#define APM_UPDATE_TIME 0xa07
-#define APM_CRIT_SUSPEND_REQ 0xa08
-#define APM_USER_STANDBY_REQ 0xa09
-#define APM_USER_SUSPEND_REQ 0xa0a
-#define APM_SYS_STANDBY_RESUME 0xa0b
-#define APM_IOC_NEXTEVENT 0xa0c
-#define APM_IOC_RESUME 0xa0d
-#define APM_IOC_SUSPEND 0xa0e
-#define APM_IOC_STANDBY 0xa0f
-#endif
-
-typedef struct apm_event_info 
-{
-	int	type;
-}apm_event_info;
-
-/*
- This may be replaced with a better device name
- very soon...
-*/
-#define APM_DEVICE "/dev/apm"
-#define APM_DEVICE1 "/dev/srn"
-
-static pointer APMihPtr = NULL;
-static void sunCloseAPM(void);
-
-static struct {
-    u_int apmBsd;
-    pmEvent xf86;
-} sunToXF86Array [] = {
-    { APM_STANDBY_REQ, XF86_APM_SYS_STANDBY },
-    { APM_SUSPEND_REQ, XF86_APM_SYS_SUSPEND },
-    { APM_NORMAL_RESUME, XF86_APM_NORMAL_RESUME },
-    { APM_CRIT_RESUME, XF86_APM_CRITICAL_RESUME },
-    { APM_BATTERY_LOW, XF86_APM_LOW_BATTERY },
-    { APM_POWER_CHANGE, XF86_APM_POWER_STATUS_CHANGE },
-    { APM_UPDATE_TIME, XF86_APM_UPDATE_TIME },
-    { APM_CRIT_SUSPEND_REQ, XF86_APM_CRITICAL_SUSPEND },
-    { APM_USER_STANDBY_REQ, XF86_APM_USER_STANDBY },
-    { APM_USER_SUSPEND_REQ, XF86_APM_USER_SUSPEND },
-    { APM_SYS_STANDBY_RESUME, XF86_APM_STANDBY_RESUME },
-#ifdef APM_CAPABILITY_CHANGE
-    { APM_CAPABILITY_CHANGE, XF86_APM_CAPABILITY_CHANGED },
-#endif
-};
-
-#define numApmEvents (sizeof(sunToXF86Array) / sizeof(sunToXF86Array[0]))
-
-static pmEvent
-sunToXF86(int type)
-{
-    int i;
-
-    for (i = 0; i < numApmEvents; i++) {
-	if (type == sunToXF86Array[i].apmBsd) {
-	    return sunToXF86Array[i].xf86;
-	}
-    }
-    return XF86_APM_UNKNOWN;
-}
-
-/*
- * APM events can be requested direclty from /dev/apm 
- */
-static int 
-sunPMGetEventFromOS(int fd, pmEvent *events, int num)
-{
-    struct apm_event_info sunEvent;
-    int i;
-
-    for (i = 0; i < num; i++) {
-	
-	if (ioctl(fd, APM_IOC_NEXTEVENT, &sunEvent) < 0) {
-	    if (errno != EAGAIN) {
-		xf86Msg(X_WARNING, "sunPMGetEventFromOS: APM_IOC_NEXTEVENT"
-			" errno = %d\n", errno);
-	    }
-	    break;
-	}
-	events[i] = sunToXF86(sunEvent.type);
-    }
-	    xf86Msg(X_WARNING, "Got some events\n");
-    return i;
-}
-
-/*
- * XXX This won't work on /dev/apm !
- *     We should either use /dev/apm_ctl (and kill apmd(8))
- *     or talk to apmd (but its protocol is not publically available)...
- */
-static pmWait
-sunPMConfirmEventToOs(int fd, pmEvent event)
-{
-    switch (event) {
-/* XXX: NOT CURRENTLY RETURNED FROM OS */
-      case XF86_APM_SYS_STANDBY:
-      case XF86_APM_USER_STANDBY:
-        if (ioctl( fd, APM_IOC_STANDBY, NULL ) == 0)
-            return PM_WAIT;  /* should we stop the Xserver in standby, too? */
-        else
-            return PM_NONE;
-      case XF86_APM_SYS_SUSPEND:
-      case XF86_APM_CRITICAL_SUSPEND:
-      case XF86_APM_USER_SUSPEND:
-	    xf86Msg(X_WARNING, "Got SUSPENDED\n");
-        if (ioctl( fd, APM_IOC_SUSPEND, NULL ) == 0)
-            return PM_CONTINUE;
-        else {
-	    xf86Msg(X_WARNING, "sunPMConfirmEventToOs: APM_IOC_SUSPEND"
-		" errno = %d\n", errno);
-            return PM_FAILED;
-	}
-      case XF86_APM_STANDBY_RESUME:
-      case XF86_APM_NORMAL_RESUME:
-      case XF86_APM_CRITICAL_RESUME:
-      case XF86_APM_STANDBY_FAILED:
-      case XF86_APM_SUSPEND_FAILED:
-	    xf86Msg(X_WARNING, "Got RESUME\n");
-        if (ioctl( fd, APM_IOC_RESUME, NULL ) == 0)
-            return PM_CONTINUE;
-        else {
-	    xf86Msg(X_WARNING, "sunPMConfirmEventToOs: APM_IOC_RESUME"
-		" errno = %d\n", errno);
-            return PM_FAILED;
-	}
-      default:
-	return PM_NONE;
-    }
-}
-
-PMClose
-xf86OSPMOpen(void)
-{
-    int fd;
-
-    if (APMihPtr || !xf86Info.pmFlag) {
-	return NULL;
-    }
-
-    if ((fd = open(APM_DEVICE, O_RDWR)) == -1) {
-    	if ((fd = open(APM_DEVICE1, O_RDWR)) == -1) {
-		return NULL;
-	}
-    }
-    xf86PMGetEventFromOs = sunPMGetEventFromOS;
-    xf86PMConfirmEventToOs = sunPMConfirmEventToOs;
-    APMihPtr = xf86AddInputHandler(fd, xf86HandlePMEvents, NULL);
-    return sunCloseAPM;
-}
-
-static void
-sunCloseAPM(void)
-{
-    int fd;
-
-    if (APMihPtr) {
-	fd = xf86RemoveInputHandler(APMihPtr);
-	close(fd);
-	APMihPtr = NULL;
-    }
-}
--- a/open-src/xserver/xorg/sun-src/hw/xfree86/os-support/solaris/sun_xkbtable.c	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
-/* Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-#pragma ident   "@(#)sun_xkbtable.c	1.5	06/11/20 SMI"
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef HAVE_XKB_CONFIG_H
-#include <xkb-config.h>
-#endif
-
-#ifdef XKB
-#include "xf86.h"
-#include "sun_xkbtable.h"
-
-#ifndef DFLT_XKB_CONFIG_ROOT
-#define DFLT_XKB_CONFIG_ROOT XKB_BASE_DIRECTORY
-#endif
-
-#define MAXLINELEN              256
-
-static char    *getaline(FILE *);
-static char    *skipwhite(char *);
-
-static int		global_linenumber = 0;
-#define	commentchar '#'/* Comment char */
-static char		line[MAXLINELEN + 1];
-static char	       *whitespace = " \t\n";
-
-static char *
-getaline(
-    FILE    *fp
-)
-{
-    char    *ptr;
-    char    *tmp;
-    int      index;
-    int      c;
-
-
-    while(1) {
-	ptr = fgets(line, MAXLINELEN, fp);
-        if (!ptr) {
-	    (void) fclose(fp);
-            return NULL;
-        }
-
-        global_linenumber++;
-
-        if (ptr[0] == commentchar) {        /* Comment line */
-            continue; 
-        }
-
-        if (ptr[0] == '\n') {               /* Blank line */
-            continue;
-        }
-
-        tmp = strchr(ptr, '#');
-        if (tmp != NULL) {
-            *tmp = '\0';
-        }
-
-        if (ptr[strlen(ptr) - 1] == '\n') {
-            ptr[strlen(ptr) - 1] = '\0';    /* get rid of '\n' */
-        }
-
-        ptr = skipwhite(ptr);
-        if (*ptr) {
-            break;
-        }
-
-    }
-    return ptr;
-}
-
-
-/*
- * Skips over the white space character in the string. 
- */
-
-static char *
-skipwhite(
-    char *ptr
-)
-{
-    while ((*ptr == ' ') || (*ptr == '\t')) {
-        ptr++;
-    }
-
-    if (*ptr == '\n') {             /* This should not occur. but .. */
-        ptr = '\0';
-    }
-
-    return ptr;
-}
-
-/*
- * Looks up in the .../etc/keytables/xkbtable.map file for the appropriate 
- * XKB names for the keyboard
- */
-
-int
-sun_find_xkbnames(
-    int          kb_type,	/* input */
-    int          kb_layout,	/* input */
-    char       **xkb_keymap,	/* output */
-    char       **xkb_model,	/* output */
-    char       **xkb_layout	/* output */
-)
-{
-    const char  *type, *layout;
-    char	*keymap, *defkeymap = NULL;	/* XKB Keymap name */
-    char	*model , *defmodel = NULL;	/* XKB model name */
-    char	*xkblay, *defxkblay = NULL;	/* XKB layout name */
-    FILE        *fp;
-    int          found_error,
-                 found_keytable;
-
-    fp = fopen(DFLT_XKB_CONFIG_ROOT "/xkbtable.map", "r");
-    if (fp == NULL) {
-	xf86Msg(X_WARNING, DFLT_XKB_CONFIG_ROOT "/xkbtable.map not found.\n"
-	  "\tCannot automap keyboard layout.\n");
-        return !Success;
-    } 
-
-    global_linenumber = 0;
-    found_error = 0;
-    found_keytable = 0;
-
-    while (getaline(fp)) { 
-	type = strtok(line, " \t\n");
-	if (type == NULL) {
-	    found_error = 1;
-	}
-	
-	layout = strtok(NULL, " \t\n");
-	if (layout == NULL) {
-	    found_error = 1;
-	}
-	
-	keymap = strtok(NULL, " \t\n");
-	if (keymap == NULL) {
-	    found_error = 1;
-	}
-
-	/* These two are optional entries */
-	model = strtok(NULL, " \t\n");
-	if ((model == NULL) || (*model == commentchar)) {
-	    model = xkblay = NULL;
-	} else {
-	    xkblay = strtok(NULL, " \t\n");
-	    if ((xkblay !=NULL) && (*xkblay == commentchar)) {
-		xkblay = NULL;
-	    }
-	}
-
-	if (found_error) {
-	    found_error = 0;
-	    continue;
-	}
-	
-	/* record default entry if/when found */
-	if (*type == '*') {
-	    if (defkeymap == NULL) {
-		defkeymap = keymap;
-		defmodel = model;
-		defxkblay = xkblay;
-	    }
-	} else if (atoi(type) == kb_type) {
-	    if (*type == '*') {
-		if (defkeymap == NULL) {
-		    defkeymap = keymap;
-		    defmodel = model;
-		    defxkblay = xkblay;
-		}
-	    } else if (atoi(layout) == kb_layout) {
-		found_keytable = 1;
-		break;
-	    }
-	}
-    }
-    (void) fclose(fp);
-             
-    if (! found_keytable ) {
-	keymap = defkeymap;
-	model = defmodel;
-	xkblay = defxkblay;
-    }
-
-    if ((keymap != NULL) && (strcmp(keymap,"-") !=0)) {
-	xf86Msg(X_PROBED, "XKB: keymap: \"%s\"\n", keymap);
-	*xkb_keymap = keymap;
-    }
-    if ((model != NULL) && (strcmp(model,"-") !=0)) {
-	*xkb_model = model;
-	xf86Msg(X_PROBED, "XKB: model: \"%s\"\n", model);
-    }
-    if ((xkblay != NULL) && (strcmp(xkblay,"-") !=0)) {
-	*xkb_layout = xkblay;
-	xf86Msg(X_PROBED, "XKB: layout: \"%s\"\n", xkblay);
-    }
-    return Success;
-}
-#endif
--- a/open-src/xserver/xorg/sun-src/hw/xfree86/os-support/solaris/sun_xkbtable.h	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/* Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-#ifndef _SUN_XKBTABLE_H
-#define	_SUN_XKBTABLE_H
-
-#pragma ident	"@(#)sun_xkbtable.h	1.2	05/11/08 SMI"
-
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-
-/*
- * Functions for autodetecting Sun keyboard type and mapping to XKB names
- */
-extern int
-sun_find_xkbnames(
-    int          kb_type,	/* input */
-    int          kb_layout,	/* input */
-    char       **xkb_keymap,	/* output */
-    char       **xkb_model,	/* output */
-    char       **xkb_layout	/* output */
-);
-
-#endif /* _SUN_XKBTABLE_H */
--- a/open-src/xserver/xorg/sun-src/hw/xfree86/scanpci/pci.ids	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15906 +0,0 @@
-#
-#	List of PCI ID's
-#
-#	Maintained by Martin Mares <[email protected]> and other volunteers from the
-#	Linux PCI ID's Project at http://pciids.sf.net/.
-#
-#	New data are always welcome, especially if accurate. If you have
-#	anything to contribute, please follow the instructions at the web site
-#	or send a diff -u against the most recent pci.ids to [email protected].
-#
-#	This file can be distributed under either the GNU General Public License
-#	(version 2 or higher) or the 3-clause BSD License.
-#
-#	Daily snapshot on Wed 2008-10-01 01:05:01
-#
-
-# Vendors, devices and subsystems. Please keep sorted.
-
-# Syntax:
-# vendor  vendor_name
-#	device  device_name				<-- single tab
-#		subvendor subdevice  subsystem_name	<-- two tabs
-
-0000  Gammagraphx, Inc.
-0010  Allied Telesyn International
-# This is a relabelled RTL-8139
-	8139  AT-2500TX V3 Ethernet
-001a  Ascend Communications, Inc.
-001c  PEAK-System Technik GmbH
-	0001  PCAN-PCI CAN-Bus controller
-0033  Paradyne corp.
-003d  Lockheed Martin-Marietta Corp
-# Real TJN ID is e159, but they got it wrong several times --mj
-0059  Tiger Jet Network Inc. (Wrong ID)
-0070  Hauppauge computer works Inc.
-	0003  WinTV PVR-250
-	0009  WinTV PVR-150
-	0801  WinTV PVR-150
-	0807  WinTV PVR-150
-	4000  WinTV PVR-350
-	4001  WinTV PVR-250 (v1)
-	4009  WinTV PVR-250
-	4800  WinTV PVR-350
-	4801  WinTV PVR-250 MCE
-	4803  WinTV PVR-250
-	7444  WinTV HVR-1600
-	7801  WinTV HVR-1800 MCE
-	8003  WinTV PVR-150
-	8801  WinTV PVR-150
-	c801  WinTV PVR-150
-	e807  WinTV PVR-500 MCE (1st tuner)
-	e817  WinTV PVR-500 MCE (2nd tuner)
-0071  Nebula Electronics Ltd.
-0095  Silicon Image, Inc. (Wrong ID)
-	0680  Ultra ATA/133 IDE RAID CONTROLLER CARD
-# Wrong ID used in subsystem ID of the TELES.S0/PCI 2.x ISDN adapter
-00a7  Teles AG (Wrong ID)
-00f5  BFG Technologies, Inc.
-0100  Ncipher Corp Ltd
-0123  General Dynamics
-# 018a is not LevelOne but there is a board misprogrammed
-018a  LevelOne
-	0106  FPC-0106TX misprogrammed [RTL81xx]
-# 021b is not Compaq but there is a board misprogrammed
-021b  Compaq Computer Corporation
-	8139  HNE-300 (RealTek RTL8139c) [iPaq Networking]
-0270  Hauppauge computer works Inc. (Wrong ID)
-0291  Davicom Semiconductor, Inc.
-	8212  DM9102A(DM9102AE, SM9102AF) Ethernet 100/10 MBit(Rev 40)
-# SpeedStream is Efficient Networks, Inc, a Siemens Company
-02ac  SpeedStream
-	1012  1012 PCMCIA 10/100 Ethernet Card [RTL81xx]
-02e0  XFX Pine Group Inc
-0315  SK-Electronics Co., Ltd.
-0357  TTTech AG
-	000a  TTP-Monitoring Card V2.0
-036f  Trigem Computer Inc.
-0403  Future Technology Devices International Ltd
-0432  SCM Microsystems, Inc.
-	0001  Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet]
-045e  Microsoft
-	006e  MN-510 802.11b wireless USB paddle
-	00c2  MN-710 wireless USB paddle
-0482  Kyocera
-04cf  Myson Century, Inc
-	8818  CS8818 USB2.0-to-ATAPI Bridge Controller with Embedded PHY
-050d  Belkin
-	001a  FSD7000 802.11g PCI Wireless card
-	0109  F5U409-CU USB/Serial Portable Adapter
-	700f  F5D7001 - Wireless G Plus Desktop Card
-	7050  F5D7050 802.11g Wireless USB Adapter
-	705c  F5D7050 v4
-058f  Alcor Micro Corporation
-05a9  OmniVision
-	8519  OV519 series
-05e3  CyberDoor
-	0701  CBD516
-066f  Sigmatel Inc.
-	3410  SMTP3410
-	3500  SMTP3500
-0675  Dynalink
-	1700  IS64PH ISDN Adapter
-	1702  IS64PH ISDN Adapter
-	1703  ISDN Adapter (PCI Bus, DV, W)
-	1704  ISDN Adapter (PCI Bus, D, C)
-067b  Prolific Technology, Inc.
-	3507  PL-3507 Hi-Speed USB & IEEE 1394 Combo to IDE Bridge Controller
-069d  Hughes Network Systems (HNS)
-0721  Sapphire, Inc.
-0795  Wired Inc.
-	6663  Butane II (MPEG2 encoder board)
-07ca  AVerMedia Technologies Inc.
-	a301  AVerTV 301
-	b808  AVerTV DVB-T Volar (USB 2.0)
-07e2  ELMEG Communication Systems GmbH
-0842  NPG, Personal Grand Technology
-08ff  AuthenTec
-	afe4  [Anchor] AF-S2 FingerLoc Sensor Module
-0925  First International Computer, Inc.
-	1234  VA-502 Mainboard
-093a  PixArt Imaging Inc.
-	010e  Innovage Mini Digital Camera
-	010f  SDC-300 Webcam
-	020f  Digital Photo Viewer
-	2468  CIF Single Chip
-	2600  PAC7311
-	2603  Philips Webcam SPC500NC
-	2608  Maxell MaxCam RotaWeb
-09c1  Arris
-	0704  CM 200E Cable Modem
-0a89  BREA Technologies Inc
-0ace  ZyDAS
-	1211  ZD1211 IEEE 802.11b+g USB Adapter
-0b0b  Rhino Equiment Corp.
-	0105  Rhino R1T1
-	0205  Rhino R4FXO
-	0206  RCB4FXO 4-channel FXO analog telphony card
-	0305  Rhino R4T1
-	0405  Rhino R8FXX
-	0406  RCB8FXX 8-channel modular analog telphony card
-	0505  Rhino R24FXX
-	0506  RCB24FXS 24-Channel FXS analog telphony card
-	0605  Rhino R2T1
-	0705  Rhino R24FXS
-	0706  RCB24FXO 24-Channel FXO analog telphony card
-	0905  R1T3 Single T3 Digital Telephony Card
-	0906  RCB24FXX 24-channel modular analog telphony card
-	0a06  RCB672FXX 672-channel modular analog telphony card
-0b3d  Brontes Technologies
-0b49  ASCII Corporation
-	064f  Trance Vibrator
-0ccd  TerraTec Electronic GmbH
-	0038  Cinergy T^2 DVB-T Receiver
-0e11  Compaq Computer Corporation
-	0001  PCI to EISA Bridge
-	0002  PCI to ISA Bridge
-	0046  Smart Array 64xx
-		0e11 4091  Smart Array 6i
-		0e11 409a  Smart Array 641
-		0e11 409b  Smart Array 642
-		0e11 409c  Smart Array 6400
-		0e11 409d  Smart Array 6400 EM
-	0049  NC7132 Gigabit Upgrade Module
-	004a  NC6136 Gigabit Server Adapter
-	005a  Remote Insight II board - Lights-Out
-	007c  NC7770 1000BaseTX
-	007d  NC6770 1000BaseTX
-	0085  NC7780 1000BaseTX
-	00b1  Remote Insight II board - PCI device
-	00bb  NC7760
-	00ca  NC7771
-	00cb  NC7781
-	00cf  NC7772
-	00d0  NC7782
-	00d1  NC7783
-	00e3  NC7761
-	0508  Netelligent 4/16 Token Ring
-	1000  Triflex/Pentium Bridge, Model 1000
-	2000  Triflex/Pentium Bridge, Model 2000
-	3032  QVision 1280/p
-	3033  QVision 1280/p
-	3034  QVision 1280/p
-	4000  4000 [Triflex]
-	4040  Integrated Array
-	4048  Compaq Raid LC2
-	4050  Smart Array 4200
-	4051  Smart Array 4250ES
-	4058  Smart Array 431
-	4070  Smart Array 5300
-	4080  Smart Array 5i
-	4082  Smart Array 532
-	4083  Smart Array 5312
-	4091  Smart Array 6i
-	409a  Smart Array 641
-	409b  Smart Array 642
-	409c  Smart Array 6400
-	409d  Smart Array 6400 EM
-	6010  HotPlug PCI Bridge 6010
-	7020  USB Controller
-	a0ec  Fibre Channel Host Controller
-	a0f0  Advanced System Management Controller
-	a0f3  Triflex PCI to ISA Bridge
-	a0f7  PCI Hotplug Controller
-		8086 002a  PCI Hotplug Controller A
-		8086 002b  PCI Hotplug Controller B
-	a0f8  ZFMicro Chipset USB
-	a0fc  FibreChannel HBA Tachyon
-	ae10  Smart-2/P RAID Controller
-		0e11 4030  Smart-2/P Array Controller
-		0e11 4031  Smart-2SL Array Controller
-		0e11 4032  Smart Array 3200 Controller
-		0e11 4033  Smart Array 3100ES Controller
-		0e11 4034  Smart Array 221 Controller
-	ae29  MIS-L
-	ae2a  MPC
-	ae2b  MIS-E
-	ae31  System Management Controller
-	ae32  Netelligent 10/100 TX PCI UTP
-	ae33  Triflex Dual EIDE Controller
-	ae34  Netelligent 10 T PCI UTP
-	ae35  Integrated NetFlex-3/P
-	ae40  Netelligent Dual 10/100 TX PCI UTP
-	ae43  Netelligent Integrated 10/100 TX UTP
-	ae69  CETUS-L
-	ae6c  Northstar
-	ae6d  NorthStar CPU to PCI Bridge
-	b011  Netelligent 10/100 TX Embedded UTP
-	b012  Netelligent 10 T/2 PCI UTP/Coax
-	b01e  NC3120 Fast Ethernet NIC
-	b01f  NC3122 Fast Ethernet NIC
-	b02f  NC1120 Ethernet NIC
-	b030  Netelligent 10/100 TX UTP
-	b04a  10/100 TX PCI Intel WOL UTP Controller
-	b060  Smart Array 5300 Controller
-	b0c6  NC3161 Fast Ethernet NIC
-	b0c7  NC3160 Fast Ethernet NIC
-	b0d7  NC3121 Fast Ethernet NIC
-	b0dd  NC3131 Fast Ethernet NIC
-	b0de  NC3132 Fast Ethernet Module
-	b0df  NC6132 Gigabit Module
-	b0e0  NC6133 Gigabit Module
-	b0e1  NC3133 Fast Ethernet Module
-	b123  NC6134 Gigabit NIC
-	b134  NC3163 Fast Ethernet NIC
-	b13c  NC3162 Fast Ethernet NIC
-	b144  NC3123 Fast Ethernet NIC
-	b163  NC3134 Fast Ethernet NIC
-	b164  NC3165 Fast Ethernet Upgrade Module
-	b178  Smart Array 5i/532
-		0e11 4080  Smart Array 5i
-		0e11 4082  Smart Array 532
-		0e11 4083  Smart Array 5312
-	b1a4  NC7131 Gigabit Server Adapter
-	b200  Memory Hot-Plug Controller
-	b203  Integrated Lights Out Controller
-	b204  Integrated Lights Out  Processor
-	c000  Remote Insight Lights-Out Edition
-	f130  NetFlex-3/P ThunderLAN 1.0
-	f150  NetFlex-3/P ThunderLAN 2.3
-0e21  Cowon Systems, Inc.
-0e55  HaSoTec GmbH
-0eac  SHF Communication Technologies AG
-0f62  Acrox Technologies Co., Ltd.
-# Formerly NCR
-1000  LSI Logic / Symbios Logic
-	0001  53c810
-		1000 1000  LSI53C810AE PCI to SCSI I/O Processor
-	0002  53c820
-	0003  53c825
-		1000 1000  LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide)
-	0004  53c815
-	0005  53c810AP
-	0006  53c860
-		1000 1000  LSI53C860E PCI to Ultra SCSI I/O Processor
-	000a  53c1510
-		0e11 b143  Integrated Dual Channel Wide Ultra2 SCSI Controller
-		1000 1000  LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode)
-	000b  53C896/897
-		0e11 6004  EOB003 Series SCSI host adapter
-		1000 1000  LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller
-		1000 1010  LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter
-		1000 1020  LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter
-		13e9 1000  6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics)
-	000c  53c895
-		1000 1010  LSI8951U PCI to Ultra2 SCSI host adapter
-		1000 1020  LSI8952U PCI to Ultra2 SCSI host adapter
-		1de1 3906  DC-390U2B SCSI adapter
-		1de1 3907  DC-390U2W
-	000d  53c885
-	000f  53c875
-		0e11 7004  Embedded Ultra Wide SCSI Controller
-		1000 1000  LSI53C876/E PCI to Dual Channel SCSI Controller
-		1000 1010  LSI22801 PCI to Dual Channel Ultra SCSI host adapter
-		1000 1020  LSI22802 PCI to Dual Channel Ultra SCSI host adapter
-		1092 8760  FirePort 40 Dual SCSI Controller
-		1775 10d0  V5D Single Board Computer Wide Ultra SCSI
-		1775 10d1  V5D Single Board Computer Ultra SCSI
-		1de1 3904  DC390F/U Ultra Wide SCSI Adapter
-		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
-		4c53 1050  CT7 mainboard
-	0010  53C1510
-		0e11 4040  Integrated Smart Array Controller
-		0e11 4048  RAID LC2 Controller
-		1000 1000  53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode)
-	0012  53c895a
-		1000 1000  LSI53C895A PCI to Ultra2 SCSI Controller
-	0013  53c875a
-		1000 1000  LSI53C875A PCI to Ultra SCSI Controller
-	0020  53c1010 Ultra3 SCSI Adapter
-		1000 1000  LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller
-		107b 1040  Server Onboard 53C1010-33
-		1de1 1020  DC-390U3W
-	0021  53c1010 66MHz  Ultra3 SCSI Adapter
-		1000 1000  LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
-		1000 1010  Asus TR-DLS onboard 53C1010-66
-		103c 1300  Ultra160 SCSI [AB306A]
-		103c 1310  Ultra160 SCSI [A9918A]
-		103c 1330  Ultra160 SCSI [A7059A]
-		103c 1340  Ultra160 SCSI [A7060A]
-		124b 1070  PMC-USCSI3
-		4c53 1080  CT8 mainboard
-		4c53 1300  P017 mezzanine (32-bit PMC)
-		4c53 1310  P017 mezzanine (64-bit PMC)
-	0030  53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI
-		0e11 00da  ProLiant ML 350
-		1028 0123  LSI Logic 1020/1030
-		1028 014a  LSI Logic 1020/1030
-		1028 016c  PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4)
-		1028 0183  LSI Logic 1020/1030
-		1028 018a  PERC 4/IM
-		1028 1010  LSI U320 SCSI Controller
-		103c 12c5  Ultra320 SCSI [A7173A]
-		124b 1170  PMC-USCSI320
-		1734 1052  PRIMERGY BX/RX/TX S2 series onboard SCSI(IME)
-	0031  53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
-	0032  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
-		1000 1000  LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller
-	0033  1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
-	0040  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
-		1000 0033  MegaRAID SCSI 320-2XR
-		1000 0066  MegaRAID SCSI 320-2XRWS
-	0041  53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
-	0050  SAS1064 PCI-X Fusion-MPT SAS
-		1028 1f04  SAS 5/E
-		1028 1f09  SAS 5i/R
-	0054  SAS1068 PCI-X Fusion-MPT SAS
-		1028 1f04  SAS 5/E Adapter Controller
-		1028 1f05  SAS 5/i Adapter Controller
-		1028 1f06  SAS 5/i Integrated Controller
-		1028 1f07  SAS 5/iR Integrated RAID Controller
-		1028 1f08  SAS 5/iR Integrated RAID Controller
-		1028 1f09  SAS 5/iR Adapter RAID Controller
-	0055  SAS1068 PCI-X Fusion-MPT SAS
-		1033 8336  SAS1068
-	0056  SAS1064ET PCI-Express Fusion-MPT SAS
-	0057  M1064E MegaRAID SAS
-		8086 346c  Embedded Software RAID Technology II (ESTRII)
-	0058  SAS1068E PCI-Express Fusion-MPT SAS
-		1028 021d  SAS 6/iR Integrated Workstations RAID Controller
-		1028 1f0e  SAS 6/iR Adapter RAID Controller
-		1028 1f0f  SAS 6/iR Integrated Blades RAID Controller
-		1028 1f10  SAS 6/iR Integrated RAID Controller
-	0059  MegaRAID SAS 8208ELP/8208ELP
-	005a  SAS1066E PCI-Express Fusion-MPT SAS
-	005c  SAS1064A PCI-X Fusion-MPT SAS
-	005e  SAS1066 PCI-X Fusion-MPT SAS
-	0060  MegaRAID SAS 1078
-		1000 1006  MegaRAID SAS 8888ELP
-		1000 100a  MegaRAID SAS 8708ELP
-		1000 100e  MegaRAID SAS 8884E
-		1000 100f  MegaRAID SAS 8708E
-		1000 1010  MegaRAID SATA 350-8ELP
-		1000 1011  MegaRAID SATA 350-4ELP
-		1000 1012  MegaRAID SAS 8704ELP
-		1000 1016  MegaRAID SAS 8880EM2
-		1014 0363  MegaRAID SAS PCI Express ROMB
-		1014 0364  SystemX MegaRAID SAS 8808E
-		1014 0365  SystemX MegaRAID SAS 8884E
-		1014 0379  SystemX MegaRAID SAS 8880EM2
-		1028 1f0a  PERC 6/E Adapter RAID Controller
-		1028 1f0b  PERC 6/i Adapter RAID Controller
-		1028 1f0c  PERC 6/i Integrated RAID Controller
-		1028 1f0d  PERC 6/i Integrated RAID Controller
-		1028 1f11  CERC 6/i Integrated RAID Controller
-		1033 835a  MegaRAID SAS PCI Express ROMB
-		1043 824d  MegaRAID SAS PCI Express ROMB
-		1170 002f  MegaRAID SAS PCI Express ROMB
-		1170 0036  MegaRAID SAS PCI Express ROMB
-		15d9 c080  MegaRAID SAS PCI Express ROMB
-		17aa 6b7c  MegaRAID SAS PCI Express ROMB
-		18a1 0003  LSI MegaRAID SAS PCI Express ROMB
-		1fca 2163  LSI MegaRAID SAS PCI Express ROMB
-		8086 1006  RAID Controller SRCSAS28EP
-		8086 100a  RAID Controller SRCSAS28EV
-		8086 1010  RAID Controller SRCSATA28E
-		8086 34cc  Integrated RAID Controller SROMBSAS28E
-		8086 34cd  Integrated RAID Controller SROMBSAS28E
-	0062  SAS1078 PCI-Express Fusion-MPT SAS
-		1000 0062  SAS1078 PCI-Express Fusion-MPT SAS
-	007c  MegaRAID SAS 1078DE
-		1014 0395  ServeRAID-AR10is SAS/SATA Controller
-	008f  53c875J
-		1092 8000  FirePort 40 SCSI Controller
-		1092 8760  FirePort 40 Dual SCSI Host Adapter
-	0407  MegaRAID
-		1000 0530  MegaRAID 530 SCSI 320-0X RAID Controller
-		1000 0531  MegaRAID 531 SCSI 320-4X RAID Controller
-		1000 0532  MegaRAID 532 SCSI 320-2X RAID Controller
-		1028 0531  PowerEdge Expandable RAID Controller 4/QC
-		1028 0533  PowerEdge Expandable RAID Controller 4/QC
-		8086 0530  MegaRAID Intel RAID Controller SRCZCRX
-		8086 0532  MegaRAID Intel RAID Controller SRCU42X
-	0408  MegaRAID
-		1000 0001  MegaRAID SCSI 320-1E RAID Controller
-		1000 0002  MegaRAID SCSI 320-2E RAID Controller
-		1025 004d  MegaRAID ACER ROMB-2E RAID Controller
-		1028 0001  PowerEdge RAID Controller PERC4e/SC
-		1028 0002  PowerEdge RAID Controller PERC4e/DC
-		1028 0012  PowerEdge RAID Controller RAC4
-		1028 0015  PowerEdge RAID Controller PERC5
-		1028 1f03  PowerEdge RAID Controller PERC5
-		1734 1065  FSC MegaRAID PCI Express ROMB
-		8086 0002  MegaRAID Intel RAID Controller SRCU42E
-	0409  MegaRAID
-		1000 3004  MegaRAID SATA 300-4X RAID Controller
-		1000 3008  MegaRAID SATA 300-8X RAID Controller
-		8086 3008  MegaRAID RAID Controller SRCS28X
-		8086 3431  MegaRAID RAID Controller Alief SROMBU42E
-		8086 3499  MegaRAID RAID Controller Harwich SROMBU42E
-	0411  MegaRAID SAS
-		1000 1001  MegaRAID SAS 8408E
-		1000 1002  MegaRAID SAS 8480E
-		1000 1003  MegaRAID SAS 8344ELP
-		1000 1004  MegaRAID SAS 8308ELP
-		1000 1008  MegaRAID SAS 84016E
-		1000 100c  MegaRAID SATA 300-12E
-		1000 100d  MegaRAID SATA 300-16E
-		1000 2004  MegaRAID SATA 300-8ELP
-		1000 2005  MegaRAID SATA 300-4ELP
-		1033 8287  MegaRAID SAS PCI Express ROMB
-		1054 3016  MegaRAID SAS RoMB Server
-		1734 1081  MegaRAID SAS PCI Express ROMB
-		1734 10a3  MegaRAID SAS PCI Express ROMB
-		8086 1001  RAID Controller SRCSAS18E
-		8086 1003  RAID Controller SRCSAS144E
-		8086 3500  SROMBSAS18E RAID Controller
-		8086 3501  SROMBSAS18E RAID Controller
-		8086 3504  SROMBSAS18E RAID Controller
-	0413  MegaRAID SAS Verde ZCR
-		1000 1005  MegaRAID SAS 8300XLP
-	0621  FC909 Fibre Channel Adapter
-	0622  FC929 Fibre Channel Adapter
-		1000 1020  44929 O Dual Fibre Channel card
-	0623  FC929 LAN
-	0624  FC919 Fibre Channel Adapter
-	0625  FC919 LAN
-	0626  FC929X Fibre Channel Adapter
-		1000 1010  7202-XP-LC Dual Fibre Channel card
-	0627  FC929X LAN
-	0628  FC919X Fibre Channel Adapter
-	0629  FC919X LAN
-	0640  FC949X Fibre Channel Adapter
-	0642  FC939X Fibre Channel Adapter
-	0646  FC949ES Fibre Channel Adapter
-	0701  83C885 NT50 DigitalScape Fast Ethernet
-	0702  Yellowfin G-NIC gigabit ethernet
-		1318 0000  PEI100X
-	0804  SA2010
-	0805  SA2010ZC
-	0806  SA2020
-	0807  SA2020ZC
-	0901  61C102
-	1000  63C815
-	1960  MegaRAID
-		1000 0518  MegaRAID 518 SCSI 320-2 Controller
-		1000 0520  MegaRAID 520 SCSI 320-1 Controller
-		1000 0522  MegaRAID 522 i4 133 RAID Controller
-		1000 0523  MegaRAID SATA 150-6 RAID Controller
-		1000 4523  MegaRAID SATA 150-4 RAID Controller
-		1000 a520  MegaRAID ZCR SCSI 320-0 Controller
-		1028 0518  MegaRAID 518 DELL PERC 4/DC RAID Controller
-		1028 0520  MegaRAID 520 DELL PERC 4/SC RAID Controller
-		1028 0531  PowerEdge Expandable RAID Controller 4/QC
-		1028 0533  PowerEdge Expandable RAID Controller 4/QC
-		8086 0520  MegaRAIDRAID Controller SRCU41L
-		8086 0523  MegaRAID RAID Controller SRCS16
-1001  Kolter Electronic
-	0010  PCI 1616 Measurement card with 32 digital I/O lines
-	0011  OPTO-PCI Opto-Isolated digital I/O board
-	0012  PCI-AD/DA Analogue I/O board
-	0013  PCI-OPTO-RELAIS Digital I/O board with relay outputs
-	0014  PCI-Counter/Timer Counter Timer board
-	0015  PCI-DAC416 Analogue output board
-	0016  PCI-MFB Analogue I/O board
-	0017  PROTO-3 PCI Prototyping board
-	9100  INI-9100/9100W SCSI Host
-1002  ATI Technologies Inc
-	3150  M24 1P [Radeon Mobility X600]
-		103c 0934  nx8220
-	3151  M24 [FireMV 2400]
-	3152  M22 [Radeon Mobility X300]
-	3154  M24GL [Mobility FireGL V3200]
-	3171  M24 [FireMV 2400] (Secondary)
-	3e50  RV380 0x3e50 [Radeon X600]
-	3e54  RV380 0x3e54 [FireGL V3200]
-	3e70  RV380 [Radeon X600] (Secondary)
-	4136  Radeon IGP 320 M
-	4137  Radeon IGP330/340/350
-	4144  R300 AD [Radeon 9500 Pro]
-	4145  R300 AE [Radeon 9700 Pro]
-	4146  R300 AF [Radeon 9700 Pro]
-	4147  R300 AG [FireGL Z1/X1]
-	4148  R350 AH [Radeon 9800]
-	4149  R350 AI [Radeon 9800]
-	414a  R350 AJ [Radeon 9800]
-	414b  R350 AK [FireGL X2]
-	4150  RV350 AP [Radeon 9600]
-		1002 0002  R9600 Pro primary (Asus OEM for HP)
-		1002 0003  R9600 Pro secondary (Asus OEM for HP)
-		1002 4722  All-in-Wonder 2006 AGP Edition
-		1458 4024  Giga-Byte GV-R96128D (Primary)
-		148c 2064  PowerColor R96A-C3N
-		148c 2066  PowerColor R96A-C3N
-		174b 7c19  Sapphire Atlantis Radeon 9600 Pro
-		174b 7c29  GC-R9600PRO [Sapphire] (Primary)
-		17ee 2002  Radeon 9600 256Mb Primary
-		18bc 0101  GC-R9600PRO (Primary)
-	4151  RV350 AQ [Radeon 9600]
-		1043 c004  A9600SE
-	4152  RV350 AR [Radeon 9600]
-		1002 0002  Radeon 9600XT
-		1002 4772  All-in-Wonder 9600 XT
-		1043 c002  Radeon 9600 XT TVD
-		1043 c01a  A9600XT/TD
-		174b 7c29  Sapphire Radeon 9600XT
-		1787 4002  Radeon 9600 XT
-	4153  RV350 AS [Radeon 9550]
-		1043 010c  A9550GE/TD
-		1462 932c  RX9550SE-TD128 (MS-8932)
-	4154  RV350 AT [FireGL T2]
-	4155  RV350 AU [FireGL T2]
-	4156  RV350 AV [FireGL T2]
-	4157  RV350 AW [FireGL T2]
-	4158  68800AX [Mach32]
-	4164  R300 AD [Radeon 9500 Pro] (Secondary)
-	4165  R300 AE [Radeon 9700 Pro] (Secondary)
-	4166  R300 AF [Radeon 9700 Pro] (Secondary)
-	4168  Radeon R350 [Radeon 9800] (Secondary)
-	4170  RV350 AP [Radeon 9600] (Secondary)
-		1002 0003  R9600 Pro secondary (Asus OEM for HP)
-		1002 4723  All-in-Wonder 2006 AGP Edition (Secondary)
-		1458 4025  Giga-Byte GV-R96128D (Secondary)
-		148c 2067  PowerColor R96A-C3N (Secondary)
-		174b 7c28  GC-R9600PRO [Sapphire] (Secondary)
-		17ee 2003  Radeon 9600 256Mb (Secondary)
-		18bc 0100  GC-R9600PRO (Secondary)
-	4171  RV350 AQ [Radeon 9600] (Secondary)
-		1043 c005  A9600SE (Secondary)
-	4172  RV350 AR [Radeon 9600] (Secondary)
-		1002 0003  Radeon 9600XT (Secondary)
-		1002 4773  All-in-Wonder 9600 XT (Secondary)
-		1043 c003  A9600XT (Secondary)
-		1043 c01b  A9600XT/TD (Secondary)
-		174b 7c28  Sapphire Radeon 9600XT (Secondary)
-		1787 4003  Radeon 9600 XT (Secondary)
-	4173  RV350 AS [Radeon 9550] (Secondary)
-		1043 010d  A9550GE/TD (Secondary)
-	4237  Radeon 7000 IGP
-	4242  R200 BB [Radeon All in Wonder 8500DV]
-		1002 02aa  Radeon 8500 AIW DV Edition
-	4243  R200 BC [Radeon All in Wonder 8500]
-	4336  Radeon Mobility U1
-		1002 4336  Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M)
-		103c 0024  Pavilion ze4400 builtin Video
-		161f 2029  eMachines M5312 builtin Video
-	4337  Radeon IGP 330M/340M/350M
-		1014 053a  ThinkPad R40e
-		103c 0850  Radeon IGP 345M
-	4341  IXP150 AC'97 Audio Controller
-	4342  IXP200 3COM 3C920B Ethernet Controller
-	4345  EHCI USB Controller
-	4347  OHCI USB Controller #1
-	4348  OHCI USB Controller #2
-	4349  Dual Channel Bus Master PCI IDE Controller
-	434d  IXP AC'97 Modem
-	4353  SMBus
-	4354  215CT [Mach64 CT]
-	4358  210888CX [Mach64 CX]
-	4361  IXP SB300 AC'97 Audio Controller
-	4363  SMBus
-	436e  436E Serial ATA Controller
-	4370  IXP SB400 AC'97 Audio Controller
-		1025 0079  Aspire 5024WLMMi
-		1025 0091  Aspire 5032WXMi
-		103c 308b  MX6125
-		105b 0c81  Realtek ALC 653
-		107b 0300  MX6421
-	4371  IXP SB400 PCI-PCI Bridge
-		103c 308b  MX6125
-		1462 7217  Aspire L250
-	4372  IXP SB400 SMBus Controller
-		1025 0080  Aspire 5024WLMMi
-		103c 308b  MX6125
-		1462 7217  Aspire L250
-	4373  IXP SB400 USB2 Host Controller
-		1025 0080  Aspire 5024WLMMi
-		103c 308b  MX6125
-		1462 7217  Aspire L250
-	4374  IXP SB400 USB Host Controller
-		103c 308b  MX6125
-		1462 7217  Aspire L250
-	4375  IXP SB400 USB Host Controller
-		1025 0080  Aspire 5024WLMMi
-		103c 308b  MX6125
-		1462 7217  Aspire L250
-	4376  IXP SB400 IDE Controller
-		1025 0080  Aspire 5024WLMMi
-		103c 308b  MX6125
-		1462 7217  Aspire L250
-	4377  IXP SB400 PCI-ISA Bridge
-		1025 0080  Aspire 5024WLMi
-		103c 308b  MX6125
-		1462 7217  Aspire L250
-	4378  SB400 AC'97 Modem Controller
-		1025 0080  Aspire 5024WLMMi
-		103c 308b  MX6125
-	4379  IXP SB400 Serial ATA Controller
-		1462 7141  Aspire L250
-	437a  IXP SB400 Serial ATA Controller
-		1002 4379  4379 Serial ATA Controller
-		1002 437a  437A Serial ATA Controller
-		1462 7141  Aspire L250
-		14f1 8800  Leadtek WinFast TV2000XP Expert
-	437b  IXP SB4x0 High Definition Audio Controller
-		1002 437b  IXP SB4x0 High Definition Audio Controller
-		10cf 1326  Fujitsu Lifebook A3040
-		1734 10b8  Realtek High Definition Audio
-	4380  SB600 Non-Raid-5 SATA
-		103c 2813  DC5750 Microtower
-		1462 7327  K9AG Neo2
-		17f2 5999  KI690-AM2 Motherboard
-	4381  SB600 Raid-5 SATA
-	4382  SB600 AC97 Audio
-	4383  SBx00 Azalia (Intel HDA)
-		0206 1028  Latitude D531
-		103c 280a  DC5750 Microtower
-		17f2 5000  KI690-AM2 Motherboard
-	4384  SBx00 PCI to PCI Bridge
-	4385  SBx00 SMBus Controller
-		103c 280a  DC5750 Microtower
-		1462 7368  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	4386  SB600 USB Controller (EHCI)
-		103c 280a  DC5750 Microtower
-		1462 7368  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	4387  SB600 USB (OHCI0)
-		103c 280a  DC5750 Microtower
-		1462 7368  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	4388  SB600 USB (OHCI1)
-		103c 280a  DC5750 Microtower
-		1462 7368  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	4389  SB600 USB (OHCI2)
-		103c 280a  DC5750 Microtower
-		1462 7368  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	438a  SB600 USB (OHCI3)
-		103c 280a  DC5750 Microtower
-		1462 7368  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	438b  SB600 USB (OHCI4)
-		103c 280a  DC5750 Microtower
-		1462 7368  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	438c  SB600 IDE
-		103c 280a  DC5750 Microtower
-		1462 7368  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	438d  SB600 PCI to LPC Bridge
-		103c 280a  DC5750 Microtower
-		1462 7368  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	438e  SB600 AC97 Modem
-	4390  SB700/SB800 SATA Controller [IDE mode]
-	4391  SB700/SB800 SATA Controller [AHCI mode]
-	4392  SB700/SB800 SATA Controller [Non-RAID5 mode]
-	4393  SB700/SB800 SATA Controller [RAID5 mode]
-	4394  SB700/SB800 SATA Controller [SATA and FC Enabled]
-	4395  SB800 SATA Controller [Storage mode with HyperFlash-PCIE]
-	4396  SB700/SB800 USB EHCI Controller
-	4397  SB700/SB800 USB OHCI0 Controller
-	4398  SB700 USB OHCI1 Controller
-	4399  SB700/SB800 USB OHCI2 Controller
-	439c  SB700/SB800 IDE Controller
-	439d  SB700/SB800 LPC host controller
-	4437  Radeon Mobility 7000 IGP
-	4554  210888ET [Mach64 ET]
-	4654  Mach64 VT
-	4742  3D Rage Pro AGP 1X/2X
-		1002 0040  Rage Pro Turbo AGP 2X
-		1002 0044  Rage Pro Turbo AGP 2X
-		1002 0061  Rage Pro AIW AGP 2X
-		1002 0062  Rage Pro AIW AGP 2X
-		1002 0063  Rage Pro AIW AGP 2X
-		1002 0080  Rage Pro Turbo AGP 2X
-		1002 0084  Rage Pro Turbo AGP 2X
-		1002 4742  Rage Pro Turbo AGP 2X
-		1002 8001  Rage Pro Turbo AGP 2X
-		1028 0082  Rage Pro Turbo AGP 2X
-		1028 4082  Optiplex GX1 Onboard Display Adapter
-		1028 8082  Rage Pro Turbo AGP 2X
-		1028 c082  Rage Pro Turbo AGP 2X
-		8086 4152  Xpert 98D AGP 2X
-		8086 464a  Rage Pro Turbo AGP 2X
-	4744  3D Rage Pro AGP 1X
-		1002 4744  Rage Pro Turbo AGP
-	4747  3D Rage Pro
-	4749  3D Rage Pro
-		1002 0061  Rage Pro AIW
-		1002 0062  Rage Pro AIW
-	474c  Rage XC
-	474d  Rage XL AGP 2X
-		1002 0004  Xpert 98 RXL AGP 2X
-		1002 0008  Xpert 98 RXL AGP 2X
-		1002 0080  Rage XL AGP 2X
-		1002 0084  Xpert 98 AGP 2X
-		1002 474d  Rage XL AGP
-		1033 806a  Rage XL AGP
-	474e  Rage XC AGP
-		1002 474e  Rage XC AGP
-	474f  Rage XL
-		1002 0008  Rage XL
-		1002 474f  Rage XL
-	4750  3D Rage Pro 215GP
-		1002 0040  Rage Pro Turbo
-		1002 0044  Rage Pro Turbo
-		1002 0080  Rage Pro Turbo
-		1002 0084  Rage Pro Turbo
-		1002 4750  Rage Pro Turbo
-	4751  3D Rage Pro 215GQ
-	4752  Rage XL
-		0e11 001e  Proliant Rage XL
-		1002 0008  Rage XL
-		1002 4752  Proliant Rage XL
-		1002 8008  Rage XL
-		1028 00ce  PowerEdge 1400
-		1028 00d1  PowerEdge 2550
-		1028 00d9  PowerEdge 2500
-		1028 0134  PowerEdge 600SC
-		1028 014a  PowerEdge 1750
-		1028 0165  PowerEdge 750
-		103c 10e1  NetServer Rage XL
-		107b 6400  6400 Server
-		1734 007a  PRIMERGY RX/TX series onboard VGA
-		8086 3411  SDS2 Mainboard
-		8086 3427  S875WP1-E mainboard
-		8086 5744  S845WD1-E mainboard
-	4753  Rage XC
-		1002 4753  Rage XC
-	4754  3D Rage I/II 215GT [Mach64 GT]
-	4755  3D Rage II+ 215GTB [Mach64 GTB]
-	4756  3D Rage IIC 215IIC [Mach64 GT IIC]
-		1002 4756  Rage IIC
-	4757  3D Rage IIC AGP
-		1002 4757  Rage IIC AGP
-		1028 0089  Rage 3D IIC
-		1028 008e  PowerEdge 1300 onboard video
-		1028 4082  Rage 3D IIC
-		1028 8082  Rage 3D IIC
-		1028 c082  Rage 3D IIC
-	4758  210888GX [Mach64 GX]
-	4759  3D Rage IIC
-	475a  3D Rage IIC AGP
-		1002 0084  Rage 3D Pro AGP 2x XPERT 98
-		1002 0087  Rage 3D IIC
-		1002 475a  Rage IIC AGP
-	4964  Radeon RV250 Id [Radeon 9000]
-	4965  Radeon RV250 Ie [Radeon 9000]
-	4966  Radeon RV250 If [Radeon 9000]
-		10f1 0002  RV250 If [Tachyon G9000 PRO]
-		148c 2039  RV250 If [Radeon 9000 Pro "Evil Commando"]
-		1509 9a00  RV250 If [Radeon 9000 "AT009"]
-		1681 0040  RV250 If [3D prophet 9000]
-		174b 7176  RV250 If [Sapphire Radeon 9000 Pro]
-		174b 7192  RV250 If [Radeon 9000 "Atlantis"]
-		17af 2005  RV250 If [Excalibur Radeon 9000 Pro]
-		17af 2006  RV250 If [Excalibur Radeon 9000]
-	4967  Radeon RV250 Ig [Radeon 9000]
-	496e  Radeon RV250 [Radeon 9000] (Secondary)
-	4a48  R420 JH [Radeon X800]
-	4a49  R420 JI [Radeon X800PRO]
-	4a4a  R420 JJ [Radeon X800SE]
-	4a4b  R420 JK [Radeon X800]
-	4a4c  R420 JL [Radeon X800]
-	4a4d  R420 JM [FireGL X3]
-	4a4e  M18 JN [Radeon Mobility 9800]
-	4a4f  Radeon X800 SE (R420) (AGP)
-	4a50  R420 JP [Radeon X800XT]
-	4a54  R420 [Radeon X800 VE]
-	4a69  R420 [Radeon X800 PRO/GTO] (Secondary)
-	4a6a  R420 [Radeon X800] (Secondary)
-	4a6b  R420 [Radeon X800] (Secondary)
-	4a70  R420 [X800XT-PE] (Secondary)
-	4a74  R420 [Radeon X800 VE] (Secondary)
-	4b48  Radeon X850 Consumer (R481)
-	4b49  R480 [Radeon X850XT]
-	4b4a  Radeon X850 SE (R480) (AGP)
-	4b4b  R480 [Radeon X850Pro]
-	4b4c  R481 [Radeon X850XT-PE]
-	4b69  R480 [Radeon X850XT] (Secondary)
-	4b6b  R480 [Radeon X850Pro] (Secondary)
-	4b6c  R481 [Radeon X850XT-PE] (Secondary)
-	4c42  3D Rage LT Pro AGP-133
-		0e11 b0e7  Rage LT Pro (Compaq Presario 5240)
-		0e11 b0e8  Rage 3D LT Pro
-		0e11 b10e  3D Rage LT Pro (Compaq Armada 1750)
-		1002 0040  Rage LT Pro AGP 2X
-		1002 0044  Rage LT Pro AGP 2X
-		1002 4c42  Rage LT Pro AGP 2X
-		1002 8001  Rage LT Pro AGP 2X
-		1028 0085  Rage 3D LT Pro
-	4c44  3D Rage LT Pro AGP-66
-	4c45  Rage Mobility M3 AGP
-	4c46  Rage Mobility M3 AGP 2x
-		1002 0155  IBM Thinkpad A22p
-		1014 0155  IBM Thinkpad A22p
-		1028 00b1  Latitude C600
-	4c47  3D Rage LT-G 215LG
-	4c49  3D Rage LT Pro
-		1002 0004  Rage LT Pro
-		1002 0040  Rage LT Pro
-		1002 0044  Rage LT Pro
-		1002 4c49  Rage LT Pro
-	4c4d  Rage Mobility P/M AGP 2x
-		0e11 b111  Armada M700
-		0e11 b160  Armada E500
-		1002 0084  Xpert 98 AGP 2X (Mobility)
-		1014 0154  ThinkPad A20m/A21m
-		1028 00aa  Latitude CPt
-		1028 00bb  Latitude CPx
-		1179 ff00  Satellite 1715XCDS laptop
-		13bd 1019  PC-AR10
-	4c4e  Rage Mobility L AGP 2x
-	4c50  3D Rage LT Pro
-		1002 4c50  Rage LT Pro
-	4c51  3D Rage LT Pro
-	4c52  Rage Mobility P/M
-		1033 8112  Versa Note VXi
-	4c53  Rage Mobility L
-	4c54  264LT [Mach64 LT]
-	4c57  Radeon Mobility M7 LW [Radeon Mobility 7500]
-		1014 0517  ThinkPad T30
-		1014 0530  ThinkPad T42 2373-4WU
-		1028 00e6  Radeon Mobility M7 LW (Dell Inspiron 8100)
-		1028 012a  Latitude C640
-		1043 1622  Mobility Radeon M7 (L3C/S)
-		144d c006  Radeon Mobility M7 LW in vpr Matrix 170B4
-	4c58  Radeon RV200 LX [Mobility FireGL 7800 M7]
-	4c59  Radeon Mobility M6 LY
-		0e11 b111  Evo N600c
-		1014 0235  ThinkPad A30/A30p (2652/2653)
-		1014 0239  ThinkPad X22/X23/X24
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		104d 8140  PCG-Z1SP laptop
-		1509 1930  Medion MD9703
-	4c5a  Radeon Mobility M6 LZ
-	4c64  Radeon RV250 Ld [Radeon Mobility 9000 M9]
-	4c65  Radeon RV250 Le [Radeon Mobility 9000 M9]
-	4c66  Radeon RV250 [Mobility FireGL 9000]
-		01be 1028  Inspiron 600m
-		1014 054d  ThinkPad T41
-	4c67  Radeon RV250 Lg [Radeon Mobility 9000 M9]
-# Secondary chip to the Lf
-	4c6e  Radeon RV250 Ln [Radeon Mobility 9000 M9] (Secondary)
-	4d46  Rage Mobility M4 AGP
-	4d4c  Rage Mobility M4 AGP
-	4d52  Theater 550 PRO PCI [ATI TV Wonder 550]
-	4e44  Radeon R300 ND [Radeon 9700 Pro]
-		1002 515e  Radeon ES1000
-		1002 5965  Radeon ES1000
-	4e45  Radeon R300 NE [Radeon 9500 Pro]
-		1002 0002  Radeon R300 NE [Radeon 9500 Pro]
-		1681 0002  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro]
-	4e46  R300 NF [Radeon 9600 TX]
-	4e47  Radeon R300 NG [FireGL X1]
-	4e48  Radeon R350 [Radeon 9800 Pro]
-	4e49  Radeon R350 [Radeon 9800]
-	4e4a  R360 NJ [Radeon 9800 XT]
-		1002 4e4a  R360 [Radeon 9800 XT]
-	4e4b  R350 NK [FireGL X2]
-	4e50  RV350 [Mobility Radeon 9600 M10]
-		1025 005a  TravelMate 290
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		144d c00c  P35 notebook
-		1462 0311  MSI M510A
-		1734 1055  Amilo M1420W
-	4e51  M10 NQ [Radeon Mobility 9600]
-	4e52  RV350 [Mobility Radeon 9600 M10]
-		144d c00c  P35 notebook
-	4e53  M10 NS [Radeon Mobility 9600]
-	4e54  M10 NT [FireGL Mobility T2]
-	4e56  M11 NV [FireGL Mobility T2e]
-	4e64  Radeon R300 [Radeon 9700 Pro] (Secondary)
-	4e65  Radeon R300 [Radeon 9500 Pro] (Secondary)
-		1002 0003  Radeon R300 NE [Radeon 9500 Pro]
-		1681 0003  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary)
-	4e66  RV350 NF [Radeon 9600] (Secondary)
-	4e67  Radeon R300 [FireGL X1] (Secondary)
-	4e68  Radeon R350 [Radeon 9800 Pro] (Secondary)
-	4e69  Radeon R350 [Radeon 9800] (Secondary)
-	4e6a  RV350 NJ [Radeon 9800 XT] (Secondary)
-		1002 4e6a  R360 [Radeon 9800 XT] (Secondary)
-		1002 4e71  M10 NQ [Radeon Mobility 9600]
-	4e71  M10 NQ [Radeon Mobility 9600] (Secondary)
-	4f72  RV250 [Radeon 9000 Series]
-	4f73  Radeon RV250 [Radeon 9000 Series] (Secondary)
-	5041  Rage 128 PA/PRO
-	5042  Rage 128 PB/PRO AGP 2x
-	5043  Rage 128 PC/PRO AGP 4x
-	5044  Rage 128 PD/PRO TMDS
-		1002 0028  Rage 128 AIW
-		1002 0029  Rage 128 AIW
-	5045  Rage 128 PE/PRO AGP 2x TMDS
-	5046  Rage 128 PF/PRO AGP 4x TMDS
-		1002 0004  Rage Fury Pro
-		1002 0008  Rage Fury Pro/Xpert 2000 Pro
-		1002 0014  Rage Fury Pro
-		1002 0018  Rage Fury Pro/Xpert 2000 Pro
-		1002 0028  Rage 128 Pro AIW AGP
-		1002 002a  Rage 128 Pro AIW AGP
-		1002 0048  Rage Fury Pro
-		1002 2000  Rage Fury MAXX AGP 4x (TMDS) (VGA device)
-		1002 2001  Rage Fury MAXX AGP 4x (TMDS) (Extra device?!)
-	5047  Rage 128 PG/PRO
-	5048  Rage 128 PH/PRO AGP 2x
-	5049  Rage 128 PI/PRO AGP 4x
-	504a  Rage 128 PJ/PRO TMDS
-	504b  Rage 128 PK/PRO AGP 2x TMDS
-	504c  Rage 128 PL/PRO AGP 4x TMDS
-	504d  Rage 128 PM/PRO
-	504e  Rage 128 PN/PRO AGP 2x
-	504f  Rage 128 PO/PRO AGP 4x
-	5050  Rage 128 PP/PRO TMDS [Xpert 128]
-		1002 0008  Xpert 128
-	5051  Rage 128 PQ/PRO AGP 2x TMDS
-	5052  Rage 128 PR/PRO AGP 4x TMDS
-	5053  Rage 128 PS/PRO
-	5054  Rage 128 PT/PRO AGP 2x
-	5055  Rage 128 PU/PRO AGP 4x
-	5056  Rage 128 PV/PRO TMDS
-	5057  Rage 128 PW/PRO AGP 2x TMDS
-	5058  Rage 128 PX/PRO AGP 4x TMDS
-	5144  Radeon R100 QD [Radeon 7200]
-		1002 0008  Radeon 7000/Radeon VE
-		1002 0009  Radeon 7000/Radeon
-		1002 000a  Radeon 7000/Radeon
-		1002 001a  Radeon 7000/Radeon
-		1002 0029  Radeon AIW
-		1002 0038  Radeon 7000/Radeon
-		1002 0039  Radeon 7000/Radeon
-		1002 008a  Radeon 7000/Radeon
-		1002 00ba  Radeon 7000/Radeon
-		1002 0139  Radeon 7000/Radeon
-		1002 028a  Radeon 7000/Radeon
-		1002 02aa  Radeon AIW
-		1002 053a  Radeon 7000/Radeon
-	5145  Radeon R100 QE
-	5146  Radeon R100 QF
-	5147  Radeon R100 QG
-	5148  Radeon R200 QH [Radeon 8500]
-		1002 010a  FireGL 8800 64Mb
-		1002 0152  FireGL 8800 128Mb
-		1002 0162  FireGL 8700 32Mb
-		1002 0172  FireGL 8700 64Mb
-	5149  Radeon R200 QI
-	514a  Radeon R200 QJ
-	514b  Radeon R200 QK
-	514c  Radeon R200 QL [Radeon 8500 LE]
-		1002 003a  Radeon R200 QL [Radeon 8500 LE]
-		1002 013a  Radeon 8500
-		148c 2026  R200 QL [Radeon 8500 Evil Master II Multi Display Edition]
-		1681 0010  Radeon 8500 [3D Prophet 8500 128Mb]
-		174b 7149  Radeon R200 QL [Sapphire Radeon 8500 LE]
-	514d  Radeon R200 QM [Radeon 9100]
-	514e  Radeon R200 QN [Radeon 8500LE]
-	514f  Radeon R200 QO [Radeon 8500LE]
-	5154  R200 QT [Radeon 8500]
-	5155  R200 QU [Radeon 9100]
-	5157  Radeon RV200 QW [Radeon 7500]
-		1002 013a  Radeon 7500
-		1002 0f2b  ALL-IN-WONDER VE PCI
-		1002 103a  Dell Optiplex GX260
-		1458 4000  RV200 QW [RADEON 7500 PRO MAYA AR]
-		148c 2024  RV200 QW [Radeon 7500LE Dual Display]
-		148c 2025  RV200 QW [Radeon 7500 Evil Master Multi Display Edition]
-		148c 2036  RV200 QW [Radeon 7500 PCI Dual Display]
-		174b 7146  RV200 QW [Radeon 7500 LE]
-		174b 7147  RV200 QW [Sapphire Radeon 7500LE]
-		174b 7161  Radeon RV200 QW [Radeon 7500 LE]
-		17af 0202  RV200 QW [Excalibur Radeon 7500LE]
-	5158  Radeon RV200 QX [Radeon 7500]
-	5159  Radeon RV100 QY [Radeon 7000/VE]
-		1002 000a  Radeon 7000/Radeon VE
-		1002 000b  Radeon 7000
-		1002 0038  Radeon 7000/Radeon VE
-		1002 003a  Radeon 7000/Radeon VE
-		1002 00ba  Radeon 7000/Radeon VE
-		1002 013a  Radeon 7000/Radeon VE
-		1002 0908  XVR-100 (supplied by Sun)
-# The IBM card doubles as an ATI PCI video adapter
-		1014 029a  Remote Supervisor Adapter II (RSA2)
-		1014 02c8  eServer xSeries server mainboard
-		1028 016c  PowerEdge 1850
-		1028 016d  PowerEdge 2850 Embedded Radeon 7000-M
-		1028 019a  PowerEdge SC1425
-		103c 1292  Radeon 7000
-		1043 c00a  A7000/T/64M
-		1458 4002  RV100 QY [RADEON 7000 PRO MAYA AV Series]
-		148c 2003  RV100 QY [Radeon 7000 Multi-Display Edition]
-		148c 2023  RV100 QY [Radeon 7000 Evil Master Multi-Display]
-		174b 0280  Radeon RV100 QY [Radeon 7000/VE]
-		174b 7112  RV100 QY [Sapphire Radeon VE 7000]
-		174b 7c28  Sapphire Radeon VE 7000 DDR
-		1787 0202  RV100 QY [Excalibur Radeon 7000]
-		17ee 1001  Radeon 7000 64MB DDR + DVI
-	515a  Radeon RV100 QZ [Radeon 7000/VE]
-	515e  ES1000
-		1028 01df  PowerEdge SC440
-		1028 01e6  PowerEdge 860
-		1028 020f  PowerEdge R300 Embedded ATI ES1000
-		1028 0210  PowerEdge T300 Embedded ATI ES1000
-		1028 0225  PowerEdge T105 Embedded ATI ES1000
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  S5000PSLSATA Server Board
-	515f  ES1000
-	5168  Radeon R200 Qh
-	5169  Radeon R200 Qi
-	516a  Radeon R200 Qj
-	516b  Radeon R200 Qk
-# This one is not in ATI documentation, but is in XFree86 source code
-	516c  Radeon R200 Ql
-	5245  Rage 128 RE/SG
-		1002 0008  Xpert 128
-		1002 0028  Rage 128 AIW
-		1002 0029  Rage 128 AIW
-		1002 0068  Rage 128 AIW
-	5246  Rage 128 RF/SG AGP
-		1002 0004  Magnum/Xpert 128/Xpert 99
-		1002 0008  Magnum/Xpert128/X99/Xpert2000
-		1002 0028  Rage 128 AIW AGP
-		1002 0044  Rage Fury/Xpert 128/Xpert 2000
-		1002 0068  Rage 128 AIW AGP
-		1002 0448  Rage Fury
-	5247  Rage 128 RG
-	524b  Rage 128 RK/VR
-	524c  Rage 128 RL/VR AGP
-		1002 0008  Xpert 99/Xpert 2000
-		1002 0088  Xpert 99
-	5345  Rage 128 SE/4x
-	5346  Rage 128 SF/4x AGP 2x
-		1002 0048  RAGE 128 16MB VGA TVOUT AMC PAL
-	5347  Rage 128 SG/4x AGP 4x
-	5348  Rage 128 SH
-	534b  Rage 128 SK/4x
-	534c  Rage 128 SL/4x AGP 2x
-	534d  Rage 128 SM/4x AGP 4x
-		1002 0008  Xpert 99/Xpert 2000
-		1002 0018  Xpert 2000
-	534e  Rage 128 4x
-	5354  Mach 64 VT
-		1002 5654  Mach 64 reference
-	5446  Rage 128 Pro Ultra TF
-		1002 0004  Rage Fury Pro
-		1002 0008  Rage Fury Pro/Xpert 2000 Pro
-		1002 0018  Rage Fury Pro/Xpert 2000 Pro
-		1002 0028  Rage 128 AIW Pro AGP
-		1002 0029  Rage 128 AIW
-		1002 002a  Rage 128 AIW Pro AGP
-		1002 002b  Rage 128 AIW
-		1002 0048  Xpert 2000 Pro
-	544c  Rage 128 Pro Ultra TL
-	5452  Rage 128 Pro Ultra TR
-		1002 001c  Rage 128 Pro 4XL
-		103c 1279  Rage 128 Pro 4XL
-	5453  Rage 128 Pro Ultra TS
-	5454  Rage 128 Pro Ultra TT
-	5455  Rage 128 Pro Ultra TU
-	5460  M22 [Mobility Radeon X300]
-		1775 1100  CR11/VR11 Single Board Computer
-	5461  M22 [Mobility Radeon X300]
-	5462  M24 [Radeon Mobility X600]
-	5464  M22 [FireGL GL]
-	5548  R423 UH [Radeon X800 (PCIE)]
-	5549  R423 UI [Radeon X800PRO (PCIE)]
-	554a  R423 UJ [Radeon X800LE (PCIE)]
-	554b  R423 UK [Radeon X800SE (PCIE)]
-	554c  Radeon X800 XTP (R430) (PCIE)
-	554d  R430 [Radeon X800 XL] (PCIe)
-	554e  Radeon X800 SE (R430) (PCIE)
-	554f  R430 [Radeon X800 (PCIE)]
-	5550  R423 [FireGL V7100]
-	5551  R423 [FireGL V5100 (PCIE)]
-	5552  R423 UR [FireGL V5100 (PCIE)]
-	5554  R423 UT [FireGL V7100 (PCIE)]
-	5555  R430 GL PRO
-	5569  R423 UI [Radeon X800PRO (PCIE)] (Secondary)
-	556b  Radeon R423 UK (PCIE) [X800 SE] (Secondary)
-	556d  R430 [Radeon X800 XL] (PCIe) (Secondary)
-	556f  R430 [Radeon X800] (PCIE) (Secondary)
-	5571  R423GL-SE [FireGL V5100 (PCIE)] (Secondary)
-	564a  M26 [Mobility FireGL V5000]
-	564b  M26 [Mobility FireGL V5000]
-	564f  M26 [Radeon Mobility X700 XL (PCIE)]
-	5652  M26 [Radeon Mobility X700]
-	5653  Radeon Mobility X700 (PCIE)
-		1025 0080  Aspire 5024WLMi
-		103c 0940  HP Compaq NW8240 Mobile Workstation
-	5654  264VT [Mach64 VT]
-		1002 5654  Mach64VT Reference
-	5655  264VT3 [Mach64 VT3]
-	5656  264VT4 [Mach64 VT4]
-	5657  Radeon X550/X700 Series (RV410)
-	5830  RS300 Host Bridge
-	5831  RS300 Host Bridge
-	5832  RS300 Host Bridge
-	5833  Radeon 9100 IGP Host Bridge
-	5834  Radeon 9100 IGP
-	5835  RS300M AGP [Radeon Mobility 9100IGP]
-	5838  Radeon 9100 IGP AGP Bridge
-	5854  Radeon Xpress Series (RS480)
-	5874  Radeon Xpress Series (RS482)
-	5940  RV280 [Radeon 9200 PRO] (Secondary)
-		17af 2021  Excalibur Radeon 9250 (Secondary)
-	5941  RV280 [Radeon 9200] (Secondary)
-		1458 4019  Gigabyte Radeon 9200
-		174b 7c12  Sapphire Radeon 9200
-		17af 200d  Excalibur Radeon 9200
-		18bc 0050  GeXcube GC-R9200-C3 (Secondary)
-	5944  RV280 [Radeon 9200 SE (PCI)]
-	5950  RS480 Host Bridge
-		1025 0080  Aspire 5024WLMMi
-		103c 280a  DC5750 Microtower
-		103c 308b  MX6125
-		1462 7217  Aspire L250
-	5951  Radeon Xpress 200 (RS480/RS482/RX480/RX482) Chipset - Host bridge
-	5952  RD580 [CrossFire Xpress 3200] Chipset Host Bridge
-	5954  RS480 [Radeon Xpress 200G Series]
-		1002 5954  RV370 [Radeon Xpress 200G Series]
-	5955  Radeon XPRESS 200M 5955 (PCIE)
-		1002 5955  RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)]
-		103c 308b  MX6125
-	5956  RD790 Northbridge only dual slot PCI-e_GFX and HT3 K8 part
-	5957  RX780/RX790 Chipset Host Bridge
-	5958  RD780 Northbridge only dual slot PCI-e_GFX and HT1 K8 part
-	5960  RV280 [Radeon 9200 PRO]
-		17af 2020  Excalibur Radeon 9250
-	5961  RV280 [Radeon 9200]
-		1002 2f72  All-in-Wonder 9200 Series
-		1019 4c30  Radeon 9200 VIVO
-		12ab 5961  YUAN SMARTVGA Radeon 9200
-		1458 4018  Gigabyte Radeon 9200
-		174b 7c13  Sapphire Radeon 9200
-		17af 200c  Excalibur Radeon 9200
-		18bc 0050  Radeon 9200 Game Buster
-		18bc 0051  GeXcube GC-R9200-C3
-		18bc 0053  Radeon 9200 Game Buster VIVO
-	5962  RV280 [Radeon 9200]
-	5964  RV280 [Radeon 9200 SE]
-		1002 5964  Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz
-		1043 c006  ASUS Radeon 9200 SE / TD / 128M
-		1458 4018  Radeon 9200 SE
-		1458 4032  Radeon 9200 SE 128MB
-		147b 6191  R9200SE-DT
-		148c 2073  CN-AG92E
-		174b 7c13  Sapphire Radeon 9200 SE
-		1787 5964  Excalibur 9200SE VIVO 128M
-		17af 2012  Radeon 9200 SE Excalibur
-		18bc 0170  Sapphire Radeon 9200 SE 128MB Game Buster
-		18bc 0173  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]
-	5965  RV280 [FireMV 2200 PCI]
-	5969  ES1000
-	5974  RS482 [Radeon Xpress 200]
-		103c 280a  DC5750 Microtower
-		1462 7141  Aspire L250
-	5975  RS482 [Radeon Xpress 200M]
-	5978  RD790 PCI to PCI bridge (external gfx0 port A)
-	5979  RD790 PCI to PCI bridge (external gfx0 port B)
-	597a  RD790 PCI to PCI bridge (PCI express gpp port A)
-	597b  RD790 PCI to PCI bridge (PCI express gpp port B)
-	597c  RD790 PCI to PCI bridge (PCI express gpp port C)
-	597d  RD790 PCI to PCI bridge (PCI express gpp port D)
-	597e  RD790 PCI to PCI bridge (PCI express gpp port E)
-	597f  RD790 PCI to PCI bridge (PCI express gpp port F)
-	5980  RD790 PCI to PCI bridge (external gfx1 port A)
-	5981  RD790 PCI to PCI bridge (external gfx1 port B)
-	5982  RD790 PCI to PCI bridge (NB-SB link)
-	5a10  RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part
-	5a11  RD890 Northbridge only single slot PCI-e GFX Hydra part
-	5a12  RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part
-	5a13  RD890 PCI to PCI bridge (external gfx0 port A)
-	5a14  RD890 PCI to PCI bridge (external gfx0 port B)
-	5a15  RD890 PCI to PCI bridge (PCI express gpp port A)
-	5a16  RD890 PCI to PCI bridge (PCI express gpp port B)
-	5a17  RD890 PCI to PCI bridge (PCI express gpp port C)
-	5a18  RD890 PCI to PCI bridge (PCI express gpp port D)
-	5a19  RD890 PCI to PCI bridge (PCI express gpp port E)
-	5a1a  RD890 PCI to PCI bridge (PCI express gpp port F)
-	5a1b  RD890 PCI to PCI bridge (PCI express gpp port G)
-	5a1c  RD890 PCI to PCI bridge (PCI express gpp port H)
-	5a1d  RD890 PCI to PCI bridge (external gfx1 port A)
-	5a1e  RD890 PCI to PCI bridge (external gfx1 port B)
-	5a1f  RD890 PCI to PCI bridge (NB-SB link)
-	5a33  Radeon Xpress 200 Host Bridge
-	5a34  RS480 PCI-X Root Port
-# Comes in pair with 5a3f
-	5a36  RS480 PCI Bridge
-	5a37  RS480 PCI Bridge
-	5a38  RS480 PCI Bridge
-# Comes in pair with 5a38
-	5a39  RS480 PCI Bridge
-	5a3f  RS480 PCI Bridge
-		1462 7217  Aspire L250
-	5a41  RS400 [Radeon Xpress 200]
-	5a42  RS400 [Radeon Xpress 200M]
-	5a43  Radeon Xpress Series (RS400)
-	5a61  RC410 [Radeon Xpress 200]
-	5a62  RC410 [Radeon Xpress 200M]
-	5a63  Radeon Xpress Series (RC410)
-	5b60  RV370 5B60 [Radeon X300 (PCIE)]
-		1043 002a  Extreme AX300SE-X
-		1043 032e  Extreme AX300/TD
-		1458 2102  GV-RX30S128D (X300SE)
-		1462 0400  RX300SE-TD128E (MS-8940 REV:200)
-		1462 0402  RX300SE-TD128E (MS-8940)
-		174b 0500  Radeon X300 (PCIE)
-		196d 1086  X300SE HM
-	5b62  RV380 [Radeon X600 (PCIE)]
-	5b63  RV370 [Sapphire X550 Silent]
-	5b64  RV370 5B64 [FireGL V3100 (PCIE)]
-	5b65  RV370 5B65 [FireGL D1100 (PCIE)]
-	5b66  RV370X
-	5b70  RV370 [Radeon X300SE]
-		1462 0403  RX300SE-TD128E (MS-8940) (secondary display)
-		174b 0501  Radeon X300SE
-		196d 1087  X300SE HM
-	5b72  RV380 [Radeon X600]
-	5b73  RV370 secondary [Sapphire X550 Silent]
-	5b74  RV370 5B64 [FireGL V3100 (PCIE)] (Secondary)
-	5c61  M9+ 5C61 [Radeon Mobility 9200 (AGP)]
-	5c63  M9+ 5C63 [Radeon Mobility 9200 (AGP)]
-		1002 5c63  Apple iBook G4 2004
-		144d c00c  P30 notebook
-	5d44  RV280 [Radeon 9200 SE] (Secondary)
-		1458 4019  Radeon 9200 SE (Secondary)
-		1458 4032  Radeon 9200 SE 128MB
-		147b 6190  R9200SE-DT (Secondary)
-		174b 7c12  Sapphire Radeon 9200 SE (Secondary)
-		1787 5965  Excalibur 9200SE VIVO 128M (Secondary)
-		17af 2013  Radeon 9200 SE Excalibur (Secondary)
-		18bc 0171  Radeon 9200 SE 128MB Game Buster (Secondary)
-		18bc 0172  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]
-	5d45  RV280 [FireMV 2200 PCI] (secondary)
-	5d48  M28 [Radeon Mobility X800XT]
-	5d49  M28 [Mobility FireGL V5100]
-	5d4a  Mobility Radeon X800
-	5d4c  Radeon X850 (PCIE)
-	5d4d  R480 [Radeon X850XT Platinum (PCIE)]
-	5d4e  Radeon X850 SE (R480) (PCIE)
-	5d4f  R480 [Radeon X800 GTO (PCIE)]
-	5d50  FireGL V7200 (R480) (PCIE)
-	5d51  R480 GL 12P
-	5d52  R480 [Radeon X850XT (PCIE)] (Primary)
-		1002 0b12  PowerColor X850XT PCIe (Primary)
-		1002 0b13  PowerColor X850XT PCIe (Secondary)
-	5d57  R423 5F57 [Radeon X800XT (PCIE)]
-	5d6d  R480 [Radeon X850XT Platinum (PCIE)] (Secondary)
-	5d6f  R480 [Radeon X800 GTO (PCIE)] (Secondary)
-	5d72  R480 [Radeon X850XT (PCIE)] (Secondary)
-	5d77  R423 5F57 [Radeon X800XT (PCIE)] (Secondary)
-	5e48  RV410 [FireGL V5000]
-	5e49  RV410 [FireGL V3300]
-	5e4a  RV410 [Radeon X700XT]
-	5e4b  RV410 [Radeon X700 Pro (PCIE)]
-	5e4c  RV410 [Radeon X700SE]
-	5e4d  RV410 [Radeon X700 (PCIE)]
-		148c 2116  PowerColor Bravo X700
-	5e4f  RV410 [Radeon X700]
-	5e6b  RV410 [Radeon X700 Pro (PCIE)] (Secondary)
-	5e6d  RV410 [Radeon X700 (PCIE)] (Secondary)
-		148c 2117  PowerColor Bravo X700
-	5f57  R423 [Radeon X800XT (PCIE)]
-	700f  PCI Bridge [IGP 320M]
-	7010  PCI Bridge [IGP 340M]
-	7100  R520 [Radeon X1800]
-	7102  M58 [Radeon Mobility X1800]
-	7103  M58 [Mobility FireGL V7200]
-	7104  R520GL [FireGL V7200] (Primary)
-	7105  R520 [FireGL]
-	7106  M58 [Mobility FireGL V7100]
-	7108  M58 [Radeon Mobility X1800]
-	7109  R520 [Radeon X1800]
-		1002 0322  All-in-Wonder X1800XL
-		1002 0d02  Radeon X1800 CrossFire Edition
-	710a  R520 [Radeon X1800]
-	710b  R520 [Radeon X1800]
-	710c  R520 [Radeon X1800]
-	7120  R520 [Radeon X1800] (Secondary)
-	7124  R520GL [FireGL V7200] (Secondary)
-	7129  R520 [Radeon X1800] (Secondary)
-		1002 0323  All-in-Wonder X1800XL (Secondary)
-		1002 0d03  Radeon X1800 CrossFire Edition (Secondary)
-	7140  RV515 [Radeon X1600]
-	7142  RV515 PRO [Radeon X1300/X1550 Series]
-		1002 0322  All-in-Wonder 2006 PCI-E Edition
-		1043 0142  EAX1300PRO/TD/256M
-	7143  RV505 [Radeon X1550 Series]
-	7145  Radeon Mobility X1400
-		17aa 2006  Thinkpad T60 model 2007
-	7146  RV515 [Radeon X1300]
-		1002 0322  All-in-Wonder 2006 PCI-E Edition
-		1545 1996  Radeon X1300 512MB PCI-e
-	7147  RV505 [Radeon X1550 64-bit]
-	7149  M52 [Mobility Radeon X1300]
-	714a  M52 [Mobility Radeon X1300]
-	714b  M52 [Mobility Radeon X1300]
-	714c  M52 [Mobility Radeon X1300]
-	714d  RV515 [Radeon X1300]
-	714e  RV515LE [Radeon X1300]
-	7152  RV515GL [FireGL V3300] (Primary)
-	7153  RV515GL [FireGL V3350]
-	715e  RV515 [Radeon X1300]
-	715f  RV505 CE [Radeon X1550 64-bit]
-	7162  RV515 PRO [Radeon X1300/X1550 Series] (Secondary)
-		1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)
-	7163  RV505 [Radeon X1550 Series] (Secondary)
-	7166  RV515 [Radeon X1300] (Secondary)
-		1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)
-		1545 1997  Radeon X1300 512MB PCI-e (Secondary)
-	716e  RV515LE [Radeon X1300] Secondary
-	7172  RV515GL [FireGL V3300] (Secondary)
-	7173  RV515GL [FireGL V3350] (Secondary)
-	7180  RV516 [Radeon X1300/X1550 Series]
-	7181  RV516 XT Radeon X1600 Series (Primary)
-	7183  RV516 [Radeon X1300/X1550 Series]
-	7186  RV515 [Radeon Mobility X1450]
-	7187  RV516 [Radeon X1300/X1550 Series]
-	7188  M64-S [Mobility Radeon X2300]
-		103c 30c1  6910p
-	718a  Mobility Radeon X2300
-	718c  M62CSP64 [Mobility Radeon X1350]
-	718d  M64CSP128 [Mobility Radeon X1450]
-	7193  RV516 [Radeon X1550 Series]
-	7196  RV516 [Mobility Radeon X1350]
-	719b  FireMV 2250
-	719f  RV516LE [Radeon X1550 64-bit]
-	71a0  RV516 [Radeon X1300/X1550 Series] (Secondary)
-	71a1  RV516 XT Radeon X1600 Series (Secondary)
-	71a3  RV516 [Radeon X1300 Pro] (Secondary)
-	71a7  RV516 [Radeon X1300/X1550 Series] (Secondary)
-	71bb  FireMV 2250 (Secondary)
-	71c0  RV530 [Radeon X1600]
-	71c1  Radeon X1650 Pro
-	71c2  RV530 [Radeon X1600]
-	71c4  M56GL [Mobility FireGL V5200]
-		17aa 2007  ThinkPad T60p
-	71c5  M56P [Radeon Mobility X1600]
-		103c 30a3  Compaq NW8440
-		106b 0080  MacBook Pro
-	71c6  RV530LE [Radeon X1600/X1650 PRO]
-	71c7  RV535 [Radeon X1650 Series]
-	71ce  RV530LE [Radeon X1600]
-	71d4  M56GL [Mobility FireGL V5250]
-	71d5  M66-P [Mobility Radeon X1700]
-	71d6  M66-XT [Mobility Radeon X1700]
-	71de  RV530LE [Radeon X1600]
-	71e0  RV530 [Radeon X1600] (Secondary)
-	71e1  Radeon X1650 Pro (Secondary)
-	71e2  RV530 [Radeon X1600] (Secondary)
-	71e6  RV530LE [Radeon X1650 PRO] (Secondary)
-	71e7  RV535 [Radeon X1650 Series]
-	7210  M71 [Mobility Radeon X2100]
-	7211  M71 [Mobility Radeon X2100] (Secondary)
-	7240  R580 [Radeon X1900]
-	7241  R580 [Radeon X1900]
-	7242  R580 [Radeon X1900]
-	7243  R580 [Radeon X1900]
-	7244  R580 [Radeon X1900]
-	7245  R580 [Radeon X1900]
-	7246  R580 [Radeon X1900]
-	7247  R580 [Radeon X1900]
-	7248  R580 [Radeon X1900]
-	7249  R580 [Radeon X1900 XT] (Primary)
-	724a  R580 [Radeon X1900]
-	724b  R580 [Radeon X1900]
-		1002 0b12  Radeon X1900 (Primary)
-		1002 0b13  Radeon X1900 (Secondary)
-	724c  R580 [Radeon X1900]
-	724d  R580 [Radeon X1900]
-	724e  R580 [AMD Stream Processor]
-	7269  R580 [Radeon X1900 XT] (Secondary)
-	726b  R580 [Radeon X1900]
-	726e  R580 [AMD Stream Processor] (Secondary)
-	7280  RV570 [Radeon X1950 Pro]
-	7288  Radeon X1950 GT
-	7291  Radeon X1650 XT (Primary) (PCIE)
-	7293  Radeon X1650 Series
-	72a0  RV570 [Radeon X1950 Pro] (secondary)
-	72a8  Radeon X1950 GT (Secondary)
-	72b1  Radeon X1650 XT (Secondary) (PCIE)
-	72b3  Radeon X1650 Series (Secondary)
-	7833  Radeon 9100 IGP Host Bridge
-	7834  Radeon 9100 PRO IGP
-	7835  Radeon Mobility 9200 IGP
-	7838  Radeon 9100 IGP PCI/AGP Bridge
-	7910  RS690 Host Bridge
-		17f2 5000  KI690-AM2 Motherboard
-	7911  RS690 Host Bridge
-	7912  RS690 PCI to PCI Bridge (Internal gfx)
-	7913  RS690 PCI to PCI Bridge (PCI Express Graphics Port 0)
-	7915  RS690 PCI to PCI Bridge (PCI Express Port 1)
-	7916  RS690 PCI to PCI Bridge (PCI Express Port 2)
-	7917  RS690 PCI to PCI Bridge (PCI Express Port 3)
-		1002 7910  RS690 PCI to PCI Bridge
-	7919  Radeon X1200 Series Audio Controller
-		17f2 5000  KI690-AM2 Motherboard
-	791e  RS690 [Radeon X1200 Series]
-		1462 7327  K9AG Neo2
-		17f2 5000  KI690-AM2 Motherboard
-	791f  RS690M [Radeon X1200 Series]
-	7930  Radeon Xpress 7930 Host Bridge
-	7932  RS7932 PCI Bridge
-	7933  RS7933 PCI Bridge
-	7936  RS7936 PCI Bridge
-	793b  RS600 audio device [Radeon Xpress 12xx Series]
-	793f  RS600 [Radeon Xpress 1200 Series]
-	7941  RS600 [Radeon Xpress 1200 Series]
-	7942  Radeon Xpress 1250
-	796e  Radeon 2100
-	7c37  RV350 AQ [Radeon 9600 SE]
-	9400  R600 [Radeon HD 2900 Series]
-		1002 3000  Sapphire Radeon HD 2900 XT
-		1002 3142  HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe
-	940a  R600GL [Fire GL V8650]
-	940b  R600GL [Fire GL V8600]
-	9440  RV770 [Radeon HD 4870]
-	9442  RV770 [Radeon HD 4850]
-	9490  RV730XT [Radeon HD 4670]
-	94c1  RV610 [Radeon HD 2400 XT]
-		1028 0211  Optiplex 755
-		1028 0d02  Optiplex 755
-	94c3  RV610 video device [Radeon HD 2400 PRO]
-		1002 94c3  Radeon HD 2400PRO
-		174b e400  Sapphire HD 2400 PRO video device
-	94c4  RV610 LE AGP [Radeon HD 2400 PRO AGP]
-	94c8  Radeon HD 2400 XT
-	94c9  Mobility Radeon HD 2400
-		1002 94c9  Radeon HD2400
-	94cb  Radeon E2400
-	94cc  RV 610LE PCI [Radeon HD 2400]
-	9501  Radeon HD 3870
-	9504  Mobility Radeon HD 3850
-	9505  RV670PRO [Radeon HD 3850]
-	9507  RV670 [Radeon HD 3850]
-	9508  M88 XT Mobility Radeon HD 3870]
-	950f  R680 [Radeon HD 3870 x2]
-	9511  RV670 [FireGL 7700]
-	9515  RV670 AGP [Radeon HD 3850]
-	9519  RV670 [FireStream 9170]
-	9559  Mobility Radeon HD 3600 Series
-	9581  M76 [Radeon Mobility HD 2600 Series]
-	9586  RV 630 XT AGP [Radeon HD 2600 XT AGP]
-	9587  RV630 PRO AGP [Radeon HD 2600 PRO AGP]
-	9588  RV630 [Radeon HD 2600XT]
-		1458 216c  Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H)
-	9589  RV630 [Radeon HD 2600 Series]
-	958c  RV630GL [FireGL v5600]
-	9591  Mobility Radeon HD 3650
-		1002 9591  Mobility Radeon HD 3650
-	9593  Radeon Mobility HD 3670
-	9595  M86GL [Mobility FireGL V5700]
-	9596  RV635 PRO AGP [Radeon HD 3650]
-	9598  Mobility Radeon HD 3600 Series
-		1002 9598  Mobility Radeon HD 3600
-	95c0  Mobilitiy Radeon HD 3470
-		1002 95c0  Mobility Radeon HD 3470
-	95c4  Mobility Radeon HD 3400 Series
-		1002 95c4  Mobility Radeon HD 3400
-	95c5  Mobility Radeon HD 3450
-		1002 95c5  Mobility Radeon HD 3450
-	95c6  RV620 LE AGP [Radeon HD 3450]
-	960f  RS780 Azalia controller
-	9610  Radeon HD 3200 Graphics
-	9611  Radeon 3100 Graphics
-	9612  RS780M/RS780MN [Radeon HD 3200 Graphics]
-	9613  RS780MC [Radeon HD 3100 Graphics]
-	9614  Radeon HD 3300 Graphics
-	aa00  R600 Audio Device [Radeon HD 2900 Series]
-	aa08  RV630/M76 audio device [Radeon HD 2600 Series]
-	aa10  RV610 audio device [Radeon HD 2400 PRO]
-		174b aa10  Sapphire HD 2400 PRO audio device
-	aa18  Radeon HD 3870 Audio device
-	aa20  RV635 Audio device [Radeon HD 3600 Series]
-	aa28  RV620 Audio device [Radeon HD 34xx Series]
-	aa30  HD48x0 audio
-	cab0  AGP Bridge [IGP 320M]
-	cab2  RS200/RS200M AGP Bridge [IGP 340M]
-	cab3  R200 AGP Bridge [Mobility Radeon 7000 IGP]
-	cbb2  RS200/RS200M AGP Bridge [IGP 340M]
-1003  ULSI Systems
-	0201  US201
-1004  VLSI Technology Inc
-	0005  82C592-FC1
-	0006  82C593-FC1
-	0007  82C594-AFC2
-	0008  82C596/7 [Wildcat]
-	0009  82C597-AFC2
-	000c  82C541 [Lynx]
-	000d  82C543 [Lynx]
-	0101  82C532
-	0102  82C534 [Eagle]
-	0103  82C538
-	0104  82C535
-	0105  82C147
-	0200  82C975
-	0280  82C925
-	0304  QSound ThunderBird PCI Audio
-		1004 0304  QSound ThunderBird PCI Audio
-		122d 1206  DSP368 Audio
-		1483 5020  XWave Thunder 3D Audio
-	0305  QSound ThunderBird PCI Audio Gameport
-		1004 0305  QSound ThunderBird PCI Audio Gameport
-		122d 1207  DSP368 Audio Gameport
-		1483 5021  XWave Thunder 3D Audio Gameport
-	0306  QSound ThunderBird PCI Audio Support Registers
-		1004 0306  QSound ThunderBird PCI Audio Support Registers
-		122d 1208  DSP368 Audio Support Registers
-		1483 5022  XWave Thunder 3D Audio Support Registers
-	0307  Thunderbird
-	0308  Thunderbird
-	0702  VAS96011 [Golden Gate II]
-	0703  Tollgate
-1005  Avance Logic Inc. [ALI]
-	2064  ALG2032/2064
-	2128  ALG2364A
-	2301  ALG2301
-	2302  ALG2302
-	2364  ALG2364
-	2464  ALG2364A
-	2501  ALG2564A/25128A
-1006  Reply Group
-1007  NetFrame Systems Inc
-1008  Epson
-100a  Phoenix Technologies
-100b  National Semiconductor Corporation
-	0001  DP83810
-	0002  87415/87560 IDE
-	000e  87560 Legacy I/O
-	000f  FireWire Controller
-	0011  NS87560 National PCI System I/O
-	0012  USB Controller
-	0020  DP83815 (MacPhyter) Ethernet Controller
-		103c 0024  Pavilion ze4400 builtin Network
-		12d9 000c  Aculab E1/T1 PMXc cPCI carrier card
-		1385 f311  FA311 / FA312 (FA311 with WoL HW)
-	0021  PC87200 PCI to ISA Bridge
-	0022  DP83820 10/100/1000 Ethernet Controller
-	0028  Geode GX2 Host Bridge
-	002a  CS5535 South Bridge
-	002b  CS5535 ISA bridge
-	002d  CS5535 IDE
-	002e  CS5535 Audio
-	002f  CS5535 USB
-	0030  Geode GX2 Graphics Processor
-	0035  DP83065 [Saturn] 10/100/1000 Ethernet Controller
-	0500  SCx200 Bridge
-	0501  SCx200 SMI
-	0502  SCx200, SC1100 IDE controller
-		100b 0502  IDE Controller
-	0503  SCx200, SC1100 Audio Controller
-		100b 0503  XpressAudio controller
-	0504  SCx200 Video
-	0505  SCx200 XBus
-	0510  SC1100 Bridge
-		100b 0500  GPIO and LPC support bridge
-	0511  SC1100 SMI & ACPI
-		100b 0501  SC1100 SMI & ACPI bridge
-	0515  SC1100 XBus
-		100b 0505  SC1100 PCI to XBus bridge
-	d001  87410 IDE
-100c  Tseng Labs Inc
-	3202  ET4000/W32p rev A
-	3205  ET4000/W32p rev B
-	3206  ET4000/W32p rev C
-	3207  ET4000/W32p rev D
-	3208  ET6000
-	4702  ET6300
-100d  AST Research Inc
-100e  Weitek
-	9000  P9000 Viper
-	9001  P9000 Viper
-	9002  P9000 Viper
-	9100  P9100 Viper Pro/SE
-1010  Video Logic, Ltd.
-1011  Digital Equipment Corporation
-	0001  DECchip 21050
-	0002  DECchip 21040 [Tulip]
-	0004  DECchip 21030 [TGA]
-	0007  NVRAM [Zephyr NVRAM]
-	0008  KZPSA [KZPSA]
-	0009  DECchip 21140 [FasterNet]
-		1025 0310  21140 Fast Ethernet
-		10b8 2001  SMC9332BDT EtherPower 10/100
-		10b8 2002  SMC9332BVT EtherPower T4 10/100
-		10b8 2003  SMC9334BDT EtherPower 10/100 (1-port)
-		1109 2400  ANA-6944A/TX Fast Ethernet
-		1112 2300  RNS2300 Fast Ethernet
-		1112 2320  RNS2320 Fast Ethernet
-		1112 2340  RNS2340 Fast Ethernet
-		1113 1207  EN-1207-TX Fast Ethernet
-		1186 1100  DFE-500TX Fast Ethernet
-		1186 1112  DFE-570TX Fast Ethernet
-		1186 1140  DFE-660 Cardbus Ethernet 10/100
-		1186 1142  DFE-660 Cardbus Ethernet 10/100
-		11f6 0503  Freedomline Fast Ethernet
-		1282 9100  AEF-380TXD Fast Ethernet
-		1385 1100  FA310TX Fast Ethernet
-		2646 0001  KNE100TX Fast Ethernet
-	000a  21230 Video Codec
-	000d  PBXGB [TGA2]
-	000f  PCI-to-PDQ Interface Chip [PFI]
-		1011 def1  FDDI controller (DEFPA)
-		103c def1  FDDI controller (3X-DEFPA)
-	0014  DECchip 21041 [Tulip Pass 3]
-		1186 0100  DE-530+
-	0016  DGLPB [OPPO]
-	0017  PV-PCI Graphics Controller (ZLXp-L)
-	0018  Memory Channel interface
-	0019  DECchip 21142/43
-		1011 500a  DE500A Fast Ethernet
-		1011 500b  DE500B Fast Ethernet
-		1014 0001  10/100 EtherJet Cardbus
-		1025 0315  ALN315 Fast Ethernet
-		1033 800c  PC-9821-CS01 100BASE-TX Interface Card
-		1033 800d  PC-9821NR-B06 100BASE-TX Interface Card
-		103c 125a  10/100Base-TX (PCI) [A5506B]
-		108d 0016  Rapidfire 2327 10/100 Ethernet
-		108d 0017  GoCard 2250 Ethernet 10/100 Cardbus
-		10b8 2005  SMC8032DT Extreme Ethernet 10/100
-		10b8 8034  SMC8034 Extreme Ethernet 10/100
-		10ef 8169  Cardbus Fast Ethernet
-		1109 2a00  ANA-6911A/TX Fast Ethernet
-		1109 2b00  ANA-6911A/TXC Fast Ethernet
-		1109 3000  ANA-6922/TX Fast Ethernet
-		1113 1207  Cheetah Fast Ethernet
-		1113 2220  Cardbus Fast Ethernet
-		115d 0002  Cardbus Ethernet 10/100
-		1179 0203  Fast Ethernet
-		1179 0204  Cardbus Fast Ethernet
-		1186 1100  DFE-500TX Fast Ethernet
-		1186 1101  DFE-500TX Fast Ethernet
-		1186 1102  DFE-500TX Fast Ethernet
-		1186 1112  DFE-570TX Quad Fast Ethernet
-		1259 2800  AT-2800Tx Fast Ethernet
-		1266 0004  Eagle Fast EtherMAX
-		12af 0019  NetFlyer Cardbus Fast Ethernet
-		1374 0001  Cardbus Ethernet Card 10/100
-		1374 0002  Cardbus Ethernet Card 10/100
-		1374 0007  Cardbus Ethernet Card 10/100
-		1374 0008  Cardbus Ethernet Card 10/100
-		1385 2100  FA510
-		1395 0001  10/100 Ethernet CardBus PC Card
-		13d1 ab01  EtherFast 10/100 Cardbus (PCMPC200)
-		1498 000a  TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter
-		1498 000b  TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter
-		1498 000c  TPMC880-12 Single 10Base2 PMC Ethernet Adapter
-		14cb 0100  LNDL-100N 100Base-TX Ethernet PC Card
-		8086 0001  EtherExpress PRO/100 Mobile CardBus 32
-	001a  Farallon PN9000SX Gigabit Ethernet
-	0021  DECchip 21052
-	0022  DECchip 21150
-	0023  DECchip 21150
-	0024  DECchip 21152
-	0025  DECchip 21153
-	0026  DECchip 21154
-	0034  56k Modem Cardbus
-		1374 0003  56k Modem Cardbus
-	0045  DECchip 21553
-	0046  DECchip 21554
-		0e11 4050  Smart Array 4200 Controller
-		0e11 4051  Smart Array 4250ES Controller
-		0e11 4058  Smart Array 431 Controller
-		103c 10c2  NetRAID-4M
-		12d9 000a  IP Telephony card
-		4c53 1050  CT7 mainboard
-		4c53 1051  CE7 mainboard
-		9005 0364  5400S (Mustang)
-		9005 0365  5400S (Mustang)
-		9005 1364  Dell PowerEdge RAID Controller 2
-		9005 1365  Dell PowerEdge RAID Controller 2
-		e4bf 1000  CC8-1-BLUES
-	1065  StrongARM DC21285
-		1069 0020  DAC960P / DAC1164P
-1012  Micronics Computers Inc
-1013  Cirrus Logic
-	0038  GD 7548
-	0040  GD 7555 Flat Panel GUI Accelerator
-	004c  GD 7556 Video/Graphics LCD/CRT Ctrlr
-	00a0  GD 5430/40 [Alpine]
-	00a2  GD 5432 [Alpine]
-	00a4  GD 5434-4 [Alpine]
-	00a8  GD 5434-8 [Alpine]
-	00ac  GD 5436 [Alpine]
-	00b0  GD 5440
-	00b8  GD 5446
-	00bc  GD 5480
-		1013 00bc  CL-GD5480
-	00d0  GD 5462
-	00d2  GD 5462 [Laguna I]
-	00d4  GD 5464 [Laguna]
-	00d5  GD 5464 BD [Laguna]
-	00d6  GD 5465 [Laguna]
-		13ce 8031  Barco Metheus 2 Megapixel, Dual Head
-		13cf 8031  Barco Metheus 2 Megapixel, Dual Head
-	00e8  GD 5436U
-	1100  CL 6729
-	1110  PD 6832 PCMCIA/CardBus Ctrlr
-	1112  PD 6834 PCMCIA/CardBus Ctrlr
-	1113  PD 6833 PCMCIA/CardBus Ctrlr
-	1200  GD 7542 [Nordic]
-	1202  GD 7543 [Viking]
-	1204  GD 7541 [Nordic Light]
-	4000  MD 5620 [CLM Data Fax Voice]
-	4400  CD 4400
-	6001  CS 4610/11 [CrystalClear SoundFusion Audio Accelerator]
-		1014 1010  CS4610 SoundFusion Audio Accelerator
-	6003  CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator]
-		1013 4280  Crystal SoundFusion PCI Audio Accelerator
-		1014 0153  ThinkPad A20m
-		153b 112e  DMX XFire 1024
-		153b 1136  SiXPack 5.1+
-		1681 0050  Game Theater XP
-		1681 a010  Gamesurround Fortissimo II
-		1681 a011  Fortissimo III 7.1
-		5053 3357  Santa Cruz
-	6004  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
-	6005  Crystal CS4281 PCI Audio
-		1013 4281  Crystal CS4281 PCI Audio
-		10cf 10a8  Crystal CS4281 PCI Audio
-		10cf 10a9  Crystal CS4281 PCI Audio
-		10cf 10aa  Crystal CS4281 PCI Audio
-		10cf 10ab  Crystal CS4281 PCI Audio
-		10cf 10ac  Crystal CS4281 PCI Audio
-		10cf 10ad  Crystal CS4281 PCI Audio
-		10cf 10b4  Crystal CS4281 PCI Audio
-		1179 0001  Crystal CS4281 PCI Audio
-		14c0 000c  Crystal CS4281 PCI Audio
-1014  IBM
-	0002  PCI to MCA Bridge
-	0005  Processor to I/O Controller [Alta Lite]
-	0007  Processor to I/O Controller [Alta MP]
-	000a  PCI to ISA Bridge (IBM27-82376) [Fire Coral]
-	0017  CPU to PCI Bridge
-	0018  TR Auto LANstreamer
-	001b  GXT-150P
-	001c  Carrera
-	001d  SCSI-2 FAST PCI Adapter (82G2675)
-	0020  GXT1000 Graphics Adapter
-	0022  PCI to PCI Bridge (IBM27-82351)
-	002d  Processor to I/O Controller [Python]
-	002e  SCSI RAID Adapter [ServeRAID]
-		1014 002e  ServeRAID-3x
-		1014 022e  ServeRAID-4H
-	0031  2 Port Serial Adapter
-# AS400 iSeries PCI sync serial card
-		1014 0031  2721 WAN IOA - 2 Port Sync Serial Adapter
-	0036  PCI to 32-bit LocalBus Bridge [Miami]
-	0037  PowerPC to PCI Bridge (IBM27-82660)
-	003a  CPU to PCI Bridge
-	003c  GXT250P/GXT255P Graphics Adapter
-	003e  16/4 Token ring UTP/STP controller
-		1014 003e  Token-Ring Adapter
-		1014 00cd  Token-Ring Adapter + Wake-On-LAN
-		1014 00ce  16/4 Token-Ring Adapter 2
-		1014 00cf  16/4 Token-Ring Adapter Special
-		1014 00e4  High-Speed 100/16/4 Token-Ring Adapter
-		1014 00e5  16/4 Token-Ring Adapter 2 + Wake-On-LAN
-		1014 016d  iSeries 2744 Card
-	0045  SSA Adapter
-	0046  MPIC interrupt controller
-	0047  PCI to PCI Bridge
-	0048  PCI to PCI Bridge
-	0049  Warhead SCSI Controller
-	004e  ATM Controller (14104e00)
-	004f  ATM Controller (14104f00)
-	0050  ATM Controller (14105000)
-	0053  25 MBit ATM Controller
-	0054  GXT500P/GXT550P Graphics Adapter
-	0057  MPEG PCI Bridge
-	0058  SSA Adapter [Advanced SerialRAID/X]
-	005c  i82557B 10/100
-	005e  GXT800P Graphics Adapter
-	007c  ATM Controller (14107c00)
-	007d  3780IDSP [MWave]
-	008b  EADS PCI to PCI Bridge
-	008e  GXT3000P Graphics Adapter
-	0090  GXT 3000P
-		1014 008e  GXT-3000P
-	0091  SSA Adapter
-	0095  20H2999 PCI Docking Bridge
-	0096  Chukar chipset SCSI controller
-		1014 0097  iSeries 2778 DASD IOA
-		1014 0098  iSeries 2763 DASD IOA
-		1014 0099  iSeries 2748 DASD IOA
-	009f  PCI 4758 Cryptographic Accelerator
-	00a5  ATM Controller (1410a500)
-	00a6  ATM 155MBPS MM Controller (1410a600)
-	00b7  256-bit Graphics Rasterizer [FireGL1]
-		1092 00b8  FireGL1 AGP 32Mb
-	00b8  GXT2000P Graphics Adapter
-	00be  ATM 622MBPS Controller (1410be00)
-	00dc  Advanced Systems Management Adapter (ASMA)
-	00fc  CPC710 Dual Bridge and Memory Controller (PCI-64)
-	0104  Gigabit Ethernet-SX Adapter
-	0105  CPC710 Dual Bridge and Memory Controller (PCI-32)
-	010f  Remote Supervisor Adapter (RSA)
-	0142  Yotta Video Compositor Input
-		1014 0143  Yotta Input Controller (ytin)
-	0144  Yotta Video Compositor Output
-		1014 0145  Yotta Output Controller (ytout)
-	0156  405GP PLB to PCI Bridge
-	015e  622Mbps ATM PCI Adapter
-	0160  64bit/66MHz PCI ATM 155 MMF
-	016e  GXT4000P Graphics Adapter
-	0170  GXT6000P Graphics Adapter
-	017d  GXT300P Graphics Adapter
-	0180  Snipe chipset SCSI controller
-		1014 0241  iSeries 2757 DASD IOA
-		1014 0264  Quad Channel PCI-X U320 SCSI RAID Adapter (2780)
-	0188  EADS-X PCI-X to PCI-X Bridge
-	01a7  PCI-X to PCI-X Bridge
-	01bd  ServeRAID Controller
-		1014 01bd  ServeRAID 4Lx
-		1014 01be  ServeRAID-4M
-		1014 01bf  ServeRAID-4L
-		1014 0208  ServeRAID-4Mx
-		1014 020e  ServeRAID-4Lx
-		1014 022e  ServeRAID-4H
-		1014 0258  ServeRAID-5i
-		1014 0259  ServeRAID-5i
-	01c1  64bit/66MHz PCI ATM 155 UTP
-	01e6  Cryptographic Accelerator
-	01ef  PowerPC 440GP PCI Bridge
-		1734 102b  PCEAS PCI-X Dual Port ESCON Adapter
-		1734 10f8  PCEAT PCI-Express Dual Port ESCON Adapter
-	01ff  10/100 Mbps Ethernet
-	0219  Multiport Serial Adapter
-		1014 021a  Dual RVX
-		1014 0251  Internal Modem/RVX
-		1014 0252  Quad Internal Modem
-	021b  GXT6500P Graphics Adapter
-	021c  GXT4500P Graphics Adapter
-	0233  GXT135P Graphics Adapter
-	0266  PCI-X Dual Channel SCSI
-	0268  Gigabit Ethernet-SX Adapter (PCI-X)
-	0269  10/100/1000 Base-TX Ethernet Adapter (PCI-X)
-	028c  Citrine chipset SCSI controller
-		1014 028d  Dual Channel PCI-X DDR SAS RAID Adapter (572E)
-		1014 02be  Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B)
-		1014 02c0  Dual Channel PCI-X DDR U320 SCSI Adapter (571A)
-		1014 030d  PCI-X DDR Auxiliary Cache Adapter (575B)
-	02a1  Calgary PCI-X Host Bridge
-	02bd  Obsidian chipset SCSI controller
-		1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)
-		1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/571D)
-		1014 0338  PCI-X DDR Auxiliary Cache Adapter (575C)
-	0302  Winnipeg PCI-X Host Bridge
-	0308  CalIOC2 PCI-E Root Port
-	0314  ZISC 036 Neural accelerator card
-	032d  Axon - Cell Companion Chip
-		1014 03a1  PCIe PowerXCell 8i Cell Accelerator Board
-	0339  Obsidian-E PCI-E SCSI controller
-		1014 030a  PCIe 3Gb SAS RAID Adapter (574E)
-		1014 033a  PCIe 3Gb SAS Adapter (57B3)
-		1014 0360  PCI-E Auxiliary Cache Adapter (57B7)
-	3022  QLA3022 Network Adapter
-	4022  QLA3022 Network Adapter
-	ffff  MPIC-2 interrupt controller
-1015  LSI Logic Corp of Canada
-1016  ICL Personal Systems
-1017  SPEA Software AG
-	5343  SPEA 3D Accelerator
-1018  Unisys Systems
-1019  Elitegroup Computer Systems
-101a  AT&T GIS (NCR)
-	0005  100VG ethernet
-	0007  BYNET BIC4G/2C/2G
-		101a 0019  BYNET BIC2C
-		101a 001c  BYNET BIC2G
-		101a 001f  BYNET BIC4G
-	0009  PQS Memory Controller
-	000a  BYNET BPCI Adapter
-	000b  BYNET 4 Port BYA Switch (BYA4P)
-	000c  BYNET 4 Port BYA Switch (BYA4G)
-	0010  NCR AMC Memory Controller
-	1dc1  BYNET BIC2M/BIC4M/BYA4M
-		101a 0019  BIC2M
-		101a 001f  BIC4M
-		101a 0ece  BYA4M
-	1fa8  BYNET Multi-port BIC Adapter (XBIC Based)
-		101a 00c3  BYNET BIC2SE
-101b  Vitesse Semiconductor
-101c  Western Digital
-	0193  33C193A
-	0196  33C196A
-	0197  33C197A
-	0296  33C296A
-	3193  7193
-	3197  7197
-	3296  33C296A
-	4296  34C296
-	9710  Pipeline 9710
-	9712  Pipeline 9712
-	c24a  90C
-# ID for Newly Acquired Storage Products from Vitesse
-101d  Maxim Integrated Products
-101e  American Megatrends Inc.
-	0009  MegaRAID 428 Ultra RAID Controller (rev 03)
-	1960  MegaRAID
-		101e 0471  MegaRAID 471 Enterprise 1600 RAID Controller
-		101e 0475  MegaRAID 475 Express 500/500LC RAID Controller
-		101e 0477  MegaRAID 477 Elite 3100 RAID Controller
-		101e 0493  MegaRAID 493 Elite 1600 RAID Controller
-		101e 0494  MegaRAID 494 Elite 1650 RAID Controller
-		101e 0503  MegaRAID 503 Enterprise 1650 RAID Controller
-		101e 0511  MegaRAID 511 i4 IDE RAID Controller
-		101e 0522  MegaRAID 522 i4133 RAID Controller
-		1028 0471  PowerEdge RAID Controller 3/QC
-		1028 0475  PowerEdge RAID Controller 3/SC
-		1028 0493  PowerEdge RAID Controller 3/DC
-		1028 0511  PowerEdge Cost Effective RAID Controller ATA100/4Ch
-		103c 60e7  NetRAID-1M
-	9010  MegaRAID 428 Ultra RAID Controller
-	9030  EIDE Controller
-	9031  EIDE Controller
-	9032  EIDE & SCSI Controller
-	9033  SCSI Controller
-	9040  Multimedia card
-	9060  MegaRAID 434 Ultra GT RAID Controller
-	9063  MegaRAC
-		101e 0767  Dell Remote Assistant Card 2
-101f  PictureTel
-1020  Hitachi Computer Products
-1021  OKI Electric Industry Co. Ltd.
-1022  Advanced Micro Devices [AMD]
-	1100  K8 [Athlon64/Opteron] HyperTransport Technology Configuration
-	1101  K8 [Athlon64/Opteron] Address Map
-	1102  K8 [Athlon64/Opteron] DRAM Controller
-	1103  K8 [Athlon64/Opteron] Miscellaneous Control
-	1200  Family 10h [Opteron, Athlon64, Sempron] HyperTransport Configuration
-	1201  Family 10h [Opteron, Athlon64, Sempron] Address Map
-	1202  Family 10h [Opteron, Athlon64, Sempron] DRAM Controller
-	1203  Family 10h [Opteron, Athlon64, Sempron] Miscellaneous Control
-	1204  Family 10h [Opteron, Athlon64, Sempron] Link Control
-	1300  Family 11h HyperTransport Configuration
-	1301  Family 11h Address Map
-	1302  Family 11h DRAM Controller
-	1303  Family 11h Miscellaneous Control
-	1304  Family 11h Link Control
-	2000  79c970 [PCnet32 LANCE]
-		1014 2000  NetFinity 10/100 Fast Ethernet
-		1022 2000  PCnet - Fast 79C971
-		103c 104c  Ethernet with LAN remote power Adapter
-		103c 1064  Ethernet with LAN remote power Adapter
-		103c 1065  Ethernet with LAN remote power Adapter
-		103c 106c  Ethernet with LAN remote power Adapter
-		103c 106e  Ethernet with LAN remote power Adapter
-		103c 10ea  Ethernet with LAN remote power Adapter
-		1113 1220  EN1220 10/100 Fast Ethernet
-		1259 2450  AT-2450 10/100 Fast Ethernet
-		1259 2454  AT-2450v4 10Mb Ethernet Adapter
-		1259 2700  AT-2700TX 10/100 Fast Ethernet
-		1259 2701  AT-2700FX 100Mb Ethernet
-		1259 2702  AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet
-		1259 2703  AT-2701FX
-		1259 2704  AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet
-		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
-		4c53 1010  CP5/CR6 mainboard
-		4c53 1020  VR6 mainboard
-		4c53 1030  PC5 mainboard
-		4c53 1040  CL7 mainboard
-		4c53 1060  PC7 mainboard
-	2001  79c978 [HomePNA]
-		1092 0a78  Multimedia Home Network Adapter
-		1668 0299  ActionLink Home Network Adapter
-	2003  Am 1771 MBW [Alchemy]
-	2020  53c974 [PCscsi]
-	2040  79c974
-	2080  CS5536 [Geode companion] Host Bridge
-	2081  Geode LX Video
-	2082  Geode LX AES Security Block
-	208f  CS5536 GeodeLink PCI South Bridge
-	2090  CS5536 [Geode companion] ISA
-	2091  CS5536 [Geode companion] FLASH
-	2093  CS5536 [Geode companion] Audio
-	2094  CS5536 [Geode companion] OHC
-	2095  CS5536 [Geode companion] EHC
-	2096  CS5536 [Geode companion] UDC
-	2097  CS5536 [Geode companion] UOC
-	209a  CS5536 [Geode companion] IDE
-	3000  ELanSC520 Microcontroller
-	7006  AMD-751 [Irongate] System Controller
-	7007  AMD-751 [Irongate] AGP Bridge
-	700a  AMD-IGR4 AGP Host to PCI Bridge
-	700b  AMD-IGR4 PCI to PCI Bridge
-	700c  AMD-760 MP [IGD4-2P] System Controller
-	700d  AMD-760 MP [IGD4-2P] AGP Bridge
-	700e  AMD-760 [IGD4-1P] System Controller
-	700f  AMD-760 [IGD4-1P] AGP Bridge
-	7400  AMD-755 [Cobra] ISA
-	7401  AMD-755 [Cobra] IDE
-	7403  AMD-755 [Cobra] ACPI
-	7404  AMD-755 [Cobra] USB
-	7408  AMD-756 [Viper] ISA
-	7409  AMD-756 [Viper] IDE
-	740b  AMD-756 [Viper] ACPI
-	740c  AMD-756 [Viper] USB
-	7410  AMD-766 [ViperPlus] ISA
-	7411  AMD-766 [ViperPlus] IDE
-	7413  AMD-766 [ViperPlus] ACPI
-	7414  AMD-766 [ViperPlus] USB
-	7440  AMD-768 [Opus] ISA
-		1043 8044  A7M-D Mainboard
-	7441  AMD-768 [Opus] IDE
-	7443  AMD-768 [Opus] ACPI
-		1043 8044  A7M-D Mainboard
-	7445  AMD-768 [Opus] Audio
-	7446  AMD-768 [Opus] MC97 Modem (Smart Link HAMR5600 compatible)
-	7448  AMD-768 [Opus] PCI
-	7449  AMD-768 [Opus] USB
-	7450  AMD-8131 PCI-X Bridge
-	7451  AMD-8131 PCI-X IOAPIC
-	7454  AMD-8151 System Controller
-	7455  AMD-8151 AGP Bridge
-	7458  AMD-8132 PCI-X Bridge
-	7459  AMD-8132 PCI-X IOAPIC
-	7460  AMD-8111 PCI
-		161f 3017  HDAMB
-	7461  AMD-8111 USB
-	7462  AMD-8111 Ethernet
-	7464  AMD-8111 USB
-		161f 3017  HDAMB
-	7468  AMD-8111 LPC
-		161f 3017  HDAMB
-	7469  AMD-8111 IDE
-		1022 2b80  AMD-8111 IDE [Quartet]
-		161f 3017  HDAMB
-	746a  AMD-8111 SMBus 2.0
-	746b  AMD-8111 ACPI
-		161f 3017  HDAMB
-	746d  AMD-8111 AC97 Audio
-		161f 3017  HDAMB
-	746e  AMD-8111 MC97 Modem
-	756b  AMD-8111 ACPI
-	9600  RS780 Host Bridge
-	9601  RS780 Host Bridge Alternate
-	9602  RS780 PCI to PCI bridge (int gfx)
-	9603  RS780 PCI to PCI bridge (ext gfx port 0)
-	9604  RS780 PCI to PCI bridge (PCIE port 0)
-	9605  RS780 PCI to PCI bridge (PCIE port 1)
-	9606  RS780 PCI to PCI bridge (PCIE port 2)
-	9607  RS780 PCI to PCI bridge (PCIE port 3)
-	9608  RS780 PCI to PCI bridge (PCIE port 4)
-	9609  RS780 PCI to PCI bridge (PCIE port 5)
-	960a  RS780 PCI to PCI bridge (NB-SB link)
-	960b  RS780 PCI to PCI bridge (ext gfx port 1)
-1023  Trident Microsystems
-	0194  82C194
-	2000  4DWave DX
-	2001  4DWave NX
-		122d 1400  Trident PCI288-Q3DII (NX)
-	2100  CyberBlade XP4m32
-	2200  XGI Volari XP5
-	8400  CyberBlade/i7
-		1023 8400  CyberBlade i7 AGP
-	8420  CyberBlade/i7d
-		0e11 b15a  CyberBlade i7 AGP
-	8500  CyberBlade/i1
-	8520  CyberBlade i1
-		0e11 b16e  CyberBlade i1 AGP
-		1023 8520  CyberBlade i1 AGP
-	8620  CyberBlade/i1
-		1014 0502  ThinkPad R30/T30
-		1014 1025  Travelmate 352TE
-	8820  CyberBlade XPAi1
-	9320  TGUI 9320
-	9350  GUI Accelerator
-	9360  Flat panel GUI Accelerator
-	9382  Cyber 9382 [Reference design]
-	9383  Cyber 9383 [Reference design]
-	9385  Cyber 9385 [Reference design]
-	9386  Cyber 9386
-	9388  Cyber 9388
-	9397  Cyber 9397
-	939a  Cyber 9397DVD
-	9420  TGUI 9420
-	9430  TGUI 9430
-	9440  TGUI 9440
-	9460  TGUI 9460
-	9470  TGUI 9470
-	9520  Cyber 9520
-	9525  Cyber 9525
-	9540  Cyber 9540
-	9660  TGUI 9660/938x/968x
-	9680  TGUI 9680
-	9682  TGUI 9682
-	9683  TGUI 9683
-	9685  ProVIDIA 9685
-	9750  3DImage 9750
-		1014 9750  3DImage 9750
-		1023 9750  3DImage 9750
-	9753  TGUI 9753
-	9754  TGUI 9754
-	9759  TGUI 975
-	9783  TGUI 9783
-	9785  TGUI 9785
-	9850  3DImage 9850
-	9880  Blade 3D PCI/AGP
-		1023 9880  Blade 3D
-	9910  CyberBlade/XP
-	9930  CyberBlade/XPm
-	9960  CyberBlade XP2
-1024  Zenith Data Systems
-1025  Acer Incorporated [ALI]
-	1435  M1435
-	1445  M1445
-	1449  M1449
-	1451  M1451
-	1461  M1461
-	1489  M1489
-	1511  M1511
-	1512  ALI M1512 Aladdin
-	1513  M1513
-	1521  ALI M1521 Aladdin III CPU Bridge
-		10b9 1521  ALI M1521 Aladdin III CPU Bridge
-	1523  ALI M1523 ISA Bridge
-		10b9 1523  ALI M1523 ISA Bridge
-	1531  M1531 Northbridge [Aladdin IV/IV+]
-	1533  M1533 PCI-to-ISA Bridge
-		10b9 1533  ALI M1533 Aladdin IV/V ISA South Bridge
-	1535  M1535 PCI Bridge + Super I/O + FIR
-	1541  M1541 Northbridge [Aladdin V]
-		10b9 1541  ALI M1541 Aladdin V/V+ AGP+PCI North Bridge
-	1542  M1542 Northbridge [Aladdin V]
-	1543  M1543 PCI-to-ISA Bridge + Super I/O + FIR
-	1561  M1561 Northbridge [Aladdin 7]
-	1621  M1621 Northbridge [Aladdin-Pro II]
-	1631  M1631 Northbridge+3D Graphics [Aladdin TNT2]
-	1641  M1641 Northbridge [Aladdin-Pro IV]
-	1647  M1647 [MaGiK1] PCI North Bridge
-	1671  M1671 Northbridge [ALADDiN-P4]
-	1672  Northbridge [CyberALADDiN-P4]
-	3141  M3141
-	3143  M3143
-	3145  M3145
-	3147  M3147
-	3149  M3149
-	3151  M3151
-	3307  M3307 MPEG-I Video Controller
-	3309  M3309 MPEG-II Video w/ Software Audio Decoder
-	3321  M3321 MPEG-II Audio/Video Decoder
-	5212  M4803
-	5215  ALI PCI EIDE Controller
-	5217  M5217H
-	5219  M5219
-	5225  M5225
-	5229  M5229
-	5235  M5235
-	5237  M5237 PCI USB Host Controller
-	5240  EIDE Controller
-	5241  PCMCIA Bridge
-	5242  General Purpose Controller
-	5243  PCI to PCI Bridge Controller
-	5244  Floppy Disk Controller
-	5247  M1541 PCI to PCI Bridge
-	5251  M5251 P1394 Controller
-	5427  PCI to AGP Bridge
-	5451  M5451 PCI AC-Link Controller Audio Device
-	5453  M5453 PCI AC-Link Controller Modem Device
-	7101  M7101 PCI PMU Power Management Controller
-		10b9 7101  M7101 PCI PMU Power Management Controller
-1028  Dell
-	0001  PowerEdge Expandable RAID Controller 2/Si
-		1028 0001  PowerEdge 2400
-	0002  PowerEdge Expandable RAID Controller 3/Di
-		1028 0002  PowerEdge 4400
-		1028 00d1  PERC 3/DiV [Viper]
-		1028 00d9  PERC 3/DiL [Lexus]
-	0003  PowerEdge Expandable RAID Controller 3/Si
-		1028 0003  PowerEdge 2450
-# PowerEdge Codename Iguana
-	0004  PowerEdge Expandable RAID Controller 3/Di [Iguana]
-		1028 0004  PERC 3/DiF [Iguana]
-	0006  PowerEdge Expandable RAID Controller 3/Di
-	0007  Remote Access Card III
-	0008  Remote Access Card III
-	0009  Remote Access Card III: BMC/SMIC device not present
-	000a  PowerEdge Expandable RAID Controller 3/Di
-		1028 0106  PERC 3/DiJ [Jaguar]
-		1028 011b  PERC 3/DiD [Dagger]
-		1028 0121  PERC 3/DiB [Boxster]
-	000c  Embedded Remote Access or ERA/O
-	000d  Embedded Remote Access: BMC/SMIC device
-	000e  PowerEdge Expandable RAID controller 4/Di
-	000f  PowerEdge Expandable RAID controller 4/Di
-		1028 014a  PowerEdge 1750
-	0010  Remote Access Card 4
-	0011  Remote Access Card 4 Daughter Card
-	0012  Remote Access Card 4 Daughter Card Virtual UART
-	0013  PowerEdge Expandable RAID controller 4
-		1028 016c  PowerEdge Expandable RAID Controller 4e/Si
-		1028 016d  PowerEdge Expandable RAID Controller 4e/Di
-		1028 016e  PowerEdge Expandable RAID Controller 4e/Di
-		1028 016f  PowerEdge Expandable RAID Controller 4e/Di
-		1028 0170  PowerEdge Expandable RAID Controller 4e/Di
-	0014  Remote Access Card 4 Daughter Card SMIC interface
-	0015  PowerEdge Expandable RAID controller 5
-		1028 1f01  PERC 5/E Adapter RAID Controller
-		1028 1f02  PERC 5/i Adapter RAID Controller
-		1028 1f03  PERC 5/i Integrated RAID Controller
-1029  Siemens Nixdorf IS
-102a  LSI Logic
-	0000  HYDRA
-	0010  ASPEN
-	001f  AHA-2940U2/U2W /7890/7891 SCSI Controllers
-		9005 000f  2940U2W SCSI Controller
-		9005 0106  2940U2W SCSI Controller
-		9005 a180  2940U2W SCSI Controller
-	00c5  AIC-7899 U160/m SCSI Controller
-		1028 00c5  PowerEdge 2550/2650/4600
-	00cf  AIC-7899P U160/m
-		1028 0106  PowerEdge 4600
-		1028 0121  PowerEdge 2650
-102b  Matrox Graphics, Inc.
-# DJ: I've a suspicion that 0010 is a duplicate of 0d10.
-	0010  MGA-I [Impression?]
-	0100  MGA 1064SG [Mystique]
-	0518  MGA-II [Athena]
-	0519  MGA 2064W [Millennium]
-	051a  MGA 1064SG [Mystique]
-		102b 0100  MGA-1064SG Mystique
-		102b 1100  MGA-1084SG Mystique
-		102b 1200  MGA-1084SG Mystique
-		1100 102b  MGA-1084SG Mystique
-		110a 0018  Scenic Pro C5 (D1025)
-	051b  MGA 2164W [Millennium II]
-		102b 051b  MGA-2164W Millennium II
-		102b 1100  MGA-2164W Millennium II
-		102b 1200  MGA-2164W Millennium II
-		102b 2100  MGA-2164W Millennium II
-	051e  MGA 1064SG [Mystique] AGP
-	051f  MGA 2164W [Millennium II] AGP
-	0520  MGA G200
-		102b dbc2  G200 Multi-Monitor
-		102b dbc8  G200 Multi-Monitor
-		102b dbe2  G200 Multi-Monitor
-		102b dbe8  G200 Multi-Monitor
-		102b ff03  Millennium G200 SD
-		102b ff04  Marvel G200
-	0521  MGA G200 AGP
-		1014 ff03  Millennium G200 AGP
-		102b 48e9  Mystique G200 AGP
-		102b 48f8  Millennium G200 SD AGP
-		102b 4a60  Millennium G200 LE AGP
-		102b 4a64  Millennium G200 AGP
-		102b c93c  Millennium G200 AGP
-		102b c9b0  Millennium G200 AGP
-		102b c9bc  Millennium G200 AGP
-		102b ca60  Millennium G250 LE AGP
-		102b ca6c  Millennium G250 AGP
-		102b dbbc  Millennium G200 AGP
-		102b dbc2  Millennium G200 MMS (Dual G200)
-		102b dbc3  G200 Multi-Monitor
-		102b dbc8  Millennium G200 MMS (Dual G200)
-		102b dbd2  G200 Multi-Monitor
-		102b dbd3  G200 Multi-Monitor
-		102b dbd4  G200 Multi-Monitor
-		102b dbd5  G200 Multi-Monitor
-		102b dbd8  G200 Multi-Monitor
-		102b dbd9  G200 Multi-Monitor
-		102b dbe2  Millennium G200 MMS (Quad G200)
-		102b dbe3  G200 Multi-Monitor
-		102b dbe8  Millennium G200 MMS (Quad G200)
-		102b dbf2  G200 Multi-Monitor
-		102b dbf3  G200 Multi-Monitor
-		102b dbf4  G200 Multi-Monitor
-		102b dbf5  G200 Multi-Monitor
-		102b dbf8  G200 Multi-Monitor
-		102b dbf9  G200 Multi-Monitor
-		102b f806  Mystique G200 Video AGP
-		102b ff00  MGA-G200 AGP
-		102b ff02  Mystique G200 AGP
-		102b ff03  Millennium G200 AGP
-		102b ff04  Marvel G200 AGP
-		110a 0032  MGA-G200 AGP
-	0522  MGA G200e [Pilot] ServerEngines (SEP1)
-	0525  MGA G400/G450
-		0e11 b16f  MGA-G400 AGP
-		102b 0328  Millennium G400 16Mb SDRAM
-		102b 0338  Millennium G400 16Mb SDRAM
-		102b 0378  Millennium G400 32Mb SDRAM
-		102b 0541  Millennium G450 Dual Head
-		102b 0542  Millennium G450 Dual Head LX
-		102b 0543  Millennium G450 Single Head LX
-		102b 0641  Millennium G450 32Mb SDRAM Dual Head
-		102b 0642  Millennium G450 32Mb SDRAM Dual Head LX
-		102b 0643  Millennium G450 32Mb SDRAM Single Head LX
-		102b 07c0  Millennium G450 Dual Head LE
-		102b 07c1  Millennium G450 SDR Dual Head LE
-		102b 0d41  Millennium G450 Dual Head PCI
-		102b 0d42  Millennium G450 Dual Head LX PCI
-		102b 0d43  Millennium G450 32Mb Dual Head PCI
-		102b 0e00  Marvel G450 eTV
-		102b 0e01  Marvel G450 eTV
-		102b 0e02  Marvel G450 eTV
-		102b 0e03  Marvel G450 eTV
-		102b 0f80  Millennium G450 Low Profile
-		102b 0f81  Millennium G450 Low Profile
-		102b 0f82  Millennium G450 Low Profile DVI
-		102b 0f83  Millennium G450 Low Profile DVI
-		102b 19d8  Millennium G400 16Mb SGRAM
-		102b 19f8  Millennium G400 32Mb SGRAM
-		102b 2159  Millennium G400 Dual Head 16Mb
-		102b 2179  Millennium G400 MAX/Dual Head 32Mb
-		102b 217d  Millennium G400 Dual Head Max
-		102b 23c0  Millennium G450
-		102b 23c1  Millennium G450
-		102b 23c2  Millennium G450 DVI
-		102b 23c3  Millennium G450 DVI
-		102b 2f58  Millennium G400
-		102b 2f78  Millennium G400
-		102b 3693  Marvel G400 AGP
-		102b 5dd0  4Sight II
-		102b 5f50  4Sight II
-		102b 5f51  4Sight II
-		102b 5f52  4Sight II
-		102b 9010  Millennium G400 Dual Head
-		1458 0400  GA-G400
-		1705 0001  Millennium G450 32MB SGRAM
-		1705 0002  Millennium G450 16MB SGRAM
-		1705 0003  Millennium G450 32MB
-		1705 0004  Millennium G450 16MB
-	0527  MGA Parhelia AGP
-		102b 0840  Parhelia 128Mb
-		102b 0850  Parhelia 256MB AGP 4X
-	0528  Parhelia 8X
-		102b 1020  Parhelia 128MB
-		102b 1030  Parhelia 256 MB Dual DVI
-		102b 14e1  Parhelia PCI 256MB
-		102b 2021  QID Pro
-	0532  MGA G200eW WPCM450 [Hermon] - Winbond/Nuvoton
-	0540  M91XX
-	0d10  MGA Ultima/Impression
-	1000  MGA G100 [Productiva]
-		102b ff01  Productiva G100
-		102b ff05  Productiva G100 Multi-Monitor
-	1001  MGA G100 [Productiva] AGP
-		102b 1001  MGA-G100 AGP
-		102b ff00  MGA-G100 AGP
-		102b ff01  MGA-G100 Productiva AGP
-		102b ff03  Millennium G100 AGP
-		102b ff04  MGA-G100 AGP
-		102b ff05  MGA-G100 Productiva AGP Multi-Monitor
-		110a 001e  MGA-G100 AGP
-	2007  MGA Mistral
-	2527  MGA G550 AGP
-		102b 0f83  Millennium G550
-		102b 0f84  Millennium G550 Dual Head DDR 32Mb
-		102b 1e41  Millennium G550
-# Clearly the device name should not say AGP anymore...
-		102b 2300  Millennium G550 LP PCIE
-	2537  Millenium P650/P750
-		102b 1820  Millennium P750 64MB
-		102b 1830  Millennium P650 64MB
-		102b 1c10  QID 128MB
-		102b 2811  Millennium P650 Low-profile PCI 64MB
-		102b 2c11  QID Low-profile PCI
-	2538  Millenium P650 PCIe
-		102b 08c7  Millennium P650 PCIe 128MB
-		102b 0907  Millennium P650 PCIe 64MB
-		102b 0947  Parhelia APVe
-		102b 1047  Millennium P650 LP PCIe 128MB
-		102b 1087  Millennium P650 LP PCIe 64MB
-		102b 2538  Parhelia APVe
-		102b 3007  QID Low-profile PCIe
-	2539  Millennium P690
-	4536  VIA Framegrabber
-	4cdc  Morphis Vision System Jpeg2000
-	4fc5  Morphis Vision System
-	5e10  Morphis Vision System Aux/IO
-	6573  Shark 10/100 Multiport SwitchNIC
-102c  Chips and Technologies
-	00b8  F64310
-	00c0  F69000 HiQVideo
-		102c 00c0  F69000 HiQVideo
-		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
-		4c53 1010  CP5/CR6 mainboard
-		4c53 1020  VR6 mainboard
-		4c53 1030  PC5 mainboard
-		4c53 1050  CT7 mainboard
-		4c53 1051  CE7 mainboard
-	00d0  F65545
-	00d8  F65545
-	00dc  F65548
-	00e0  F65550
-	00e4  F65554
-	00e5  F65555 HiQVPro
-		0e11 b049  Armada 1700 Laptop Display Controller
-		1179 0001  Satellite Pro/Satellite 4010
-	00f0  F68554
-	00f4  F68554 HiQVision
-	00f5  F68555
-	0c30  F69030
-		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
-		4c53 1050  CT7 mainboard
-		4c53 1051  CE7 mainboard
-		4c53 1080  CT8 mainboard
-102d  Wyse Technology Inc.
-	50dc  3328 Audio
-102e  Olivetti Advanced Technology
-102f  Toshiba America
-	0009  r4x00
-	000a  TX3927 MIPS RISC PCI Controller
-	0020  ATM Meteor 155
-		102f 00f8  ATM Meteor 155
-	0030  TC35815CF PCI 10/100 Mbit Ethernet Controller
-	0031  TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL
-	0032  TC35815CF PCI 10/100 Mbit Ethernet Controller on TX4939
-	0105  TC86C001 [goku-s] IDE
-	0106  TC86C001 [goku-s] USB 1.1 Host
-	0107  TC86C001 [goku-s] USB Device Controller
-	0108  TC86C001 [goku-s] I2C/SIO/GPIO Controller
-	0180  TX4927/38 MIPS RISC PCI Controller
-	0181  TX4925 MIPS RISC PCI Controller
-	0182  TX4937 MIPS RISC PCI Controller
-	01b4  Celleb platform IDE interface
-1030  TMC Research
-1031  Miro Computer Products AG
-	5601  DC20 ASIC
-	5607  Video I/O & motion JPEG compressor
-	5631  Media 3D
-	6057  MiroVideo DC10/DC30+
-1032  Compaq
-1033  NEC Corporation
-	0000  Vr4181A USB Host or Function Control Unit
-	0001  PCI to 486-like bus Bridge
-	0002  PCI to VL98 Bridge
-	0003  ATM Controller
-	0004  R4000 PCI Bridge
-	0005  PCI to 486-like bus Bridge
-	0006  PC-9800 Graphic Accelerator
-	0007  PCI to UX-Bus Bridge
-	0008  PC-9800 Graphic Accelerator
-	0009  PCI to PC9800 Core-Graph Bridge
-	0016  PCI to VL Bridge
-	001a  [Nile II]
-	0021  Vrc4373 [Nile I]
-	0029  PowerVR PCX1
-	002a  PowerVR 3D
-	002c  Star Alpha 2
-	002d  PCI to C-bus Bridge
-	0035  USB
-		1033 0035  Hama USB 2.0 CardBus
-		1179 0001  USB
-		12ee 7000  Root Hub
-		14c2 0105  PTI-205N USB 2.0 Host Controller
-		1799 0001  Root Hub
-		1931 000a  GlobeTrotter Fusion Quad Lite (PPP data)
-		1931 000b  GlobeTrotter Fusion Quad Lite (GSM data)
-		807d 0035  PCI-USB2 (OHCI subsystem)
-	003b  PCI to C-bus Bridge
-	003e  NAPCCARD Cardbus Controller
-	0046  PowerVR PCX2 [midas]
-	005a  Vrc5074 [Nile 4]
-	0063  Firewarden
-	0067  PowerVR Neon 250 Chipset
-		1010 0020  PowerVR Neon 250 AGP 32Mb
-		1010 0080  PowerVR Neon 250 AGP 16Mb
-		1010 0088  PowerVR Neon 250 16Mb
-		1010 0090  PowerVR Neon 250 AGP 16Mb
-		1010 0098  PowerVR Neon 250 16Mb
-		1010 00a0  PowerVR Neon 250 AGP 32Mb
-		1010 00a8  PowerVR Neon 250 32Mb
-		1010 0120  PowerVR Neon 250 AGP 32Mb
-	0072  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr
-	0074  56k Voice Modem
-		1033 8014  RCV56ACF 56k Voice Modem
-	009b  Vrc5476
-	00a5  VRC4173
-	00a6  VRC5477 AC97
-	00cd  IEEE 1394 [OrangeLink] Host Controller
-		12ee 8011  Root hub
-	00ce  IEEE 1394 Host Controller
-	00df  Vr4131
-	00e0  USB 2.0
-		12ee 7001  Root hub
-		14c2 0205  PTI-205N USB 2.0 Host Controller
-		1799 0002  Root Hub
-		807d 1043  PCI-USB2 (EHCI subsystem)
-	00e7  uPD72873 IEEE1394 OHCI 1.1 2-port Host Controller
-	00f2  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr
-	00f3  uPD6113x Multimedia Decoder/Processor [EMMA2]
-	010c  VR7701
-	0125  uPD720400 PCI Express - PCI/PCI-X Bridge
-	013a  Dual Tuner/MPEG Encoder
-1034  Framatome Connectors USA Inc.
-1035  Comp. & Comm. Research Lab
-1036  Future Domain Corp.
-	0000  TMC-18C30 [36C70]
-1037  Hitachi Micro Systems
-1038  AMP, Inc
-1039  Silicon Integrated Systems [SiS]
-	0001  Virtual PCI-to-PCI bridge (AGP)
-	0002  SG86C202
-	0003  SiS AGP Port (virtual PCI-to-PCI bridge)
-	0004  PCI-to-PCI bridge
-	0006  85C501/2/3
-	0008  SiS85C503/5513 (LPC Bridge)
-	0009  ACPI
-	000a  PCI-to-PCI bridge
-	0016  SiS961/2 SMBus Controller
-	0018  SiS85C503/5513 (LPC Bridge)
-	0180  RAID bus controller 180 SATA/PATA  [SiS]
-	0181  SATA
-	0182  182 SATA/RAID Controller
-		1734 1095  D2030-A1
-	0186  AHCI Controller (0106)
-	0190  190 Ethernet Adapter
-	0191  191 Gigabit Ethernet Adapter
-	0200  5597/5598/6326 VGA
-		1039 0000  SiS5597 SVGA (Shared RAM)
-	0204  82C204
-	0205  SG86C205
-	0300  300/305 PCI/AGP VGA Display Adapter
-		107d 2720  Leadtek WinFast VR300
-	0310  315H PCI/AGP VGA Display Adapter
-	0315  315 PCI/AGP VGA Display Adapter
-	0325  315PRO PCI/AGP VGA Display Adapter
-	0330  330 [Xabre] PCI/AGP VGA Display Adapter
-	0406  85C501/2
-	0496  85C496
-	0530  530 Host
-	0540  540 Host
-	0550  550 Host
-	0597  5513C
-	0601  85C601
-	0620  620 Host
-	0630  630 Host
-	0633  633 Host
-	0635  635 Host
-	0645  SiS645 Host & Memory & AGP Controller
-	0646  SiS645DX Host & Memory & AGP Controller
-	0648  645xx
-	0649  SiS649 Host
-	0650  650/M650 Host
-	0651  651 Host
-	0655  655 Host
-	0660  660 Host
-	0661  661FX/M661FX/M661MX Host
-	0662  662 Host
-	0671  671MX
-	0730  730 Host
-	0733  733 Host
-	0735  735 Host
-	0740  740 Host
-	0741  741/741GX/M741 Host
-	0745  745 Host
-	0746  746 Host
-	0755  755 Host
-	0760  760/M760 Host
-	0761  761/M761 Host
-		1734 1099  D2030-A1 Motherboard
-	0900  SiS900 PCI Fast Ethernet
-		1019 0a14  K7S5A motherboard
-		1039 0900  SiS900 10/100 Ethernet Adapter onboard [Asus P4SC-EA]
-		1043 8035  CUSI-FX motherboard
-		1043 80a7  Motherboard P4S800D-X
-		1462 0900  MS-6701 motherboard
-	0961  SiS961 [MuTIOL Media IO]
-	0962  SiS962 [MuTIOL Media IO]
-	0963  SiS963 [MuTIOL Media IO]
-	0964  SiS964 [MuTIOL Media IO]
-	0965  SiS965 [MuTIOL Media IO]
-	0966  SiS966 [MuTIOL Media IO]
-	0968  SiS968 [MuTIOL Media IO]
-	1180  SATA Controller / IDE mode
-	1182  SATA Controller / RAID mode
-	1183  SATA Controller / IDE mode
-	1184  AHCI Controller / RAID mode
-	1185  AHCI IDE Controller (0106)
-	3602  83C602
-	5107  5107
-	5300  SiS540 PCI Display Adapter
-	5315  550 PCI/AGP VGA Display Adapter
-	5401  486 PCI Chipset
-	5511  5511/5512
-	5513  5513 [IDE]
-		1019 0970  P6STP-FL motherboard
-		1039 5513  SiS5513 EIDE Controller (A,B step)
-		1043 8035  CUSI-FX motherboard
-		1462 7010  MS-6701 motherboard
-		1631 5513  GA-8SIML Rev1.0 Motherboard
-		1734 1095  D2030-A1 Motherboard
-	5517  5517
-	5571  5571
-	5581  5581 Pentium Chipset
-	5582  5582
-	5591  5591/5592 Host
-	5596  5596 Pentium Chipset
-	5597  5597 [SiS5582]
-	5600  5600 Host
-	6204  Video decoder & MPEG interface
-	6205  VGA Controller
-	6236  6236 3D-AGP
-	6300  630/730 PCI/AGP VGA Display Adapter
-		1019 0970  P6STP-FL motherboard
-		1043 8035  CUSI-FX motherboard
-	6306  530/620 PCI/AGP VGA Display Adapter
-		1039 6306  SiS530,620 GUI Accelerator+3D
-	6325  65x/M650/740 PCI/AGP VGA Display Adapter
-		1039 6325  SiS 651 onboard [Asus P4SC-EA]
-		1631 1004  SiS 651C onboard [Gigabyte GA-8SIML Rev1.0]
-	6326  86C326 5598/6326
-		1039 6326  SiS6326 GUI Accelerator
-		1092 0a50  SpeedStar A50
-		1092 0a70  SpeedStar A70
-		1092 4910  SpeedStar A70
-		1092 4920  SpeedStar A70
-		1569 6326  SiS6326 GUI Accelerator
-	6330  661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter
-		1039 6330  [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter
-		1043 8113  SiS Real 256E (ASUS P5S800-VM motherboard)
-		1458 d000  SiS661FX GUI 2D/3D Accelerator
-		1734 1099  D2030-A1
-	6350  770/670 PCIE VGA Display Adapter
-	6351  771/671 PCIE VGA Display Adapter
-	7001  USB 1.1 Controller
-		1019 0a14  K7S5A motherboard
-		1039 7000  Onboard USB Controller
-		1462 5470  ECS K7SOM+ motherboard
-		1462 7010  MS-6701 motherboard
-		1734 1095  D2030-A1 Motherboard
-	7002  USB 2.0 Controller
-		1462 5470  K7SOM+ 5.2C Motherboard
-		1462 7010  MS-6701 motherboard
-		1509 7002  Onboard USB Controller
-		1734 1095  D2030-A1
-	7007  FireWire Controller
-		1462 701d  MS-6701
-	7012  AC'97 Sound Controller
-		1039 7012  SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller
-		1043 818f  A8S-X Motherboard
-		13f6 0300  CMI9739(A) on ECS K7SOM+ motherboard
-		1462 5850  MSI 648 Max (MS-6585)
-		1462 7010  MS-6701 motherboard
-		15bd 1001  DFI 661FX motherboard
-		1734 109f  D2030-A1 Motherboard
-# There are may be different modem codecs here (Intel537 compatible and incompatible)
-	7013  AC'97 Modem Controller
-	7016  SiS7016 PCI Fast Ethernet Adapter
-		1039 7016  SiS7016 10/100 Ethernet Adapter
-	7018  SiS PCI Audio Accelerator
-		1014 01b6  SiS PCI Audio Accelerator
-		1014 01b7  SiS PCI Audio Accelerator
-		1019 7018  SiS PCI Audio Accelerator
-		1025 000e  SiS PCI Audio Accelerator
-		1025 0018  SiS PCI Audio Accelerator
-		1039 7018  SiS PCI Audio Accelerator
-		1043 1453  SiS PCI Audio Accelerator
-		1043 800b  SiS PCI Audio Accelerator
-		1054 7018  SiS PCI Audio Accelerator
-		107d 5330  SiS PCI Audio Accelerator
-		107d 5350  SiS PCI Audio Accelerator
-		1170 3209  SiS PCI Audio Accelerator
-		1462 400a  SiS PCI Audio Accelerator
-		14a4 2089  SiS PCI Audio Accelerator
-		14cd 2194  SiS PCI Audio Accelerator
-		14ff 1100  SiS PCI Audio Accelerator
-		152d 8808  SiS PCI Audio Accelerator
-		1558 1103  SiS PCI Audio Accelerator
-		1558 2200  SiS PCI Audio Accelerator
-		1563 7018  SiS PCI Audio Accelerator
-		15c5 0111  SiS PCI Audio Accelerator
-		270f a171  SiS PCI Audio Accelerator
-		a0a0 0022  SiS PCI Audio Accelerator
-	7019  SiS7019 Audio Accelerator
-	7502  Azalia Audio Controller
-103a  Seiko Epson Corporation
-103b  Tatung Corp. Of America
-103c  Hewlett-Packard Company
-	002a  NX9000 Notebook
-	08bc  NX5000 Notebook
-	1005  A4977A Visualize EG
-	1008  Visualize FX
-	1028  Tach TL Fibre Channel Host Adapter
-	1029  Tach XL2 Fibre Channel Host Adapter
-		107e 000f  Interphase 5560 Fibre Channel Adapter
-		9004 9210  1Gb/2Gb Family Fibre Channel Controller
-		9004 9211  1Gb/2Gb Family Fibre Channel Controller
-	102a  Tach TS Fibre Channel Host Adapter
-		107e 000e  Interphase 5540/5541 Fibre Channel Adapter
-		9004 9110  1Gb/2Gb Family Fibre Channel Controller
-		9004 9111  1Gb/2Gb Family Fibre Channel Controller
-	1030  J2585A DeskDirect 10/100VG NIC
-	1031  J2585B HP 10/100VG PCI LAN Adapter
-		103c 1040  J2973A DeskDirect 10BaseT NIC
-		103c 1041  J2585B DeskDirect 10/100VG NIC
-		103c 1042  J2970A DeskDirect 10BaseT/2 NIC
-	1040  J2973A DeskDirect 10BaseT NIC
-	1041  J2585B DeskDirect 10/100 NIC
-	1042  J2970A DeskDirect 10BaseT/2 NIC
-	1048  Diva Serial [GSP] Multiport UART
-		103c 1049  Tosca Console
-		103c 104a  Tosca Secondary
-		103c 104b  Maestro SP2
-		103c 1223  Superdome Console
-		103c 1226  Keystone SP2
-		103c 1227  Powerbar SP2
-		103c 1282  Everest SP2
-		103c 1301  Diva RMP3
-	1054  PCI Local Bus Adapter
-	1064  79C970 PCnet Ethernet Controller
-	108b  Visualize FXe
-	10c1  NetServer Smart IRQ Router
-	10ed  TopTools Remote Control
-	10f0  rio System Bus Adapter
-	10f1  rio I/O Controller
-	1200  82557B 10/100 NIC
-	1219  NetServer PCI Hot-Plug Controller
-	121a  NetServer SMIC Controller
-	121b  NetServer Legacy COM Port Decoder
-	121c  NetServer PCI COM Port Decoder
-	1229  zx1 System Bus Adapter
-	122a  zx1 I/O Controller
-	122e  PCI-X Local Bus Adapter
-	127b  sx1000 System Bus Adapter
-	127c  sx1000 I/O Controller
-	1290  Auxiliary Diva Serial Port
-		103c 1291  Diva SP2
-	1291  Auxiliary Diva Serial Port
-	12b4  zx1 QuickSilver AGP8x Local Bus Adapter
-	12eb  sx2000 System Bus Adapter
-	12ec  sx2000 I/O Controller
-	12ee  PCI-X 2.0 Local Bus Adapter
-	12f8  Broadcom BCM4306 802.11b/g Wireless LAN
-	12fa  BCM4306 802.11b/g Wireless LAN Controller
-	1302  RMP-3 Shared Memory Driver
-	1303  RMP-3 (Remote Management Processor)
-	1361  BCM4312 802.11a/b/g WLAN Controller
-	1371  Broadcom Corporation BCM4312 802.11a/b/g (rev 02)
-	2910  E2910A PCIBus Exerciser
-	2925  E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
-	3080  Pavilion ze2028ea
-	3085  Realtek RTL8139/8139C/8139C+
-	30b5  Compaq Presario V3000Z
-	31fb  DL365 ATI ES1000 VGA controller
-	3206  Adaptec Embedded Serial ATA HostRAID
-	3220  Smart Array P600
-		103c 3225  3 Gb/s SAS RAID
-	3230  Smart Array Controller
-		103c 3223  Smart Array P800
-		103c 3234  P400 SAS Controller
-		103c 3235  P400i SAS Controller
-		103c 3237  E500 SAS Controller
-		103c 323d  P700m SAS Controller
-	3238  Smart Array E200i (SAS Controller)
-	323a  Smart Array G6 controllers
-		103c 3241  Smart Array P212
-		103c 3243  Smart Array P410
-		103c 3245  Smart Array P410i
-		103c 3247  Smart Array P411
-		103c 3249  Smart Array P812
-# Will present virtual install media as mass storage, keyboard/mouse from console session, etc.
-	3300  Proliant iLO2 virtual USB controller
-# Virtual serial port which is presented on a Java applet
-	3302  Proliant iLO2 virtual UART
-	3305  Proliant iLO2 [Integrated Lights Out] controller
-	4030  zx2 System Bus Adapter
-	4031  zx2 I/O Controller
-	4037  PCIe Local Bus Adapter
-	403b  PCIe Root Port
-	60e8  NetRAID-2M : ZX1/M (OEM AMI MegaRAID 493)
-103e  Solliday Engineering
-103f  Synopsys/Logic Modeling Group
-1040  Accelgraphics Inc.
-1041  Computrend
-1042  Micron
-	1000  PC Tech RZ1000
-	1001  PC Tech RZ1001
-	3000  Samurai_0
-	3010  Samurai_1
-	3020  Samurai_IDE
-1043  ASUSTeK Computer Inc.
-	0675  ISDNLink P-IN100-ST-D
-		0675 1704  ISDN Adapter (PCI Bus, D, C)
-		0675 1707  ISDN Adapter (PCI Bus, DV, W)
-		10cf 105e  ISDN Adapter (PCI Bus, DV, W)
-	0c11  A7N8X Motherboard nForce2 IDE/USB/SMBus
-	4015  v7100 SDRAM [GeForce2 MX]
-	4021  v7100 Combo Deluxe [GeForce2 MX + TV tuner]
-	4057  v8200 GeForce 3
-	8043  v8240 PAL 128M [P4T] Motherboard
-	8047  v8420 Deluxe [GeForce4 Ti4200]
-	807b  v9280/TD [Geforce4 TI4200 8X With TV-Out and DVI]
-	8095  A7N8X Motherboard nForce2 AC97 Audio
-	80ac  A7N8X Motherboard nForce2 AGP/Memory
-	80bb  v9180 Magic/T [GeForce4 MX440 AGP 8x 64MB TV-out]
-	80c5  nForce3 chipset motherboard [SK8N]
-	80df  v9520 Magic/T
-	815a  A8N-SLI Motherboard nForce4 SATA
-	8168  Realtek PCI-E Gigabit Ethernet Controller (RTL8111B)
-	8187  802.11a/b/g Wireless LAN Card
-	8188  Tiger Hybrid TV Capture Device
-# Found on ASUS M2V motherboard
-	81e7  Realtek ALC-660 6-channel CODEC
-	81f4  EN7300TC512/TD/128M/A(C262G) [Graphics Card EN7300TC512]
-1044  Adaptec (formerly DPT)
-	1012  Domino RAID Engine
-	a400  SmartCache/Raid I-IV Controller
-	a500  PCI Bridge
-	a501  SmartRAID V Controller
-		1044 c001  PM1554U2 Ultra2 Single Channel
-		1044 c002  PM1654U2 Ultra2 Single Channel
-		1044 c003  PM1564U3 Ultra3 Single Channel
-		1044 c004  PM1564U3 Ultra3 Dual Channel
-		1044 c005  PM1554U2 Ultra2 Single Channel (NON ACPI)
-		1044 c00a  PM2554U2 Ultra2 Single Channel
-		1044 c00b  PM2654U2 Ultra2 Single Channel
-		1044 c00c  PM2664U3 Ultra3 Single Channel
-		1044 c00d  PM2664U3 Ultra3 Dual Channel
-		1044 c00e  PM2554U2 Ultra2 Single Channel (NON ACPI)
-		1044 c00f  PM2654U2 Ultra2 Single Channel (NON ACPI)
-		1044 c014  PM3754U2 Ultra2 Single Channel (NON ACPI)
-		1044 c015  PM3755U2B Ultra2 Single Channel (NON ACPI)
-		1044 c016  PM3755F Fibre Channel (NON ACPI)
-		1044 c01e  PM3757U2 Ultra2 Single Channel
-		1044 c01f  PM3757U2 Ultra2 Dual Channel
-		1044 c020  PM3767U3 Ultra3 Dual Channel
-		1044 c021  PM3767U3 Ultra3 Quad Channel
-		1044 c028  PM2865U3 Ultra3 Single Channel
-		1044 c029  PM2865U3 Ultra3 Dual Channel
-		1044 c02a  PM2865F Fibre Channel
-		1044 c03c  2000S Ultra3 Single Channel
-		1044 c03d  2000S Ultra3 Dual Channel
-		1044 c03e  2000F Fibre Channel
-		1044 c046  3000S Ultra3 Single Channel
-		1044 c047  3000S Ultra3 Dual Channel
-		1044 c048  3000F Fibre Channel
-		1044 c050  5000S Ultra3 Single Channel
-		1044 c051  5000S Ultra3 Dual Channel
-		1044 c052  5000F Fibre Channel
-		1044 c05a  2400A UDMA Four Channel
-		1044 c05b  2400A UDMA Four Channel DAC
-		1044 c064  3010S Ultra3 Dual Channel
-		1044 c065  3410S Ultra160 Four Channel
-		1044 c066  3010S Fibre Channel
-	a511  SmartRAID V Controller
-		1044 c032  ASR-2005S I2O Zero Channel
-		1044 c035  ASR-2010S I2O Zero Channel
-1045  OPTi Inc.
-	a0f8  82C750 [Vendetta] USB Controller
-	c101  92C264
-	c178  92C178
-	c556  82X556 [Viper]
-	c557  82C557 [Viper-M]
-	c558  82C558 [Viper-M ISA+IDE]
-	c567  82C750 [Vendetta], device 0
-	c568  82C750 [Vendetta], device 1
-	c569  82C579 [Viper XPress+ Chipset]
-	c621  82C621 [Viper-M/N+]
-	c700  82C700 [FireStar]
-	c701  82C701 [FireStar Plus]
-	c814  82C814 [Firebridge 1]
-	c822  82C822
-	c824  82C824
-	c825  82C825 [Firebridge 2]
-	c832  82C832
-	c861  82C861
-	c895  82C895
-	c935  EV1935 ECTIVA MachOne PCIAudio
-	d568  82C825 [Firebridge 2]
-	d721  IDE [FireStar]
-1046  IPC Corporation, Ltd.
-1047  Genoa Systems Corp
-1048  Elsa AG
-	0c60  Gladiac MX
-	0d22  Quadro4 900XGL [ELSA GLoria4 900XGL]
-	1000  QuickStep 1000
-	3000  QuickStep 3000
-	8901  Gloria XL
-		1048 0935  GLoria XL (Virge)
-1049  Fountain Technologies, Inc.
-# nee SGS Thomson Microelectronics
-104a  STMicroelectronics
-	0000  STLS2F Host Bridge
-	0008  STG 2000X
-	0009  STG 1764X
-	0010  STG4000 [3D Prophet Kyro Series]
-	0201  STPC Vega Northbridge
-	0209  STPC Consumer/Industrial North- and Southbridge
-	020a  STPC Atlas/ConsumerS/Consumer IIA Northbridge
-	020b  STPC Consumer II ISA Bridge
-	0210  STPC Atlas ISA Bridge
-	021a  STPC Consumer S Southbridge
-	021b  STPC Consumer IIA Southbridge
-	0220  STPC Industrial PCI to PCCard bridge
-	0228  STPC Atlas IDE
-	0229  STPC Vega IDE
-	0230  STPC Atlas/Vega OHCI USB Controller
-	0238  STPC Vega LAN
-	0500  ST70137 [Unicorn] ADSL DMT Transceiver
-		104a 0500  BeWAN ADSL PCI st
-	0564  STPC Client Northbridge
-	0981  21x4x DEC-Tulip compatible 10/100 Ethernet
-	1746  STG 1764X
-	2774  21x4x DEC-Tulip compatible 10/100 Ethernet
-	3520  MPEG-II decoder card
-	55cc  STPC Client Southbridge
-104b  BusLogic
-	0140  BT-946C (old) [multimaster  01]
-	1040  BT-946C (BA80C30) [MultiMaster 10]
-	8130  Flashpoint LT
-104c  Texas Instruments
-	0500  100 MBit LAN Controller
-	0508  TMS380C2X Compressor Interface
-	1000  Eagle i/f AS
-	104c  PCI1510 PC card Cardbus Controller
-	3d04  TVP4010 [Permedia]
-	3d07  TVP4020 [Permedia 2]
-		1011 4d10  Comet
-		1040 000f  AccelStar II
-		1040 0011  AccelStar II
-		1048 0a31  WINNER 2000
-		1048 0a32  GLoria Synergy
-		1048 0a34  GLoria Synergy
-		1048 0a35  GLoria Synergy
-		1048 0a36  GLoria Synergy
-		1048 0a43  GLoria Synergy
-		1048 0a44  GLoria Synergy
-		107d 2633  WinFast 3D L2300
-		1092 0126  FIRE GL 1000 PRO
-		1092 0127  FIRE GL 1000 PRO
-		1092 0136  FIRE GL 1000 PRO
-		1092 0141  FIRE GL 1000 PRO
-		1092 0146  FIRE GL 1000 PRO
-		1092 0148  FIRE GL 1000 PRO
-		1092 0149  FIRE GL 1000 PRO
-		1092 0152  FIRE GL 1000 PRO
-		1092 0154  FIRE GL 1000 PRO
-		1092 0155  FIRE GL 1000 PRO
-		1092 0156  FIRE GL 1000 PRO
-		1092 0157  FIRE GL 1000 PRO
-		1097 3d01  Jeronimo Pro
-		1102 100f  Graphics Blaster Extreme
-		3d3d 0100  Reference Permedia 2 3D
-	8000  PCILynx/PCILynx2 IEEE 1394 Link Layer Controller
-		e4bf 1010  CF1-1-SNARE
-		e4bf 1020  CF1-2-SNARE
-	8009  FireWire Controller
-		104d 8032  8032 OHCI i.LINK (IEEE 1394) Controller
-	8017  PCI4410 FireWire Controller
-	8019  TSB12LV23 IEEE-1394 Controller
-		11bd 000a  Studio DV500-1394
-		11bd 000e  Studio DV
-		e4bf 1010  CF2-1-CYMBAL
-	8020  TSB12LV26 IEEE-1394 Controller (Link)
-		1028 00d8  Precision 530
-		11bd 000f  Studio DV500-1394
-		11bd 001c  Excalibur 4.1
-	8021  TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated)
-		104d 80df  Vaio PCG-FX403
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-	8022  TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link)
-		104c 8023  TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
-	8023  TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
-		103c 088c  NC8000 laptop
-		1043 808b  K8N4-E Mainboard
-		1043 815b  P5W DH Deluxe Motherboard
-	8024  TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)
-		107d 6620  Winfast DV2000 FireWire Controller
-		1443 8024  FireBoard Blue
-	8025  TSB82AA2 IEEE-1394b Link Layer Controller
-		1458 1000  GA-K8N Ultra-9 Mainboard
-	8026  TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)
-		1025 0035  TravelMate 660
-		1025 003c  Aspire 2001WLCi (Compaq CL50 motherboard)
-		103c 006a  NX9500
-		1043 808d  A7V333 mainboard.
-	8027  PCI4451 IEEE-1394 Controller
-		1028 00e6  PCI4451 IEEE-1394 Controller (Dell Inspiron 8100)
-	8029  PCI4510 IEEE-1394 Controller
-		1028 0163  Latitude D505
-		1028 0196  Inspiron 5160
-		1071 8160  MIM2900
-	802b  PCI7410,7510,7610 OHCI-Lynx Controller
-		1028 0139  Latitude D400
-		1028 014e  PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800)
-	802e  PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller
-		1028 018d  Inspiron 700m/710m
-	8031  PCIxx21/x515 Cardbus Controller
-		1025 0080  Aspire 5024WLMi
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		103c 308b  MX6125
-	8032  OHCI Compliant IEEE 1394 Host Controller
-		1025 0080  Aspire 5024WLMi
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		103c 308b  MX6125
-	8033  PCIxx21 Integrated FlashMedia Controller
-		1025 0080  Aspire 5024WLMi
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		103c 308b  MX6125
-	8034  PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller
-		1025 0080  Aspire 5024WLMi
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		103c 308b  MX6125
-	8035  PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-	8036  PCI6515 Cardbus Controller
-	8038  PCI6515 SmartCard Controller
-	8039  PCIxx12 Cardbus Controller
-		103c 309f  nx9420
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-	803a  PCIxx12 OHCI Compliant IEEE 1394 Host Controller
-		103c 309f  nx9420
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-	803b  5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
-		103c 309f  nx9420
-		103c 30a3  Compaq nw8440
-	803c  PCIxx12 SDA Standard Compliant SD Host Controller
-		103c 309f  nx9420
-		103c 30a3  Compaq nw8440
-	803d  PCIxx12 GemCore based SmartCard controller
-		103c 309f  nx9420
-		103c 30a1  NC2400
-		103c 30a3  nc8430
-	8101  TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link)
-	8201  PCI1620 Firmware Loading Function
-	8204  PCI7410,7510,7610 PCI Firmware Loading Function
-		1028 0139  Latitude D400
-		1028 014e  Latitude D800
-	8231  XIO2000(A)/XIO2200(A) PCI Express-to-PCI Bridge
-	8235  XIO2200(A) IEEE-1394a-2000 Controller (PHY/Link)
-	8400  ACX 100 22Mbps Wireless Interface
-		1186 3b00  DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus]
-		1186 3b01  DWL-520+ 22Mbps PCI Wireless Adapter
-		1395 2201  WL22-PC
-		16ab 8501  WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter
-	8401  ACX 100 22Mbps Wireless Interface
-	9000  Wireless Interface (of unknown type)
-	9065  TMS320DM642
-	9066  ACX 111 54Mbps Wireless Interface
-		104c 9066  Trendnet TEW-412PC Wireless PCI Adapter (Version A)
-		104c 9096  Trendnet TEW-412PC Wireless PCI Adapter (Version A)
-		1186 3b04  DWL-G520+ Wireless PCI Adapter
-		1186 3b05  DWL-G650+ AirPlusG+ CardBus Wireless LAN
-		13d1 aba0  SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+
-		16ec 010d  USR5416 802.11g Wireless Turbo PCI Adapter
-		1737 0033  WPC54G Ver.2 802.11G PC Card
-		17cf 0033  Z-Com XG650 Wireless miniPCI 802.11b/g
-	a001  TDC1570
-	a100  TDC1561
-	a102  TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f
-	a106  TMS320C6414 TMS320C6415 TMS320C6416
-		175c 5000  ASI50xx Audio Adapter
-		175c 6400  ASI6400 Cobranet series
-		175c 8700  ASI87xx Radio Tuner card
-	ac10  PCI1050
-	ac11  PCI1053
-	ac12  PCI1130
-	ac13  PCI1031
-	ac15  PCI1131
-	ac16  PCI1250
-		1014 0092  ThinkPad 600
-	ac17  PCI1220
-	ac18  PCI1260
-	ac19  PCI1221
-	ac1a  PCI1210
-	ac1b  PCI1450
-		0e11 b113  Armada M700
-		1014 0130  ThinkPad A21m/T20/T22
-	ac1c  PCI1225
-		0e11 b121  Armada E500
-		1028 0088  Latitude CPi A400XT
-	ac1d  PCI1251A
-	ac1e  PCI1211
-	ac1f  PCI1251B
-	ac20  TI 2030
-	ac21  PCI2031
-	ac22  PCI2032 PCI Docking Bridge
-	ac23  PCI2250 PCI-to-PCI Bridge
-	ac28  PCI2050 PCI-to-PCI Bridge
-	ac2c  PCI2060 PCI-to-PCI Bridge
-	ac30  PCI1260 PC card Cardbus Controller
-	ac40  PCI4450 PC card Cardbus Controller
-	ac41  PCI4410 PC card Cardbus Controller
-	ac42  PCI4451 PC card Cardbus Controller
-		1028 00e6  PCI4451 PC card CardBus Controller (Inspiron 8100)
-	ac44  PCI4510 PC card Cardbus Controller
-		1028 0149  Inspiron 5100
-		1028 0163  Latitude D505
-		1028 0196  Inspiron 5160
-		1071 8160  MIM2000
-	ac46  PCI4520 PC card Cardbus Controller
-		1014 0552  ThinkPad
-	ac47  PCI7510 PC card Cardbus Controller
-		1028 0139  Latitude D400
-		1028 013f  Precision M60
-		1028 014e  Latitude D800
-	ac4a  PCI7510,7610 PC card Cardbus Controller
-		1028 0139  Latitude D400
-		1028 014e  Latitude D800
-	ac50  PCI1410 PC card Cardbus Controller
-	ac51  PCI1420 PC card Cardbus Controller
-		0e11 004e  Evo N600c
-		1014 0148  ThinkPad A20m
-		1014 023b  ThinkPad T23
-		1028 00b1  Latitude C600
-		1028 012a  Latitude C640
-		1033 80cd  Versa Note VXi
-		10cf 1095  Lifebook S-4510/C6155
-		e4bf 1000  CP2-2-HIPHOP
-	ac52  PCI1451 PC card Cardbus Controller
-	ac53  PCI1421 PC card Cardbus Controller
-	ac54  PCI1620 PC Card Controller
-		103c 08b0  tc1100 tablet
-	ac55  PCI1520 PC card Cardbus Controller
-		1014 0512  ThinkPad T30/T40
-	ac56  PCI1510 PC card Cardbus Controller
-		1014 0512  ThinkPad R50e
-		1014 0528  ThinkPad R40e
-		17aa 2012  ThinkPad T60/R60 series
-	ac60  PCI2040 PCI to DSP Bridge Controller
-		175c 5100  ASI51xx Audio Adapter
-		175c 6100  ASI61xx Audio Adapter
-		175c 6200  ASI62xx Audio Adapter
-		175c 8800  ASI88xx Audio Adapter
-		186f 3001  WR-G303 PCI radio receiver
-		186f 3005  WR-G305 PCI radio receiver
-		186f 3101  WR-G313 PCI radio receiver
-		186f 3105  WR-G315 PCI radio receiver
-	ac8d  PCI 7620
-	ac8e  PCI7420 CardBus Controller
-		1028 018d  Inspiron 700m/710m
-	ac8f  PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller
-		1028 018d  Inspiron 700m/710m
-	fe00  FireWire Host Controller
-	fe03  12C01A FireWire Host Controller
-104d  Sony Corporation
-	8004  DTL-H2500 [Playstation development board]
-	8009  CXD1947Q i.LINK Controller
-	8039  CXD3222 i.LINK Controller
-	8056  Rockwell HCF 56K modem
-	808a  Memory Stick Controller
-104e  Oak Technology, Inc
-	0017  OTI-64017
-	0107  OTI-107 [Spitfire]
-	0109  Video Adapter
-	0111  OTI-64111 [Spitfire]
-	0217  OTI-64217
-	0317  OTI-64317
-104f  Co-time Computer Ltd
-1050  Winbond Electronics Corp
-	0000  NE2000
-	0001  W83769F
-	0033  W89C33D 802.11 a/b/g BB/MAC
-	0105  W82C105
-	0840  W89C840
-		1050 0001  W89C840 Ethernet Adapter
-		1050 0840  W89C840 Ethernet Adapter
-	0940  W89C940
-	5a5a  W89C940F
-	6692  W6692
-		1043 1702  ISDN Adapter (PCI Bus, D, W)
-		1043 1703  ISDN Adapter (PCI Bus, DV, W)
-		1043 1707  ISDN Adapter (PCI Bus, DV, W)
-		144f 1702  ISDN Adapter (PCI Bus, D, W)
-		144f 1703  ISDN Adapter (PCI Bus, DV, W)
-		144f 1707  ISDN Adapter (PCI Bus, DV, W)
-	9921  W99200F MPEG-1 Video Encoder
-	9922  W99200F/W9922PF MPEG-1/2 Video Encoder
-	9970  W9970CF
-1051  Anigma, Inc.
-1052  ?Young Micro Systems
-1053  Young Micro Systems
-1054  Hitachi, Ltd
-	3009  2Gbps Fibre Channel to PCI HBA 3009
-	300a  4Gbps Fibre Channel to PCI-X HBA 300a
-	300b  4Gbps Fibre Channel to PCI-X HBA 300b
-	300f  ColdFusion 3 Chipset Processor to I/O Controller
-	3010  ColdFusion 3 Chipset Memory Controller Hub
-	3011  ColdFusion 3e Chipset Processor to I/O Controller
-	3012  ColdFusion 3e Chipset Memory Controller Hub
-	3017  Unassigned Hitachi Shared FC Device 3017
-	301d  PCIe-to-PCIe Bridge with Virtualization IO Assist Feature
-1055  Efar Microsystems
-	9130  SLC90E66 [Victory66] IDE
-	9460  SLC90E66 [Victory66] ISA
-	9462  SLC90E66 [Victory66] USB
-	9463  SLC90E66 [Victory66] ACPI
-	e420  LAN9420/LAN9420i
-1056  ICL
-# Motorola made a mistake and used 1507 instead of 1057 in some chips. Please look at the 1507 entry as well when updating this.
-1057  Motorola
-	0001  MPC105 [Eagle]
-	0002  MPC106 [Grackle]
-	0003  MPC8240 [Kahlua]
-	0004  MPC107
-	0006  MPC8245 [Unity]
-	0008  MPC8540
-	0009  MPC8560
-	0012  MPC8548 [PowerQUICC III]
-	0100  MC145575 [HFC-PCI]
-	0431  KTI829c 100VG
-	1073  Nokia N770
-	1219  Nokia N800
-	1801  DSP56301 Digital Signal Processor
-		14fb 0101  Transas Radar Imitator Board [RIM]
-		14fb 0102  Transas Radar Imitator Board [RIM-2]
-		14fb 0202  Transas Radar Integrator Board [RIB-2]
-		14fb 0611  1 channel CAN bus Controller [CanPci-1]
-		14fb 0612  2 channels CAN bus Controller [CanPci-2]
-		14fb 0613  3 channels CAN bus Controller [CanPci-3]
-		14fb 0614  4 channels CAN bus Controller [CanPci-4]
-		14fb 0621  1 channel CAN bus Controller [CanPci2-1]
-		14fb 0622  2 channels CAN bus Controller [CanPci2-2]
-		14fb 0810  Transas VTS Radar Integrator Board [RIB-4]
-		175c 4200  ASI4215 Audio Adapter
-		175c 4300  ASI43xx Audio Adapter
-		175c 4400  ASI4401 Audio Adapter
-		ecc0 0010  Darla
-		ecc0 0020  Gina
-		ecc0 0030  Layla rev.0
-		ecc0 0031  Layla rev.1
-		ecc0 0040  Darla24 rev.0
-		ecc0 0041  Darla24 rev.1
-		ecc0 0050  Gina24 rev.0
-		ecc0 0051  Gina24 rev.1
-		ecc0 0070  Mona rev.0
-		ecc0 0071  Mona rev.1
-		ecc0 0072  Mona rev.2
-	18c0  MPC8265A/8266/8272
-	18c1  MPC8271/MPC8272
-	3052  SM56 Data Fax Modem
-	3055  SM56 Data Fax Modem
-	3410  DSP56361 Digital Signal Processor
-		ecc0 0050  Gina24 rev.0
-		ecc0 0051  Gina24 rev.1
-		ecc0 0060  Layla24
-		ecc0 0070  Mona rev.0
-		ecc0 0071  Mona rev.1
-		ecc0 0072  Mona rev.2
-		ecc0 0080  Mia rev.0
-		ecc0 0081  Mia rev.1
-		ecc0 0090  Indigo
-		ecc0 00a0  Indigo IO
-		ecc0 00b0  Indigo DJ
-		ecc0 0100  3G
-	4801  Raven
-	4802  Falcon
-	4803  Hawk
-	4806  CPX8216
-	4d68  20268
-	5600  SM56 PCI Modem
-		1057 0300  SM56 PCI Speakerphone Modem
-		1057 0301  SM56 PCI Voice Modem
-		1057 0302  SM56 PCI Fax Modem
-		1057 5600  SM56 PCI Voice modem
-		13d2 0300  SM56 PCI Speakerphone Modem
-		13d2 0301  SM56 PCI Voice modem
-		13d2 0302  SM56 PCI Fax Modem
-		1436 0300  SM56 PCI Speakerphone Modem
-		1436 0301  SM56 PCI Voice modem
-		1436 0302  SM56 PCI Fax Modem
-		144f 100c  SM56 PCI Fax Modem
-		1494 0300  SM56 PCI Speakerphone Modem
-		1494 0301  SM56 PCI Voice modem
-		14c8 0300  SM56 PCI Speakerphone Modem
-		14c8 0302  SM56 PCI Fax Modem
-		1668 0300  SM56 PCI Speakerphone Modem
-		1668 0302  SM56 PCI Fax Modem
-	5608  Wildcard X100P
-	5803  MPC5200
-	5806  MCF54 Coldfire
-	5808  MPC8220
-	5809  MPC5200B
-	6400  MPC190 Security Processor (S1 family, encryption)
-	6405  MPC184 Security Processor (S1 family)
-1058  Electronics & Telecommunications RSH
-1059  Teknor Industrial Computers Inc
-105a  Promise Technology, Inc.
-	0d30  PDC20265 (FastTrak100 Lite/Ultra100)
-		1043 8042  AV7266-E South Bridge Promise RAID
-		105a 4d33  Ultra100
-	0d38  20263
-		105a 4d39  Fasttrak66
-	1275  20275
-	3318  PDC20318 (SATA150 TX4)
-	3319  PDC20319 (FastTrak S150 TX4)
-		8086 3427  S875WP1-E mainboard
-	3371  PDC20371 (FastTrak S150 TX2plus)
-	3373  PDC20378 (FastTrak 378/SATA 378)
-		1043 80f5  K8V Deluxe/PC-DL Deluxe motherboard
-		1462 590d  KT6 Delta-FIS2R (MS-6590)
-		1462 702e  K8T NEO FIS2R motherboard
-	3375  PDC20375 (SATA150 TX2plus)
-	3376  PDC20376 (FastTrak 376)
-		1043 809e  A7V8X motherboard
-	3515  PDC40719 [FastTrak TX4300/TX4310]
-	3519  PDC40519 (FastTrak TX4200)
-	3570  20771 (FastTrak TX2300)
-	3571  PDC20571 (FastTrak TX2200)
-	3574  PDC20579 SATAII 150 IDE Controller
-	3577  PDC40779 (SATA 300 779)
-	3d17  PDC40718 (SATA 300 TX4)
-	3d18  PDC20518/PDC40518 (SATAII 150 TX4)
-	3d73  PDC40775 (SATA 300 TX2plus)
-	3d75  PDC20575 (SATAII150 TX2plus)
-	4302  80333 [SuperTrak EX4350]
-	4d30  PDC20267 (FastTrak100/Ultra100)
-		105a 4d33  Ultra100
-		105a 4d39  FastTrak100
-		8086 5744  S845WD1-E mainboard
-	4d33  20246
-		105a 4d33  20246 IDE Controller
-	4d38  PDC20262 (FastTrak66/Ultra66)
-		105a 4d30  Ultra Device on SuperTrak
-		105a 4d33  Ultra66
-		105a 4d39  FastTrak66
-	4d68  PDC20268 (Ultra100 TX2)
-		105a 4d68  Ultra100TX2
-	4d69  20269
-		105a 4d68  Ultra133TX2
-	5275  PDC20276 (MBFastTrak133 Lite)
-		1043 807e  A7V333 motherboard.
-		105a 0275  SuperTrak SX6000 IDE
-		105a 1275  MBFastTrak133 Lite (tm) Controller (RAID mode)
-		1458 b001  MBUltra 133
-	5300  DC5300
-	6268  PDC20270 (FastTrak100 LP/TX2/TX4)
-		105a 4d68  FastTrak100 TX2
-	6269  PDC20271 (FastTrak TX2000)
-		105a 6269  FastTrak TX2/TX2000
-	6300  PDC81731 [FastTrak SX8300]
-	6621  PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite)
-	6622  PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller
-	6624  PDC20621 [FastTrak SX4100]
-	6626  PDC20618 (Ultra 618)
-	6629  PDC20619 (FastTrak TX4000)
-	7275  PDC20277 (SBFastTrak133 Lite)
-	8002  SATAII150 SX8
-	8350  80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300]
-	8650  81384 [SuperTrak EX SAS and SATA RAID Controller]
-		105a 4600  SuperTrak EX4650A
-		105a 4601  SuperTrak EX4650
-		105a 4610  SuperTrak EX4650EL
-		105a 8600  SuperTrak EX8650EL
-		105a 8601  SuperTrak EX8650A
-		105a 8602  SuperTrak EX8654
-		105a 8603  SuperTrak EX8658
-		105a 8604  SuperTrak EX8650
-		105a 8610  SuperTrak EX8650M
-		105a b600  SuperTrak EX16650
-	c350  80333 [SuperTrak EX12350]
-	e350  80333 [SuperTrak EX24350]
-105b  Foxconn International, Inc.
-	0c4d  SiS AC'97 Sound Controller
-105c  Wipro Infotech Limited
-105d  Number 9 Computer Company
-	2309  Imagine 128
-	2339  Imagine 128-II
-		105d 0000  Imagine 128 series 2 4Mb VRAM
-		105d 0001  Imagine 128 series 2 4Mb VRAM
-		105d 0002  Imagine 128 series 2 4Mb VRAM
-		105d 0003  Imagine 128 series 2 4Mb VRAM
-		105d 0004  Imagine 128 series 2 4Mb VRAM
-		105d 0005  Imagine 128 series 2 4Mb VRAM
-		105d 0006  Imagine 128 series 2 4Mb VRAM
-		105d 0007  Imagine 128 series 2 4Mb VRAM
-		105d 0008  Imagine 128 series 2e 4Mb DRAM
-		105d 0009  Imagine 128 series 2e 4Mb DRAM
-		105d 000a  Imagine 128 series 2 8Mb VRAM
-		105d 000b  Imagine 128 series 2 8Mb H-VRAM
-		11a4 000a  Barco Metheus 5 Megapixel
-		13cc 0000  Barco Metheus 5 Megapixel
-		13cc 0004  Barco Metheus 5 Megapixel
-		13cc 0005  Barco Metheus 5 Megapixel
-		13cc 0006  Barco Metheus 5 Megapixel
-		13cc 0008  Barco Metheus 5 Megapixel
-		13cc 0009  Barco Metheus 5 Megapixel
-		13cc 000a  Barco Metheus 5 Megapixel
-		13cc 000c  Barco Metheus 5 Megapixel
-	493d  Imagine 128 T2R [Ticket to Ride]
-		11a4 000a  Barco Metheus 5 Megapixel, Dual Head
-		11a4 000b  Barco Metheus 5 Megapixel, Dual Head
-		13cc 0002  Barco Metheus 4 Megapixel, Dual Head
-		13cc 0003  Barco Metheus 5 Megapixel, Dual Head
-		13cc 0007  Barco Metheus 5 Megapixel, Dual Head
-		13cc 0008  Barco Metheus 5 Megapixel, Dual Head
-		13cc 0009  Barco Metheus 5 Megapixel, Dual Head
-		13cc 000a  Barco Metheus 5 Megapixel, Dual Head
-	5348  Revolution 4
-		105d 0037  Revolution IV-FP AGP (For SGI 1600SW)
-		11a4 0028  PVS5600M
-		11a4 0038  PVS5600D
-105e  Vtech Computers Ltd
-105f  Infotronic America Inc
-1060  United Microelectronics [UMC]
-	0001  UM82C881
-	0002  UM82C886
-	0101  UM8673F
-	0881  UM8881
-	0886  UM8886F
-	0891  UM8891A
-	1001  UM886A
-	673a  UM8886BF
-	673b  EIDE Master/DMA
-	8710  UM8710
-	886a  UM8886A
-	8881  UM8881F
-	8886  UM8886F
-	888a  UM8886A
-	8891  UM8891A
-	9017  UM9017F
-	9018  UM9018
-	9026  UM9026
-	e881  UM8881N
-	e886  UM8886N
-	e88a  UM8886N
-	e891  UM8891N
-1061  I.I.T.
-	0001  AGX016
-	0002  IIT3204/3501
-1062  Maspar Computer Corp
-1063  Ocean Office Automation
-1064  Alcatel
-1065  Texas Microsystems
-1066  PicoPower Technology
-	0000  PT80C826
-	0001  PT86C521 [Vesuvius v1] Host Bridge
-	0002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Master
-	0003  PT86C524 [Nile] PCI-to-PCI Bridge
-	0004  PT86C525 [Nile-II] PCI-to-PCI Bridge
-	0005  National PC87550 System Controller
-	8002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave
-1067  Mitsubishi Electric
-	0301  AccelGraphics AccelECLIPSE
-	0304  AccelGALAXY A2100 [OEM Evans & Sutherland]
-	0308  Tornado 3000 [OEM Evans & Sutherland]
-	1002  VG500 [VolumePro Volume Rendering Accelerator]
-1068  Diversified Technology
-1069  Mylex Corporation
-	0001  DAC960P
-	0002  DAC960PD
-	0010  DAC960PG
-	0020  DAC960LA
-	0050  AcceleRAID 352/170/160 support Device
-		1069 0050  AcceleRAID 352 support Device
-		1069 0052  AcceleRAID 170 support Device
-		1069 0054  AcceleRAID 160 support Device
-	b166  AcceleRAID 600/500/400/Sapphire support Device
-		1014 0242  iSeries 2872 DASD IOA
-		1014 0266  Dual Channel PCI-X U320 SCSI Adapter
-		1014 0278  Dual Channel PCI-X U320 SCSI RAID Adapter
-		1014 02d3  Dual Channel PCI-X U320 SCSI Adapter
-		1014 02d4  Dual Channel PCI-X U320 SCSI RAID Adapter
-		1069 0200  AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID
-		1069 0202  AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID
-		1069 0204  AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID
-		1069 0206  AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID
-	ba55  eXtremeRAID 1100 support Device
-	ba56  eXtremeRAID 2000/3000 support Device
-		1069 0030  eXtremeRAID 3000 support Device
-		1069 0040  eXtremeRAID 2000 support Device
-	ba57  eXtremeRAID 4000/5000 support Device
-		1069 0072  eXtremeRAID 5000 support Device
-106a  Aten Research Inc
-106b  Apple Computer Inc.
-	0001  Bandit PowerPC host bridge
-	0002  Grand Central I/O
-	0003  Control Video
-	0004  PlanB Video-In
-	0007  O'Hare I/O
-	000c  DOS on Mac
-	000e  Hydra Mac I/O
-	0010  Heathrow Mac I/O
-	0017  Paddington Mac I/O
-	0018  UniNorth FireWire
-	0019  KeyLargo USB
-	001e  UniNorth Internal PCI
-	001f  UniNorth PCI
-	0020  UniNorth AGP
-	0021  UniNorth GMAC (Sun GEM)
-	0022  KeyLargo Mac I/O
-	0024  UniNorth/Pangea GMAC (Sun GEM)
-	0025  KeyLargo/Pangea Mac I/O
-	0026  KeyLargo/Pangea USB
-	0027  UniNorth/Pangea AGP
-	0028  UniNorth/Pangea PCI
-	0029  UniNorth/Pangea Internal PCI
-	002d  UniNorth 1.5 AGP
-	002e  UniNorth 1.5 PCI
-	002f  UniNorth 1.5 Internal PCI
-	0030  UniNorth/Pangea FireWire
-	0031  UniNorth 2 FireWire
-		106b 5811  iBook G4 2004
-	0032  UniNorth 2 GMAC (Sun GEM)
-	0033  UniNorth 2 ATA/100
-	0034  UniNorth 2 AGP
-	0035  UniNorth 2 PCI
-	0036  UniNorth 2 Internal PCI
-	003b  UniNorth/Intrepid ATA/100
-	003e  KeyLargo/Intrepid Mac I/O
-	003f  KeyLargo/Intrepid USB
-	0040  K2 KeyLargo USB
-	0041  K2 KeyLargo Mac/IO
-	0042  K2 FireWire
-	0043  K2 ATA/100
-	0045  K2 HT-PCI Bridge
-	0046  K2 HT-PCI Bridge
-	0047  K2 HT-PCI Bridge
-	0048  K2 HT-PCI Bridge
-	0049  K2 HT-PCI Bridge
-	004b  U3 AGP
-	004c  K2 GMAC (Sun GEM)
-	004f  Shasta Mac I/O
-	0050  Shasta IDE
-	0051  Shasta (Sun GEM)
-	0052  Shasta Firewire
-	0053  Shasta PCI Bridge
-	0054  Shasta PCI Bridge
-	0055  Shasta PCI Bridge
-	0057  U3 HT Bridge
-	0058  U3L AGP Bridge
-	0059  U3H AGP Bridge
-	0066  Intrepid2 AGP Bridge
-	0067  Intrepid2 PCI Bridge
-	0068  Intrepid2 PCI Bridge
-	0069  Intrepid2 ATA/100
-	006a  Intrepid2 Firewire
-	006b  Intrepid2 GMAC (Sun GEM)
-	0074  U4 HT Bridge
-	1645  Tigon3 Gigabit Ethernet NIC (BCM5701)
-106c  Hynix Semiconductor
-	8801  Dual Pentium ISA/PCI Motherboard
-	8802  PowerPC ISA/PCI Motherboard
-	8803  Dual Window Graphics Accelerator
-	8804  LAN Controller
-	8805  100-BaseT LAN
-106d  Sequent Computer Systems
-106e  DFI, Inc
-106f  City Gate Development Ltd
-1070  Daewoo Telecom Ltd
-1071  Mitac
-	8160  Mitac 8060B Mobile Platform
-1072  GIT Co Ltd
-1073  Yamaha Corporation
-	0001  3D GUI Accelerator
-	0002  YGV615 [RPA3 3D-Graphics Controller]
-	0003  YMF-740
-	0004  YMF-724
-		1073 0004  YMF724-Based PCI Audio Adapter
-	0005  DS1 Audio
-		1073 0005  DS-XG PCI Audio CODEC
-	0006  DS1 Audio
-	0008  DS1 Audio
-		1073 0008  DS-XG PCI Audio CODEC
-	000a  DS1L Audio
-		1073 0004  DS-XG PCI Audio CODEC
-		1073 000a  DS-XG PCI Audio CODEC
-	000c  YMF-740C [DS-1L Audio Controller]
-		107a 000c  DS-XG PCI Audio CODEC
-	000d  YMF-724F [DS-1 Audio Controller]
-		1073 000d  DS-XG PCI Audio CODEC
-	0010  YMF-744B [DS-1S Audio Controller]
-		1073 0006  DS-XG PCI Audio CODEC
-		1073 0010  DS-XG PCI Audio CODEC
-	0012  YMF-754 [DS-1E Audio Controller]
-		1073 0012  DS-XG PCI Audio Codec
-	0020  DS-1 Audio
-	1000  SW1000XG [XG Factory]
-	2000  DS2416 Digital Mixing Card
-		1073 2000  DS2416 Digital Mixing Card
-1074  NexGen Microsystems
-	4e78  82c500/1
-1075  Advanced Integrations Research
-1076  Chaintech Computer Co. Ltd
-1077  QLogic Corp.
-	1016  ISP10160 Single Channel Ultra3 SCSI Processor
-	1020  ISP1020 Fast-wide SCSI
-	1022  ISP1022 Fast-wide SCSI
-	1080  ISP1080 SCSI Host Adapter
-	1216  ISP12160 Dual Channel Ultra3 SCSI Processor
-		101e 8471  QLA12160 on AMI MegaRAID
-		101e 8493  QLA12160 on AMI MegaRAID
-	1240  ISP1240 SCSI Host Adapter
-	1280  ISP1280 SCSI Host Adapter
-	2020  ISP2020A Fast!SCSI Basic Adapter
-	2100  QLA2100 64-bit Fibre Channel Adapter
-		1077 0001  QLA2100 64-bit Fibre Channel Adapter
-	2200  QLA2200 64-bit Fibre Channel Adapter
-		1077 0002  QLA2200
-	2300  QLA2300 64-bit Fibre Channel Adapter
-	2312  ISP2312-based 2Gb Fibre Channel to PCI-X HBA
-		103c 0131  2Gb Fibre Channel - Single port [A7538A]
-		103c 12ba  2Gb Fibre Channel - Dual port [A6826A]
-	2322  ISP2322-based 2Gb Fibre Channel to PCI-X HBA
-	2422  ISP2422-based 4Gb Fibre Channel to PCI-X HBA
-		103c 12d7  4Gb Fibre Channel [AB379A]
-		103c 12dd  4Gb Fibre Channel [AB429A]
-	2432  ISP2432-based 4Gb Fibre Channel to PCI Express HBA
-	2532  ISP2532-based 8Gb Fibre Channel to PCI Express HBA
-	3022  ISP4022-based Ethernet NIC
-	3032  ISP4032-based Ethernet IPv6 NIC
-	4010  ISP4010-based iSCSI TOE HBA
-	4022  ISP4022-based iSCSI TOE HBA
-	4032  ISP4032-based iSCSI TOE IPv6 HBA
-	5432  SP232-based 4Gb Fibre Channel to PCI Express HBA
-	6312  SP202-based 2Gb Fibre Channel to PCI-X HBA
-	6322  SP212-based 2Gb Fibre Channel to PCI-X HBA
-	7220  IBA7220 InfiniBand HCA
-	8432  ISP2432M-based 10GbE Converged Network Adapter (CNA)
-1078  Cyrix Corporation
-	0000  5510 [Grappa]
-	0001  PCI Master
-	0002  5520 [Cognac]
-	0100  5530 Legacy [Kahlua]
-	0101  5530 SMI [Kahlua]
-	0102  5530 IDE [Kahlua]
-	0103  5530 Audio [Kahlua]
-	0104  5530 Video [Kahlua]
-	0400  ZFMicro PCI Bridge
-	0401  ZFMicro Chipset SMI
-	0402  ZFMicro Chipset IDE
-	0403  ZFMicro Expansion Bus
-1079  I-Bus
-107a  NetWorth
-107b  Gateway 2000
-107c  LG Electronics [Lucky Goldstar Co. Ltd]
-107d  LeadTek Research Inc.
-	0000  P86C850
-	204d  [GeForce 7800 GTX] Winfast PX7800 GTX TDH
-	2134  WinFast 3D S320 II
-	2971  [GeForce FX 5900] WinFast A350 TDH MyViVo
-	6654  Conexant CX23883 [WinFast DTV1800 H]
-107e  Interphase Corporation
-	0001  5515 ATM Adapter [Flipper]
-	0002  100 VG AnyLan Controller
-	0004  5526 Fibre Channel Host Adapter
-	0005  x526 Fibre Channel Host Adapter
-	0008  5525/5575 ATM Adapter (155 Mbit) [Atlantic]
-	9003  5535-4P-BRI-ST
-	9007  5535-4P-BRI-U
-	9008  5535-1P-SR
-	900c  5535-1P-SR-ST
-	900e  5535-1P-SR-U
-	9011  5535-1P-PRI
-	9013  5535-2P-PRI
-	9023  5536-4P-BRI-ST
-	9027  5536-4P-BRI-U
-	9031  5536-1P-PRI
-	9033  5536-2P-PRI
-107f  Data Technology Corporation
-	0802  SL82C105
-1080  Contaq Microsystems
-	0600  82C599
-	c691  Cypress CY82C691
-	c693  82c693
-1081  Supermac Technology
-	0d47  Radius PCI to NuBUS Bridge
-1082  EFA Corporation of America
-1083  Forex Computer Corporation
-	0001  FR710
-1084  Parador
-1085  Tulip Computers Int.B.V.
-1086  J. Bond Computer Systems
-1087  Cache Computer
-1088  Microcomputer Systems (M) Son
-1089  Data General Corporation
-# Formerly Bit3 Computer Corp.
-108a  SBS Technologies
-	0001  VME Bridge Model 617
-	0010  VME Bridge Model 618
-	0040  dataBLIZZARD
-	3000  VME Bridge Model 2706
-108c  Oakleigh Systems Inc.
-108d  Olicom
-	0001  Token-Ring 16/4 PCI Adapter (3136/3137)
-	0002  16/4 Token Ring
-	0004  RapidFire 3139 Token-Ring 16/4 PCI Adapter
-		108d 0004  OC-3139/3140 RapidFire Token-Ring 16/4 Adapter
-	0005  GoCard 3250 Token-Ring 16/4 CardBus PC Card
-	0006  OC-3530 RapidFire Token-Ring 100
-	0007  RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter
-		108d 0007  OC-3141 RapidFire Token-Ring 16/4 Adapter
-	0008  RapidFire 3540 HSTR 100/16/4 PCI Adapter
-		108d 0008  OC-3540 RapidFire HSTR 100/16/4 Adapter
-	0011  OC-2315
-	0012  OC-2325
-	0013  OC-2183/2185
-	0014  OC-2326
-	0019  OC-2327/2250 10/100 Ethernet Adapter
-		108d 0016  OC-2327 Rapidfire 10/100 Ethernet Adapter
-		108d 0017  OC-2250 GoCard 10/100 Ethernet Adapter
-	0021  OC-6151/6152 [RapidFire ATM 155]
-	0022  ATM Adapter
-108e  Sun Microsystems Computer Corp.
-	0001  EBUS
-	1000  EBUS
-	1001  Happy Meal 10/100 Ethernet [hme]
-	1100  RIO EBUS
-		108e 1100  RIO EBUS on Blade 100 motherboard
-# Correction
-	1101  RIO 10/100 Ethernet [eri]
-		108e 1101  RIO GEM on Blade 100 motherboard
-	1102  RIO 1394
-		108e 1102  RIO 1394 on Blade 100 motherboard
-	1103  RIO USB
-		108e 1103  RIO USB on Blade 100 motherboard
-	1647  Broadcom 570x 10/100/1000 Ethernet [bge]
-	1648  Broadcom 570x 10/100/1000 Ethernet [bge]
-	16a7  Broadcom 570x 10/100/1000 Ethernet [bge]
-	16a8  Broadcom 570x 10/100/1000 Ethernet [bge]
-	2bad  GEM 10/100/1000 Ethernet [ge]
-	5000  Simba Advanced PCI Bridge
-		108e 5000  Netra AX1105-500
-	5043  SunPCI Co-processor
-	5ca0  Crypto Accelerator 6000 [mca]
-	6300  Intel 21554 PCI-PCI bus bridge [db21554]
-	6301  Intel 21554 PCI-PCI bus bridge [db21554]
-	6302  Intel 21554 PCI-PCI bus bridge [db21554]
-	6303  Intel 21554 PCI-PCI bus bridge [db21554]
-	6310  Intel 21554 PCI-PCI bus bridge [db21554]
-	6311  Intel 21554 PCI-PCI bus bridge [db21554]
-	6312  Intel 21554 PCI-PCI bus bridge [db21554]
-	6313  Intel 21554 PCI-PCI bus bridge [db21554]
-	6320  Intel 21554 PCI-PCI bus bridge [db21554]
-	6323  Intel 21554 PCI-PCI bus bridge [db21554]
-	6330  Intel 21554 PCI-PCI bus bridge [db21554]
-	6331  Intel 21554 PCI-PCI bus bridge [db21554]
-	6332  Intel 21554 PCI-PCI bus bridge [db21554]
-	6333  Intel 21554 PCI-PCI bus bridge [db21554]
-	6340  Intel 21554 PCI-PCI bus bridge [db21554]
-	6343  Intel 21554 PCI-PCI bus bridge [db21554]
-	6350  Intel 21554 PCI-PCI bus bridge [db21554]
-	6353  Intel 21554 PCI-PCI bus bridge [db21554]
-	6722  Intel 21554 PCI-PCI bus bridge [db21554]
-	676e  SunPCiIII
-	7063  SunPCiII / SunPCiIIpro
-	8000  Psycho PCI Bus Module
-	8001  Schizo PCI Bus Module
-	8002  Schizo+ PCI Bus Module
-	80f0  PCIe switch [px]
-	80f8  PCIe switch [px]
-	9010  PCIe/PCI bridge switch [pxb_plx]
-	9020  PCIe/PCI bridge switch [pxb_plx]
-	9102  Davicom Fast Ethernet driver for Davicom DM9102A [dmfe]
-	a000  Psycho UPA-PCI Bus Module [pcipsy]
-	a001  Psycho UPA-PCI Bus Module [pcipsy]
-		108e a001  Ultra IIe on Blade 100 motherboard
-	a801  Schizo Fireplane-PCI bus bridge module [pcisch]
-	abba  Cassini 10/100/1000
-	abcd  Multithreaded 10 Gigabit Ethernet Network Controller
-	c416  Sun Fire System/System Controller Interface chip [sbbc]
-108f  Systemsoft
-1090  Compro Computer Services, Inc.
-1091  Intergraph Corporation
-	0020  3D graphics processor
-	0021  3D graphics processor w/Texturing
-	0040  3D graphics frame buffer
-	0041  3D graphics frame buffer
-	0060  Proprietary bus bridge
-	00e4  Powerstorm 4D50T
-	0720  Motion JPEG codec
-	0780  Intense3D Wildcat 3410 (MSMT496)
-	07a0  Sun Expert3D-Lite Graphics Accelerator
-	1091  Sun Expert3D Graphics Accelerator
-1092  Diamond Multimedia Systems
-	0028  Viper V770
-		1092 4a00  Viper V770 32MB
-	00a0  Speedstar Pro SE
-	00a8  Speedstar 64
-	0550  Viper V550
-	08d4  Supra 2260 Modem
-	094c  SupraExpress 56i Pro
-	1001  Video Crunch It 1001 capture card
-	1092  Viper V330
-	6120  Maximum DVD
-	8810  Stealth SE
-	8811  Stealth 64/SE
-	8880  Stealth
-	8881  Stealth
-	88b0  Stealth 64
-	88b1  Stealth 64
-	88c0  Stealth 64
-	88c1  Stealth 64
-	88d0  Stealth 64
-	88d1  Stealth 64
-	88f0  Stealth 64
-	88f1  Stealth 64
-	9999  DMD-I0928-1 "Monster sound" sound chip
-1093  National Instruments
-	0160  PCI-DIO-96
-	0162  PCI-MIO-16XE-50
-	1150  PCI-DIO-32HS High Speed Digital I/O Board
-	1170  PCI-MIO-16XE-10
-	1180  PCI-MIO-16E-1
-	1190  PCI-MIO-16E-4
-	1310  PCI-6602
-	1330  PCI-6031E
-	1350  PCI-6071E
-	14e0  PCI-6110
-	14f0  PCI-6111
-	17d0  PCI-6503
-	1870  PCI-6713
-	1880  PCI-6711
-	18b0  PCI-6052E
-	2410  PCI-6733
-	2890  PCI-6036E
-	2a60  PCI-6023E
-	2a70  PCI-6024E
-	2a80  PCI-6025E
-	2c80  PCI-6035E
-	2ca0  PCI-6034E
-	70a9  PCI-6528 (Digital I/O at 60V)
-	70b8  PCI-6251 [M Series - High Speed Multifunction DAQ]
-	7144  PXI-5124 (12-bit 200 MS/s Digitizer)
-	b001  IMAQ-PCI-1408
-	b011  IMAQ-PXI-1408
-	b021  IMAQ-PCI-1424
-	b031  IMAQ-PCI-1413
-	b041  IMAQ-PCI-1407
-	b051  IMAQ-PXI-1407
-	b061  IMAQ-PCI-1411
-	b071  IMAQ-PCI-1422
-	b081  IMAQ-PXI-1422
-	b091  IMAQ-PXI-1411
-	c801  PCI-GPIB
-	c831  PCI-GPIB bridge
-1094  First International Computers [FIC]
-# nee CMD Technology Inc
-1095  Silicon Image, Inc.
-	0240  Adaptec AAR-1210SA SATA HostRAID Controller
-	0640  PCI0640
-	0643  PCI0643
-	0646  PCI0646
-	0647  PCI0647
-	0648  PCI0648
-		1043 8025  CUBX motherboard
-	0649  SiI 0649 Ultra ATA/100 PCI to ATA Host Controller
-		0e11 005d  Integrated Ultra ATA-100 Dual Channel Controller
-		0e11 007e  Integrated Ultra ATA-100 IDE RAID Controller
-		101e 0649  AMI MegaRAID IDE 100 Controller
-	0650  PBC0650A
-	0670  USB0670
-		1095 0670  USB0670
-	0673  USB0673
-	0680  PCI0680 Ultra ATA-133 Host Controller
-		1095 0680  SiI 0680 ATA/133 Controller
-		1095 3680  Winic W-680 (Silicon Image 680 based)
-	3112  SiI 3112 [SATALink/SATARaid] Serial ATA Controller
-		1095 3112  SiI 3112 SATALink Controller
-		1095 6112  SiI 3112 SATARaid Controller
-		9005 0250  SATAConnect 1205SA Host Controller
-	3114  SiI 3114 [SATALink/SATARaid] Serial ATA Controller
-		1095 3114  SiI 3114 SATALink Controller
-		1095 6114  SiI 3114 SATARaid Controller
-	3124  SiI 3124 PCI-X Serial ATA Controller
-		1095 3124  SiI 3124 PCI-X Serial ATA Controller
-	3132  SiI 3132 Serial ATA Raid II Controller
-	3512  SiI 3512 [SATALink/SATARaid] Serial ATA Controller
-		1095 3512  SiI 3512 SATALink Controller
-		1095 6512  SiI 3512 SATARaid Controller
-	3531  Sil 3531 [SATALink/SATARaid] Serial ATA Controller
-1096  Alacron
-1097  Appian Technology
-1098  Quantum Designs (H.K.) Ltd
-	0001  QD-8500
-	0002  QD-8580
-1099  Samsung Electronics Co., Ltd
-109a  Packard Bell
-109b  Gemlight Computer Ltd.
-109c  Megachips Corporation
-109d  Zida Technologies Ltd.
-109e  Brooktree Corporation
-	032e  Bt878 Video Capture
-	0350  Bt848 Video Capture
-	0351  Bt849A Video capture
-	0369  Bt878 Video Capture
-		1002 0001  TV-Wonder
-		1002 0003  TV-Wonder/VE
-	036c  Bt879(??) Video Capture
-		13e9 0070  Win/TV (Video Section)
-	036e  Bt878 Video Capture
-		0070 13eb  WinTV Series
-		0070 ff01  Viewcast Osprey 200
-		0071 0101  DigiTV PCI
-		107d 6606  WinFast TV 2000
-		11bd 0012  PCTV pro (TV + FM stereo receiver)
-		11bd 001c  PCTV Sat (DBC receiver)
-		127a 0001  Bt878 Mediastream Controller NTSC
-		127a 0002  Bt878 Mediastream Controller PAL BG
-		127a 0003  Bt878a Mediastream Controller PAL BG
-		127a 0048  Bt878/832 Mediastream Controller
-		144f 3000  MagicTView CPH060 - Video
-		1461 0002  TV98 Series (TV/No FM/Remote)
-		1461 0003  AverMedia UltraTV PCI 350
-		1461 0004  AVerTV WDM Video Capture
-		1461 0761  AverTV DVB-T
-		1461 0771  AverMedia AVerTV DVB-T 771
-		14f1 0001  Bt878 Mediastream Controller NTSC
-		14f1 0002  Bt878 Mediastream Controller PAL BG
-		14f1 0003  Bt878a Mediastream Controller PAL BG
-		14f1 0048  Bt878/832 Mediastream Controller
-		1822 0001  VisionPlus DVB card
-		1851 1850  FlyVideo'98 - Video
-		1851 1851  FlyVideo II
-		1852 1852  FlyVideo'98 - Video (with FM Tuner)
-		18ac d500  DViCO FusionHDTV5 Lite
-		270f fc00  Digitop DTT-1000
-		bd11 1200  PCTV pro (TV + FM stereo receiver)
-	036f  Bt879 Video Capture
-		127a 0044  Bt879 Video Capture NTSC
-		127a 0122  Bt879 Video Capture PAL I
-		127a 0144  Bt879 Video Capture NTSC
-		127a 0222  Bt879 Video Capture PAL BG
-		127a 0244  Bt879a Video Capture NTSC
-		127a 0322  Bt879 Video Capture NTSC
-		127a 0422  Bt879 Video Capture NTSC
-		127a 1122  Bt879 Video Capture PAL I
-		127a 1222  Bt879 Video Capture PAL BG
-		127a 1322  Bt879 Video Capture NTSC
-		127a 1522  Bt879a Video Capture PAL I
-		127a 1622  Bt879a Video Capture PAL BG
-		127a 1722  Bt879a Video Capture NTSC
-		14f1 0044  Bt879 Video Capture NTSC
-		14f1 0122  Bt879 Video Capture PAL I
-		14f1 0144  Bt879 Video Capture NTSC
-		14f1 0222  Bt879 Video Capture PAL BG
-		14f1 0244  Bt879a Video Capture NTSC
-		14f1 0322  Bt879 Video Capture NTSC
-		14f1 0422  Bt879 Video Capture NTSC
-		14f1 1122  Bt879 Video Capture PAL I
-		14f1 1222  Bt879 Video Capture PAL BG
-		14f1 1322  Bt879 Video Capture NTSC
-		14f1 1522  Bt879a Video Capture PAL I
-		14f1 1622  Bt879a Video Capture PAL BG
-		14f1 1722  Bt879a Video Capture NTSC
-		1851 1850  FlyVideo'98 - Video
-		1851 1851  FlyVideo II
-		1852 1852  FlyVideo'98 - Video (with FM Tuner)
-	0370  Bt880 Video Capture
-		1851 1850  FlyVideo'98
-		1851 1851  FlyVideo'98 EZ - video
-		1852 1852  FlyVideo'98 (with FM Tuner)
-	0878  Bt878 Audio Capture
-		0070 13eb  WinTV Series
-		0070 ff01  Viewcast Osprey 200
-		0071 0101  DigiTV PCI
-		1002 0001  TV-Wonder
-		1002 0003  TV-Wonder/VE
-		11bd 0012  PCTV pro (TV + FM stereo receiver, audio section)
-		11bd 001c  PCTV Sat (DBC receiver)
-		127a 0001  Bt878 Video Capture (Audio Section)
-		127a 0002  Bt878 Video Capture (Audio Section)
-		127a 0003  Bt878 Video Capture (Audio Section)
-		127a 0048  Bt878 Video Capture (Audio Section)
-		13e9 0070  Win/TV (Audio Section)
-		144f 3000  MagicTView CPH060 - Audio
-		1461 0002  Avermedia PCTV98 Audio Capture
-		1461 0003  UltraTV PCI 350
-		1461 0004  AVerTV WDM Audio Capture
-		1461 0761  AVerTV DVB-T
-		1461 0771  AverMedia AVerTV DVB-T 771
-		14f1 0001  Bt878 Video Capture (Audio Section)
-		14f1 0002  Bt878 Video Capture (Audio Section)
-		14f1 0003  Bt878 Video Capture (Audio Section)
-		14f1 0048  Bt878 Video Capture (Audio Section)
-		1822 0001  VisionPlus DVB Card
-		18ac d500  DViCO FusionHDTV5 Lite
-		270f fc00  Digitop DTT-1000
-		bd11 1200  PCTV pro (TV + FM stereo receiver, audio section)
-	0879  Bt879 Audio Capture
-		127a 0044  Bt879 Video Capture (Audio Section)
-		127a 0122  Bt879 Video Capture (Audio Section)
-		127a 0144  Bt879 Video Capture (Audio Section)
-		127a 0222  Bt879 Video Capture (Audio Section)
-		127a 0244  Bt879 Video Capture (Audio Section)
-		127a 0322  Bt879 Video Capture (Audio Section)
-		127a 0422  Bt879 Video Capture (Audio Section)
-		127a 1122  Bt879 Video Capture (Audio Section)
-		127a 1222  Bt879 Video Capture (Audio Section)
-		127a 1322  Bt879 Video Capture (Audio Section)
-		127a 1522  Bt879 Video Capture (Audio Section)
-		127a 1622  Bt879 Video Capture (Audio Section)
-		127a 1722  Bt879 Video Capture (Audio Section)
-		14f1 0044  Bt879 Video Capture (Audio Section)
-		14f1 0122  Bt879 Video Capture (Audio Section)
-		14f1 0144  Bt879 Video Capture (Audio Section)
-		14f1 0222  Bt879 Video Capture (Audio Section)
-		14f1 0244  Bt879 Video Capture (Audio Section)
-		14f1 0322  Bt879 Video Capture (Audio Section)
-		14f1 0422  Bt879 Video Capture (Audio Section)
-		14f1 1122  Bt879 Video Capture (Audio Section)
-		14f1 1222  Bt879 Video Capture (Audio Section)
-		14f1 1322  Bt879 Video Capture (Audio Section)
-		14f1 1522  Bt879 Video Capture (Audio Section)
-		14f1 1622  Bt879 Video Capture (Audio Section)
-		14f1 1722  Bt879 Video Capture (Audio Section)
-	0880  Bt880 Audio Capture
-	2115  BtV 2115 Mediastream controller
-	2125  BtV 2125 Mediastream controller
-	2164  BtV 2164
-	2165  BtV 2165
-	8230  Bt8230 ATM Segment/Reassembly Ctrlr (SRC)
-	8472  Bt8472
-	8474  Bt8474
-109f  Trigem Computer Inc.
-10a0  Meidensha Corporation
-10a1  Juko Electronics Ind. Co. Ltd
-10a2  Quantum Corporation
-10a3  Everex Systems Inc
-10a4  Globe Manufacturing Sales
-10a5  Smart Link Ltd.
-	3052  SmartPCI562 56K Modem
-	5449  SmartPCI561 modem
-10a6  Informtech Industrial Ltd.
-10a7  Benchmarq Microelectronics
-10a8  Sierra Semiconductor
-	0000  STB Horizon 64
-10a9  Silicon Graphics, Inc.
-	0001  Crosstalk to PCI Bridge
-	0002  Linc I/O controller
-	0003  IOC3 I/O controller
-	0004  O2 MACE
-	0005  RAD Audio
-	0006  HPCEX
-	0007  RPCEX
-	0008  DiVO VIP
-	0009  AceNIC Gigabit Ethernet
-		10a9 8002  AceNIC Gigabit Ethernet
-	0010  AMP Video I/O
-	0011  GRIP
-	0012  SGH PSHAC GSN
-	0208  SSIM1 SAS Adapter
-	1001  Magic Carpet
-	1002  Lithium
-	1003  Dual JPEG 1
-	1004  Dual JPEG 2
-	1005  Dual JPEG 3
-	1006  Dual JPEG 4
-	1007  Dual JPEG 5
-	1008  Cesium
-	100a  IOC4 I/O controller
-	1504  SSIM1 Fibre Channel Adapter
-	2001  Fibre Channel
-	2002  ASDE
-	4001  TIO-CE PCI Express Bridge
-	4002  TIO-CE PCI Express Port
-	8001  O2 1394
-	8002  G-net NT
-	8010  Broadcom e-net [SGI IO9/IO10 BaseIO]
-	8018  Broadcom e-net [SGI A330 Server BaseIO]
-10aa  ACC Microelectronics
-	0000  ACCM 2188
-	2051  2051 CPU bridge
-	5842  2051 ISA bridge
-10ab  Digicom
-10ac  Honeywell IAC
-10ad  Symphony Labs
-	0001  W83769F
-	0003  SL82C103
-	0005  SL82C105
-	0103  SL82c103
-	0105  SL82c105
-	0565  W83C553F/W83C554F
-10ae  Cornerstone Technology
-10af  Micro Computer Systems Inc
-10b0  CardExpert Technology
-10b1  Cabletron Systems Inc
-10b2  Raytheon Company
-10b3  Databook Inc
-	3106  DB87144
-	b106  DB87144
-10b4  STB Systems Inc
-	1b1d  Velocity 128 3D
-		10b4 237e  Velocity 4400
-10b5  PLX Technology, Inc.
-	0001  i960 PCI bus interface
-	1024  Acromag, Inc. IndustryPack Carrier Card
-	1042  Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36
-	106a  Dual OX16C952 4 port serial adapter [Megawolf Romulus/4]
-	1076  VScom 800 8 port serial adaptor
-	1077  VScom 400 4 port serial adaptor
-	1078  VScom 210 2 port serial and 1 port parallel adaptor
-	1103  VScom 200 2 port serial adaptor
-	1146  VScom 010 1 port parallel adaptor
-	1147  VScom 020 2 port parallel adaptor
-	2540  IXXAT CAN-Interface PC-I 04/PCI
-	2724  Thales PCSM Security Card
-	6140  PCI6140 32-bit 33MHz PCI-to-PCI Bridge
-	6150  PCI6150 32-bit 33MHz PCI-to-PCI Bridge
-	6152  PCI6152 32-bit 66MHz PCI-to-PCI Bridge
-	6154  PCI6154 64-bit 66MHz PCI-to-PCI Bridge
-	6254  PCI6254 64-bit 66MHz PCI-to-PCI Bridge
-	6466  PCI6466 64-bit 66MHz PCI-to-PCI Bridge
-	6520  PCI6520 64-bit 133MHz PCI-X-to-PCI-X Bridge
-	6540  PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge
-		1775 1100  CR11 Single Board Computer
-		4c53 10e0  PSL09 PrPMC
-	6541  PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side)
-		1775 1100  CR11 Single Board Computer
-		4c53 10e0  PSL09 PrPMC
-	6542  PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side)
-		1775 1100  CR11 Single Board Computer
-		4c53 10e0  PSL09 PrPMC
-	8111  PEX 8111 PCI Express-to-PCI Bridge
-	8112  PEX8112 x1 Lane PCI Express-to-PCI Bridge
-	8114  PEX 8114 PCI Express-to-PCI/PCI-X Bridge
-	8311  PEX8311 x1 Lane PCI Express-to-Generic Local Bus Bridge
-	8505  PEX 8505 5-lane, 5-port PCI Express Switch
-	8508  PEX 8508 8-lane, 5-port PCI Express Switch
-	8509  PEX 8509 8-lane, 8-port PCI Express Switch
-	8512  PEX 8512 12-lane, 5-port PCI Express Switch
-	8516  PEX 8516  Versatile PCI Express Switch
-	8517  PEX 8517 16-lane, 5-port PCI Express Switch
-	8518  PEX 8518 16-lane, 5-port PCI Express Switch
-	8524  PEX 8524 24-lane, 6-port PCI Express Switch
-	8525  PEX 8525 24-lane, 5-port PCI Express Switch
-	8532  PEX 8532  Versatile PCI Express Switch
-	8533  PEX 8533 32-lane, 6-port PCI Express Switch
-	8547  PEX 8547 48-lane, 3-port PCI Express Switch
-	8548  PEX 8548 48-lane, 9-port PCI Express Switch
-	9030  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
-		10b5 2862  Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board
-		10b5 2906  Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board
-		10b5 2940  Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board
-		10b5 2977  IXXAT iPC-I XC16/PCI CAN Board
-		10b5 2978  SH ARC-PCIu SOHARD ARCNET card
-		10b5 3025  Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board
-		10b5 3068  Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board
-		12fe 0111  CPCI-ASIO4 (ESD 4-port Serial Interface Board)
-		1397 3136  4xS0-ISDN PCI Adapter
-		1397 3137  S2M-E1-ISDN PCI Adapter
-		1518 0200  Kontron ThinkIO-C
-		15ed 1002  MCCS 8-port Serial Hot Swap
-		15ed 1003  MCCS 16-port Serial Hot Swap
-	9036  9036
-	9050  PCI <-> IOBus Bridge
-		10b5 1067  IXXAT CAN i165
-		10b5 114e  Wasco WITIO PCI168extended
-		10b5 1169  Wasco OPTOIO32standard 32 digital in, 32 digital out
-		10b5 1172  IK220 (Heidenhain)
-		10b5 2036  SatPak GPS
-		10b5 2221  Alpermann+Velte PCL PCI LV: Timecode Reader Board
-		10b5 2273  SH ARC-PCI SOHARD ARCNET card
-		10b5 2431  Alpermann+Velte PCL PCI D: Timecode Reader Board
-		10b5 2905  Alpermann+Velte PCI TS: Time Synchronisation Board
-		10b5 3196  Goramo PLX200SYN sync serial card
-		10b5 9050  PCI-I04 PCI Passive PC/CAN Interface
-		1498 0362  TPMC866 8 Channel Serial Card
-		1522 0001  RockForce 4 Port V.90 Data/Fax/Voice Modem
-		1522 0002  RockForce 2 Port V.90 Data/Fax/Voice Modem
-		1522 0003  RockForce 6 Port V.90 Data/Fax/Voice Modem
-		1522 0004  RockForce 8 Port V.90 Data/Fax/Voice Modem
-		1522 0010  RockForce2000 4 Port V.90 Data/Fax/Voice Modem
-		1522 0020  RockForce2000 2 Port V.90 Data/Fax/Voice Modem
-		15ed 1000  Macrolink MCCS 8-port Serial
-		15ed 1001  Macrolink MCCS 16-port Serial
-		15ed 1002  Macrolink MCCS 8-port Serial Hot Swap
-		15ed 1003  Macrolink MCCS 16-port Serial Hot Swap
-		5654 2036  OpenSwitch 6 Telephony card
-		5654 3132  OpenSwitch 12 Telephony card
-		5654 5634  OpenLine4 Telephony Card
-		d531 c002  PCIntelliCAN 2xSJA1000 CAN bus
-		d84d 4006  EX-4006 1P
-		d84d 4008  EX-4008 1P EPP/ECP
-		d84d 4014  EX-4014 2P
-		d84d 4018  EX-4018 3P EPP/ECP
-		d84d 4025  EX-4025 1S(16C550) RS-232
-		d84d 4027  EX-4027 1S(16C650) RS-232
-		d84d 4028  EX-4028 1S(16C850) RS-232
-		d84d 4036  EX-4036 2S(16C650) RS-232
-		d84d 4037  EX-4037 2S(16C650) RS-232
-		d84d 4038  EX-4038 2S(16C850) RS-232
-		d84d 4052  EX-4052 1S(16C550) RS-422/485
-		d84d 4053  EX-4053 2S(16C550) RS-422/485
-		d84d 4055  EX-4055 4S(16C550) RS-232
-		d84d 4058  EX-4055 4S(16C650) RS-232
-		d84d 4065  EX-4065 8S(16C550) RS-232
-		d84d 4068  EX-4068 8S(16C650) RS-232
-		d84d 4078  EX-4078 2S(16C552) RS-232+1P
-	9052  PCI9052 PCI <-> IOBus Bridge
-	9054  PCI9054 32-bit 33MHz PCI <-> IOBus Bridge
-		10b5 2455  Wessex Techology PHIL-PCI
-		10b5 2696  Innes Corp AM Radcap card
-		10b5 2717  Innes Corp Auricon card
-		10b5 2844  Innes Corp TVS Encoder card
-		12c7 4001  Intel Dialogic DM/V960-4T1 PCI
-		12d9 0002  PCI Prosody Card rev 1.5
-		14b4 d100  Dektec DTA-100
-		14b4 d114  Dektec DTA-120
-		16df 0011  PIKA PrimeNet MM PCI
-		16df 0012  PIKA PrimeNet MM cPCI 8
-		16df 0013  PIKA PrimeNet MM cPCI 8 (without CAS Signaling)
-		16df 0014  PIKA PrimeNet MM cPCI 4
-		16df 0015  PIKA Daytona MM
-		16df 0016  PIKA InLine MM
-	9056  PCI9056 32-bit 66MHz PCI <-> IOBus Bridge
-		10b5 2979  CellinkBlade 11 - CPCI board VoATM AAL1
-		14b4 d140  Dektec DTA-140
-	9060  PCI9060 32-bit 33MHz PCI <-> IOBus Bridge
-	906d  9060SD
-		125c 0640  Aries 16000P
-	906e  9060ES
-	9080  PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge
-		103c 10eb  (Agilent) E2777B 83K Series Optical Communication Interface
-		103c 10ec  (Agilent) E6978-66442 PCI CIC
-		10b5 1123  Sectra KK631 encryption board
-		10b5 9080  9080 [real subsystem ID not set]
-		129d 0002  Aculab PCI Prosidy card
-		12d9 0002  PCI Prosody Card
-		12df 4422  4422PCI ["Do-All" Telemetry Data Aquisition System]
-		1517 000b  ECSG-1R3ADC-PMC Clock synthesizer
-	9656  PCI9656 PCI <-> IOBus Bridge
-		1517 000f  ECDR-GC314-PMC Receiver
-		1885 0700  Tsunami FPGA PMC with Altera Stratix S40
-		1885 0701  Tsunami FPGA PMC with Altera Stratix S30
-	bb04  B&B 3PCIOSD1A Isolated PCI Serial
-	c001  CronyxOmega-PCI (8-port RS232)
-10b6  Madge Networks
-	0001  Smart 16/4 PCI Ringnode
-	0002  Smart 16/4 PCI Ringnode Mk2
-		10b6 0002  Smart 16/4 PCI Ringnode Mk2
-		10b6 0006  16/4 CardBus Adapter
-	0003  Smart 16/4 PCI Ringnode Mk3
-		0e11 b0fd  Compaq NC4621 PCI, 4/16, WOL
-		10b6 0003  Smart 16/4 PCI Ringnode Mk3
-		10b6 0007  Presto PCI Plus Adapter
-	0004  Smart 16/4 PCI Ringnode Mk1
-	0006  16/4 Cardbus Adapter
-		10b6 0006  16/4 CardBus Adapter
-	0007  Presto PCI Adapter
-		10b6 0007  Presto PCI
-	0009  Smart 100/16/4 PCI-HS Ringnode
-		10b6 0009  Smart 100/16/4 PCI-HS Ringnode
-	000a  Smart 100/16/4 PCI Ringnode
-		10b6 000a  Smart 100/16/4 PCI Ringnode
-	000b  16/4 CardBus Adapter Mk2
-		10b6 0008  16/4 CardBus Adapter Mk2
-		10b6 000b  16/4 Cardbus Adapter Mk2
-	000c  RapidFire 3140V2 16/4 TR Adapter
-		10b6 000c  RapidFire 3140V2 16/4 TR Adapter
-	1000  Collage 25/155 ATM Client Adapter
-	1001  Collage 155 ATM Server Adapter
-10b7  3Com Corporation
-	0001  3c985 1000BaseSX (SX/TX)
-	0013  AR5212 802.11abg NIC (3CRDAG675)
-		10b7 2031  3CRDAG675 11a/b/g Wireless PCI Adapter
-	0910  3C910-A01
-	1006  MINI PCI type 3B Data Fax Modem
-	1007  Mini PCI 56k Winmodem
-		10b7 615b  Mini PCI 56K Modem
-		10b7 615c  Mini PCI 56K Modem
-	1201  3c982-TXM 10/100baseTX Dual Port A [Hydra]
-	1202  3c982-TXM 10/100baseTX Dual Port B [Hydra]
-	1700  3c940 10/100/1000Base-T [Marvell]
-		1043 80eb  A7V600/P4P800/K8V motherboard
-		10b7 0010  3C940 Gigabit LOM Ethernet Adapter
-		10b7 0020  3C941 Gigabit LOM Ethernet Adapter
-		147b 1407  KV8-MAX3 motherboard
-	3390  3c339 TokenLink Velocity
-	3590  3c359 TokenLink Velocity XL
-		10b7 3590  TokenLink Velocity XL Adapter (3C359/359B)
-	4500  3c450 HomePNA [Tornado]
-	5055  3c555 Laptop Hurricane
-	5057  3c575 Megahertz 10/100 LAN CardBus [Boomerang]
-		10b7 5a57  3C575 Megahertz 10/100 LAN Cardbus PC Card
-	5157  3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone]
-		10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card
-	5257  3cCFE575CT CardBus [Cyclone]
-		10b7 5c57  FE575C-3Com 10/100 LAN CardBus-Fast Ethernet
-	5900  3c590 10BaseT [Vortex]
-	5920  3c592 EISA 10mbps Demon/Vortex
-	5950  3c595 100BaseTX [Vortex]
-	5951  3c595 100BaseT4 [Vortex]
-	5952  3c595 100Base-MII [Vortex]
-	5970  3c597 EISA Fast Demon/Vortex
-	5b57  3c595 Megahertz 10/100 LAN CardBus [Boomerang]
-		10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card
-	6000  3CRSHPW796 [OfficeConnect Wireless CardBus]
-	6001  3com 3CRWE154G72 [Office Connect Wireless LAN Adapter]
-	6055  3c556 Hurricane CardBus [Cyclone]
-	6056  3c556B CardBus [Tornado]
-		10b7 6556  10/100 Mini PCI Ethernet Adapter
-	6560  3cCFE656 CardBus [Cyclone]
-		10b7 656a  3CCFEM656 10/100 LAN+56K Modem CardBus
-	6561  3cCFEM656 10/100 LAN+56K Modem CardBus
-		10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus
-	6562  3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone]
-		10b7 656b  3CCFEM656B 10/100 LAN+56K Modem CardBus
-	6563  3cCFEM656B 10/100 LAN+56K Modem CardBus
-		10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus
-	6564  3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado]
-	7646  3cSOHO100-TX Hurricane
-	7770  3CRWE777 PCI(PLX) Wireless Adaptor [Airconnect]
-	7940  3c803 FDDILink UTP Controller
-	7980  3c804 FDDILink SAS Controller
-	7990  3c805 FDDILink DAS Controller
-	80eb  3c940B 10/100/1000Base-T
-	8811  Token ring
-	9000  3c900 10BaseT [Boomerang]
-	9001  3c900 10Mbps Combo [Boomerang]
-	9004  3c900B-TPO Etherlink XL [Cyclone]
-		10b7 9004  3C900B-TPO Etherlink XL TPO 10Mb
-	9005  3c900B-Combo Etherlink XL [Cyclone]
-		10b7 9005  3C900B-Combo Etherlink XL Combo
-	9006  3c900B-TPC Etherlink XL [Cyclone]
-	900a  3c900B-FL 10base-FL [Cyclone]
-	9050  3c905 100BaseTX [Boomerang]
-	9051  3c905 100BaseT4 [Boomerang]
-	9054  3C905B-TX Fast Etherlink XL PCI
-		10b7 9054  3C905B-TX Fast Etherlink XL PCI
-	9055  3c905B 100BaseTX [Cyclone]
-		1028 0080  3C905B Fast Etherlink XL 10/100
-		1028 0081  3C905B Fast Etherlink XL 10/100
-		1028 0082  3C905B Fast Etherlink XL 10/100
-		1028 0083  3C905B Fast Etherlink XL 10/100
-		1028 0084  3C905B Fast Etherlink XL 10/100
-		1028 0085  3C905B Fast Etherlink XL 10/100
-		1028 0086  3C905B Fast Etherlink XL 10/100
-		1028 0087  3C905B Fast Etherlink XL 10/100
-		1028 0088  3C905B Fast Etherlink XL 10/100
-		1028 0089  3C905B Fast Etherlink XL 10/100
-		1028 0090  3C905B Fast Etherlink XL 10/100
-		1028 0091  3C905B Fast Etherlink XL 10/100
-		1028 0092  3C905B Fast Etherlink XL 10/100
-		1028 0093  3C905B Fast Etherlink XL 10/100
-		1028 0094  3C905B Fast Etherlink XL 10/100
-		1028 0095  3C905B Fast Etherlink XL 10/100
-		1028 0096  3C905B Fast Etherlink XL 10/100
-		1028 0097  3C905B Fast Etherlink XL 10/100
-		1028 0098  3C905B Fast Etherlink XL 10/100
-		1028 0099  3C905B Fast Etherlink XL 10/100
-		10b7 9055  3C905B Fast Etherlink XL 10/100
-	9056  3c905B-T4 Fast EtherLink XL [Cyclone]
-	9058  3c905B Deluxe Etherlink 10/100/BNC [Cyclone]
-	905a  3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone]
-	9200  3c905C-TX/TX-M [Tornado]
-		1028 0095  3C920 Integrated Fast Ethernet Controller
-		1028 0097  3C920 Integrated Fast Ethernet Controller
-		1028 00b4  OptiPlex GX110
-		1028 00d8  Precision 530
-		1028 00fe  Optiplex GX240
-		1028 012a  3C920 Integrated Fast Ethernet Controller [Latitude C640]
-		10b7 1000  3C905CX-TX/TX-M Fast Etherlink for PC Management NIC
-		10b7 7000  10/100 Mini PCI Ethernet Adapter
-		10f1 2466  Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller)
-		144d c005  X10 Laptop
-	9201  3C920B-EMB Integrated Fast Ethernet Controller [Tornado]
-		1043 80ab  A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller
-	9202  3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller
-	9210  3C920B-EMB-WNM Integrated Fast Ethernet Controller
-	9300  3CSOHO100B-TX 910-A01 [tulip]
-	9800  3c980-TX Fast Etherlink XL Server Adapter [Cyclone]
-		10b7 9800  3c980-TX Fast Etherlink XL Server Adapter
-	9805  3c980-C 10/100baseTX NIC [Python-T]
-		10b7 1201  EtherLink Server 10/100 Dual Port A
-		10b7 1202  EtherLink Server 10/100 Dual Port B
-		10b7 9805  3c980 10/100baseTX NIC [Python-T]
-		10f1 2462  Thunder K7 S2462
-	9900  3C990-TX [Typhoon]
-	9902  3CR990-TX-95 [Typhoon 56-bit]
-	9903  3CR990-TX-97 [Typhoon 168-bit]
-	9904  3C990B-TX-M/3C990BSVR [Typhoon2]
-		10b7 1000  3CR990B-TX-M [Typhoon2]
-		10b7 2000  3CR990BSVR [Typhoon2 Server]
-	9905  3CR990-FX-95/97/95 [Typhon Fiber]
-		10b7 1101  3CR990-FX-95 [Typhoon Fiber 56-bit]
-		10b7 1102  3CR990-FX-97 [Typhoon Fiber 168-bit]
-		10b7 2101  3CR990-FX-95 Server [Typhoon Fiber 56-bit]
-		10b7 2102  3CR990-FX-97 Server [Typhoon Fiber 168-bit]
-	9908  3CR990SVR95 [Typhoon Server 56-bit]
-	9909  3CR990SVR97 [Typhoon Server 168-bit]
-	990a  3C990SVR [Typhoon Server]
-	990b  3C990SVR [Typhoon Server]
-10b8  Standard Microsystems Corp [SMC]
-	0005  83c170 EPIC/100 Fast Ethernet Adapter
-		1055 e000  LANEPIC 10/100 [EVB171Q-PCI]
-		1055 e002  LANEPIC 10/100 [EVB171G-PCI]
-		10b8 a011  EtherPower II 10/100
-		10b8 a014  EtherPower II 10/100
-		10b8 a015  EtherPower II 10/100
-		10b8 a016  EtherPower II 10/100
-		10b8 a017  EtherPower II 10/100
-	0006  83c175 EPIC/100 Fast Ethernet Adapter
-		1055 e100  LANEPIC Cardbus Fast Ethernet Adapter
-		1055 e102  LANEPIC Cardbus Fast Ethernet Adapter
-		1055 e300  LANEPIC Cardbus Fast Ethernet Adapter
-		1055 e302  LANEPIC Cardbus Fast Ethernet Adapter
-		10b8 a012  LANEPIC Cardbus Fast Ethernet Adapter
-		13a2 8002  LANEPIC Cardbus Fast Ethernet Adapter
-		13a2 8006  LANEPIC Cardbus Fast Ethernet Adapter
-	1000  FDC 37c665
-	1001  FDC 37C922
-	2802  SMC2802W [EZ Connect g]
-	a011  83C170QF
-	b106  SMC34C90
-10b9  ALi Corporation
-	0101  CMI8338/C3DX PCI Audio Device
-	0111  C-Media CMI8738/C3DX Audio Device (OEM)
-		10b9 0111  C-Media CMI8738/C3DX Audio Device (OEM)
-	0780  Multi-IO Card
-	0782  Multi-IO Card
-	1435  M1435
-	1445  M1445
-	1449  M1449
-	1451  M1451
-	1461  M1461
-	1489  M1489
-	1511  M1511 [Aladdin]
-	1512  M1512 [Aladdin]
-	1513  M1513 [Aladdin]
-	1521  M1521 [Aladdin III]
-		10b9 1521  ALI M1521 Aladdin III CPU Bridge
-	1523  M1523
-		10b9 1523  ALI M1523 ISA Bridge
-	1531  M1531 [Aladdin IV]
-	1533  M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+]
-		1014 053b  ThinkPad R40e
-		10b9 1533  ALi M1533 Aladdin IV/V ISA Bridge
-	1541  M1541
-		10b9 1541  ALI M1541 Aladdin V/V+ AGP System Controller
-	1543  M1543
-	1563  M1563 HyperTransport South Bridge
-		10b9 1563  ASRock 939Dual-SATA2 Motherboard
-		1849 1563  ASRock 939Dual-SATA2 Motherboard
-	1573  PCI to LPC Controller
-	1575  M1575 South Bridge
-	1621  M1621
-	1631  ALI M1631 PCI North Bridge Aladdin Pro III
-	1632  M1632M Northbridge+Trident
-	1641  ALI M1641 PCI North Bridge Aladdin Pro IV
-	1644  M1644/M1644T Northbridge+Trident
-	1646  M1646 Northbridge+Trident
-	1647  M1647 Northbridge [MAGiK 1 / MobileMAGiK 1]
-	1651  M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM]
-	1671  M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR]
-	1672  M1672 Northbridge [CyberALADDiN-P4]
-	1681  M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR]
-	1687  M1687 K8 Northbridge [AGP8X and HyperTransport]
-	1689  M1689 K8 Northbridge [Super K8 Single Chip]
-	1695  M1695 K8 Northbridge [PCI Express and HyperTransport]
-	1697  M1697 HTT Host Bridge
-	3141  M3141
-	3143  M3143
-	3145  M3145
-	3147  M3147
-	3149  M3149
-	3151  M3151
-	3307  M3307
-	3309  M3309
-	3323  M3325 Video/Audio Decoder
-	5212  M4803
-	5215  MS4803
-	5217  M5217H
-	5219  M5219
-	5225  M5225
-	5228  M5228 ALi ATA/RAID Controller
-	5229  M5229 IDE
-		1014 050f  ThinkPad R30
-		1014 053d  ThinkPad R40e
-		103c 0024  Pavilion ze4400 builtin IDE
-		1043 8053  A7A266 Motherboard IDE
-		1849 5229  ASRock 939Dual-SATA2 Motherboard IDE (PATA)
-	5235  M5225
-	5237  USB 1.1 Controller
-		1014 0540  ThinkPad R40e
-		103c 0024  Pavilion ze4400 builtin USB
-		104d 810f  VAIO PCG-U1 USB/OHCI Revision 1.0
-		10b9 5237  ASRock 939Dual-SATA2 Motherboard
-		1849 5237  ASRock 939Dual-SATA2 Motherboard
-	5239  USB 2.0 Controller
-		10b9 5239  ASRock 939Dual-SATA2 Motherboard
-		1849 5239  ASRock 939Dual-SATA2 Motherboard
-	5243  M1541 PCI to AGP Controller
-	5246  AGP8X Controller
-	5247  PCI to AGP Controller
-	5249  M5249 HTT to PCI Bridge
-	524b  PCI Express Root Port
-	524c  PCI Express Root Port
-	524d  PCI Express Root Port
-	524e  PCI Express Root Port
-	5251  M5251 P1394 OHCI 1.0 Controller
-	5253  M5253 P1394 OHCI 1.1 Controller
-	5261  M5261 Ethernet Controller
-	5263  ULi 1689,1573 integrated ethernet.
-	5281  ALi M5281 Serial ATA / RAID Host Controller
-	5287  ULi 5287 SATA
-	5288  ULi M5288 SATA
-		1043 8056  A8R-MVP Mainboard
-	5289  ULi 5289 SATA
-	5450  Lucent Technologies Soft Modem AMR
-	5451  M5451 PCI AC-Link Controller Audio Device
-		1014 0506  ThinkPad R30
-		1014 053e  ThinkPad R40e
-		103c 0024  Pavilion ze4400 builtin Audio
-	5453  M5453 PCI AC-Link Controller Modem Device
-	5455  M5455 PCI AC-Link Controller Audio Device
-		10b9 5455  ASRock 939Dual-SATA2 Motherboard
-		1849 0850  ASRock 939Dual-SATA2 Motherboard
-	5457  M5457 AC'97 Modem Controller
-		1014 0535  ThinkPad R40e
-		103c 0024  Pavilion ze4400 builtin Modem Device
-	5459  SmartLink SmartPCI561 56K Modem
-	545a  SmartLink SmartPCI563 56K Modem
-	5461  High Definition Audio/AC'97 Host Controller
-	5471  M5471 Memory Stick Controller
-	5473  M5473 SD-MMC Controller
-	7101  M7101 Power Management Controller [PMU]
-		1014 0510  ThinkPad R30
-		1014 053c  ThinkPad R40e
-		103c 0024  Pavilion ze4400
-		1849 7101  ASRock 939Dual-SATA2 Motherboard
-10ba  Mitsubishi Electric Corp.
-	0301  AccelGraphics AccelECLIPSE
-	0304  AccelGALAXY A2100 [OEM Evans & Sutherland]
-	0308  Tornado 3000 [OEM Evans & Sutherland]
-		10dd 0024  Tornado 3000
-	1002  VG500 [VolumePro Volume Rendering Accelerator]
-10bb  Dapha Electronics Corporation
-10bc  Advanced Logic Research
-10bd  Surecom Technology
-	0e34  NE-34
-10be  Tseng Labs International Co.
-10bf  Most Inc
-10c0  Boca Research Inc.
-10c1  ICM Co., Ltd.
-10c2  Auspex Systems Inc.
-10c3  Samsung Semiconductors, Inc.
-	1100  Smartether100 SC1100 LAN Adapter (i82557B)
-10c4  Award Software International Inc.
-10c5  Xerox Corporation
-10c6  Rambus Inc.
-10c7  Media Vision
-10c8  Neomagic Corporation
-	0001  NM2070 [MagicGraph 128]
-	0002  NM2090 [MagicGraph 128V]
-	0003  NM2093 [MagicGraph 128ZV]
-	0004  NM2160 [MagicGraph 128XD]
-		1014 00ba  MagicGraph 128XD
-		1025 1007  MagicGraph 128XD
-		1028 0074  MagicGraph 128XD
-		1028 0075  MagicGraph 128XD
-		1028 007d  MagicGraph 128XD
-		1028 007e  MagicGraph 128XD
-		1033 802f  MagicGraph 128XD
-		104d 801b  MagicGraph 128XD
-		104d 802f  MagicGraph 128XD
-		104d 830b  MagicGraph 128XD
-		10ba 0e00  MagicGraph 128XD
-		10c8 0004  MagicGraph 128XD
-		10cf 1029  MagicGraph 128XD
-		10f7 8308  MagicGraph 128XD
-		10f7 8309  MagicGraph 128XD
-		10f7 830b  MagicGraph 128XD
-		10f7 830d  MagicGraph 128XD
-		10f7 8312  MagicGraph 128XD
-	0005  NM2200 [MagicGraph 256AV]
-		1014 00dd  ThinkPad 570
-		1028 0088  Latitude CPi A
-	0006  NM2360 [MagicMedia 256ZX]
-	0016  NM2380 [MagicMedia 256XL+]
-		10c8 0016  MagicMedia 256XL+
-	0025  NM2230 [MagicGraph 256AV+]
-	0083  NM2093 [MagicGraph 128ZV+]
-	8005  NM2200 [MagicMedia 256AV Audio]
-		0e11 b0d1  MagicMedia 256AV Audio Device on Discovery
-		0e11 b126  MagicMedia 256AV Audio Device on Durango
-		1014 00dd  ThinkPad 390/i1720/i1721
-		1025 1003  MagicMedia 256AV Audio Device on TravelMate 720
-		1028 0088  Latitude CPi A
-		1028 008f  MagicMedia 256AV Audio Device on Colorado Inspiron
-		103c 0007  MagicMedia 256AV Audio Device on Voyager II
-		103c 0008  MagicMedia 256AV Audio Device on Voyager III
-		103c 000d  MagicMedia 256AV Audio Device on Omnibook 900
-		10c8 8005  MagicMedia 256AV Audio Device on FireAnt
-		110a 8005  MagicMedia 256AV Audio Device
-		14c0 0004  MagicMedia 256AV Audio Device
-	8006  NM2360 [MagicMedia 256ZX Audio]
-	8016  NM2380 [MagicMedia 256XL+ Audio]
-10c9  Dataexpert Corporation
-10ca  Fujitsu Microelectr., Inc.
-10cb  Omron Corporation
-# nee Mentor ARC Inc
-10cc  Mai Logic Incorporated
-	0660  Articia S Host Bridge
-	0661  Articia S PCI Bridge
-10cd  Advanced System Products, Inc
-	1100  ASC1100
-	1200  ASC1200 [(abp940) Fast SCSI-II]
-	1300  ABP940-U / ABP960-U
-		10cd 1310  ASC1300 SCSI Adapter
-		1195 1320  Ultra-SCSI CardBus PC Card REX CB31
-	2300  ABP940-UW
-	2500  ABP940-U2W
-	2700  ABP3950-U3W
-10ce  Radius
-# nee Citicorp TTI
-10cf  Fujitsu Limited.
-	1414  On-board USB 1.1 companion controller
-	1415  On-board USB 2.0 EHCI controller
-	1422  E8410 nVidia graphics adapter
-	142d  HD audio (Realtek ALC262)
-	1430  82566MM Intel 1Gb copper LAN interface
-	2001  mb86605
-	200c  MB86613L IEEE1394 OHCI 1.0 Controller
-	2019  MB86295S [CORAL P]
-	201e  MB86296S [CORAL PA]
-	202b  MB86297A [Carmine Graphics Controller]
-10d1  FuturePlus Systems Corp.
-10d2  Molex Incorporated
-10d3  Jabil Circuit Inc
-10d4  Hualon Microelectronics
-10d5  Autologic Inc.
-10d6  Cetia
-10d7  BCM Advanced Research
-10d8  Advanced Peripherals Labs
-10d9  Macronix, Inc. [MXIC]
-	0431  MX98715
-	0512  MX98713
-	0531  MX987x5
-		1186 1200  DFE-540TX ProFAST 10/100 Adapter
-	8625  MX86250
-	8626  Macronix MX86251 + 3Dfx Voodoo Rush
-	8888  MX86200
-10da  Compaq IPG-Austin
-	0508  TC4048 Token Ring 4/16
-	3390  Tl3c3x9
-10db  Rohm LSI Systems, Inc.
-10dc  CERN/ECP/EDU
-	0001  STAR/RD24 SCI-PCI (PMC)
-	0002  TAR/RD24 SCI-PCI (PMC)
-	0021  HIPPI destination
-	0022  HIPPI source
-	10dc  ATT2C15-3 FPGA
-10dd  Evans & Sutherland
-	0100  Lightning 1200
-		10dd 0023  Lightning 1200 15+16M
-10de  nVidia Corporation
-	0008  NV1 [EDGE 3D]
-	0009  NV1 [EDGE 3D]
-	0010  NV2 [Mutara V08]
-	0020  NV4 [RIVA TNT]
-		1043 0200  V3400 TNT
-		1048 0c18  Erazor II SGRAM
-		1048 0c19  Erazor II
-		1048 0c1b  Erazor II
-		1048 0c1c  Erazor II
-		1092 0550  Viper V550
-		1092 0552  Viper V550
-		1092 4804  Viper V550
-		1092 4808  Viper V550
-		1092 4810  Viper V550
-		1092 4812  Viper V550
-		1092 4815  Viper V550
-		1092 4820  Viper V550 with TV out
-		1092 4822  Viper V550
-		1092 4904  Viper V550
-		1092 4914  Viper V550
-		1092 8225  Viper V550
-		10b4 273d  Velocity 4400
-		10b4 273e  Velocity 4400
-		10b4 2740  Velocity 4400
-		10de 0020  Riva TNT
-		1102 1015  Graphics Blaster CT6710
-		1102 1016  Graphics Blaster RIVA TNT
-	0028  NV5 [RIVA TNT2/TNT2 Pro]
-		1043 0200  AGP-V3800 SGRAM
-		1043 0201  AGP-V3800 SDRAM
-		1043 0205  PCI-V3800
-		1043 4000  AGP-V3800PRO
-		1048 0c21  Synergy II
-		1048 0c28  Erazor III
-		1048 0c29  Erazor III
-		1048 0c2a  Erazor III
-		1048 0c2b  Erazor III
-		1048 0c31  Erazor III Pro
-		1048 0c32  Erazor III Pro
-		1048 0c33  Erazor III Pro
-		1048 0c34  Erazor III Pro
-		107d 2134  WinFast 3D S320 II + TV-Out
-		1092 4804  Viper V770
-		1092 4a00  Viper V770
-		1092 4a02  Viper V770 Ultra
-		1092 5a00  RIVA TNT2/TNT2 Pro
-		1092 6a02  Viper V770 Ultra
-		1092 7a02  Viper V770 Ultra
-		10de 0005  RIVA TNT2 Pro
-		10de 000f  Compaq NVIDIA TNT2 Pro
-		1102 1020  3D Blaster RIVA TNT2
-		1102 1026  3D Blaster RIVA TNT2 Digital
-		14af 5810  Maxi Gamer Xentor
-	0029  NV5 [RIVA TNT2 Ultra]
-		1043 0200  AGP-V3800 Deluxe
-		1043 0201  AGP-V3800 Ultra SDRAM
-		1043 0205  PCI-V3800 Ultra
-		1048 0c2e  Erazor III Ultra
-		1048 0c2f  Erazor III Ultra
-		1048 0c30  Erazor III Ultra
-		1102 1021  3D Blaster RIVA TNT2 Ultra
-		1102 1029  3D Blaster RIVA TNT2 Ultra
-		1102 102f  3D Blaster RIVA TNT2 Ultra
-		14af 5820  Maxi Gamer Xentor 32
-	002a  NV5 [Riva TNT2]
-	002b  NV5 [Riva TNT2]
-	002c  NV6 [Vanta/Vanta LT]
-		1043 0200  AGP-V3800 Combat SDRAM
-		1043 0201  AGP-V3800 Combat
-		1048 0c20  TNT2 Vanta
-		1048 0c21  TNT2 Vanta
-		1092 6820  Viper V730
-		1102 1031  CT6938 VANTA 8MB
-		1102 1034  CT6894 VANTA 16MB
-		14af 5008  Maxi Gamer Phoenix 2
-	002d  NV5M64 [RIVA TNT2 Model 64/Model 64 Pro]
-		1043 0200  AGP-V3800M
-		1043 0201  AGP-V3800M
-		1048 0c3a  Erazor III LT
-		1048 0c3b  Erazor III LT
-		10de 001e  M64 AGP4x
-		1102 1023  CT6892 RIVA TNT2 Value
-		1102 1024  CT6932 RIVA TNT2 Value 32Mb
-		1102 102c  CT6931 RIVA TNT2 Value [Jumper]
-		1462 8808  MSI-8808
-		1554 1041  Pixelview RIVA TNT2 M64
-		1569 002d  Palit Microsystems Daytona TNT2 M64
-	002e  NV6 [Vanta]
-	002f  NV6 [Vanta]
-	0034  MCP04 SMBus
-	0035  MCP04 IDE
-	0036  MCP04 Serial ATA Controller
-	0037  MCP04 Ethernet Controller
-	0038  MCP04 Ethernet Controller
-	003a  MCP04 AC'97 Audio Controller
-	003b  MCP04 USB Controller
-	003c  MCP04 USB Controller
-	003d  MCP04 PCI Bridge
-	003e  MCP04 Serial ATA Controller
-	0040  NV40 [GeForce 6800 Ultra]
-	0041  NV40 [GeForce 6800]
-		1043 817b  V9999 Gamer Edition
-	0042  NV40.2 [GeForce 6800 LE]
-	0043  NV40.3 [GeForce 6800 XE]
-	0044  NV40 [GeForce 6800 XT]
-	0045  NV40 [GeForce 6800 GT]
-	0046  NV40 [GeForce 6800 GT]
-	0047  NV40 [GeForce 6800 GS]
-		1682 2109  GeForce 6800 GS
-	0048  NV40 [GeForce 6800 XT]
-	0049  NV40GL
-	004d  NV40GL [Quadro FX 4000]
-	004e  NV40GL [Quadro FX 4000]
-	0050  CK804 ISA Bridge
-		1043 815a  K8N4-E or A8N-E Mainboard
-		10f1 2865  Tomcat K8E (S2865)
-		1458 0c11  GA-K8N Ultra-9 Mainboard
-		1462 7100  MSI K8N Diamond
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 3402  NF4 AM2L Mainboard
-	0051  CK804 ISA Bridge
-		1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
-	0052  CK804 SMBus
-		1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
-		1043 815a  K8N4-E or A8N-E Mainboard
-		10f1 2865  Tomcat K8E (S2865)
-		1458 0c11  GA-K8N Ultra-9 Mainboard
-		1462 7100  MSI K8N Diamond
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 3402  NF4 AM2L Mainboard
-	0053  CK804 IDE
-		1043 815a  K8N4-E or A8N-E Mainboard
-		10f1 2865  Tomcat K8E (S2865)
-		1458 5002  GA-K8N Ultra-9 Mainboard
-		1462 7100  MSI K8N Diamond
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 3402  NF4 AM2L Mainboard
-	0054  CK804 Serial ATA Controller
-		1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
-		1043 815a  A8N-E Mainboard
-		10f1 2865  Tomcat K8E (S2865)
-		1458 b003  GA-K8N Ultra-9 Mainboard
-		1462 7100  MSI K8N Diamond
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 5401  NF4 AM2L Mainboard
-	0055  CK804 Serial ATA Controller
-		1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
-		1043 815a  K8N4-E or A8N-E Mainboard
-		10f1 2865  Tomcat K8E (S2865)
-		1458 b003  GA-K8N Ultra-9 Mainboard
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 5401  NF4 AM2L Mainboard
-	0056  CK804 Ethernet Controller
-	0057  CK804 Ethernet Controller
-		1043 8141  K8N4-E or A8N-E Mainboard
-		10de cb84  NF4 Lanparty
-		10f1 2865  Tomcat K8E (S2865)
-		1458 e000  GA-K8N Ultra-9 Mainboard
-		1462 7100  MSI K8N Diamond
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 2501  NF4 AM2L Mainboard
-	0058  CK804 AC'97 Modem
-	0059  CK804 AC'97 Audio Controller
-		1043 812a  K8N4-E or A8N-E Mainboard
-		10f1 2865  Tomcat K8E (S2865)
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 8211  NF4 AM2L Mainboard
-	005a  CK804 USB Controller
-		1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
-		1043 815a  K8N4-E or A8N-E Mainboard
-		10f1 2865  Tomcat K8E (S2865)
-		1458 5004  GA-K8N Ultra-9 Mainboard
-		1462 7100  MSI K8N Diamond
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 3402  NF4 AM2L Mainboard
-	005b  CK804 USB Controller
-		1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
-		1043 815a  K8N4-E or A8N-E Mainboard
-		10f1 2865  Tomcat K8E (S2865)
-		1458 5004  GA-K8N Ultra-9 Mainboard
-		1462 7100  MSI K8N Diamond
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 3402  NF4 AM2L Mainboard
-	005c  CK804 PCI Bridge
-	005d  CK804 PCIE Bridge
-	005e  CK804 Memory Controller
-		1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
-		1043 815a  A8N-E Mainboard
-		10de 005e  ECS Elitegroup NFORCE3-A939 motherboard.
-		10f1 2865  Tomcat K8E (S2865)
-		10f1 2891  Thunder K8SRE Mainboard
-		1458 5000  GA-K8N Ultra-9 Mainboard
-		1462 7100  MSI K8N Diamond
-		147b 1c1a  KN8-Ultra Mainboard
-		1565 3402  NF4 AM2L Mainboard
-	005f  CK804 Memory Controller
-	0060  nForce2 ISA Bridge
-		1043 80ad  A7N8X Mainboard
-		147b 1c02  NF7-S/NF7 (nVidia-nForce2) 2.X
-		a0a0 03ba  UK79G-1394 motherboard
-	0064  nForce2 SMBus (MCP)
-		147b 1c02  NF7-S/NF7 (nVidia-nForce2) 2.X
-		a0a0 03bb  UK79G-1394 motherboard
-	0065  nForce2 IDE
-		10de 0c11  nForce 2 EIDE Controller
-		a0a0 03b2  UK79G-1394 motherboard
-	0066  nForce2 Ethernet Controller
-		1043 80a7  A7N8X Mainboard onboard nForce2 Ethernet
-		10de 0c11  nForce MCP-T Networking Adapter
-		a0a0 03b3  UK79G-1394 motherboard
-	0067  nForce2 USB Controller
-		1043 0c11  A7N8X Mainboard
-		a0a0 03b4  UK79G-1394 motherboard
-	0068  nForce2 USB Controller
-		1043 0c11  A7N8X Mainboard
-		a0a0 03b4  UK79G-1394 motherboard
-	006a  nForce2 AC97 Audio Controler (MCP)
-		1043 8095  nForce2 AC97 Audio Controler (MCP)
-		a0a0 0304  UK79G-1394 motherboard
-	006b  nForce Audio Processing Unit
-		10de 006b  nForce2 MCP Audio Processing Unit
-		a0a0 0304  UK79G-1394 motherboard
-	006c  nForce2 External PCI Bridge
-	006d  nForce2 PCI Bridge
-	006e  nForce2 FireWire (IEEE 1394) Controller
-		a0a0 0306  UK79G-1394 motherboard
-	0080  MCP2A ISA bridge
-		147b 1c09  NV7 Motherboard
-	0084  MCP2A SMBus
-		147b 1c09  NV7 Motherboard
-	0085  MCP2A IDE
-		147b 1c09  NV7 Motherboard
-	0086  MCP2A Ethernet Controller
-	0087  MCP2A USB Controller
-		147b 1c09  NV7 Motherboard
-	0088  MCP2A USB Controller
-		147b 1c09  NV7 Motherboard
-	008a  MCP2S AC'97 Audio Controller
-		147b 1c09  NV7 Motherboard
-	008b  MCP2A PCI Bridge
-	008c  MCP2A Ethernet Controller
-	008e  nForce2 Serial ATA Controller
-	0090  G70 [GeForce 7800 GTX]
-	0091  G70 [GeForce 7800 GTX]
-	0092  G70 [GeForce 7800 GT]
-	0093  G70 [GeForce 7800 GS]
-	0095  GeForce 7800 SLI
-	0098  G70 [GeForce Go 7800]
-	0099  G70 [GeForce Go 7800 GTX]
-	009d  G70GL [Quadro FX 4500]
-	00a0  NV5 [Aladdin TNT2]
-		14af 5810  Maxi Gamer Xentor
-	00c0  NV41 [GeForce 6800 GS]
-	00c1  NV41.1 [GeForce 6800]
-	00c2  NV41.2 [GeForce 6800 LE]
-	00c3  NV42 [GeForce 6800 XT]
-	00c8  NV41.8 [GeForce Go 6800]
-	00c9  NV41.9 [GeForce Go 6800 Ultra]
-	00cc  NV41 [Quadro FX Go1400]
-	00cd  NV41 [Quadro FX 3450/4000 SDI]
-		10de 029b  wx4300 Workstation
-	00ce  NV41GL [Quadro FX 1400]
-	00d0  nForce3 LPC Bridge
-	00d1  nForce3 Host Bridge
-	00d2  nForce3 AGP Bridge
-	00d3  CK804 Memory Controller
-	00d4  nForce3 SMBus
-	00d5  nForce3 IDE
-	00d6  nForce3 Ethernet
-	00d7  nForce3 USB 1.1
-	00d8  nForce3 USB 2.0
-	00d9  nForce3 Audio
-	00da  nForce3 Audio
-	00dd  nForce3 PCI Bridge
-	00df  CK8S Ethernet Controller
-		1043 80a7  K8N-E
-		105b 0c43  Winfast NF3250K8AA
-		147b 1c0b  NF8 Mainboard
-	00e0  nForce3 250Gb LPC Bridge
-		1043 813f  K8N-E
-		10de 0c11  Winfast NF3250K8AA
-		1462 7030  K8N Neo-FSR v2.0
-		147b 1c0b  NF8 Mainboard
-	00e1  nForce3 250Gb Host Bridge
-		1043 813f  K8N-E
-		1462 7030  K8N Neo-FSR v2.0
-		147b 1c0b  NF8 Mainboard
-	00e2  nForce3 250Gb AGP Host to PCI Bridge
-	00e3  nForce3 Serial ATA Controller
-		1043 813f  K8N-E
-		105b 0c43  Winfast NF3250K8AA
-		147b 1c0b  NF8 Mainboard
-	00e4  nForce 250Gb PCI System Management
-		1043 813f  K8N-E
-		105b 0c43  Winfast NF3250K8AA
-		1462 7030  K8N Neo-FSR v2.0
-		147b 1c0b  NF8 Mainboard
-	00e5  CK8S Parallel ATA Controller (v2.5)
-		1043 813f  K8N-E
-		105b 0c43  Winfast NF3250K8AA
-		1462 7030  K8N Neo-FSR v2.0
-		147b 1c0b  NF8 Mainboard
-	00e6  CK8S Ethernet Controller
-	00e7  CK8S USB Controller
-		1043 813f  K8N-E
-		105b 0c43  Winfast NF3250K8AA
-		1462 7030  K8N Neo-FSR v2.0
-		147b 1c0b  NF8 Mainboard
-	00e8  nForce3 EHCI USB 2.0 Controller
-		1043 813f  K8N-E
-		105b 0c43  Winfast NF3250K8AA
-		1462 7030  K8N Neo-FSR v2.0
-		147b 1c0b  NF8 Mainboard
-	00ea  nForce3 250Gb AC'97 Audio Controller
-		1043 819d  K8N-E
-		105b 0c43  Winfast NF3250K8AA
-		1462 b010  K8N Neo-FSR v2.0
-		147b 1c0b  NF8 Mainboard
-	00ed  nForce3 250Gb PCI-to-PCI Bridge
-	00ee  nForce3 Serial ATA Controller 2
-	00f0  NV40 [GeForce 6800 Ultra]
-	00f1  NV43 [GeForce 6600 GT]
-		1043 81a6  N6600GT TD 128M AGP
-		1043 81c6  N6600GT TD 128M AGP
-		1458 3150  GV-N66T128VP
-		1682 2119  GeForce 6600 GT AGP 128MB DDR3 DUAL DVI TV
-	00f2  NV43 [GeForce 6600]
-		1554 1194  PixelView PV-N43AT (256KD)
-		1682 211c  GeForce 6600 256MB DDR DUAL DVI TV
-	00f3  NV43 [GeForce 6200]
-	00f4  NV43 [GeForce 6600 LE]
-	00f5  G70 [GeForce 7800 GS]
-	00f6  NV43 [GeForce 6800 GS]
-		1682 217e  XFX GeForce 6800 XTreme 256MB DDR3 AGP
-	00f8  NV45GL [Quadro FX 3400/4400]
-	00f9  NV45 [GeForce 6800 GTO]
-		10de 00f9  NV40 [GeForce 6800 GT]
-		1682 2120  GEFORCE 6800 GT PCI-E
-	00fa  NV36 [GeForce PCX 5750]
-	00fb  NV35 [GeForce PCX 5900]
-	00fc  NV37GL [Quadro FX 330/GeForce PCX 5300]
-	00fd  NV37GL [Quadro PCI-E Series]
-	00fe  NV38GL [Quadro FX 1300]
-	00ff  NV18 [GeForce PCX 4300]
-	0100  NV10 [GeForce 256 SDR]
-		1043 0200  AGP-V6600 SGRAM
-		1043 0201  AGP-V6600 SDRAM
-		1043 4008  AGP-V6600 SGRAM
-		1043 4009  AGP-V6600 SDRAM
-		1048 0c41  Erazor X
-		1048 0c43  ERAZOR X PCI
-		1048 0c48  Synergy Force
-		1102 102d  CT6941 GeForce 256
-		14af 5022  3D Prophet SE
-	0101  NV10DDR [GeForce 256 DDR]
-		1043 0202  AGP-V6800 DDR
-		1043 400a  AGP-V6800 DDR SGRAM
-		1043 400b  AGP-V6800 DDR SDRAM
-		1048 0c42  Erazor X
-		107d 2822  WinFast GeForce 256
-		1102 102e  CT6971 GeForce 256 DDR
-		14af 5021  3D Prophet DDR-DVI
-	0103  NV10GL [Quadro]
-		1048 0c40  GLoria II-64
-		1048 0c44  GLoria II
-		1048 0c45  GLoria II
-		1048 0c4a  GLoria II-64 Pro
-		1048 0c4b  GLoria II-64 Pro DVII
-	0110  NV11 [GeForce2 MX/MX 400]
-		1043 4015  AGP-V7100 Pro
-		1043 4021  V7100 Deluxe Combo
-		1043 4031  V7100 Pro with TV output
-		1048 0c60  Gladiac MX
-		1048 0c61  Gladiac 511PCI
-		1048 0c63  Gladiac 511TV-OUT 32MB
-		1048 0c64  Gladiac 511TV-OUT 64MB
-		1048 0c65  Gladiac 511TWIN
-		1048 0c66  Gladiac 311
-		10de 0091  Dell OEM GeForce 2 MX 400
-		10de 00a1  Apple OEM GeForce2 MX
-		1462 8817  MSI GeForce2 MX400 Pro32S [MS-8817]
-		14af 7102  3D Prophet II MX
-		14af 7103  3D Prophet II MX Dual-Display
-		1545 0023  Xtasy Rev. B2
-	0111  NV11DDR [GeForce2 MX200]
-	0112  NV11 [GeForce2 Go]
-	0113  NV11GL [Quadro2 MXR/EX/Go]
-	0140  NV43 [GeForce 6600 GT]
-	0141  NV43 [GeForce 6600]
-		1043 81b0  EN6600 Silencer
-		1458 3124  GV-NX66128DP Turbo Force Edition
-	0142  NV43 [GeForce 6600 LE]
-	0143  NV43 [GeForce 6600 VE]
-	0144  NV43 [GeForce Go 6600]
-	0145  NV43 [GeForce 6610 XL]
-	0146  NV43 [Geforce Go 6600TE/6200TE]
-	0147  GeForce 6700 XL
-	0148  NV43 [GeForce Go 6600]
-	0149  NV43 [GeForce Go 6600 GT]
-	014a  Quadro NVS 440
-	014c  Quadro FX 540 MXM
-	014d  NV43GL [Quadro FX 550]
-	014e  NV43GL [Quadro FX 540]
-	014f  NV43 [GeForce 6200]
-	0150  NV15 [GeForce2 GTS/Pro]
-		1043 4016  V7700 AGP Video Card
-		1048 0c50  Gladiac
-		1048 0c52  Gladiac-64
-		107d 2840  WinFast GeForce2 GTS with TV output
-		107d 2842  WinFast GeForce 2 Pro
-		10de 002e  GeForce2 GTS
-		1462 8831  Creative GeForce2 Pro
-	0151  NV15DDR [GeForce2 Ti]
-		1043 405f  V7700Ti
-		1462 5506  Creative 3D Blaster Geforce2 Titanium
-	0152  NV15BR [GeForce2 Ultra, Bladerunner]
-		1048 0c56  GLADIAC Ultra
-	0153  NV15GL [Quadro2 Pro]
-	0160  GeForce 6500
-	0161  NV44 [GeForce 6200 TurboCache(TM)]
-	0162  NV44 [GeForce 6200SE TurboCache (TM)]
-	0163  NV44 [GeForce 6200 LE]
-	0164  NV44 [GeForce Go 6200]
-	0165  NV44 [Quadro NVS 285]
-	0166  NV43 [GeForce Go 6400]
-	0167  NV43 [GeForce Go 6200/6400]
-	0168  NV43 [GeForce Go 6200/6400]
-	0169  GeForce 6250
-	016a  GeForce 7100 GS
-	0170  NV17 [GeForce4 MX 460]
-	0171  NV17 [GeForce4 MX 440]
-		10b0 0002  Gainward Pro/600 TV
-		10de 0008  Apple OEM GeForce4 MX 440
-		1462 8661  G4MX440-VTP
-		1462 8730  MX440SES-T (MS-8873)
-		1462 8852  GeForce4 MX440 PCI
-		147b 8f00  Abit Siluro GeForce4MX440
-	0172  NV17 [GeForce4 MX 420]
-	0173  NV17 [GeForce4 MX 440-SE]
-	0174  NV17 [GeForce4 440 Go]
-	0175  NV17 [GeForce4 420 Go]
-	0176  NV17 [GeForce4 420 Go 32M]
-		103c 08b0  tc1100 tablet
-		144d c005  X10 Laptop
-		4c53 1090  Cx9 / Vx9 mainboard
-	0177  NV17 [GeForce4 460 Go]
-	0178  NV17GL [Quadro4 550 XGL]
-	0179  NV17 [GeForce4 440 Go 64M]
-		10de 0179  GeForce4 MX (Mac)
-	017a  NV17GL [Quadro NVS]
-	017b  NV17GL [Quadro4 550 XGL]
-	017c  NV17GL [Quadro4 500 GoGL]
-	017d  NV17 [GeForce4 410 Go 16M]
-	0181  NV18 [GeForce4 MX 440 AGP 8x]
-		1043 8063  GeForce4 MX 440 AGP 8X
-		1043 806f  V9180 Magic
-		1462 8880  MS-StarForce GeForce4 MX 440 with AGP8X
-		1462 8900  MS-8890 GeForce 4 MX440 AGP8X
-		1462 9350  MSI Geforce4 MX T8X with AGP8X
-		147b 8f0d  Siluro GF4 MX-8X
-		1554 1111  PixelView MVGA-NVG18A
-	0182  NV18 [GeForce4 MX 440SE AGP 8x]
-	0183  NV18 [GeForce4 MX 420 AGP 8x]
-	0184  NV18 [GeForce4 MX]
-	0185  NV18 [GeForce4 MX 4000]
-	0186  NV18M [GeForce4 448 Go]
-	0187  NV18M [GeForce4 488 Go]
-	0188  NV18GL [Quadro4 580 XGL]
-	018a  NV18GL [Quadro NVS 280 SD]
-	018b  NV18GL [Quadro4 380 XGL]
-	018c  NV18GL [Quadro NVS 50 PCI]
-	018d  NV18M [GeForce4 448 Go]
-	0191  G80 [GeForce 8800 GTX]
-	0193  G80 [GeForce 8800 GTS]
-	0194  GeForce 8800 Ultra
-	0197  Tesla S870 (Compute Server Component)
-	019d  G80 [Quadro FX 5600]
-	019e  G80 [Quadro FX 4600]
-	01a0  NVCrush11 [GeForce2 MX Integrated Graphics]
-	01a4  nForce CPU bridge
-	01ab  nForce 420 Memory Controller (DDR)
-	01ac  nForce 220/420 Memory Controller
-	01ad  nForce 220/420 Memory Controller
-	01b0  nForce Audio Processing Unit
-	01b1  nForce AC'97 Audio Controller
-	01b2  nForce ISA Bridge
-	01b4  nForce PCI System Management
-	01b7  nForce AGP to PCI Bridge
-	01b8  nForce PCI-to-PCI bridge
-	01bc  nForce IDE
-	01c1  nForce AC'97 Modem Controller
-	01c2  nForce USB Controller
-	01c3  nForce Ethernet Controller
-	01d0  GeForce 7350 LE
-	01d1  G72 [GeForce 7300 LE]
-		1462 0345  7300LE PCI Express Graphics Adapter
-	01d3  G72 [GeForce 7300 SE]
-	01d6  GeForce Go 7200
-	01d7  G72M [Quadro NVS 110M/GeForce Go 7300]
-	01d8  G72M [GeForce Go 7400]
-		1028 01d7  XPS M1210
-	01da  G72M [Quadro NVS 110M]
-	01db  Quadro NVS 120M
-	01dc  G72GL [Quadro FX 350M]
-	01dd  G72 [GeForce 7500 LE]
-	01de  G72GL [Quadro FX 350]
-		10de 01dc  Quadro  FX Go350M
-	01df  G71 [GeForce 7300 GS]
-	01e0  nForce2 IGP2
-		147b 1c09  NV7 Motherboard
-	01e8  nForce2 AGP
-	01ea  nForce2 Memory Controller 0
-		a0a0 03b9  UK79G-1394 motherboard
-	01eb  nForce2 Memory Controller 1
-		a0a0 03b9  UK79G-1394 motherboard
-	01ec  nForce2 Memory Controller 2
-		a0a0 03b9  UK79G-1394 motherboard
-	01ed  nForce2 Memory Controller 3
-		a0a0 03b9  UK79G-1394 motherboard
-	01ee  nForce2 Memory Controller 4
-		10de 01ee  MSI Delta-L nForce2 memory controller
-		a0a0 03b9  UK79G-1394 motherboard
-	01ef  nForce2 Memory Controller 5
-		a0a0 03b9  UK79G-1394 motherboard
-	01f0  NV18 [GeForce4 MX - nForce GPU]
-		a0a0 03b5  UK79G-1394 motherboard
-	0200  NV20 [GeForce3]
-		1043 402f  AGP-V8200 DDR
-		1048 0c70  GLADIAC 920
-	0201  NV20 [GeForce3 Ti 200]
-	0202  NV20 [GeForce3 Ti 500]
-		1043 405b  V8200 T5
-		1545 002f  Xtasy 6964
-	0203  NV20DCC [Quadro DCC]
-	0211  NV40 [GeForce 6800]
-	0212  NV40 [GeForce 6800 LE]
-	0215  NV40 [GeForce 6800 GT]
-	0218  NV40 [GeForce 6800 XT]
-	0221  NV44A [GeForce 6200]
-		3842 a341  256A8N341DX
-	0222  GeForce 6200 A-LE
-	0240  C51PV [GeForce 6150]
-		1043 81cd  A8N-VM CSM
-		1462 7207  K8NGM2 series
-	0241  C51 [GeForce 6150 LE]
-	0242  C51G [GeForce 6100]
-	0243  C51 PCI Express Bridge
-	0244  C51 [Geforce 6150 Go]
-		103c 30b5  Presario V3242AU
-		103c 30b7  Presario V6133CL
-		10de 0244  GeForce Go 6150
-	0245  C51 [Quadro NVS 210S/GeForce 6150LE]
-	0246  C51 PCI Express Bridge
-	0247  MCP51 PCI-X GeForce Go 6100
-		1043 1382  MCP51 PCI-X GeForce Go 6100
-	0248  C51 PCI Express Bridge
-	0249  C51 PCI Express Bridge
-	024a  C51 PCI Express Bridge
-	024b  C51 PCI Express Bridge
-	024c  C51 PCI Express Bridge
-	024d  C51 PCI Express Bridge
-	024e  C51 PCI Express Bridge
-	024f  C51 PCI Express Bridge
-	0250  NV25 [GeForce4 Ti 4600]
-	0251  NV25 [GeForce4 Ti 4400]
-		1043 8023  v8440 GeForce 4 Ti4400
-		10de 0251  PNY GeForce4 Ti 4400
-		1462 8710  PNY GeForce4 Ti 4400
-	0252  NV25 [GeForce4 Ti]
-	0253  NV25 [GeForce4 Ti 4200]
-		107d 2896  WinFast A250 LE TD (Dual VGA/TV-out/DVI)
-		147b 8f09  Siluro (Dual VGA/TV-out/DVI)
-	0258  NV25GL [Quadro4 900 XGL]
-	0259  NV25GL [Quadro4 750 XGL]
-	025b  NV25GL [Quadro4 700 XGL]
-	0260  MCP51 LPC Bridge
-		103c 30b7  Presario V6133CL
-		1043 81bc  A8N-VM CSM Mainboard
-		1458 5001  GA-M55plus-S3G
-		1462 7207  K8NGM2 series
-	0261  MCP51 LPC Bridge
-	0262  MCP51 LPC Bridge
-	0263  MCP51 LPC Bridge
-	0264  MCP51 SMBus
-		103c 30b7  Presario V6133CL
-		1043 81bc  A8N-VM CSM Mainboard
-		1462 7207  K8NGM2 series
-	0265  MCP51 IDE
-		103c 30b7  Presario V6133CL
-		1043 81bc  A8N-VM CSM Mainboard
-		1462 7207  K8NGM2 series
-	0266  MCP51 Serial ATA Controller
-		103c 30b7  Presario V6133CL
-		1043 81bc  A8N-VM CSM Mainboard
-		1462 7207  K8NGM2 series
-	0267  MCP51 Serial ATA Controller
-		1043 81bc  A8N-VM CSM Mainboard
-		1462 7207  K8NGM2 series
-	0268  MCP51 Ethernet Controller
-	0269  MCP51 Ethernet Controller
-		103c 30b7  Presario V6133CL
-		1043 8141  A8N-VM CSM Mainboard
-		1462 7207  K8NGM2 series
-	026a  MCP51 MCI
-	026b  MCP51 AC97 Audio Controller
-	026c  MCP51 High Definition Audio
-		103c 30b5  Presario V3242AU
-		103c 30b7  Presario V6133CL
-		10de cb84  A8N-VM CSM Mainboard
-		1462 7207  K8NGM2 series
-	026d  MCP51 USB Controller
-		103c 30b7  Presario V6133CL
-		1043 81bc  A8N-VM CSM Mainboard
-		1462 7207  K8NGM2 series
-	026e  MCP51 USB Controller
-		103c 30b7  Presario V6133CL
-		1043 81bc  A8N-VM CSM Mainboard
-		1462 7207  K8NGM2 series
-	026f  MCP51 PCI Bridge
-		103c 30b7  Presario V6133CL
-	0270  MCP51 Host Bridge
-		103c 30b7  Presario V6133CL
-		1043 81bc  A8N-VM CSM Mainboard
-		1458 5001  GA-M55plus-S3G
-		1462 7207  K8NGM2 series
-	0271  MCP51 PMU
-		103c 30b5  Presario V3242AU
-		103c 30b7  Presario V6133CL
-	0272  MCP51 Memory Controller 0
-	027e  C51 Memory Controller 2
-		103c 30b7  Presario V6133CL
-		1043 81cd  A8N-VM CSM Mainboard
-		1458 5000  GA-M55plus-S3G
-		1462 7207  K8NGM2 series
-	027f  C51 Memory Controller 3
-		103c 30b7  Presario V6133CL
-		1043 81cd  A8N-VM CSM Mainboard
-		1458 5000  GA-M55plus-S3G
-		1462 7207  K8NGM2 series
-	0280  NV28 [GeForce4 Ti 4800]
-	0281  NV28 [GeForce4 Ti 4200 AGP 8x]
-	0282  NV28 [GeForce4 Ti 4800 SE]
-	0286  NV28 [GeForce4 Ti 4200 Go AGP 8x]
-	0288  NV28GL [Quadro4 980 XGL]
-	0289  NV28GL [Quadro4 780 XGL]
-	028c  NV28GLM [Quadro4 Go700]
-	0290  G71 [GeForce 7900 GTX]
-	0291  G71 [GeForce 7900 GT/GTO]
-		10de 042b  NX7900GTO-T2D512E [7900 GTO]
-	0292  G71 [GeForce 7900 GS]
-	0293  G71 [GeForce 7900 GX2]
-	0294  G71 [GeForce 7950 GX2]
-	0295  G71 [GeForce 7950 GT]
-		1043 8225  GeForce 7950 GT
-		107d 2a68  WinFast PX7950GT TDH
-		1462 0663  NX7950GT-VT2D512EZ-HD
-	0297  GeForce Go 7950 GTX
-	0298  GeForce Go 7900 GS
-	0299  GeForce Go 7900 GTX
-	029a  G71 [Quadro FX 2500M]
-	029b  G71 [Quadro FX 1500M]
-	029c  G71 [Quadro FX 5500]
-	029d  G71GL [Quadro FX 3500]
-	029e  G71 [Quadro FX 1500]
-	029f  G70 [Quadro FX 4500 X2]
-# Xbox Graphics Processing Unit (Integrated). GeForce3 derivative (NV20 < NV2A < NV25).
-	02a0  NV2A [XGPU]
-	02a5  MCPX CPU Bridge
-	02a6  MCPX Memory Controller
-	02e0  GeForce 7600 GT
-		02e0 2249  GF 7600GT 560M 256MB DDR3 DUAL DVI TV
-	02e1  G73 [GeForce 7600 GS]
-		1682 222b  PV-T73K-UAL3 (256MB)
-		1682 2247  GF 7600GS 512MB DDR2
-	02e2  GeForce 7300 GT
-	02e3  GeForce 7900 GS
-# An oddball 7950 that doesn't show up on any official NVIDIA lists but was seen in the wild
-	02e4  GeForce 7950 GT AGP
-		1682 2271  PV-T71A-YDF7 (512MB)
-	02f0  C51 Host Bridge
-		103c 30b7  Presario V6133CL
-		1043 81cd  A8N-VM CSM Mainboard
-		1462 7207  K8NGM2 series
-	02f1  C51 Host Bridge
-		1458 5000  GA-M55plus-S3G
-	02f2  C51 Host Bridge
-	02f3  C51 Host Bridge
-	02f4  C51 Host Bridge
-	02f5  C51 Host Bridge
-	02f6  C51 Host Bridge
-	02f7  C51 Host Bridge
-	02f8  C51 Memory Controller 5
-		103c 30b7  Presario V6133CL
-		1043 81cd  A8N-VM CSM Mainboard
-		1458 5000  GA-M55plus-S3G
-		1462 7207  K8NGM2 series
-	02f9  C51 Memory Controller 4
-		103c 30b7  Presario V6133CL
-		1043 81cd  A8N-VM CSM Mainboard
-		1458 5000  GA-M55plus-S3G
-		1462 7207  K8NGM2 series
-	02fa  C51 Memory Controller 0
-		103c 30b7  Presario V6133CL
-		1043 81cd  A8N-VM CSM Mainboard
-		1458 5000  GA-M55plus-S3G
-		1462 7207  K8NGM2 series
-	02fb  C51 PCI Express Bridge
-	02fc  C51 PCI Express Bridge
-		103c 30b7  Presario V6133CL
-	02fd  C51 PCI Express Bridge
-		103c 30b7  Presario V6133CL
-	02fe  C51 Memory Controller 1
-		103c 30b7  Presario V6133CL
-		1043 81cd  A8N-VM CSM Mainboard
-		1458 5000  GA-M55plus-S3G
-		1462 7207  K8NGM2 series
-	02ff  C51 Host Bridge
-		103c 30b7  Presario V6133CL
-		1043 81cd  A8N-VM CSM Mainboard
-		1458 5000  GA-M55plus-S3G
-		1462 7207  K8NGM2 series
-	0300  NV30 [GeForce FX]
-	0301  NV30 [GeForce FX 5800 Ultra]
-	0302  NV30 [GeForce FX 5800]
-	0308  NV30GL [Quadro FX 2000]
-	0309  NV30GL [Quadro FX 1000]
-	0311  NV31 [GeForce FX 5600 Ultra]
-	0312  NV31 [GeForce FX 5600]
-	0313  NV31
-	0314  NV31 [GeForce FX 5600XT]
-		1043 814a  V9560XT/TD
-	0316  NV31M
-	0317  NV31M Pro
-	031a  NV31M [GeForce FX Go5600]
-	031b  NV31M [GeForce FX Go5650]
-	031c  Quadro FX Go700
-	031d  NV31GLM
-	031e  NV31GLM Pro
-	031f  NV31GLM Pro
-	0320  NV34 [GeForce FX 5200]
-	0321  NV34 [GeForce FX 5200 Ultra]
-	0322  NV34 [GeForce FX 5200]
-		1043 02fb  V9250 Magic
-		1043 8180  V9520-X/TD/128M
-		1462 9110  MS-8911 (FX5200-TD128)
-		1462 9171  MS-8917 (FX5200-T128)
-		1462 9360  MS-8936 (FX5200-T128)
-	0323  NV34 [GeForce FX 5200LE]
-	0324  NV34M [GeForce FX Go5200 64M]
-		1028 0196  Inspiron 5160
-		103c 006a  Pavillon ZD7000 laptop
-		1071 8160  MIM2000
-	0325  NV34M [GeForce FX Go5250]
-	0326  NV34 [GeForce FX 5500]
-		1458 310d  GeForce FX 5500 128 MB
-		1682 2034  GeForce 5500 256 MB
-	0327  NV34 [GeForce FX 5100]
-	0328  NV34M [GeForce FX Go5200 32M/64M]
-	0329  NV34M [GeForce FX Go5200]
-		10de 0010  Powerbook G4
-	032a  NV34GL [Quadro NVS 280 PCI]
-	032b  NV34GL [Quadro FX 500/600 PCI]
-	032c  NV34GLM [GeForce FX Go 5300]
-	032d  NV34 [GeForce FX Go5100]
-	032f  NV34GL
-	0330  NV35 [GeForce FX 5900 Ultra]
-		1043 8137  V9950 Ultra / 256 MB
-	0331  NV35 [GeForce FX 5900]
-		1043 8145  V9950GE
-	0332  NV35 [GeForce FX 5900XT]
-	0333  NV38 [GeForce FX 5950 Ultra]
-	0334  NV35 [GeForce FX 5900ZT]
-		1462 9373  FX5900ZT-VTD128 (MS-8937)
-	0338  NV35GL [Quadro FX 3000]
-	033f  NV35GL [Quadro FX 700]
-	0341  NV36.1 [GeForce FX 5700 Ultra]
-		1462 9380  MS-8938 (FX5700U-TD128)
-	0342  NV36.2 [GeForce FX 5700]
-	0343  NV36 [GeForce FX 5700LE]
-	0344  NV36.4 [GeForce FX 5700VE]
-	0345  NV36.5
-	0347  NV36 [GeForce FX Go5700]
-		103c 006a  NX9500
-	0348  NV36 [GeForce FX Go5700]
-	0349  NV36M Pro
-	034b  NV36MAP
-	034c  NV36 [Quadro FX Go1000]
-	034e  NV36GL [Quadro FX 1100]
-	034f  NV36GL
-	0360  MCP55 LPC Bridge
-	0361  MCP55 LPC Bridge
-	0362  MCP55 LPC Bridge
-		147b 12c4  KN9-Ultra Mainboard
-	0363  MCP55 LPC Bridge
-	0364  MCP55 LPC Bridge
-	0365  MCP55 LPC Bridge
-	0366  MCP55 LPC Bridge
-	0367  MCP55 LPC Bridge
-	0368  MCP55 SMBus
-		147b 12c4  KN9-Ultra Mainboard
-	0369  MCP55 Memory Controller
-		147b 12c4  KN9-Ultra Mainboard
-	036a  MCP55 Memory Controller
-	036b  MCP55 SMU
-	036c  MCP55 USB Controller
-		147b 12c4  KN9-Ultra Mainboard
-	036d  MCP55 USB Controller
-		147b 12c4  KN9-Ultra Mainboard
-	036e  MCP55 IDE
-		147b 12c4  KN9-Ultra Mainboard
-	0370  MCP55 PCI bridge
-	0371  MCP55 High Definition Audio
-	0372  MCP55 Ethernet
-	0373  MCP55 Ethernet
-		147b 12c4  KN9-Ultra Mainboard
-	0374  MCP55 PCI Express bridge
-	0375  MCP55 PCI Express bridge
-	0376  MCP55 PCI Express bridge
-	0377  MCP55 PCI Express bridge
-	0378  MCP55 PCI Express bridge
-	037a  MCP55 Memory Controller
-	037c  G70 [GeForce 7800 GS] (rev a2)
-	037e  MCP55 SATA Controller
-	037f  MCP55 SATA Controller
-		147b 12c4  KN9-Ultra Mainboard
-	0390  GeForce 7650 GS
-	0391  G70 [GeForce 7600 GT]
-		1458 3427  GV-NX76T128D-RH
-	0392  G70 [GeForce 7600 GS]
-		1462 0622  NX7600GS-T2D256EH
-	0393  G70 [GeForce 7300 GT]
-		10de 0412  NX7300GT-TD256EH
-		1462 0412  NX7300GT-TD256EH
-	0394  G70 [GeForce 7600 LE]
-	0395  G70 [GeForce 7300 GT]
-	0397  GeForce Go 7700
-	0398  G70 [GeForce Go 7600]
-		1025 006c  Acer 9814 WKMI
-	0399  GeForce Go 7600 GT
-	039b  GeForce Go 7900 SE
-	039c  Quadro FX 550M
-		10de 039c  Quadro FX 560M
-	039e  G73GL [Quadro FX 560]
-	03a0  C55 Host Bridge
-	03a1  C55 Host Bridge
-	03a2  C55 Host Bridge
-	03a3  C55 Host Bridge
-	03a4  C55 Host Bridge
-	03a5  C55 Host Bridge
-	03a6  C55 Host Bridge
-	03a7  C55 Host Bridge
-	03a8  C55 Memory Controller
-	03a9  C55 Memory Controller
-	03aa  C55 Memory Controller
-	03ab  C55 Memory Controller
-	03ac  C55 Memory Controller
-	03ad  C55 Memory Controller
-	03ae  C55 Memory Controller
-	03af  C55 Memory Controller
-	03b0  C55 Memory Controller
-	03b1  C55 Memory Controller
-	03b2  C55 Memory Controller
-	03b3  C55 Memory Controller
-	03b4  C55 Memory Controller
-	03b5  C55 Memory Controller
-	03b6  C55 Memory Controller
-	03b7  C55 PCI Express bridge
-	03b8  C55 PCI Express bridge
-	03b9  C55 PCI Express bridge
-	03ba  C55 Memory Controller
-	03bb  C55 PCI Express bridge
-	03bc  C55 Memory Controller
-	03d0  GeForce 6150SE nForce 430
-	03d1  GeForce 6100 nForce 405
-	03d2  GeForce 6100 nForce 400
-	03d5  GeForce 6100 nForce 420
-	03e0  MCP61 LPC Bridge
-		1849 03e0  939NF6G-VSTA Board
-	03e1  MCP61 LPC Bridge
-	03e2  MCP61 LPC Bridge
-	03e3  MCP61 LPC Bridge
-	03e4  MCP61 High Definition Audio
-	03e5  MCP61 Ethernet
-	03e6  MCP61 Ethernet
-	03e7  MCP61 SATA Controller
-	03e8  MCP61 PCI Express bridge
-		1849 03e8  939NF6G-VSTA Board
-	03e9  MCP61 PCI Express bridge
-		1849 03e9  939NF6G-VSTA Board
-	03ea  MCP61 Memory Controller
-		1849 03ea  939NF6G-VSTA Board
-	03eb  MCP61 SMBus
-		1849 03eb  939NF6G-VSTA Board
-	03ec  MCP61 IDE
-		1849 03ec  939NF6G-VSTA Board
-	03ee  MCP61 Ethernet
-	03ef  MCP61 Ethernet
-		1849 03ef  939NF6G-VSTA Board
-	03f0  MCP61 High Definition Audio
-		1849 0888  939NF6G-VSTA Board
-	03f1  MCP61 USB Controller
-		1849 03f1  939NF6G-VSTA Board
-	03f2  MCP61 USB Controller
-		1849 03f2  939NF6G-VSTA Board
-	03f3  MCP61 PCI bridge
-		1849 03f3  939NF6G-VSTA Board
-	03f4  MCP61 SMU
-	03f5  MCP61 Memory Controller
-		1849 03eb  939NF6G-VSTA Board
-	03f6  MCP61 SATA Controller
-		1849 03f6  939NF6G-VSTA Board
-	03f7  MCP61 SATA Controller
-	0400  GeForce 8600 GTS
-	0401  GeForce 8600GT
-	0402  GeForce 8600 GT
-		1462 0910  NX8600GT-T2D256EZ
-	0403  GeForce 8600 GS
-	0404  GeForce 8400 GS
-	0405  GeForce 9500M GS
-	0407  GeForce 8600M GT
-	0408  GeForce 9650M GS
-	0409  GeForce 8700M GT
-	040a  Quadro FX 370
-	040b  Quadro NVS 320M
-	040c  Quadro FX 570M
-	040d  Quadro FX 1600M
-	040e  Quadro FX 570
-	040f  Quadro FX 1700
-	0420  GeForce 8400 SE
-	0421  GeForce 8500 GT
-	0422  GeForce 8400 GS
-	0423  GeForce 8300 GS
-	0424  GeForce 8400 GS
-	0425  GeForce 8600M GS
-		1025 0121  Aspire 5920G
-	0426  G86M [GeForce 8400M GT]
-	0427  GeForce 8400M GS
-	0428  GeForce 8400M G
-	0429  Quadro NVS 140M
-		17aa 20d8  ThinkPad T61
-	042a  Quadro NVS 130M
-	042b  Quadro NVS 135M
-	042d  Quadro FX 360M
-	042e  GeForce 9300M G
-	042f  Quadro NVS 290
-	0440  MCP65 LPC Bridge
-	0441  MCP65 LPC Bridge
-	0442  MCP65 LPC Bridge
-	0443  MCP65 LPC Bridge
-	0444  MCP65 Memory Controller
-	0445  MCP65 Memory Controller
-	0446  MCP65 SMBus
-	0447  MCP65 SMU
-	0448  MCP65 IDE
-	0449  MCP65 PCI bridge
-	044a  MCP65 High Definition Audio
-	044b  MCP65 High Definition Audio
-	044c  MCP65 AHCI Controller
-	044d  MCP65 AHCI Controller
-	044e  MCP65 AHCI Controller
-	044f  MCP65 AHCI Controller
-	0450  MCP65 Ethernet
-	0451  MCP65 Ethernet
-	0452  MCP65 Ethernet
-	0453  MCP65 Ethernet
-	0454  MCP65 USB Controller
-	0455  MCP65 USB Controller
-	0456  MCP65 USB Controller
-	0457  MCP65 USB Controller
-	0458  MCP65 PCI Express bridge
-	0459  MCP65 PCI Express bridge
-	045a  MCP65 PCI Express bridge
-	045c  MCP65 SATA Controller
-	045d  MCP65 SATA Controller
-	045e  MCP65 SATA Controller
-	045f  MCP65 SATA Controller
-	0531  GeForce 7150M
-	0533  GeForce 7000M (rev a2)
-	053a  GeForce 7050 PV / nForce 630a
-	053b  GeForce 7050 PV / nForce 630a
-	053e  GeForce 7025
-	0541  MCP67 Memory Controller
-	0542  MCP67 SMBus
-	0543  MCP67 Co-processor
-	0547  MCP67 Memory Controller
-		1849 0547  ALiveNF7G-HDready
-	0548  MCP67 ISA Bridge
-	054c  MCP67 Ethernet
-		1849 054c  ALiveNF7G-HDready, MCP67 Gigabit Ethernet
-	054d  MCP67 Ethernet
-	054e  MCP67 Ethernet
-# forcedeth source code from Nvidi
-	054f  MCP67 Ethernet
-	0550  MCP67 AHCI Controller
-	0554  MCP67 AHCI Controller
-	0555  MCP67 SATA Controller
-	055c  MCP67 High Definition Audio
-	055d  MCP67 High Definition Audio
-	055e  MCP67 OHCI USB 1.1 Controller
-	055f  MCP67 EHCI USB 2.0 Controller
-	0560  MCP67 IDE Controller
-	0561  MCP67 PCI Bridge
-	0562  MCP67 PCI Express Bridge
-		1849 0562  ALiveNF7G-HDready
-	0563  MCP67 PCI Express Bridge
-	0568  MCP78S [GeForce 8200] Memory Controller
-	0569  MCP78S [GeForce 8200] PCI Express Bridge
-	056a  GeForce 7100/nForce 630i
-	056c  MCP73 IDE
-	056d  MCP73 PCI Express bridge
-	056e  MCP73 PCI Express bridge
-	056f  MCP73 PCI Express bridge
-	05be  Tesla S870
-	0600  GeForce 8800 GTS 512
-	0602  GeForce 8800 GT 512
-	0604  GeForce 9800 GX2
-	0606  GeForce 8800 GS
-	0609  GeForce 8800M GTS
-	060c  GeForce 8800M GTX
-	060d  GeForce 8800 GS
-	0610  GeForce 9600 GSO
-	0611  GeForce 8800 GT
-		107d 2ab0  Winfast PX8800 GT PCI-E
-	0612  GeForce 9800 GTX
-	061a  Quadro FX 3700
-	061c  Quadro FX 3600M
-	0622  G94 [GeForce 9600 GT]
-		1458 3481  GV-NX96T512HP
-	0623  GeForce 9600 GS
-	0647  GeForce 9600M GT
-	0648  GeForce 9600M GS
-	0649  GeForce 9600M GT
-	064b  GeForce 9500M G
-	06e2  GeForce 8400 GS
-	06e4  GeForce 8400 GS
-	06e5  GeForce 9300M GS
-	06e8  GeForce 9200M GS
-	06e9  GeForce 9300M GS
-	0751  MCP78S [GeForce 8200] Memory Controller
-	0752  MCP78S [GeForce 8200] SMBus
-	0753  MCP78S [GeForce 8200] Co-Processor
-	0754  MCP78S [GeForce 8200] Memory Controller
-	0759  MCP78S [GeForce 8200] IDE
-	075a  MCP78S [GeForce 8200] PCI Bridge
-	075b  MCP78S [GeForce 8200] PCI Express Bridge
-	075c  MCP78S [GeForce 8200] LPC Bridge
-	0760  MCP78S [GeForce 8200] Ethernet
-	0761  MCP77 Ethernet
-	0762  MCP77 Ethernet
-	0763  MCP77 Ethernet
-	0778  MCP78S [GeForce 8200] PCI Express Bridge
-	077b  MCP78S [GeForce 8200] OHCI USB 1.1 Controller
-	077c  MCP78S [GeForce 8200] EHCI USB 2.0 Controller
-	077d  MCP78S [GeForce 8200] OHCI USB 1.1 Controller
-	077e  MCP78S [GeForce 8200] EHCI USB 2.0 Controller
-	07c1  MCP73 Host Bridge
-	07c2  MCP73 Host Bridge
-	07c5  MCP73 Host Bridge
-	07c8  MCP73 Memory Controller
-	07cb  nForce 630i memory controller
-	07cd  nForce 630i memory controller
-	07ce  nForce 630i memory controller
-	07cf  nForce 630i memory controller
-	07d0  nForce 630i memory controller
-	07d1  nForce 630i memory controller
-	07d2  nForce 630i memory controller
-	07d3  nForce 630i memory controller
-	07d6  nForce 630i memory controller
-	07d7  MCP73 LPC Bridge
-	07d8  MCP73 SMBus
-	07d9  MCP73 Memory Controller
-	07da  MCP73 Co-processor
-	07dc  MCP73 Ethernet
-	07dd  MCP73 Ethernet
-	07de  MCP73 Ethernet
-	07df  MCP73 Ethernet
-	07e0  GeForce 7150 / nForce 630i
-	07e1  GeForce 7100/nForce 630i
-	07e2  GeForce 7050 / nForce 630i
-	07e3  GeForce 7050/nForce 610i
-	07e5  GeForce 7100 / nForce 620i
-	07f4  GeForce 7100/nForce 630i
-	07f8  MCP73 SATA RAID Controller
-	07fc  MCP73 High Definition Audio
-		10de 07fc  MCP73 High Definition Audio
-	07fe  GeForce 7100/nForce 630i
-	0844  GeForce 9100M G
-	0848  GeForce 8300
-	0849  GeForce 8200
-	084a  nForce 730a
-	084b  GeForce 8200
-	084f  GeForce 8100 / nForce 720a
-	0ab0  MCP79 Ethernet
-	0ab1  MCP79 Ethernet
-	0ab2  MCP79 Ethernet
-	0ab3  MCP79 Ethernet
-	0ad4  MCP78S [GeForce 8200] AHCI Controller
-	c615  G70 [GeForce 7600 GT]
-10df  Emulex Corporation
-	1ae5  LP6000 Fibre Channel Host Adapter
-	e100  Proteus-X: LightPulse IOV Fibre Channel Host Adapter
-	e180  Proteus-X: LightPulse IOV Fibre Channel Host Adapter
-	f011  Saturn: LightPulse Fibre Channel Host Adapter
-	f015  Saturn: LightPulse Fibre Channel Host Adapter
-	f085  LP850 Fibre Channel Host Adapter
-	f095  LP952 Fibre Channel Host Adapter
-	f098  LP982 Fibre Channel Host Adapter
-	f0a1  Thor LightPulse Fibre Channel Host Adapter
-	f0a5  Thor LightPulse Fibre Channel Host Adapter
-	f0b5  Viper LightPulse Fibre Channel Host Adapter
-	f0d1  Helios LightPulse Fibre Channel Host Adapter
-	f0d5  Helios LightPulse Fibre Channel Host Adapter
-	f0e1  Zephyr LightPulse Fibre Channel Host Adapter
-	f0e5  Zephyr LightPulse Fibre Channel Host Adapter
-	f0f5  Neptune LightPulse Fibre Channel Host Adapter
-	f100  Saturn-X: LightPulse Fibre Channel Host Adapter
-	f700  LP7000 Fibre Channel Host Adapter
-	f701  LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
-	f800  LP8000 Fibre Channel Host Adapter
-	f801  LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
-	f900  LP9000 Fibre Channel Host Adapter
-	f901  LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
-	f980  LP9802 Fibre Channel Host Adapter
-	f981  LP9802 Fibre Channel Host Adapter Alternate ID
-	f982  LP9802 Fibre Channel Host Adapter Alternate ID
-	fa00  Thor-X LightPulse Fibre Channel Host Adapter
-	fb00  Viper LightPulse Fibre Channel Host Adapter
-	fc00  Thor-X LightPulse Fibre Channel Host Adapter
-		10df fc00  LP10000 LightPulse Fibre Channel Host Adapter
-	fc10  Helios-X LightPulse Fibre Channel Host Adapter
-	fc20  Zephyr-X LightPulse Fibre Channel Host Adapter
-	fc40  Saturn-X: LightPulse Fibre Channel Host Adapter
-	fc50  Proteus-X: LightPulse IOV Fibre Channel Host Adapter
-	fd00  Helios-X LightPulse Fibre Channel Host Adapter
-	fe00  Zephyr-X LightPulse Fibre Channel Host Adapter
-	fe05  Zephyr-X: LightPulse FCoE Adapter
-	ff00  Neptune LightPulse Fibre Channel Host Adapter
-10e0  Integrated Micro Solutions Inc.
-	5026  IMS5026/27/28
-	5027  IMS5027
-	5028  IMS5028
-	8849  IMS8849
-	8853  IMS8853
-	9128  IMS9128 [Twin turbo 128]
-10e1  Tekram Technology Co.,Ltd.
-	0391  TRM-S1040
-		10e1 0391  DC-315U SCSI-3 Host Adapter
-	690c  DC-690c
-	dc29  DC-290
-10e2  Aptix Corporation
-10e3  Tundra Semiconductor Corp.
-	0000  CA91C042 [Universe]
-	0108  Tsi108 Host Bridge for Single PowerPC
-	0148  Tsi148 [Tempe]
-		1775 1100  VR11 Single Board Computer
-	0860  CA91C860 [QSpan]
-	0862  CA91C862A [QSpan-II]
-	8260  CA91L8200B [Dual PCI PowerSpan II]
-	8261  CA91L8260B [Single PCI PowerSpan II]
-	a108  Tsi109 Host Bridge for Dual PowerPC
-10e4  Tandem Computers
-	8029  Realtek 8029 Network Card
-10e5  Micro Industries Corporation
-10e6  Gainbery Computer Products Inc.
-10e7  Vadem
-10e8  Applied Micro Circuits Corp.
-	1072  INES GPIB-PCI (AMCC5920 based)
-	2011  Q-Motion Video Capture/Edit board
-	4750  S5930 [Matchmaker]
-	5920  S5920
-	8043  LANai4.x [Myrinet LANai interface chip]
-	8062  S5933_PARASTATION
-	807d  S5933 [Matchmaker]
-	8088  Kongsberg Spacetec Format Synchronizer
-	8089  Kongsberg Spacetec Serial Output Board
-	809c  S5933_HEPC3
-	80b9  Harmonix Hi-Card P8 (4x active ISDN BRI)
-	80d7  PCI-9112
-	80d9  PCI-9118
-	80da  PCI-9812
-	80fc  APCI1500 Signal processing controller (16 dig. inputs + 16 dig. outputs)
-	811a  PCI-IEEE1355-DS-DE Interface
-	814c  Fastcom ESCC-PCI (Commtech, Inc.)
-	8170  S5933 [Matchmaker] (Chipset Development Tool)
-	81e6  Multimedia video controller
-	828d  APCI3001 Signal processing controller (up to 16 analog inputs)
-	8291  Fastcom 232/8-PCI (Commtech, Inc.)
-	82c4  Fastcom 422/4-PCI (Commtech, Inc.)
-	82c5  Fastcom 422/2-PCI (Commtech, Inc.)
-	82c6  Fastcom IG422/1-PCI (Commtech, Inc.)
-	82c7  Fastcom IG232/2-PCI (Commtech, Inc.)
-	82ca  Fastcom 232/4-PCI (Commtech, Inc.)
-	82db  AJA HDNTV HD SDI Framestore
-	82e2  Fastcom DIO24H-PCI (Commtech, Inc.)
-	8406  PCIcanx/PCIcan CAN interface [Kvaser AB]
-	8407  PCIcan II CAN interface (A1021, PCB-07, PCB-08) [Kvaser AB]
-	8851  S5933 on Innes Corp FM Radio Capture card
-10e9  Alps Electric Co., Ltd.
-10ea  Intergraphics Systems
-	1680  IGA-1680
-	1682  IGA-1682
-	1683  IGA-1683
-	2000  CyberPro 2000
-	2010  CyberPro 2000A
-	5000  CyberPro 5000
-	5050  CyberPro 5050
-	5202  CyberPro 5202
-# CyberPro5202 Audio Function
-	5252  CyberPro5252
-10eb  Artists Graphics
-	0101  3GA
-	8111  Twist3 Frame Grabber
-10ec  Realtek Semiconductor Co., Ltd.
-	0139  Zonet Zen3200
-	0260  Realtek 260 High Definition Audio
-	0261  Realtek 261 High Definition Audio
-	0262  Realtek 262 High Definition Audio
-	0280  Realtek 280 High Definition Audio
-	0660  Realtek 660 High Definition Audio
-	0662  Realtek 662 High Definition Audio
-	0861  Realtek 861 High Definition Audio
-	0862  Realtek 862 High Definition Audio
-	0880  Realtek 880 High Definition Audio
-	0883  Realtek 883 High Definition Audio
-		1025 1605  TravelMate 5600 series
-	0885  Realtek 885 High Definition Audio
-	0888  Realtek 888 High Definition Audio
-	8029  RTL-8029(AS)
-		10b8 2011  EZ-Card (SMC1208)
-		10ec 8029  RTL-8029(AS)
-		1113 1208  EN1208
-		1186 0300  DE-528
-		1259 2400  AT-2400
-	8129  RTL-8129
-		10ec 8129  RT8129 Fast Ethernet Adapter
-		11ec 8129  RT8129 Fast Ethernet Adapter
-	8136  RTL8101E/RTL8102E PCI Express Fast Ethernet controller
-	8138  RT8139 (B/C) Cardbus Fast Ethernet Adapter
-		10ec 8138  RT8139 (B/C) Fast Ethernet Adapter
-	8139  RTL-8139/8139C/8139C+
-		0357 000a  TTP-Monitoring Card V2.0
-		1025 005a  TravelMate 290
-		1025 8920  ALN-325
-		1025 8921  ALN-325
-		103c 006a  NX9500
-		103c 30d9  Presario C700
-		1043 1045  L8400B or L3C/S notebook
-		1043 8109  P5P800-MX Mainboard
-		1071 8160  MIM2000
-		10bd 0320  EP-320X-R
-		10ec 8139  RT8139
-		10f7 8338  Panasonic CF-Y5 laptop
-		1113 ec01  FNC-0107TX
-		1186 1300  DFE-538TX
-		1186 1320  SN5200
-		1186 8139  DRN-32TX
-		11f6 8139  FN22-3(A) LinxPRO Ethernet Adapter
-		1259 2500  AT-2500TX
-		1259 2503  AT-2500TX/ACPI
-		1395 2100  AMB2100
-		1429 d010  ND010/ND012
-		1432 9130  EN-9130TX
-		1436 8139  RT8139
-		144d c00c  P30/P35 notebook
-		1458 e000  GA-7VM400M/7VT600 Motherboard
-		1462 217c  Aspire L250
-		1462 788c  865PE Neo2-V Mainboard
-		146c 1439  FE-1439TX
-		1489 6001  GF100TXRII
-		1489 6002  GF100TXRA
-		149c 139a  LFE-8139ATX
-		149c 8139  LFE-8139TX
-		14cb 0200  LNR-100 Family 10/100 Base-TX Ethernet
-		1565 2300  P4TSV Onboard LAN (RTL8100B)
-		1695 9001  Onboard RTL8101L 10/100 MBit
-		1799 5000  F5D5000 PCI Card/Desktop Network PCI Card
-		187e 3303  FN312
-		1904 8139  RTL8139D Fast Ethernet Adapter
-		2646 0001  KNE120TX
-		8e2e 7000  KF-230TX
-		8e2e 7100  KF-230TX/2
-		a0a0 0007  ALN-325C
-	8167  RTL-8110SC/8169SC Gigabit Ethernet
-		1462 235c  P965 Neo MS-7235 mainboard
-		1462 236c  945P Neo3-F motherboard
-	8168  RTL8111/8168B PCI Express Gigabit Ethernet controller
-	8169  RTL-8169 Gigabit Ethernet
-		1025 0079  Aspire 5024WLMi
-		1259 c107  CG-LAPCIGT
-		1371 434e  ProG-2000L
-		1458 e000  GA-8I915ME-G Mainboard
-		1462 030c  K8N Neo-FSR v2.0 mainboard
-		1462 702c  K8T NEO 2 motherboard
-		1462 7094  K8T Neo2-F V2.0
-		1734 1091  D2030-A1
-		a0a0 0449  AK86-L motherboard
-	8180  RTL8180L 802.11b MAC
-	8185  RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller
-	8197  SmartLAN56 56K Modem
-10ed  Ascii Corporation
-	7310  V7310
-10ee  Xilinx Corporation
-	0205  Wildcard TE205P
-	0210  Wildcard TE210P
-	0314  Wildcard TE405P/TE410P (1st Gen)
-	0405  Wildcard TE405P (2nd Gen)
-	0410  Wildcard TE410P (2nd Gen)
-	3fc0  RME Digi96
-	3fc1  RME Digi96/8
-	3fc2  RME Digi96/8 Pro
-	3fc3  RME Digi96/8 Pad
-	3fc4  RME Digi9652 (Hammerfall)
-	3fc5  RME Hammerfall DSP
-	3fc6  RME Hammerfall DSP MADI
-	8380  Ellips ProfiXpress Profibus Master
-	8381  Ellips Santos Frame Grabber
-	d154  Copley Controls CAN card (PCI-CAN-02)
-# SED is assigned Xilinx PCI device IDs ebf0 through ebff
-	ebf0  SED Systems Modulator/Demodulator
-	ebf1  SED Systems Audio Interface Card
-	ebf2  SED Systems Common PCI Interface
-10ef  Racore Computer Products, Inc.
-	8154  M815x Token Ring Adapter
-10f0  Peritek Corporation
-10f1  Tyan Computer
-	2865  Tyan Thunder K8E S2865
-10f2  Achme Computer, Inc.
-10f3  Alaris, Inc.
-10f4  S-MOS Systems, Inc.
-10f5  NKK Corporation
-	a001  NDR4000 [NR4600 Bridge]
-10f6  Creative Electronic Systems SA
-10f7  Matsushita Electric Industrial Co., Ltd.
-10f8  Altos India Ltd
-10f9  PC Direct
-10fa  Truevision
-	000c  TARGA 1000
-10fb  Thesys Gesellschaft fuer Mikroelektronik mbH
-	186f  TH 6255
-10fc  I-O Data Device, Inc.
-# What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives
-	0003  Cardbus IDE Controller
-	0005  Cardbus SCSI CBSC II
-10fd  Soyo Computer, Inc
-10fe  Fast Multimedia AG
-10ff  NCube
-1100  Jazz Multimedia
-1101  Initio Corporation
-	0002  INI-920 Ultra SCSI Adapter
-	1060  INI-A100U2W
-	1622  INI-1623 PCI SATA-II Controller
-	9100  INI-9100/9100W
-	9400  INI-940 Fast Wide SCSI Adapter
-	9401  INI-935 Fast Wide SCSI Adapter
-	9500  INI-950 SCSI Adapter
-	9502  INI-950P Ultra Wide SCSI Adapter
-1102  Creative Labs
-	0002  SB Live! EMU10k1
-		100a 1102  SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF
-		1102 0020  CT4850 SBLive! Value
-		1102 0021  CT4620 SBLive!
-		1102 002f  SBLive! mainboard implementation
-		1102 100a  SB Live! 5.1 Digital OEM [SB0220]
-		1102 4001  E-mu APS
-		1102 8022  CT4780 SBLive! Value
-		1102 8023  CT4790 SoundBlaster PCI512
-		1102 8024  CT4760 SBLive!
-		1102 8025  SBLive! Mainboard Implementation
-		1102 8026  CT4830 SBLive! Value
-		1102 8027  CT4832 SBLive! Value
-		1102 8028  CT4760 SBLive! OEM version
-		1102 8031  CT4831 SBLive! Value
-		1102 8040  CT4760 SBLive!
-		1102 8051  CT4850 SBLive! Value
-		1102 8061  SBLive! Player 5.1
-		1102 8064  SBLive! 5.1 Model SB0100
-		1102 8065  SBLive! 5.1 Digital Model SB0220
-		1102 8067  SBLive! 5.1 eMicro 28028
-	0004  SB Audigy
-		1102 0051  SB0090 Audigy Player
-		1102 0053  SB0090 Audigy Player/OEM
-		1102 0058  SB0090 Audigy Player/OEM
-		1102 1002  SB Audigy2 Platinum
-		1102 1007  SB0240 Audigy 2 Platinum 6.1
-		1102 1009  SB Audigy2 OEM HP
-		1102 2002  SB Audigy 2 ZS (SB0350)
-		1102 4001  E-MU 1010
-	0005  SB X-Fi
-		1102 0021  X-Fi Platinum
-		1102 002c  X-Fi XtremeGamer FATAL1TY PRO
-		1102 1003  X-Fi XtremeMusic
-	0006  [SB Live! Value] EMU10k1X
-	0007  SB Audigy LS
-		1102 0007  SBLive! 24bit
-		1102 1001  SB0310 Audigy LS
-		1102 1002  SB0312 Audigy LS
-		1102 1006  SB0410 SBLive! 24-bit
-		1102 1012  SB0790 X-Fi XA
-		1102 1013  Soundblaster X-Fi Xtreme Audio
-		1462 1009  K8N Diamond
-	0008  SB0400 Audigy2 Value
-		1102 0008  EMU0404 Digital Audio System
-	0009  [SB X-Fi Xtreme Audio] CA0110-IBG
-		1102 0010  [SB X-Fi Xtreme Audio] CA0110-IBG
-	4001  SB Audigy FireWire Port
-		1102 0010  SB Audigy FireWire Port
-	7002  SB Live! Game Port
-		1102 0020  Gameport Joystick
-	7003  SB Audigy Game Port
-		1102 0040  SB Audigy MIDI/Game Port
-		1102 0060  SB Audigy2 MIDI/Game Port
-	7004  [SB Live! Value] Input device controller
-	7005  SB Audigy LS Game Port
-		1102 1001  SB0310 Audigy LS MIDI/Game port
-		1102 1002  SB0312 Audigy LS MIDI/Game port
-	8064  SB0100 [SBLive! 5.1 OEM]
-	8938  Ectiva EV1938
-		1033 80e5  SlimTower-Jim (NEC)
-		1071 7150  Mitac 7150
-		110a 5938  Siemens Scenic Mobile 510PIII
-		13bd 100c  Ceres-C (Sharp, Intel BX)
-		13bd 100d  Sharp, Intel Banister
-		13bd 100e  TwinHead P09S/P09S3 (Sharp)
-		13bd f6f1  Marlin (Sharp)
-		14ff 0e70  P88TE (TWINHEAD INTERNATIONAL Corp)
-		14ff c401  Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp)
-		156d b400  G400 - Geo (AlphaTop (Taiwan))
-		156d b550  G560  (AlphaTop (Taiwan))
-		156d b560  G560  (AlphaTop (Taiwan))
-		156d b700  G700/U700  (AlphaTop (Taiwan))
-		156d b795  G795  (AlphaTop (Taiwan))
-		156d b797  G797  (AlphaTop (Taiwan))
-# nee Triones Technologies, Inc.
-1103  HighPoint Technologies, Inc.
-	0003  HPT343/345/346/363
-	0004  HPT366/368/370/370A/372/372N
-		1103 0001  HPT370A
-		1103 0004  HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4)
-		1103 0005  HPT370 UDMA100
-		1103 0006  HPT302/302N
-	0005  HPT372A/372N
-	0006  HPT302/302N
-	0007  HPT371/371N
-	0008  HPT374
-	0009  HPT372N
-	1720  RocketRAID 1720 (2x SATA II RAID Controller)
-	1740  RocketRAID 1740
-	1742  RocketRAID 1742
-	2300  RocketRAID 230x 4 Port SATA-II Controller
-	2310  RocketRAID 2310 4 Port SATA-II Controller
-	2320  RocketRAID 2320 SATA-II Controller
-	2322  RocketRAID 2322 SATA-II Controller
-	2340  RocketRAID 2340 16 Port SATA-II Controller
-	2640  RocketRAID 2640 SAS/SATA Controller
-	3220  RocketRAID 3220
-	3320  RocketRAID 3320
-1104  RasterOps Corp.
-1105  Sigma Designs, Inc.
-	1105  REALmagic Xcard MPEG 1/2/3/4 DVD Decoder
-	8300  REALmagic Hollywood Plus DVD Decoder
-	8400  EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder
-	8401  EM8401 REALmagic DVD/MPEG-2 A/V Decoder
-	8470  EM8470 REALmagic DVD/MPEG-4 A/V Decoder
-	8471  EM8471 REALmagic DVD/MPEG-4 A/V Decoder
-	8475  EM8475 REALmagic DVD/MPEG-4 A/V Decoder
-		1105 0001  REALmagic X-Card
-	8476  EM8476 REALmagic DVD/MPEG-4 A/V Decoder
-		127d 0000  CineView II
-	8485  EM8485 REALmagic DVD/MPEG-4 A/V Decoder
-	8486  EM8486 REALmagic DVD/MPEG-4 A/V Decoder
-	c622  EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder
-1106  VIA Technologies, Inc.
-	0102  Embedded VIA Ethernet Controller
-	0130  VT6305 1394.A Controller
-	0198  P4X600 Host Bridge
-	0204  K8M800 Host Bridge
-	0208  PT890 Host Bridge
-	0238  K8T890 Host Bridge
-	0258  PT880 Host Bridge
-	0259  CN333/CN400/PM880 Host Bridge
-	0269  KT880 Host Bridge
-	0282  K8T800Pro Host Bridge
-		1043 80a3  A8V Deluxe
-	0290  K8M890 Host Bridge
-	0293  PM896 Host Bridge
-	0296  P4M800 Host Bridge
-	0305  VT8363/8365 [KT133/KM133]
-		1019 0987  K7VZA Mainboard
-		1043 8033  A7V Mainboard
-		1043 803e  A7V-E Mainboard
-		1043 8042  A7V133/A7V133-C Mainboard
-		147b a401  KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard
-	0308  PT880 Ultra/PT894 Host Bridge
-		1043 8199  P4V800D-X Mainboard
-	0314  CN700/VN800/P4M800CE/Pro Host Bridge
-	0324  CX700/VX700 Host Bridge
-	0327  P4M890 Host Bridge
-	0336  K8M890CE Host Bridge
-	0340  PT900 Host Bridge
-	0351  K8T890CF Host Bridge
-	0353  VX800 Host Bridge
-	0364  CN896/VN896/P4M900 Host Bridge
-		1043 81ce  P5VD2-VM mothervoard
-	0391  VT8371 [KX133]
-	0415  PATA IDE Host Controller
-	0501  VT8501 [Apollo MVP4]
-	0505  VT82C505
-# Shares chip with :0576. The VT82C576M has :1571 instead of :0561.
-	0561  VT82C576MV
-	0571  VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE
-		1019 0985  P6VXA Motherboard
-		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
-		1043 8052  VT8233A Bus Master ATA100/66/33 IDE
-		1043 808c  A7V8X / A7V333 motherboard
-		1043 80a1  A7V8X-X motherboard rev. 1.01
-		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
-		1106 0571  VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE
-		1179 0001  Magnia Z310
-		1297 f641  FX41 motherboard
-		1458 5002  GA-7VAX Mainboard
-		1462 5901  KT6 Delta-FIS2R (MS-6590)
-		1462 7020  K8T NEO 2 motherboard
-		1462 7094  K8T Neo2-F V2.0
-		1462 7120  KT4AV motherboard
-		1462 7181  K8MM3-V mainboard
-		147b 1407  KV8-MAX3 motherboard
-		1849 0571  K7VT2/K7VT6 motherboard
-	0576  VT82C576 3V [Apollo Master]
-	0581  CX700/VX700 RAID Controller
-# Upgrade bios to get correct ID: 5324 instead of 0581
-		1106 0581  Wrong IDE ID
-	0585  VT82C585VP [Apollo VP1/VPX]
-	0586  VT82C586/A/B PCI-to-ISA [Apollo VP]
-		1106 0000  MVP3 ISA Bridge
-	0591  VT8237A SATA 2-Port Controller
-	0595  VT82C595 [Apollo VP2]
-	0596  VT82C596 ISA [Mobile South]
-		1106 0000  VT82C596/A/B PCI to ISA Bridge
-		1458 0596  VT82C596/A/B PCI to ISA Bridge
-	0597  VT82C597 [Apollo VP3]
-	0598  VT82C598 [Apollo MVP3]
-	0601  VT8601 [Apollo ProMedia]
-	0605  VT8605 [ProSavage PM133]
-		1043 802c  CUV4X mainboard
-	0680  VT82C680 [Apollo P6]
-	0686  VT82C686 [Apollo Super South]
-		1019 0985  P6VXA Motherboard
-		1043 802c  CUV4X mainboard
-		1043 8033  A7V Mainboard
-		1043 803e  A7V-E Mainboard
-		1043 8040  A7M266 Mainboard
-		1043 8042  A7V133/A7V133-C Mainboard
-		1106 0000  VT82C686/A PCI to ISA Bridge
-		1106 0686  VT82C686/A PCI to ISA Bridge
-		1179 0001  Magnia Z310
-		147b a702  KG7-Lite Mainboard
-	0691  VT82C693A/694x [Apollo PRO133x]
-		1019 0985  P6VXA Motherboard
-		1179 0001  Magnia Z310
-		1458 0691  VT82C691 Apollo Pro System Controller
-	0693  VT82C693 [Apollo Pro Plus]
-	0698  VT82C693A [Apollo Pro133 AGP]
-	0926  VT82C926 [Amazon]
-	1000  VT82C570MV
-	1106  VT82C570MV
-	1204  K8M800 Host Bridge
-	1208  PT890 Host Bridge
-	1238  K8T890 Host Bridge
-	1258  PT880 Host Bridge
-	1259  CN333/CN400/PM880 Host Bridge
-	1269  KT880 Host Bridge
-	1282  K8T800Pro Host Bridge
-	1290  K8M890 Host Bridge
-	1293  PM896 Host Bridge
-	1296  P4M800 Host Bridge
-	1308  PT894 Host Bridge
-	1314  CN700/VN800/P4M800CE/Pro Host Bridge
-	1324  CX700/VX700 Host Bridge
-	1327  P4M890 Host Bridge
-	1336  K8M890CE Host Bridge
-	1340  PT900 Host Bridge
-	1351  VT3351 Host Bridge
-	1353  VX800/VX820 Error Reporting
-	1364  CN896/VN896/P4M900 Host Bridge
-	1571  VT82C576M/VT82C586
-	1595  VT82C595/97 [Apollo VP2/97]
-	2106  VIA Rhine Family Fast Ethernet Adapter (VT6105)
-	2204  K8M800 Host Bridge
-	2208  PT890 Host Bridge
-	2238  K8T890 Host Bridge
-	2258  PT880 Host Bridge
-	2259  CN333/CN400/PM880 CPU Host Bridge
-	2269  KT880 Host Bridge
-	2282  K8T800Pro Host Bridge
-	2290  K8M890 Host Bridge
-	2293  PM896 Host Bridge
-	2296  P4M800 Host Bridge
-	2308  PT894 Host Bridge
-	2314  CN700/VN800/P4M800CE/Pro Host Bridge
-	2324  CX700/VX700 Host Bridge
-	2327  P4M890 Host Bridge
-	2336  K8M890CE Host Bridge
-	2340  PT900 Host Bridge
-	2351  VT3351 Host Bridge
-	2353  VX800/VX820 Host Bus Control
-	2364  CN896/VN896/P4M900 Host Bridge
-	287a  VT8251 PCI to PCI Bridge
-	287b  VT8251 Host Bridge
-	287c  VT8251 PCIE Root Port
-	287d  VT8251 PCIE Root Port
-	287e  VT8251 Ultra VLINK Controller
-	3022  CLE266
-	3038  VT82xxxxx UHCI USB 1.1 Controller
-		0925 1234  VA-502 Mainboard
-		1019 0985  P6VXA Motherboard
-		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
-		1043 8080  A7V333 motherboard
-		1043 808c  VT6202 USB2.0 4 port controller
-		1043 80a1  A7V8X-X motherboard
-		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
-		1179 0001  Magnia Z310
-		1458 5004  GA-7VAX Mainboard
-		1462 5901  KT6 Delta-FIS2R (MS-6590)
-		1462 7020  K8T NEO 2 motherboard
-		1462 7094  K8T Neo2-F V2.0
-		1462 7120  KT4AV motherboard
-		1462 7181  K8MM3-V mainboard
-		147b 1407  KV8-MAX3 motherboard
-		182d 201d  CN-029 USB2.0 4 port PCI Card
-		1849 3038  K7VT6
-	3040  VT82C586B ACPI
-	3043  VT86C100A [Rhine]
-		10bd 0000  VT86C100A Fast Ethernet Adapter
-		1106 0100  VT86C100A Fast Ethernet Adapter
-		1186 1400  DFE-530TX rev A
-	3044  VT6306 Fire II IEEE 1394 OHCI Link Layer Controller
-		0010 0001  IEEE 1394 4port DCST 1394-3+1B
-		0611 4430  EP-8KRA2+ Mainboard
-		1025 005a  TravelMate 290
-		1043 808a  A8V/A8N/P4P800 series motherboard
-		1458 1000  GA-7VT600-1394 Motherboard
-		1462 207d  K8NGM2 series motherboard
-		1462 217d  Aspire L250
-		1462 590d  KT6 Delta-FIS2R (MS-6590)
-		1462 702d  K8T NEO 2 motherboard
-		1462 971d  MS-6917
-	3050  VT82C596 Power Management
-	3051  VT82C596 Power Management
-	3053  VT6105M [Rhine-III]
-	3057  VT82C686 [Apollo Super ACPI]
-		1019 0985  P6VXA Motherboard
-		1019 0987  K7VZA Motherboard
-		1043 8033  A7V Mainboard
-		1043 803e  A7V-E Mainboard
-		1043 8040  A7M266 Mainboard
-		1043 8042  A7V133/A7V133-C Mainboard
-		1179 0001  Magnia Z310
-	3058  VT82C686 AC97 Audio Controller
-		0e11 0097  SoundMax Digital Integrated Audio
-		0e11 b194  Soundmax integrated digital audio
-		1019 0985  P6VXA Motherboard
-		1019 0987  K7VZA Motherboard
-		1043 1106  A7V133/A7V133-C Mainboard
-		1106 4511  Onboard Audio on EP7KXA
-		1458 7600  Onboard Audio
-		1462 3091  MS-6309 Onboard Audio
-		1462 3300  MS-6330 Onboard Audio
-		15dd 7609  Onboard Audio
-	3059  VT8233/A/8235/8237 AC97 Audio Controller
-		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
-		1019 1877  K8M800-M2 (V2.0) onboard audio
-		1043 8095  A7V8X Motherboard (Realtek ALC650 codec)
-		1043 80a1  A7V8X-X Motherboard
-		1043 80b0  A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])
-		1043 812a  A8V Deluxe motherboard (Realtek ALC850 codec)
-		10ec 8168  High Definition Audio
-		1106 3059  L7VMM2 Motherboard
-		1106 4161  K7VT2 motherboard
-		1106 4170  PCPartner P4M800-8237R Motherboard
-		1106 4552  Soyo KT-600 Dragon Plus (Realtek ALC 650)
-		1297 c160  FX41 motherboard (Realtek ALC650 codec)
-		1413 147b  KV8 Pro motherboard onboard audio
-		1458 a002  GA-7VAX Onboard Audio (Realtek ALC650)
-		1462 0080  K8T NEO 2 motherboard
-		1462 3800  KT266 onboard audio
-		1462 5901  KT6 Delta-FIS2R (MS-6590)
-		1462 7181  K8MM3-V mainboard
-		147b 1407  KV8-MAX3 motherboard
-		1695 300c  EP-8KRA2+ Mainboard
-		1849 0850  ASRock 775Dual-880 Pro onboard audio (Realtek ALC850)
-		1849 9739  P4VT8 Mainboard (C-Media CMI9739A codec)
-		1849 9761  K7VT6 motherboard
-		4005 4710  MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P)
-		a0a0 01b6  AK77-8XN onboard audio
-		a0a0 0342  AK86-L motherboard
-		aa01 1106  Epia TC10000 Motherboard
-	3065  VT6102 [Rhine-II]
-		1043 80a1  A7V8X-X Motherboard
-		1043 80ed  A7V600-X Motherboard
-		1106 0102  VT6102 [Rhine II] Embeded Ethernet Controller on VT8235
-		1186 1400  DFE-530TX rev A
-		1186 1401  DFE-530TX rev B
-		13b9 1421  LD-10/100AL PCI Fast Ethernet Adapter (rev.B)
-		1462 7061  MS-7061
-		1462 7181  K8MM3-V mainboard
-		147b 1c09  NV7 Motherboard
-		1695 3005  VT6103
-		1695 300c  Realtek ALC655 sound chip
-		1849 3065  K7VT6 motherboard
-# This hosts more than just the Intel 537 codec, it also hosts PCtel (SIL33) and SmartLink (SIL34) codecs
-	3068  AC'97 Modem Controller
-		1462 309e  MS-6309 Saturn Motherboard
-	3074  VT8233 PCI to ISA Bridge
-		1043 8052  VT8233A
-	3091  VT8633 [Apollo Pro266]
-	3099  VT8366/A/7 [Apollo KT266/A/333]
-		1043 8064  A7V266-E Mainboard
-		1043 807f  A7V333 Mainboard
-		1849 3099  K7VT2 motherboard
-	3101  VT8653 Host Bridge
-	3102  VT8662 Host Bridge
-	3103  VT8615 Host Bridge
-	3104  USB 2.0
-		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
-		1043 808c  A7V8X motherboard
-		1043 80a1  A7V8X-X motherboard rev 1.01
-		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
-		1297 f641  FX41 motherboard
-		1458 5004  GA-7VAX Mainboard
-		1462 5901  KT6 Delta-FIS2R (MS-6590)
-		1462 7020  K8T NEO 2 motherboard
-		1462 7094  K8T Neo2-F V2.0
-		1462 7120  KT4AV motherboard
-		1462 7181  K8MM3-V mainboard
-		147b 1407  KV8-MAX3 motherboard
-		182d 201d  CN-029 USB 2.0 4 port PCI Card
-		1849 3104  K7VT6 motherboard
-	3106  VT6105/VT6106S [Rhine-III]
-		1106 0105  VT6106S [Rhine-III]
-		1186 1403  DFE-530TX rev C
-		1186 1406  DFE-530TX+ rev F2
-		1186 1407  DFE-538TX
-	3108  K8M800/K8N800/K8N800A [S3 UniChrome Pro]
-	3109  VT8233C PCI to ISA Bridge
-	3112  VT8361 [KLE133] Host Bridge
-	3113  VPX/VPX2 PCI to PCI Bridge Controller
-	3116  VT8375 [KM266/KL266] Host Bridge
-		1297 f641  FX41 motherboard
-	3118  CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro]
-	3119  VT6120/VT6121/VT6122 Gigabit Ethernet Adapter
-	3122  VT8623 [Apollo CLE266] integrated CastleRock graphics
-	3123  VT8623 [Apollo CLE266]
-	3128  VT8753 [P4X266 AGP]
-	3133  VT3133 Host Bridge
-	3147  VT8233A ISA Bridge
-		1043 808c  A7V333 motherboard
-	3148  P4M266 Host Bridge
-	3149  VIA VT6420 SATA RAID Controller
-		1043 80ed  A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard
-		1458 b003  GA-7VM400AM(F) Motherboard
-		1462 5901  KT6 Delta-FIS2R (MS-6590)
-		1462 7020  K8T Neo 2 Motherboard
-		1462 7094  K8T Neo2-F V2.0
-		147b 1407  KV8-MAX3 motherboard
-		147b 1408  KV7
-		1849 3149  K7VT6 motherboard
-		a0a0 04ad  AK86-L motherboard
-	3156  P/KN266 Host Bridge
-	3157  CX700/VX700 [S3 UniChrome Pro]
-	3164  VT6410 ATA133 RAID controller
-		1043 80f4  P4P800 Mainboard Deluxe ATX
-		1462 7028  915P/G Neo2
-	3168  P4X333/P4X400/PT800 AGP Bridge
-		1849 3168  P4VT8 Mainboard
-	3177  VT8235 ISA Bridge
-		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
-		1043 808c  A7V8X motherboard
-		1043 80a1  A7V8X-X motherboard
-		1106 0000  KT4AV motherboard
-		1297 f641  FX41 motherboard
-		1458 5001  GA-7VAX Mainboard
-		1849 3177  K7VT2 motherboard
-	3178  ProSavageDDR P4N333 Host Bridge
-	3188  VT8385 [K8T800 AGP] Host Bridge
-		1043 80a3  K8V Deluxe/K8V-X motherboard
-		147b 1407  KV8-MAX3 motherboard
-	3189  VT8377 [KT400/KT600 AGP] Host Bridge
-		1043 807f  A7V8X motherboard
-		1106 0000  KT4AV motherboard (KT400A)
-		1458 5000  GA-7VAX Mainboard
-		1849 3189  K7VT6 motherboard
-	3204  K8M800 Host Bridge
-	3205  VT8378 [KM400/A] Chipset Host Bridge
-		1458 5000  GA-7VM400M Motherboard
-	3208  PT890 Host Bridge
-	3213  VPX/VPX2 PCI to PCI Bridge Controller
-	3218  K8T800M Host Bridge
-	3227  VT8237 ISA bridge [KT600/K8T800/K8T890 South]
-		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
-		1106 3227  DFI KT600-AL / Soltek SL-B9D-FGR Motherboard
-		1458 5001  GA-7VT600 Motherboard
-		147b 1407  KV8-MAX3 motherboard
-		1849 3227  K7VT4 motherboard
-	3230  K8M890CE/K8N890CE [Chrome 9]
-	3238  K8T890 Host Bridge
-	3249  VT6421 IDE RAID Controller
-	324a  CX700/VX700 PCI to PCI Bridge
-	324b  CX700/VX700 Host Bridge
-	324e  CX700/VX700 Internal Module Bus
-	3253  VIA VT6655 WiFi Adapter, 802.11a/b/g
-	3258  PT880 Host Bridge
-	3259  CN333/CN400/PM880 Host Bridge
-	3260  VIA Chrome9 HC IGP
-	3269  KT880 Host Bridge
-	3282  K8T800Pro Host Bridge
-	3287  VT8251 PCI to ISA Bridge
-	3288  VT1708/A [Azalia HDAC] (VIA High Definition Audio Controller)
-	3290  K8M890 Host Bridge
-	3296  P4M800 Host Bridge
-	3324  CX700/VX700 Host Bridge
-	3327  P4M890 Host Bridge
-	3336  K8M890CE Host Bridge
-	3337  VT8237A PCI to ISA Bridge
-	3340  PT900 Host Bridge
-	3343  P4M890 [S3 UniChrome Pro]
-	3344  CN700/P4M800 Pro/P4M800 CE/VN800 [S3 UniChrome Pro]
-	3349  VT8251 AHCI/SATA 4-Port Controller
-	3351  VT3351 Host Bridge
-	3353  VX800 PCI to PCI Bridge
-	3364  CN896/VN896/P4M900 Host Bridge
-	3371  CN896/VN896/P4M900 [Chrome 9 HC]
-	3372  VT8237S PCI to ISA Bridge
-	337a  VT8237A PCI to PCI Bridge
-	337b  VT8237A Host Bridge
-	4149  VIA VT6420 (ATA133) Controller
-	4204  K8M800 Host Bridge
-	4208  PT890 Host Bridge
-	4238  K8T890 Host Bridge
-	4258  PT880 Host Bridge
-	4259  CN333/CN400/PM880 Host Bridge
-	4269  KT880 Host Bridge
-	4282  K8T800Pro Host Bridge
-	4290  K8M890 Host Bridge
-	4293  PM896 Host Bridge
-	4296  P4M800 Host Bridge
-	4308  PT894 Host Bridge
-	4314  CN700/VN800/P4M800CE/Pro Host Bridge
-	4324  CX700/VX700 Host Bridge
-	4327  P4M890 Host Bridge
-	4336  K8M890CE Host Bridge
-	4340  PT900 Host Bridge
-	4351  VT3351 Host Bridge
-	4353  VX800/VX820 Power Management Control
-	4364  CN896/VN896/P4M900 Host Bridge
-	5030  VT82C596 ACPI [Apollo PRO]
-	5208  PT890 I/O APIC Interrupt Controller
-	5238  K8T890 I/O APIC Interrupt Controller
-	5290  K8M890 I/O APIC Interrupt Controller
-	5308  PT894 I/O APIC Interrupt Controller
-	5324  VX800 Serial ATA and EIDE Controller
-	5327  P4M890 I/O APIC Interrupt Controller
-	5336  K8M890CE I/O APIC Interrupt Controller
-	5340  PT900 I/O APIC Interrupt Controller
-	5351  VT3351 I/O APIC Interrupt Controller
-	5353  VX800/VX820 APIC and Central Traffic Control
-	5364  CN896/VN896/P4M900 I/O APIC Interrupt Controller
-	6100  VT85C100A [Rhine II]
-	6287  SATA RAID Controller
-	6327  P4M890 Security Device
-	6353  VX800/VX820 Scratch Registers
-	6364  CN896/VN896/P4M900 Security Device
-	7204  K8M800 Host Bridge
-	7205  KM400/KN400/P4M800 [S3 UniChrome]
-		1458 d000  Gigabyte GA-7VM400(A)M(F) Motherboard
-		1462 7061  MS-7061
-	7208  PT890 Host Bridge
-	7238  K8T890 Host Bridge
-	7258  PT880 Host Bridge
-	7259  CN333/CN400/PM880 Host Bridge
-	7269  KT880 Host Bridge
-	7282  K8T800Pro Host Bridge
-	7290  K8M890 Host Bridge
-	7293  PM896 Host Bridge
-	7296  P4M800 Host Bridge
-	7308  PT894 Host Bridge
-	7314  CN700/VN800/P4M800CE/Pro Host Bridge
-	7324  CX700/VX700 Host Bridge
-	7327  P4M890 Host Bridge
-	7336  K8M890CE Host Bridge
-	7340  PT900 Host Bridge
-	7351  VT3351 Host Bridge
-	7353  VX800/VX820 North-South Module Interface Control
-	7364  CN896/VN896/P4M900 Host Bridge
-	8231  VT8231 [PCI-to-ISA Bridge]
-	8235  VT8235 ACPI
-	8305  VT8363/8365 [KT133/KM133 AGP]
-	8324  CX700/VX700 PCI to ISA Bridge
-	8353  VX800/VX820 Bus Control and Power Management
-	8391  VT8371 [KX133 AGP]
-	8400  MVP4
-	8500  KLE133/PLE133/PLE133T
-	8501  VT8501 [Apollo MVP4 AGP]
-	8596  VT82C596 [Apollo PRO AGP]
-	8597  VT82C597 [Apollo VP3 AGP]
-	8598  VT82C598/694x [Apollo MVP3/Pro133x AGP]
-		1019 0985  P6VXA Motherboard
-	8601  VT8601 [Apollo ProMedia AGP]
-	8605  VT8605 [PM133 AGP]
-	8691  VT82C691 [Apollo Pro]
-	8693  VT82C693 [Apollo Pro Plus] PCI Bridge
-	8a25  PL133/PL133T [S3 ProSavage]
-	8a26  KL133/KL133A/KM133/KM133A [S3 ProSavage]
-	8d01  PN133/PN133T [S3 Twister]
-	8d04  KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR]
-	9530  Secure Digital Memory Card Controller
-	95d0  SDIO Host Controller
-	a208  PT890 PCI to PCI Bridge Controller
-	a238  K8T890 PCI to PCI Bridge Controller
-	a327  P4M890 PCI to PCI Bridge Controller
-	a353  VX800/VX820 South-North Module Interface Control
-	a364  CN896/VN896/P4M900 PCI to PCI Bridge Controller
-	b091  VT8633 [Apollo Pro266 AGP]
-	b099  VT8366/A/7 [Apollo KT266/A/333 AGP]
-	b101  VT8653 AGP Bridge
-	b102  VT8362 AGP Bridge
-	b103  VT8615 AGP Bridge
-	b112  VT8361 [KLE133] AGP Bridge
-	b113  VPX/VPX2 I/O APIC Interrupt Controller
-	b115  VT8363/8365 [KT133/KM133] PCI Bridge
-	b168  VT8235 PCI Bridge
-	b188  VT8237 PCI bridge [K8T800/K8T890 South]
-		147b 1407  KV8-MAX3 motherboard
-	b198  VT8237/VX700 PCI Bridge
-	b213  VPX/VPX2 I/O APIC Interrupt Controller
-	b999  [K8T890 North / VT8237 South] PCI Bridge
-	c208  PT890 PCI to PCI Bridge Controller
-	c238  K8T890 PCI to PCI Bridge Controller
-	c327  P4M890 PCI to PCI Bridge Controller
-	c340  PT900 PCI to PCI Bridge Controller
-	c353  VX800/VX820 PCI Express Root Port
-	c364  CN896/VN896/P4M900 PCI to PCI Bridge Controller
-	d104  VT8237R USB UDCI Controller
-	d208  PT890 PCI to PCI Bridge Controller
-	d213  VPX/VPX2 PCI to PCI Bridge Controller
-	d238  K8T890 PCI to PCI Bridge Controller
-	d340  PT900 PCI to PCI Bridge Controller
-	e208  PT890 PCI to PCI Bridge Controller
-	e238  K8T890 PCI to PCI Bridge Controller
-	e340  PT900 PCI to PCI Bridge Controller
-	e353  VX800/VX820 PCI Express Root Port
-	f208  PT890 PCI to PCI Bridge Controller
-	f238  K8T890 PCI to PCI Bridge Controller
-	f340  PT900 PCI to PCI Bridge Controller
-	f353  VX800/VX820 PCI Express Root Port
-1107  Stratus Computers
-	0576  VIA VT82C570MV [Apollo] (Wrong vendor ID!)
-1108  Proteon, Inc.
-	0100  p1690plus_AA
-	0101  p1690plus_AB
-	0105  P1690Plus
-	0108  P1690Plus
-	0138  P1690Plus
-	0139  P1690Plus
-	013c  P1690Plus
-	013d  P1690Plus
-1109  Cogent Data Technologies, Inc.
-	1400  EM110TX [EX110TX]
-110a  Siemens Nixdorf AG
-	0002  Pirahna 2-port
-	0005  Tulip controller, power management, switch extender
-	0006  FSC PINC (I/O-APIC)
-	0015  FSC Multiprocessor Interrupt Controller
-	001d  FSC Copernicus Management Controller
-	007b  FSC Remote Service Controller, mailbox device
-	007c  FSC Remote Service Controller, shared memory device
-	007d  FSC Remote Service Controller, SMIC device
-	2101  HST SAPHIR V Primary PCI (ISDN/PMx)
-# Superfastcom-PCI (Commtech, Inc.) or DSCC4 WAN Adapter
-	2102  DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels
-	2104  Eicon Diva 2.02 compatible passive ISDN card
-	3142  SIMATIC NET CP 5613A1 (Profibus Adapter)
-	4021  SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter)
-	4029  SIMATIC NET CP 5613A2 (Profibus Adapter)
-	4942  FPGA I-Bus Tracer for MBD
-	6120  SZB6120
-110b  Chromatic Research Inc.
-	0001  Mpact Media Processor
-	0004  Mpact 2
-110c  Mini-Max Technology, Inc.
-110d  Znyx Advanced Systems
-110e  CPU Technology
-110f  Ross Technology
-1110  Powerhouse Systems
-	6037  Firepower Powerized SMP I/O ASIC
-	6073  Firepower Powerized SMP I/O ASIC
-1111  Santa Cruz Operation
-# Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom
-1112  Osicom Technologies Inc
-	2200  FDDI Adapter
-	2300  Fast Ethernet Adapter
-	2340  4 Port Fast Ethernet Adapter
-	2400  ATM Adapter
-1113  Accton Technology Corporation
-	1211  SMC2-1211TX
-		103c 1207  EN-1207D Fast Ethernet Adapter
-		1113 1211  EN-1207D Fast Ethernet Adapter
-	1216  EN-1216 Ethernet Adapter
-		1113 1216  EN1207F series PCI Fast Ethernet Adapter
-		1113 2220  EN2220A Cardbus Fast Ethernet Adapter
-		1113 2242  EN2242 10/100 Ethernet Mini-PCI Card
-		111a 1020  SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?]
-	1217  EN-1217 Ethernet Adapter
-	5105  10Mbps Network card
-	9211  EN-1207D Fast Ethernet Adapter
-		1113 9211  EN-1207D Fast Ethernet Adapter
-	9511  21x4x DEC-Tulip compatible Fast Ethernet
-	d301  CPWNA100 (Philips wireless PCMCIA)
-	ec02  SMC 1244TX v3
-	ee23  SMCWPCIT-G 108Mbps Wireless PCI adapter
-1114  Atmel Corporation
-	0506  at76c506 802.11b Wireless Network Adaptor
-1115  3D Labs
-1116  Data Translation
-	0022  DT3001
-	0023  DT3002
-	0024  DT3003
-	0025  DT3004
-	0026  DT3005
-	0027  DT3001-PGL
-	0028  DT3003-PGL
-1117  Datacube, Inc
-	9500  Max-1C SVGA card
-	9501  Max-1C image processing
-1118  Berg Electronics
-1119  ICP Vortex Computersysteme GmbH
-	0000  GDT 6000/6020/6050
-	0001  GDT 6000B/6010
-	0002  GDT 6110/6510
-	0003  GDT 6120/6520
-	0004  GDT 6530
-	0005  GDT 6550
-	0006  GDT 6117/6517
-	0007  GDT 6127/6527
-	0008  GDT 6537
-	0009  GDT 6557/6557-ECC
-	000a  GDT 6115/6515
-	000b  GDT 6125/6525
-	000c  GDT 6535
-	000d  GDT 6555/6555-ECC
-	0100  GDT 6117RP/6517RP
-	0101  GDT 6127RP/6527RP
-	0102  GDT 6537RP
-	0103  GDT 6557RP
-	0104  GDT 6111RP/6511RP
-	0105  GDT 6121RP/6521RP
-	0110  GDT 6117RD/6517RD
-	0111  GDT 6127RD/6527RD
-	0112  GDT 6537RD
-	0113  GDT 6557RD
-	0114  GDT 6111RD/6511RD
-	0115  GDT 6121RD/6521RD
-	0118  GDT 6118RD/6518RD/6618RD
-	0119  GDT 6128RD/6528RD/6628RD
-	011a  GDT 6538RD/6638RD
-	011b  GDT 6558RD/6658RD
-	0120  GDT 6117RP2/6517RP2
-	0121  GDT 6127RP2/6527RP2
-	0122  GDT 6537RP2
-	0123  GDT 6557RP2
-	0124  GDT 6111RP2/6511RP2
-	0125  GDT 6121RP2/6521RP2
-	0136  GDT 6113RS/6513RS
-	0137  GDT 6123RS/6523RS
-	0138  GDT 6118RS/6518RS/6618RS
-	0139  GDT 6128RS/6528RS/6628RS
-	013a  GDT 6538RS/6638RS
-	013b  GDT 6558RS/6658RS
-	013c  GDT 6533RS/6633RS
-	013d  GDT 6543RS/6643RS
-	013e  GDT 6553RS/6653RS
-	013f  GDT 6563RS/6663RS
-	0166  GDT 7113RN/7513RN/7613RN
-	0167  GDT 7123RN/7523RN/7623RN
-	0168  GDT 7118RN/7518RN/7518RN
-	0169  GDT 7128RN/7528RN/7628RN
-	016a  GDT 7538RN/7638RN
-	016b  GDT 7558RN/7658RN
-	016c  GDT 7533RN/7633RN
-	016d  GDT 7543RN/7643RN
-	016e  GDT 7553RN/7653RN
-	016f  GDT 7563RN/7663RN
-	01d6  GDT 4x13RZ
-	01d7  GDT 4x23RZ
-	01f6  GDT 8x13RZ
-	01f7  GDT 8x23RZ
-	01fc  GDT 8x33RZ
-	01fd  GDT 8x43RZ
-	01fe  GDT 8x53RZ
-	01ff  GDT 8x63RZ
-	0210  GDT 6519RD/6619RD
-	0211  GDT 6529RD/6629RD
-	0260  GDT 7519RN/7619RN
-	0261  GDT 7529RN/7629RN
-	02ff  GDT MAXRP
-	0300  GDT NEWRX
-	0301  GDT NEWRX2
-111a  Efficient Networks, Inc
-	0000  155P-MF1 (FPGA)
-	0002  155P-MF1 (ASIC)
-	0003  ENI-25P ATM
-		111a 0000  ENI-25p Miniport ATM Adapter
-	0005  SpeedStream (LANAI)
-		111a 0001  ENI-3010 ATM
-		111a 0009  ENI-3060 ADSL (VPI=0)
-		111a 0101  ENI-3010 ATM
-		111a 0109  ENI-3060CO ADSL (VPI=0)
-		111a 0809  ENI-3060 ADSL (VPI=0 or 8)
-		111a 0909  ENI-3060CO ADSL (VPI=0 or 8)
-		111a 0a09  ENI-3060 ADSL (VPI=<0..15>)
-	0007  SpeedStream ADSL
-		111a 1001  ENI-3061 ADSL [ASIC]
-	1203  SpeedStream 1023 Wireless PCI Adapter
-111b  Teledyne Electronic Systems
-111c  Tricord Systems Inc.
-	0001  Powerbis Bridge
-111d  Integrated Device Technology, Inc.
-	0001  IDT77201/77211 155Mbps ATM SAR Controller [NICStAR]
-	0003  IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller
-	0004  IDT77V252 155Mbps ATM MICRO ABR SAR Controller
-	0005  IDT77V222 155Mbps ATM MICRO ABR SAR Controller
-	8018  PES12N3A PCI Express Switch
-	801c  PES24N3A PCI Express Switch
-	8028  PES4T4 PCI Express Switch
-	802b  PES8T5A PCI Express Switch
-	802c  PES16T4 PCI Express Switch
-	802d  PES16T7 PCI Express Switch
-	802e  PES24T6 PCI Express Switch
-	802f  PES32T8 PCI Express Switch
-	8032  PES48T12 PCI Express Switch
-	8034  PES16/22/34H16 PCI Express Switch
-	8035  PES32H8 PCI Express Switch
-	8036  PES48H12 PCI Express Switch
-	8037  PES64H16 PCI Express Switch
-	8039  PES3T3 PCI Express Switch
-	803a  PES4T4 PCI Express Switch
-	803c  PES5T5 PCI Express Switch
-	803d  PES6T5 PCI Express Switch
-	8048  PES8NT2 PCI Express Switch
-	8049  PES8NT2 PCI Express Switch
-	804a  PES8NT2 PCI Express Internal NTB
-	804b  PES8NT2 PCI Express External NTB
-	804c  PES16NT2 PCI Express Switch
-	804d  PES16NT2 PCI Express Switch
-	804e  PES16NT2 PCI Express Internal NTB
-	804f  PES16NT2 PCI Express External NTB
-	8058  PES12NT3 PCI Express Switch
-	8059  PES12NT3 PCI Express Switch
-	805a  PES12NT3 PCI Express Internal NTB
-	805b  PES12NT3 PCI Express External NTB
-	805c  PES24NT3 PCI Express Switch
-	805d  PES24NT3 PCI Express Switch
-	805e  PES24NT3 PCI Express Internal NTB
-	805f  PES24NT3 PCI Express External NTB
-	8060  PES16T4G2 PCI Express Gen2 Switch
-	8061  PES12T3G2 PCI Express Gen2 Switch
-	8068  PES6T6G2 PCI Express Gen2 Switch
-	806a  PES24T3G2 PCI Express Gen2 Switch
-	806c  PES16T4A/4T4G2 PCI Express Gen2 Switch
-	806e  PES24T6G2 PCI Express Gen2 Switch
-	806f  HIO524G2 PCI Express Gen2 Switch
-111e  Eldec
-111f  Precision Digital Images
-	4a47  Precision MX Video engine interface
-	5243  Frame capture bus interface
-1120  EMC Corporation
-1121  Zilog
-1122  Multi-tech Systems, Inc.
-1123  Excellent Design, Inc.
-1124  Leutron Vision AG
-	2581  Picport Monochrome
-1125  Eurocore
-1126  Vigra
-1127  FORE Systems Inc
-	0200  ForeRunner PCA-200 ATM
-	0210  PCA-200PC
-	0250  ATM
-	0300  ForeRunner PCA-200EPC ATM
-	0310  ATM
-	0400  ForeRunnerHE ATM Adapter
-		1127 0400  ForeRunnerHE ATM
-1129  Firmworks
-112a  Hermes Electronics Company, Ltd.
-112b  Linotype - Hell AG
-112c  Zenith Data Systems
-112d  Ravicad
-112e  Infomedia Microelectronics Inc.
-112f  Imaging Technology Inc
-	0000  MVC IC-PCI
-	0001  MVC IM-PCI Video frame grabber/processor
-	0008  PC-CamLink PCI framegrabber
-1130  Computervision
-1131  Philips Semiconductors
-	1561  USB 1.1 Host Controller
-		1775 c200  C2K onboard USB 1.1 host controller
-	1562  USB 2.0 Host Controller
-		1775 c200  C2K onboard USB 2.0 host controller
-	3400  SmartPCI56(UCB1500) 56K Modem
-	5400  TriMedia TM1000/1100
-		12ca 0000  BlueICE
-	5402  TriMedia TM-1300
-		1244 0f00  Fritz!Card DSL
-	5405  TriMedia TM1500
-	5406  TriMedia TM1700
-	7130  SAA7130 Video Broadcast Decoder
-		102b 48d0  Matrox CronosPlus
-		1048 226b  ELSA EX-VISION 300TV
-		107d 6655  WinFast DTV1000S
-		1131 2001  10MOONS PCI TV CAPTURE CARD
-		1131 2005  Techcom (India) TV Tuner Card (SSD-TV-670)
-		1461 050c  Nagase Sangyo TransGear 3000TV
-		1461 10ff  AVerMedia DVD EZMaker
-		1461 2108  AverMedia AverTV/305
-		1461 2115  AverMedia AverTV Studio 305
-		153b 1152  Terratec Cinergy 200 TV
-		185b c100  Compro VideoMate TV PVR/FM
-		185b c901  Videomate DVB-T200
-		5168 0138  LifeView FlyVIDEO2000
-	7133  SAA7131/SAA7133/SAA7135 Video Broadcast Decoder
-		0000 4091  Beholder BeholdTV 409 FM
-# Deleting vendor name after rereading submit instructions
-		0070 6701  WinTV HVR-1110
-		1019 4cb5  Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)
-		1043 0210  FlyTV mini Asus Digimatrix
-		1043 4843  ASUS TV-FM 7133
-		1043 4845  TV-FM 7135
-		1043 4862  P7131 Dual
-		1043 4876  My Cinema-P7131 Hybrid
-		1131 0000  KWorld V-Stream Studio TV Terminator
-		1131 2001  Proteus Pro [philips reference design]
-		1131 2018  Tiger reference design
-		1131 4ee9  MonsterTV Mobile
-		11bd 002b  PCTV Stereo
-		11bd 002e  PCTV 110i (saa7133)
-		12ab 0800  PURPLE TV
-		13c2 2804  Technotrend Budget T-3000 Hybrid
-		1421 0335  Instant TV DVB-T Cardbus
-		1421 1370  Instant TV (saa7135)
-		1435 7330  VFG7330
-		1435 7350  VFG7350
-		1461 1044  AVerTVHD MCE A180
-		1461 4836  M10D Hybrid DVBT
-		1461 a14b  AVerTV Studio 509
-		1461 f01d  DVB-T Super 007
-		1461 f31f  Avermedia AVerTV GO 007 FM
-		1461 f936  Hybrid+FM PCI (rev A16D)
-		1462 6231  TV@nywhere Plus
-		1489 0214  LifeView FlyTV Platinum FM
-		14c0 1212  LifeView FlyTV Platinum Mini2
-		153b 1160  Cinergy 250 PCI TV
-		153b 1162  Terratec Cinergy 400 mobile
-		17de 7350  ATSC 110 Digital / Analog HDTV Tuner
-		17de 7352  ATSC 115 Digital / Analog HDTV Tuner
-		185b c100  VideoMate TV
-		185b c900  VideoMate T750
-		5168 0306  LifeView FlyDVB-T DUO
-		5168 0319  LifeView FlyDVB Trio
-		5168 0502  LifeView FlyDVB-T Duo CardBus
-		5168 0520  LifeView FlyDVB Trio CardBus
-		5168 1502  LifeView FlyTV CardBus
-		5168 2502  LifeView FlyDVB-T CardBus
-		5168 2520  LifeView FlyDVB-S Duo CardBus
-		5168 3502  LifeView FlyDVB-T Hybrid CardBus
-		5168 3520  LifeView FlyDVB Trio N CardBus
-	7134  SAA7134/SAA7135HL Video Broadcast Decoder
-		1019 4cb4  Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)
-		1043 0210  Digimatrix TV
-		1043 4840  ASUS TV-FM 7134
-		1043 4842  TV-FM 7134
-		1131 2004  EUROPA V3 reference design
-		1131 4e85  SKNet Monster TV
-		1131 6752  EMPRESS
-		11bd 002b  PCTV Stereo
-		11bd 002d  PCTV 300i DVB-T + PAL
-		1461 2c00  AverTV Hybrid+FM PCI
-		1461 9715  AVerTV Studio 307
-		1461 a70a  Avermedia AVerTV 307
-		1461 a70b  AverMedia M156 / Medion 2819
-		1461 d6ee  Cardbus TV/Radio (E500)
-		1471 b7e9  AVerTV Cardbus plus
-		153b 1142  Terratec Cinergy 400 TV
-		153b 1143  Terratec Cinergy 600 TV
-		153b 1158  Terratec Cinergy 600 TV MK3
-		1540 9524  ProVideo PV952
-		16be 0003  Medion 7134
-		185b c200  Compro VideoMate Gold+ Pal
-		185b c900  Videomate DVB-T300
-		1894 a006  KNC One TV-Station DVR
-		1894 fe01  KNC One TV-Station RDS / Typhoon TV Tuner RDS
-		5168 0138  FLY TV PRIME 34FM
-	7145  SAA7145
-	7146  SAA7146
-		110a 0000  Fujitsu/Siemens DVB-C card rev1.5
-		110a ffff  Fujitsu/Siemens DVB-C card rev1.5
-		1124 2581  Leutron Vision PicPort
-		1131 4f56  KNC1 DVB-S Budget
-		1131 4f60  Fujitsu-Siemens Activy DVB-S Budget Rev AL
-		1131 4f61  Activy DVB-S Budget Rev GR
-		1131 5f61  Activy DVB-T Budget
-		114b 2003  DVRaptor Video Edit/Capture Card
-		11bd 0006  DV500 Overlay
-		11bd 000a  DV500 Overlay
-		11bd 000f  DV500 Overlay
-		13c2 0000  Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5
-		13c2 0001  Technotrend/Hauppauge DVB card rev1.3 or rev1.6
-		13c2 0002  Technotrend/Hauppauge DVB card rev2.1
-		13c2 0003  Technotrend/Hauppauge DVB card rev2.1
-		13c2 0004  Technotrend/Hauppauge DVB card rev2.1
-		13c2 0006  Technotrend/Hauppauge DVB card rev1.3 or rev1.6
-		13c2 0008  Technotrend/Hauppauge DVB-T
-		13c2 000a  Octal/Technotrend DVB-C for iTV
-		13c2 000e  Technotrend/Hauppauge DVB card rev2.3
-		13c2 1003  Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card
-		13c2 1004  Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card
-		13c2 1005  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card
-		13c2 100c  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card
-		13c2 100f  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card
-		13c2 1011  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card
-		13c2 1012  DVB T-1500
-		13c2 1013  SATELCO Multimedia DVB
-		13c2 1016  WinTV-NOVA-SE DVB card
-		13c2 1018  DVB S-1401
-		13c2 1019  S2-3200
-		13c2 1102  Technotrend/Hauppauge DVB card rev2.1
-		153b 1155  Cinergy 1200 DVB-S
-		153b 1156  Terratec Cynergy 1200C
-		153b 1157  Cinergy 1200 DVB-T
-		1894 0020  KNC One DVB-C V1.0
-	9730  SAA9730 Integrated Multimedia and Peripheral Controller
-		1131 0000  Integrated Multimedia and Peripheral Controller
-1132  Mitel Corp.
-1133  Dialogic Corporation
-	7901  EiconCard S90
-	7902  EiconCard S90
-	7911  EiconCard S91
-	7912  EiconCard S91
-	7941  EiconCard S94
-	7942  EiconCard S94
-	7943  EiconCard S94
-	7944  EiconCard S94
-	b921  EiconCard P92
-	b922  EiconCard P92
-	b923  EiconCard P92
-	e001  Diva Pro 2.0 S/T
-	e002  Diva 2.0 S/T PCI
-	e003  Diva Pro 2.0 U
-	e004  Diva 2.0 U PCI
-	e005  Diva 2.01 S/T PCI
-	e006  Diva CT S/T PCI
-	e007  Diva CT U PCI
-	e008  Diva CT Lite S/T PCI
-	e009  Diva CT Lite U PCI
-	e00a  Diva ISDN+V.90 PCI
-	e00b  Diva ISDN PCI 2.02
-	e00c  Diva 2.02 PCI U
-	e00d  Diva Pro 3.0 PCI
-	e00e  Diva ISDN+CT S/T PCI Rev 2
-	e010  Diva Server BRI-2M PCI
-		110a 0021  Fujitsu Siemens ISDN S0
-	e011  Diva Server BRI S/T Rev 2
-	e012  Diva Server 4BRI-8M PCI
-	e013  4BRI
-		1133 1300  Diva V-4BRI-8 PCI v2
-		1133 e013  Diva 4BRI-8 PCI v2
-	e014  Diva Server PRI-30M PCI
-	e015  Diva PRI PCI v2
-	e016  Diva Server Voice 4BRI PCI
-	e017  Diva Server Voice 4BRI Rev 2
-		1133 e017  Diva Server Voice 4BRI-8M 2.0 PCI
-	e018  BRI
-		1133 1800  Diva V-BRI-2 PCI v2
-		1133 e018  Diva BRI-2 PCI v2
-	e019  Diva Server Voice PRI Rev 2
-		1133 e019  Diva Server Voice PRI 2.0 PCI
-	e01a  Diva BRI-2FX PCI v2
-	e01b  Diva Server Voice BRI-2M 2.0 PCI
-		1133 e01b  Diva Server Voice BRI-2M 2.0 PCI
-	e01c  PRI
-		1133 1c01  Diva PRI/E1/T1-8 PCI v3
-		1133 1c02  Diva PRI/T1-24 PCI(e) v3
-		1133 1c03  Diva PRI/E1-30 PCI(e) v3
-		1133 1c04  Diva PRI/E1/T1-CTI PCI(e) v3
-		1133 1c05  Diva V-PRI/T1-24 PCI(e) v3
-		1133 1c06  Diva V-PRI/E1-30 PCI(e) v3
-		1133 1c07  Diva Server PRI/E1/T1-8 Cornet NQ
-		1133 1c08  Diva Server PRI/T1-24 Cornet NQ
-		1133 1c09  Diva Server PRI/E1-30 Cornet NQ
-		1133 1c0a  Diva Server PRI/E1/T1 Cornet NQ
-		1133 1c0b  Diva Server V-PRI/T1-24 Cornet NQ
-		1133 1c0c  Diva Server V-PRI/E1-30 Cornet NQ
-	e01e  2PRI
-		1133 1e01  Diva 2PRI/E1/T1-60 PCI v1
-		1133 e01e  Diva V-2PRI/E1/T1-60 PCI v1
-	e020  4PRI
-		1133 2001  Diva 4PRI/E1/T1-120 PCI v1
-		1133 e020  Diva V-4PRI/E1/T1-120 PCI v1
-	e022  Analog-2
-		1133 2200  Diva V-Analog-2 PCI v1
-		1133 e022  Diva Analog-2 PCI v1
-	e024  Analog-4
-		1133 2400  Diva V-Analog-4 PCI v1
-		1133 e024  Diva Analog-4 PCI v1
-	e028  Analog-8
-		1133 2800  Diva V-Analog-8 PCI v1
-		1133 e028  Diva Analog-8 PCI v1
-	e02a  Diva IPM-300 PCI v1
-	e02c  Diva IPM-600 PCI v1
-	e02e  4BRI
-		1133 2e01  Diva V-4BRI-8 PCIe v2
-		1133 e02e  Diva 4BRI-8 PCIe v2
-	e032  BRI
-		1133 3201  Diva V-BRI-2 PCIe v2
-		1133 e032  Diva BRI-2 PCIe v2
-	e034  Diva BRI-CTI PCI v2
-1134  Mercury Computer Systems
-	0001  Raceway Bridge
-	0002  Dual PCI to RapidIO Bridge
-1135  Fuji Xerox Co Ltd
-	0001  Printer controller
-1136  Momentum Data Systems
-1137  Cisco Systems Inc
-1138  Ziatech Corporation
-	8905  8905 [STD 32 Bridge]
-1139  Dynamic Pictures, Inc
-	0001  VGA Compatable 3D Graphics
-113a  FWB Inc
-113b  Network Computing Devices
-113c  Cyclone Microsystems, Inc.
-	0000  PCI-9060 i960 Bridge
-	0001  PCI-SDK [PCI i960 Evaluation Platform]
-	0911  PCI-911 [i960Jx-based Intelligent I/O Controller]
-	0912  PCI-912 [i960CF-based Intelligent I/O Controller]
-	0913  PCI-913
-	0914  PCI-914 [I/O Controller w/ secondary PCI bus]
-113d  Leading Edge Products Inc
-113e  Sanyo Electric Co - Computer Engineering Dept
-113f  Equinox Systems, Inc.
-	0808  SST-64P Adapter
-	1010  SST-128P Adapter
-	80c0  SST-16P DB Adapter
-	80c4  SST-16P RJ Adapter
-	80c8  SST-16P Adapter
-	8888  SST-4P Adapter
-	9090  SST-8P Adapter
-1140  Intervoice Inc
-1141  Crest Microsystem Inc
-1142  Alliance Semiconductor Corporation
-	3210  AP6410
-	6422  ProVideo 6422
-	6424  ProVideo 6424
-	6425  ProMotion AT25
-	643d  ProMotion AT3D
-1143  NetPower, Inc
-1144  Cincinnati Milacron
-	0001  Noservo controller
-1145  Workbit Corporation
-	8007  NinjaSCSI-32 Workbit
-	f007  NinjaSCSI-32 KME
-	f010  NinjaSCSI-32 Workbit
-	f012  NinjaSCSI-32 Logitec
-	f013  NinjaSCSI-32 Logitec
-	f015  NinjaSCSI-32 Melco
-	f020  NinjaSCSI-32 Sony PCGA-DVD51
-1146  Force Computers
-1147  Interface Corp
-# Nee Schneider & Koch
-1148  SysKonnect
-	4000  FDDI Adapter
-		0e11 b03b  Netelligent 100 FDDI DAS Fibre SC
-		0e11 b03c  Netelligent 100 FDDI SAS Fibre SC
-		0e11 b03d  Netelligent 100 FDDI DAS UTP
-		0e11 b03e  Netelligent 100 FDDI SAS UTP
-		0e11 b03f  Netelligent 100 FDDI SAS Fibre MIC
-		1148 5521  FDDI SK-5521 (SK-NET FDDI-UP)
-		1148 5522  FDDI SK-5522 (SK-NET FDDI-UP DAS)
-		1148 5541  FDDI SK-5541 (SK-NET FDDI-FP)
-		1148 5543  FDDI SK-5543 (SK-NET FDDI-LP)
-		1148 5544  FDDI SK-5544 (SK-NET FDDI-LP DAS)
-		1148 5821  FDDI SK-5821 (SK-NET FDDI-UP64)
-		1148 5822  FDDI SK-5822 (SK-NET FDDI-UP64 DAS)
-		1148 5841  FDDI SK-5841 (SK-NET FDDI-FP64)
-		1148 5843  FDDI SK-5843 (SK-NET FDDI-LP64)
-		1148 5844  FDDI SK-5844 (SK-NET FDDI-LP64 DAS)
-	4200  Token Ring adapter
-	4300  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)
-		1148 9821  SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T)
-		1148 9822  SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link)
-		1148 9841  SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX)
-		1148 9842  SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link)
-		1148 9843  SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX)
-		1148 9844  SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link)
-		1148 9861  SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition)
-		1148 9862  SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link)
-		1148 9871  SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX)
-		1148 9872  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)
-		1259 2970  AT-2970SX Gigabit Ethernet Adapter
-		1259 2971  AT-2970LX Gigabit Ethernet Adapter
-		1259 2972  AT-2970TX Gigabit Ethernet Adapter
-		1259 2973  AT-2971SX Gigabit Ethernet Adapter
-		1259 2974  AT-2971T Gigabit Ethernet Adapter
-		1259 2975  AT-2970SX/2SC Gigabit Ethernet Adapter
-		1259 2976  AT-2970LX/2SC Gigabit Ethernet Adapter
-		1259 2977  AT-2970TX/2TX Gigabit Ethernet Adapter
-	4320  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC
-		1148 0121  Marvell RDK-8001 Adapter
-		1148 0221  Marvell RDK-8002 Adapter
-		1148 0321  Marvell RDK-8003 Adapter
-		1148 0421  Marvell RDK-8004 Adapter
-		1148 0621  Marvell RDK-8006 Adapter
-		1148 0721  Marvell RDK-8007 Adapter
-		1148 0821  Marvell RDK-8008 Adapter
-		1148 0921  Marvell RDK-8009 Adapter
-		1148 1121  Marvell RDK-8011 Adapter
-		1148 1221  Marvell RDK-8012 Adapter
-		1148 3221  SK-9521 V2.0 10/100/1000Base-T Adapter
-		1148 5021  SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter
-		1148 5041  SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter
-		1148 5043  SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter
-		1148 5051  SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter
-		1148 5061  SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter
-		1148 5071  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter
-		1148 9521  SK-9521 10/100/1000Base-T Adapter
-	4400  SK-9Dxx Gigabit Ethernet Adapter
-	4500  SK-9Mxx Gigabit Ethernet Adapter
-	9000  SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45
-	9843  [Fujitsu] Gigabit Ethernet
-	9e00  SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45
-		1148 2100  SK-9E21 Server Adapter
-		1148 21d0  SK-9E21D 10/100/1000Base-T Adapter
-		1148 2200  SK-9E22 Server Adapter
-		1148 8100  SK-9E81 Server Adapter
-		1148 8200  SK-9E82 Server Adapter
-		1148 9100  SK-9E91 Server Adapter
-		1148 9200  SK-9E92 Server Adapter
-1149  Win System Corporation
-114a  VMIC
-	5579  VMIPCI-5579 (Reflective Memory Card)
-	5587  VMIPCI-5587 (Reflective Memory Card)
-	6504  VMIC PCI 7755 FPGA
-	7587  VMIVME-7587
-114b  Canopus Co., Ltd
-114c  Annabooks
-114d  IC Corporation
-114e  Nikon Systems Inc
-114f  Digi International
-	0002  AccelePort EPC
-	0003  RightSwitch SE-6
-	0004  AccelePort Xem
-	0005  AccelePort Xr
-	0006  AccelePort Xr,C/X
-	0009  AccelePort Xr/J
-	000a  AccelePort EPC/J
-	000c  DataFirePRIme T1 (1-port)
-	000d  SyncPort 2-Port (x.25/FR)
-	0011  AccelePort 8r EIA-232 (IBM)
-	0012  AccelePort 8r EIA-422
-	0013  AccelePort Xr
-	0014  AccelePort 8r EIA-422
-	0015  AccelePort Xem
-	0016  AccelePort EPC/X
-	0017  AccelePort C/X
-	001a  DataFirePRIme E1 (1-port)
-	001b  AccelePort C/X (IBM)
-	001d  DataFire RAS T1/E1/PRI
-		114f 0050  DataFire RAS E1 Adapter
-		114f 0051  DataFire RAS Dual E1 Adapter
-		114f 0052  DataFire RAS T1 Adapter
-		114f 0053  DataFire RAS Dual T1 Adapter
-	0023  AccelePort RAS
-	0024  DataFire RAS B4 ST/U
-		114f 0030  DataFire RAS BRI U Adapter
-		114f 0031  DataFire RAS BRI S/T Adapter
-	0026  AccelePort 4r 920
-	0027  AccelePort Xr 920
-	0028  ClassicBoard 4
-	0029  ClassicBoard 8
-	0034  AccelePort 2r 920
-	0035  DataFire DSP T1/E1/PRI cPCI
-	0040  AccelePort Xp
-# AccelePort Xp 2 ports
-		114f 0042  AccelePort 2p PCI
-# AccelePort Xp 4 ports
-		114f 0043  AccelePort 4p PCI
-# AccelePort Xp 8 ports
-		114f 0044  AccelePort 8p PCI
-	0042  AccelePort 2p
-	0043  AccelePort 4p
-	0044  AccelePort 8p
-	0045  AccelePort 16p
-	004e  AccelePort 32p
-	0070  Datafire Micro V IOM2 (Europe)
-	0071  Datafire Micro V (Europe)
-	0072  Datafire Micro V IOM2 (North America)
-	0073  Datafire Micro V (North America)
-	00b0  Digi Neo 4
-	00b1  Digi Neo 8
-	00c8  Digi Neo 2 DB9
-	00c9  Digi Neo 2 DB9 PRI
-	00ca  Digi Neo 2 RJ45
-	00cb  Digi Neo 2 RJ45 PRI
-	00cc  Digi Neo 1 422
-	00cd  Digi Neo 1 422 485
-	00ce  Digi Neo 2 422 485
-	00d0  ClassicBoard 4 422
-	00d1  ClassicBoard 8 422
-	6001  Avanstar
-1150  Thinking Machines Corp
-1151  JAE Electronics Inc.
-1152  Megatek
-1153  Land Win Electronic Corp
-1154  Melco Inc
-1155  Pine Technology Ltd
-1156  Periscope Engineering
-1157  Avsys Corporation
-1158  Voarx R & D Inc
-	3011  Tokenet/vg 1001/10m anylan
-	9050  Lanfleet/Truevalue
-	9051  Lanfleet/Truevalue
-1159  Mutech Corp
-	0001  MV-1000
-115a  Harlequin Ltd
-115b  Parallax Graphics
-115c  Photron Ltd.
-115d  Xircom
-	0003  Cardbus Ethernet 10/100
-		1014 0181  10/100 EtherJet Cardbus Adapter
-		1014 1181  10/100 EtherJet Cardbus Adapter
-		1014 8181  10/100 EtherJet Cardbus Adapter
-		1014 9181  10/100 EtherJet Cardbus Adapter
-		115d 0181  Cardbus Ethernet 10/100
-		115d 0182  RealPort2 CardBus Ethernet 10/100 (R2BE-100)
-		115d 1181  Cardbus Ethernet 10/100
-		1179 0181  Cardbus Ethernet 10/100
-		8086 8181  EtherExpress PRO/100 Mobile CardBus 32 Adapter
-		8086 9181  EtherExpress PRO/100 Mobile CardBus 32 Adapter
-	0005  Cardbus Ethernet 10/100
-		1014 0182  10/100 EtherJet Cardbus Adapter
-		1014 1182  10/100 EtherJet Cardbus Adapter
-		115d 0182  Cardbus Ethernet 10/100
-		115d 1182  Cardbus Ethernet 10/100
-	0007  Cardbus Ethernet 10/100
-		1014 0182  10/100 EtherJet Cardbus Adapter
-		1014 1182  10/100 EtherJet Cardbus Adapter
-		115d 0182  Cardbus Ethernet 10/100
-		115d 1182  Cardbus Ethernet 10/100
-	000b  Cardbus Ethernet 10/100
-		1014 0183  10/100 EtherJet Cardbus Adapter
-		115d 0183  Cardbus Ethernet 10/100
-	000c  Mini-PCI V.90 56k Modem
-	000f  Cardbus Ethernet 10/100
-		1014 0183  10/100 EtherJet Cardbus Adapter
-		115d 0183  Cardbus Ethernet 10/100
-	00d4  Mini-PCI K56Flex Modem
-	0101  Cardbus 56k modem
-		115d 1081  Cardbus 56k Modem
-	0103  Cardbus Ethernet + 56k Modem
-		1014 9181  Cardbus 56k Modem
-		1115 1181  Cardbus Ethernet 100 + 56k Modem
-		115d 1181  CBEM56G-100 Ethernet + 56k Modem
-		8086 9181  PRO/100 LAN + Modem56 CardBus
-115e  Peer Protocols Inc
-115f  Maxtor Corporation
-1160  Megasoft Inc
-1161  PFU Limited
-1162  OA Laboratory Co Ltd
-1163  Rendition
-	0001  Verite 1000
-	2000  Verite V2000/V2100/V2200
-		1092 2000  Stealth II S220
-1164  Advanced Peripherals Technologies
-1165  Imagraph Corporation
-	0001  Motion TPEG Recorder/Player with audio
-# nee ServerWorks
-1166  Broadcom
-	0000  CMIC-LE
-	0005  CNB20-LE Host Bridge
-	0006  CNB20HE Host Bridge
-	0007  CNB20-LE Host Bridge
-	0008  CNB20HE Host Bridge
-	0009  CNB20LE Host Bridge
-	0010  CIOB30
-	0011  CMIC-HE
-	0012  CMIC-WS Host Bridge (GC-LE chipset)
-	0013  CNB20-HE Host Bridge
-	0014  CMIC-LE Host Bridge (GC-LE chipset)
-	0015  CMIC-GC Host Bridge
-	0016  CMIC-GC Host Bridge
-	0017  GCNB-LE Host Bridge
-	0031  HT1100 HPX0 HT Host Bridge
-	0036  BCM5785 [HT1000] PCI/PCI-X Bridge
-	0101  CIOB-X2 PCI-X I/O Bridge
-	0103  EPB PCI-Express to PCI-X Bridge
-	0104  BCM5785 [HT1000] PCI/PCI-X Bridge
-	0110  CIOB-E I/O Bridge with Gigabit Ethernet
-	0130  BCM5780 [HT2000] PCI-X bridge
-	0132  BCM5780 [HT2000] PCI-Express Bridge
-		1166 0132  HT2000 PCI-Express bridge
-	0140  HT2100 PCI-Express Bridge
-	0141  HT2100 PCI-Express Bridge
-	0142  HT2100 PCI-Express Bridge
-	0144  HT2100 PCI-Express Bridge
-	0200  OSB4 South Bridge
-	0201  CSB5 South Bridge
-		4c53 1080  CT8 mainboard
-	0203  CSB6 South Bridge
-		1734 1012  Primergy RX300
-	0205  BCM5785 [HT1000] Legacy South Bridge
-	0211  OSB4 IDE Controller
-	0212  CSB5 IDE Controller
-		1028 810b  PowerEdge 2550
-		4c53 1080  CT8 mainboard
-	0213  CSB6 RAID/IDE Controller
-		1028 4134  PowerEdge 600SC
-		1028 c134  Poweredge SC600
-		1734 1012  Primergy RX300
-	0214  BCM5785 [HT1000] IDE
-	0217  CSB6 IDE Controller
-		1028 4134  Poweredge SC600
-	021b  HT1100 HD Audio
-	0220  OSB4/CSB5 OHCI USB Controller
-		4c53 1080  CT8 mainboard
-	0221  CSB6 OHCI USB Controller
-		1734 1012  Primergy RX300
-	0223  BCM5785 [HT1000] USB
-	0225  CSB5 LPC bridge
-	0227  GCLE-2 Host Bridge
-		1734 1012  Primergy RX300
-	0230  CSB5 LPC bridge
-		4c53 1080  CT8 mainboard
-	0234  BCM5785 [HT1000] LPC
-	0235  BCM5785 [HT1000] XIOAPIC0-2
-	0238  BCM5785 [HT1000] WDTimer
-	0240  K2 SATA
-	0241  RAIDCore RC4000
-	0242  RAIDCore BC4000
-	024a  BCM5785 [HT1000] SATA (Native SATA Mode)
-# The device starts as 024A, and changes to 024B if set to PATA mode in BIOS
-	024b  BCM5785 [HT1000] SATA (PATA/IDE Mode)
-	0406  HT1100 PCI-X Bridge
-	0408  HT1100 Legacy Device
-	040a  HT1100 ISA-LPC Bridge
-	0410  HT1100 SATA Controller (Native SATA Mode)
-	0411  HT1100 SATA Controller (PATA / IDE Mode)
-	0412  HT1100 USB OHCI Controller
-	0414  HT1100 USB EHCI Controller
-	0416  HT1100 USB EHCI Controller (with Debug Port)
-	0420  HT1100 PCI-Express Bridge
-	0421  HT1100 SAS/SATA Controller
-	0422  HT1100 PCI-Express Bridge
-1167  Mutoh Industries Inc
-1168  Thine Electronics Inc
-1169  Centre for Development of Advanced Computing
-116a  Polaris Communications
-	6100  Bus/Tag Channel
-	6800  Escon Channel
-	7100  Bus/Tag Channel
-	7800  Escon Channel
-116b  Connectware Inc
-116c  Intelligent Resources Integrated Systems
-116d  Martin-Marietta
-116e  Electronics for Imaging
-116f  Workstation Technology
-1170  Inventec Corporation
-1171  Loughborough Sound Images Plc
-1172  Altera Corporation
-1173  Adobe Systems, Inc
-1174  Bridgeport Machines
-1175  Mitron Computer Inc.
-1176  SBE Incorporated
-1177  Silicon Engineering
-1178  Alfa, Inc.
-	afa1  Fast Ethernet Adapter
-1179  Toshiba America Info Systems
-	0102  Extended IDE Controller
-	0103  EX-IDE Type-B
-	0404  DVD Decoder card
-	0406  Tecra Video Capture device
-	0407  DVD Decoder card (Version 2)
-	0601  CPU to PCI bridge
-		1179 0001  Satellite Pro
-	0603  ToPIC95 PCI to CardBus Bridge for Notebooks
-	060a  ToPIC95
-		1179 0001  Satellite Pro
-	060f  ToPIC97
-	0617  ToPIC100 PCI to Cardbus Bridge with ZV Support
-	0618  CPU to PCI and PCI to ISA bridge
-# Claimed to be Lucent DSP1645 [Mars], but that's apparently incorrect. Does anyone know the correct ID?
-	0701  FIR Port
-	0804  TC6371AF SmartMedia Controller
-	0805  SD TypA Controller
-	0d01  FIR Port Type-DO
-		1179 0001  FIR Port Type-DO
-117a  A-Trend Technology
-117b  L G Electronics, Inc.
-117c  Atto Technology
-	0030  Ultra320 SCSI Host Adapter
-		117c 8013  ExpressPCI UL4D
-		117c 8014  ExpressPCI UL4S
-117d  Becton & Dickinson
-117e  T/R Systems
-117f  Integrated Circuit Systems
-1180  Ricoh Co Ltd
-	0465  RL5c465
-	0466  RL5c466
-	0475  RL5c475
-		144d c006  vpr Matrix 170B4 CardBus bridge
-	0476  RL5c476 II
-		1014 0185  ThinkPad A/T/X Series
-		1028 014f  Latitude X300 laptop
-		1028 0188  Inspiron 6000 laptop
-		1043 1967  V6800V
-		1043 1987  Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines )
-		104d 80df  Vaio PCG-FX403
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		104d 814e  VAIO GRZ390Z
-		10f7 8338  Panasonic CF-Y5 laptop
-		144d c005  X10 Laptop
-		144d c00c  P30/P35 notebook
-		14ef 0220  PCD-RP-220S
-		17aa 201c  Thinkpad X60s
-	0477  RL5c477
-	0478  RL5c478
-		1014 0184  ThinkPad A30p (2653-64G)
-	0511  R5C511
-	0522  R5C522 IEEE 1394 Controller
-		1014 01cf  ThinkPad A30p (2653-64G)
-		1043 1967  V6800V
-	0551  R5C551 IEEE 1394 Controller
-		144d c006  vpr Matrix 170B4
-	0552  R5C552 IEEE 1394 Controller
-		1014 0511  ThinkPad A/T/X Series
-		1028 014f  Latitude X300 laptop
-		1028 0188  Inspiron 6000 laptop
-		144d c005  X10 Laptop
-		144d c00c  P30/P35 notebook
-		17aa 201e  Thinkpad X60s
-	0554  R5C554
-	0575  R5C575 SD Bus Host Adapter
-	0576  R5C576 SD Bus Host Adapter
-	0592  R5C592 Memory Stick Bus Host Adapter
-		103c 30b7  Presario V6133CL
-		1043 1967  V6800V
-		144d c018  X20 IV
-	0811  R5C811
-	0822  R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter
-		1014 0556  Thinkpad X40
-		1014 0598  Thinkpad Z60m
-		1028 0188  Inspiron 6000 laptop
-		1028 01a2  Inspiron 9200
-		103c 30b7  Presario V6133CL
-		1043 1967  ASUS V6800V
-		10f7 8338  Panasonic CF-Y5 laptop
-		144d c018  X20 IV
-		17aa 201d  Thinkpad X60s
-	0832  R5C832 IEEE 1394 Controller
-		103c 30b7  Presario V6133CL
-	0841  R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394
-	0843  R5C843 MMC Host Controller
-		103c 30b7  Presario V6133CL
-	0852  xD-Picture Card Controller
-		103c 30b7  Presario V6133CL
-		1043 1967  V6800V
-1181  Telmatics International
-1183  Fujikura Ltd
-1184  Forks Inc
-1185  Dataworld International Ltd
-1186  D-Link System Inc
-	0100  DC21041
-	1002  DL10050 Sundance Ethernet
-		1186 1002  DFE-550TX/FX
-		1186 1012  DFE-580TX
-	1025  AirPlus Xtreme G DWL-G650 Adapter
-	1026  AirXpert DWL-AG650 Wireless Cardbus Adapter
-	1043  AirXpert DWL-AG650 Wireless Cardbus Adapter
-	1300  RTL8139 Ethernet
-		1186 1300  DFE-538TX 10/100 Ethernet Adapter
-		1186 1301  DFE-530TX+ 10/100 Ethernet Adapter
-		1186 1303  DFE-528TX 10/100 Fast Ethernet PCI Adapter
-	1340  DFE-690TXD CardBus PC Card
-	1405  DFE-520TX Fast Ethernet PCI Adapter
-	1541  DFE-680TXD CardBus PC Card
-	1561  DRP-32TXD Cardbus PC Card
-	2027  AirPlus Xtreme G DWL-G520 Adapter
-	3203  AirPlus Xtreme G DWL-G520 Adapter
-	3300  DWL-510 2.4GHz Wireless PCI Adapter
-	3a03  AirPro DWL-A650 Wireless Cardbus Adapter(rev.B)
-	3a04  AirPro DWL-AB650 Multimode Wireless Cardbus Adapter
-	3a05  AirPro DWL-AB520 Multimode Wireless PCI Adapter
-	3a07  AirXpert DWL-AG650 Wireless Cardbus Adapter
-	3a08  AirXpert DWL-AG520 Wireless PCI Adapter
-	3a10  AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B)
-	3a11  AirXpert DWL-AG520 Wireless PCI Adapter(rev.B)
-	3a12  AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)
-	3a13  AirPlus DWL-G520 Wireless PCI Adapter(rev.B)
-	3a14  AirPremier DWL-AG530 Wireless PCI Adapter
-	3a63  AirXpert DWL-AG660 Wireless Cardbus Adapter
-	3c00  D-link DWL-G650X
-	4000  DL2000-based Gigabit Ethernet
-	4001  DGE-550SX PCI-X Gigabit Ethernet Adapter
-	4300  DGE-528T Gigabit Ethernet Adapter
-# There are at least 3 revisions of this adapter; 4800 is board revision A1 as far as I can tell, revision B1 is 4c00.
-	4800  DGE-530T Gigabit Ethernet Adapter (rev 11)
-	4b00  DGE-560T PCI Express Gigabit Ethernet Adapter
-	4b01  DGE-530T Gigabit Ethernet Adapter (rev 11)
-	4b02  DGE-560SX PCI Express Gigabit Ethernet Adapter
-	4b03  DGE-550T Gigabit Ethernet Adapter V.B1
-	4c00  Gigabit Ethernet Adapter
-		1186 4c00  DGE-530T Gigabit Ethernet Adapter
-	8400  D-Link DWL-650+ CardBus PC Card
-1187  Advanced Technology Laboratories, Inc.
-1188  Shima Seiki Manufacturing Ltd.
-1189  Matsushita Electronics Co Ltd
-118a  Hilevel Technology
-118b  Hypertec Pty Limited
-118c  Corollary, Inc
-	0014  PCIB [C-bus II to PCI bus host bridge chip]
-	1117  Intel 8-way XEON Profusion Chipset [Cache Coherency Filter]
-118d  BitFlow Inc
-	0001  Raptor-PCI framegrabber
-	0012  Model 12 Road Runner Frame Grabber
-	0014  Model 14 Road Runner Frame Grabber
-	0024  Model 24 Road Runner Frame Grabber
-	0044  Model 44 Road Runner Frame Grabber
-	0112  Model 12 Road Runner Frame Grabber
-	0114  Model 14 Road Runner Frame Grabber
-	0124  Model 24 Road Runner Frame Grabber
-	0144  Model 44 Road Runner Frame Grabber
-	0212  Model 12 Road Runner Frame Grabber
-	0214  Model 14 Road Runner Frame Grabber
-	0224  Model 24 Road Runner Frame Grabber
-	0244  Model 44 Road Runner Frame Grabber
-	0312  Model 12 Road Runner Frame Grabber
-	0314  Model 14 Road Runner Frame Grabber
-	0324  Model 24 Road Runner Frame Grabber
-	0344  Model 44 Road Runner Frame Grabber
-118e  Hermstedt GmbH
-118f  Green Logic
-1190  Tripace
-	c731  TP-910/920/940 PCI Ultra(Wide) SCSI Adapter
-1191  Artop Electronic Corp
-	0003  SCSI Cache Host Adapter
-	0004  ATP8400
-	0005  ATP850UF
-	0006  ATP860 NO-BIOS
-	0007  ATP860
-	0008  ATP865 NO-ROM
-	0009  ATP865
-	8002  AEC6710 SCSI-2 Host Adapter
-	8010  AEC6712UW SCSI
-	8020  AEC6712U SCSI
-	8030  AEC6712S SCSI
-	8040  AEC6712D SCSI
-	8050  AEC6712SUW SCSI
-	8060  AEC6712 SCSI
-	8080  AEC67160 SCSI
-	8081  AEC67160S SCSI
-	808a  AEC67162 2-ch. LVD SCSI
-1192  Densan Company Ltd
-1193  Zeitnet Inc.
-	0001  1221
-	0002  1225
-1194  Toucan Technology
-1195  Ratoc System Inc
-1196  Hytec Electronics Ltd
-1197  Gage Applied Sciences, Inc.
-	010c  CompuScope 82G 8bit 2GS/s Analog Input Card
-1198  Lambda Systems Inc
-1199  Attachmate Corporation
-119a  Mind Share, Inc.
-119b  Omega Micro Inc.
-	1221  82C092G
-119c  Information Technology Inst.
-119d  Bug, Inc. Sapporo Japan
-119e  Fujitsu Microelectronics Ltd.
-	0001  FireStream 155
-	0003  FireStream 50
-119f  Bull HN Information Systems
-11a0  Convex Computer Corporation
-11a1  Hamamatsu Photonics K.K.
-11a2  Sierra Research and Technology
-11a3  Deuretzbacher GmbH & Co. Eng. KG
-11a4  Barco Graphics NV
-11a5  Microunity Systems Eng. Inc
-11a6  Pure Data Ltd.
-11a7  Power Computing Corp.
-11a8  Systech Corp.
-11a9  InnoSys Inc.
-	4240  AMCC S933Q Intelligent Serial Card
-11aa  Actel
-# Nee Galileo Technology, Inc.
-11ab  Marvell Technology Group Ltd.
-	0146  GT-64010/64010A System Controller
-	0f53  88E6318 Link Street network controller
-	11ab  MV88SE614x SATA II PCI-E controller
-	138f  W8300 802.11 Adapter (rev 07)
-	1fa6  Marvell W8300 802.11 Adapter
-	1fa7  88W8310 and 88W8000G [Libertas] 802.11g client chipset
-	1faa  88w8335 [Libertas] 802.11b/g Wireless
-		1385 4e00  WG511v2 54 Mbps Wireless PC Card
-		1385 6b00  WG311v3 802.11g Wireless PCI Adapter
-	2a01  88W8335 [Libertas] 802.11b/g Wireless
-	2a02  88W8361 [TopDog] 802.11n Wireless
-	4101  OLPC Cafe Controller Secure Digital Controller
-	4320  88E8001 Gigabit Ethernet Controller
-		1019 0f38  Marvell 88E8001 Gigabit Ethernet Controller (ECS)
-		1019 8001  Marvell 88E8001 Gigabit Ethernet Controller (ECS)
-		1043 173c  Marvell 88E8001 Gigabit Ethernet Controller (Asus)
-		1043 811a  Marvell 88E8001 Gigabit Ethernet Controller (Asus)
-		105b 0c19  Marvell 88E8001 Gigabit Ethernet Controller (Foxconn)
-		10b8 b452  EZ Card 1000 (SMC9452TXV.2)
-		11ab 0121  Marvell RDK-8001
-		11ab 0321  Marvell RDK-8003
-		11ab 1021  Marvell RDK-8010
-		11ab 4320  Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus)
-		11ab 5021  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit)
-		11ab 9521  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit)
-		1458 e000  Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte)
-		147b 1406  Marvell 88E8001 Gigabit Ethernet Controller (Abit)
-		15d4 0047  Marvell 88E8001 Gigabit Ethernet Controller (Iwill)
-		1695 9025  Marvell 88E8001 Gigabit Ethernet Controller (Epox)
-		17f2 1c03  Marvell 88E8001 Gigabit Ethernet Controller (Albatron)
-		270f 2803  Marvell 88E8001 Gigabit Ethernet Controller (Chaintech)
-	4340  88E8021 PCI-X IPMI Gigabit Ethernet Controller
-	4341  88E8022 PCI-X IPMI Gigabit Ethernet Controller
-	4342  88E8061 PCI-E IPMI Gigabit Ethernet Controller
-	4343  88E8062 PCI-E IPMI Gigabit Ethernet Controller
-	4344  88E8021 PCI-X IPMI Gigabit Ethernet Controller
-	4345  88E8022 PCI-X IPMI Gigabit Ethernet Controller
-	4346  88E8061 PCI-E IPMI Gigabit Ethernet Controller
-	4347  88E8062 PCI-E IPMI Gigabit Ethernet Controller
-		4c53 10d0  Telum ASLP10 PrAMC Gigabit Ethernet
-	4350  88E8035 PCI-E Fast Ethernet Controller
-		1179 0001  Marvell 88E8035 Fast Ethernet Controller (Toshiba)
-		11ab 3521  Marvell RDK-8035
-		1854 000d  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 000e  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 000f  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 0011  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 0012  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 0016  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 0017  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 0018  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 0019  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 001c  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 001e  Marvell 88E8035 Fast Ethernet Controller (LGE)
-		1854 0020  Marvell 88E8035 Fast Ethernet Controller (LGE)
-	4351  88E8036 PCI-E Fast Ethernet Controller
-		107b 4009  Marvell 88E8036 Fast Ethernet Controller (Wistron)
-		10f7 8338  Marvell 88E8036 Fast Ethernet Controller (Panasonic)
-		1179 0001  Marvell 88E8036 Fast Ethernet Controller (Toshiba)
-		1179 ff00  Marvell 88E8036 Fast Ethernet Controller (Compal)
-		1179 ff10  Marvell 88E8036 Fast Ethernet Controller (Inventec)
-		11ab 3621  Marvell RDK-8036
-		13d1 ac12  Abocom EFE3K - 10/100 Ethernet Expresscard
-		161f 203d  Marvell 88E8036 Fast Ethernet Controller (Arima)
-		1854 000d  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 000e  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 000f  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 0011  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 0012  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 0016  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 0017  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 0018  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 0019  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 001c  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 001e  Marvell 88E8036 Fast Ethernet Controller (LGE)
-		1854 0020  Marvell 88E8036 Fast Ethernet Controller (LGE)
-	4352  88E8038 PCI-E Fast Ethernet Controller
-	4353  88E8039 PCI-E Fast Ethernet Controller
-	4354  88E8040 PCI-E Fast Ethernet Controller
-	4356  88EC033 Ethernet Controller
-	435a  88E8048 PCI-E Fast Ethernet Controller
-	4360  88E8052 PCI-E ASF Gigabit Ethernet Controller
-		1043 8134  Marvell 88E8052 Gigabit Ethernet Controller (Asus)
-		107b 4009  Marvell 88E8052 Gigabit Ethernet Controller (Wistron)
-		11ab 5221  Marvell RDK-8052
-		1458 e000  Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte)
-		1462 052c  Marvell 88E8052 Gigabit Ethernet Controller (MSI)
-		1849 8052  Marvell 88E8052 Gigabit Ethernet Controller (ASRock)
-		a0a0 0509  Marvell 88E8052 Gigabit Ethernet Controller (Aopen)
-	4361  88E8050 PCI-E ASF Gigabit Ethernet Controller
-		107b 3015  Marvell 88E8050 Gigabit Ethernet Controller (Gateway)
-		11ab 5021  Marvell 88E8050 Gigabit Ethernet Controller (Intel)
-		8086 3063  D925XCVLK mainboard
-		8086 3439  Marvell 88E8050 Gigabit Ethernet Controller (Intel)
-	4362  88E8053 PCI-E Gigabit Ethernet Controller
-		103c 2a0d  Marvell 88E8053 Gigabit Ethernet Controller (Asus)
-		1043 8142  Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus)
-		109f 3197  Marvell 88E8053 Gigabit Ethernet Controller (Trigem)
-		10f7 8338  Marvell 88E8053 Gigabit Ethernet Controller (Panasonic)
-		10fd a430  Marvell 88E8053 Gigabit Ethernet Controller (SOYO)
-		1179 0001  Marvell 88E8053 Gigabit Ethernet Controller (Toshiba)
-		1179 ff00  Marvell 88E8053 Gigabit Ethernet Controller (Compal)
-		1179 ff10  Marvell 88E8053 Gigabit Ethernet Controller (Inventec)
-		11ab 5321  Marvell RDK-8053
-		1297 c240  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
-		1297 c241  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
-		1297 c242  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
-		1297 c243  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
-		1297 c244  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
-		13d1 ac11  EGE5K - Giga Ethernet Expresscard
-		1458 e000  Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte)
-		1462 058c  Marvell 88E8053 Gigabit Ethernet Controller (MSI)
-		14c0 0012  Marvell 88E8053 Gigabit Ethernet Controller (Compal)
-		1558 04a0  Marvell 88E8053 Gigabit Ethernet Controller (Clevo)
-		15bd 1003  Marvell 88E8053 Gigabit Ethernet Controller (DFI)
-		161f 203c  Marvell 88E8053 Gigabit Ethernet Controller (Arima)
-		161f 203d  Marvell 88E8053 Gigabit Ethernet Controller (Arima)
-		1695 9029  Marvell 88E8053 Gigabit Ethernet Controller (Epox)
-		17f2 2c08  Marvell 88E8053 Gigabit Ethernet Controller (Albatron)
-		17ff 0585  Marvell 88E8053 Gigabit Ethernet Controller (Quanta)
-		1849 8053  Marvell 88E8053 Gigabit Ethernet Controller (ASRock)
-		1854 000b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 000c  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 0010  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 0013  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 0014  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 0015  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 001a  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 001b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 001d  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 001f  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 0021  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		1854 0022  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
-		270f 2801  Marvell 88E8053 Gigabit Ethernet Controller (Chaintech)
-		a0a0 0506  Marvell 88E8053 Gigabit Ethernet Controller (Aopen)
-	4363  88E8055 PCI-E Gigabit Ethernet Controller
-	4364  88E8056 PCI-E Gigabit Ethernet Controller
-	4365  88E8070 based Ethernet Controller
-	4366  88EC036 PCI-E Gigabit Ethernet Controller
-	4367  88EC032 Ethernet Controller
-	4368  88EC034 Ethernet Controller
-	4369  88EC042 Ethernet Controller
-	436a  Marvell Yukon 88E8058 PCI-E Gigabit Ethernet Controller
-	436b  88E8071 PCI-E Gigabit Ethernet Controller
-	4611  GT-64115 System Controller
-	4620  GT-64120/64120A/64121A System Controller
-	4801  GT-48001
-	5005  Belkin F5D5005 Gigabit Desktop Network PCI Card
-	5040  MV88SX5040 4-port SATA I PCI-X Controller
-	5041  MV88SX5041 4-port SATA I PCI-X Controller
-	5080  MV88SX5080 8-port SATA I PCI-X Controller
-	5081  MV88SX5081 8-port SATA I PCI-X Controller
-	6041  MV88SX6041 4-port SATA II PCI-X Controller
-	6042  88SX6042 PCI-X 4-Port SATA-II
-	6081  MV88SX6081 8-port SATA II PCI-X Controller
-	6101  88SE6101 single-port PATA133 interface
-	6121  88SE6121 SATA II Controller
-	6141  88SE614x SATA II PCI-E controller
-	6145  88SE6145 SATA II PCI-E controller
-	6450  64560 System Controller
-	6460  MV64360/64361/64362 System Controller
-	6480  MV64460/64461/64462 System Controller
-		1775 c200  C2K CompactPCI single board computer
-	6485  MV64460/64461/64462 System Controller, Revision B
-	7042  88SX7042 PCI-e 4-port SATA-II
-	f003  GT-64010 Primary Image Piranha Image Generator
-11ac  Canon Information Systems Research Aust.
-11ad  Lite-On Communications Inc
-	0002  LNE100TX
-		11ad 0002  LNE100TX
-		11ad 0003  LNE100TX
-		11ad f003  LNE100TX
-		11ad ffff  LNE100TX
-		1385 f004  FA310TX
-	c115  LNE100TX [Linksys EtherFast 10/100]
-		11ad c001  LNE100TX [ver 2.0]
-11ae  Aztech System Ltd
-11af  Avid Technology Inc.
-	0001  Cinema
-	ee40  Digidesign Audiomedia III
-11b0  V3 Semiconductor Inc.
-	0002  V300PSC
-	0292  V292PBC [Am29030/40 Bridge]
-	0960  V96xPBC
-	c960  V96DPC
-11b1  Apricot Computers
-11b2  Eastman Kodak
-11b3  Barr Systems Inc.
-11b4  Leitch Technology International
-11b5  Radstone Technology Plc
-11b6  United Video Corp
-11b7  Motorola
-11b8  XPoint Technologies, Inc
-	0001  Quad PeerMaster
-11b9  Pathlight Technology Inc.
-	c0ed  SSA Controller
-11ba  Videotron Corp
-11bb  Pyramid Technology
-11bc  Network Peripherals Inc
-	0001  NP-PCI
-11bd  Pinnacle Systems Inc.
-	002e  PCTV 40i
-	0040  Royal TS Function 1
-		11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Tuner 1
-	0041  RoyalTS Function 2
-		11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Tuner 2
-	0042  Royal TS Function 3
-		11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Common
-	bede  AV/DV Studio Capture Card
-11be  International Microcircuits Inc
-11bf  Astrodesign, Inc.
-11c0  Hewlett Packard
-# Nee Lucent Microelectronics
-11c1  Agere Systems
-	0440  56k WinModem
-		1033 8015  LT WinModem 56k Data+Fax+Voice+Dsvd
-		1033 8047  LT WinModem 56k Data+Fax+Voice+Dsvd
-		1033 804f  LT WinModem 56k Data+Fax+Voice+Dsvd
-		10cf 102c  LB LT Modem V.90 56k
-		10cf 104a  BIBLO LT Modem 56k
-		10cf 105f  LB2 LT Modem V.90 56k
-		1179 0001  Internal V.90 Modem
-		11c1 0440  LT WinModem 56k Data+Fax+Voice+Dsvd
-		122d 4101  MDP7800-U Modem
-		122d 4102  MDP7800SP-U Modem
-		13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd
-		13e0 0440  LT WinModem 56k Data+Fax+Voice+Dsvd
-		13e0 0441  LT WinModem 56k Data+Fax+Voice+Dsvd
-		13e0 0450  LT WinModem 56k Data+Fax+Voice+Dsvd
-		13e0 f100  LT WinModem 56k Data+Fax+Voice+Dsvd
-		13e0 f101  LT WinModem 56k Data+Fax+Voice+Dsvd
-		144d 2101  LT56PV Modem
-		149f 0440  LT WinModem 56k Data+Fax+Voice+Dsvd
-	0441  56k WinModem
-		1033 804d  LT WinModem 56k Data+Fax
-		1033 8065  LT WinModem 56k Data+Fax
-		1092 0440  Supra 56i
-		1179 0001  Internal V.90 Modem
-		11c1 0440  LT WinModem 56k Data+Fax
-		11c1 0441  LT WinModem 56k Data+Fax
-		122d 4100  MDP7800-U Modem
-		13e0 0040  LT WinModem 56k Data+Fax
-		13e0 0100  LT WinModem 56k Data+Fax
-		13e0 0410  LT WinModem 56k Data+Fax
-		13e0 0420  TelePath Internet 56k WinModem
-		13e0 0440  LT WinModem 56k Data+Fax
-		13e0 0443  LT WinModem 56k Data+Fax
-		13e0 f102  LT WinModem 56k Data+Fax
-		1416 9804  CommWave 56k Modem
-		141d 0440  LT WinModem 56k Data+Fax
-		144f 0441  Lucent 56k V.90 DF Modem
-		144f 0449  Lucent 56k V.90 DF Modem
-		144f 110d  Lucent Win Modem
-		1468 0441  Presario 56k V.90 DF Modem
-		1668 0440  Lucent Win Modem
-	0442  56k WinModem
-		11c1 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-		11c1 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-		13e0 0412  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-		13e0 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-		13fc 2471  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-		144d 2104  LT56PT Modem
-		144f 1104  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-		149f 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-		1668 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-	0443  LT WinModem
-	0444  LT WinModem
-	0445  LT WinModem
-		8086 2203  PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card)
-		8086 2204  PRO/100+ MiniPCI on Armada E500
-	0446  LT WinModem
-	0447  LT WinModem
-	0448  WinModem 56k
-		1014 0131  Lucent Win Modem
-		1033 8066  LT WinModem 56k Data+Fax+Voice+Dsvd
-		13e0 0030  56k Voice Modem
-		13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd
-# Actiontech eth+modem card as used by Dell &c.
-		1668 2400  LT WinModem 56k (MiniPCI Ethernet+Modem)
-	0449  WinModem 56k
-		0e11 b14d  56k V.90 Modem
-		13e0 0020  LT WinModem 56k Data+Fax
-		13e0 0041  TelePath Internet 56k WinModem
-		1436 0440  Lucent Win Modem
-		144f 0449  Lucent 56k V.90 DFi Modem
-		1468 0410  IBM ThinkPad T23 (2647-4MG)
-		1468 0440  Lucent Win Modem
-		1468 0449  Presario 56k V.90 DFi Modem
-	044a  F-1156IV WinModem (V90, 56KFlex)
-		10cf 1072  LB Global LT Modem
-		13e0 0012  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-		13e0 0042  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-		144f 1005  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
-	044b  LT WinModem
-	044c  LT WinModem
-	044d  LT WinModem
-	044e  LT WinModem
-	044f  V90 WildWire Modem
-	0450  LT WinModem
-		1033 80a8  Versa Note Vxi
-		144f 4005  Magnia SG20
-		1468 0450  Evo N600c
-	0451  LT WinModem
-	0452  LT WinModem
-	0453  LT WinModem
-	0454  LT WinModem
-	0455  LT WinModem
-	0456  LT WinModem
-	0457  LT WinModem
-	0458  LT WinModem
-	0459  LT WinModem
-	045a  LT WinModem
-	045c  LT WinModem
-	0461  V90 WildWire Modem
-	0462  V90 WildWire Modem
-	0480  Venus Modem (V90, 56KFlex)
-	048c  V.92 56K WinModem
-# InPorte Home Internal 56k Modem/fax/answering machine/SMS Features
-	048f  V.92 56k WinModem
-	1040  HDA softmodem
-	2600  StarPro26XX family (SP2601, SP2603, SP2612) DSP
-	5801  USB
-	5802  USS-312 USB Controller
-	5803  USS-344S USB Controller
-	5811  FW323
-		8086 524c  D865PERL mainboard
-		dead 0800  FireWire Host Bus Adapter
-	8110  T8110 H.100/H.110 TDM switch
-		12d9 000c  E1/T1 PMXc cPCI carrier card
-	ab10  WL60010 Wireless LAN MAC
-	ab11  WL60040 Multimode Wireles LAN MAC
-		11c1 ab12  WaveLAN 11abg Cardbus card (Model 1102)
-		11c1 ab13  WaveLAN 11abg MiniPCI card (Model 0512)
-		11c1 ab15  WaveLAN 11abg Cardbus card (Model 1106)
-		11c1 ab16  WaveLAN 11abg MiniPCI card (Model 0516)
-	ab20  ORiNOCO PCI Adapter
-	ab21  Agere Wireless PCI Adapter
-	ab30  Hermes2 Mini-PCI WaveLAN a/b/g
-		14cd 2012  Hermes2 Mini-PCI WaveLAN a/b/g
-	ed00  ET-131x PCI-E Ethernet Controller
-	ed01  ET-131x PCI-E Ethernet Controller
-11c2  Sand Microelectronics
-11c3  NEC Corporation
-11c4  Document Technologies, Inc
-11c5  Shiva Corporation
-11c6  Dainippon Screen Mfg. Co. Ltd
-11c7  D.C.M. Data Systems
-11c8  Dolphin Interconnect Solutions AS
-	0658  PSB32 SCI-Adapter D31x
-	d665  PSB64 SCI-Adapter D32x
-	d667  PSB66 SCI-Adapter D33x
-11c9  Magma
-	0010  16-line serial port w/- DMA
-	0011  4-line serial port w/- DMA
-11ca  LSI Systems, Inc
-11cb  Specialix Research Ltd.
-	2000  PCI_9050
-		11cb 0200  SX
-		11cb b008  I/O8+
-	4000  SUPI_1
-	8000  T225
-11cc  Michels & Kleberhoff Computer GmbH
-11cd  HAL Computer Systems, Inc.
-11ce  Netaccess
-11cf  Pioneer Electronic Corporation
-11d0  Lockheed Martin Federal Systems-Manassas
-11d1  Auravision
-	01f7  VxP524
-11d2  Intercom Inc.
-11d3  Trancell Systems Inc
-11d4  Analog Devices
-	0078  AD1986HD sound chip
-	1535  Blackfin BF535 processor
-	1805  SM56 PCI modem
-	1889  AD1889 sound chip
-	1981  AD1981HD sound chip
-	1983  AD1983HD sound chip
-	1986  AD1986A sound chip
-		11d4 1986  Lenovo N100 B9G
-	198b  AD1988B Sound Chip
-	5340  AD1881 sound chip
-11d5  Ikon Corporation
-	0115  10115
-	0117  10117
-11d6  Tekelec Telecom
-11d7  Trenton Technology, Inc.
-11d8  Image Technologies Development
-11d9  TEC Corporation
-11da  Novell
-11db  Sega Enterprises Ltd
-11dc  Questra Corporation
-11dd  Crosfield Electronics Limited
-11de  Zoran Corporation
-	6057  ZR36057PQC Video cutting chipset
-		1031 7efe  DC10 Plus
-		1031 fc00  MiroVIDEO DC50, Motion JPEG Capture/CODEC Board
-		12f8 8a02  Tekram Video Kit
-		13ca 4231  JPEG/TV Card
-	6120  ZR36120
-		1328 f001  Cinemaster C DVD Decoder
-		13c2 0000  MediaFocus Satellite TV Card
-		1de1 9fff  Video Kit C210
-11df  New Wave PDG
-11e0  Cray Communications A/S
-11e1  GEC Plessey Semi Inc.
-11e2  Samsung Information Systems America
-11e3  Quicklogic Corporation
-	0001  COM-ON-AIR Dosch&Amand DECT
-	5030  PC Watchdog
-11e4  Second Wave Inc
-11e5  IIX Consulting
-11e6  Mitsui-Zosen System Research
-11e7  Toshiba America, Elec. Company
-11e8  Digital Processing Systems Inc.
-11e9  Highwater Designs Ltd.
-11ea  Elsag Bailey
-11eb  Formation Inc.
-11ec  Coreco Inc
-11ed  Mediamatics
-11ee  Dome Imaging Systems Inc
-11ef  Nicolet Technologies B.V.
-11f0  Compu-Shack
-	4231  FDDI
-	4232  FASTline UTP Quattro
-	4233  FASTline FO
-	4234  FASTline UTP
-	4235  FASTline-II UTP
-	4236  FASTline-II FO
-	4731  GIGAline
-11f1  Symbios Logic Inc
-11f2  Picture Tel Japan K.K.
-11f3  Keithley Metrabyte
-11f4  Kinetic Systems Corporation
-	2915  CAMAC controller
-11f5  Computing Devices International
-11f6  Compex
-	0112  ENet100VG4
-	0113  FreedomLine 100
-	1401  ReadyLink 2000
-	2011  RL100-ATX 10/100
-		11f6 2011  RL100-ATX
-	2201  ReadyLink 100TX (Winbond W89C840)
-		11f6 2011  ReadyLink 100TX
-	9881  RL100TX Fast Ethernet
-11f7  Scientific Atlanta
-11f8  PMC-Sierra Inc.
-	7364  PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr]
-	7375  PM7375 [LASAR-155 ATM SAR]
-	7384  PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr]
-	8000  PM8000  [SPC - SAS Protocol Controller]
-11f9  I-Cube Inc
-11fa  Kasan Electronics Company, Ltd.
-11fb  Datel Inc
-11fc  Silicon Magic
-11fd  High Street Consultants
-11fe  Comtrol Corporation
-	0001  RocketPort 32 port w/external I/F
-	0002  RocketPort 8 port w/external I/F
-	0003  RocketPort 16 port w/external I/F
-	0004  RocketPort 4 port w/quad cable
-	0005  RocketPort 8 port w/octa cable
-	0006  RocketPort 8 port w/RJ11 connectors
-	0007  RocketPort 4 port w/RJ11 connectors
-	0008  RocketPort 8 port w/ DB78 SNI (Siemens) connector
-	0009  RocketPort 16 port w/ DB78 SNI (Siemens) connector
-	000a  RocketPort Plus 4 port
-	000b  RocketPort Plus 8 port
-	000c  RocketModem 6 port
-	000d  RocketModem 4-port
-	000e  RocketPort Plus 2 port RS232
-	000f  RocketPort Plus 2 port RS422
-	0040  RocketPort Infinity Octa, 8port, RJ45
-	0041  RocketPort Infinity 32port, External Interface
-	0042  RocketPort Infinity 8port, External Interface
-	0043  RocketPort Infinity 16port, External Interface
-	0044  RocketPort Infinity Quad, 4port, DB
-	0045  RocketPort Infinity Octa, 8port, DB
-	0047  RocketPort Infinity 4port, RJ45
-	004f  RocketPort Infinity 2port, SMPTE
-	0052  RocketPort Infinity Octa, 8port, SMPTE
-	0801  RocketPort UPCI 32 port w/external I/F
-	0802  RocketPort UPCI 8 port w/external I/F
-	0803  RocketPort UPCI 16 port w/external I/F
-	0805  RocketPort UPCI 8 port w/octa cable
-	080c  RocketModem III 8 port
-	080d  RocketModem III 4 port
-	0812  RocketPort UPCI Plus 8 port RS422
-	0903  RocketPort Compact PCI 16 port w/external I/F
-	8015  RocketPort 4-port UART 16954
-11ff  Scion Corporation
-	0003  AG-5
-1200  CSS Corporation
-1201  Vista Controls Corp
-1202  Network General Corp.
-	4300  Gigabit Ethernet Adapter
-		1202 9841  SK-9841 LX
-		1202 9842  SK-9841 LX dual link
-		1202 9843  SK-9843 SX
-		1202 9844  SK-9843 SX dual link
-1203  Bayer Corporation, Agfa Division
-1204  Lattice Semiconductor Corporation
-1205  Array Corporation
-1206  Amdahl Corporation
-1208  Parsytec GmbH
-	4853  HS-Link Device
-1209  SCI Systems Inc
-120a  Synaptel
-120b  Adaptive Solutions
-120c  Technical Corp.
-120d  Compression Labs, Inc.
-120e  Cyclades Corporation
-	0100  Cyclom-Y below first megabyte
-	0101  Cyclom-Y above first megabyte
-	0102  Cyclom-4Y below first megabyte
-	0103  Cyclom-4Y above first megabyte
-	0104  Cyclom-8Y below first megabyte
-	0105  Cyclom-8Y above first megabyte
-	0200  Cyclades-Z below first megabyte
-	0201  Cyclades-Z above first megabyte
-	0300  PC300/RSV or /X21 (2 ports)
-	0301  PC300/RSV or /X21 (1 port)
-	0310  PC300/TE (2 ports)
-	0311  PC300/TE (1 port)
-	0320  PC300/TE-M (2 ports)
-	0321  PC300/TE-M (1 port)
-	0400  PC400
-120f  Essential Communications
-	0001  Roadrunner serial HIPPI
-1210  Hyperparallel Technologies
-1211  Braintech Inc
-1212  Kingston Technology Corp.
-1213  Applied Intelligent Systems, Inc.
-1214  Performance Technologies, Inc.
-1215  Interware Co., Ltd
-1216  Purup Prepress A/S
-1217  O2 Micro, Inc.
-	00f7  Firewire (IEEE 1394)
-	6729  OZ6729
-	673a  OZ6730
-	6832  OZ6832/6833 CardBus Controller
-	6836  OZ6836/6860 CardBus Controller
-	6872  OZ6812 CardBus Controller
-	6925  OZ6922 CardBus Controller
-	6933  OZ6933/711E1 CardBus/SmartCardBus Controller
-		1025 1016  Travelmate 612 TX
-	6972  OZ601/6912/711E0 CardBus/SmartCardBus Controller
-		1014 020c  ThinkPad R30
-		1179 0001  Magnia Z310
-	7110  OZ711Mx 4-in-1 MemoryCardBus Accelerator
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		1734 106c  Amilo A1645
-	7112  OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller
-	7113  OZ711EC1 SmartCardBus Controller
-	7114  OZ711M1/MC1 4-in-1 MemoryCardBus Controller
-	7120  Integrated MMC/SD Controller
-	7130  Integrated MS/xD Controller
-	7134  OZ711MP1/MS1 MemoryCardBus Controller
-	7135  Cardbus bridge
-	7136  OZ711SP1 Memory CardBus Controller
-	71e2  OZ711E2 SmartCardBus Controller
-	7212  OZ711M2 4-in-1 MemoryCardBus Controller
-	7213  OZ6933E CardBus Controller
-	7223  OZ711M3/MC3 4-in-1 MemoryCardBus Controller
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		10cf 11c4  Lifebook P5020D Laptop
-	7233  OZ711MP3/MS3 4-in-1 MemoryCardBus Controller
-1218  Hybricon Corp.
-1219  First Virtual Corporation
-121a  3Dfx Interactive, Inc.
-	0001  Voodoo
-	0002  Voodoo 2
-	0003  Voodoo Banshee
-		1092 0003  Monster Fusion
-		1092 4000  Monster Fusion
-		1092 4002  Monster Fusion
-		1092 4801  Monster Fusion AGP
-		1092 4803  Monster Fusion AGP
-		1092 8030  Monster Fusion
-		1092 8035  Monster Fusion AGP
-		10b0 0001  Dragon 4000
-		1102 1018  3D Blaster Banshee VE
-		121a 0001  Voodoo Banshee AGP
-		121a 0003  Voodoo Banshee AGP SGRAM
-		121a 0004  Voodoo Banshee
-		139c 0016  Raven
-		139c 0017  Raven
-		14af 0002  Maxi Gamer Phoenix
-	0004  Voodoo Banshee [Velocity 100]
-	0005  Voodoo 3
-		121a 0004  Voodoo3 AGP
-		121a 0030  Voodoo3 AGP
-		121a 0031  Voodoo3 AGP
-		121a 0034  Voodoo3 AGP
-		121a 0036  Voodoo3 2000 PCI
-		121a 0037  Voodoo3 AGP
-		121a 0038  Voodoo3 AGP
-		121a 003a  Voodoo3 AGP
-		121a 0044  Voodoo3
-		121a 004b  Velocity 100
-		121a 004c  Velocity 200
-		121a 004d  Voodoo3 AGP
-		121a 004e  Voodoo3 AGP
-		121a 0051  Voodoo3 AGP
-		121a 0052  Voodoo3 AGP
-		121a 0057  Voodoo3 3000 PCI
-		121a 0060  Voodoo3 3500 TV (NTSC)
-		121a 0061  Voodoo3 3500 TV (PAL)
-		121a 0062  Voodoo3 3500 TV (SECAM)
-	0009  Voodoo 4 / Voodoo 5
-		121a 0003  Voodoo5 PCI 5500
-		121a 0009  Voodoo5 AGP 5500/6000
-	0057  Voodoo 3/3000 [Avenger]
-121b  Advanced Telecommunications Modules
-121c  Nippon Texaco., Ltd
-121d  Lippert Automationstechnik GmbH
-121e  CSPI
-	0201  Myrinet 2000 Scalable Cluster Interconnect
-121f  Arcus Technology, Inc.
-1220  Ariel Corporation
-	1220  AMCC 5933 TMS320C80 DSP/Imaging board
-1221  Contec Co., Ltd
-	9172  PO-64L(PCI)H [Isolated Digital Output Board for PCI]
-	91a2  PO-32L(PCI)H [Isolated Digital Output Board for PCI]
-	91c3  DA16-16(LPCI)L [Un-insulated highly precise analog output board for Low Profile PCI]
-	b152  DIO-96D2-LPCI
-	c103  ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI]
-1222  Ancor Communications, Inc.
-1223  Artesyn Communication Products
-	0003  PM/Link
-	0004  PM/T1
-	0005  PM/E1
-	0008  PM/SLS
-	0009  BajaSpan Resource Target
-	000a  BajaSpan Section 0
-	000b  BajaSpan Section 1
-	000c  BajaSpan Section 2
-	000d  BajaSpan Section 3
-	000e  PM/PPC
-1224  Interactive Images
-1225  Power I/O, Inc.
-1227  Tech-Source
-	0006  Raptor GFX 8P
-	0023  Raptor GFX [1100T]
-1228  Norsk Elektro Optikk A/S
-1229  Data Kinesis Inc.
-122a  Integrated Telecom
-122b  LG Industrial Systems Co., Ltd
-122c  Sican GmbH
-122d  Aztech System Ltd
-	1206  368DSP
-	1400  Trident PCI288-Q3DII (NX)
-	50dc  3328 Audio
-		122d 0001  3328 Audio
-	80da  3328 Audio
-		122d 0001  3328 Audio
-122e  Xyratex
-122f  Andrew Corporation
-1230  Fishcamp Engineering
-1231  Woodward McCoach, Inc.
-1232  GPT Limited
-1233  Bus-Tech, Inc.
-# Also Bochs uses this for virtual VGA...
-1234  Technical Corp.
-1235  Risq Modular Systems, Inc.
-1236  Sigma Designs Corporation
-	0000  RealMagic64/GX
-	6401  REALmagic 64/GX (SD 6425)
-1237  Alta Technology Corporation
-1238  Adtran
-1239  3DO Company
-123a  Visicom Laboratories, Inc.
-123b  Seeq Technology, Inc.
-123c  Century Systems, Inc.
-123d  Engineering Design Team, Inc.
-	0000  EasyConnect 8/32
-	0002  EasyConnect 8/64
-	0003  EasyIO
-123e  Simutech, Inc.
-123f  C-Cube Microsystems
-	00e4  MPEG
-	8120  E4?
-		11bd 0006  DV500 E4
-		11bd 000a  DV500 E4
-		11bd 000f  DV500 E4
-		1809 0016  Emuzed MAUI-III PCI PVR FM TV
-	8888  Cinemaster C 3.0 DVD Decoder
-		1002 0001  Cinemaster C 3.0 DVD Decoder
-		1002 0002  Cinemaster C 3.0 DVD Decoder
-		1328 0001  Cinemaster C 3.0 DVD Decoder
-1240  Marathon Technologies Corp.
-1241  DSC Communications
-# Formerly Jaycor Networks, Inc.
-1242  JNI Corporation
-	1560  JNIC-1560 PCI-X Fibre Channel Controller
-		1242 6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter
-		1242 656a  FCX-6562 PCI-X Fibre Channel Adapter
-	4643  FCI-1063 Fibre Channel Adapter
-	6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter
-	656a  FCX-6562 PCI-X Fibre Channel Adapter
-1243  Delphax
-1244  AVM Audiovisuelles MKTG & Computer System GmbH
-	0700  B1 ISDN
-	0800  C4 ISDN
-	0a00  A1 ISDN [Fritz]
-		1244 0a00  FRITZ!Card ISDN Controller
-	0e00  Fritz!PCI v2.0 ISDN
-	1100  C2 ISDN
-	1200  T1 ISDN
-	2700  Fritz!Card DSL SL
-	2900  Fritz!Card DSL v2.0
-1245  A.P.D., S.A.
-1246  Dipix Technologies, Inc.
-1247  Xylon Research, Inc.
-1248  Central Data Corporation
-1249  Samsung Electronics Co., Ltd.
-124a  AEG Electrocom GmbH
-124b  SBS/Greenspring Modular I/O
-	0040  PCI-40A or cPCI-200 Quad IndustryPack carrier
-		124b 9080  PCI9080 Bridge
-124c  Solitron Technologies, Inc.
-124d  Stallion Technologies, Inc.
-	0000  EasyConnection 8/32
-	0002  EasyConnection 8/64
-	0003  EasyIO
-	0004  EasyConnection/RA
-124e  Cylink
-124f  Infortrend Technology, Inc.
-	0041  IFT-2000 Series RAID Controller
-1250  Hitachi Microcomputer System Ltd
-1251  VLSI Solutions Oy
-1253  Guzik Technical Enterprises
-1254  Linear Systems Ltd.
-1255  Optibase Ltd
-	1110  MPEG Forge
-	1210  MPEG Fusion
-	2110  VideoPlex
-	2120  VideoPlex CC
-	2130  VideoQuest
-1256  Perceptive Solutions, Inc.
-	4201  PCI-2220I
-	4401  PCI-2240I
-	5201  PCI-2000
-1257  Vertex Networks, Inc.
-1258  Gilbarco, Inc.
-1259  Allied Telesyn International
-	2560  AT-2560 Fast Ethernet Adapter (i82557B)
-	a117  RTL81xx Fast Ethernet
-	a11e  RTL81xx Fast Ethernet
-	a120  21x4x DEC-Tulip compatible 10/100 Ethernet
-125a  ABB Power Systems
-125b  Asix Electronics Corporation
-	1400  ALFA GFC2204 Fast Ethernet
-		1186 1100  AX8814X Based PCI Fast Ethernet Adapter
-125c  Aurora Technologies, Inc.
-	0101  Saturn 4520P
-	0640  Aries 16000P
-125d  ESS Technology
-	0000  ES336H Fax Modem (Early Model)
-	1948  ES1948 Maestro-1
-	1968  ES1968 Maestro 2
-		1028 0085  ES1968 Maestro-2 PCI
-		1033 8051  ES1968 Maestro-2 Audiodrive
-	1969  ES1969 Solo-1 Audiodrive
-		1014 0166  ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard
-		125d 8888  Solo-1 Audio Adapter
-		153b 111b  Terratec 128i PCI
-	1978  ES1978 Maestro 2E
-		0e11 b112  Armada M700/E500
-		1033 803c  ES1978 Maestro-2E Audiodrive
-		1033 8058  ES1978 Maestro-2E Audiodrive
-		1092 4000  Monster Sound MX400
-		1179 0001  ES1978 Maestro-2E Audiodrive
-	1988  ES1988 Allegro-1
-		0e11 0098  Evo N600c
-		1092 4100  Sonic Impact S100
-		125d 1988  ESS Allegro-1 Audiodrive
-	1989  ESS Modem
-		125d 1989  ESS Modem
-	1998  ES1983S Maestro-3i PCI Audio Accelerator
-		1028 00b1  Latitude C600
-		1028 00e6  ES1983S Maestro-3i (Dell Inspiron 8100)
-	1999  ES1983S Maestro-3i PCI Modem Accelerator
-	199a  ES1983S Maestro-3i PCI Audio Accelerator
-	199b  ES1983S Maestro-3i PCI Modem Accelerator
-	2808  ES336H Fax Modem (Later Model)
-	2838  ES2838/2839 SuperLink Modem
-	2898  ES2898 Modem
-		125d 0424  ES56-PI Data Fax Modem
-		125d 0425  ES56T-PI Data Fax Modem
-		125d 0426  ES56V-PI Data Fax Modem
-		125d 0427  VW-PI Data Fax Modem
-		125d 0428  ES56ST-PI Data Fax Modem
-		125d 0429  ES56SV-PI Data Fax Modem
-		147a c001  ES56-PI Data Fax Modem
-		148d 1030  HCF WV-PI56 [ESS ES56-PI Data Fax Modem]
-		14fe 0428  ES56-PI Data Fax Modem
-		14fe 0429  ES56-PI Data Fax Modem
-125e  Specialvideo Engineering SRL
-125f  Concurrent Technologies, Inc.
-1260  Intersil Corporation
-	3872  Prism 2.5 Wavelan chipset
-		1468 0202  LAN-Express IEEE 802.11b Wireless LAN
-	3873  Prism 2.5 Wavelan chipset
-		1186 3501  DWL-520 Wireless PCI Adapter
-		1186 3700  DWL-520 Wireless PCI Adapter, Rev E1
-		1385 4105  MA311 802.11b wireless adapter
-		1668 0414  HWP01170-01 802.11b PCI Wireless Adapter
-		16a5 1601  AIR.mate PC-400 PCI Wireless LAN Adapter
-		1737 3874  WMP11 Wireless 802.11b PCI Adapter
-		8086 2510  M3AWEB Wireless 802.11b MiniPCI Adapter
-		8086 2513  Wireless 802.11b MiniPCI Adapter
-	3886  ISL3886 [Prism Javelin/Prism Xbow]
-		17cf 0037  XG-901 and clones Wireless Adapter
-	3890  ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow]
-		10b8 2802  SMC2802W Wireless PCI Adapter
-		10b8 2835  SMC2835W Wireless Cardbus Adapter
-		10b8 a835  SMC2835W V2 Wireless Cardbus Adapter
-		1113 4203  WN4201B
-		1113 8201  T-Com T-Sinus 154pcicard Wireless PCI Adapter
-		1113 b301  T-Sinus 154card Cardbus
-		1113 ee03  SMC2802W V2 Wireless PCI Adapter [ISL3886]
-		1113 ee08  SMC2835W V3 EU Wireless Cardbus Adapter
-		1186 3202  DWL-G650 A1 Wireless Adapter
-		1259 c104  CG-WLCB54GT Wireless Adapter
-		1260 0000  WG511 Wireless Adapter
-		1385 4800  WG511 Wireless Adapter
-		16a5 1605  ALLNET ALL0271 Wireless PCI Adapter
-		17cf 0014  XG-600 and clones Wireless Adapter
-		17cf 0020  XG-900 and clones Wireless Adapter
-	8130  HMP8130 NTSC/PAL Video Decoder
-	8131  HMP8131 NTSC/PAL Video Decoder
-# This is probably more likely a HW fault, but I am keeping it for now --mj
-	ffff  ISL3886IK
-		1260 0000  Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter
-1261  Matsushita-Kotobuki Electronics Industries, Ltd.
-1262  ES Computer Company, Ltd.
-1263  Sonic Solutions
-1264  Aval Nagasaki Corporation
-1265  Casio Computer Co., Ltd.
-1266  Microdyne Corporation
-	0001  NE10/100 Adapter (i82557B)
-	1910  NE2000Plus (RT8029) Ethernet Adapter
-		1266 1910  NE2000Plus Ethernet Adapter
-1267  S. A. Telecommunications
-	5352  PCR2101
-	5a4b  Telsat Turbo
-1268  Tektronix
-1269  Thomson-CSF/TTM
-126a  Lexmark International, Inc.
-126b  Adax, Inc.
-126c  Northern Telecom
-	1211  10/100BaseTX [RTL81xx]
-	126c  802.11b Wireless Ethernet Adapter
-126d  Splash Technology, Inc.
-126e  Sumitomo Metal Industries, Ltd.
-126f  Silicon Motion, Inc.
-	0501  SM501 VoyagerGX Rev. AA
-	0510  SM501 VoyagerGX Rev. B
-	0710  SM710 LynxEM
-	0712  SM712 LynxEM+
-	0720  SM720 Lynx3DM
-	0730  SM731 Cougar3DR
-	0810  SM810 LynxE
-	0811  SM811 LynxE
-	0820  SM820 Lynx3D
-	0910  SM910
-1270  Olympus Optical Co., Ltd.
-1271  GW Instruments
-1272  Telematics International
-1273  Hughes Network Systems
-	0002  DirecPC
-1274  Ensoniq
-	1171  ES1373 [AudioPCI] (also Creative Labs CT5803)
-	1371  ES1371 [AudioPCI-97]
-		0e11 0024  AudioPCI on Motherboard Compaq Deskpro
-		0e11 b1a7  ES1371, ES1373 AudioPCI
-		1033 80ac  ES1371, ES1373 AudioPCI
-		1042 1854  Tazer
-		107b 8054  Tabor2
-		1274 1371  Creative Sound Blaster AudioPCI64V, AudioPCI128
-		1274 8001  CT4751 board
-		1462 6470  ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A
-		1462 6560  ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10
-		1462 6630  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A
-		1462 6631  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A
-		1462 6632  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A
-		1462 6633  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A
-		1462 6820  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00
-		1462 6822  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A
-		1462 6830  ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00
-		1462 6880  ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00
-		1462 6900  ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00
-		1462 6910  ES1371, ES1373 AudioPCI On Motherboard MS-6191
-		1462 6930  ES1371, ES1373 AudioPCI On Motherboard MS-6193
-		1462 6990  ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A
-		1462 6991  ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A
-		14a4 2077  ES1371, ES1373 AudioPCI On Motherboard KR639
-		14a4 2105  ES1371, ES1373 AudioPCI On Motherboard MR800
-		14a4 2107  ES1371, ES1373 AudioPCI On Motherboard MR801
-		14a4 2172  ES1371, ES1373 AudioPCI On Motherboard DR739
-		1509 9902  ES1371, ES1373 AudioPCI On Motherboard KW11
-		1509 9903  ES1371, ES1373 AudioPCI On Motherboard KW31
-		1509 9904  ES1371, ES1373 AudioPCI On Motherboard KA11
-		1509 9905  ES1371, ES1373 AudioPCI On Motherboard KC13
-		152d 8801  ES1371, ES1373 AudioPCI On Motherboard CP810E
-		152d 8802  ES1371, ES1373 AudioPCI On Motherboard CP810
-		152d 8803  ES1371, ES1373 AudioPCI On Motherboard P3810E
-		152d 8804  ES1371, ES1373 AudioPCI On Motherboard P3810-S
-		152d 8805  ES1371, ES1373 AudioPCI On Motherboard P3820-S
-		270f 2001  ES1371, ES1373 AudioPCI On Motherboard 6CTR
-		270f 2200  ES1371, ES1373 AudioPCI On Motherboard 6WTX
-		270f 3000  ES1371, ES1373 AudioPCI On Motherboard 6WSV
-		270f 3100  ES1371, ES1373 AudioPCI On Motherboard 6WIV2
-		270f 3102  ES1371, ES1373 AudioPCI On Motherboard 6WIV
-		270f 7060  ES1371, ES1373 AudioPCI On Motherboard 6ASA2
-		8086 4249  ES1371, ES1373 AudioPCI On Motherboard BI440ZX
-		8086 424c  ES1371, ES1373 AudioPCI On Motherboard BL440ZX
-		8086 425a  ES1371, ES1373 AudioPCI On Motherboard BZ440ZX
-		8086 4341  ES1371, ES1373 AudioPCI On Motherboard Cayman
-		8086 4343  ES1371, ES1373 AudioPCI On Motherboard Cape Cod
-		8086 4541  D815EEA Motherboard
-		8086 4649  ES1371, ES1373 AudioPCI On Motherboard Fire Island
-		8086 464a  ES1371, ES1373 AudioPCI On Motherboard FJ440ZX
-		8086 4d4f  ES1371, ES1373 AudioPCI On Motherboard Montreal
-		8086 4f43  ES1371, ES1373 AudioPCI On Motherboard OC440LX
-		8086 5243  ES1371, ES1373 AudioPCI On Motherboard RC440BX
-		8086 5352  ES1371, ES1373 AudioPCI On Motherboard SunRiver
-		8086 5643  ES1371, ES1373 AudioPCI On Motherboard Vancouver
-		8086 5753  ES1371, ES1373 AudioPCI On Motherboard WS440BX
-	5000  ES1370 [AudioPCI]
-	5880  5880 AudioPCI
-		1274 2000  Creative Sound Blaster AudioPCI128
-		1274 2003  Creative SoundBlaster AudioPCI 128
-		1274 5880  Creative Sound Blaster AudioPCI128
-		1274 8001  Sound Blaster 16PCI 4.1ch
-		1458 a000  5880 AudioPCI On Motherboard 6OXET
-		1462 6880  5880 AudioPCI On Motherboard MS-6188 1.00
-		270f 2001  5880 AudioPCI On Motherboard 6CTR
-		270f 2200  5880 AudioPCI On Motherboard 6WTX
-		270f 7040  5880 AudioPCI On Motherboard 6ATA4
-1275  Network Appliance Corporation
-1276  Switched Network Technologies, Inc.
-1277  Comstream
-1278  Transtech Parallel Systems Ltd.
-	0701  TPE3/TM3 PowerPC Node
-	0710  TPE5 PowerPC PCI board
-	1101  TS-C43 card with 4 ADSP-TS101 processors
-1279  Transmeta Corporation
-	0060  TM8000 Northbridge
-	0061  TM8000 AGP bridge
-	0295  Northbridge
-	0395  LongRun Northbridge
-	0396  SDRAM controller
-	0397  BIOS scratchpad
-127a  Rockwell International
-	1002  HCF 56k Data/Fax Modem
-		1092 094c  SupraExpress 56i PRO [Diamond SUP2380]
-		122d 4002  HPG / MDP3858-U
-		122d 4005  MDP3858-E
-		122d 4007  MDP3858-A/-NZ
-		122d 4012  MDP3858-SA
-		122d 4017  MDP3858-W
-		122d 4018  MDP3858-W
-		127a 1002  Rockwell 56K D/F HCF Modem
-	1003  HCF 56k Data/Fax Modem
-		0e11 b0bc  229-DF Zephyr
-		0e11 b114  229-DF Cheetah
-		1033 802b  229-DF
-		13df 1003  PCI56RX Modem
-		13e0 0117  IBM
-		13e0 0147  IBM F-1156IV+/R3 Spain V.90 Modem
-		13e0 0197  IBM
-		13e0 01c7  IBM F-1156IV+/R3 WW V.90 Modem
-		13e0 01f7  IBM
-		1436 1003  IBM
-		1436 1103  IBM 5614PM3G V.90 Modem
-		1436 1602  Compaq 229-DF Ducati
-	1004  HCF 56k Data/Fax/Voice Modem
-		1048 1500  MicroLink 56k Modem
-		10cf 1059  Fujitsu 229-DFRT
-	1005  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
-		1005 127a  AOpen FM56-P
-		1033 8029  229-DFSV
-		1033 8054  Modem
-		10cf 103c  Fujitsu
-		10cf 1055  Fujitsu 229-DFSV
-		10cf 1056  Fujitsu 229-DFSV
-		122d 4003  MDP3858SP-U
-		122d 4006  Packard Bell MDP3858V-E
-		122d 4008  MDP3858SP-A/SP-NZ
-		122d 4009  MDP3858SP-E
-		122d 4010  MDP3858V-U
-		122d 4011  MDP3858SP-SA
-		122d 4013  MDP3858V-A/V-NZ
-		122d 4015  MDP3858SP-W
-		122d 4016  MDP3858V-W
-		122d 4019  MDP3858V-SA
-		13df 1005  PCI56RVP Modem
-		13e0 0187  IBM
-		13e0 01a7  IBM
-		13e0 01b7  IBM DF-1156IV+/R3 Spain V.90 Modem
-		13e0 01d7  IBM DF-1156IV+/R3 WW V.90 Modem
-		1436 1005  IBM
-		1436 1105  IBM
-		1437 1105  IBM 5614PS3G V.90 Modem
-	1022  HCF 56k Modem
-		1436 1303  M3-5614PM3G V.90 Modem
-	1023  HCF 56k Data/Fax Modem
-		122d 4020  Packard Bell MDP3858-WE
-		122d 4023  MDP3858-UE
-		13e0 0247  IBM F-1156IV+/R6 Spain V.90 Modem
-		13e0 0297  IBM
-		13e0 02c7  IBM F-1156IV+/R6 WW V.90 Modem
-		1436 1203  IBM
-		1436 1303  IBM
-	1024  HCF 56k Data/Fax/Voice Modem
-	1025  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
-		10cf 106a  Fujitsu 235-DFSV
-		122d 4021  Packard Bell MDP3858V-WE
-		122d 4022  MDP3858SP-WE
-		122d 4024  MDP3858V-UE
-		122d 4025  MDP3858SP-UE
-	1026  HCF 56k PCI Speakerphone Modem
-	1032  HCF 56k Modem
-	1033  HCF 56k Modem
-	1034  HCF 56k Modem
-	1035  HCF 56k PCI Speakerphone Modem
-	1036  HCF 56k Modem
-	1085  HCF 56k Volcano PCI Modem
-	2005  HCF 56k Data/Fax Modem
-		104d 8044  229-DFSV
-		104d 8045  229-DFSV
-		104d 8055  PBE/Aztech 235W-DFSV
-		104d 8056  235-DFSV
-		104d 805a  Modem
-		104d 805f  Modem
-		104d 8074  Modem
-	2013  HSF 56k Data/Fax Modem
-		1179 0001  Modem
-		1179 ff00  Modem
-	2014  HSF 56k Data/Fax/Voice Modem
-		10cf 1057  Fujitsu Citicorp III
-		122d 4050  MSP3880-U
-		122d 4055  MSP3880-W
-	2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
-		10cf 1063  Fujitsu
-		10cf 1064  Fujitsu
-		1468 2015  Fujitsu
-	2016  HSF 56k Data/Fax/Voice/Spkp Modem
-		122d 4051  MSP3880V-W
-		122d 4052  MSP3880SP-W
-		122d 4054  MSP3880V-U
-		122d 4056  MSP3880SP-U
-		122d 4057  MSP3880SP-A
-	4311  Riptide HSF 56k PCI Modem
-		127a 4311  Ring Modular? Riptide HSF RT HP Dom
-		13e0 0210  HP-GVC
-	4320  Riptide PCI Audio Controller
-		1235 4320  Riptide PCI Audio Controller
-	4321  Riptide HCF 56k PCI Modem
-		1235 4321  Hewlett Packard DF
-		1235 4324  Hewlett Packard DF
-		13e0 0210  Hewlett Packard DF
-		144d 2321  Riptide
-	4322  Riptide PCI Game Controller
-		1235 4322  Riptide PCI Game Controller
-	8234  RapidFire 616X ATM155 Adapter
-		108d 0022  RapidFire 616X ATM155 Adapter
-		108d 0027  RapidFire 616X ATM155 Adapter
-127b  Pixera Corporation
-127c  Crosspoint Solutions, Inc.
-127d  Vela Research
-127e  Winnov, L.P.
-127f  Fujifilm
-1280  Photoscript Group Ltd.
-1281  Yokogawa Electric Corporation
-1282  Davicom Semiconductor, Inc.
-	9009  Ethernet 100/10 MBit
-	9100  21x4x DEC-Tulip compatible 10/100 Ethernet
-	9102  21x4x DEC-Tulip compatible 10/100 Ethernet
-	9132  Ethernet 100/10 MBit
-1283  Integrated Technology Express, Inc.
-	673a  IT8330G
-	8152  IT8152F/G Advanced RISC-to-PCI Companion Chip
-	8211  ITE 8211F Single Channel UDMA 133
-		1043 8138  P5GD1-VW Mainboard
-# PCI version seems to be IT8212, embedded seems to be ITE8212
-	8212  IT/ITE8212 Dual channel ATA RAID controller
-		1283 0001  IT/ITE8212 Dual channel ATA RAID controller
-	8330  IT8330G
-	8872  IT8874F PCI Dual Serial Port Controller
-	8888  IT8888F PCI to ISA Bridge with SMB
-	8889  IT8889F PCI to ISA Bridge
-	e886  IT8330G
-1284  Sahara Networks, Inc.
-1285  Platform Technologies, Inc.
-	0100  AGOGO sound chip (aka ESS Maestro 1)
-1286  Mazet GmbH
-1287  M-Pact, Inc.
-	001e  LS220D DVD Decoder
-	001f  LS220C DVD Decoder
-1288  Timestep Corporation
-1289  AVC Technology, Inc.
-128a  Asante Technologies, Inc.
-128b  Transwitch Corporation
-128c  Retix Corporation
-128d  G2 Networks, Inc.
-	0021  ATM155 Adapter
-128e  Hoontech Corporation/Samho Multi Tech Ltd.
-	0008  ST128 WSS/SB
-	0009  ST128 SAM9407
-	000a  ST128 Game Port
-	000b  ST128 MPU Port
-	000c  ST128 Ctrl Port
-128f  Tateno Dennou, Inc.
-1290  Sord Computer Corporation
-1291  NCS Computer Italia
-1292  Tritech Microelectronics Inc
-	fc02  Pyramid3D TR25202
-1293  Media Reality Technology
-1294  Rhetorex, Inc.
-1295  Imagenation Corporation
-1296  Kofax Image Products
-1297  Holco Enterprise Co, Ltd/Shuttle Computer
-1298  Spellcaster Telecommunications Inc.
-1299  Knowledge Technology Lab.
-129a  VMetro, inc.
-	0615  PBT-615 PCI-X Bus Analyzer
-129b  Image Access
-129c  Jaycor
-129d  Compcore Multimedia, Inc.
-129e  Victor Company of Japan, Ltd.
-129f  OEC Medical Systems, Inc.
-12a0  Allen-Bradley Company
-12a1  Simpact Associates, Inc.
-12a2  Newgen Systems Corporation
-12a3  Lucent Technologies
-	8105  T8105 H100 Digital Switch
-12a4  NTT Electronics Technology Company
-12a5  Vision Dynamics Ltd.
-12a6  Scalable Networks, Inc.
-12a7  AMO GmbH
-12a8  News Datacom
-12a9  Xiotech Corporation
-12aa  SDL Communications, Inc.
-12ab  Yuan Yuan Enterprise Co., Ltd.
-	0000  MPG160/Kuroutoshikou ITVC15-STVLP
-	0002  AU8830 [Vortex2] Based Sound Card With A3D Support
-	2300  Club-3D Zap TV2100
-	3000  MPG-200C PCI DVD Decoder Card
-	fff3  MPG600/Kuroutoshikou ITVC16-STVLP
-	ffff  MPG600/Kuroutoshikou ITVC16-STVLP
-12ac  Measurex Corporation
-12ad  Multidata GmbH
-12ae  Alteon Networks Inc.
-	0001  AceNIC Gigabit Ethernet
-		1014 0104  Gigabit Ethernet-SX PCI Adapter
-		12ae 0001  Gigabit Ethernet-SX (Universal)
-		1410 0104  Gigabit Ethernet-SX PCI Adapter
-	0002  AceNIC Gigabit Ethernet (Copper)
-		10a9 8002  Acenic Gigabit Ethernet
-		12ae 0002  Gigabit Ethernet-T (3C986-T)
-	00fa  Farallon PN9100-T Gigabit Ethernet
-12af  TDK USA Corp
-12b0  Jorge Scientific Corp
-12b1  GammaLink
-12b2  General Signal Networks
-12b3  Inter-Face Co Ltd
-12b4  FutureTel Inc
-12b5  Granite Systems Inc.
-12b6  Natural Microsystems
-12b7  Cognex Modular Vision Systems Div. - Acumen Inc.
-12b8  Korg
-# Nee US Robotics
-12b9  3Com Corp, Modem Division
-	1006  WinModem
-		12b9 005c  USR 56k Internal Voice WinModem (Model 3472)
-		12b9 005e  USR 56k Internal WinModem (Models 662975)
-		12b9 0062  USR 56k Internal Voice WinModem (Model 662978)
-		12b9 0068  USR 56k Internal Voice WinModem (Model 5690)
-		12b9 007a  USR 56k Internal Voice WinModem (Model 662974)
-		12b9 007f  USR 56k Internal WinModem (Models 5698, 5699)
-		12b9 0080  USR 56k Internal WinModem (Models 2975, 3528)
-		12b9 0081  USR 56k Internal Voice WinModem (Models 2974, 3529)
-		12b9 0091  USR 56k Internal Voice WinModem (Model 2978)
-	1007  USR 56k Internal WinModem
-		12b9 00a3  USR 56k Internal WinModem (Model 3595)
-		12b9 00c4  U.S. Robotics 56K Voice Win Int (2884a)
-	1008  56K FaxModem Model 5610
-		12b9 00a2  USR 56k Internal FAX Modem (Model 2977)
-		12b9 00aa  USR 56k Internal Voice Modem (Model 2976)
-		12b9 00ab  USR 56k Internal Voice Modem (Model 5609)
-		12b9 00ac  USR 56k Internal Voice Modem (Model 3298)
-		12b9 00ad  USR 56k Internal FAX Modem (Model 5610)
-		12b9 baba  USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk]
-12ba  BittWare, Inc.
-12bb  Nippon Unisoft Corporation
-12bc  Array Microsystems
-12bd  Computerm Corp.
-12be  Anchor Chips Inc.
-	3041  AN3041Q CO-MEM
-	3042  AN3042Q CO-MEM Lite
-		12be 3042  Anchor Chips Lite Evaluation Board
-12bf  Fujifilm Microdevices
-12c0  Infimed
-12c1  GMM Research Corp
-12c2  Mentec Limited
-12c3  Holtek Microelectronics Inc
-	0058  PCI NE2K Ethernet
-	5598  PCI NE2K Ethernet
-12c4  Connect Tech Inc
-	0001  Blue HEAT/PCI 8 (RS232/CL/RJ11)
-	0002  Blue HEAT/PCI 4 (RS232)
-	0003  Blue HEAT/PCI 2 (RS232)
-	0004  Blue HEAT/PCI 8 (UNIV, RS485)
-	0005  Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485)
-	0006  Blue HEAT/PCI 4 (OPTO, RS485)
-	0007  Blue HEAT/PCI 2+2 (RS232/485)
-	0008  Blue HEAT/PCI 2 (OPTO, Tx, RS485)
-	0009  Blue HEAT/PCI 2+6 (RS232/485)
-	000a  Blue HEAT/PCI 8 (Tx, RS485)
-	000b  Blue HEAT/PCI 4 (Tx, RS485)
-	000c  Blue HEAT/PCI 2 (20 MHz, RS485)
-	000d  Blue HEAT/PCI 2 PTM
-	0100  NT960/PCI
-	0201  cPCI Titan - 2 Port
-	0202  cPCI Titan - 4 Port
-	0300  CTI PCI UART 2 (RS232)
-	0301  CTI PCI UART 4 (RS232)
-	0302  CTI PCI UART 8 (RS232)
-	0310  CTI PCI UART 1+1 (RS232/485)
-	0311  CTI PCI UART 2+2 (RS232/485)
-	0312  CTI PCI UART 4+4 (RS232/485)
-	0320  CTI PCI UART 2
-	0321  CTI PCI UART 4
-	0322  CTI PCI UART 8
-	0330  CTI PCI UART 2 (RS485)
-	0331  CTI PCI UART 4 (RS485)
-	0332  CTI PCI UART 8 (RS485)
-12c5  Picture Elements Incorporated
-	007e  Imaging/Scanning Subsystem Engine
-	007f  Imaging/Scanning Subsystem Engine
-	0081  PCIVST [Grayscale Thresholding Engine]
-	0085  Video Simulator/Sender
-	0086  THR2 Multi-scale Thresholder
-12c6  Mitani Corporation
-12c7  Dialogic Corp
-# 12 Line, 6 port, CT-BUS/SC-BUS, loopstart FXO adaptor.
-	0546  Springware D/120JCT-LS
-# 24 Channel, 1 Port, CT-BUS/SC-BUS, T1/PRI adaptor.
-	0647  Springware D/240JCT-T1
-# 4 Line, 4 port, CT-BUS/SC-BUS, loopstart FXO adaptor. Revision 01
-	0676  Springware D/41JCT-LS
-# 48 Channel, 2 Port, CT-BUS/SC-BUS, T1/PRI adaptor.
-	0685  Springware D/480JCT-2T1
-12c8  G Force Co, Ltd
-12c9  Gigi Operations
-12ca  Integrated Computing Engines
-12cb  Antex Electronics Corporation
-12cc  Pluto Technologies International
-12cd  Aims Lab
-12ce  Netspeed Inc.
-12cf  Prophet Systems, Inc.
-12d0  GDE Systems, Inc.
-12d1  PSITech
-12d2  NVidia / SGS Thomson (Joint Venture)
-	0008  NV1
-	0009  DAC64
-	0018  Riva128
-		1048 0c10  VICTORY Erazor
-		107b 8030  STB Velocity 128
-		1092 0350  Viper V330
-		1092 1092  Viper V330
-		10b4 1b1b  STB Velocity 128
-		10b4 1b1d  STB Velocity 128
-		10b4 1b1e  STB Velocity 128, PAL TV-Out
-		10b4 1b20  STB Velocity 128 Sapphire
-		10b4 1b21  STB Velocity 128
-		10b4 1b22  STB Velocity 128 AGP, NTSC TV-Out
-		10b4 1b23  STB Velocity 128 AGP, PAL TV-Out
-		10b4 1b27  STB Velocity 128 DVD
-		10b4 1b88  MVP Pro 128
-		10b4 222a  STB Velocity 128 AGP
-		10b4 2230  STB Velocity 128
-		10b4 2232  STB Velocity 128
-		10b4 2235  STB Velocity 128 AGP
-		2a15 54a3  3DVision-SAGP / 3DexPlorer 3000
-	0019  Riva128ZX
-	0020  TNT
-	0028  TNT2
-	0029  UTNT2
-	002c  VTNT2
-	00a0  ITNT2
-12d3  Vingmed Sound A/S
-12d4  Ulticom (Formerly DGM&S)
-	0200  T1 Card
-12d5  Equator Technologies Inc
-	0003  BSP16
-	1000  BSP15
-12d6  Analogic Corp
-12d7  Biotronic SRL
-12d8  Pericom Semiconductor
-	01a7  PI7C21P100 PCI to PCI Bridge
-	8150  PCI to PCI Bridge
-12d9  Aculab PLC
-	0002  PCI Prosody
-	0004  cPCI Prosody
-	0005  Aculab E1/T1 PCI card
-	1078  Prosody X class e1000 device
-		12d9 000d  Prosody X PCI
-		12d9 000e  Prosody X cPCI
-12da  True Time Inc.
-12db  Annapolis Micro Systems, Inc
-12dc  Symicron Computer Communication Ltd.
-12dd  Management Graphics
-12de  Rainbow Technologies
-	0200  CryptoSwift CS200
-12df  SBS Technologies Inc
-12e0  Chase Research
-	0010  ST16C654 Quad UART
-	0020  ST16C654 Quad UART
-	0030  ST16C654 Quad UART
-12e1  Nintendo Co, Ltd
-12e2  Datum Inc. Bancomm-Timing Division
-12e3  Imation Corp - Medical Imaging Systems
-12e4  Brooktrout Technology Inc
-12e5  Apex Semiconductor Inc
-12e6  Cirel Systems
-12e7  Sunsgroup Corporation
-12e8  Crisc Corp
-12e9  GE Spacenet
-12ea  Zuken
-12eb  Aureal Semiconductor
-	0001  Vortex 1
-		104d 8036  AU8820 Vortex Digital Audio Processor
-		1092 2000  Sonic Impact A3D
-		1092 2100  Sonic Impact A3D
-		1092 2110  Sonic Impact A3D
-		1092 2200  Sonic Impact A3D
-		122d 1002  AU8820 Vortex Digital Audio Processor
-		12eb 0001  AU8820 Vortex Digital Audio Processor
-		5053 3355  Montego
-	0002  Vortex 2
-		104d 8049  AU8830 Vortex 3D Digital Audio Processor
-		104d 807b  AU8830 Vortex 3D Digital Audio Processor
-		1092 3000  Monster Sound II
-		1092 3001  Monster Sound II
-		1092 3002  Monster Sound II
-		1092 3003  Monster Sound II
-		1092 3004  Monster Sound II
-		12eb 0002  AU8830 Vortex 3D Digital Audio Processor
-		12eb 0088  AU8830 Vortex 3D Digital Audio Processor
-		144d 3510  AU8830 Vortex 3D Digital Audio Processor
-		5053 3356  Montego II
-	0003  AU8810 Vortex Digital Audio Processor
-		104d 8049  AU8810 Vortex Digital Audio Processor
-		104d 8077  AU8810 Vortex Digital Audio Processor
-		109f 1000  AU8810 Vortex Digital Audio Processor
-		12eb 0003  AU8810 Vortex Digital Audio Processor
-		1462 6780  AU8810 Vortex Digital Audio Processor
-		14a4 2073  AU8810 Vortex Digital Audio Processor
-		14a4 2091  AU8810 Vortex Digital Audio Processor
-		14a4 2104  AU8810 Vortex Digital Audio Processor
-		14a4 2106  AU8810 Vortex Digital Audio Processor
-	8803  Vortex 56k Software Modem
-		12eb 8803  Vortex 56k Software Modem
-12ec  3A International, Inc.
-12ed  Optivision Inc.
-12ee  Orange Micro
-12ef  Vienna Systems
-12f0  Pentek
-12f1  Sorenson Vision Inc
-12f2  Gammagraphx, Inc.
-12f3  Radstone Technology
-12f4  Megatel
-12f5  Forks
-12f6  Dawson France
-12f7  Cognex
-12f8  Electronic Design GmbH
-	0002  VideoMaker
-12f9  Four Fold Ltd
-12fb  Spectrum Signal Processing
-	0001  PMC-MAI
-	00f5  F5 Dakar
-	02ad  PMC-2MAI
-	2adc  ePMC-2ADC
-	3100  PRO-3100
-	3500  PRO-3500
-	4d4f  Modena
-	8120  ePMC-8120
-	da62  Daytona C6201 PCI (Hurricane)
-	db62  Ingliston XBIF
-	dc62  Ingliston PLX9054
-	dd62  Ingliston JTAG/ISP
-	eddc  ePMC-MSDDC
-	fa01  ePMC-FPGA
-12fc  Capital Equipment Corp
-12fd  I2S
-12fe  ESD Electronic System Design GmbH
-12ff  Lexicon
-1300  Harman International Industries Inc
-1302  Computer Sciences Corp
-1303  Innovative Integration
-1304  Juniper Networks
-1305  Netphone, Inc
-1306  Duet Technologies
-# Nee ComputerBoards
-1307  Measurement Computing
-	0001  PCI-DAS1602/16
-	000b  PCI-DIO48H
-	000c  PCI-PDISO8
-	000d  PCI-PDISO16
-	000f  PCI-DAS1200
-	0010  PCI-DAS1602/12
-	0014  PCI-DIO24H
-	0015  PCI-DIO24H/CTR3
-	0016  PCI-DIO48H/CTR15
-	0017  PCI-DIO96H
-	0018  PCI-CTR05
-	0019  PCI-DAS1200/JR
-	001a  PCI-DAS1001
-	001b  PCI-DAS1002
-	001c  PCI-DAS1602JR/16
-	001d  PCI-DAS6402/16
-	001e  PCI-DAS6402/12
-	001f  PCI-DAS16/M1
-	0020  PCI-DDA02/12
-	0021  PCI-DDA04/12
-	0022  PCI-DDA08/12
-	0023  PCI-DDA02/16
-	0024  PCI-DDA04/16
-	0025  PCI-DDA08/16
-	0026  PCI-DAC04/12-HS
-	0027  PCI-DAC04/16-HS
-	0028  PCI-DIO24
-	0029  PCI-DAS08
-	002c  PCI-INT32
-	0033  PCI-DUAL-AC5
-	0034  PCI-DAS-TC
-	0035  PCI-DAS64/M1/16
-	0036  PCI-DAS64/M2/16
-	0037  PCI-DAS64/M3/16
-	004c  PCI-DAS1000
-	004d  PCI-QUAD04
-	0052  PCI-DAS4020/12
-	0054  PCI-DIO96
-	005d  PCI-DAS6023
-	005e  PCI-DAS6025
-	005f  PCI-DAS6030
-	0060  PCI-DAS6031
-	0061  PCI-DAS6032
-	0062  PCI-DAS6033
-	0063  PCI-DAS6034
-	0064  PCI-DAS6035
-	0065  PCI-DAS6040
-	0066  PCI-DAS6052
-	0067  PCI-DAS6070
-	0068  PCI-DAS6071
-	006f  PCI-DAS6036
-	0078  PCI-DAS6013
-	0079  PCI-DAS6014
-1308  Jato Technologies Inc.
-	0001  NetCelerator Adapter
-		1308 0001  NetCelerator Adapter
-1309  AB Semiconductor Ltd
-130a  Mitsubishi Electric Microcomputer
-130b  Colorgraphic Communications Corp
-130c  Ambex Technologies, Inc
-130d  Accelerix Inc
-130e  Yamatake-Honeywell Co. Ltd
-130f  Advanet Inc
-1310  Gespac
-1311  Videoserver, Inc
-1312  Acuity Imaging, Inc
-1313  Yaskawa Electric Co.
-1316  Teradyne Inc
-1317  ADMtek
-	0981  21x4x DEC-Tulip compatible 10/100 Ethernet
-	0985  NC100 Network Everywhere Fast Ethernet 10/100
-		1734 100c  Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter
-	1985  21x4x DEC-Tulip compatible 10/100 Ethernet
-	2850  HSP MicroModem 56
-	5120  ADM5120 OpenGate System-on-Chip
-	8201  ADM8211 802.11b Wireless Interface
-		10b8 2635  SMC2635W 802.11b (11Mbps) wireless lan pcmcia (cardbus) card
-		1317 8201  SMC2635W 802.11b (11mbps) wireless lan pcmcia (cardbus) card
-	8211  ADM8211 802.11b Wireless Interface
-	9511  21x4x DEC-Tulip compatible 10/100 Ethernet
-1318  Packet Engines Inc.
-	0911  GNIC-II PCI Gigabit Ethernet [Hamachi]
-1319  Fortemedia, Inc
-	0801  Xwave QS3000A [FM801]
-		1319 1319  FM801 PCI Audio
-	0802  Xwave QS3000A [FM801 game port]
-		1319 1319  FM801 PCI Joystick
-	1000  FM801 PCI Audio
-	1001  FM801 PCI Joystick
-131a  Finisar Corp.
-131c  Nippon Electro-Sensory Devices Corp
-131d  Sysmic, Inc.
-131e  Xinex Networks Inc
-131f  Siig Inc
-	1000  CyberSerial (1-port) 16550
-	1001  CyberSerial (1-port) 16650
-	1002  CyberSerial (1-port) 16850
-	1010  Duet 1S(16550)+1P
-	1011  Duet 1S(16650)+1P
-	1012  Duet 1S(16850)+1P
-	1020  CyberParallel (1-port)
-	1021  CyberParallel (2-port)
-	1030  CyberSerial (2-port) 16550
-	1031  CyberSerial (2-port) 16650
-	1032  CyberSerial (2-port) 16850
-	1034  Trio 2S(16550)+1P
-	1035  Trio 2S(16650)+1P
-	1036  Trio 2S(16850)+1P
-	1050  CyberSerial (4-port) 16550
-	1051  CyberSerial (4-port) 16650
-	1052  CyberSerial (4-port) 16850
-	2000  CyberSerial (1-port) 16550
-	2001  CyberSerial (1-port) 16650
-	2002  CyberSerial (1-port) 16850
-	2010  Duet 1S(16550)+1P
-	2011  Duet 1S(16650)+1P
-	2012  Duet 1S(16850)+1P
-	2020  CyberParallel (1-port)
-	2021  CyberParallel (2-port)
-	2030  CyberSerial (2-port) 16550
-		131f 2030  PCI Serial Card
-	2031  CyberSerial (2-port) 16650
-	2032  CyberSerial (2-port) 16850
-	2040  Trio 1S(16550)+2P
-	2041  Trio 1S(16650)+2P
-	2042  Trio 1S(16850)+2P
-	2050  CyberSerial (4-port) 16550
-	2051  CyberSerial (4-port) 16650
-	2052  CyberSerial (4-port) 16850
-	2060  Trio 2S(16550)+1P
-	2061  Trio 2S(16650)+1P
-	2062  Trio 2S(16850)+1P
-	2081  CyberSerial (8-port) ST16654
-1320  Crypto AG
-1321  Arcobel Graphics BV
-1322  MTT Co., Ltd
-1323  Dome Inc
-1324  Sphere Communications
-1325  Salix Technologies, Inc
-1326  Seachange international
-1327  Voss scientific
-1328  quadrant international
-1329  Productivity Enhancement
-132a  Microcom Inc.
-132b  Broadband Technologies
-132c  Micrel Inc
-132d  Integrated Silicon Solution, Inc.
-1330  MMC Networks
-1331  RadiSys Corporation
-	0030  ENP-2611
-	8200  82600 Host Bridge
-	8201  82600 IDE
-	8202  82600 USB
-	8210  82600 PCI Bridge
-1332  Micro Memory
-	5415  MM-5415CN PCI Memory Module with Battery Backup
-	5425  MM-5425CN PCI 64/66 Memory Module with Battery Backup
-	6140  MM-6140D
-1334  Redcreek Communications, Inc
-1335  Videomail, Inc
-1337  Third Planet Publishing
-1338  BT Electronics
-133a  Vtel Corp
-133b  Softcom Microsystems
-133c  Holontech Corp
-133d  SS Technologies
-133e  Virtual Computer Corp
-133f  SCM Microsystems
-1340  Atalla Corp
-1341  Kyoto Microcomputer Co
-1342  Promax Systems Inc
-1343  Phylon Communications Inc
-1344  Crucial Technology
-1345  Arescom Inc
-1347  Odetics
-1349  Sumitomo Electric Industries, Ltd.
-134a  DTC Technology Corp.
-	0001  Domex 536
-	0002  Domex DMX3194UP SCSI Adapter
-134b  ARK Research Corp.
-134c  Chori Joho System Co. Ltd
-134d  PCTel Inc
-	2189  HSP56 MicroModem
-	2486  2304WT V.92 MDC Modem
-	7890  HSP MicroModem 56
-		134d 0001  PCT789 adapter
-	7891  HSP MicroModem 56
-		134d 0001  HSP MicroModem 56
-	7892  HSP MicroModem 56
-	7893  HSP MicroModem 56
-	7894  HSP MicroModem 56
-	7895  HSP MicroModem 56
-	7896  HSP MicroModem 56
-	7897  HSP MicroModem 56
-134e  CSTI
-134f  Algo System Co Ltd
-1350  Systec Co. Ltd
-1351  Sonix Inc
-1353  Thales Idatys
-	0002  Proserver
-	0003  PCI-FUT
-	0004  PCI-S0
-	0005  PCI-FUT-S0
-1354  Dwave System Inc
-1355  Kratos Analytical Ltd
-1356  The Logical Co
-1359  Prisa Networks
-135a  Brain Boxes
-135b  Giganet Inc
-135c  Quatech Inc
-	0010  QSC-100
-	0020  DSC-100
-	0030  DSC-200/300
-	0040  QSC-200/300
-	0050  ESC-100D
-	0060  ESC-100M
-	00f0  MPAC-100 Syncronous Serial Card (Zilog 85230)
-	0170  QSCLP-100
-	0180  DSCLP-100
-	0190  SSCLP-100
-	01a0  QSCLP-200/300
-	01b0  DSCLP-200/300
-	01c0  SSCLP-200/300
-135d  ABB Network Partner AB
-135e  Sealevel Systems Inc
-	5101  Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32)
-	7101  Single Port RS-232/422/485/530
-	7201  Dual Port RS-232/422/485 Interface
-	7202  Dual Port RS-232 Interface
-	7401  Four Port RS-232 Interface
-	7402  Four Port RS-422/485 Interface
-	7801  Eight Port RS-232 Interface
-	7804  Eight Port RS-232/422/485 Interface
-	8001  8001 Digital I/O Adapter
-135f  I-Data International A-S
-1360  Meinberg Funkuhren
-	0101  PCI32 DCF77 Radio Clock
-	0102  PCI509 DCF77 Radio Clock
-	0103  PCI510 DCF77 Radio Clock
-	0104  PCI511 DCF77 Radio Clock
-	0105  PEX511 DCF77 Radio Clock (PCI Express)
-	0201  GPS167PCI GPS Receiver
-	0202  GPS168PCI GPS Receiver
-	0203  GPS169PCI GPS Receiver
-	0204  GPS170PCI GPS Receiver
-	0205  GPS170PEX GPS Receiver (PCI Express)
-	0301  TCR510PCI IRIG Timecode Reader
-	0302  TCR167PCI IRIG Timecode Reader
-	0303  TCR511PCI IRIG Timecode Reader
-	0304  TCR511PEX IRIG Timecode Reader (PCI Express)
-1361  Soliton Systems K.K.
-1362  Fujifacom Corporation
-1363  Phoenix Technology Ltd
-1364  ATM Communications Inc
-1365  Hypercope GmbH
-1366  Teijin Seiki Co. Ltd
-1367  Hitachi Zosen Corporation
-1368  Skyware Corporation
-1369  Digigram
-136a  High Soft Tech
-	0004  HST Saphir VII mini PCI
-	0007  HST Saphir III E MultiLink 4
-	0008  HST Saphir III E MultiLink 8
-	000a  HST Saphir III E MultiLink 2
-136b  Kawasaki Steel Corporation
-	ff01  KL5A72002 Motion JPEG
-136c  Adtek System Science Co Ltd
-136d  Gigalabs Inc
-136f  Applied Magic Inc
-1370  ATL Products
-1371  CNet Technology Inc
-	434e  GigaCard Network Adapter
-		1371 434e  N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L)
-1373  Silicon Vision Inc
-1374  Silicom Ltd.
-	0024  Silicom Dual port Giga Ethernet BGE Bypass Server Adapter
-	0025  Silicom Quad port Giga Ethernet BGE Bypass Server Adapter
-	0026  Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter
-	0027  Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter
-	0029  Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter
-	002a  Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter
-	002b  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI)
-	002c  Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI)
-	002d  Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI)
-	002e  Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX)
-	002f  Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL)
-	0030  Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter
-	0031  Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter
-	0032  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter
-	0034  Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter
-	0035  Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter
-	0036  Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter
-	0037  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter
-	0038  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter
-	0039  Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter
-	003a  Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter
-	003b  Silicom Dual port Fiber Ethernet PMC Intel based Bypass Server Adapter (PMCX2BPFI)
-	003c  Silicom Dual port Copper Ethernet PCI-X BGE based Bypass Server Adapter (PXG2BPRB)
-1375  Argosystems Inc
-1376  LMC
-1377  Electronic Equipment Production & Distribution GmbH
-1378  Telemann Co. Ltd
-1379  Asahi Kasei Microsystems Co Ltd
-137a  Mark of the Unicorn Inc
-	0001  PCI-324 Audiowire Interface
-137b  PPT Vision
-137c  Iwatsu Electric Co Ltd
-137d  Dynachip Corporation
-137e  Patriot Scientific Corporation
-137f  Japan Satellite Systems Inc
-1380  Sanritz Automation Co Ltd
-1381  Brains Co. Ltd
-1382  Marian - Electronic & Software
-	0001  ARC88 audio recording card
-	2008  Prodif 96 Pro sound system
-	2048  Prodif Plus sound system
-	2088  Marc 8 Midi sound system
-	20c8  Marc A sound system
-	4008  Marc 2 sound system
-	4010  Marc 2 Pro sound system
-	4048  Marc 4 MIDI sound system
-	4088  Marc 4 Digi sound system
-	4248  Marc X sound system
-	4424  TRACE D4 Sound System
-1383  Controlnet Inc
-1384  Reality Simulation Systems Inc
-1385  Netgear
-	0013  WG311T 108 Mbps Wireless PCI Adapter
-	006b  WA301 802.11b Wireless PCI Adapter
-	311a  GA311 Gigabit Ethernet PCI Adapter
-	4100  MA301 802.11b Wireless PCI Adapter
-	4105  MA311 802.11b Wireless PCI Adapter
-	4251  WG111T 108 Mbps Wireless USB 2.0 Adapter
-	4400  WAG511 802.11a/b/g Dual Band Wireless PC Card
-	4600  WAG511 802.11a/b/g Dual Band Wireless PC Card
-	4601  WAG511 802.11a/b/g Dual Band Wireless PC Card
-	4610  WAG511 802.11a/b/g Dual Band Wireless PC Card
-	4800  WG511(v1) 54 Mbps Wireless PC Card
-	4900  WG311v1 54 Mbps Wireless PCI Adapter
-	4a00  WAG311 802.11a/g Wireless PCI Adapter
-	4b00  WG511T 108 Mbps Wireless PC Card
-	4c00  WG311v2 54 Mbps Wireless-G PCI Adapter
-	4d00  WG311T 108 Mbps Wireless PCI Adapter
-	4e00  WG511v2 54 Mbps Wireless PC Card
-	4f00  WG511U Double 108 Mbps  Wireless PC Card
-	5200  GA511 Gigabit PC Card
-	620a  GA620 Gigabit Ethernet
-	622a  GA622
-	630a  GA630 Gigabit Ethernet
-	6b00  WG311v3 54 Mbps Wireless PCI Adapter
-	6d00  WPNT511 RangeMax 240 Mbps Wireless PC Card
-	7b00  WN511B RangeMax Next 270 Mbps Wireless PC Card
-	7c00  WN511T RangeMax Next 300 Mbps Wireless PC Card
-	7d00  WN311B RangeMax Next 270 Mbps Wireless PCI Adapter
-	7e00  WN311T RangeMax Next 300 Mbps Wireless PCI Adapter
-	f004  FA310TX
-1386  Video Domain Technologies
-1387  Systran Corp
-1388  Hitachi Information Technology Co Ltd
-1389  Applicom International
-	0001  PCI1500PFB [Intelligent fieldbus adaptor]
-138a  Fusion Micromedia Corp
-138b  Tokimec Inc
-138c  Silicon Reality
-138d  Future Techno Designs pte Ltd
-138e  Basler GmbH
-138f  Patapsco Designs Inc
-1390  Concept Development Inc
-1391  Development Concepts Inc
-1392  Medialight Inc
-1393  Moxa Technologies Co Ltd
-	0001  UC7000 Serial
-	1020  CP102 (2-port RS-232 PCI)
-	1021  CP102UL (2-port RS-232 Universal PCI)
-	1022  CP102U (2-port RS-232 Universal PCI)
-	1040  Smartio C104H/PCI
-	1041  CP104U (4-port RS-232 Universal PCI)
-	1042  CP104JU (4-port RS-232 Universal PCI)
-	1043  CP104EL (4-port RS-232 Smart PCI Express)
-	1044  POS104UL (4-port RS-232 Universal PCI)
-	1080  CB108 (8-port RS-232 PC/104-plus Module)
-	1140  CT-114 series
-	1141  Industrio CP-114
-	1142  CB114 (4-port RS-232/422/485 PC/104-plus Module)
-	1180  CP118U (8-port RS-232/422/485 Smart Universal PCI)
-	1181  CP118EL (8-port RS-232/422/485 Smart PCI Express)
-	1320  CP132 (2-port RS-422/485 PCI)
-	1321  CP132U (2-Port RS-422/485 Universal PCI)
-	1340  CP134U (4-Port RS-422/485 Universal PCI)
-	1341  CB134I (4-port RS-422/485 PC/104-plus Module)
-	1380  CP138U (8-port RS-232/422/485 Smart Universal PCI)
-	1680  Smartio C168H/PCI
-	1681  CP-168U V2 Smart Serial Board (8-port RS-232)
-	1682  CP168EL (8-port RS-232 Smart PCI Express)
-	2040  Intellio CP-204J
-	2180  Intellio C218 Turbo PCI
-	3200  Intellio C320 Turbo PCI
-1394  Level One Communications
-	0001  LXT1001 Gigabit Ethernet
-		1394 0001  NetCelerator Adapter
-1395  Ambicom Inc
-1396  Cipher Systems Inc
-1397  Cologne Chip Designs GmbH
-	08b4  ISDN network Controller [HFC-4S]
-		1397 b520  HFC-4S [IOB4ST]
-		1397 b540  HFC-4S [Swyx 4xS0 SX2 QuadBri]
-		1397 b556  HFC-4S [Junghanns DuoDBRI]
-	16b8  ISDN network Controller [HFC-8S]
-	2bd0  ISDN network controller [HFC-PCI]
-		0675 1704  ISDN Adapter (PCI Bus, D, C)
-		0675 1708  ISDN Adapter (PCI Bus, D, C, ACPI)
-		1397 2bd0  ISDN Board
-		e4bf 1000  CI1-1-Harp
-	30b1  ISDN network Controller [HFC-E1]
-	b700  ISDN network controller PrimuX S0 [HFC-PCI]
-	f001  GSM Network Controller [HFC-4GSM]
-1398  Clarion co. Ltd
-1399  Rios systems Co Ltd
-139a  Alacritech Inc
-	0001  Quad Port 10/100 Server Accelerator
-	0003  Single Port 10/100 Server Accelerator
-	0005  Single Port Gigabit Server Accelerator
-139b  Mediasonic Multimedia Systems Ltd
-139c  Quantum 3d Inc
-139d  EPL limited
-139e  Media4
-139f  Aethra s.r.l.
-13a0  Crystal Group Inc
-13a1  Kawasaki Heavy Industries Ltd
-13a2  Ositech Communications Inc
-13a3  Hifn Inc.
-	0005  7751 Security Processor
-	0006  6500 Public Key Processor
-	0007  7811 Security Processor
-	0012  7951 Security Processor
-	0014  78XX Security Processor
-	0016  8065 Security Processor
-	0017  8165 Security Processor
-	0018  8154 Security Processor
-	001d  7956 Security Processor
-	0020  7955 Security Processor
-	0026  8155 Security Processor
-	002e  9630 Compression Processor
-13a4  Rascom Inc
-13a5  Audio Digital Imaging Inc
-13a6  Videonics Inc
-13a7  Teles AG
-13a8  Exar Corp.
-	0152  XR17C/D152 Dual PCI UART
-	0154  XR17C154 Quad UART
-	0158  XR17C158 Octal UART
-13a9  Siemens Medical Systems, Ultrasound Group
-13aa  Broadband Networks Inc
-13ab  Arcom Control Systems Ltd
-13ac  Motion Media Technology Ltd
-13ad  Nexus Inc
-13ae  ALD Technology Ltd
-13af  T.Sqware
-13b0  Maxspeed Corp
-13b1  Tamura corporation
-13b2  Techno Chips Co. Ltd
-13b3  Lanart Corporation
-13b4  Wellbean Co Inc
-13b5  ARM
-13b6  Dlog GmbH
-13b7  Logic Devices Inc
-13b8  Nokia Telecommunications oy
-13b9  Elecom Co Ltd
-13ba  Oxford Instruments
-13bb  Sanyo Technosound Co Ltd
-13bc  Bitran Corporation
-13bd  Sharp corporation
-13be  Miroku Jyoho Service Co. Ltd
-13bf  Sharewave Inc
-13c0  Microgate Corporation
-	0010  SyncLink Adapter v1
-	0020  SyncLink SCC Adapter
-	0030  SyncLink Multiport Adapter
-	0210  SyncLink Adapter v2
-13c1  3ware Inc
-	1000  5xxx/6xxx-series PATA-RAID
-	1001  7xxx/8xxx-series PATA/SATA-RAID
-		13c1 1001  7xxx/8xxx-series PATA/SATA-RAID
-	1002  9xxx-series SATA-RAID
-	1003  9550SX SATA-RAID
-	1004  9650SE SATA-II RAID
-13c2  Technotrend Systemtechnik GmbH
-	000e  Technotrend/Hauppauge DVB card rev2.3
-	1019  TTechnoTrend-budget DVB S2-3200
-13c3  Janz Computer AG
-13c4  Phase Metrics
-13c5  Alphi Technology Corp
-13c6  Condor Engineering Inc
-	0520  CEI-520 A429 Card
-	0620  CEI-620 A429 Card
-	0820  CEI-820 A429 Card
-13c7  Blue Chip Technology Ltd
-13c8  Apptech Inc
-13c9  Eaton Corporation
-13ca  Iomega Corporation
-13cb  Yano Electric Co Ltd
-13cc  Metheus Corporation
-13cd  Compatible Systems Corporation
-13ce  Cocom A/S
-13cf  Studio Audio & Video Ltd
-13d0  Techsan Electronics Co Ltd
-	2103  B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card
-	2200  B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card
-13d1  Abocom Systems Inc
-	ab02  ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter
-	ab03  21x4x DEC-Tulip compatible 10/100 Ethernet
-	ab06  RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter
-	ab08  21x4x DEC-Tulip compatible 10/100 Ethernet
-13d2  Shark Multimedia Inc
-13d3  IMC Networks
-	3219  DTV-DVB 7049A DVB-T USB Stick
-13d4  Graphics Microsystems Inc
-13d5  Media 100 Inc
-13d6  K.I. Technology Co Ltd
-13d7  Toshiba Engineering Corporation
-13d8  Phobos corporation
-13d9  Apex PC Solutions Inc
-13da  Intresource Systems pte Ltd
-13db  Janich & Klass Computertechnik GmbH
-13dc  Netboost Corporation
-13dd  Multimedia Bundle Inc
-13de  ABB Robotics Products AB
-13df  E-Tech Inc
-	0001  PCI56RVP Modem
-		13df 0001  PCI56RVP Modem
-13e0  GVC Corporation
-13e1  Silicom Multimedia Systems Inc
-13e2  Dynamics Research Corporation
-13e3  Nest Inc
-13e4  Calculex Inc
-13e5  Telesoft Design Ltd
-13e6  Argosy research Inc
-13e7  NAC Incorporated
-13e8  Chip Express Corporation
-13e9  Intraserver Technology Inc
-13ea  Dallas Semiconductor
-13eb  Hauppauge Computer Works Inc
-13ec  Zydacron Inc
-	000a  NPC-RC01 Remote control receiver
-13ed  Raytheion E-Systems
-13ee  Hayes Microcomputer Products Inc
-13ef  Coppercom Inc
-13f0  Sundance Technology Inc / IC Plus Corp
-	0200  IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY
-	0201  ST201 Sundance Ethernet
-	1021  TC9020 Gigabit Ethernet
-	1023  IP1000 Family Gigabit Ethernet
-13f1  Oce' - Technologies B.V.
-13f2  Ford Microelectronics Inc
-13f3  Mcdata Corporation
-13f4  Troika Networks, Inc.
-	1401  Zentai Fibre Channel Adapter
-13f5  Kansai Electric Co. Ltd
-13f6  C-Media Electronics Inc
-	0011  CMI8738
-	0100  CM8338A
-		13f6 ffff  CMI8338/C3DX PCI Audio Device
-	0101  CM8338B
-		13f6 0101  CMI8338-031 PCI Audio Device
-	0111  CM8738
-		1019 0970  P6STP-FL motherboard
-		1043 8035  CUSI-FX motherboard
-		1043 8077  CMI8738 6-channel audio controller
-		1043 80e2  CMI8738 6ch-MX
-		13f6 0111  CMI8738/C3DX PCI Audio Device
-		13f6 9761  Theatron Agrippa
-		153b 1144  Aureon 5.1
-		153b 1170  Aureon 7.1
-		1681 a000  Gamesurround MUSE XL
-		270f 1103  CT-7NJS Ultra motherboard
-		584d 3731  Digital X-Mystique
-		584d 3741  X-Plosion 7.1
-		584d 3751  X-Raider 7.1
-		584d 3761  X-Mystique 7.1 LP
-		584d 3771  X-Mystique 7.1 LP Value
-		7284 8384  Striker 7.1
-	0211  CM8738
-	8788  CMI8788 [Oxygen HD Audio]
-		1043 8269  Virtuoso 200 (Xonar D2)
-		14c3 1710  HIFIER
-		1a58 0910  Barracuda AC-1
-		415a 5431  X-Meridian 7.1
-		584d 3781  HDA X-Purity 7.1 Platinum
-		7284 9761  CLARO
-	9880  CM9880
-13f7  Wildfire Communications
-13f8  Ad Lib Multimedia Inc
-13f9  NTT Advanced Technology Corp.
-13fa  Pentland Systems Ltd
-13fb  Aydin Corp
-13fc  Computer Peripherals International
-13fd  Micro Science Inc
-13fe  Advantech Co. Ltd
-	1240  PCI-1240 4-channel stepper motor controller card
-	1600  PCI-16xx series PCI multiport serial board (function 0)
-# This board has two PCI functions, appears as two PCI devices
-		1601 0002  PCI-1601 2-port unisolated RS-422/485
-# This board has two PCI functions, appears as two PCI devices
-		1602 0002  PCI-1602 2-port isolated RS-422/485
-		1612 0004  PCI-1612 4-port RS-232/422/485
-	1603  PCI-1603 2-port isolated RS-232/current loop
-	1604  PCI-1604 2-port RS-232
-	16ff  PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD)
-		1601 0000  PCI-1601 2-port unisolated RS-422/485 PCI communications card
-		1602 0000  PCI-1602 2-port isolated RS-422/485
-		1612 0000  PCI-1612 4-port RS-232/422/485
-	1733  PCI-1733 32-channel isolated digital input card
-	1752  PCI-1752
-	1754  PCI-1754
-	1756  PCI-1756
-13ff  Silicon Spice Inc
-1400  Artx Inc
-	1401  9432 TX
-1401  CR-Systems A/S
-1402  Meilhaus Electronic GmbH
-1403  Ascor Inc
-1404  Fundamental Software Inc
-1405  Excalibur Systems Inc
-1406  Oce' Printing Systems GmbH
-1407  Lava Computer mfg Inc
-	0100  Lava Dual Serial
-	0101  Lava Quatro A
-	0102  Lava Quatro B
-	0110  Lava DSerial-PCI Port A
-	0111  Lava DSerial-PCI Port B
-	0120  Quattro-PCI A
-	0121  Quattro-PCI B
-	0180  Lava Octo A
-	0181  Lava Octo B
-	0200  Lava Port Plus
-	0201  Lava Quad A
-	0202  Lava Quad B
-	0220  Lava Quattro PCI Ports A/B
-	0221  Lava Quattro PCI Ports C/D
-	0500  Lava Single Serial
-	0600  Lava Port 650
-	8000  Lava Parallel
-	8001  Dual parallel port controller A
-	8002  Lava Dual Parallel port A
-	8003  Lava Dual Parallel port B
-	8800  BOCA Research IOPPAR
-1408  Aloka Co. Ltd
-1409  Timedia Technology Co Ltd
-	7168  PCI2S550 (Dual 16550 UART)
-140a  DSP Research Inc
-140b  Ramix Inc
-140c  Elmic Systems Inc
-140d  Matsushita Electric Works Ltd
-140e  Goepel Electronic GmbH
-140f  Salient Systems Corp
-1410  Midas lab Inc
-1411  Ikos Systems Inc
-# Nee IC Ensemble Inc.
-1412  VIA Technologies Inc.
-	1712  ICE1712 [Envy24] PCI Multi-Channel I/O Controller
-		1412 1712  Hoontech ST Audio DSP 24
-		1412 d630  M-Audio Delta 1010
-		1412 d631  M-Audio Delta DiO
-		1412 d632  M-Audio Delta 66
-		1412 d633  M-Audio Delta 44
-		1412 d634  M-Audio Delta Audiophile
-		1412 d635  M-Audio Delta TDIF
-		1412 d637  M-Audio Delta RBUS
-		1412 d638  M-Audio Delta 410
-		1412 d63b  M-Audio Delta 1010LT
-		1412 d63c  Digigram VX442
-		1416 1712  Hoontech ST Audio DSP 24 Media 7.1
-		153b 1115  EWS88 MT
-		153b 1125  EWS88 MT (Master)
-		153b 112b  EWS88 D
-		153b 112c  EWS88 D (Master)
-		153b 1130  EWX 24/96
-		153b 1138  DMX 6fire 24/96
-		153b 1151  PHASE88
-		16ce 1040  Edirol DA-2496
-	1724  VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller
-		1412 1724  Albatron PX865PE 7.1
-		1412 3630  M-Audio Revolution 7.1
-		1412 3631  M-Audio Revolution 5.1
-		153b 1145  Aureon 7.1 Space
-		153b 1147  Aureon 5.1 Sky
-		153b 1153  Aureon 7.1 Universe
-		270f f641  ZNF3-150
-		270f f645  ZNF3-250
-1413  Addonics
-1414  Microsoft Corporation
-	5801  XMA Decoder (Xenon)
-	5802  SATA Controller - CdRom (Xenon)
-	5803  SATA Controller - Disk (Xenon)
-	5804  OHCI Controller 0 (Xenon)
-	5805  EHCI Controller 0 (Xenon)
-	5806  OHCI Controller 1 (Xenon)
-	5807  EHCI Controller 1 (Xenon)
-	580a  Fast Ethernet Adapter (Xenon)
-	580b  Secure Flash Controller (Xenon)
-	580d  System Management Controller (Xenon)
-	5811  Xenos GPU (Xenon)
-1415  Oxford Semiconductor Ltd
-	8403  VScom 011H-EP1 1 port parallel adaptor
-	9500  OX16PCI954 (Quad 16950 UART) function 0 (Disabled)
-	9501  OX16PCI954 (Quad 16950 UART) function 0 (Uart)
-		12c4 0201  Titan/cPCI (2 port)
-		12c4 0202  Titan/cPCI (4 port)
-		12c4 0203  Titan/cPCI (8 port)
-		12c4 0210  Titan/104-Plus (8 port, p1-4)
-		131f 2050  CyberPro (4-port)
-# Model IO1085, Part No: JJ-P46012
-		131f 2051  CyberSerial 4S Plus
-		15ed 2000  MCCR Serial p0-3 of 8
-		15ed 2001  MCCR Serial p0-3 of 16
-	950a  EXSYS EX-41092 Dual 16950 Serial adapter
-	950b  OXCB950 Cardbus 16950 UART
-	9510  OX16PCI954 (Quad 16950 UART) function 1 (Disabled)
-		12c4 0200  Titan/cPCI (Unused)
-	9511  OX16PCI954 (Quad 16950 UART) function 1 (8bit bus)
-		12c4 0211  Titan/104-Plus (8 port, p5-8)
-		15ed 2000  MCCR Serial p4-7 of 8
-		15ed 2001  MCCR Serial p4-15 of 16
-	9512  OX16PCI954 (Quad 16950 UART) function 1 (32bit bus)
-	9513  OX16PCI954 (Quad 16950 UART) function 1 (parallel port)
-	9521  OX16PCI952 (Dual 16950 UART)
-	9523  OX16PCI952 Integrated Parallel Port
-1416  Multiwave Innovation pte Ltd
-1417  Convergenet Technologies Inc
-1418  Kyushu electronics systems Inc
-1419  Excel Switching Corp
-141a  Apache Micro Peripherals Inc
-141b  Zoom Telephonics Inc
-141d  Digitan Systems Inc
-141e  Fanuc Ltd
-141f  Visiontech Ltd
-1420  Psion Dacom plc
-	8002  Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part)
-	8003  Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part)
-1421  Ads Technologies Inc
-1422  Ygrec Systems Co Ltd
-1423  Custom Technology Corp.
-1424  Videoserver Connections
-1425  Chelsio Communications Inc
-	000b  T210 Protocol Engine
-	000c  T204 Protocol Engine
-	0030  T310 10GbE Single Port Protocol Engine Ethernet Adapter
-		103c 705e  PCIe 10GBase-SR [AD386A]
-	0031  T320 10GbE Dual Port Protocol Engine Ethernet Adapter
-	0032  T302 1GbE Dual Port Protocol Engine Ethernet adapter
-	0033  T304 1GbE Quad Port Protocol Engine Ethernet adapter
-1426  Storage Technology Corp.
-1427  Better On-Line Solutions
-1428  Edec Co Ltd
-1429  Unex Technology Corp.
-142a  Kingmax Technology Inc
-142b  Radiolan
-142c  Minton Optic Industry Co Ltd
-142d  Pix stream Inc
-142e  Vitec Multimedia
-	4020  VM2-2 [Video Maker 2] MPEG1/2 Encoder
-	4337  VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder
-142f  Radicom Research Inc
-1430  ITT Aerospace/Communications Division
-1431  Gilat Satellite Networks
-1432  Edimax Computer Co.
-	9130  RTL81xx Fast Ethernet
-1433  Eltec Elektronik GmbH
-# Nee Real Time Devices US Inc.
-1435  RTD Embedded Technologies, Inc.
-	4520  PCI4520
-	6020  SPM6020
-	6030  SPM6030
-	6420  SPM186420
-	6430  SPM176430
-	7520  DM7520
-	7820  DM7820
-1436  CIS Technology Inc
-1437  Nissin Inc Co
-1438  Atmel-dream
-1439  Outsource Engineering & Mfg. Inc
-143a  Stargate Solutions Inc
-143b  Canon Research Center, America
-143c  Amlogic Inc
-143d  Tamarack Microelectronics Inc
-143e  Jones Futurex Inc
-143f  Lightwell Co Ltd - Zax Division
-1440  ALGOL Corp.
-1441  AGIE Ltd
-1442  Phoenix Contact GmbH & Co.
-1443  Unibrain S.A.
-1444  TRW
-1445  Logical DO Ltd
-1446  Graphin Co Ltd
-1447  AIM GmBH
-1448  Alesis Studio Electronics
-1449  TUT Systems Inc
-144a  Adlink Technology
-	7296  PCI-7296
-	7432  PCI-7432
-	7433  PCI-7433
-	7434  PCI-7434
-	7841  PCI-7841
-	8133  PCI-8133
-	8164  PCI-8164
-	8554  PCI-8554
-	9111  PCI-9111
-	9113  PCI-9113
-	9114  PCI-9114
-144b  Loronix Information Systems Inc
-144c  Catalina Research Inc
-144d  Samsung Electronics Co Ltd
-	c00c  P35 laptop
-144e  OLITEC
-144f  Askey Computer Corp.
-1450  Octave Communications Ind.
-1451  SP3D Chip Design GmBH
-1453  MYCOM Inc
-1454  Altiga Networks
-1455  Logic Plus Plus Inc
-1456  Advanced Hardware Architectures
-1457  Nuera Communications Inc
-1458  Giga-byte Technology
-	0c11  K8NS Pro Mainboard
-	9001  GC-PTV-TAF Hybrid TV card
-	e911  GN-WIAG02
-1459  DOOIN Electronics
-145a  Escalate Networks Inc
-145b  PRAIM SRL
-145c  Cryptek
-145d  Gallant Computer Inc
-145e  Aashima Technology B.V.
-145f  Baldor Electric Company
-	0001  NextMove PCI
-1460  DYNARC INC
-1461  Avermedia Technologies Inc
-	a3ce  M179
-	a3cf  M179
-	a836  M115 DVB-T, PAL/SECAM/NTSC Tuner
-	f436  AVerTV Hybrid+FM
-1462  Micro-Star International Co., Ltd.
-	5501  nVidia NV15DDR [GeForce2 Ti]
-	6819  Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller [MSI CB54G]
-	6825  PCI Card wireless 11g [PC54G]
-	6834  RaLink RT2500 802.11g [PC54G2]
-	7125  MS-7125 [K8N Neo4 Platinum]
-	7235  P965 Neo MS-7235 mainboard
-	7242  K9AGM RS485 Motherboard
-	7250  MS-7250 Motherboard [K9N Platinum SLI/non-SLI]
-	7327  K9AGM2-FIH Motherboard
-	8725  NVIDIA NV25 [GeForce4 Ti 4600] VGA Adapter
-	9000  NVIDIA NV28 [GeForce4 Ti 4800] VGA Adapter
-	9110  GeFORCE FX5200
-	9119  NVIDIA NV31 [GeForce FX 5600XT] VGA Adapter
-	9123  NVIDIA NV31 [GeForce FX 5600] FX5600-VTDR128 [MS-8912]
-	9510  Radeon 9600XT
-	9511  Radeon 9600XT
-	9591  nVidia Corporation NV36 [GeForce FX 5700LE]
-	b834  Wireless 11g Turbo G PCI card [MSI PC60G]
-1463  Fast Corporation
-1464  Interactive Circuits & Systems Ltd
-1465  GN NETTEST Telecom DIV.
-1466  Designpro Inc.
-1467  DIGICOM SPA
-1468  AMBIT Microsystem Corp.
-1469  Cleveland Motion Controls
-146a  IFR
-146b  Parascan Technologies Ltd
-146c  Ruby Tech Corp.
-	1430  FE-1430TX Fast Ethernet PCI Adapter
-146d  Tachyon, INC.
-146e  Williams Electronics Games, Inc.
-146f  Multi Dimensional Consulting Inc
-1470  Bay Networks
-1471  Integrated Telecom Express Inc
-1472  DAIKIN Industries, Ltd
-1473  ZAPEX Technologies Inc
-1474  Doug Carson & Associates
-1475  PICAZO Communications
-1476  MORTARA Instrument Inc
-1477  Net Insight
-1478  DIATREND Corporation
-1479  TORAY Industries Inc
-147a  FORMOSA Industrial Computing
-147b  ABIT Computer Corp.
-147c  AWARE, Inc.
-147d  Interworks Computer Products
-147e  Matsushita Graphic Communication Systems, Inc.
-147f  NIHON UNISYS, Ltd.
-1480  SCII Telecom
-1481  BIOPAC Systems Inc
-1482  ISYTEC - Integrierte Systemtechnik GmBH
-1483  LABWAY Corporation
-1484  Logic Corporation
-1485  ERMA - Electronic GmBH
-1486  L3 Communications Telemetry & Instrumentation
-1487  MARQUETTE Medical Systems
-1488  KONTRON Electronik GmBH
-1489  KYE Systems Corporation
-148a  OPTO
-148b  INNOMEDIALOGIC Inc.
-148c  C.P. Technology Co. Ltd
-148d  DIGICOM Systems, Inc.
-	1003  HCF 56k Data/Fax Modem
-148e  OSI Plus Corporation
-148f  Plant Equipment, Inc.
-1490  Stone Microsystems PTY Ltd.
-1491  ZEAL Corporation
-1492  Time Logic Corporation
-1493  MAKER Communications
-1494  WINTOP Technology, Inc.
-1495  TOKAI Communications Industry Co. Ltd
-1496  JOYTECH Computer Co., Ltd.
-1497  SMA Regelsysteme GmBH
-	1497  SMA Technologie AG
-1498  TEWS Technologies GmbH
-	0330  TPMC816 2 Channel CAN bus controller.
-	0385  TPMC901 Extended CAN bus with 2/4/6 CAN controller
-	21cc  TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422
-	21cd  TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422
-	30c8  TPCI200
-1499  EMTEC CO., Ltd
-149a  ANDOR Technology Ltd
-149b  SEIKO Instruments Inc
-149c  OVISLINK Corp.
-149d  NEWTEK Inc
-	0001  Video Toaster for PC
-149e  Mapletree Networks Inc.
-149f  LECTRON Co Ltd
-14a0  SOFTING GmBH
-14a1  Systembase Co Ltd
-14a2  Millennium Engineering Inc
-14a3  Maverick Networks
-14a4  GVC/BCM Advanced Research
-14a5  XIONICS Document Technologies Inc
-14a6  INOVA Computers GmBH & Co KG
-14a7  MYTHOS Systems Inc
-14a8  FEATRON Technologies Corporation
-14a9  HIVERTEC Inc
-14aa  Advanced MOS Technology Inc
-14ab  Mentor Graphics Corp.
-14ac  Novaweb Technologies Inc
-14ad  Time Space Radio AB
-14ae  CTI, Inc
-14af  Guillemot Corporation
-	7102  3D Prophet II MX
-14b0  BST Communication Technology Ltd
-14b1  Nextcom K.K.
-14b2  ENNOVATE Networks Inc
-14b3  XPEED Inc
-	0000  DSL NIC
-14b4  PHILIPS Business Electronics B.V.
-14b5  Creamware GmBH
-	0200  Scope
-	0300  Pulsar
-	0400  PulsarSRB
-	0600  Pulsar2
-	0800  DSP-Board
-	0900  DSP-Board
-	0a00  DSP-Board
-	0b00  DSP-Board
-14b6  Quantum Data Corp.
-14b7  PROXIM Inc
-	0001  Symphony 4110
-14b8  Techsoft Technology Co Ltd
-14b9  AIRONET Wireless Communications
-	0001  PC4800
-	0340  PC4800
-	0350  PC4800
-	4500  PC4500
-	4800  Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800
-	a504  Cisco Aironet Wireless 802.11b
-	a505  Cisco Aironet CB20a 802.11a Wireless LAN Adapter
-	a506  Cisco Aironet Mini PCI b/g
-14ba  INTERNIX Inc.
-14bb  SEMTECH Corporation
-14bc  Globespan Semiconductor Inc.
-	d002  Pulsar [PCI ADSL Card]
-	d00f  Pulsar [PCI ADSL Card]
-14bd  CARDIO Control N.V.
-14be  L3 Communications
-14bf  SPIDER Communications Inc.
-14c0  COMPAL Electronics Inc
-14c1  MYRICOM Inc.
-	0008  Myri-10G Dual-Protocol NIC (10G-PCIE-8A)
-	8043  Myrinet 2000 Scalable Cluster Interconnect
-		103c 1240  Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM)
-14c2  DTK Computer
-14c3  MEDIATEK Corp.
-14c4  IWASAKI Information Systems Co Ltd
-14c5  Automation Products AB
-14c6  Data Race Inc
-14c7  Modular Technology Holdings Ltd
-14c8  Turbocomm Tech. Inc.
-14c9  ODIN Telesystems Inc
-14ca  PE Logic Corp.
-14cb  Billionton Systems Inc
-14cc  NAKAYO Telecommunications Inc
-14cd  Universal Scientific Ind.
-14ce  Whistle Communications
-14cf  TEK Microsystems Inc.
-14d0  Ericsson Axe R & D
-14d1  Computer Hi-Tech Co Ltd
-14d2  Titan Electronics Inc
-	8001  VScom 010L 1 port parallel adaptor
-	8002  VScom 020L 2 port parallel adaptor
-	8010  VScom 100L 1 port serial adaptor
-	8011  VScom 110L 1 port serial and 1 port parallel adaptor
-	8020  VScom 200L 1 port serial adaptor
-	8021  VScom 210L 2 port serial and 1 port parallel adaptor
-	8040  VScom 400L 4 port serial adaptor
-	8080  VScom 800L 8 port serial adaptor
-	a000  VScom 010H 1 port parallel adaptor
-	a001  VScom 100H 1 port serial adaptor
-	a003  VScom 400H 4 port serial adaptor
-	a004  VScom 400HF1 4 port serial adaptor
-	a005  VScom 200H 2 port serial adaptor
-	e001  VScom 010HV2 1 port parallel adaptor
-	e010  VScom 100HV2 1 port serial adaptor
-	e020  VScom 200HV2 2 port serial adaptor
-14d3  CIRTECH (UK) Ltd
-14d4  Panacom Technology Corp
-14d5  Nitsuko Corporation
-14d6  Accusys Inc
-	6101  ACS-61xxx, PCIe to SAS/SATA RAID HBA
-	6201  ACS-62xxx, External PCIe to SAS/SATA RAID controller
-14d7  Hirakawa Hewtech Corp
-14d8  HOPF Elektronik GmBH
-# Formerly SiPackets, Inc., formerly API NetWorks, Inc., formerly Alpha Processor, Inc.
-14d9  Alliance Semiconductor Corporation
-	0010  AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon]
-	9000  AS90L10204/10208 HyperTransport to PCI-X Bridge
-14da  National Aerospace Laboratories
-14db  AFAVLAB Technology Inc
-	2120  TK9902
-	2182  AFAVLAB Technology Inc. 8-port serial card
-14dc  Amplicon Liveline Ltd
-	0000  PCI230
-	0001  PCI242
-	0002  PCI244
-	0003  PCI247
-	0004  PCI248
-	0005  PCI249
-	0006  PCI260
-	0007  PCI224
-	0008  PCI234
-	0009  PCI236
-	000a  PCI272
-	000b  PCI215
-14dd  Boulder Design Labs Inc
-14de  Applied Integration Corporation
-14df  ASIC Communications Corp
-14e1  INVERTEX
-14e2  INFOLIBRIA
-14e3  AMTELCO
-14e4  Broadcom Corporation
-	0800  Sentry5 Chipcommon I/O Controller
-	0804  Sentry5 PCI Bridge
-	0805  Sentry5 MIPS32 CPU
-	0806  Sentry5 Ethernet Controller
-	080b  Sentry5 Crypto Accelerator
-	080f  Sentry5 DDR/SDR RAM Controller
-	0811  Sentry5 External Interface Core
-	0816  BCM3302 Sentry5 MIPS32 CPU
-	1600  NetXtreme BCM5752 Gigabit Ethernet PCI Express
-		103c 3015  PCIe LAN on Motherboard
-		107b 5048  E4500 Onboard
-	1601  NetXtreme BCM5752M Gigabit Ethernet PCI Express
-	1639  NetXtreme II BCM5709 Gigabit Ethernet
-		103c 7055  NC382i Integrated Quad Port PCI Express Gigabit Server Adapter
-		103c 7059  NC382T PCI Express Dual Port Multifunction Gigabit Server Adapter
-	163a  NetXtreme II BCM5709S Gigabit Ethernet
-# ice
-		103c 171d  NC382m Dual Port 1GbE Multifunction BL-c Adapter
-		103c 7056  NC382i Integrated Quad Port PCI Express Gigabit Server Adapter
-	163b  NetXtreme II BCM5716 Gigabit Ethernet
-	1644  NetXtreme BCM5700 Gigabit Ethernet
-		1014 0277  Broadcom Vigil B5700 1000Base-T
-		1028 00d1  Broadcom BCM5700
-		1028 0106  Broadcom BCM5700
-		1028 0109  Broadcom BCM5700 1000Base-T
-		1028 010a  Broadcom BCM5700 1000BaseTX
-		10b7 1000  3C996-T 1000Base-T
-		10b7 1001  3C996B-T 1000Base-T
-		10b7 1002  3C996C-T 1000Base-T
-		10b7 1003  3C997-T 1000Base-T Dual Port
-		10b7 1004  3C996-SX 1000Base-SX
-		10b7 1005  3C997-SX 1000Base-SX Dual Port
-		10b7 1008  3C942 Gigabit LOM (31X31)
-		14e4 0002  NetXtreme 1000Base-SX
-		14e4 0003  NetXtreme 1000Base-SX
-		14e4 0004  NetXtreme 1000Base-T
-		14e4 1028  NetXtreme 1000BaseTX
-		14e4 1644  BCM5700 1000Base-T
-	1645  NetXtreme BCM5701 Gigabit Ethernet
-		0e11 007c  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
-		0e11 007d  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)
-		0e11 0085  NC7780 Gigabit Server Adapter (embedded, WOL)
-		0e11 0099  NC7780 Gigabit Server Adapter (embedded, WOL)
-		0e11 009a  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
-		0e11 00c1  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)
-		1028 0121  Broadcom BCM5701 1000Base-T
-		103c 128a  BCM5701 1000Base-T (HP, OEM 3COM)
-		103c 128b  1000Base-SX (PCI) [A7073A]
-		103c 12a4  Core Lan 1000Base-T
-		103c 12c1  IOX Core Lan 1000Base-T [A7109AX]
-		103c 1300  Core LAN/SCSI Combo [A6794A]
-		10a9 8010  IO9/IO10 Gigabit Ethernet (Copper)
-		10a9 8011  Gigabit Ethernet (Copper)
-		10a9 8012  Gigabit Ethernet (Fiber)
-		10b7 1004  3C996-SX 1000Base-SX
-		10b7 1006  3C996B-T 1000Base-T
-		10b7 1007  3C1000-T 1000Base-T
-		10b7 1008  3C940-BR01 1000Base-T
-		14e4 0001  BCM5701 1000Base-T
-		14e4 0005  BCM5701 1000Base-T
-		14e4 0006  BCM5701 1000Base-T
-		14e4 0007  BCM5701 1000Base-SX
-		14e4 0008  BCM5701 1000Base-T
-		14e4 1645  NetXtreme BCM5701 Gigabit Ethernet
-		14e4 8008  BCM5701 1000Base-T
-	1646  NetXtreme BCM5702 Gigabit Ethernet
-		0e11 00bb  NC7760 1000BaseTX
-		1028 0126  Broadcom BCM5702 1000BaseTX
-		14e4 8009  BCM5702 1000BaseTX
-	1647  NetXtreme BCM5703 Gigabit Ethernet
-		0e11 0099  NC7780 1000BaseTX
-		0e11 009a  NC7770 1000BaseTX
-		10a9 8010  SGI IO9 Gigabit Ethernet (Copper)
-		14e4 0009  BCM5703 1000BaseTX
-		14e4 000a  BCM5703 1000BaseSX
-		14e4 000b  BCM5703 1000BaseTX
-		14e4 8009  BCM5703 1000BaseTX
-		14e4 800a  BCM5703 1000BaseTX
-	1648  NetXtreme BCM5704 Gigabit Ethernet
-		0e11 00cf  NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
-		0e11 00d0  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
-		0e11 00d1  NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
-		1028 014a  PowerEdge 1750
-		103c 310f  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
-		10a9 8013  Dual Port Gigabit Ethernet (PCI-X,Copper)
-		10a9 8018  Dual Port Gigabit Ethernet (A330)
-		10a9 801a  Dual Port Gigabit Ethernet (IA-blade)
-		10a9 801b  Quad Port Gigabit Ethernet (PCI-E,Copper)
-		10b7 2000  3C998-T Dual Port 10/100/1000 PCI-X
-		10b7 3000  3C999-T Quad Port 10/100/1000 PCI-X
-		1166 1648  NetXtreme CIOB-E 1000Base-T
-		1734 100b  PRIMERGY RX/TX series onboard LAN
-	1649  NetXtreme BCM5704S_2 Gigabit Ethernet
-	164a  NetXtreme II BCM5706 Gigabit Ethernet
-		103c 3070  NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter
-		103c 3101  NC370T MultifuNCtion Gigabit Server Adapter
-	164c  NetXtreme II BCM5708 Gigabit Ethernet
-		1028 0205  Broadcom NetXtreme II BCM5708 1000Base-T (rev 12)
-		103c 7037  NC373T PCI Express Multifunction Gigabit Server Adapter
-		103c 7038  NC373i Integrated Multifunction Gigabit Server Adapter
-	164d  NetXtreme BCM5702FE Gigabit Ethernet
-	164e  NetXtreme II BCM57710 10Gigabit PCIe [Everest]
-		103c 171c  NC532m Dual Port 10GbE Multifunction BL-C Adapter
-		103c 7058  NC532i Dual Port 10GbE Multifunction BL-C Adapter
-	164f  NetXtreme II BCM57711 10Gigabit PCIe
-	1650  NetXtreme II BCM57711E 10Gigabit PCIe
-		103c 171c  NC532m Dual Port 10GbE Multifunction BL-C Adapter
-		103c 7058  NC532i Dual Port 10GbE Multifunction BL-C Adapter
-	1653  NetXtreme BCM5705 Gigabit Ethernet
-		0e11 00e3  NC7761 Gigabit Server Adapter
-	1654  NetXtreme BCM5705_2 Gigabit Ethernet
-		0e11 00e3  NC7761 Gigabit Server Adapter
-		103c 3100  NC1020 ProLiant Gigabit Server Adapter 32 PCI
-		103c 3226  NC150T 4-port Gigabit Combo Switch & Adapter
-	1658  NetXtreme BCM5720 Gigabit Ethernet
-	1659  NetXtreme BCM5721 Gigabit Ethernet PCI Express
-		1014 02c6  eServer xSeries server mainboard
-		1028 01e6  PowerEdge 860
-		103c 7031  NC320T PCIe Gigabit Server Adapter
-		103c 7032  NC320i PCIe Gigabit Server Adapter
-		1734 1061  PRIMERGY RX/TX S2 series onboard LAN
-	165a  NetXtreme BCM5722 Gigabit Ethernet PCI Express
-# Dual NIC server
-		1014 0378  IBM System x3350 (Machine type 4192)
-		1028 020f  PowerEdge R300
-		1028 0210  PowerEdge T300
-		1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
-		103c 7051  NC105i PCIe Gigabit Server Adapter
-		103c 7052  NC105T PCIe Gigabit Server Adapter
-	165b  NetXtreme BCM5723 Gigabit Ethernet PCIe
-		103c 705d  NC107i Integrated PCI Express Gigabit Server Adapter
-	165d  NetXtreme BCM5705M Gigabit Ethernet
-		1028 865d  Latitude D400
-		14e4 165d  Dell Latitude D600
-	165e  NetXtreme BCM5705M_2 Gigabit Ethernet
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 099c  NX6110/NC6120
-		10cf 1279  LifeBook E8010D
-	1668  NetXtreme BCM5714 Gigabit Ethernet
-		103c 7039  NC324i PCIe Dual Port Gigabit Server Adapter
-	1669  NetXtreme 5714S Gigabit Ethernet
-	166a  NetXtreme BCM5780 Gigabit Ethernet
-	166b  NetXtreme BCM5780S Gigabit Ethernet
-	166e  570x 10/100 Integrated Controller
-	1672  NetXtreme BCM5754M Gigabit Ethernet PCI Express
-	1673  NetXtreme BCM5755M Gigabit Ethernet PCI Express
-	1674  NetXtreme BCM5756ME Gigabit Ethernet PCI Express
-	1676  NetXtreme BCM5750 Gigabit Ethernet
-	1677  NetXtreme BCM5751 Gigabit Ethernet PCI Express
-		1028 0177  Dimension 8400
-		1028 0179  Optiplex GX280
-		1028 0182  Latitude D610
-		1028 0187  Precision M70
-		1028 01ad  OptiPlex GX620
-		103c 3006  DC7100 SFF(DX878AV)
-		1462 028c  915P/G Neo2
-		1734 105d  Scenic W620
-		3007 103c  HP DC7100 USFF
-	1678  NetXtreme BCM5715 Gigabit Ethernet
-		103c 703e  NC326i PCIe Dual Port Gigabit Server Adapter
-	1679  NetXtreme BCM5715S Gigabit Ethernet
-		103c 1707  NC326m PCIe Dual Port Adapter
-		103c 170c  NC325m PCIe Quad Port Adapter
-		103c 703c  NC326i PCIe Dual Port Gigabit Server Adapter
-	167a  NetXtreme BCM5754 Gigabit Ethernet PCI Express
-		1028 01da  OptiPlex 745
-		1028 01de  Precision 390
-		1028 01df  PowerEdge SC440
-	167b  NetXtreme BCM5755 Gigabit Ethernet PCI Express
-		103c 280a  DC5750 Microtower
-	167c  NetXtreme BCM5750M Gigabit Ethernet
-	167d  NetXtreme BCM5751M Gigabit Ethernet PCI Express
-		1014 0577  ThinkPad Z60t
-		103c 0940  HP Compaq nw8240 Mobile Workstation
-		17aa 2081  ThinkPad R60e
-	167e  NetXtreme BCM5751F Fast Ethernet PCI Express
-	167f  NetLink BCM5787F Fast Ethernet PCI Express
-	1680  NetXtreme BCM5761e Gigabit Ethernet PCIe
-	1681  NetXtreme BCM5761 Gigabit Ethernet PCIe
-	1684  NetXtreme BCM5764M Gigabit Ethernet PCIe
-	1693  NetLink BCM5787M Gigabit Ethernet PCI Express
-		1025 0121  Aspire 5920G
-		103c 30c0  6710b
-	1696  NetXtreme BCM5782 Gigabit Ethernet
-		103c 12bc  d530 CMT (DG746A)
-		14e4 000d  NetXtreme BCM5782 1000Base-T
-	1698  NetLink BCM5784M Gigabit Ethernet PCIe
-	1699  NetLink BCM5785 Gigabit Ethernet
-	169a  NetLink BCM5786 Gigabit Ethernet PCI Express
-	169b  NetLink BCM5787 Gigabit Ethernet PCI Express
-	169c  NetXtreme BCM5788 Gigabit Ethernet
-		103c 308b  MX6125
-		103c 30a1  NC2400
-		144d c018  X20
-		1462 590c  KT6 Delta-FIS2R (MS-6590)
-	169d  NetLink BCM5789 Gigabit Ethernet PCI Express
-	16a6  NetXtreme BCM5702X Gigabit Ethernet
-		0e11 00bb  NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
-		1028 0126  BCM5702 1000Base-T
-		14e4 000c  BCM5702 1000Base-T
-		14e4 8009  BCM5702 1000Base-T
-	16a7  NetXtreme BCM5703X Gigabit Ethernet
-		0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
-		0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
-		14e4 0009  NetXtreme BCM5703 1000Base-T
-		14e4 000a  NetXtreme BCM5703 1000Base-SX
-		14e4 000b  NetXtreme BCM5703 1000Base-T
-		14e4 800a  NetXtreme BCM5703 1000Base-T
-	16a8  NetXtreme BCM5704S Gigabit Ethernet
-		10a9 8014  Dual Port Gigabit Ethernet (PCI-X,Fiber)
-		10a9 801c  Quad Port Gigabit Ethernet (PCI-E,Fiber)
-		10b7 2001  3C998-SX Dual Port 1000-SX PCI-X
-	16aa  NetXtreme II BCM5706S Gigabit Ethernet
-		103c 3102  NC370F MultifuNCtion Gigabit Server Adapter
-	16ac  NetXtreme II BCM5708S Gigabit Ethernet
-		1014 0304  NetXtreme II BCM5708S Gigabit Ethernet
-		103c 1706  NC373m Multifunction Gigabit Server Adapter
-		103c 7038  NC373i PCI Express Multifunction Gigabit Server Adapter
-		103c 703b  NC373i Integrated Multifunction Gigabit Server Adapter
-		103c 703d  NC373F PCI Express Multifunction Gigabit Server Adapter
-	16c6  NetXtreme BCM5702A3 Gigabit Ethernet
-		10b7 1100  3C1000B-T 10/100/1000 PCI
-		14e4 000c  BCM5702 1000Base-T
-		14e4 8009  BCM5702 1000Base-T
-	16c7  NetXtreme BCM5703 Gigabit Ethernet
-		0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
-		0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
-		103c 12c3  Combo FC/GigE-SX [A9782A]
-		103c 12ca  Combo FC/GigE-T [A9784A]
-		14e4 0009  NetXtreme BCM5703 1000Base-T
-		14e4 000a  NetXtreme BCM5703 1000Base-SX
-	16dd  NetLink BCM5781 Gigabit Ethernet PCI Express
-	16f7  NetXtreme BCM5753 Gigabit Ethernet PCI Express
-	16fd  NetXtreme BCM5753M Gigabit Ethernet PCI Express
-		103c 30a3  Compaq nw8440
-	16fe  NetXtreme BCM5753F Fast Ethernet PCI Express
-	170c  BCM4401-B0 100Base-TX
-		1028 0188  Inspiron 6000 laptop
-		1028 018d  Inspiron 700m/710m
-		1028 0196  Inspiron 5160
-		1028 01af  Inspiron 6400
-		1028 01cd  Inspiron 9400 Laptop
-		1028 01d7  XPS M1210
-		1028 01d8  Inspiron E1405
-		103c 099c  NX6110/NC6120
-		103c 30a2  NX7300 laptop
-		14e4 170c  HP Compaq 6720t Mobile Thin Client
-	170d  NetXtreme BCM5901 100Base-TX
-		1014 0545  ThinkPad R40e
-	170e  NetXtreme BCM5901 100Base-TX
-	1712  NetLink BCM5906 Fast Ethernet PCI Express
-	1713  NetLink BCM5906M Fast Ethernet PCI Express
-		1028 01f3  Inspiron 1420
-		1028 0209  XPS M1330
-	3352  BCM3352
-	3360  BCM3360
-	4210  BCM4210 iLine10 HomePNA 2.0
-	4211  BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem
-	4212  BCM4212 v.90 56k modem
-	4220  802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card
-	4222  NetXtreme BCM5753M Gigabit Ethernet PCI Express
-	4301  BCM4303 802.11b Wireless LAN Controller
-		1028 0407  TrueMobile 1180 Onboard WLAN
-		1043 0120  WL-103b Wireless LAN PC Card
-	4305  BCM4307 V.90 56k Modem
-	4306  BCM4307 Ethernet Controller
-	4307  BCM4307 802.11b Wireless LAN Controller
-	4310  BCM4310 Chipcommon I/OController
-	4311  BCM4311 802.11b/g WLAN
-		1028 0007  Wireless 1390 WLAN Mini-Card
-		1028 0008  Wireless 1390 WLAN ExpressCard
-		103c 1363  BCM4311 802.11b/g Wireless LAN Controller
-		103c 1364  BCM4311 802.11b/g Wireless LAN Controller
-		103c 1365  BCM4311 802.11b/g Wireless LAN Controller
-		103c 1374  BCM4311 802.11b/g Wireless LAN Controller
-		103c 1375  BCM4311 802.11b/g Wireless LAN Controller
-		103c 1376  BCM4311 802.11b/g Wireless LAN Controller
-		103c 1377  BCM4311 802.11b/g Wireless LAN Controller
-		103c 137f  BCM4322 802.11a/b/g/n Wireless LAN Controller
-		103c 1380  BCM4322 802.11a/b/g/n Wireless LAN Controller
-		14e4 4311  BCM94311MCG
-	4312  BCM4312 802.11a/b/g
-		1028 0007  Wireless 1490 Dual Band WLAN Mini-Card
-		1028 0008  Wireless 1490 Dual Band WLAN ExpressCard
-		103c 135a  Broadcom 802.11a/b/g WLAN
-		103c 135f  Broadcom 802.11a/b/g WLAN
-		103c 1360  Broadcom 802.11a/b/g WLAN
-		103c 1361  Broadcom 802.11a/b/g WLAN
-		103c 1362  Broadcom 802.11a/b/g WLAN
-		103c 1370  Broadcom 802.11a/b/g WLAN
-		103c 1371  Broadcom 802.11a/b/g WLAN
-		103c 1372  Broadcom 802.11a/b/g WLAN
-		103c 1373  Broadcom 802.11a/b/g WLAN
-		103c 30b5  Presario V3242AU
-		1371 103c  Broadcom 802.11 Multiband-netwerkadapter(6715s)
-	4313  BCM4310 Ethernet Controller
-	4315  BCM4312 802.11b/g
-		1028 000b  Wireless 1395 WLAN Mini-Card
-		1028 000c  Wireless 1397 WLAN Mini-Card
-		103c 137c  BCM4312 802.11b/g Wireless LAN Controller
-		103c 137d  BCM4312 802.11b/g Wireless LAN Controller
-	4318  BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller
-		1028 0005  Wireless 1370 WLAN Mini-PCI Card
-		1028 0006  Wireless 1370 WLAN PC Card
-		103c 1355  Broadcom 802.11b/g WLAN
-		103c 1356  Broadcom 802.11b/g WLAN
-		103c 1357  Broadcom 802.11b/g WLAN
-		1043 120f  A6U notebook embedded card
-		1154 0355  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter
-		1468 0311  Aspire 3022WLMi, 5024WLMi, 5020
-		1468 0312  TravelMate 2410
-		14e4 0449  Gateway 7510GX
-		14e4 4318  WPC54G version 3 [Wireless-G Notebook Adapter] 802.11g Wireless Lan Controller
-		16ec 0119  U.S.Robotics Wireless MAXg PC Card
-		1737 0042  WMP54GS version 1.1 [Wireless-G PCI Adapter]  802.11g w/SpeedBooster
-		1737 0048  WPC54G-EU version 3 [Wireless-G Notebook Adapter]
-	4319  BCM4311 [AirForce 54g] 802.11a/b/g PCI Express Transceiver
-		1028 0005  Wireless 1470 Dual Band WLAN Mini-PCI Card
-		1028 0006  Wireless 1470 Dual Band WLAN PC Card
-		103c 1358  Broadcom 802.11a/b/g WLAN
-		103c 1359  Broadcom 802.11a/b/g WLAN
-		103c 135a  Broadcom 802.11a/b/g WLAN
-	4320  BCM4306 802.11b/g Wireless LAN Controller
-		1028 0001  TrueMobile 1300 WLAN Mini-PCI Card
-		1028 0002  TrueMobile 1300 WLAN PC Card
-		1028 0003  Wireless 1350 WLAN Mini-PCI Card
-		1028 0004  Wireless 1350 WLAN PC Card
-		103c 12f4  Broadcom 802.11b/g WLAN
-		103c 12f8  Broadcom 802.11b/g WLAN
-		103c 12fa  Broadcom 802.11b/g WLAN
-		103c 12fb  Broadcom 802.11b/g WLAN
-		1043 100f  WL-100G
-		1057 7025  WN825G
-		106b 004e  AirPort Extreme
-		1154 0330  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter
-		144f 7050  eMachines M6805 802.11g Built-in Wireless
-		144f 7051  Sonnet Aria Extreme PCI
-		14e4 4320  Linksys WMP54G PCI
-		1737 4320  WPC54G
-		1799 7000  F5D7000uk 54G Wireless Network Card
-		1799 7001  Belkin F5D7001 High-Speed Mode Wireless G Network Card
-		1799 7010  Belkin F5D7010 54g Wireless Network card
-		1799 7011  F5D7011 54g+ Wireless Network card
-		185f 1220  TravelMate 290E WLAN Mini-PCI Card
-	4321  BCM4306 802.11a Wireless LAN Controller
-	4322  BCM4306 UART
-	4324  BCM4309 802.11a/b/g
-		1028 0001  Truemobile 1400
-		1028 0002  TrueMobile 1400 Dual Band WLAN PC Card
-		1028 0003  Truemobile 1450 MiniPCI
-		1028 0004  Wireless 1450 Dual Band WLAN PC Card
-		103c 12f9  Broadcom 802.11a/b/g WLAN
-		103c 12fc  Broadcom 802.11a/b/g WLAN
-	4325  BCM43xG 802.11b/g
-		1414 0003  Wireless Notebook Adapter MN-720
-		1414 0004  Wireless PCI Adapter MN-730
-	4326  BCM4307 Chipcommon I/O Controller?
-# This should be the correct naming
-	4328  BCM4328 802.11a/b/g/n
-		1028 0009  Wireless 1500 Draft 802.11n WLAN Mini-Card
-		1028 000a  Wireless 1500 Draft 802.11n WLAN Mini-card
-		103c 1366  BCM4321 802.11a/b/g/n Wireless LAN Controller
-		103c 1367  BCM4321 802.11a/b/g/n Wireless LAN Controller
-		103c 1368  BCM4321 802.11a/b/g/n Wireless LAN Controller
-		103c 1369  BCM4321 802.11a/b/g/n Wireless LAN Controller
-		14e4 4328  BCM4328 802.11a/b/g/n
-	4329  BCM43XG
-	432b  BCM4322 802.11a/b/g/n Wireless LAN Controller
-		1028 000d  Wireless 1510 Wireless-N WLAN Mini-Card
-	4344  EDGE/GPRS data and 802.11b/g combo cardbus [GC89]
-	4401  BCM4401 100Base-T
-		1025 0035  TravelMate 660
-		103c 08b0  tc1100 tablet
-		1043 80a8  A7V8X motherboard
-	4402  BCM4402 Integrated 10/100BaseT
-	4403  BCM4402 V.90 56k Modem
-	4410  BCM4413 iLine32 HomePNA 2.0
-	4411  BCM4413 V.90 56k modem
-	4412  BCM4412 10/100BaseT
-	4430  BCM44xx CardBus iLine32 HomePNA 2.0
-	4432  BCM4432 CardBus 10/100BaseT
-	4610  BCM4610 Sentry5 PCI to SB Bridge
-	4611  BCM4610 Sentry5 iLine32 HomePNA 1.0
-	4612  BCM4610 Sentry5 V.90 56k Modem
-	4613  BCM4610 Sentry5 Ethernet Controller
-	4614  BCM4610 Sentry5 External Interface
-	4615  BCM4610 Sentry5 USB Controller
-	4704  BCM4704 PCI to SB Bridge
-	4705  BCM4704 Sentry5 802.11b Wireless LAN Controller
-	4706  BCM4704 Sentry5 Ethernet Controller
-	4707  BCM4704 Sentry5 USB Controller
-	4708  BCM4704 Crypto Accelerator
-	4710  BCM4710 Sentry5 PCI to SB Bridge
-	4711  BCM47xx Sentry5 iLine32 HomePNA 2.0
-	4712  BCM47xx V.92 56k modem
-	4713  Sentry5 Ethernet Controller
-	4714  BCM47xx Sentry5 External Interface
-	4715  Sentry5 USB Controller
-	4716  BCM47xx Sentry5 USB Host Controller
-	4717  BCM47xx Sentry5 USB Device Controller
-	4718  Sentry5 Crypto Accelerator
-	4719  BCM47xx/53xx RoboSwitch Core
-	4720  BCM4712 MIPS CPU
-	5365  BCM5365P Sentry5 Host Bridge
-	5600  BCM5600 StrataSwitch 24+2 Ethernet Switch Controller
-	5605  BCM5605 StrataSwitch 24+2 Ethernet Switch Controller
-	5615  BCM5615 StrataSwitch 24+2 Ethernet Switch Controller
-	5625  BCM5625 StrataSwitch 24+2 Ethernet Switch Controller
-	5645  BCM5645 StrataSwitch 24+2 Ethernet Switch Controller
-	5670  BCM5670 8-Port 10GE Ethernet Switch Fabric
-	5680  BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller
-	5690  BCM5690 12-port Multi-Layer Gigabit Ethernet Switch
-	5691  BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller
-	5692  BCM5692 12-port Multi-Layer Gigabit Ethernet Switch
-	5695  BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch
-	5698  BCM5698 12-port Multi-Layer Gigabit Ethernet Switch
-	5820  BCM5820 Crypto Accelerator
-	5821  BCM5821 Crypto Accelerator
-	5822  BCM5822 Crypto Accelerator
-	5823  BCM5823 Crypto Accelerator
-	5824  BCM5824 Crypto Accelerator
-	5840  BCM5840 Crypto Accelerator
-	5841  BCM5841 Crypto Accelerator
-	5850  BCM5850 Crypto Accelerator
-	b800  BCM56800 StrataXGS 10GE Switch Controller
-14e5  Pixelfusion Ltd
-14e6  SHINING Technology Inc
-14e7  3CX
-14e8  RAYCER Inc
-14e9  GARNETS System CO Ltd
-14ea  Planex Communications, Inc
-	ab06  FNW-3603-TX CardBus Fast Ethernet
-	ab07  RTL81xx RealTek Ethernet
-	ab08  FNW-3602-TX CardBus Fast Ethernet
-14eb  SEIKO EPSON Corp
-14ec  ACQIRIS
-14ed  DATAKINETICS Ltd
-14ee  MASPRO KENKOH Corp
-14ef  CARRY Computer ENG. CO Ltd
-14f0  CANON RESEACH CENTRE FRANCE
-14f1  Conexant
-	1002  HCF 56k Modem
-	1003  HCF 56k Modem
-	1004  HCF 56k Modem
-	1005  HCF 56k Modem
-	1006  HCF 56k Modem
-	1022  HCF 56k Modem
-	1023  HCF 56k Modem
-	1024  HCF 56k Modem
-	1025  HCF 56k Modem
-	1026  HCF 56k Modem
-	1032  HCF 56k Modem
-	1033  HCF 56k Data/Fax Modem
-		1033 8077  NEC
-		122d 4027  Dell Zeus - MDP3880-W(B) Data Fax Modem
-		122d 4030  Dell Mercury - MDP3880-U(B) Data Fax Modem
-		122d 4034  Dell Thor - MDP3880-W(U) Data Fax Modem
-		13e0 020d  Dell Copper
-		13e0 020e  Dell Silver
-		13e0 0261  IBM
-		13e0 0290  Compaq Goldwing
-		13e0 02a0  IBM
-		13e0 02b0  IBM
-		13e0 02c0  Compaq Scooter
-		13e0 02d0  IBM
-		144f 1500  IBM P85-DF (1)
-		144f 1501  IBM P85-DF (2)
-		144f 150a  IBM P85-DF (3)
-		144f 150b  IBM P85-DF Low Profile (1)
-		144f 1510  IBM P85-DF Low Profile (2)
-	1034  HCF 56k Data/Fax/Voice Modem
-	1035  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
-		10cf 1098  Fujitsu P85-DFSV
-	1036  HCF 56k Data/Fax/Voice/Spkp Modem
-		104d 8067  HCF 56k Modem
-		122d 4029  MDP3880SP-W
-		122d 4031  MDP3880SP-U
-		13e0 0209  Dell Titanium
-		13e0 020a  Dell Graphite
-		13e0 0260  Gateway Red Owl
-		13e0 0270  Gateway White Horse
-	1052  HCF 56k Data/Fax Modem (Worldwide)
-	1053  HCF 56k Data/Fax Modem (Worldwide)
-	1054  HCF 56k Data/Fax/Voice Modem (Worldwide)
-	1055  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide)
-	1056  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
-	1057  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
-	1059  HCF 56k Data/Fax/Voice Modem (Worldwide)
-	1063  HCF 56k Data/Fax Modem
-	1064  HCF 56k Data/Fax/Voice Modem
-	1065  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
-	1066  HCF 56k Data/Fax/Voice/Spkp Modem
-		122d 4033  Dell Athena - MDP3900V-U
-	1085  HCF V90 56k Data/Fax/Voice/Spkp PCI Modem
-	10b6  CX06834-11 HCF V.92 56k Data/Fax/Voice/Spkp Modem
-	1433  HCF 56k Data/Fax Modem
-	1434  HCF 56k Data/Fax/Voice Modem
-	1435  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
-	1436  HCF 56k Data/Fax Modem
-	1453  HCF 56k Data/Fax Modem
-		13e0 0240  IBM
-		13e0 0250  IBM
-		144f 1502  IBM P95-DF (1)
-		144f 1503  IBM P95-DF (2)
-	1454  HCF 56k Data/Fax/Voice Modem
-	1455  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
-	1456  HCF 56k Data/Fax/Voice/Spkp Modem
-		122d 4035  Dell Europa - MDP3900V-W
-		122d 4302  Dell MP3930V-W(C) MiniPCI
-	1610  ADSL AccessRunner PCI Arbitration Device
-	1611  AccessRunner PCI ADSL Interface Device
-	1620  AccessRunner V2 PCI ADSL Arbitration Device
-	1621  AccessRunner V2 PCI ADSL Interface Device
-	1622  AccessRunner V2 PCI ADSL Yukon WAN Adapter
-	1803  HCF 56k Modem
-		0e11 0023  623-LAN Grizzly
-		0e11 0043  623-LAN Yogi
-	1811  Conextant MiniPCI Network Adapter
-	1815  HCF 56k Modem
-		0e11 0022  Grizzly
-		0e11 0042  Yogi
-	2003  HSF 56k Data/Fax Modem
-	2004  HSF 56k Data/Fax/Voice Modem
-	2005  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
-	2006  HSF 56k Data/Fax/Voice/Spkp Modem
-	2013  HSF 56k Data/Fax Modem
-		0e11 b195  Bear
-		0e11 b196  Seminole 1
-		0e11 b1be  Seminole 2
-		1025 8013  Acer
-		1033 809d  NEC
-		1033 80bc  NEC
-		155d 6793  HP
-		155d 8850  E Machines
-	2014  HSF 56k Data/Fax/Voice Modem
-	2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
-	2016  HSF 56k Data/Fax/Voice/Spkp Modem
-	2043  HSF 56k Data/Fax Modem (WorldW SmartDAA)
-	2044  HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA)
-	2045  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA)
-		14f1 2045  Generic SoftK56
-	2046  HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA)
-	2063  HSF 56k Data/Fax Modem (SmartDAA)
-	2064  HSF 56k Data/Fax/Voice Modem (SmartDAA)
-	2065  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA)
-	2066  HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA)
-	2093  HSF 56k Modem
-		155d 2f07  Legend
-	2143  HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA)
-	2144  HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA)
-	2145  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA)
-	2146  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA)
-	2163  HSF 56k Data/Fax/Cell Modem (Mob SmartDAA)
-	2164  HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA)
-	2165  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA)
-	2166  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA)
-	2343  HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA)
-	2344  HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA)
-	2345  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA)
-	2346  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA)
-	2363  HSF 56k Data/Fax CardBus Modem (Mob SmartDAA)
-	2364  HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA)
-	2365  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA)
-	2366  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA)
-	2443  HSF 56k Data/Fax Modem (Mob WorldW SmartDAA)
-		104d 8075  Modem
-		104d 8083  Modem
-		104d 8097  Modem
-	2444  HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA)
-	2445  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA)
-	2446  HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA)
-	2463  HSF 56k Data/Fax Modem (Mob SmartDAA)
-	2464  HSF 56k Data/Fax/Voice Modem (Mob SmartDAA)
-	2465  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA)
-	2466  HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA)
-	2bfa  HDAudio Soft Data Fax Modem with SmartCP
-		1025 0009  Aspire 5622WLMi
-	2f00  HSF 56k HSFi Modem
-		13e0 8d84  IBM HSFi V.90
-		13e0 8d85  Compaq Stinger
-		14f1 2004  Dynalink 56PMi
-	2f02  HSF 56k HSFi Data/Fax
-	2f11  HSF 56k HSFi Modem
-	2f20  HSF 56k Data/Fax Modem
-	2f30  HSF 56k Data/Fax Modem
-	5045  CX20549 (Venice)
-	5047  High Definition Audio [Waikiki]
-	5b7a  CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder
-	8234  RS8234 ATM SAR Controller [ServiceSAR Plus]
-	8800  CX23880/1/2/3 PCI Video and Audio Decoder
-		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models
-		0070 3401  Hauppauge WinTV 34xxx models
-		0070 9001  Nova-T DVB-T
-		0070 9200  Nova-SE2 DVB-S
-		0070 9202  Nova-S-Plus DVB-S
-		0070 9402  WinTV-HVR1100 DVB-T/Hybrid
-		0070 9802  WinTV-HVR1100 DVB-T/Hybrid (Low Profile)
-		1002 00f8  ATI TV Wonder Pro
-		1002 a101  HDTV Wonder
-		1043 4823  ASUS PVR-416
-		107d 6613  Leadtek Winfast 2000XP Expert
-		107d 6620  Leadtek Winfast DV2000
-		107d 663c  Leadtek PVR 2000
-		107d 665f  WinFast DTV1000-T
-		10fc d003  IODATA GV-VCP3/PCI
-		10fc d035  IODATA GV/BCTV7E
-		1421 0334  Instant TV DVB-T PCI
-		1461 000a  AVerTV 303 (M126)
-		1461 000b  AverTV Studio 303 (M126)
-		1461 8011  UltraTV Media Center PCI 550
-		1462 8606  MSI TV-@nywhere Master
-		14c7 0107  GDI Black Gold
-		14f1 0187  Conexant DVB-T reference design
-		14f1 0342  Digital-Logic MICROSPACE Entertainment Center (MEC)
-		153b 1166  Cinergy 1400 DVB-T
-		1540 2580  Provideo PV259
-		1554 4811  PixelView
-		1554 4813  Club 3D  ZAP1000 MCE Edition
-		17de 08a1  KWorld/VStream XPert DVB-T with cx22702
-		17de 08a6  KWorld/VStream XPert DVB-T
-		17de 08b2  KWorld DVB-S 100
-		17de a8a6  digitalnow DNTV Live! DVB-T
-		1822 0025  digitalnow DNTV Live! DVB-T Pro
-		18ac d500  FusionHDTV 5 Gold
-		18ac d810  FusionHDTV 3 Gold-Q
-		18ac d820  FusionHDTV 3 Gold-T
-		18ac db00  FusionHDTV DVB-T1
-		18ac db11  FusionHDTV DVB-T Plus
-		18ac db50  FusionHDTV DVB-T Dual Digital
-		7063 3000  pcHDTV HD3000 HDTV
-		7063 5500  pcHDTV HD-5500
-	8801  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]
-		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models
-		7063 5500  pcHDTV HD-5500
-	8802  CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port]
-		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models
-		0070 9002  Nova-T DVB-T Model 909
-		1043 4823  ASUS PVR-416
-		107d 663c  Leadtek PVR 2000
-		107d 665f  WinFast DTV1000-T
-		14f1 0187  Conexant DVB-T reference design
-		17de 08a1  XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture
-		17de 08a6  KWorld/VStream XPert DVB-T
-		18ac d500  DViCO FusionHDTV5 Gold
-		18ac d810  DViCO FusionHDTV3 Gold-Q
-		18ac d820  DViCO FusionHDTV3 Gold-T
-		18ac db00  DVICO FusionHDTV DVB-T1
-		18ac db10  DVICO FusionHDTV DVB-T Plus
-		7063 3000  pcHDTV HD3000 HDTV
-		7063 5500  pcHDTV HD-5500
-	8804  CX23880/1/2/3 PCI Video and Audio Decoder [IR Port]
-		0070 9002  Nova-T DVB-T Model 909
-		7063 5500  pcHDTV HD-5500
-	8811  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]
-		0070 3401  Hauppauge WinTV 34xxx models
-		1462 8606  MSI TV-@nywhere Master
-		18ac d500  DViCO FusionHDTV5 Gold
-		18ac d810  DViCO FusionHDTV3 Gold-Q
-		18ac d820  DViCO FusionHDTV3 Gold-T
-		18ac db00  DVICO FusionHDTV DVB-T1
-14f2  MOBILITY Electronics
-	0120  EV1000 bridge
-	0121  EV1000 Parallel port
-	0122  EV1000 Serial port
-	0123  EV1000 Keyboard controller
-	0124  EV1000 Mouse controller
-14f3  BroadLogic
-	2030  2030 DVB-S Satellite Reciever
-	2050  2050 DVB-T Terrestrial (Cable) Reciever
-	2060  2060 ATSC Terrestrial (Cable) Reciever
-14f4  TOKYO Electronic Industry CO Ltd
-14f5  SOPAC Ltd
-14f6  COYOTE Technologies LLC
-14f7  WOLF Technology Inc
-14f8  AUDIOCODES Inc
-	2077  TP-240 dual span E1 VoIP PCI card
-14f9  AG COMMUNICATIONS
-14fa  WANDEL & GOLTERMANN
-14fb  TRANSAS MARINE (UK) Ltd
-14fc  Quadrics Ltd
-	0000  QsNet Elan3 Network Adapter
-	0001  QsNetII Elan4 Network Adapter
-	0002  QsNetIII Elan5 Network Adapter
-14fd  JAPAN Computer Industry Inc
-14fe  ARCHTEK TELECOM Corp
-14ff  TWINHEAD INTERNATIONAL Corp
-1500  DELTA Electronics, Inc
-	1360  RTL81xx RealTek Ethernet
-1501  BANKSOFT CANADA Ltd
-1502  MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd
-1503  KAWASAKI LSI USA Inc
-1504  KAISER Electronics
-1505  ITA INGENIEURBURO FUR TESTAUFGABEN GmbH
-1506  CHAMELEON Systems Inc
-# Should be HTEC Ltd, but there are no known HTEC chips and 1507 is already used by mistake by Motorola (see vendor ID 1057).
-1507  Motorola ?? / HTEC
-	0001  MPC105 [Eagle]
-	0002  MPC106 [Grackle]
-	0003  MPC8240 [Kahlua]
-	0100  MC145575 [HFC-PCI]
-	0431  KTI829c 100VG
-	4801  Raven
-	4802  Falcon
-	4803  Hawk
-	4806  CPX8216
-1508  HONDA CONNECTORS/MHOTRONICS Inc
-1509  FIRST INTERNATIONAL Computer Inc
-150a  FORVUS RESEARCH Inc
-150b  YAMASHITA Systems Corp
-150c  KYOPAL CO Ltd
-150d  WARPSPPED Inc
-150e  C-PORT Corp
-150f  INTEC GmbH
-1510  BEHAVIOR TECH Computer Corp
-1511  CENTILLIUM Technology Corp
-1512  ROSUN Technologies Inc
-1513  Raychem
-1514  TFL LAN Inc
-1515  Advent design
-1516  MYSON Technology Inc
-	0800  MTD-8xx 100/10M Ethernet PCI Adapter
-	0803  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter
-		1320 10bd  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter
-	0891  MTD-8xx 100/10M Ethernet PCI Adapter
-1517  ECHOTEK Corp
-1518  PEP MODULAR Computers GmbH
-1519  TELEFON AKTIEBOLAGET LM Ericsson
-151a  Globetek
-	1002  PCI-1002
-	1004  PCI-1004
-	1008  PCI-1008
-151b  COMBOX Ltd
-151c  DIGITAL AUDIO LABS Inc
-	0003  Prodif T 2496
-	4000  Prodif 88
-151d  Fujitsu Computer Products Of America
-151e  MATRIX Corp
-151f  TOPIC SEMICONDUCTOR Corp
-	0000  TP560 Data/Fax/Voice 56k modem
-1520  CHAPLET System Inc
-1521  BELL Corp
-1522  MainPine Ltd
-	0100  PCI <-> IOBus Bridge
-		1522 0200  RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem
-		1522 0300  RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem
-		1522 0400  RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem
-		1522 0500  RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem
-		1522 0600  RockForce+ 2 Port V.90 Data/Fax/Voice Modem
-		1522 0700  RockForce+ 4 Port V.90 Data/Fax/Voice Modem
-		1522 0800  RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem
-		1522 0c00  RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem
-		1522 0d00  RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem
-		1522 1d00  RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem
-		1522 2000  RockForceD1 1 Port V.90 Data Modem
-		1522 2100  RockForceF1 1 Port V.34 Super-G3 Fax Modem
-		1522 2200  RockForceD2 2 Port V.90 Data Modem
-		1522 2300  RockForceF2 2 Port V.34 Super-G3 Fax Modem
-		1522 2400  RockForceD4 4 Port V.90 Data Modem
-		1522 2500  RockForceF4 4 Port V.34 Super-G3 Fax Modem
-		1522 2600  RockForceD8 8 Port V.90 Data Modem
-		1522 2700  RockForceF8 8 Port V.34 Super-G3 Fax Modem
-		1522 3000  IQ Express D1 - 1 Port V.92 Data Modem
-		1522 3100  IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem
-		1522 3200  IQ Express D2 - 2 Port V.92 Data Modem
-		1522 3300  IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem
-		1522 3400  IQ Express D4 - 4 Port V.92 Data Modem
-		1522 3500  IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem
-		1522 3c00  IQ Express D8 - 8 Port V.92 Data Modem
-		1522 3d00  IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem
-1523  MUSIC Semiconductors
-1524  ENE Technology Inc
-	0510  CB710 Memory Card Reader Controller
-		103c 006a  NX9500
-	0520  FLASH memory: ENE Technology Inc:
-	0530  ENE PCI Memory Stick Card Reader Controller
-	0550  ENE PCI Secure Digital Card Reader Controller
-	0551  SD/MMC Card Reader Controller
-	0610  PCI Smart Card Reader Controller
-	0730  ENE PCI Memory Stick Card Reader Controller
-	0750  ENE PCI SmartMedia / xD Card Reader Controller
-	0751  ENE PCI Secure Digital / MMC Card Reader Controller
-	1211  CB1211 Cardbus Controller
-	1225  CB1225 Cardbus Controller
-	1410  CB1410 Cardbus Controller
-		1025 003c  CL50 motherboard
-		1025 005a  TravelMate 290
-	1411  CB-710/2/4 Cardbus Controller
-		103c 006a  NX9500
-	1412  CB-712/4 Cardbus Controller
-	1420  CB1420 Cardbus Controller
-	1421  CB-720/2/4 Cardbus Controller
-	1422  CB-722/4 Cardbus Controller
-1525  IMPACT Technologies
-1526  ISS, Inc
-1527  SOLECTRON
-1528  ACKSYS
-1529  AMERICAN MICROSystems Inc
-152a  QUICKTURN DESIGN Systems
-152b  FLYTECH Technology CO Ltd
-152c  MACRAIGOR Systems LLC
-152d  QUANTA Computer Inc
-152e  MELEC Inc
-152f  PHILIPS - CRYPTO
-1530  ACQIS Technology Inc
-1531  CHRYON Corp
-1532  ECHELON Corp
-	0020  LonWorks PCLTA-20 PCI LonTalk Adapter
-1533  BALTIMORE
-1534  ROAD Corp
-1535  EVERGREEN Technologies Inc
-1536  ACTIS Computer
-1537  DATALEX COMMUNCATIONS
-1538  ARALION Inc
-	0303  ARS106S Ultra ATA 133/100/66 Host Controller
-1539  ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A.
-153a  ONO SOKKI
-153b  TERRATEC Electronic GmbH
-	1144  Aureon 5.1
-# Terratec seems to use several IDs for the same card.
-	1147  Aureon 5.1 Sky
-	1158  Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV]
-153c  ANTAL Electronic
-153d  FILANET Corp
-153e  TECHWELL Inc
-153f  MIPS Technologies, Inc.
-	0001  SOC-it 101 System Controller
-1540  PROVIDEO MULTIMEDIA Co Ltd
-1541  MACHONE Communications
-1542  Concurrent Computer Corporation
-	9260  RCIM-II Real-Time Clock & Interrupt Module
-1543  SILICON Laboratories
-	3052  Intel 537 [Winmodem]
-	4c22  Si3036 MC'97 DAA
-1544  DCM DATA Systems
-1545  VISIONTEK
-1546  IOI Technology Corp
-1547  MITUTOYO Corp
-1548  JET PROPULSION Laboratory
-1549  INTERCONNECT Systems Solutions
-154a  MAX Technologies Inc
-154b  COMPUTEX Co Ltd
-154c  VISUAL Technology Inc
-154d  PAN INTERNATIONAL Industrial Corp
-154e  SERVOTEST Ltd
-154f  STRATABEAM Technology
-1550  OPEN NETWORK Co Ltd
-1551  SMART Electronic DEVELOPMENT GmBH
-1552  RACAL AIRTECH Ltd
-1553  CHICONY Electronics Co Ltd
-1554  PROLINK Microsystems Corp
-1555  GESYTEC GmBH
-1556  PLD APPLICATIONS
-1557  MEDIASTAR Co Ltd
-1558  CLEVO/KAPOK Computer
-1559  SI LOGIC Ltd
-155a  INNOMEDIA Inc
-155b  PROTAC INTERNATIONAL Corp
-155c  Cemax-Icon Inc
-155d  Mac System Co Ltd
-155e  LP Elektronik GmbH
-155f  Perle Systems Ltd
-1560  Terayon Communications Systems
-1561  Viewgraphics Inc
-1562  Symbol Technologies
-1563  A-Trend Technology Co Ltd
-1564  Yamakatsu Electronics Industry Co Ltd
-1565  Biostar Microtech Int'l Corp
-1566  Ardent Technologies Inc
-1567  Jungsoft
-1568  DDK Electronics Inc
-1569  Palit Microsystems Inc.
-156a  Avtec Systems
-156b  2wire Inc
-156c  Vidac Electronics GmbH
-156d  Alpha-Top Corp
-156e  Alfa Inc
-156f  M-Systems Flash Disk Pioneers Ltd
-1570  Lecroy Corp
-1571  Contemporary Controls
-	a001  CCSI PCI20-485 ARCnet
-	a002  CCSI PCI20-485D ARCnet
-	a003  CCSI PCI20-485X ARCnet
-	a004  CCSI PCI20-CXB ARCnet
-	a005  CCSI PCI20-CXS ARCnet
-	a006  CCSI PCI20-FOG-SMA ARCnet
-	a007  CCSI PCI20-FOG-ST ARCnet
-	a008  CCSI PCI20-TB5 ARCnet
-	a009  CCSI PCI20-5-485 5Mbit ARCnet
-	a00a  CCSI PCI20-5-485D 5Mbit ARCnet
-	a00b  CCSI PCI20-5-485X 5Mbit ARCnet
-	a00c  CCSI PCI20-5-FOG-ST 5Mbit ARCnet
-	a00d  CCSI PCI20-5-FOG-SMA 5Mbit ARCnet
-	a201  CCSI PCI22-485 10Mbit ARCnet
-	a202  CCSI PCI22-485D 10Mbit ARCnet
-	a203  CCSI PCI22-485X 10Mbit ARCnet
-	a204  CCSI PCI22-CHB 10Mbit ARCnet
-	a205  CCSI PCI22-FOG_ST 10Mbit ARCnet
-	a206  CCSI PCI22-THB 10Mbit ARCnet
-1572  Otis Elevator Company
-1573  Lattice - Vantis
-1574  Fairchild Semiconductor
-1575  Voltaire Advanced Data Security Ltd
-1576  Viewcast COM
-1578  HITT
-	5615  VPMK3 [Video Processor Mk III]
-1579  Dual Technology Corp
-157a  Japan Elecronics Ind Inc
-157b  Star Multimedia Corp
-157c  Eurosoft (UK)
-	8001  Fix2000 PCI Y2K Compliance Card
-157d  Gemflex Networks
-157e  Transition Networks
-157f  PX Instruments Technology Ltd
-1580  Primex Aerospace Co
-1581  SEH Computertechnik GmbH
-1582  Cytec Corp
-1583  Inet Technologies Inc
-1584  Uniwill Computer Corp
-1585  Logitron
-1586  Lancast Inc
-1587  Konica Corp
-1588  Solidum Systems Corp
-1589  Atlantek Microsystems Pty Ltd
-158a  Digalog Systems Inc
-158b  Allied Data Technologies
-158c  Hitachi Semiconductor & Devices Sales Co Ltd
-158d  Point Multimedia Systems
-158e  Lara Technology Inc
-158f  Ditect Coop
-1590  3pardata Inc
-	0001  Eagle Cluster Manager
-	0002  Osprey Cluster Manager
-	a01d  FC044X Fibre Channel HBA
-1591  ARN
-1592  Syba Tech Ltd
-	0781  Multi-IO Card
-	0782  Parallel Port Card 2xEPP
-	0783  Multi-IO Card
-	0785  Multi-IO Card
-	0786  Multi-IO Card
-	0787  Multi-IO Card
-	0788  Multi-IO Card
-	078a  Multi-IO Card
-1593  Bops Inc
-1594  Netgame Ltd
-1595  Diva Systems Corp
-1596  Folsom Research Inc
-1597  Memec Design Services
-1598  Granite Microsystems
-1599  Delta Electronics Inc
-159a  General Instrument
-159b  Faraday Technology Corp
-159c  Stratus Computer Systems
-159d  Ningbo Harrison Electronics Co Ltd
-159e  A-Max Technology Co Ltd
-159f  Galea Network Security
-15a0  Compumaster SRL
-15a1  Geocast Network Systems
-15a2  Catalyst Enterprises Inc
-	0001  TA700 PCI Bus Analyzer/Exerciser
-15a3  Italtel
-15a4  X-Net OY
-15a5  Toyota Macs Inc
-15a6  Sunlight Ultrasound Technologies Ltd
-15a7  SSE Telecom Inc
-15a8  Shanghai Communications Technologies Center
-15aa  Moreton Bay
-15ab  Bluesteel Networks Inc
-15ac  North Atlantic Instruments
-15ad  VMware Inc
-	0405  Abstract SVGA II Adapter
-	0710  Abstract SVGA Adapter
-	0720  Abstract Ethernet Controller
-	0740  Virtual Machine Communication Interface
-	0770  Abstract USB2 EHCI Controller
-	0801  Virtual Machine Interface
-		15ad 0800  Hypervisor ROM Interface
-15ae  Amersham Pharmacia Biotech
-15b0  Zoltrix International Ltd
-15b1  Source Technology Inc
-15b2  Mosaid Technologies Inc
-15b3  Mellanox Technologies
-	0191  MT25408 [ConnectX IB SDR Flash Recovery]
-	5274  MT21108 InfiniBridge
-	5a44  MT23108 InfiniHost
-	5a45  MT23108 [Infinihost HCA Flash Recovery]
-	5a46  MT23108 PCI Bridge
-	5e8d  MT25204 [InfiniHost III Lx HCA Flash Recovery]
-	6274  MT25204 [InfiniHost III Lx HCA]
-	6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)
-	6279  MT25208 [InfiniHost III Ex HCA Flash Recovery]
-	6282  MT25208 InfiniHost III Ex
-	6340  MT25408 [ConnectX IB SDR]
-	634a  MT25418 [ConnectX IB DDR, PCIe 2.0 2.5GT/s]
-	6354  MT25428 [ConnectX IB QDR]
-	6368  MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s]
-	6732  MT26418 [ConnectX IB DDR, PCIe 2.0 5GT/s]
-	673c  MT26428 [ConnectX IB QDR, PCIe 2.0 5GT/s]
-	6750  MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
-15b4  CCI/TRIAD
-15b5  Cimetrics Inc
-15b6  Texas Memory Systems Inc
-15b7  Sandisk Corp
-15b8  ADDI-DATA GmbH
-	1003  APCI1032 SP controller (32 digi inputs w/ opto coupler)
-	1005  APCI2200 SP controller (8/16 digi outputs (relay))
-	100a  APCI1696 SP controller (96 TTL I/Os)
-	3001  APCI3501 SP controller (analog output board)
-15b9  Maestro Digital Communications
-15ba  Impacct Technology Corp
-15bb  Portwell Inc
-15bc  Agilent Technologies
-	1100  E8001-66442 PCI Express CIC
-	2922  64 Bit, 133MHz PCI-X Exerciser & Protocol Checker
-	2928  64 Bit, 66MHz PCI Exerciser & Analyzer
-	2929  64 Bit, 133MHz PCI-X Analyzer & Exerciser
-15bd  DFI Inc
-15be  Sola Electronics
-15bf  High Tech Computer Corp (HTC)
-15c0  BVM Ltd
-15c1  Quantel
-15c2  Newer Technology Inc
-15c3  Taiwan Mycomp Co Ltd
-15c4  EVSX Inc
-15c5  Procomp Informatics Ltd
-	8010  1394b - 1394 Firewire 3-Port Host Adapter Card
-15c6  Technical University of Budapest
-15c7  Tateyama System Laboratory Co Ltd
-	0349  Tateyama C-PCI PLC/NC card Rev.01A
-15c8  Penta Media Co Ltd
-15c9  Serome Technology Inc
-15ca  Bitboys OY
-15cb  AG Electronics Ltd
-15cc  Hotrail Inc
-15cd  Dreamtech Co Ltd
-15ce  Genrad Inc
-15cf  Hilscher GmbH
-15d1  Infineon Technologies AG
-15d2  FIC (First International Computer Inc)
-15d3  NDS Technologies Israel Ltd
-15d4  Iwill Corp
-15d5  Tatung Co
-15d6  Entridia Corp
-15d7  Rockwell-Collins Inc
-15d8  Cybernetics Technology Co Ltd
-15d9  Super Micro Computer Inc
-15da  Cyberfirm Inc
-15db  Applied Computing Systems Inc
-15dc  Litronic Inc
-	0001  Argus 300 PCI Cryptography Module
-15dd  Sigmatel Inc
-15de  Malleable Technologies Inc
-15df  Infinilink Corp
-15e0  Cacheflow Inc
-15e1  Voice Technologies Group Inc
-15e2  Quicknet Technologies Inc
-	0500  PhoneJack-PCI
-15e3  Networth Technologies Inc
-15e4  VSN Systemen BV
-15e5  Valley technologies Inc
-15e6  Agere Inc
-15e7  Get Engineering Corp
-15e8  National Datacomm Corp
-	0130  Wireless PCI Card
-	0131  NCP130A2 Wireless NIC
-15e9  Pacific Digital Corp
-	1841  ADMA-100 DiscStaQ ATA Controller
-15ea  Tokyo Denshi Sekei K.K.
-15eb  Drsearch GmbH
-15ec  Beckhoff GmbH
-	3101  FC3101 Profibus DP 1 Channel PCI
-	5102  FC5102
-15ed  Macrolink Inc
-15ee  In Win Development Inc
-15ef  Intelligent Paradigm Inc
-15f0  B-Tree Systems Inc
-15f1  Times N Systems Inc
-15f2  Diagnostic Instruments Inc
-15f3  Digitmedia Corp
-15f4  Valuesoft
-15f5  Power Micro Research
-15f6  Extreme Packet Device Inc
-15f7  Banctec
-15f8  Koga Electronics Co
-15f9  Zenith Electronics Corp
-15fa  J.P. Axzam Corp
-15fb  Zilog Inc
-15fc  Techsan Electronics Co Ltd
-15fd  N-CUBED.NET
-15fe  Kinpo Electronics Inc
-15ff  Fastpoint Technologies Inc
-1600  Northrop Grumman - Canada Ltd
-1601  Tenta Technology
-1602  Prosys-tec Inc
-1603  Nokia Wireless Communications
-1604  Central System Research Co Ltd
-1605  Pairgain Technologies
-1606  Europop AG
-1607  Lava Semiconductor Manufacturing Inc
-1608  Automated Wagering International
-1609  Scimetric Instruments Inc
-1612  Telesynergy Research Inc.
-1619  FarSite Communications Ltd
-	0400  FarSync T2P (2 port X.21/V.35/V.24)
-	0440  FarSync T4P (4 port X.21/V.35/V.24)
-	0610  FarSync T1U (1 port X.21/V.35/V.24)
-	0620  FarSync T2U (2 port X.21/V.35/V.24)
-	0640  FarSync T4U (4 port X.21/V.35/V.24)
-	1610  FarSync TE1 (T1,E1)
-	2610  FarSync DSL-S1 (SHDSL)
-161f  Rioworks
-1626  TDK Semiconductor Corp.
-	8410  RTL81xx Fast Ethernet
-1629  Kongsberg Spacetec AS
-	1003  Format synchronizer v3.0
-	1006  Format synchronizer, model 10500
-	1007  Format synchronizer, model 21000
-	2002  Fast Universal Data Output
-# This seems to occur on their 802.11b Wireless card WMP-11
-1637  Linksys
-	3874  Linksys 802.11b WMP11 PCI Wireless card
-1638  Standard Microsystems Corp [SMC]
-	1100  SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000
-163c  Smart Link Ltd.
-	3052  SmartLink SmartPCI562 56K Modem
-	5449  SmartPCI561 Modem
-1657  Brocade Communications Systems, Inc.
-# Same Device_ID used for 410 (1port) and 420 (2 port) HBAs.
-	0646  Brocade 400 4Gb PCIe FC HBA
-165a  Epix Inc
-	c100  PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232]
-	d200  PIXCI(R) D2X Digital Video Capture Board [custom QL5232]
-	d300  PIXCI(R) D3X Digital Video Capture Board [custom QL5232]
-165d  Hsing Tech. Enterprise Co., Ltd.
-165f  Linux Media Labs, LLC
-	1020  LMLM4 MPEG-4 encoder
-1661  Worldspace Corp.
-1668  Actiontec Electronics Inc
-	0100  Mini-PCI bridge
-# Formerly SiByte, Inc.
-166d  Broadcom Corporation
-	0001  SiByte BCM1125/1125H/1250 System-on-a-Chip PCI
-	0002  SiByte BCM1125H/1250 System-on-a-Chip HyperTransport
-1677  Bernecker + Rainer
-	104e  5LS172.6 B&R Dual CAN Interface Card
-	12d7  5LS172.61 B&R Dual CAN Interface Card
-	20ad  5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM
-1678  NetEffect
-	0100  NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC)
-1679  Tokyo Electron Device Ltd.
-167b  ZyDAS Technology Corp.
-	2102  ZyDAS ZD1202
-		187e 3406  ZyAIR B-122 CardBus 11Mbs Wireless LAN Card
-167d  Samsung Electro-Mechanics Co., Ltd.
-	a000  IPW2200 miniPCI Wireless
-1681  Hercules
-	0010  Hercules 3d Prophet II Ultra 64MB (350 MHz NV15BR core)
-1682  XFX Pine Group Inc.
-1688  CastleNet Technology Inc.
-	1170  WLAN 802.11b card
-168c  Atheros Communications Inc.
-	0007  AR5000 802.11a Wireless Adapter
-	0011  AR5210 802.11a NIC
-	0012  AR5211 802.11ab NIC
-	0013  AR5212/AR5213 Multiprotocol MAC/baseband processor
-		1113 d301  Philips CPWNA100 Wireless CardBus adapter
-		1186 3202  D-link DWL-G650 (Rev B3,B5) Wireless cardbus adapter
-		1186 3203  DWL-G520 Wireless PCI Adapter
-		1186 3a12  D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)
-		1186 3a13  D-Link AirPlus DWL-G520 Wireless PCI Adapter(rev.B)
-		1186 3a14  D-Link AirPremier DWL-AG530 Wireless PCI Adapter
-		1186 3a17  D-Link AirPremier DWL-G680 Wireless Cardbus Adapter
-		1186 3a18  D-Link AirPremier DWL-G550 Wireless PCI Adapter
-		1186 3a63  D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter
-		1186 3a93  Conceptronic C54I Wireless 801.11g PCI card
-		1186 3a94  C54C Wireless 801.11g cardbus
-		1186 3ab0  Allnet ALL0281 Wireless PCI Card
-		1385 4d00  Netgear WG311T Wireless PCI Adapter
-		1458 e911  Gigabyte GN-WIAG02
-		1468 0408  ThinkPad 11b/g Wireless LAN Mini PCI Adapter
-		14b7 0a60  8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter
-		1668 1026  IBM HighRate 11 a/b/g Wireless CardBus Adapter
-		168c 0013  AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter
-		168c 1025  DWL-G650B2 Wireless CardBus Adapter
-		168c 1027  Engenius NL-3054CB ARIES b/g CardBus Adapter
-		168c 1042  Ubiquiti Networks SuperRange a/b/g Cardbus Adapter
-		168c 1051  EZ Connect g 802.11g 108Mbps Wireless PCI Adapter
-		168c 2026  Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter
-		168c 2041  Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter
-		168c 2042  Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter
-		168c 2051  TRENDnet TEW-443PI Wireless PCI Adapter
-		16ab 7302  Trust Speedshare Turbo Pro Wireless PCI Adapter
-		17cf 0042  Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter
-		185f 1012  CM9 Wireless a/b/g MiniPCI Adapter
-		185f 2012  Wistron NeWeb WLAN a+b+g model CB9
-# the name AR5005G is used for the reference design using AR2413
-	001a  AR2413 802.11bg NIC
-		1052 168c  Sweex Wireless Lan PC Card 54Mbps
-		1113 ee20  SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU)
-		1113 ee24  SMC Wireless PCI Card WPCI-G
-		1186 3a15  D-Link AirPlus G DWL-G630 Wireless Cardbus Adapter(rev.D)
-		1186 3a16  D-Link AirPlus G DWL-G510 Wireless PCI Adapter(rev.B)
-		1186 3a23  D-Link AirPlus G DWL-G520+A Wireless PCI Adapter
-		1186 3a24  D-Link AirPlus G DWL-G650+A Wireless Cardbus Adapter
-		1186 3b08  AirPlus G DWL-G630
-		168c 001a  Belkin FD7000
-		168c 1052  TP-Link TL-WN510G Wireless CardBus Adapter
-		168c 2052  Compex Wireless 802.11 b/g  MiniPCI Adapter, Rev A1 [WLM54G]
-# the name AR5006X is used for the reference design using AR5413
-	001b  AR5413 802.11abg NIC
-		1186 3a19  D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter
-		1186 3a22  D-Link AirPremier AG DWL-AG530 Wireless PCI Adapter
-		1458 e901  GN-WI01HT Wireless a/b/g MiniPCI Adapter
-		168c 001b  Wireless LAN PCI LiteOn
-		168c 2062  EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG)
-		168c 2063  EnGenius EMP-8602 (400mw) or Compex WLM54AG
-		185f 1600  DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW)
-		a727 6804  Wireless 11a/b/g PC Card with XJACK(r) Antenna
-# the names AR5006* are for AR242{3,4} designs and the names AR5007* are for AR2425 designs
-	001c  AR242x 802.11abg Wireless PCI Express Adapter
-		168c 3061  AR5006EGS 802.11bg NIC (2.4GHz, PCI Express)
-		168c 3062  AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express)
-		168c 3063  AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express)
-		168c 3065  AR5006EG 802.11bg NIC (2.4GHz, PCI Express)
-# the name AR5005VL is used for some AR5513 based designs
-	0020  AR5513 802.11abg Wireless NIC
-	0023  AR5416 802.11abgn Wireless PCI Adapter
-	0024  AR5418 802.11abgn Wireless PCI Express Adapter
-	1014  AR5212 802.11abg NIC
-		1014 058a  ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6)
-	3b08  D-Link AirPlus G DWL-G630
-1695  EPoX Computer Co., Ltd.
-169c  Netcell Corporation
-	0044  Revolution Storage Processing Card
-# The right ID is 196d, but they got it nibble-swapped in 2202.
-169d  Club-3D VB (Wrong ID)
-	3306  ZAP TV 2202
-16a5  Tekram Technology Co.,Ltd.
-16ab  Global Sun Technology Inc
-	1100  GL24110P
-	1101  PLX9052 PCMCIA-to-PCI Wireless LAN
-	1102  PCMCIA-to-PCI Wireless Network Bridge
-	8501  WL-8305 Wireless LAN PCI Adapter
-16ae  SafeNet Inc
-	0001  SafeXcel 1140
-	000a  SafeXcel 1841
-	1141  SafeXcel 1141
-	1841  SafeXcel 1842
-16af  SparkLAN Communications, Inc.
-16b4  Aspex Semiconductor Ltd
-16b8  Sonnet Technologies, Inc.
-16be  Creatix Polymedia GmbH
-16c6  Micrel-Kendin
-	8695  Centaur KS8695 ARM processor
-	8842  KSZ8842-PMQL 2-Port Ethernet Switch
-16c8  Octasic Inc.
-16c9  EONIC B.V. The Netherlands
-16ca  CENATEK Inc
-	0001  Rocket Drive DL
-16cd  Densitron Technologies
-16ce  Roland Corp.
-16d5  Acromag, Inc.
-	0504  PMC-DX504 Reconfigurable FPGA with LVDS I/O
-	0520  PMC520 Serial Communication, 232 Octal
-	0521  PMC521 Serial Communication, 422/485 Octal
-	1020  PMC-AX1020 Reconfigurable FPGA with A/D & D/A
-	1065  PMC-AX1065 Reconfigurable FPGA with A/D & D/A
-	2004  PMC-DX2004 Reconfigurable FPGA with LVDS I/O
-	2020  PMC-AX2020 Reconfigurable FPGA with A/D & D/A
-	2065  PMC-AX2065 Reconfigurable FPGA with A/D & D/A
-	3020  PMC-AX3020 Reconfigurable FPGA with A/D & D/A
-	3065  PMC-AX3065 Reconfigurable FPGA with A/D & D/A
-	4243  PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module
-	4248  PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module
-	424b  PMC-DX2002 Reconfigurable FPGA with Differential I/O
-	4253  PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O
-	4312  PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O
-	4313  PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O
-	4322  PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O
-	4323  PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O
-	4350  PMC-DX501 Reconfigurable Digital I/O Module
-	4353  PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O
-	4357  PMC-DX502 Reconfigurable Differential I/O Module
-	4457  PMC730, APC730, AcPC730 Multifunction Module
-	464d  PMC408 32-Channel Digital Input/Output Module
-	4850  PMC220-16 12-Bit Analog Output Module
-	4a42  PMC483, APC483, AcPC483 Counter Timer Module
-	4a50  PMC484, APC484, AcPC484 Counter Timer Module
-	4a56  PMC230 16-Bit Analog Output Module
-	4b47  PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D
-	4c40  PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O
-	4c60  PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O
-	4d4d  PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold
-	4d4e  PMC482, APC482, AcPC482 Counter Timer Board
-	524d  PMC-DX2001 Reconfigurable FPGA with TTL I/O
-	5335  PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O
-	5456  PMC470 48-Channel Digital Input/Output Module
-16da  Advantech Co., Ltd.
-16df  PIKA Technologies Inc.
-16e3  European Space Agency
-	1e0f  LEON2FT Processor
-16e5  Intellon Corp.
-	6000  INT6000 Ethernet-to-Powerline Bridge [HomePlug AV]
-	6300  INT6300 Ethernet-to-Powerline Bridge [HomePlug AV]
-16ec  U.S. Robotics
-	00ff  USR997900 10/100 Mbps PCI Network Card
-	0116  USR997902 10/100/1000 Mbps PCI Network Card
-	2f00  USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem
-	3685  Wireless Access PCI Adapter Model 022415
-16ed  Sycron N. V.
-	1001  UMIO communication card
-16f3  Jetway Information Co., Ltd.
-16f4  Vweb Corp
-	8000  VW2010
-16f6  VideoTele.com, Inc.
-1702  Internet Machines Corporation (IMC)
-1705  Digital First, Inc.
-170b  NetOctave
-	0100  NSP2000-SSL crypto accelerator
-170c  YottaYotta Inc.
-1719  EZChip Technologies
-# Seems to be a 2nd ID for Vitesse Semiconductor
-1725  Vitesse Semiconductor
-	7174  VSC7174 PCI/PCI-X Serial ATA Host Bus Controller
-172a  Accelerated Encryption
-	13c8  AEP SureWare Runner 1000V3
-1734  Fujitsu Siemens Computers
-	1078  Amilo Pro v2010
-	1085  Celsius M450
-	1098  Amilo L 1310G
-1737  Linksys
-	0013  WMP54G Wireless Pci Card
-	0015  WMP54GS Wireless Pci Card
-	0029  WPG54G ver. 4 PCI Card
-	1032  Gigabit Network Adapter
-		1737 0015  EG1032 v2 Instant Gigabit Network Adapter
-		1737 0024  EG1032 v3 Instant Gigabit Network Adapter
-	1064  Gigabit Network Adapter
-		1737 0016  EG1064 v2 Instant Gigabit Network Adapter
-	ab08  21x4x DEC-Tulip compatible 10/100 Ethernet
-	ab09  21x4x DEC-Tulip compatible 10/100 Ethernet
-173b  Altima (nee Broadcom)
-	03e8  AC1000 Gigabit Ethernet
-	03e9  AC1001 Gigabit Ethernet
-	03ea  AC9100 Gigabit Ethernet
-		173b 0001  AC1002
-	03eb  AC1003 Gigabit Ethernet
-1743  Peppercon AG
-	8139  ROL/F-100 Fast Ethernet Adapter with ROL
-1745  ViXS Systems, Inc.
-1749  RLX Technologies
-174b  PC Partner Limited
-174d  WellX Telecom SA
-175c  AudioScience Inc
-175e  Sanera Systems, Inc.
-1760  TEDIA spol. s r. o.
-1775  SBS Technologies
-177d  Cavium Networks
-	0001  Nitrox XL
-1787  Hightech Information System Ltd.
-# also used by Struck Innovative Systeme for joint developments
-1796  Research Centre Juelich
-	0001  SIS1100 [Gigabit link]
-	0002  HOTlink
-	0003  Counter Timer
-	0004  CAMAC Controller
-	0005  PROFIBUS
-	0006  AMCC HOTlink
-	000d  Synchronisation Slave
-1797  JumpTec h, GMBH
-1799  Belkin
-	6001  Wireless PCI Card - F5D6001
-	6020  Wireless PCMCIA Card - F5D6020
-	6060  Wireless PDA Card - F5D6060
-	7000  Wireless PCI Card - F5D7000
-	700a  Wireless PCI Card - F5D7000UK
-	7010  BCM4306 802.11b/g Wireless Lan Controller F5D7010
-179c  Data Patterns
-	0557  DP-PCI-557 [PCI 1553B]
-	0566  DP-PCI-566 [Intelligent PCI 1553B]
-	5031  DP-CPCI-5031-Synchro Module
-	5121  DP-CPCI-5121-IP Carrier
-	5211  DP-CPCI-5211-IP Carrier
-	5679  AGE Display Module
-17a0  Genesys Logic, Inc
-	8033  GL880S USB 1.1 controller
-	8034  GL880S USB 2.0 controller
-17aa  Lenovo
-17ab  Phillips Components
-17af  Hightech Information System Ltd.
-17b3  Hawking Technologies
-	ab08  PN672TX 10/100 Ethernet
-17b4  Indra Networks, Inc.
-	0011  WebEnhance 100 GZIP Compression Card
-17c0  Wistron Corp.
-17c2  Newisys, Inc.
-17cb  Airgo Networks Inc
-	0001  AGN100 802.11 a/b/g True MIMO Wireless Card
-	0002  AGN300 802.11 a/b/g True MIMO Wireless Card
-17cc  NetChip Technology, Inc
-	2280  USB 2.0
-17cf  Z-Com, Inc.
-17d3  Areca Technology Corp.
-	1110  ARC-1110 4-Port PCI-X to SATA RAID Controller
-	1120  ARC-1120 8-Port PCI-X to SATA RAID Controller
-	1130  ARC-1130 12-Port PCI-X to SATA RAID Controller
-	1160  ARC-1160 16-Port PCI-X to SATA RAID Controller
-	1210  ARC-1210 4-Port PCI-Express to SATA RAID Controller
-	1220  ARC-1220 8-Port PCI-Express to SATA RAID Controller
-	1230  ARC-1230 12-Port PCI-Express to SATA RAID Controller
-	1260  ARC-1260 16-Port PCI-Express to SATA RAID Controller
-	1280  ARC-1231 12-Port PCI-Express to SATA RAID Controller
-17d5  S2io Inc.
-	5831  Xframe 10 Gigabit Ethernet PCI-X
-		103c 12d5  PCI-X 133MHz 10GbE SR Fiber
-		10a9 8020  Single Port 10 Gigabit Ethernet (PCI-X, Fiber)
-		10a9 8024  Single Port 10 Gigabit Ethernet (PCI-X, Fiber)
-	5832  Xframe II 10Gbps Ethernet
-		103c 1337  PCI-X 266MHz 10GigE SR [AD385A]
-		10a9 8021  Single Port 10 Gigabit Ethernet II (PCI-X, Fiber)
-17db  Cray Inc
-	0101  XT Series [Seastar] 3D Toroidal Router
-17de  KWorld Computer Co. Ltd.
-17e4  Sectra AB
-	0001  KK671 Cardbus encryption board
-	0002  KK672 Cardbus encryption board
-17e6  Entropic Communications Inc.
-	0010  EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface)
-	0011  EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface)
-	0021  EN2210 [c.Link] MoCA Network Controller (Coax)
-17ee  Connect Components Ltd
-17f2  Albatron Corp.
-17f3  RDC Semiconductor, Inc.
-	6020  R6020 North Bridge
-	6030  R6030 ISA Bridge
-	6040  R6040 MAC Controller
-	6060  R6060 USB 1.1 Controller
-	6061  R6061 USB 2.0 Controller
-17fe  Linksys, A Division of Cisco Systems
-	2120  WMP11v4 802.11b PCI card
-	2220  [AirConn] INPROCOMM IPN 2220 Wireless LAN Adapter (rev 01)
-		17fe 2220  WPC54G ver. 4
-17ff  Benq Corporation
-1809  Lumanate, Inc.
-1813  Ambient Technologies Inc
-	4000  HaM controllerless modem
-		16be 0001  V9x HAM Data Fax Modem
-	4100  HaM plus Data Fax Modem
-		16be 0002  V9x HAM 1394
-1814  RaLink
-	0101  Wireless PCI Adapter RT2400 / RT2460
-		1043 0127  WiFi-b add-on Card
-		1462 6828  PC11B2 (MS-6828) Wireless 11b PCI Card
-	0200  RT2500 802.11g PCI [PC54G2]
-	0201  RT2500 802.11g Cardbus/mini-PCI
-		1043 130f  WL-130g
-		1371 001e  CWC-854 Wireless-G CardBus Adapter
-		1371 001f  CWM-854 Wireless-G Mini PCI Adapter
-		1371 0020  CWP-854 Wireless-G PCI Adapter
-		1458 e381  GN-WMKG 802.11b/g Wireless CardBus Adapter
-		1458 e931  GN-WIKG 802.11b/g mini-PCI Adapter
-		1462 6833  Unknown 802.11g mini-PCI Adapter
-		1462 6835  Wireless 11G CardBus CB54G2
-		1737 0032  WMP54G 2.0 PCI Adapter
-		1799 700a  F5D7000 Wireless G Desktop Network Card
-		1799 701a  F5D7010 Wireless G Notebook Network Card
-		185f 22a0  CN-WF513 Wireless Cardbus Adapter
-	0300  Wireless Adapter Canyon CN-WF511
-	0301  RT2561/RT61 802.11g PCI
-		1186 3c08  DWL-G630 Rev E
-		1186 3c09  DWL-G510 Rev C
-		13d1 abe3  miniPCI Pluscom 802.11 a/b/g
-		1458 e934  GN-WP01GS
-		1737 0055  WMP54G ver 4.1
-		1814 2561  EW-7108PCg
-	0302  RT2561/RT61 rev B 802.11g
-		1186 3c08  DWL-G630 Rev E
-		1186 3c09  DWL-G510 Rev C
-		1462 b834  PC54G3 Wireless 11g PCI Card
-	0401  RT2600 802.11 MIMO
-	e932  RT2560F 802.11 b/g PCI
-1820  InfiniCon Systems Inc.
-1822  Twinhan Technology Co. Ltd
-	0001  Twinhan VisionPlus DVB [card=113]
-	4e35  Mantis DTV PCI Bridge Controller [Ver 1.0]
-182d  SiteCom Europe BV
-# HFC-based ISDN card
-	3069  ISDN PCI DC-105V2
-	9790  WL-121 Wireless Network Adapter 100g+ [Ver.3]
-182e  Raza Microelectronics, Inc.
-	0008  XLR516 Processor
-# Strange vendor ID used by BCM5785 when in RAID mode
-182f  Broadcom
-# HT1000 uses 3 IDs 1166:024a (Native SATA Mode), 1166:024b (PATA/IDE Mode), 182f:000b (RAID Mode) depends on SATA BIOS setting
-	000b  BCM5785 [HT1000] SATA (RAID Mode)
-1830  Credence Systems Corporation
-183b  MikroM GmbH
-	08a7  MVC100 DVI
-	08a8  MVC101 SDI
-	08a9  MVC102 DVI+Audio
-	08b0  MVC200-DC
-1849  ASRock Incorporation
-184a  Thales Computers
-1851  Microtune, Inc.
-1852  Anritsu Corp.
-1853  SMSC Automotive Infotainment System Group
-1854  LG Electronics, Inc.
-185b  Compro Technology, Inc.
-185f  Wistron NeWeb Corp.
-1864  SilverBack
-	2110  ISNAP 2110
-1867  Topspin Communications
-	5a44  MT23108 InfiniHost HCA
-	5a45  MT23108 InfiniHost HCA flash recovery
-	5a46  MT23108 InfiniHost HCA bridge
-	6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)
-	6282  MT25208 InfiniHost III Ex
-186c  Humusoft, s.r.o.
-	0612  AD612 Data Acquisition Device
-	0614  MF614 Multifunction I/O Card
-	0622  AD622 Data Acquisition Device
-	0624  MF624 Multifunction I/O Card
-	0625  MF625 3-phase Motor Driver
-1876  L-3 Communications
-	a101  VigraWATCH PCI
-	a102  VigraWATCH PMC
-	a103  Vigra I/O
-187e  ZyXEL Communication Corporation
-	3403  ZyAir G-110 802.11g
-	340e  M-302 802.11g XtremeMIMO
-1885  Avvida Systems Inc.
-1888  Varisys Ltd
-	0301  VMFX1 FPGA PMC module
-	0601  VSM2 dual PMC carrier
-	0710  VS14x series PowerPC PCI board
-	0720  VS24x series PowerPC PCI board
-188a  Ample Communications, Inc
-1890  Egenera, Inc.
-1894  KNC One
-1896  B&B Electronics Manufacturing Company, Inc.
-18a1  Astute Networks Inc.
-18ac  DViCO Corporation
-	d500  FusionHDTV 5
-	d800  FusionHDTV 3 Gold
-	d810  FusionHDTV 3 Gold-Q
-	d820  FusionHDTV 3 Gold-T
-	db30  FusionHDTV DVB-T Pro
-18b8  Ammasso
-	b001  AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor
-18bc  Info-Tek Corp.
-18c3  Micronas Semiconductor Holding AG
-# Nee Octigabay System
-18c8  Cray Inc
-18c9  ARVOO Engineering BV
-18ca  XGI Technology Inc. (eXtreme Graphics Innovation)
-	0020  Volari Z7
-	0040  Volari V3XT/V5/V8
-	0047  Volari 8300 (chip: XP10, codename: XG47)
-18d2  Sitecom
-# Sitecom HFC-S based ISDN controller card DC-105v2
-	3069  DC-105v2 ISDN controller
-18dd  Artimi Inc
-	4c6f  Artimi RTMI-100 UWB adapter
-18e6  MPL AG
-	0001  OSCI [Octal Serial Communication Interface]
-18ec  Cesnet, z.s.p.o.
-	c006  COMBO6
-		18ec d001  COMBO-4MTX
-		18ec d002  COMBO-4SFP
-		18ec d003  COMBO-4SFPRO
-		18ec d004  COMBO-2XFP
-	c045  COMBO6E
-	c050  COMBO-PTM
-	c058  COMBO6X
-		18ec d001  COMBO-4MTX
-		18ec d002  COMBO-4SFP
-		18ec d003  COMBO-4SFPRO
-		18ec d004  COMBO-2XFP
-18f6  NextIO
-	1000  [Nexsis] Switch Virtual P2P PCIe Bridge
-	1050  [Nexsis] Switch Virtual P2P PCI Bridge
-	2000  [Nexsis] Switch Integrated Mgmt. Endpoint
-18f7  Commtech, Inc.
-	0001  Fastcom ESCC-PCI-335
-	0002  Fastcom 422/4-PCI-335
-	0004  Fastcom 422/2-PCI-335
-	0005  Fastcom IGESCC-PCI-ISO/1
-	000a  Fastcom 232/4-PCI-335
-	000f  Fastcom FSCC
-	0010  Fastcom GSCC
-# Dual Serocco
-	0011  Fastcom QSSB
-	0014  SuperFSCC
-18fb  Resilience Corporation
-1904  Hangzhou Silan Microelectronics Co., Ltd.
-	8139  RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor
-1905  Micronas USA, Inc.
-1912  Renesas Technology Corp.
-1923  Sangoma Technologies Corp.
-	0040  A200/Remora FXO/FXS Analog AFT card
-	0100  A104d QUAD T1/E1 AFT card
-	0300  A101 single-port T1/E1
-	0400  A104u Quad T1/E1 AFT
-# nee Level 5 Networks
-1924  Solarflare Communications
-	0703  SFC4000 rev A net [Solarstorm]
-		10b8 0102  SMC10GPCIe-10BT (A2) [TigerCard]
-		10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]
-		10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard]
-		1924 0101  SFE4001-A1
-		1924 0102  SFE4001-A2
-		1924 0103  SFE4001-A3
-		1924 0201  SFE4002-A1
-		1924 0301  SFE4003-A1
-		1924 0302  SFE4003-A2
-		1924 0303  SFE4003-A3
-		1924 0304  SFE4003-A4
-		1924 0500  SFE4005-A0
-	0710  SFC4000 rev B [Solarstorm]
-		10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]
-		10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard]
-		1924 0102  SFE4001-A2
-		1924 0103  SFE4001-A3
-		1924 0201  SFE4002-A1
-		1924 0302  SFE4003-A2
-		1924 0303  SFE4003-A3
-		1924 0304  SFE4003-A4
-		1924 0500  SFE4005-A0
-	6703  SFC4000 rev A iSCSI/Onload [Solarstorm]
-		10b8 0102  SMC10GPCIe-10BT (A2) [TigerCard]
-		10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]
-		10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard]
-		1924 0101  SFE4001-A1
-		1924 0102  SFE4001-A2
-		1924 0103  SFE4001-A3
-		1924 0201  SFE4002-A1
-		1924 0301  SFE4003-A1
-		1924 0302  SFE4003-A2
-		1924 0303  SFE4003-A3
-		1924 0304  SFE4003-A4
-		1924 0500  SFE4005-A0
-	c101  EF1-21022T [EtherFabric]
-192e  TransDimension
-1931  Option N.V.
-	000c  Qualcomm MSM6275 UMTS chip
-1942  ClearSpeed Technology plc
-	e511  CSX600 Advance Accelerator Board
-194a  DapTechnology B.V.
-	1111  FireSpy3850
-	1112  FireSpy450b
-	1113  FireSpy450bT
-	1114  FireSpy850
-	1115  FireSpy850bT
-1954  Curtis, Inc.
-1957  Freescale Semiconductor Inc
-	0012  MPC8548E
-	0013  MPC8548
-	0014  MPC8543E
-	0015  MPC8543
-	0018  MPC8547E
-	0019  MPC8545E
-	001a  MPC8545
-	0020  MPC8568E
-	0021  MPC8568
-	0022  MPC8567E
-	0023  MPC8567
-	0030  MPC8533E
-	0031  MPC8533
-	0032  MPC8544E
-	0033  MPC8544
-	0080  MPC8349E
-	0081  MPC8349
-	0082  MPC8347E TBGA
-	0083  MPC8347 TBGA
-	0084  MPC8347E PBGA
-	0085  MPC8347 PBGA
-	0086  MPC8343E
-	0087  MPC8343
-	7010  MPC8641 PCI Host Bridge
-	7011  MPC8641D PCI Host Bridge
-1958  Faster Technology, LLC.
-1959  PA Semi, Inc
-1966  Orad Hi-Tec Systems
-	1975  DVG64 family
-1969  Attansic Technology Corp.
-	1026  L1 Gigabit Ethernet Adapter
-	1048  L1 Gigabit Ethernet Adapter
-	2048  L2 100 Mbit Ethernet Adapter
-196a  Sensory Networks Inc.
-	0101  NodalCore C-1000 Content Classification Accelerator
-	0102  NodalCore C-2000 Content Classification Accelerator
-	0105  NodalCore C-3000 Content Classification Accelerator
-196d  Club-3D BV
-1971  AGEIA Technologies, Inc.
-	1011  Physics Processing Unit [PhysX]
-		1043 0001  PhysX P1
-197b  JMicron Technologies, Inc.
-	2360  JMicron 20360/20363 AHCI Controller
-	2361  JMB361 AHCI/IDE
-		1462 7235  P965 Neo MS-7235 mainboard
-	2363  JMicron 20360/20363 AHCI Controller
-	2365  JMB365 AHCI/IDE
-	2366  JMB366 AHCI/IDE
-	2368  JMB368 IDE controller
-1982  Distant Early Warning Communications Inc
-	1600  OX16C954 HOST-A
-	16ff  OX16C954 HOST-B
-1989  Montilio Inc.
-	0001  RapidFile Bridge
-	8001  RapidFile
-1993  Innominate Security Technologies AG
-199a  Pulse-LINK, Inc.
-19a2  ServerEngines Corp.
-	0200  BladeEngine 10Gb PCI-E iSCSI adapter
-	0201  BladeEngine 10Gb PCI-E Network Adpater
-19a8  DAQDATA GmbH
-19ac  Kasten Chase Applied Research
-	0001  ACA2400 Crypto Accelerator
-19ae  Progeny Systems Corporation
-	0520  4135 HFT Interface Controller
-19d4  Quixant Limited
-19de  Pico Computing
-19e2  Vector Informatik GmbH
-19e7  NET (Network Equipment Technologies)
-	1001  STIX DSP Card
-	1002  STIX - 1 Port T1/E1 Card
-	1003  STIX - 2 Port T1/E1 Card
-	1004  STIX - 4 Port T1/E1 Card
-	1005  STIX - 4 Port FXS Card
-1a03  ASPEED Technology, Inc.
-	2000  AST2000
-1a07  Kvaser AB
-	0006  CAN interface PC104+ HS/HS
-	0007  CAN interface PCIcanx II HS or HS/HS
-1a08  Sierra semiconductor
-	0000  SC15064
-1a0e  DekTec Digital Video B.V.
-1a1d  GFaI e.V.
-	1a17  Meta Networks MTP-1G IDPS NIC
-1a22  Ambric Inc.
-1a29  Fortinet, Inc.
-1a2b  Ascom AG
-1a51  Hectronic AB
-1a58  Razer USA Ltd.
-1a5d  Celoxica
-1a68  VirtenSys Limited
-1a71  XenSource, Inc.
-1a73  Violin Memory, Inc
-	0001  Mozart [Memory Appliance 1010]
-1a77  Lightfleet Corporation
-1a78  Virident Systems Inc.
-1a8c  Verigy Pte. Ltd.
-	1100  E8001-66443 PCI Express CIC
-1aae  Global Velocity, Inc.
-1ab9  Espia Srl
-1ae0  Google, Inc.
-1ae8  Silicon Software GmbH
-1af4  Qumranet, Inc.
-1af5  Netezza Corp.
-1b13  Jaton Corp
-1c1c  Symphony
-	0001  82C101
-1d44  DPT
-	a400  PM2x24/PM3224
-1de1  Tekram Technology Co.,Ltd.
-	0391  TRM-S1040
-	2020  DC-390
-	690c  690c
-	dc29  DC290
-# nee Tumsan Oy
-1fc0  Ascom (Finland) Oy
-	0300  E2200 Dual E1/Rawpipe Card
-# nee PathScale, Inc
-1fc1  QLogic, Corp.
-	000d  InfiniPath HT-400
-	0010  InfiniPath PE-800
-1fc9  Tehuti Networks Ltd.
-	3009  10 Giga TOE SmartNIC
-	3010  10 Giga TOE SmartNIC
-	3014  10 Giga TOE SmartNIC 2-Port
-1fce  Cognio Inc.
-	0001  Spectrum Analyzer PC Card (SAgE)
-2000  Smart Link Ltd.
-2001  Temporal Research Ltd
-2003  Smart Link Ltd.
-2004  Smart Link Ltd.
-21c3  21st Century Computer Corp.
-# (Probably only the Mobile Phone Division)
-22b8  Motorola, Inc.
-2348  Racore
-	2010  8142 100VG/AnyLAN
-2646  Kingston Technologies
-270b  Xantel Corporation
-270f  Chaintech Computer Co. Ltd
-2711  AVID Technology Inc.
-2a15  3D Vision(???)
-3000  Hansol Electronics Inc.
-3142  Post Impression Systems.
-3388  Hint Corp
-	0013  HiNT HC4 PCI to ISDN bridge, Multimedia audio controller
-	0014  HiNT HC4 PCI to ISDN bridge, Network controller
-	0020  HB6 Universal PCI-PCI bridge (transparent mode)
-	0021  HB6 Universal PCI-PCI bridge (non-transparent mode)
-		1775 c200  C2K CompactPCI interface bridge
-		1775 ce90  CE9
-		4c53 1050  CT7 mainboard
-		4c53 1080  CT8 mainboard
-		4c53 1090  Cx9 mainboard
-		4c53 10a0  CA3/CR3 mainboard
-		4c53 3010  PPCI mezzanine (32-bit PMC)
-		4c53 3011  PPCI mezzanine (64-bit PMC)
-		4c53 4000  PMCCARR1 carrier board
-	0022  HiNT HB4 PCI-PCI Bridge (PCI6150)
-	0026  HB2 PCI-PCI Bridge
-	101a  E.Band [AudioTrak Inca88]
-	101b  E.Band [AudioTrak Inca88]
-	8011  VXPro II Chipset
-		3388 8011  VXPro II Chipset CPU to PCI Bridge
-	8012  VXPro II Chipset
-		3388 8012  VXPro II Chipset PCI to ISA Bridge
-	8013  VXPro II IDE
-		3388 8013  VXPro II Chipset EIDE Controller
-3411  Quantum Designs (H.K.) Inc
-3513  ARCOM Control Systems Ltd
-3842  eVga.com. Corp.
-	c370  e-GeFORCE 6600 256 DDR PCI-e
-38ef  4Links
-3d3d  3DLabs
-	0001  GLINT 300SX
-	0002  GLINT 500TX
-		0000 0000  GLoria L
-	0003  GLINT Delta
-		0000 0000  GLoria XL
-	0004  Permedia
-	0005  Permedia
-	0006  GLINT MX
-		0000 0000  GLoria XL
-		1048 0a42  GLoria XXL
-	0007  3D Extreme
-	0008  GLINT Gamma G1
-		1048 0a42  GLoria XXL
-	0009  Permedia II 2D+3D
-		1040 0011  AccelStar II
-		1048 0a42  GLoria XXL
-		13e9 1000  6221L-4U
-		3d3d 0100  AccelStar II 3D Accelerator
-		3d3d 0111  Permedia 3:16
-		3d3d 0114  Santa Ana
-		3d3d 0116  Oxygen GVX1
-		3d3d 0119  Scirocco
-		3d3d 0120  Santa Ana PCL
-		3d3d 0125  Oxygen VX1
-		3d3d 0127  Permedia3 Create!
-	000a  GLINT R3
-		3d3d 0121  Oxygen VX1
-	000c  GLINT R3 [Oxygen VX1]
-		3d3d 0144  Oxygen VX1-4X AGP [Permedia 4]
-	000d  GLint R4 rev A
-	0011  GLint R4 rev B
-	0012  GLint R5 rev A
-	0013  GLint R5 rev B
-	0020  VP10 visual processor
-	0022  VP10 visual processor
-	0024  VP9 visual processor
-	0100  Permedia II 2D+3D
-	07a1  Wildcat III 6210
-	07a2  Sun XVR-500 Graphics Accelerator
-	07a3  Wildcat IV 7210
-	1004  Permedia
-	3d04  Permedia
-	ffff  Glint VGA
-4005  Avance Logic Inc.
-	0300  ALS300 PCI Audio Device
-	0308  ALS300+ PCI Audio Device
-	0309  PCI Input Controller
-	1064  ALG-2064
-	2064  ALG-2064i
-	2128  ALG-2364A GUI Accelerator
-	2301  ALG-2301
-	2302  ALG-2302
-	2303  AVG-2302 GUI Accelerator
-	2364  ALG-2364A
-	2464  ALG-2464
-	2501  ALG-2564A/25128A
-	4000  ALS4000 Audio Chipset
-		4005 4000  ALS4000 Audio Chipset
-	4710  ALC200/200P
-4033  Addtron Technology Co, Inc.
-	1360  RTL8139 Ethernet
-4040  NetXen Incorporated
-	0001  NXB-10GXSR 10 Gigabit Ethernet PCIe Adapter with SR-XFP optical interface
-		103c 7047  NC510F PCIe 10 Gigabit Server Adapter
-	0002  NXB-10GCX4 10 Gigabit Ethernet PCIe Adapter with CX4 copper interface
-		103c 7048  NC510c PCIe 10Gigabit Server Adapter
-	0003  NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface
-	0004  BladeCenter-H 10 Gigabit Ethernet High Speed Daughter Card
-	0005  NetXen Dual Port 10GbE Multifunction Adapter for c-Class
-		103c 170e  NC512m Dual Port 10GbE Multifunction BL-C Adapter
-	0024  XG Mgmt
-	0025  XG Mgmt
-	0100  NX3031 Multifunction 1/10 Gigabit Server Adapter
-		103c 171b  NC522m Dual Port 10GbE Multifunction BL-c Adapter
-		103c 705a  NC375i Integrated Quad Port Multifunction Gigabit Server Adapter
-		103c 705b  NC522SFP Dual Port 10GbE Server Adapter
-4143  Digital Equipment Corp
-4144  Alpha Data
-	0044  ADM-XRCIIPro
-416c  Aladdin Knowledge Systems
-	0100  AladdinCARD
-	0200  CPC
-4321  Tata Power Strategic Electronics Division
-434e  CAST Navigation LLC
-4444  Internext Compression Inc
-	0016  iTVC16 (CX23416) MPEG-2 Encoder
-		0070 0003  WinTV PVR 250
-		0070 0009  WinTV PVR 150
-		0070 0801  WinTV PVR 150
-		0070 0807  WinTV PVR 150
-		0070 4001  WinTV PVR 250
-		0070 4009  WinTV PVR 250
-		0070 4801  WinTV PVR 250
-		0070 4803  WinTV PVR 250
-		0070 8003  WinTV PVR 150
-		0070 8801  WinTV PVR 150
-		0070 c801  WinTV PVR 150
-		0070 e807  WinTV PVR 500 (1st unit)
-		0070 e817  WinTV PVR 500 (2nd unit)
-		0070 ff92  WiNTV PVR-550
-		0270 0801  WinTV PVR 150
-		104d 013d  ENX-26 TV Encoder
-		10fc d038  GV-MVP/RX2W (1st unit)
-		10fc d039  GV-MVP/RX2W (2nd unit)
-		12ab fff3  MPG600
-		12ab ffff  MPG600
-		1461 c019  UltraTV 1500 MCE
-		9005 0092  VideOh! AVC-2010
-		9005 0093  VideOh! AVC-2410
-	0803  iTVC15 MPEG-2 Encoder
-		0070 4000  WinTV PVR-350
-		0070 4001  WinTV PVR-250
-		0070 4800  WinTV PVR-350 (V1)
-		12ab 0000  MPG160
-		1461 a3ce  M179
-		1461 a3cf  M179
-4468  Bridgeport machines
-4594  Cogetec Informatique Inc
-45fb  Baldor Electric Company
-4680  Umax Computer Corp
-4843  Hercules Computer Technology Inc
-4916  RedCreek Communications Inc
-	1960  RedCreek PCI adapter
-4943  Growth Networks
-494f  ACCES I/O Products, Inc.
-	0c60  PCI-DIO-48
-	0e60  PCI-DIO-48S
-	10e8  LPCI-COM-8SM
-4978  Axil Computer Inc
-4a14  NetVin
-	5000  NV5000SC
-		4a14 5000  RT8029-Based Ethernet Adapter
-4b10  Buslogic Inc.
-4c48  LUNG HWA Electronics
-4c53  SBS Technologies
-	0000  PLUSTEST device
-		4c53 3000  PLUSTEST card (PC104+)
-		4c53 3001  PLUSTEST card (PMC)
-	0001  PLUSTEST-MM device
-		4c53 3002  PLUSTEST-MM card (PMC)
-4ca1  Seanix Technology Inc
-4d51  MediaQ Inc.
-	0200  MQ-200
-4d54  Microtechnica Co Ltd
-4d56  MATRIX VISION GmbH
-	0000  Altera Cyclone II CameraLink Frame Grabber [mvHYPERION-CLe]
-4ddc  ILC Data Device Corp
-	0100  DD-42924I5-300 (ARINC 429 Data Bus)
-	0801  BU-65570I1 MIL-STD-1553 Test and Simulation
-	0802  BU-65570I2 MIL-STD-1553 Test and Simulation
-	0811  BU-65572I1 MIL-STD-1553 Test and Simulation
-	0812  BU-65572I2 MIL-STD-1553 Test and Simulation
-	0881  BU-65570T1 MIL-STD-1553 Test and Simulation
-	0882  BU-65570T2 MIL-STD-1553 Test and Simulation
-	0891  BU-65572T1 MIL-STD-1553 Test and Simulation
-	0892  BU-65572T2 MIL-STD-1553 Test and Simulation
-	0901  BU-65565C1 MIL-STD-1553 Data Bus
-	0902  BU-65565C2 MIL-STD-1553 Data Bus
-	0903  BU-65565C3 MIL-STD-1553 Data Bus
-	0904  BU-65565C4 MIL-STD-1553 Data Bus
-	0b01  BU-65569I1 MIL-STD-1553 Data Bus
-	0b02  BU-65569I2 MIL-STD-1553 Data Bus
-	0b03  BU-65569I3 MIL-STD-1553 Data Bus
-	0b04  BU-65569I4 MIL-STD-1553 Data Bus
-5046  GemTek Technology Corporation
-	1001  PCI Radio
-5053  Voyetra Technologies
-	2010  Daytona Audio Adapter
-5136  S S Technologies
-5143  Qualcomm Inc
-5145  Ensoniq (Old)
-	3031  Concert AudioPCI
-5168  Animation Technologies Inc.
-	0300  FlyDVB-S
-	0301  FlyDVB-T
-5301  Alliance Semiconductor Corp.
-	0001  ProMotion aT3D
-5333  S3 Inc.
-	0551  Plato/PX (system)
-	5631  86c325 [ViRGE]
-	8800  86c866 [Vision 866]
-	8801  86c964 [Vision 964]
-	8810  86c764_0 [Trio 32 vers 0]
-	8811  86c764/765 [Trio32/64/64V+]
-	8812  86cM65 [Aurora64V+]
-	8813  86c764_3 [Trio 32/64 vers 3]
-	8814  86c767 [Trio 64UV+]
-	8815  86cM65 [Aurora 128]
-	883d  86c988 [ViRGE/VX]
-	8870  FireGL
-	8880  86c868 [Vision 868 VRAM] vers 0
-	8881  86c868 [Vision 868 VRAM] vers 1
-	8882  86c868 [Vision 868 VRAM] vers 2
-	8883  86c868 [Vision 868 VRAM] vers 3
-	88b0  86c928 [Vision 928 VRAM] vers 0
-	88b1  86c928 [Vision 928 VRAM] vers 1
-	88b2  86c928 [Vision 928 VRAM] vers 2
-	88b3  86c928 [Vision 928 VRAM] vers 3
-	88c0  86c864 [Vision 864 DRAM] vers 0
-	88c1  86c864 [Vision 864 DRAM] vers 1
-	88c2  86c864 [Vision 864-P DRAM] vers 2
-	88c3  86c864 [Vision 864-P DRAM] vers 3
-	88d0  86c964 [Vision 964 VRAM] vers 0
-	88d1  86c964 [Vision 964 VRAM] vers 1
-	88d2  86c964 [Vision 964-P VRAM] vers 2
-	88d3  86c964 [Vision 964-P VRAM] vers 3
-	88f0  86c968 [Vision 968 VRAM] rev 0
-	88f1  86c968 [Vision 968 VRAM] rev 1
-	88f2  86c968 [Vision 968 VRAM] rev 2
-	88f3  86c968 [Vision 968 VRAM] rev 3
-	8900  86c755 [Trio 64V2/DX]
-		5333 8900  86C775 Trio64V2/DX
-	8901  86c775/86c785 [Trio 64V2/DX or /GX]
-		5333 8901  86C775 Trio64V2/DX, 86C785 Trio64V2/GX
-	8902  Plato/PX
-	8903  Trio 3D business multimedia
-	8904  Trio 64 3D
-		1014 00db  Integrated Trio3D
-		4843 314a  Terminator 128/3D GLH
-		5333 8904  86C365 Trio3D AGP
-	8905  Trio 64V+ family
-	8906  Trio 64V+ family
-	8907  Trio 64V+ family
-	8908  Trio 64V+ family
-	8909  Trio 64V+ family
-	890a  Trio 64V+ family
-	890b  Trio 64V+ family
-	890c  Trio 64V+ family
-	890d  Trio 64V+ family
-	890e  Trio 64V+ family
-	890f  Trio 64V+ family
-	8a01  ViRGE/DX or /GX
-		0e11 b032  ViRGE/GX
-		10b4 1617  Nitro 3D
-		10b4 1717  Nitro 3D
-		5333 8a01  ViRGE/DX
-	8a10  ViRGE/GX2
-		1092 8a10  Stealth 3D 4000
-	8a13  86c368 [Trio 3D/2X]
-		5333 8a13  Trio3D/2X
-	8a20  86c794 [Savage 3D]
-		5333 8a20  86C391 Savage3D
-	8a21  86c390 [Savage 3D/MV]
-		5333 8a21  86C390 Savage3D/MV
-	8a22  Savage 4
-		1033 8068  Savage 4
-		1033 8069  Savage 4
-		1033 8110  Savage 4 LT
-		105d 0018  SR9 8Mb SDRAM
-		105d 002a  SR9 Pro 16Mb SDRAM
-		105d 003a  SR9 Pro 32Mb SDRAM
-		105d 092f  SR9 Pro+ 16Mb SGRAM
-		1092 4207  Stealth III S540
-		1092 4800  Stealth III S540
-		1092 4807  SpeedStar A90
-		1092 4808  Stealth III S540
-		1092 4809  Stealth III S540
-		1092 480e  Stealth III S540
-		1092 4904  Stealth III S520
-		1092 4905  SpeedStar A200
-		1092 4a09  Stealth III S540
-		1092 4a0b  Stealth III S540 Xtreme
-		1092 4a0f  Stealth III S540
-		1092 4e01  Stealth III S540
-		1102 101d  3d Blaster Savage 4
-		1102 101e  3d Blaster Savage 4
-		5333 8100  86C394-397 Savage4 SDRAM 100
-		5333 8110  86C394-397 Savage4 SDRAM 110
-		5333 8125  86C394-397 Savage4 SDRAM 125
-		5333 8143  86C394-397 Savage4 SDRAM 143
-		5333 8a22  86C394-397 Savage4
-		5333 8a2e  86C394-397 Savage4 32bit
-		5333 9125  86C394-397 Savage4 SGRAM 125
-		5333 9143  86C394-397 Savage4 SGRAM 143
-	8a23  Savage 4
-	8a25  ProSavage PM133
-	8a26  ProSavage KM133
-	8c00  ViRGE/M3
-	8c01  ViRGE/MX
-		1179 0001  ViRGE/MX
-	8c02  ViRGE/MX+
-	8c03  ViRGE/MX+MV
-	8c10  86C270-294 Savage/MX-MV
-	8c11  82C270-294 Savage/MX
-	8c12  86C270-294 Savage/IX-MV
-		1014 017f  Thinkpad T20/T22
-		1179 0001  86C584 SuperSavage/IXC Toshiba
-	8c13  86C270-294 Savage/IX
-		1179 0001  Magnia Z310
-	8c22  SuperSavage MX/128
-	8c24  SuperSavage MX/64
-	8c26  SuperSavage MX/64C
-	8c2a  SuperSavage IX/128 SDR
-	8c2b  SuperSavage IX/128 DDR
-	8c2c  SuperSavage IX/64 SDR
-	8c2d  SuperSavage IX/64 DDR
-	8c2e  SuperSavage IX/C SDR
-		1014 01fc  ThinkPad T23 (2647-4MG)
-	8c2f  SuperSavage IX/C DDR
-	8d01  86C380 [ProSavageDDR K4M266]
-	8d02  VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK)
-	8d03  VT8751 [ProSavageDDR P4M266]
-	8d04  VT8375 [ProSavage8 KM266/KL266]
-	8e48  Chrome S27 PCIE
-		5333 0130  Chrome S27 256M DDR2
-	9102  86C410 Savage 2000
-		1092 5932  Viper II Z200
-		1092 5934  Viper II Z200
-		1092 5952  Viper II Z200
-		1092 5954  Viper II Z200
-		1092 5a35  Viper II Z200
-		1092 5a37  Viper II Z200
-		1092 5a55  Viper II Z200
-		1092 5a57  Viper II Z200
-	ca00  SonicVibes
-544c  Teralogic Inc
-	0350  TL880-based HDTV/ATSC tuner
-5455  Technische University Berlin
-	4458  S5933
-5456  GoTView
-5519  Cnet Technologies, Inc.
-5544  Dunord Technologies
-	0001  I-30xx Scanner Interface
-5555  Genroco, Inc
-	0003  TURBOstor HFP-832 [HiPPI NIC]
-5654  VoiceTronix Pty Ltd
-	3132  OpenSwitch12
-5700  Netpower
-5851  Exacq Technologies
-5853  XenSource, Inc.
-	0001  Xen Platform Device
-6356  UltraStor
-6374  c't Magazin fuer Computertechnik
-	6773  GPPCI
-6409  Logitec Corp.
-6666  Decision Computer International Co.
-	0001  PCCOM4
-	0002  PCCOM8
-	0004  PCCOM2
-	0101  PCI 8255/8254 I/O Card
-7063  pcHDTV
-	2000  HD-2000
-	3000  HD-3000
-	5500  HD5500 HDTV
-7604  O.N. Electronic Co Ltd.
-7bde  MIDAC Corporation
-7fed  PowerTV
-8008  Quancom Electronic GmbH
-	0010  WDOG1 [PCI-Watchdog 1]
-	0011  PWDOG2 [PCI-Watchdog 2]
-# Wrong ID used in subsystem ID of AsusTek PCI-USB2 PCI card.
-807d  Asustek Computer, Inc.
-8086  Intel Corporation
-	0007  82379AB
-	0008  Extended Express System Support Controller
-	0039  21145 Fast Ethernet
-	0040  Auburndale/Havendale DRAM Controller
-	0041  Auburndale/Havendale PCI Express x16 Root Port
-	0042  Auburndale/Havendale Integrated Graphics Controller
-	0122  82437FX
-	0309  80303 I/O Processor PCI-to-PCI Bridge
-	030d  80312 I/O Companion Chip PCI-to-PCI Bridge
-	0326  6700/6702PXH I/OxAPIC Interrupt Controller A
-		1775 1100  CR11/VR11 Single Board Computer
-	0327  6700PXH I/OxAPIC Interrupt Controller B
-		1775 1100  CR11/VR11 Single Board Computer
-	0329  6700PXH PCI Express-to-PCI Bridge A
-	032a  6700PXH PCI Express-to-PCI Bridge B
-	032c  6702PXH PCI Express-to-PCI Bridge A
-	0330  80332 [Dobson] I/O processor (A-Segment Bridge)
-	0331  80332 [Dobson] I/O processor (A-Segment IOAPIC)
-	0332  80332 [Dobson] I/O processor (B-Segment Bridge)
-	0333  80332 [Dobson] I/O processor (B-Segment IOAPIC)
-	0334  80332 [Dobson] I/O processor (ATU)
-	0335  80331 [Lindsay] I/O processor (PCI-X Bridge)
-	0336  80331 [Lindsay] I/O processor (ATU)
-	0340  41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge)
-	0341  41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge)
-	0370  80333 Segment-A PCI Express-to-PCI Express Bridge
-	0371  80333 A-Bus IOAPIC
-	0372  80333 Segment-B PCI Express-to-PCI Express Bridge
-	0373  80333 B-Bus IOAPIC
-	0374  80333 Address Translation Unit
-	0482  82375EB/SB PCI to EISA Bridge
-	0483  82424TX/ZX [Saturn] CPU to PCI bridge
-	0484  82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge
-	0486  82425EX/ZX [Aries] PCIset with ISA bridge
-	04a3  82434LX/NX [Mercury/Neptune] Processor to PCI bridge
-	04d0  82437FX [Triton FX]
-	0500  E8870 Processor bus control
-	0501  E8870 Memory controller
-# and registers common to both SPs
-	0502  E8870 Scalability Port 0
-# and global performance monitoring
-	0503  E8870 Scalability Port 1
-	0510  E8870IO Hub Interface Port 0 registers (8-bit compatibility port)
-	0511  E8870IO Hub Interface Port 1 registers
-	0512  E8870IO Hub Interface Port 2 registers
-	0513  E8870IO Hub Interface Port 3 registers
-	0514  E8870IO Hub Interface Port 4 registers
-	0515  E8870IO General SIOH registers
-	0516  E8870IO RAS registers
-	0530  E8870SP Scalability Port 0 registers
-	0531  E8870SP Scalability Port 1 registers
-	0532  E8870SP Scalability Port 2 registers
-	0533  E8870SP Scalability Port 3 registers
-	0534  E8870SP Scalability Port 4 registers
-	0535  E8870SP Scalability Port 5 registers
-# (bi-interleave 0) and global registers that are neither per-port nor per-interleave
-	0536  E8870SP Interleave registers 0 and 1
-# (bi-interleave 1)
-	0537  E8870SP Interleave registers 2 and 3
-	0600  RAID Controller
-		8086 0136  SRCU31L
-		8086 01af  SRCZCR
-		8086 01c1  ICP Vortex GDT8546RZ
-		8086 01f7  SCRU32
-# uninitialized SRCU32 RAID Controller
-	061f  80303 I/O Processor
-	0960  80960RP (i960RP) Microprocessor/Bridge
-	0962  80960RM (i960RM) Bridge
-	0964  80960RP (i960RP) Microprocessor/Bridge
-	1000  82542 Gigabit Ethernet Controller (Fiber)
-		0e11 b0df  NC6132 Gigabit Ethernet Adapter (1000-SX)
-		0e11 b0e0  NC6133 Gigabit Ethernet Adapter (1000-LX)
-		0e11 b123  NC6134 Gigabit Ethernet Adapter (1000-LX)
-		1014 0119  Netfinity Gigabit Ethernet SX Adapter
-		8086 1000  PRO/1000 Gigabit Server Adapter
-	1001  82543GC Gigabit Ethernet Controller (Fiber)
-		0e11 004a  NC6136 Gigabit Server Adapter
-		1014 01ea  Netfinity Gigabit Ethernet SX Adapter
-		8086 1002  PRO/1000 F Server Adapter
-		8086 1003  PRO/1000 F Server Adapter
-	1002  Pro 100 LAN+Modem 56 Cardbus II
-		8086 200e  Pro 100 LAN+Modem 56 Cardbus II
-		8086 2013  Pro 100 SR Mobile Combo Adapter
-		8086 2017  Pro 100 S Combo Mobile Adapter
-	1004  82543GC Gigabit Ethernet Controller (Copper)
-		0e11 0049  NC7132 Gigabit Upgrade Module
-		0e11 b1a4  NC7131 Gigabit Server Adapter
-		1014 10f2  Gigabit Ethernet Server Adapter
-		8086 1004  PRO/1000 T Server Adapter
-		8086 2004  PRO/1000 T Server Adapter
-	1008  82544EI Gigabit Ethernet Controller (Copper)
-		1014 0269  iSeries 1000/100/10 Ethernet Adapter
-		1028 011b  PowerEdge 1650/2550
-		1028 011c  PRO/1000 XT Network Connection
-		8086 1107  PRO/1000 XT Server Adapter
-		8086 2107  PRO/1000 XT Server Adapter
-		8086 2110  PRO/1000 XT Desktop Adapter
-		8086 3108  PRO/1000 XT Network Connection
-	1009  82544EI Gigabit Ethernet Controller (Fiber)
-		1014 0268  iSeries Gigabit Ethernet Adapter
-		8086 1109  PRO/1000 XF Server Adapter
-		8086 2109  PRO/1000 XF Server Adapter
-	100a  82540EM Gigabit Ethernet Controller
-	100c  82544GC Gigabit Ethernet Controller (Copper)
-		8086 1112  PRO/1000 T Desktop Adapter
-		8086 2112  PRO/1000 T Desktop Adapter
-	100d  82544GC Gigabit Ethernet Controller (LOM)
-		1028 0123  PRO/1000 XT Network Connection
-		1079 891f  82544GC Based Network Connection
-		4c53 1080  CT8 mainboard
-		8086 110d  82544GC Based Network Connection
-	100e  82540EM Gigabit Ethernet Controller
-		1014 0265  PRO/1000 MT Network Connection
-		1014 0267  PRO/1000 MT Network Connection
-		1014 026a  PRO/1000 MT Network Connection
-		1028 002e  Optiplex GX260
-		1028 0134  PowerEdge 600SC
-		1028 0151  Optiplex GX270
-		107b 8920  PRO/1000 MT Desktop Adapter
-		8086 001e  PRO/1000 MT Desktop Adapter
-		8086 002e  PRO/1000 MT Desktop Adapter
-		8086 1376  PRO/1000 GT Desktop Adapter
-		8086 1476  PRO/1000 GT Desktop Adapter
-	100f  82545EM Gigabit Ethernet Controller (Copper)
-		1014 0269  iSeries 1000/100/10 Ethernet Adapter
-		1014 028e  PRO/1000 MT Network Connection
-		15ad 0750  Abstract PRO/1000 MT Single Port Adapter
-		8086 1000  PRO/1000 MT Network Connection
-		8086 1001  PRO/1000 MT Server Adapter
-	1010  82546EB Gigabit Ethernet Controller (Copper)
-		0e11 00db  NC7170 Gigabit Server Adapter
-		1014 027c  PRO/1000 MT Dual Port Network Adapter
-		15ad 0760  Abstract PRO/1000 MT Dual Port Adapter
-		18fb 7872  RESlink-X
-		1fc1 0026  Niagara 2260 Bypass Card
-		4c53 1080  CT8 mainboard
-		4c53 10a0  CA3/CR3 mainboard
-		8086 1011  PRO/1000 MT Dual Port Server Adapter
-		8086 1012  PRO/1000 MT Dual Port Server Adapter
-		8086 101a  PRO/1000 MT Dual Port Network Connection
-		8086 3424  SE7501HG2 Mainboard
-	1011  82545EM Gigabit Ethernet Controller (Fiber)
-		1014 0268  iSeries Gigabit Ethernet Adapter
-		8086 1002  PRO/1000 MF Server Adapter
-		8086 1003  PRO/1000 MF Server Adapter (LX)
-	1012  82546EB Gigabit Ethernet Controller (Fiber)
-		0e11 00dc  NC6170 Gigabit Server Adapter
-		8086 1012  PRO/1000 MF Dual Port Server Adapter
-	1013  82541EI Gigabit Ethernet Controller
-		8086 0013  PRO/1000 MT Network Connection
-		8086 1013  PRO/1000 MT Network Connection
-		8086 1113  PRO/1000 MT Desktop Adapter
-	1014  82541ER Gigabit Ethernet Controller
-		8086 0014  PRO/1000 MT Desktop Connection
-		8086 1014  PRO/1000 MT Network Connection
-	1015  82540EM Gigabit Ethernet Controller (LOM)
-		8086 1015  PRO/1000 MT Mobile Connection
-	1016  82540EP Gigabit Ethernet Controller (Mobile)
-		1014 052c  PRO/1000 MT Mobile Connection
-		1179 0001  PRO/1000 MT Mobile Connection
-		8086 1016  PRO/1000 MT Mobile Connection
-	1017  82540EP Gigabit Ethernet Controller
-		8086 1017  PR0/1000 MT Desktop Connection
-	1018  82541EI Gigabit Ethernet Controller
-		8086 1018  PRO/1000 MT Mobile Connection
-	1019  82547EI Gigabit Ethernet Controller
-		1458 1019  GA-8IPE1000 Pro2 motherboard (865PE)
-		1458 e000  Intel Gigabit Ethernet (Kenai II)
-		8086 1019  ASUS PC-DL Deluxe mainboard (Socket 603)
-		8086 301f  D865PERL mainboard
-		8086 3025  D875PBZ motherboard
-		8086 302c  Intel 82865G Mainboard (D865GBF)
-		8086 3427  S875WP1-E mainboard
-	101a  82547EI Gigabit Ethernet Controller (Mobile)
-		8086 101a  PRO/1000 CT Mobile Connection
-	101d  82546EB Gigabit Ethernet Controller
-		8086 1000  PRO/1000 MT Quad Port Server Adapter
-	101e  82540EP Gigabit Ethernet Controller (Mobile)
-		1014 0549  Thinkpad
-		1179 0001  PRO/1000 MT Mobile Connection
-		8086 101e  PRO/1000 MT Mobile Connection
-	1026  82545GM Gigabit Ethernet Controller
-		1028 0169  Precision 470
-		8086 1000  PRO/1000 MT Server Connection
-		8086 1001  PRO/1000 MT Server Adapter
-		8086 1002  PRO/1000 MT Server Adapter
-		8086 1003  PRO/1000 GT Server Adapter
-		8086 1026  PRO/1000 MT Server Connection
-	1027  82545GM Gigabit Ethernet Controller
-		103c 3103  NC310F PCI-X Gigabit Server Adapter
-		8086 1001  PRO/1000 MF Server Adapter(LX)
-		8086 1002  PRO/1000 MF Server Adapter(LX)
-		8086 1003  PRO/1000 MF Server Adapter(LX)
-		8086 1027  PRO/1000 MF Server Adapter
-	1028  82545GM Gigabit Ethernet Controller
-		8086 1028  PRO/1000 MB Server Connection
-	1029  82559 Ethernet Controller
-	1030  82559 InBusiness 10/100
-	1031  82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
-		1014 0209  ThinkPad A/T/X Series
-		104d 80e7  Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		104d 813c  Vaio PCG-GRV616G
-		107b 5350  EtherExpress PRO/100 VE
-		1179 0001  EtherExpress PRO/100 VE
-		144d c000  EtherExpress PRO/100 VE
-		144d c001  EtherExpress PRO/100 VE
-		144d c003  EtherExpress PRO/100 VE
-		144d c006  vpr Matrix 170B4
-	1032  82801CAM (ICH3) PRO/100 VE Ethernet Controller
-	1033  82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller
-	1034  82801CAM (ICH3) PRO/100 VM Ethernet Controller
-	1035  82801CAM (ICH3)/82562EH (LOM) Ethernet Controller
-	1036  82801CAM (ICH3) 82562EH Ethernet Controller
-	1037  82801CAM (ICH3) Chipset Ethernet Controller
-	1038  82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller
-		0e11 0098  Evo N600c
-	1039  82801DB PRO/100 VE (LOM) Ethernet Controller
-		1014 0267  NetVista A30p
-		114a 0582  PC8 onboard ethernet ETH1
-	103a  82801DB PRO/100 VE (CNR) Ethernet Controller
-	103b  82801DB PRO/100 VM (LOM) Ethernet Controller
-	103c  82801DB PRO/100 VM (CNR) Ethernet Controller
-	103d  82801DB PRO/100 VE (MOB) Ethernet Controller
-		1014 0522  ThinkPad R40
-		8086 103d  82562EZ 10/100 Ethernet Controller
-	103e  82801DB PRO/100 VM (MOB) Ethernet Controller
-	1040  536EP Data Fax Modem
-		16be 1040  V.9X DSP Data Fax Modem
-	1043  PRO/Wireless LAN 2100 3B Mini PCI Adapter
-		103c 08b0  tc1100 tablet
-		2527 8086  Asus M6800N
-		8086 2522  Samsung X10/P30 integrated WLAN
-		8086 2527  MIM2000/Centrino
-		8086 2561  Dell Latitude D800
-		8086 2581  Toshiba Satellite M10
-	1048  82597EX 10GbE Ethernet Controller
-		8086 a01f  PRO/10GbE LR Server Adapter
-		8086 a11f  PRO/10GbE LR Server Adapter
-	1049  82566MM Gigabit Network Connection
-		103c 30c1  Compaq 6910p
-		17aa 20b9  ThinkPad T61
-		30c5 103c  HP Compaq 8510p
-	104a  82566DM Gigabit Network Connection
-	104b  82566DC Gigabit Network Connection
-	104c  82562V 10/100 Network Connection
-	104d  82566MC Gigabit Network Connection
-	1050  82562EZ 10/100 Ethernet Controller
-		1028 019d  Dimension 3000
-		1462 728c  865PE Neo2 (MS-6728)
-		1462 758c  MS-6758 (875P Neo)
-		8086 3020  D865PERL mainboard
-		8086 302f  Desktop Board D865GBF
-		8086 3427  S875WP1-E mainboard
-	1051  82801EB/ER (ICH5/ICH5R) integrated LAN Controller
-	1052  PRO/100 VM Network Connection
-	1053  PRO/100 VM Network Connection
-	1054  PRO/100 VE Network Connection
-	1055  PRO/100 VM Network Connection
-	1056  PRO/100 VE Network Connection
-	1057  PRO/100 VE Network Connection
-	1059  82551QM Ethernet Controller
-	105b  82546GB Gigabit Ethernet Controller (Copper)
-	105e  82571EB Gigabit Ethernet Controller
-		103c 7044  NC360T PCI Express Dual Port Gigabit Server Adapter
-		103c 704e  Dual Port 1000Base-T (PCIe) [AD337A]
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 6003  Telum GE-QT
-		8086 005e  PRO/1000 PT Dual Port Server Connection
-		8086 105e  PRO/1000 PT Dual Port Network Connection
-		8086 10d5  82571PT Gigabit PT Quad Port Server ExpressModule
-		8086 115e  PRO/1000 PT Dual Port Server Adapter
-		8086 125e  PRO/1000 PT Dual Port Server Adapter
-		8086 135e  PRO/1000 PT Dual Port Server Adapter
-	105f  82571EB Gigabit Ethernet Controller
-		103c 704f  Dual Port 1000Base-SX (PCIe) [AD338A]
-		8086 005a  PRO/1000 PF Dual Port Server Adapter
-		8086 115f  PRO/1000 PF Dual Port Server Adapter
-		8086 125f  PRO/1000 PF Dual Port Server Adapter
-		8086 135f  PRO/1000 PF Dual Port Server Adapter
-	1060  82571EB Gigabit Ethernet Controller
-		8086 0060  PRO/1000 PB Dual Port Server Connection
-		8086 1060  PRO/1000 PB Dual Port Server Connection
-	1064  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller
-		1043 80f8  P5GD1-VW Mainboard
-	1065  82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller
-	1066  82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller
-	1067  82562 EM/EX/GX - PRO/100 VM Ethernet Controller
-	1068  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile
-	1069  82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile
-	106a  82562G - PRO/100 VE (LOM) Ethernet Controller
-	106b  82562G - PRO/100 VE Ethernet Controller Mobile
-	1075  82547GI Gigabit Ethernet Controller
-		1028 0165  PowerEdge 750
-		8086 0075  PRO/1000 CT Network Connection
-		8086 1075  PRO/1000 CT Network Connection
-	1076  82541GI Gigabit Ethernet Controller
-		1028 0165  PRO/1000 MT Network Connection
-		1028 016d  PRO/1000 MT Network Connection
-		1028 019a  PRO/1000 MT Network Connection
-		1028 106d  PRO/1000 MT Network Connection
-		8086 0076  PRO/1000 MT Network Connection
-		8086 1076  PRO/1000 MT Network Connection
-		8086 1176  PRO/1000 MT Desktop Adapter
-		8086 1276  PRO/1000 MT Network Adapter
-	1077  82541GI Gigabit Ethernet Controller
-		1179 0001  PRO/1000 MT Mobile Connection
-		8086 0077  PRO/1000 MT Mobile Connection
-		8086 1077  PRO/1000 MT Mobile Connection
-	1078  82541ER Gigabit Ethernet Controller
-		8086 1078  82541ER-based Network Connection
-	1079  82546GB Gigabit Ethernet Controller
-		103c 12a6  Dual Port 1000Base-T [A9900A]
-		103c 12cf  Core Dual Port 1000Base-T [AB352A]
-		1775 10d0  V5D Single Board Computer Gigabit Ethernet
-		1775 ce90  CE9
-		1fc1 0027  Niagara 2261 Failover NIC
-		4c53 1090  Cx9 / Vx9 mainboard
-		4c53 10b0  CL9 mainboard
-		8086 0079  PRO/1000 MT Dual Port Network Connection
-		8086 1079  PRO/1000 MT Dual Port Network Connection
-		8086 1179  PRO/1000 MT Dual Port Server Adapter
-		8086 117a  PRO/1000 MT Dual Port Server Adapter
-	107a  82546GB Gigabit Ethernet Controller
-		103c 12a8  Dual Port 1000base-SX [A9899A]
-		8086 107a  PRO/1000 MF Dual Port Server Adapter
-		8086 127a  PRO/1000 MF Dual Port Server Adapter
-	107b  82546GB Gigabit Ethernet Controller
-		8086 007b  PRO/1000 MB Dual Port Server Connection
-		8086 107b  PRO/1000 MB Dual Port Server Connection
-	107c  82541PI Gigabit Ethernet Controller
-		8086 1376  PRO/1000 GT Desktop Adapter
-		8086 1476  PRO/1000 GT Desktop Adapter
-	107d  82572EI Gigabit Ethernet Controller (Copper)
-		8086 1082  PRO/1000 PT Server Adapter
-		8086 1084  PRO/1000 PT Server Adapter
-		8086 1092  PRO/1000 PT Server Adapter
-	107e  82572EI Gigabit Ethernet Controller (Fiber)
-		8086 1084  PRO/1000 PF Server Adapter
-		8086 1085  PRO/1000 PF Server Adapter
-		8086 1094  PRO/1000 PF Server Adapter
-	107f  82572EI Gigabit Ethernet Controller
-	1080  FA82537EP 56K V.92 Data/Fax Modem PCI
-	1081  631xESB/632xESB LAN Controller Copper
-	1082  631xESB/632xESB LAN Controller fiber
-	1083  631xESB/632xESB LAN Controller SERDES
-	1084  631xESB/632xESB IDE Redirection
-	1085  631xESB/632xESB Serial Port Redirection
-	1086  631xESB/632xESB IPMI/KCS0
-	1087  631xESB/632xESB UHCI Redirection
-	1089  631xESB/632xESB BT
-	108a  82546GB Gigabit Ethernet Controller
-		8086 108a  PRO/1000 P Dual Port Server Adapter
-		8086 118a  PRO/1000 P Dual Port Server Adapter
-	108b  82573V Gigabit Ethernet Controller (Copper)
-	108c  82573E Gigabit Ethernet Controller (Copper)
-	108e  82573E KCS (Active Management)
-	108f  Active Management Technology - SOL
-	1091  PRO/100 VM Network Connection
-	1092  PRO/100 VE Network Connection
-	1093  PRO/100 VM Network Connection
-	1094  PRO/100 VE Network Connection
-	1095  PRO/100 VE Network Connection
-	1096  80003ES2LAN Gigabit Ethernet Controller (Copper)
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	1097  631xESB/632xESB DPT LAN Controller (Fiber)
-	1098  80003ES2LAN Gigabit Ethernet Controller (Serdes)
-	1099  82546GB Gigabit Ethernet Controller (Copper)
-		8086 1099  PRO/1000 GT Quad Port Server Adapter
-	109a  82573L Gigabit Ethernet Controller
-		1179 ff10  PRO/1000 PL
-		17aa 2001  ThinkPad T60
-		17aa 207e  ThinkPad X60s
-		8086 109a  PRO/1000 PL Network Connection
-		8086 309c  DeskTop Board D945GTP
-		8086 30a5  DeskTop Board D975XBX
-	109b  82546GB PRO/1000 GF Quad Port Server Adapter
-	109e  82597EX 10GbE Ethernet Controller
-		8086 a01f  PRO/10GbE CX4 Server Adapter
-		8086 a11f  PRO/10GbE CX4 Server Adapter
-	10a0  82571EB PRO/1000 AT Quad Port Bypass Adapter
-	10a1  82571EB PRO/1000 AF Quad Port Bypass Adapter
-	10a4  82571EB Gigabit Ethernet Controller
-		8086 10a4  PRO/1000 PT Quad Port Server Adapter
-		8086 11a4  PRO/1000 PT Quad Port Server Adapter
-	10a5  82571EB Gigabit Ethernet Controller (Fiber)
-		8086 10a5  PRO/1000 PF Quad Port Server Adapter
-		8086 10a6  PRO/1000 PF Quad Port Server Adapter
-	10a7  82575EB Gigabit Network Connection
-		8086 10a8  82575EB Gigabit Riser Card
-	10a9  82575EB Gigabit Backplane Connection
-	10b0  82573L PRO/1000 PL Network Connection
-	10b2  82573V PRO/1000 PM Network Connection
-	10b3  82573E PRO/1000 PM Network Connection
-	10b4  82573L PRO/1000 PL Network Connection
-	10b5  82546GB Gigabit Ethernet Controller (Copper)
-		103c 3109  NC340T PCI-X Quad-port Gigabit Server Adapter
-		8086 1099  PRO/1000 GT Quad Port Server Adapter
-		8086 1199  PRO/1000 GT Quad Port Server Adapter
-	10b6  82598 10GbE PCI-Express Ethernet Controller
-	10b9  82572EI Gigabit Ethernet Controller (Copper)
-		103c 704a  HP 110T PCIe Gigabit Server Adapter
-		8086 1083  PRO/1000 PT Desktop Adapter
-		8086 1093  PRO/1000 PT Desktop Adapter
-	10ba  80003ES2LAN Gigabit Ethernet Controller (Copper)
-	10bb  80003ES2LAN Gigabit Ethernet Controller (Serdes)
-	10bc  82571EB Gigabit Ethernet Controller (Copper)
-		103c 704b  NC364T PCI Express Quad Port Gigabit Server Adapter
-		8086 10bc  PRO/1000 PT Quad Port LP Server Adapter
-		8086 11bc  PRO/1000 PT Quad Port LP Server Adapter
-	10bd  82566DM-2 Gigabit Network Connection
-		1028 0211  OptiPlex 755
-		3039 17aa  Lenovo M57 USFF
-	10be  82567 Gigabit Network Connection
-	10bf  82567LF Gigabit Network Connection
-	10c0  82562V-2 10/100 Network Connection
-	10c2  82562G-2 10/100 Network Connection
-	10c3  82562GT-2 10/100 Network Connection
-	10c4  82562GT 10/100 Network Connection
-	10c5  82562G 10/100 Network Connection
-	10c6  82598EB 10 Gigabit AF Dual Port Network Connection
-		8086 a05f  10 Gigabit XF SR Dual Port Server Adapter
-		8086 a15f  10 Gigabit XF SR Dual Port Server Adapter
-	10c7  82598EB 10 Gigabit AF Network Connection
-		1014 037f  10 Gigabit XF SR Server Adapter
-		1014 0380  10 Gigabit XF LR Server Adapter
-		8086 a05f  10 Gigabit XF SR Server Adapter
-		8086 a15f  10 Gigabit XF SR Server Adapter
-		8086 a16f  10 Gigabit XF SR Server Adapter
-	10c8  82598EB 10 Gigabit AT Network Connection
-		8086 a10c  10 Gigabit AT Server Adapter
-		8086 a11c  10 Gigabit AT Server Adapter
-		8086 a12c  10 Gigabit AT Server Adapter
-	10cb  82567V Gigabit Network Connection
-	10cc  82567LM-2 Gigabit Network Connection
-	10cd  82567LF-2 Gigabit Network Connection
-	10ce  82567V-2 Gigabit Network Connection
-	10d3  82574L Gigabit Network Connection
-		8086 a01f  Gigabit CT Desktop Adapter
-	10d5  82571PT Gigabit PT Quad Port Server ExpressModule
-	10d6  82575GB Gigabit Network Connection
-		8086 10d6  Gigabit VT Quad Port Server Adapter
-		8086 145a  Gigabit VT Quad Port Server Adapter
-	10d9  82571EB Dual Port Gigabit Mezzanine Adapter
-		103c 1716  NC360m Dual Port 1GbE BL-c Adapter
-	10da  82571EB Quad Port Gigabit Mezzanine Adapter
-		103c 1717  NC364m Quad Port 1GbE BL-c Adapter
-	10dd  82598EB 10 Gigabit AT CX4 Network Connection
-	10de  82567LM-3 Gigabit Network Connection
-	10df  82567LF-3 Gigabit Network Connection
-	10e2  82575GB Gigabit Network Connection
-		8086 10e2  Gigabit VT Quad Port Server Adapter
-	10e5  82567LM-4 Gigabit Network Connection
-	10ec  10 Gigabit AT CX4 Network Connection
-		8086 a01f  10 Gigabit CX4 Dual Port Server Adapter
-		8086 a11f  10 Gigabit CX4 Dual Port Server Adapter
-	10f4  10 Gigabit AT Network Connection
-		8086 106f  10 Gigabit XF LR Server Adapter
-	10f5  82567LM Gigabit Network Connection
-	1107  PRO/1000 MF Server Adapter (LX)
-	1130  82815 815 Chipset Host Bridge and Memory Controller Hub
-		1025 1016  Travelmate 612 TX
-		1043 8027  TUSL2-C Mainboard
-		104d 80df  Vaio PCG-FX403
-		8086 4532  D815EEA2 mainboard
-		8086 4557  D815EGEW Mainboard
-	1131  82815 815 Chipset AGP Bridge
-	1132  82815 Chipset Graphics Controller (CGC)
-		1025 1016  Travelmate 612 TX
-		103c 2001  e-pc 40
-		104d 80df  Vaio PCG-FX403
-		8086 4532  D815EEA2 Mainboard
-		8086 4541  D815EEA Motherboard
-		8086 4557  D815EGEW Mainboard
-	1161  82806AA PCI64 Hub Advanced Programmable Interrupt Controller
-		8086 1161  82806AA PCI64 Hub APIC
-	1162  Xscale 80200 Big Endian Companion Chip
-	1200  IXP1200 Network Processor
-		172a 0000  AEP SSL Accelerator
-	1209  8255xER/82551IT Fast Ethernet Controller
-		4c53 1050  CT7 mainboard
-		4c53 1051  CE7 mainboard
-		4c53 1070  PC6 mainboard
-	1221  82092AA PCI to PCMCIA Bridge
-	1222  82092AA IDE Controller
-	1223  SAA7116
-	1225  82452KX/GX [Orion]
-	1226  82596 PRO/10 PCI
-	1227  82865 EtherExpress PRO/100A
-	1228  82556 EtherExpress PRO/100 Smart
-	1229  82557/8/9/0/1 Ethernet Pro 100
-		0e11 3001  82559 Fast Ethernet LOM with Alert on LAN*
-		0e11 3002  82559 Fast Ethernet LOM with Alert on LAN*
-		0e11 3003  82559 Fast Ethernet LOM with Alert on LAN*
-		0e11 3004  82559 Fast Ethernet LOM with Alert on LAN*
-		0e11 3005  82559 Fast Ethernet LOM with Alert on LAN*
-		0e11 3006  82559 Fast Ethernet LOM with Alert on LAN*
-		0e11 3007  82559 Fast Ethernet LOM with Alert on LAN*
-		0e11 b01e  NC3120 Fast Ethernet NIC
-		0e11 b01f  NC3122 Fast Ethernet NIC (dual port)
-		0e11 b02f  NC1120 Ethernet NIC
-		0e11 b04a  Netelligent 10/100TX NIC with Wake on LAN
-		0e11 b0c6  NC3161 Fast Ethernet NIC (embedded, WOL)
-		0e11 b0c7  NC3160 Fast Ethernet NIC (embedded)
-		0e11 b0d7  NC3121 Fast Ethernet NIC (WOL)
-		0e11 b0dd  NC3131 Fast Ethernet NIC (dual port)
-		0e11 b0de  NC3132 Fast Ethernet Module (dual port)
-		0e11 b0e1  NC3133 Fast Ethernet Module (100-FX)
-		0e11 b134  NC3163 Fast Ethernet NIC (embedded, WOL)
-		0e11 b13c  NC3162 Fast Ethernet NIC (embedded)
-		0e11 b144  NC3123 Fast Ethernet NIC (WOL)
-		0e11 b163  NC3134 Fast Ethernet NIC (dual port)
-		0e11 b164  NC3135 Fast Ethernet Upgrade Module (dual port)
-		0e11 b1a4  NC7131 Gigabit Server Adapter
-		1014 005c  82558B Ethernet Pro 10/100
-		1014 01bc  82559 Fast Ethernet LAN On Motherboard
-		1014 01f1  10/100 Ethernet Server Adapter
-		1014 01f2  10/100 Ethernet Server Adapter
-		1014 0207  Ethernet Pro/100 S
-		1014 0232  10/100 Dual Port Server Adapter
-		1014 023a  ThinkPad R30
-		1014 105c  Netfinity 10/100
-		1014 2205  ThinkPad A22p
-		1014 305c  10/100 EtherJet Management Adapter
-		1014 405c  10/100 EtherJet Adapter with Alert on LAN
-		1014 505c  10/100 EtherJet Secure Management Adapter
-		1014 605c  10/100 EtherJet Secure Management Adapter
-		1014 705c  10/100 Netfinity 10/100 Ethernet Security Adapter
-		1014 805c  10/100 Netfinity 10/100 Ethernet Security Adapter
-		1028 009b  10/100 Ethernet Server Adapter
-		1028 00ce  10/100 Ethernet Server Adapter
-		1033 8000  PC-9821X-B06
-		1033 8016  PK-UG-X006
-		1033 801f  PK-UG-X006
-		1033 8026  PK-UG-X006
-		1033 8063  82559-based Fast Ethernet Adapter
-		1033 8064  82559-based Fast Ethernet Adapter
-		103c 10c0  NetServer 10/100TX
-		103c 10c3  NetServer 10/100TX
-		103c 10ca  NetServer 10/100TX
-		103c 10cb  NetServer 10/100TX
-		103c 10e3  NetServer 10/100TX
-		103c 10e4  NetServer 10/100TX
-		103c 1200  NetServer 10/100TX
-		108e 10cf  EtherExpress PRO/100(B)
-		10c3 1100  SmartEther100 SC1100
-		10cf 1115  8255x-based Ethernet Adapter (10/100)
-		10cf 1143  8255x-based Ethernet Adapter (10/100)
-		110a 008b  82551QM Fast Ethernet Multifuction PCI/CardBus Controller
-		114a 0582  PC8 onboard ethernet ETH2
-		1179 0001  8255x-based Ethernet Adapter (10/100)
-		1179 0002  PCI FastEther LAN on Docker
-		1179 0003  8255x-based Fast Ethernet
-		1259 2560  AT-2560 100
-		1259 2561  AT-2560 100 FX Ethernet Adapter
-		1266 0001  NE10/100 Adapter
-		13e9 1000  6221L-4U
-		144d 2501  SEM-2000 MiniPCI LAN Adapter
-		144d 2502  SEM-2100IL MiniPCI LAN Adapter
-		1668 1100  EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 1080  CT8 mainboard
-		4c53 10e0  PSL09 PrPMC
-		8086 0001  EtherExpress PRO/100B (TX)
-		8086 0002  EtherExpress PRO/100B (T4)
-		8086 0003  EtherExpress PRO/10+
-		8086 0004  EtherExpress PRO/100 WfM
-		8086 0005  82557 10/100
-		8086 0006  82557 10/100 with Wake on LAN
-		8086 0007  82558 10/100 Adapter
-		8086 0008  82558 10/100 with Wake on LAN
-		8086 0009  82558B PRO/100+ PCI (TP)
-		8086 000a  EtherExpress PRO/100+ Management Adapter
-		8086 000b  EtherExpress PRO/100+
-		8086 000c  EtherExpress PRO/100+ Management Adapter
-		8086 000d  EtherExpress PRO/100+ Alert On LAN II* Adapter
-		8086 000e  EtherExpress PRO/100+ Management Adapter with Alert On LAN*
-		8086 000f  EtherExpress PRO/100 Desktop Adapter
-		8086 0010  EtherExpress PRO/100 S Management Adapter
-		8086 0011  EtherExpress PRO/100 S Management Adapter
-		8086 0012  EtherExpress PRO/100 S Advanced Management Adapter (D)
-		8086 0013  EtherExpress PRO/100 S Advanced Management Adapter (E)
-		8086 0030  EtherExpress PRO/100  Management Adapter with Alert On LAN* GC
-		8086 0031  EtherExpress PRO/100 Desktop Adapter
-		8086 0040  EtherExpress PRO/100 S Desktop Adapter
-		8086 0041  EtherExpress PRO/100 S Desktop Adapter
-		8086 0042  EtherExpress PRO/100 Desktop Adapter
-		8086 0050  EtherExpress PRO/100 S Desktop Adapter
-		8086 1009  EtherExpress PRO/100+ Server Adapter
-		8086 100c  EtherExpress PRO/100+ Server Adapter (PILA8470B)
-		8086 1012  EtherExpress PRO/100 S Server Adapter (D)
-		8086 1013  EtherExpress PRO/100 S Server Adapter (E)
-		8086 1015  EtherExpress PRO/100 S Dual Port Server Adapter
-		8086 1017  EtherExpress PRO/100+ Dual Port Server Adapter
-		8086 1030  EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server
-		8086 1040  EtherExpress PRO/100 S Server Adapter
-		8086 1041  EtherExpress PRO/100 S Server Adapter
-		8086 1042  EtherExpress PRO/100 Server Adapter
-		8086 1050  EtherExpress PRO/100 S Server Adapter
-		8086 1051  EtherExpress PRO/100 Server Adapter
-		8086 1052  EtherExpress PRO/100 Server Adapter
-		8086 10f0  EtherExpress PRO/100+ Dual Port Adapter
-		8086 1229  82557/8/9 [Ethernet Pro 100]
-		8086 2009  EtherExpress PRO/100 S Mobile Adapter
-		8086 200d  EtherExpress PRO/100 Cardbus
-		8086 200e  EtherExpress PRO/100 LAN+V90 Cardbus Modem
-		8086 200f  EtherExpress PRO/100 SR Mobile Adapter
-		8086 2010  EtherExpress PRO/100 S Mobile Combo Adapter
-		8086 2013  EtherExpress PRO/100 SR Mobile Combo Adapter
-		8086 2016  EtherExpress PRO/100 S Mobile Adapter
-		8086 2017  EtherExpress PRO/100 S Combo Mobile Adapter
-		8086 2018  EtherExpress PRO/100 SR Mobile Adapter
-		8086 2019  EtherExpress PRO/100 SR Combo Mobile Adapter
-		8086 2101  EtherExpress PRO/100 P Mobile Adapter
-		8086 2102  EtherExpress PRO/100 SP Mobile Adapter
-		8086 2103  EtherExpress PRO/100 SP Mobile Adapter
-		8086 2104  EtherExpress PRO/100 SP Mobile Adapter
-		8086 2105  EtherExpress PRO/100 SP Mobile Adapter
-		8086 2106  EtherExpress PRO/100 P Mobile Adapter
-		8086 2107  EtherExpress PRO/100 Network Connection
-		8086 2108  EtherExpress PRO/100 Network Connection
-		8086 2200  EtherExpress PRO/100 P Mobile Combo Adapter
-		8086 2201  EtherExpress PRO/100 P Mobile Combo Adapter
-		8086 2202  EtherExpress PRO/100 SP Mobile Combo Adapter
-		8086 2203  EtherExpress PRO/100+ MiniPCI
-		8086 2204  EtherExpress PRO/100+ MiniPCI
-		8086 2205  EtherExpress PRO/100 SP Mobile Combo Adapter
-		8086 2206  EtherExpress PRO/100 SP Mobile Combo Adapter
-		8086 2207  EtherExpress PRO/100 SP Mobile Combo Adapter
-		8086 2208  EtherExpress PRO/100 P Mobile Combo Adapter
-		8086 2402  EtherExpress PRO/100+ MiniPCI
-		8086 2407  EtherExpress PRO/100+ MiniPCI
-		8086 2408  EtherExpress PRO/100+ MiniPCI
-		8086 2409  EtherExpress PRO/100+ MiniPCI
-		8086 240f  EtherExpress PRO/100+ MiniPCI
-		8086 2410  EtherExpress PRO/100+ MiniPCI
-		8086 2411  EtherExpress PRO/100+ MiniPCI
-		8086 2412  EtherExpress PRO/100+ MiniPCI
-		8086 2413  EtherExpress PRO/100+ MiniPCI
-		8086 3000  82559 Fast Ethernet LAN on Motherboard
-		8086 3001  82559 Fast Ethernet LOM with Basic Alert on LAN*
-		8086 3002  82559 Fast Ethernet LOM with Alert on LAN II*
-		8086 3006  EtherExpress PRO/100 S Network Connection
-		8086 3007  EtherExpress PRO/100 S Network Connection
-		8086 3008  EtherExpress PRO/100 Network Connection
-		8086 3010  EtherExpress PRO/100 S Network Connection
-		8086 3011  EtherExpress PRO/100 S Network Connection
-		8086 3012  EtherExpress PRO/100 Network Connection
-		8086 301a  S845WD1-E mainboard
-		8086 3411  SDS2 Mainboard
-	122d  430FX - 82437FX TSC [Triton I]
-	122e  82371FB PIIX ISA [Triton I]
-	1230  82371FB PIIX IDE [Triton I]
-	1231  DSVD Modem
-	1234  430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX)
-	1235  430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP)
-	1237  440FX - 82441FX PMC [Natoma]
-	1239  82371FB PIIX IDE Interface
-	123b  82380PB PCI to PCI Docking Bridge
-	123c  82380AB (MISA) Mobile PCI-to-ISA Bridge
-	123d  683053 Programmable Interrupt Device
-	123e  82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode)
-	123f  82466GX Integrated Hot-Plug Controller (IHPC)
-	1240  82752 (752) AGP Graphics Accelerator
-	124b  82380FB (MPCI2) Mobile Docking Controller
-	1250  430HX - 82439HX TXC [Triton II]
-	1360  82806AA PCI64 Hub PCI Bridge
-	1361  82806AA PCI64 Hub Controller (HRes)
-		8086 1361  82806AA PCI64 Hub Controller (HRes)
-		8086 8000  82806AA PCI64 Hub Controller (HRes)
-	1460  82870P2 P64H2 Hub PCI Bridge
-	1461  82870P2 P64H2 I/OxAPIC
-		15d9 3480  P4DP6
-		4c53 1090  Cx9/Vx9 mainboard
-	1462  82870P2 P64H2 Hot Plug Controller
-	1960  80960RP (i960RP) Microprocessor
-		101e 0431  MegaRAID 431 RAID Controller
-		101e 0438  MegaRAID 438 Ultra2 LVD RAID Controller
-		101e 0466  MegaRAID 466 Express Plus RAID Controller
-		101e 0467  MegaRAID 467 Enterprise 1500 RAID Controller
-		101e 0490  MegaRAID 490 Express 300 RAID Controller
-		101e 0762  MegaRAID 762 Express RAID Controller
-		101e 09a0  PowerEdge Expandable RAID Controller 2/SC
-		1028 0467  PowerEdge Expandable RAID Controller 2/DC
-		1028 1111  PowerEdge Expandable RAID Controller 2/SC
-		103c 03a2  MegaRAID
-		103c 10c6  MegaRAID 438, NetRAID-3Si
-		103c 10c7  MegaRAID T5, Integrated NetRAID
-		103c 10cc  MegaRAID, Integrated NetRAID
-		103c 10cd  NetRAID-1Si
-		105a 0000  SuperTrak
-		105a 2168  SuperTrak Pro
-		105a 5168  SuperTrak66/100
-		1111 1111  MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC
-		1111 1112  PowerEdge Expandable RAID Controller 2/SC
-		113c 03a2  MegaRAID
-		e4bf 1010  CG1-RADIO
-		e4bf 1020  CU2-QUARTET
-		e4bf 1040  CU1-CHORUS
-		e4bf 3100  CX1-BAND
-	1962  80960RM (i960RM) Microprocessor
-		105a 0000  SuperTrak SX6000 I2O CPU
-	1a21  82840 840 [Carmel] Chipset Host Bridge (Hub A)
-	1a23  82840 840 [Carmel] Chipset AGP Bridge
-	1a24  82840 840 [Carmel] Chipset PCI Bridge (Hub B)
-	1a30  82845 845 [Brookdale] Chipset Host Bridge
-		1028 010e  Optiplex GX240
-		15d9 3280  Supermicro P4SBE Mainboard
-	1a31  82845 845 [Brookdale] Chipset AGP Bridge
-	1a38  5000 Series Chipset DMA Engine
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	1a48  82597EX 10GbE Ethernet Controller
-		8086 a01f  PRO/10GbE SR Server Adapter
-		8086 a11f  PRO/10GbE SR Server Adapter
-	1b48  82597EX 10GbE Ethernet Controller
-		8086 a01f  PRO/10GbE LR Server Adapter
-		8086 a11f  PRO/10GbE LR Server Adapter
-	2410  82801AA ISA Bridge (LPC)
-	2411  82801AA IDE Controller
-	2412  82801AA USB Controller
-	2413  82801AA SMBus Controller
-	2415  82801AA AC'97 Audio Controller
-		1028 0095  Precision Workstation 220 Integrated Digital Audio
-		1028 00b4  OptiPlex GX110
-		110a 0051  Activy 2xx
-		11d4 0040  SoundMAX Integrated Digital Audio
-		11d4 0048  SoundMAX Integrated Digital Audio
-		11d4 5340  SoundMAX Integrated Digital Audio
-		1734 1025  Activy 3xx
-	2416  82801AA AC'97 Modem Controller
-	2418  82801AA PCI Bridge
-	2420  82801AB ISA Bridge (LPC)
-	2421  82801AB IDE Controller
-	2422  82801AB USB Controller
-	2423  82801AB SMBus Controller
-	2425  82801AB AC'97 Audio Controller
-		11d4 0040  SoundMAX Integrated Digital Audio
-		11d4 0048  SoundMAX Integrated Digital Audio
-	2426  82801AB AC'97 Modem Controller
-	2428  82801AB PCI Bridge
-	2440  82801BA ISA Bridge (LPC)
-		8086 5744  S845WD1-E
-	2442  82801BA/BAM USB Controller #1
-		1014 01c6  Netvista A40/A40p
-		1025 1016  Travelmate 612 TX
-		1028 00c7  Dimension 8100
-		1028 00d8  Precision 530
-		1028 010e  Optiplex GX240
-		103c 126f  e-pc 40
-		1043 8027  TUSL2-C Mainboard
-		104d 80df  Vaio PCG-FX403
-		147b 0507  TH7II-RAID
-		8086 4532  D815EEA2 mainboard
-		8086 4557  D815EGEW Mainboard
-		8086 5744  S845WD1-E mainboard
-	2443  82801BA/BAM SMBus Controller
-		1014 01c6  Netvista A40/A40p
-		1025 1016  Travelmate 612 TX
-		1028 00c7  Dimension 8100
-		1028 00d8  Precision 530
-		1028 010e  Optiplex GX240
-		103c 126f  e-pc 40
-		1043 8027  TUSL2-C Mainboard
-		104d 80df  Vaio PCG-FX403
-		147b 0507  TH7II-RAID
-		15d9 3280  Supermicro P4SBE Mainboard
-		8086 4532  D815EEA2 mainboard
-		8086 4557  D815EGEW Mainboard
-		8086 5744  S845WD1-E mainboard
-	2444  82801BA/BAM USB Controller #1
-		1025 1016  Travelmate 612 TX
-		1028 00c7  Dimension 8100
-		1028 00d8  Precision 530
-		1028 010e  Optiplex GX240
-		103c 126f  e-pc 40
-		1043 8027  TUSL2-C Mainboard
-		104d 80df  Vaio PCG-FX403
-		147b 0507  TH7II-RAID
-		8086 4532  D815EEA2 mainboard
-		8086 5744  S845WD1-E mainboard
-	2445  82801BA/BAM AC'97 Audio Controller
-		0e11 000b  Compaq Deskpro EN Audio
-		0e11 0088  Evo D500
-		1014 01c6  Netvista A40/A40p
-		1025 1016  Travelmate 612 TX
-		1028 00d8  Precision 530
-		103c 126f  e-pc 40
-		104d 80df  Vaio PCG-FX403
-		1462 3370  STAC9721 AC
-		147b 0507  TH7II-RAID
-		8086 4557  D815EGEW Mainboard
-	2446  82801BA/BAM AC'97 Modem Controller
-		1025 1016  Travelmate 612 TX
-		104d 80df  Vaio PCG-FX403
-	2448  82801 Mobile PCI Bridge
-# (rev d3) (prog-if (rev d3) (prog-if 01 [Subtractive decode])
-		103c 0934  HP Compaq nw8240 Mobile Workstation
-		103c 099c  NX6110/NC6120
-		103c 309f  HP Compaq nx9420
-		103c 30a3  Compaq nw8440
-		103c 30c1  Compaq 6910p
-		144d c00c  P30 notebook
-		1734 1055  Amilo M1420
-		e4bf cc47  CCG-RUMBA
-	2449  82801BA/BAM/CA/CAM Ethernet Controller
-		0e11 0012  EtherExpress PRO/100 VM
-		0e11 0091  EtherExpress PRO/100 VE
-		1014 01ce  EtherExpress PRO/100 VE
-		1014 01dc  EtherExpress PRO/100 VE
-		1014 01eb  EtherExpress PRO/100 VE
-		1014 01ec  EtherExpress PRO/100 VE
-		1014 0202  EtherExpress PRO/100 VE
-		1014 0205  EtherExpress PRO/100 VE
-		1014 0217  EtherExpress PRO/100 VE
-		1014 0234  EtherExpress PRO/100 VE
-		1014 023d  EtherExpress PRO/100 VE
-		1014 0244  EtherExpress PRO/100 VE
-		1014 0245  EtherExpress PRO/100 VE
-		1014 0265  PRO/100 VE Desktop Connection
-		1014 0267  PRO/100 VE Desktop Connection
-		1014 026a  PRO/100 VE Desktop Connection
-		109f 315d  EtherExpress PRO/100 VE
-		109f 3181  EtherExpress PRO/100 VE
-		1179 ff01  PRO/100 VE Network Connection
-		1186 7801  EtherExpress PRO/100 VE
-		144d 2602  HomePNA 1M CNR
-		8086 3010  EtherExpress PRO/100 VE
-		8086 3011  EtherExpress PRO/100 VM
-		8086 3012  82562EH based Phoneline
-		8086 3013  EtherExpress PRO/100 VE
-		8086 3014  EtherExpress PRO/100 VM
-		8086 3015  82562EH based Phoneline
-		8086 3016  EtherExpress PRO/100 P Mobile Combo
-		8086 3017  EtherExpress PRO/100 P Mobile
-		8086 3018  EtherExpress PRO/100
-	244a  82801BAM IDE U100 Controller
-		1025 1016  Travelmate 612TX
-		104d 80df  Vaio PCG-FX403
-	244b  82801BA IDE U100 Controller
-		1014 01c6  Netvista A40/A40p
-		1028 00c7  Dimension 8100
-		1028 00d8  Precision 530
-		1028 010e  Optiplex GX240
-		103c 126f  e-pc 40
-		1043 8027  TUSL2-C Mainboard
-		147b 0507  TH7II-RAID
-		15d9 3280  Supermicro P4SBE Mainboard
-		8086 4532  D815EEA2 mainboard
-		8086 4557  D815EGEW Mainboard
-		8086 5744  S845WD1-E mainboard
-	244c  82801BAM ISA Bridge (LPC)
-	244e  82801 PCI Bridge
-		1014 0267  NetVista A30p
-		1028 0211  Optiplex 755
-		1458 5000  GA-EP45-DS5 Motherboard
-	2450  82801E ISA Bridge (LPC)
-	2452  82801E USB Controller
-	2453  82801E SMBus Controller
-	2459  82801E Ethernet Controller 0
-	245b  82801E IDE U100 Controller
-	245d  82801E Ethernet Controller 1
-	245e  82801E PCI Bridge
-	2480  82801CA LPC Interface Controller
-	2482  82801CA/CAM USB Controller #1
-		0e11 0030  Evo N600c
-		1014 0220  ThinkPad A/T/X Series
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		15d9 3480  P4DP6
-		8086 1958  vpr Matrix 170B4
-		8086 3424  SE7501HG2 Mainboard
-		8086 4541  Latitude C640
-	2483  82801CA/CAM SMBus Controller
-		1014 0220  ThinkPad A/T/X Series
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		15d9 3480  P4DP6
-		8086 1958  vpr Matrix 170B4
-	2484  82801CA/CAM USB Controller #2
-		0e11 0030  Evo N600c
-		1014 0220  ThinkPad A/T/X Series
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		15d9 3480  P4DP6
-		8086 1958  vpr Matrix 170B4
-	2485  82801CA/CAM AC'97 Audio Controller
-		1013 5959  Crystal WMD Audio Codec
-		1014 0222  ThinkPad A30/A30p/T23
-		1014 0508  ThinkPad T30
-		1014 051c  ThinkPad A/T/X Series
-		1043 1583  L3C (SPDIF)
-		1043 1623  L2B (no SPDIF)
-		1043 1643  L3F
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		144d c006  vpr Matrix 170B4
-	2486  82801CA/CAM AC'97 Modem Controller
-		1014 0223  ThinkPad A/T/X Series
-		1014 0503  ThinkPad R31
-		1014 051a  ThinkPad A/T/X Series
-		101f 1025  620 Series
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		134d 4c21  Dell Inspiron 2100 internal modem
-		144d 2115  vpr Matrix 170B4 internal modem
-		14f1 5421  MD56ORD V.92 MDC Modem
-	2487  82801CA/CAM USB Controller #3
-		0e11 0030  Evo N600c
-		1014 0220  ThinkPad A/T/X Series
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		15d9 3480  P4DP6
-		8086 1958  vpr Matrix 170B4
-	248a  82801CAM IDE U100 Controller
-		0e11 0030  Evo N600c
-		1014 0220  ThinkPad A/T/X Series
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-		8086 1958  vpr Matrix 170B4
-		8086 4541  Latitude C640
-	248b  82801CA Ultra ATA Storage Controller
-		15d9 3480  P4DP6
-	248c  82801CAM ISA Bridge (LPC)
-	24c0  82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge
-		1014 0267  NetVista A30p
-		1462 5800  845PE Max (MS-6580)
-	24c1  82801DBL (ICH4-L) IDE Controller
-	24c2  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1
-		1014 0267  NetVista A30p
-		1014 052d  ThinkPad
-		1025 005a  TravelMate 290
-		1028 0126  Optiplex GX260
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m
-		1028 0196  Inspiron 5160
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 08b0  tc1100 tablet
-		1043 8089  P4B533
-		1071 8160  MIM2000
-		114a 0582  PC8 onboard USB 1.x
-		144d c005  X10 Laptop
-		144d c00c  P30/P35 notebook
-		1462 5800  845PE Max (MS-6580)
-		1509 2990  Averatec 5110H laptop
-		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
-		1734 1055  Amilo M1420
-		4c53 1090  Cx9 / Vx9 mainboard
-		8086 24c2  Latitude X300
-		8086 4541  Latitude D400
-		e4bf 0cc9  CC9-SAMBA
-		e4bf 0cd2  CD2-BEBOP
-	24c3  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller
-		1014 0267  NetVista A30p
-		1014 052d  ThinkPad
-		1025 005a  TravelMate 290
-		1028 0126  Optiplex GX260
-		1028 014f  Latitude X300
-		1028 018d  Inspiron 700m/710m
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 08b0  tc1100 tablet
-		1071 8160  MIM2000
-		114a 0582  PC8 onboard SMbus
-		144d c005  X10 Laptop
-		144d c00c  P30/P35 notebook
-		1458 24c2  GA-8PE667 Ultra
-		1462 5800  845PE Max (MS-6580)
-		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
-		1734 1055  Amilo M1420
-		4c53 1090  Cx9 / Vx9 mainboard
-		e4bf 0cc9  CC9-SAMBA
-		e4bf 0cd2  CD2-BEBOP
-	24c4  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2
-		1014 0267  NetVista A30p
-		1014 052d  ThinkPad
-		1025 005a  TravelMate 290
-		1028 0126  Optiplex GX260
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m
-		1028 0196  Inspiron 5160
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 08b0  tc1100 tablet
-		1043 8089  P4B533
-		1071 8160  MIM2000
-		144d c00c  P30/P35 notebook
-		1462 5800  845PE Max (MS-6580)
-		1509 2990  Averatec 5110H
-		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
-		4c53 1090  Cx9 / Vx9 mainboard
-		8086 24c2  Latitude X300
-		8086 4541  Latitude D400
-		e4bf 0cc9  CC9-SAMBA
-		e4bf 0cd2  CD2-BEBOP
-	24c5  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller
-		0e11 00b8  Analog Devices Inc. codec [SoundMAX]
-		1014 0267  NetVista A30p
-		1014 0537  ThinkPad T41
-		1014 055f  Thinkpad R50e model 1634
-		1025 005a  TravelMate 290
-		1028 0139  Latitude D400
-		1028 014f  Latitude X300
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m [SigmaTel STAC9750,51]
-		1028 0196  Inspiron 5160
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 08b0  tc1100 tablet
-		1043 1713  M6800N
-		1043 80b0  P4B533
-		1071 8160  MIM2000
-		1179 0201  Toshiba Tecra M1
-		144d c005  X10 Laptop
-		144d c00c  P30/P35 notebook
-		1458 a002  GA-8PE667 Ultra
-		1462 5800  845PE Max (MS-6580)
-		1734 1005  D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T
-		1734 1055  Amilo M1420
-		8086 24c5  Dell Dimension 2400
-		a002 1458  Realtek AC'97 codec [ALC655]
-	24c6  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller
-		1014 0524  ThinkPad T41
-		1014 0525  ThinkPad
-		1014 0559  ThinkPad R50e
-		1025 003c  Aspire 2001WLCi (Compal CL50 motherboard) implementation
-		1025 005a  TravelMate 290
-		1028 0196  Inspiron 5160
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 08b0  tc1100 tablet
-		1043 1826  M6800N
-		1071 8160  MIM2000
-		144d 2115  X10 Laptop
-		144d c00c  P30/P35 notebook
-# Conexant HSF Softmodem (CXT22)
-		14f1 5422  D480 MDC V.9x Modem
-	24c7  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3
-		1014 0267  NetVista A30p
-		1014 052d  ThinkPad
-		1025 005a  TravelMate 290
-		1028 0126  Optiplex GX260
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m
-		1028 0196  Inspiron 5160
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 08b0  tc1100 tablet
-		1043 8089  P4B533
-		1071 8160  MIM2000
-		144d c00c  P30/P35 notebook
-		1462 5800  845PE Max (MS-6580)
-		1509 2990  Averatec 5110H
-		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
-		4c53 1090  Cx9 / Vx9 mainboard
-		8086 24c2  Latitude X300
-		8086 4541  Latitude D400
-		e4bf 0cc9  CC9-SAMBA
-		e4bf 0cd2  CD2-BEBOP
-	24ca  82801DBM (ICH4-M) IDE Controller
-		1014 052d  ThinkPad
-		1025 005a  TravelMate 290
-		1028 014f  Latitude X300
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m
-		1028 0196  Inspiron 5160
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 08b0  tc1100 tablet
-		1071 8160  MIM2000
-		144d c005  X10 Laptop
-		144d c00c  P30/P35 notebook
-		1734 1055  Amilo M1420
-		8086 4541  Latitude D400
-	24cb  82801DB (ICH4) IDE Controller
-		1014 0267  NetVista A30p
-		1028 0126  Optiplex GX260
-		1043 8089  P4B533
-		114a 0582  PC8 onboard IDE
-		1458 24c2  GA-8PE667 Ultra
-		1462 5800  845PE Max (MS-6580)
-		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
-		4c53 1090  Cx9 / Vx9 mainboard
-		e4bf 0cc9  CC9-SAMBA
-		e4bf 0cd2  CD2-BEBOP
-	24cc  82801DBM (ICH4-M) LPC Interface Bridge
-		144d c00c  P30 notebook
-		1734 1055  Amilo M1420
-	24cd  82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller
-		1014 0267  NetVista A30p
-		1014 052e  ThinkPad
-		1025 005a  TravelMate 290
-		1028 011d  Latitude D600
-		1028 0126  Optiplex GX260
-		1028 0139  Latitude D400
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m
-		1028 0196  Inspiron 5160
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 08b0  tc1100 tablet
-		1043 8089  P4B533
-		1071 8160  MIM2000
-		114a 0582  PC8 onboard USB 2.0
-		1179 ff00  Satellite 2430
-		144d c005  X10 Laptop
-		144d c00c  P30/P35 notebook
-		1462 3981  845PE Max (MS-6580)
-		1509 1968  Averatec 5110H
-		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
-		1734 1055  Amilo M1420
-		4c53 1090  Cx9 / Vx9 mainboard
-		8086 24c2  Latitude X300
-		e4bf 0cc9  CC9-SAMBA
-		e4bf 0cd2  CD2-BEBOP
-	24d0  82801EB/ER (ICH5/ICH5R) LPC Interface Bridge
-	24d1  82801EB (ICH5) SATA Controller
-		1028 0169  Precision 470
-		1028 019a  PowerEdge SC1425
-		103c 12bc  d530 CMT (DG746A)
-		1043 80a6  P4P800 series motherboard
-		1458 24d1  GA-8IPE1000 Pro2 motherboard (865PE)
-		1462 7280  865PE Neo2 (MS-6728)
-		1565 5200  P4TSV Motherboard (865G)
-		15d9 4580  P4SCE Mainboard
-		8086 3427  S875WP1-E mainboard
-		8086 4246  Desktop Board D865GBF
-		8086 4c43  Desktop Board D865GLC
-		8086 524c  D865PERL mainboard
-	24d2  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1
-		1014 02dd  eServer xSeries server mainboard
-		1014 02ed  eServer xSeries server mainboard
-		1028 0169  Precision 470
-		1028 016c  PowerEdge 1850
-		1028 016d  PowerEdge 2850 onboard UHCI
-		1028 0183  PowerEdge 1800
-		1028 019a  PowerEdge SC1425
-		103c 006a  NX9500
-		103c 12bc  d530 CMT (DG746A)
-		1043 80a6  P4P800/P5P800 series motherboard
-		1458 24d2  GA-8IPE1000/8KNXP motherboard
-		1462 7280  865PE Neo2 (MS-6728)
-		1565 3101  P4TSV Motherboard (865G)
-		15d9 4580  P4SCE Mainboard
-		1734 101c  PRIMERGY RX/TX series onboard UHCI
-		8086 3427  S875WP1-E mainboard
-		8086 4246  Desktop Board D865GBF
-		8086 4c43  Desktop Board D865GLC
-		8086 524c  D865PERL mainboard
-	24d3  82801EB/ER (ICH5/ICH5R) SMBus Controller
-		1014 02dd  eServer xSeries server mainboard
-		1014 02ed  eServer xSeries server mainboard
-		1028 0156  Precision 360
-		1028 0169  Precision 470
-		103c 12bc  d330 uT
-		1043 80a6  P4P800 Mainboard
-		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
-		1462 7280  865PE Neo2 (MS-6728)
-		1565 3101  P4TSV Motherboard (865G)
-		15d9 4580  P4SCE Mainboard
-		1734 101c  PRIMERGY RX/TX S2 series SMBus
-		8086 3427  S875WP1-E mainboard
-		8086 4246  Desktop Board D865GBF
-		8086 4c43  Desktop Board D865GLC
-		8086 524c  D865PERL mainboard
-	24d4  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2
-		1014 02dd  eServer xSeries server mainboard
-		1014 02ed  eServer xSeries server mainboard
-		1028 0169  Precision 470
-		1028 016c  PowerEdge 1850
-		1028 016d  PowerEdge 2850 onboard UHCI
-		1028 0183  PowerEdge 1800
-		1028 019a  PowerEdge SC1425
-		103c 006a  NX9500
-		103c 12bc  d530 CMT (DG746A)
-		1043 80a6  P4P800/P5P800 series motherboard
-		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
-		1462 7280  865PE Neo2 (MS-6728)
-		1565 3101  P4TSV Motherboard (865G)
-		15d9 4580  P4SCE Mainboard
-		1734 101c  PRIMERGY RX/TX S2 series onboard UHCI
-		8086 3427  S875WP1-E mainboard
-		8086 4246  Desktop Board D865GBF
-		8086 4c43  Desktop Board D865GLC
-		8086 524c  D865PERL mainboard
-	24d5  82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller
-		100a 147b  Abit IS7-E motherboard
-		1028 0169  Precision 470
-		103c 006a  NX9500
-		103c 12bc  d330 uT
-		1043 80f3  P4P800 Mainboard
-		1043 810f  P5P800-MX Mainboard
-		1458 a002  GA-8IPE1000/8KNXP motherboard
-		1462 0080  865PE Neo2-V (MS-6788) Mainboard
-		1462 7280  865PE Neo2 (MS-6728)
-		8086 a000  D865PERL mainboard
-		8086 e000  D865PERL mainboard
-		8086 e001  Desktop Board D865GBF
-		8086 e002  SoundMax Intergrated Digital Audio
-	24d6  82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller
-		103c 006a  NX9500
-	24d7  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3
-		1014 02ed  xSeries server mainboard
-		1028 0169  Precision 470
-		1028 016c  PowerEdge 1850
-		1028 016d  PowerEdge 2850 onboard UHCI
-		1028 0183  PowerEdge 1800
-		103c 006a  NX9500
-		103c 12bc  d530 CMT (DG746A)
-		1043 80a6  P4P800/P5P800 series motherboard
-		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
-		1462 7280  865PE Neo2 (MS-6728)
-		1565 3101  P4TSV Motherboard (865G)
-		15d9 4580  P4SCE Mainboard
-		1734 101c  PRIMERGY RX/TX S2 series onboard UHCI
-		8086 3427  S875WP1-E mainboard
-		8086 4246  Desktop Board D865GBF
-		8086 4c43  Desktop Board D865GLC
-		8086 524c  D865PERL mainboard
-	24db  82801EB/ER (ICH5/ICH5R) IDE Controller
-		1014 02dd  eServer xSeries server mainboard
-		1014 02ed  eServer xSeries server mainboard
-		1028 0169  Precision 470
-		1028 016c  PowerEdge 1850
-		1028 016d  PowerEdge 2850 onboard UHCI
-		1028 019a  PowerEdge SC1425
-		103c 006a  NX9500
-		103c 12bc  d530 CMT (DG746A)
-		1043 80a6  P4P800/P5P800 series motherboard
-		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
-		1462 7280  865PE Neo2 (MS-6728)
-		1462 7580  MSI 875P
-		1565 3101  P4TSV Motherboard (865G)
-		15d9 4580  P4SCE Mainboard
-		1734 101c  PRIMERGY RX/TX S2 series onboard IDE
-		8086 24db  P4C800 Mainboard
-		8086 3427  S875WP1-E mainboard
-		8086 4246  Desktop Board D865GBF
-		8086 4c43  Desktop Board D865GLC
-		8086 524c  D865PERL mainboard
-	24dc  82801EB (ICH5) LPC Interface Bridge
-	24dd  82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller
-		1014 02dd  eServer xSeries server mainboard
-		1014 02ed  eServer xSeries server mainboard
-		1028 0169  Precision 470
-		1028 016c  PowerEdge 1850
-		1028 016d  PowerEdge 2850 onboard EHCI
-		1028 0183  PowerEdge 1800
-		1028 019a  PowerEdge SC1425
-		103c 006a  NX9500
-		103c 12bc  d530 CMT (DG746A)
-		1043 80a6  P4P800/P5P800 series motherboard
-		1458 5006  GA-8IPE1000 Pro2 motherboard (865PE)
-		1462 7280  865PE Neo2 (MS-6728)
-		8086 3427  S875WP1-E mainboard
-		8086 4246  Desktop Board D865GBF
-		8086 4c43  Desktop Board D865GLC
-		8086 524c  D865PERL mainboard
-	24de  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4
-		1014 02ed  xSeries server mainboard
-		1028 0169  Precision 470
-		1043 80a6  P4P800/P5P800 series motherboard
-		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
-		1462 7280  865PE Neo2 (MS-6728)
-		1565 3101  P4TSV Motherboard (865G)
-		15d9 4580  P4SCE Mainboard
-		1734 101c  PRIMERGY RX/TX S2 series onboard UHCI
-		8086 3427  S875WP1-E mainboard
-		8086 4246  Desktop Board D865GBF
-		8086 4c43  Desktop Board D865GLC
-		8086 524c  D865PERL mainboard
-	24df  82801ER (ICH5R) SATA Controller
-	2500  82820 820 (Camino) Chipset Host Bridge (MCH)
-		1028 0095  Precision Workstation 220 Chipset
-		1043 801c  P3C-2000 system chipset
-	2501  82820 820 (Camino) Chipset Host Bridge (MCH)
-		1043 801c  P3C-2000 system chipset
-	250b  82820 820 (Camino) Chipset Host Bridge
-	250f  82820 820 (Camino) Chipset AGP Bridge
-	2520  82805AA MTH Memory Translator Hub
-	2521  82804AA MRH-S Memory Repeater Hub for SDRAM
-	2530  82850 850 (Tehama) Chipset Host Bridge (MCH)
-		1028 00c7  Dimension 8100
-		147b 0507  TH7II-RAID
-	2531  82860 860 (Wombat) Chipset Host Bridge (MCH)
-		1028 00d8  Precision 530
-	2532  82850 850 (Tehama) Chipset AGP Bridge
-	2533  82860 860 (Wombat) Chipset AGP Bridge
-	2534  82860 860 (Wombat) Chipset PCI Bridge
-	2540  E7500 Memory Controller Hub
-		15d9 3480  P4DP6
-	2541  E7500/E7501 Host RASUM Controller
-		15d9 3480  P4DP6
-		4c53 1090  Cx9 / Vx9 mainboard
-		8086 3424  SE7501HG2 Mainboard
-	2543  E7500/E7501 Hub Interface B PCI-to-PCI Bridge
-	2544  E7500/E7501 Hub Interface B RASUM Controller
-		4c53 1090  Cx9 / Vx9 mainboard
-	2545  E7500/E7501 Hub Interface C PCI-to-PCI Bridge
-	2546  E7500/E7501 Hub Interface C RASUM Controller
-	2547  E7500/E7501 Hub Interface D PCI-to-PCI Bridge
-	2548  E7500/E7501 Hub Interface D RASUM Controller
-	254c  E7501 Memory Controller Hub
-		4c53 1090  Cx9 / Vx9 mainboard
-		8086 3424  SE7501HG2 Mainboard
-	2550  E7505 Memory Controller Hub
-	2551  E7505/E7205 Series RAS Controller
-	2552  E7505/E7205 PCI-to-AGP Bridge
-	2553  E7505 Hub Interface B PCI-to-PCI Bridge
-	2554  E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller
-	255d  E7205 Memory Controller Hub
-	2560  82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface
-		1028 0126  Optiplex GX260
-		1458 2560  GA-8PE667 Ultra
-		1462 5800  845PE Max (MS-6580)
-	2561  82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge
-	2562  82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device
-		0e11 00b9  Evo D510 SFF
-		1014 0267  NetVista A30p
-		1734 1003  D1521 Mainboard (Fujitsu-Siemens)
-		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
-	2570  82865G/PE/P DRAM Controller/Host-Hub Interface
-		103c 006a  NX9500
-		103c 12bc  d330 uT
-		1043 80f2  P4P800/P5P800 series motherboard
-		1458 2570  GA-8IPE1000 Pro2 motherboard (865PE)
-	2571  82865G/PE/P PCI to AGP Controller
-	2572  82865G Integrated Graphics Controller
-		1028 019d  Dimension 3000
-		103c 12bc  D530 sff(dc578av)
-		1043 80a5  P5P800-MX Mainboard
-		1734 101b  Fujitsu-Siemens Scenic E300 i865GV
-		8086 4246  Desktop Board D865GBF
-		8086 4c43  Desktop Board D865GLC
-	2573  82865G/PE/P PCI to CSA Bridge
-	2576  82865G/PE/P Processor to I/O Memory Interface
-	2578  82875P/E7210 Memory Controller Hub
-		1458 2578  GA-8KNXP motherboard (875P)
-		1462 7580  MS-6758 (875P Neo)
-		15d9 4580  P4SCE Motherboard
-	2579  82875P Processor to AGP Controller
-	257b  82875P/E7210 Processor to PCI to CSA Bridge
-	257e  82875P/E7210 Processor to I/O Memory Interface
-	2580  82915G/P/GV/GL/PL/910GL Memory Controller Hub
-		1458 2580  GA-8I915ME-G Mainboard
-		1462 7028  915P/G Neo2
-		1734 105b  Scenic W620
-	2581  82915G/P/GV/GL/PL/910GL PCI Express Root Port
-	2582  82915G/GV/910GL Integrated Graphics Controller
-		1028 1079  Optiplex GX280
-		103c 3006  DC7100 SFF(DX878AV)
-		1043 2582  P5GD1-VW Mainboard
-		1458 2582  GA-8I915ME-G Mainboard
-		1734 105b  Scenic W620
-		1849 2582  ASRock P4Dual-915GL
-	2584  82925X/XE Memory Controller Hub
-		1028 0177  Dimension 8400
-	2585  82925X/XE PCI Express Root Port
-	2588  E7220/E7221 Memory Controller Hub
-	2589  E7220/E7221 PCI Express Root Port
-	258a  E7221 Integrated Graphics Controller
-	2590  Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller
-		1014 0575  ThinkPad Z60t
-		1028 0182  Dell Latidude C610
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		104d 81b7  Vaio VGN-S3XP
-		a304 81b7  Vaio VGN-S3XP
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2591  Mobile 915GM/PM Express PCI Express Root Port
-		103c 0934  HP Compaq nw8240 Mobile Workstation
-	2592  Mobile 915GM/GMS/910GML Express Graphics Controller
-		103c 099c  NX6110/NC6120
-		103c 308a  NC6220
-		1043 1881  GMA 900 915GM Integrated Graphics
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	25a1  6300ESB LPC Interface Controller
-	25a2  6300ESB PATA Storage Controller
-		1775 10d0  V5D Single Board Computer IDE
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10e0  PSL09 PrPMC
-	25a3  6300ESB SATA Storage Controller
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10d0  Telum ASLP10 Processor AMC
-		4c53 10e0  PSL09 PrPMC
-	25a4  6300ESB SMBus Controller
-		1775 10d0  V5D Single Board Computer
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10d0  Telum ASLP10 Processor AMC
-		4c53 10e0  PSL09 PrPMC
-	25a6  6300ESB AC'97 Audio Controller
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-	25a7  6300ESB AC'97 Modem Controller
-	25a9  6300ESB USB Universal Host Controller
-		1775 10d0  V5D Single Board Computer USB
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10d0  Telum ASLP10 Processor AMC
-		4c53 10e0  PSL09 PrPMC
-	25aa  6300ESB USB Universal Host Controller
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10d0  Telum ASLP10 Processor AMC
-		4c53 10e0  PSL09 PrPMC
-	25ab  6300ESB Watchdog Timer
-		1775 10d0  V5D Single Board Computer
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10d0  Telum ASLP10 Processor AMC
-		4c53 10e0  PSL09 PrPMC
-	25ac  6300ESB I/O Advanced Programmable Interrupt Controller
-		1775 10d0  V5D Single Board Computer
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10d0  Telum ASLP10 Processor AMC
-		4c53 10e0  PSL09 PrPMC
-	25ad  6300ESB USB2 Enhanced Host Controller
-		1775 10d0  V5D Single Board Computer USB 2.0
-		1775 1100  CR11/VR11 Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10d0  Telum ASLP10 Processor AMC
-		4c53 10e0  PSL09 PrPMC
-	25ae  6300ESB 64-bit PCI-X Bridge
-	25b0  6300ESB SATA RAID Controller
-		1775 1100  CR11/VR11 Single Board Computer
-		4c53 10d0  Telum ASLP10 Processor AMC
-		4c53 10e0  PSL09 PrPMC
-	25c0  5000X Chipset Memory Controller Hub
-	25d0  5000Z Chipset Memory Controller Hub
-	25d4  5000V Chipset Memory Controller Hub
-		15d9 8680  X7DVL-E-O motherboard
-	25d8  5000P Chipset Memory Controller Hub
-		8086 3476  Intel S5000PSLSATA Server Board
-	25e2  5000 Series Chipset PCI Express x4 Port 2
-	25e3  5000 Series Chipset PCI Express x4 Port 3
-	25e4  5000 Series Chipset PCI Express x4 Port 4
-	25e5  5000 Series Chipset PCI Express x4 Port 5
-	25e6  5000 Series Chipset PCI Express x4 Port 6
-	25e7  5000 Series Chipset PCI Express x4 Port 7
-	25f0  5000 Series Chipset FSB Registers
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	25f1  5000 Series Chipset Reserved Registers
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	25f3  5000 Series Chipset Reserved Registers
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	25f5  5000 Series Chipset FBD Registers
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	25f6  5000 Series Chipset FBD Registers
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	25f7  5000 Series Chipset PCI Express x8 Port 2-3
-	25f8  5000 Series Chipset PCI Express x8 Port 4-5
-	25f9  5000 Series Chipset PCI Express x8 Port 6-7
-	25fa  5000X Chipset PCI Express x16 Port 4-7
-	2600  E8500/E8501 Hub Interface 1.5
-	2601  E8500/E8501 PCI Express x4 Port D
-	2602  E8500/E8501 PCI Express x4 Port C0
-	2603  E8500/E8501 PCI Express x4 Port C1
-	2604  E8500/E8501 PCI Express x4 Port B0
-	2605  E8500/E8501 PCI Express x4 Port B1
-	2606  E8500/E8501 PCI Express x4 Port A0
-	2607  E8500/E8501 PCI Express x4 Port A1
-	2608  E8500/E8501 PCI Express x8 Port C
-	2609  E8500/E8501 PCI Express x8 Port B
-	260a  E8500/E8501 PCI Express x8 Port A
-	260c  E8500/E8501 IMI Registers
-	2610  E8500/E8501 FSB Registers
-	2611  E8500/E8501 Address Mapping Registers
-	2612  E8500/E8501 RAS Registers
-	2613  E8500/E8501 Reserved Registers
-	2614  E8500/E8501 Reserved Registers
-	2615  E8500/E8501 Miscellaneous Registers
-	2617  E8500/E8501 Reserved Registers
-	2618  E8500/E8501 Reserved Registers
-	2619  E8500/E8501 Reserved Registers
-	261a  E8500/E8501 Reserved Registers
-	261b  E8500/E8501 Reserved Registers
-	261c  E8500/E8501 Reserved Registers
-	261d  E8500/E8501 Reserved Registers
-	261e  E8500/E8501 Reserved Registers
-	2620  E8500/E8501 eXternal Memory Bridge
-	2621  E8500/E8501 XMB Miscellaneous Registers
-	2622  E8500/E8501 XMB Memory Interleaving Registers
-	2623  E8500/E8501 XMB DDR Initialization and Calibration
-	2624  E8500/E8501 XMB Reserved Registers
-	2625  E8500/E8501 XMB Reserved Registers
-	2626  E8500/E8501 XMB Reserved Registers
-	2627  E8500/E8501 XMB Reserved Registers
-	2640  82801FB/FR (ICH6/ICH6R) LPC Interface Bridge
-		1462 7028  915P/G Neo2
-		1734 105c  Scenic W620
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2641  82801FBM (ICH6M) LPC Interface Bridge
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-	2642  82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge
-	2651  82801FB/FW (ICH6/ICH6W) SATA Controller
-		1028 0179  Optiplex GX280
-		1043 2601  P5GD1-VW Mainboard
-		1734 105c  Scenic W620
-		8086 4147  D915GAG Motherboard
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2652  82801FR/FRW (ICH6R/ICH6RW) SATA Controller
-		1028 0177  Dimension 8400
-		1462 7028  915P/G Neo2
-	2653  82801FBM (ICH6M) SATA Controller
-	2658  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1
-		1028 0177  Dimension 8400
-		1028 0179  Optiplex GX280
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		1043 80a6  P5GD1-VW Mainboard
-		1458 2558  GA-8I915ME-G Mainboard
-		1462 7028  915P/G Neo2
-		1734 105c  Scenic W620
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2659  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2
-		1028 0177  Dimension 8400
-		1028 0179  Optiplex GX280
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		1043 80a6  P5GD1-VW Mainboard
-		1458 2659  GA-8I915ME-G Mainboard
-		1462 7028  915P/G Neo2
-		1734 105c  Scenic W620
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	265a  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3
-		1028 0177  Dimension 8400
-		1028 0179  Optiplex GX280
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		1043 80a6  P5GD1-VW Mainboard
-		1458 265a  GA-8I915ME-G Mainboard
-		1462 7028  915P/G Neo2
-		1734 105c  Scenic W620
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	265b  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4
-		1028 0177  Dimension 8400
-		1028 0179  Optiplex GX280
-		103c 099c  NX6110/NC6120
-		1043 80a6  P5GD1-VW Mainboard
-		1458 265a  GA-8I915ME-G Mainboard
-		1462 7028  915P/G Neo2
-		1734 105c  Scenic W620
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	265c  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller
-		1028 0177  Dimension 8400
-		1028 0179  Optiplex GX280
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		1043 80a6  P5GD1-VW Mainboard
-		1458 5006  GA-8I915ME-G Mainboard
-		1462 7028  915P/G Neo2
-		1734 105c  Scenic W620
-		8086 265c  Dimension 3100
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2660  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1
-		103c 0934  HP Compaq nw8240 Mobile Workstation
-		103c 099c  NX6110/NC6120
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2662  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2
-		103c 0934  HP Compaq nw8240 Mobile Workstation
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2664  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2666  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2668  82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller
-		1014 05b7  ThinkPad Z60t
-# based on the PTGD1-LA motherboard
-		103c 2a09  PufferM-UL8E
-		1043 1173  Asus A6VC
-		1043 814e  P5GD1-VW Mainboard
-		1462 7028  915P/G Neo2
-	266a  82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller
-		1028 0177  Dimension 8400
-		1028 0179  Optiplex GX280
-		1043 80a6  P5GD1-VW Mainboard
-		1458 266a  GA-8I915ME-G Mainboard
-		1462 7028  915P/G Neo2
-		1734 105c  Scenic W620
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	266c  82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller
-	266d  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller
-		1025 006a  Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop)
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-	266e  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller
-		1025 006a  Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop)
-		1028 0177  Dimension 8400
-		1028 0179  Optiplex GX280
-		1028 0182  Latitude D610 Laptop
-		1028 0187  Dell Precision M70 Laptop
-		1028 0188  Inspiron 6000 laptop
-		103c 0934  Compaq nw8240/nx8220
-		103c 0944  Compaq NC6220
-		103c 099c  NX6110/NC6120
-		103c 3006  DC7100 SFF(DX878AV)
-		1458 a002  GA-8I915ME-G Mainboard
-		152d 0745  Packard Bell A8550 Laptop
-		1734 105a  Scenic W620
-	266f  82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller
-		1028 0177  Dimension 8400
-		103c 0934  Compaq nw8240/nx8220
-		103c 099c  NX6110/NC6120
-		1043 80a6  P5GD1-VW Mainboard
-		1458 266f  GA-8I915ME-G Mainboard
-		1462 7028  915P/G Neo2
-		1734 105c  Scenic W620
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	2670  631xESB/632xESB/3100 Chipset LPC Interface Controller
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	2680  631xESB/632xESB/3100 Chipset SATA IDE Controller
-	2681  631xESB/632xESB SATA AHCI Controller
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	2682  631xESB/632xESB SATA RAID Controller
-	2683  631xESB/632xESB SATA RAID Controller
-	2688  631xESB/632xESB/3100 Chipset UHCI USB Controller #1
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	2689  631xESB/632xESB/3100 Chipset UHCI USB Controller #2
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	268a  631xESB/632xESB/3100 Chipset UHCI USB Controller #3
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	268b  631xESB/632xESB/3100 Chipset UHCI USB Controller #4
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	268c  631xESB/632xESB/3100 Chipset EHCI USB2 Controller
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	2690  631xESB/632xESB/3100 Chipset PCI Express Root Port 1
-	2692  631xESB/632xESB/3100 Chipset PCI Express Root Port 2
-	2694  631xESB/632xESB/3100 Chipset PCI Express Root Port 3
-	2696  631xESB/632xESB/3100 Chipset PCI Express Root Port 4
-	2698  631xESB/632xESB AC '97 Audio Controller
-	2699  631xESB/632xESB AC '97 Modem Controller
-	269a  631xESB/632xESB High Definition Audio Controller
-	269b  631xESB/632xESB/3100 Chipset SMBus Controller
-		15d9 8680  X7DVL-E-O motherboard
-		8086 3476  Intel S5000PSLSATA Server Board
-	269e  631xESB/632xESB IDE Controller
-		15d9 8680  X7DVL-E-O motherboard
-	2770  82945G/GZ/P/PL Memory Controller Hub
-		1028 01ad  OptiPlex GX620
-		107b 5048  E4500
-		8086 544e  DeskTop Board D945GTP
-	2771  82945G/GZ/P/PL PCI Express Root Port
-	2772  82945G/GZ Integrated Graphics Controller
-		8086 544e  DeskTop Board D945GTP
-		8086 d605  Intel Desktop Board D945GCCR
-	2774  82955X Memory Controller Hub
-	2775  82955X PCI Express Root Port
-	2776  82945G/GZ Integrated Graphics Controller
-	2778  E7230/3000/3010 Memory Controller Hub
-		1028 01df  PowerEdge SC440
-		1028 01e6  PowerEdge 860
-	2779  E7230/3000/3010 PCI Express Root Port
-	277a  82975X/3010 PCI Express Root Port
-	277c  82975X Memory Controller Hub
-		1043 8178  P5WDG2 WS Professional motherboard
-	277d  82975X PCI Express Root Port
-	2782  82915G Integrated Graphics Controller
-		1043 2582  P5GD1-VW Mainboard
-		1734 105b  Scenic W620
-	2792  Mobile 915GM/GMS/910GML Express Graphics Controller
-		103c 099c  NX6110/NC6120
-		1043 1881  GMA 900 915GM Integrated Graphics
-		e4bf 0ccd  CCD-CALYPSO
-		e4bf 0cd3  CD3-JIVE
-		e4bf 58b1  XB1
-	27a0  Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub
-		1025 006c  9814 WKMI
-		1028 01d7  XPS M1210
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-		17aa 2015  ThinkPad T60
-		17aa 2017  ThinkPad T60/R60 series
-	27a1  Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port
-		103c 30a3  Compaq nw8440
-	27a2  Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller
-		103c 30a1  NC2400
-		17aa 201a  ThinkPad T60/R60 series
-	27a6  Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller
-		103c 30a1  NC2400
-		17aa 201a  ThinkPad T60/R60 series
-	27ac  Mobile 945GME Express Memory Controller Hub
-	27ad  Mobile 945GME Express PCI Express Root Port
-	27ae  Mobile 945GME Express Integrated Graphics Controller
-	27b0  82801GH (ICH7DH) LPC Interface Bridge
-		8086 544e  DeskTop Board D945GTP
-	27b8  82801GB/GR (ICH7 Family) LPC Interface Bridge
-		1028 01e6  PowerEdge 860
-		1043 8179  P5KPL-VM Motherboard
-		107b 5048  E4500
-		8086 544e  DeskTop Board D945GTP
-	27b9  82801GBM (ICH7-M) LPC Interface Bridge
-		1028 01d7  XPS M1210
-		103c 309f  HP Compaq nx9420
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-		10f7 8338  Panasonic CF-Y5 laptop
-		17aa 2009  ThinkPad T60/R60 series
-	27bd  82801GHM (ICH7-M DH) LPC Interface Bridge
-		1025 006c  9814 WKMI
-	27c0  82801GB/GR/GH (ICH7 Family) SATA IDE Controller
-		1028 01ad  OptiPlex GX620
-		1028 01df  PowerEdge SC440
-		1028 01e6  PowerEdge 860
-		1043 8179  P5KPL-VM Motherboard
-		107b 5048  E4500
-		1462 2310  MSI Hetis 945
-		1462 7236  945P Neo3-F Rev. 2.2 motherboard
-		8086 544e  DeskTop Board D945GTP
-	27c1  82801GR/GH (ICH7 Family) SATA AHCI Controller
-		1028 01df  PowerEdge SC440
-		8086 5842  DeskTop Board D975XBX
-	27c3  82801GR/GH (ICH7 Family) SATA RAID Controller
-		8086 544e  DeskTop Board D945GTP
-	27c4  82801GBM/GHM (ICH7 Family) SATA IDE Controller
-		1025 006c  9814 WKMI
-		1028 01d7  XPS M1210
-		17aa 200e  Thinkpad T60 model 2007
-	27c5  82801GBM/GHM (ICH7 Family) SATA AHCI Controller
-		103c 30a3  Compaq nw8440
-		17aa 200d  ThinkPad T60/R60 series
-	27c6  82801GHM (ICH7-M DH) SATA RAID Controller
-	27c8  82801G (ICH7 Family) USB UHCI Controller #1
-		1025 006c  9814 WKMI
-		1028 01ad  OptiPlex GX620
-		1028 01d7  XPS M1210
-		1028 01df  PowerEdge SC440
-		1028 01e6  PowerEdge 860
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-		1043 8179  P5KPL-VM Motherboard
-		107b 5048  E4500
-		17aa 200a  ThinkPad T60/R60 series
-		8086 544e  DeskTop Board D945GTP
-	27c9  82801G (ICH7 Family) USB UHCI Controller #2
-		1025 006c  9814 WKMI
-		1028 01ad  OptiPlex GX620
-		1028 01d7  XPS M1210
-		1028 01df  PowerEdge SC440
-		1028 01e6  PowerEdge 860
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-		1043 8179  P5KPL-VM Motherboard
-		107b 5048  E4500
-		17aa 200a  ThinkPad T60/R60 series
-		8086 544e  DeskTop Board D945GTP
-	27ca  82801G (ICH7 Family) USB UHCI Controller #3
-		1025 006c  9814 WKMI
-		1028 01ad  OptiPlex GX620
-		1028 01d7  XPS M1210
-		1028 01df  PowerEdge SC440
-		1028 01e6  PowerEdge 860
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-		1043 8179  P5KPL-VM Motherboard
-		107b 5048  E4500
-		17aa 200a  ThinkPad T60/R60 series
-		8086 544e  DeskTop Board D945GTP
-	27cb  82801G (ICH7 Family) USB UHCI Controller #4
-		1025 006c  9814 WKMI
-		1028 01ad  OptiPlex GX620
-		1028 01d7  XPS M1210
-		1028 01df  PowerEdge SC440
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-		1043 8179  P5KPL-VM Motherboard
-		107b 5048  E4500
-		17aa 200a  ThinkPad T60/R60 series
-		8086 544e  DeskTop Board D945GTP
-	27cc  82801G (ICH7 Family) USB2 EHCI Controller
-		1025 006c  9814 WKMI
-		1028 01ad  OptiPlex GX620
-		1028 01d7  XPS M1210
-		1028 01df  PowerEdge SC440
-		1028 01e6  PowerEdge 860
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-		1043 8179  P5KPL-VM Motherboard
-		17aa 200b  ThinkPad T60/R60 series
-		8086 544e  DeskTop Board D945GTP
-	27d0  82801G (ICH7 Family) PCI Express Port 1
-		103c 30a3  Compaq nw8440
-	27d2  82801G (ICH7 Family) PCI Express Port 2
-		103c 30a3  Compaq nw8440
-	27d4  82801G (ICH7 Family) PCI Express Port 3
-	27d6  82801G (ICH7 Family) PCI Express Port 4
-		103c 30a3  Compaq nw8440
-	27d8  82801G (ICH7 Family) High Definition Audio Controller
-		1025 006c  9814 WKMI
-		1028 01d7  XPS M1210
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-		1043 13c4  Asus G2P
-		1043 8290  P5KPL-VM Motherboard
-		107b 5048  E4500
-		10f7 8338  Panasonic CF-Y5 laptop
-		1179 ff10  Toshiba Satellite A100-796 audio (Realtek ALC861)
-		1179 ff31  AC97 Data Fax SoftModem with SmartCP
-		1458 a102  GA-8I945PG-RH Mainboard
-		152d 0753  Softmodem
-		1734 10ad  Conexant softmodem SmartCP
-		17aa 2010  ThinkPad T60/R60 series
-		17aa 3802  Lenovo 3000 C200 audio [Realtek ALC861VD]
-		8086 1112  DeskTop Board D945GTP
-		8086 27d8  DeskTop Board D945GTP
-	27da  82801G (ICH7 Family) SMBus Controller
-		1025 006c  9814 WKMI
-		1028 01ad  OptiPlex GX620
-		1028 01d7  XPS M1210
-		1028 01df  PowerEdge SC440
-		1028 01e6  PowerEdge 860
-		1043 8179  P5KPL-VM Motherboard
-		10f7 8338  Panasonic CF-Y5 laptop
-		1458 5001  GA-8I945PG-RH Mainboard
-		17aa 200f  ThinkPad T60/R60 series
-		8086 544e  DeskTop Board D945GTP
-		8086 5842  DeskTop Board D975XBX
-	27dc  82801G (ICH7 Family) LAN Controller
-		8086 308d  DeskTop Board D945GTP
-	27dd  82801G (ICH7 Family) AC'97 Modem Controller
-	27de  82801G (ICH7 Family) AC'97 Audio Controller
-		1028 01ad  OptiPlex GX620
-		1462 7267  Realtek ALC883 Audio Controller
-	27df  82801G (ICH7 Family) IDE Controller
-		1028 01df  PowerEdge SC440
-		1028 01e6  PowerEdge 860
-		103c 30a1  NC2400
-		103c 30a3  Compaq nw8440
-		1043 8179  P5KPL-VM Motherboard
-		107b 5048  E4500
-		10f7 8338  Panasonic CF-Y5 laptop
-		17aa 200c  ThinkPad T60/R60 series
-		8086 544e  DeskTop Board D945GTP
-	27e0  82801GR/GH/GHM (ICH7 Family) PCI Express Port 5
-	27e2  82801GR/GH/GHM (ICH7 Family) PCI Express Port 6
-	2810  82801HB/HR (ICH8/R) LPC Interface Controller
-		1043 81ec  P5B
-	2811  82801HBM (ICH8M-E) LPC Interface Controller
-		103c 30c1  Compaq 6910p
-		17aa 20b6  T61
-		e4bf cc47  CCG-RUMBA
-	2812  82801HH (ICH8DH) LPC Interface Controller
-	2814  82801HO (ICH8DO) LPC Interface Controller
-	2815  82801HEM (ICH8M) LPC Interface Controller
-		1025 0121  Aspire 5920G
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30d9  Presario C700
-		104d 9005  Vaio VGN-FZ260E
-	2820  82801H (ICH8 Family) 4 port SATA IDE Controller
-		1028 01da  OptiPlex 745
-		1462 7235  P965 Neo MS-7235 mainboard
-	2821  82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA AHCI Controller
-	2822  82801 SATA RAID Controller
-	2824  82801HB (ICH8) 4 port SATA AHCI Controller
-		1043 81ec  P5B
-	2825  82801H (ICH8 Family) 2 port SATA IDE Controller
-		1028 01da  OptiPlex 745
-		1462 7235  P965 Neo MS-7235 mainboard
-	2828  82801HBM/HEM (ICH8M/ICH8M-E) SATA IDE Controller
-		1028 01f3  Inspiron 1420
-		e4bf cc47  CCG-RUMBA
-	2829  82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller
-		1025 0121  Aspire 5920G
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		103c 30d9  Presario C700
-		104d 9005  Vaio VGN-FZ260E
-		17aa 20a7  ThinkPad T61
-	282a  Mobile 82801 SATA RAID Controller
-	2830  82801H (ICH8 Family) USB UHCI Controller #1
-		1025 0121  Acer Aspire 5920G
-		1028 01da  OptiPlex 745
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		103c 30d9  Presario C700
-		1043 81ec  P5B
-		104d 9005  Vaio VGN-FZ260E
-		1462 7235  P965 Neo MS-7235 mainboard
-		17aa 20aa  ThinkPad T61
-		e4bf cc47  CCG-RUMBA
-	2831  82801H (ICH8 Family) USB UHCI Controller #2
-		1025 0121  Aspire 5920G
-		1028 01da  OptiPlex 745
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-# Name mistyped on previous submission
-		103c 30c1  Compaq 6910p
-		103c 30d9  Presario C700
-		1043 81ec  P5B
-		104d 9005  Vaio VGN-FZ260E
-		1462 7235  P965 Neo MS-7235 mainboard
-		17aa 20aa  ThinkPad T61
-		e4bf cc47  CCG-RUMBA
-	2832  82801H (ICH8 Family) USB UHCI Controller #3
-		1025 0121  Aspire 5920G
-		1028 01da  OptiPlex 745
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		103c 30d9  Presario C700
-		1043 81ec  P5B
-		104d 9005  Vaio VGN-FZ260E
-		17aa 20aa  ThinkPad T61
-		e4bf cc47  CCG-RUMBA
-	2834  82801H (ICH8 Family) USB UHCI Controller #4
-		1025 0121  Aspire 5920G
-		1028 01da  OptiPlex 745
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		1043 81ec  P5B
-		104d 9005  Vaio VGN-FZ260E
-		1462 7235  P965 Neo MS-7235 mainboard
-		17aa 20aa  ThinkPad T61
-		e4bf cc47  CCG-RUMBA
-	2835  82801H (ICH8 Family) USB UHCI Controller #5
-		1025 0121  Acer Aspire 5920G
-		1028 01da  OptiPlex 745
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		1043 81ec  P5B
-		104d 9005  Vaio VGN-FZ260E
-		17aa 20aa  ThinkPad T60
-		e4bf cc47  CCG-RUMBA
-	2836  82801H (ICH8 Family) USB2 EHCI Controller #1
-		1025 0121  Aspire 5920G
-		1028 01da  OptiPlex 745
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		103c 30d9  Presario C700
-		1043 81ec  P5B
-		104d 9005  Vaio VGN-FZ260E
-		1462 7235  P965 Neo MS-7235 mainboard
-		17aa 20ab  ThinkPad T61
-		e4bf cc47  CCG-RUMBA
-	283a  82801H (ICH8 Family) USB2 EHCI Controller #2
-		1025 0121  Acer Aspire 5920G
-		1028 01da  OptiPlex 745
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		1043 81ec  P5B
-		104d 9005  Vaio VGN-FZ260E
-		17aa 20ab  ThinkPad T61
-		e4bf cc47  CCG-RUMBA
-	283e  82801H (ICH8 Family) SMBus Controller
-		1025 0121  Aspire 5920G
-		1028 01da  OptiPlex 745
-		1028 01f3  Inspiron 1420
-		103c 30d9  Presario C700
-		1043 81ec  P5B
-		104d 9005  Vaio VGN-FZ260E
-		1462 7235  P965 Neo MS-7235 mainboard
-		17aa 20a9  ThinkPad T61
-		e4bf cc47  CCG-RUMBA
-	283f  82801H (ICH8 Family) PCI Express Port 1
-		1028 01da  OptiPlex 745
-		103c 30c1  Compaq 6910p
-	2841  82801H (ICH8 Family) PCI Express Port 2
-		103c 30c1  Compaq 6910p
-	2843  82801H (ICH8 Family) PCI Express Port 3
-	2845  82801H (ICH8 Family) PCI Express Port 4
-	2847  82801H (ICH8 Family) PCI Express Port 5
-		1028 01da  OptiPlex 745
-		103c 30c1  Compaq 6910p
-	2849  82801H (ICH8 Family) PCI Express Port 6
-	284b  82801H (ICH8 Family) HD Audio Controller
-		0690 107b  Gateway P-6825
-		1025 011f  Realtek ALC268 audio codec
-		1025 0121  Aspire 5920G
-		1025 0145  Realtek ALC889 (Aspire 8920G w. Dolby Theather)
-		1028 01da  OptiPlex 745
-		1028 01f3  Inspiron 1420
-		1028 01f9  Dell Latitude D630
-		1028 01ff  Dell Precision M4300
-		103c 2802  HP Compaq dc7700p
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		1043 1339  Asus M51S series
-		1043 81ec  P5B
-		104d 9005  Vaio VGN-FZ260E
-		104d 9016  Sony VAIO VGN-AR51M
-		14f1 5051  Presario C700
-		17aa 20ac  ThinkPad T61
-		8384 7616  Dell Vostro 1400
-	284f  82801H (ICH8 Family) Thermal Reporting Device
-	2850  82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller
-		1025 0121  Aspire 5920G
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		103c 30d9  Presario C700
-		104d 9005  Vaio VGN-FZ260E
-		17aa 20a6  ThinkPad T61
-		e4bf cc47  CCG-RUMBA
-	2912  82801IH (ICH9DH) LPC Interface Controller
-	2914  82801IO (ICH9DO) LPC Interface Controller
-		1028 0211  Optiplex 755
-	2916  82801IR (ICH9R) LPC Interface Controller
-	2917  ICH9M-E LPC Interface Controller
-	2918  82801IB (ICH9) LPC Interface Controller
-	2919  ICH9M LPC Interface Controller
-	2920  82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA IDE Controller
-		1028 020f  PowerEdge R300 onboard SATA Controller
-		1028 0210  PowerEdge T300 onboard SATA Controller
-		1028 0211  Optiplex 755
-		1028 023c  PowerEdge R200 onboard SATA Controller
-	2921  82801IB (ICH9) 2 port SATA IDE Controller
-	2922  82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA AHCI Controller
-	2923  82801IB (ICH9) 4 port SATA AHCI Controller
-	2925  82801IR/IO (ICH9R/DO) SATA RAID Controller
-		1734 10e0  System Board D2542
-		8086 2925  System Board D2542
-	2926  82801I (ICH9 Family) 2 port SATA IDE Controller
-		1028 020f  Dell PowerEdge R300
-		1028 0210  Dell PowerEdge R300
-		1028 0211  Optiplex 755
-	2928  ICH9M/M-E 2 port SATA IDE Controller
-	2929  ICH9M/M-E SATA AHCI Controller
-	292c  ICH9M-E SATA RAID Controller
-	292d  ICH9M/M-E 2 port SATA IDE Controller
-	292e  ICH9M SATA IDE Controller
-	2930  82801I (ICH9 Family) SMBus Controller
-		1028 0211  Optiplex 755
-	2932  82801I (ICH9 Family) Thermal Subsystem
-	2934  82801I (ICH9 Family) USB UHCI Controller #1
-		1028 020f  PowerEdge R300 onboard UHCI
-		1028 0210  PowerEdge T300 onboard UHCI
-		1028 0211  Optiplex 755
-		1028 2011  Optiplex 755
-	2935  82801I (ICH9 Family) USB UHCI Controller #2
-		1028 020f  PowerEdge R300 onboard UHCI
-		1028 0210  PowerEdge T300 onboard UHCI
-		1028 0211  Optiplex 755
-	2936  82801I (ICH9 Family) USB UHCI Controller #3
-		1028 020f  PowerEdge R300 onboard UHCI
-		1028 0210  PowerEdge T300 onboard UHCI
-		1028 0211  Optiplex 755
-	2937  82801I (ICH9 Family) USB UHCI Controller #4
-		1028 0211  Optiplex 755
-		1028 2011  Optiplex 755
-		8086 2937  Optiplex 755
-		8086 2942  828011 (ICH9 Family ) USB UHCI Controller
-	2938  82801I (ICH9 Family) USB UHCI Controller #5
-		1028 0211  Optiplex 755
-		8086 2938  Optiplex 755
-	2939  82801I (ICH9 Family) USB UHCI Controller #6
-		1028 0210  PowerEdge T300
-	293a  82801I (ICH9 Family) USB2 EHCI Controller #1
-		1028 020f  PowerEdge R300 onboard EHCI
-		1028 0210  PowerEdge T300 onboard EHCI
-		1028 0211  Optiplex 755
-	293c  82801I (ICH9 Family) USB2 EHCI Controller #2
-		1028 0211  Optiplex 755
-		8086 293c  Optiplex 755
-	293e  82801I (ICH9 Family) HD Audio Controller
-		1028 0211  Optiplex 755
-		8086 293e  Optiplex 755
-		8086 2940  Optiplex 755
-	2940  82801I (ICH9 Family) PCI Express Port 1
-		1028 0211  Optiplex 755
-		8086 2940  Optiplex 755
-	2942  82801I (ICH9 Family) PCI Express Port 2
-	2944  82801I (ICH9 Family) PCI Express Port 3
-	2946  82801I (ICH9 Family) PCI Express Port 4
-	2948  82801I (ICH9 Family) PCI Express Port 5
-	294a  82801I (ICH9 Family) PCI Express Port 6
-	294c  82566DC-2 Gigabit Network Connection
-		17aa 302e  82566DM-2 Gigabit Network Connection
-	2970  82946GZ/PL/GL Memory Controller Hub
-	2971  82946GZ/PL/GL PCI Express Root Port
-	2972  82946GZ/GL Integrated Graphics Controller
-	2973  82946GZ/GL Integrated Graphics Controller
-	2974  82946GZ/GL HECI Controller
-	2975  82946GZ/GL HECI Controller
-	2976  82946GZ/GL PT IDER Controller
-	2977  82946GZ/GL KT Controller
-	2980  82G35 Express DRAM Controller
-	2981  82G35 Express PCI Express Root Port
-	2982  82G35 Express Integrated Graphics Controller
-	2983  82G35 Express Integrated Graphics Controller
-	2984  82G35 Express HECI Controller
-	2990  82Q963/Q965 Memory Controller Hub
-		1028 01da  OptiPlex 745
-	2991  82Q963/Q965 PCI Express Root Port
-	2992  82Q963/Q965 Integrated Graphics Controller
-	2993  82Q963/Q965 Integrated Graphics Controller
-	2994  82Q963/Q965 HECI Controller
-	2995  82Q963/Q965 HECI Controller
-	2996  82Q963/Q965 PT IDER Controller
-	2997  82Q963/Q965 KT Controller
-	29a0  82P965/G965 Memory Controller Hub
-		1043 81ea  P5B
-		1462 7276  MS-7276 [G965MDH]
-	29a1  82P965/G965 PCI Express Root Port
-	29a2  82G965 Integrated Graphics Controller
-		1462 7276  MS-7276 [G965MDH]
-	29a3  82G965 Integrated Graphics Controller
-	29a4  82P965/G965 HECI Controller
-	29a5  82P965/G965 HECI Controller
-	29a6  82P965/G965 PT IDER Controller
-	29a7  82P965/G965 KT Controller
-	29b0  82Q35 Express DRAM Controller
-		1028 0211  OptiPlex 755
-	29b1  82Q35 Express PCI Express Root Port
-		1028 0211  OptiPlex 755
-	29b2  82Q35 Express Integrated Graphics Controller
-		1028 0211  OptiPlex 755
-	29b3  82Q35 Express Integrated Graphics Controller
-		1028 0211  OptiPlex 755
-	29b4  82Q35 Express MEI Controller
-		1028 0211  OptiPlex 755
-	29b5  82Q35 Express MEI Controller
-	29b6  82Q35 Express PT IDER Controller
-		1028 0211  OptiPlex 755
-	29b7  82Q35 Express Serial KT Controller
-		1028 0211  OptiPlex 755
-	29c0  82G33/G31/P35/P31 Express DRAM Controller
-		1043 82b0  P5KPL-VM Motherboard
-	29c1  82G33/G31/P35/P31 Express PCI Express Root Port
-	29c2  82G33/G31 Express Integrated Graphics Controller
-		1043 82b0  P5KPL-VM Motherboard
-	29c3  82G33/G31 Express Integrated Graphics Controller
-		1043 82b0  P5KPL-VM Motherboard
-	29c4  82G33/G31/P35/P31 Express MEI Controller
-	29c5  82G33/G31/P35/P31 Express MEI Controller
-	29c6  82G33/G31/P35/P31 Express PT IDER Controller
-	29c7  82G33/G31/P35/P31 Express Serial KT Controller
-	29cf  Virtual HECI Controller
-	29d0  82Q33 Express DRAM Controller
-	29d1  82Q33 Express PCI Express Root Port
-	29d2  82Q33 Express Integrated Graphics Controller
-	29d3  82Q33 Express Integrated Graphics Controller
-	29d4  82Q33 Express MEI Controller
-	29d5  82Q33 Express MEI Controller
-	29d6  82Q33 Express PT IDER Controller
-	29d7  82Q33 Express Serial KT Controller
-	29e0  82X38/X48 Express DRAM Controller
-	29e1  82X38/X48 Express Host-Primary PCI Express Bridge
-	29e4  82X38/X48 Express MEI Controller
-	29e5  82X38/X48 Express MEI Controller
-	29e6  82X38/X48 Express PT IDER Controller
-	29e7  82X38/X48 Express Serial KT Controller
-	29e9  82X38/X48 Express Host-Secondary PCI Express Bridge
-	29f0  3200/3210 Chipset DRAM Controller
-	29f1  3200/3210 Chipset Host-Primary PCI Express Bridge
-	29f4  3200/3210 Chipset MEI Controller
-	29f5  3200/3210 Chipset MEI Controller
-	29f6  3200/3210 Chipset PT IDER Controller
-	29f7  3200/3210 Chipset Serial KT Controller
-	29f9  3210 Chipset Host-Secondary PCI Express Bridge
-	2a00  Mobile PM965/GM965/GL960 Memory Controller Hub
-		1025 0121  Acer Aspire 5920G
-		1028 01f3  Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30c1  Compaq 6910p
-		103c 30d9  Presario C700
-		104d 9005  Vaio VGN-FZ260E
-		17aa 20b1  ThinkPad T61
-		17aa 20b3  T61
-		e4bf cc47  CCG-RUMBA
-	2a01  Mobile PM965/GM965/GL960 PCI Express Root Port
-	2a02  Mobile GM965/GL960 Integrated Graphics Controller
-		1028 01f3  Inspiron 1420
-		1028 01f9  Latitude D630
-		103c 30c0  Compaq 6710b
-		103c 30d9  Presario C700
-		17aa 20b5  T61
-		e4bf cc47  CCG-RUMBA
-	2a03  Mobile GM965/GL960 Integrated Graphics Controller
-		1028 01f3  Dell Inspiron 1420
-		103c 30c0  Compaq 6710b
-		103c 30d9  Presario C700
-		17aa 20b5  T61
-		e4bf cc47  CCG-RUMBA
-	2a04  Mobile PM965/GM965 MEI Controller
-		103c 30c1  Compaq 6910p
-	2a05  Mobile PM965/GM965 MEI Controller
-	2a06  Mobile PM965/GM965 PT IDER Controller
-		103c 30c1  Compaq 6910p
-	2a07  Mobile PM965/GM965 KT Controller
-		103c 30c1  Compaq 6910p
-	2a10  Mobile GME965/GLE960 Memory Controller Hub
-		e4bf cc47  CCG-RUMBA
-	2a11  Mobile GME965/GLE960 PCI Express Root Port
-	2a12  Mobile GME965/GLE960 Integrated Graphics Controller
-		e4bf cc47  CCG-RUMBA
-	2a13  Mobile GME965/GLE960 Integrated Graphics Controller
-		e4bf cc47  CCG-RUMBA
-	2a14  Mobile GME965/GLE960 MEI Controller
-	2a15  Mobile GME965/GLE960 MEI Controller
-	2a16  Mobile GME965/GLE960 PT IDER Controller
-	2a17  Mobile GME965/GLE960 KT Controller
-	2a40  Mobile 4 Series Chipset Memory Controller Hub
-	2a41  Mobile 4 Series Chipset PCI Express Graphics Port
-	2a42  Mobile 4 Series Chipset Integrated Graphics Controller
-	2a43  Mobile 4 Series Chipset Integrated Graphics Controller
-	2a44  Mobile 4 Series Chipset MEI Controller
-	2a45  Mobile 4 Series Chipset MEI Controller
-	2a46  Mobile 4 Series Chipset PT IDER Controller
-	2a47  Mobile 4 Series Chipset AMT SOL Redirection
-	2a50  Cantiga MEI Controller
-	2a51  Cantiga MEI Controller
-	2a52  Cantiga PT IDER Controller
-	2a53  Cantiga AMT SOL Redirection
-	2c01  QuickPath Architecture System Address Decoder
-	2c10  QPI Link 0
-	2c11  QPI Physical 0
-	2c14  QPI Link 1
-	2c15  QPI Physical 1
-	2c18  QuickPath Memory Controller
-	2c19  QuickPath Memory Controller Target Address Decoder
-	2c1a  QuickPath Memory Controller RAS Registers
-	2c1c  QuickPath Memory Controller Test Registers
-	2c20  QuickPath Memory Controller Channel 0 Control Registers
-	2c21  QuickPath Memory Controller Channel 0 Address Registers
-	2c22  QuickPath Memory Controller Channel 0 Rank Registers
-	2c23  QuickPath Memory Controller Channel 0 Thermal Control Registers
-	2c28  QuickPath Memory Controller Channel 1 Control Registers
-	2c29  QuickPath Memory Controller Channel 1 Address Registers
-	2c2a  QuickPath Memory Controller Channel 1 Rank Registers
-	2c2b  QuickPath Memory Controller Channel 1 Thermal Control Registers
-	2c30  QuickPath Memory Controller Channel 2 Control Registers
-	2c31  QuickPath Memory Controller Channel 2 Address Registers
-	2c32  QuickPath Memory Controller Channel 2 Rank Registers
-	2c33  QuickPath Memory Controller Channel 2 Thermal Control Registers
-	2c40  QuickPath Architecture Generic Non-Core Registers
-	2e00  4 Series Chipset DRAM Controller
-	2e01  4 Series Chipset PCI Express Root Port
-	2e02  4 Series Chipset Integrated Graphics Controller
-	2e03  4 Series Chipset Integrated Graphics Controller
-	2e04  4 Series Chipset HECI Controller
-	2e05  4 Series Chipset HECI Controller
-	2e06  4 Series Chipset PT IDER Controller
-	2e07  4 Series Chipset Serial KT Controller
-	2e10  4 Series Chipset DRAM Controller
-	2e11  4 Series Chipset PCI Express Root Port
-	2e12  4 Series Chipset Integrated Graphics Controller
-	2e13  4 Series Chipset Integrated Graphics Controller
-	2e14  4 Series Chipset HECI Controller
-	2e15  4 Series Chipset HECI Controller
-	2e16  4 Series Chipset PT IDER Controller
-	2e17  4 Series Chipset Serial KT Controller
-	2e20  4 Series Chipset DRAM Controller
-		1458 5000  GA-EP45-DS5 Motherboard
-	2e21  4 Series Chipset PCI Express Root Port
-		1458 5000  GA-EP45-DS5 Motherboard
-	2e22  4 Series Chipset Integrated Graphics Controller
-	2e23  4 Series Chipset Integrated Graphics Controller
-	2e24  4 Series Chipset HECI Controller
-	2e25  4 Series Chipset HECI Controller
-	2e26  4 Series Chipset PT IDER Controller
-	2e27  4 Series Chipset Serial KT Controller
-	2e29  4 Series Chipset PCI Express Root Port
-	2e30  4 Series Chipset DRAM Controller
-	2e31  4 Series Chipset PCI Express Root Port
-	2e32  4 Series Chipset Integrated Graphics Controller
-	2e33  4 Series Chipset Integrated Graphics Controller
-	2e34  4 Series Chipset HECI Controller
-	2e35  4 Series Chipset HECI Controller
-	2e36  4 Series Chipset PT IDER Controller
-	2e37  4 Series Chipset Serial KT Controller
-	2e40  4 Series Chipset DRAM Controller
-	2e41  4 Series Chipset PCI Express Root Port
-	2e42  4 Series Chipset Integrated Graphics Controller
-	2e43  4 Series Chipset Integrated Graphics Controller
-	2e44  4 Series Chipset HECI Controller
-	2e45  4 Series Chipset HECI Controller
-	2e46  4 Series Chipset PT IDER Controller
-	2e47  4 Series Chipset Serial KT Controller
-	3200  GD31244 PCI-X SATA HBA
-		1775 c200  C2K onboard SATA host bus adapter
-	3313  IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA
-	331b  IOP348 I/O Processor (SL8x) in IOC Mode SAS/SATA
-	3331  IOC340 I/O Controller (VV8e) SAS/SATA
-	3339  IOC340 I/O Controller (VV8x) SAS/SATA
-	3340  82855PM Processor to I/O Controller
-		1014 0529  Thinkpad T40 series
-		1025 005a  TravelMate 290
-		103c 088c  NC8000 laptop
-		103c 0890  NC6000 laptop
-		103c 08b0  tc1100 tablet
-		144d c005  X10 Laptop
-		144d c00c  P30/P35 notebook
-	3341  82855PM Processor to AGP Controller
-		144d c00c  P30 notebook
-	3363  IOC340 I/O Controller in IOC Mode SAS/SATA
-	33c3  IOP348 I/O Processor (SL8De) in IOC Mode SAS/SATA
-	33cb  IOP348 I/O Processor (SL8Dx) in IOC Mode SAS/SATA
-	3400  QuickPath Architecture I/O Hub to ESI Port
-	3401  QuickPath Architecture I/O Hub to ESI Port
-	3402  QuickPath Architecture I/O Hub to ESI Port
-	3403  QuickPath Architecture I/O Hub to ESI Port
-	3404  QuickPath Architecture I/O Hub to ESI Port
-	3405  QuickPath Architecture I/O Hub to ESI Port
-	3406  QuickPath Architecture I/O Hub to ESI Port
-	3407  QuickPath Architecture I/O Hub to ESI Port
-	3408  QuickPath Architecture I/O Hub PCI Express Root Port 1
-	3409  QuickPath Architecture I/O Hub PCI Express Root Port 2
-	340a  QuickPath Architecture I/O Hub PCI Express Root Port 3
-	340b  QuickPath Architecture I/O Hub PCI Express Root Port 4
-	340c  QuickPath Architecture I/O Hub PCI Express Root Port 5
-	340d  QuickPath Architecture I/O Hub PCI Express Root Port 6
-	340e  QuickPath Architecture I/O Hub PCI Express Root Port 7
-	340f  QuickPath Architecture I/O Hub PCI Express Root Port 8
-	3410  QuickPath Architecture I/O Hub PCI Express Root Port 9
-	3411  QuickPath Architecture I/O Hub PCI Express Root Port 10
-	3418  Quickpath Interconnect Physical Layer Port 0
-	3419  Quickpath Interconnect Physical Layer Port 1
-	3420  QuickPath Architecture I/O Hub PCI Express Root Port 0
-	3421  QuickPath Architecture I/O Hub PCI Express Root Port 0
-	3422  QuickPath Architecture I/O Hub GPIO and Scratch Pad Registers
-	3423  QuickPath Architecture I/O Hub Control Status and RAS Registers
-	3425  QuickPath Interconnect Physical and Link Layer Registers Port 0
-	3426  QuickPath Interconnect Routing and Protocol Layer Registers Port 0
-	3427  QuickPath Interconnect Physical and Link Layer Registers Port 1
-	3428  QuickPath Interconnect Routing and Protocol Layer Registers Port 1
-	3429  DMA Engine
-	342a  DMA Engine
-	342b  DMA Engine
-	342c  DMA Engine
-	342d  QuickPath Architecture I/O Hub I/OxAPIC Interrupt Controller
-	342e  QuickPath Architecture I/O Hub System Management Registers
-	342f  Trusted Execution Technology Registers
-	3430  DMA Engine
-	3431  DMA Engine
-	3432  DMA Engine
-	3433  DMA Engine
-	3438  QuickPath Architecture I/O Hub Throttle Registers
-	3500  6311ESB/6321ESB PCI Express Upstream Port
-	3501  6310ESB PCI Express Upstream Port
-	3504  6311ESB/6321ESB I/OxAPIC Interrupt Controller
-	3505  6310ESB I/OxAPIC Interrupt Controller
-	350c  6311ESB/6321ESB PCI Express to PCI-X Bridge
-	350d  6310ESB PCI Express to PCI-X Bridge
-	3510  6311ESB/6321ESB PCI Express Downstream Port E1
-	3511  6310ESB PCI Express Downstream Port E1
-	3514  6311ESB/6321ESB PCI Express Downstream Port E2
-	3515  6310ESB PCI Express Downstream Port E2
-	3518  6311ESB/6321ESB PCI Express Downstream Port E3
-	3519  6310ESB PCI Express Downstream Port E3
-	3575  82830 830 Chipset Host Bridge
-		0e11 0030  Evo N600c
-		1014 021d  ThinkPad A/T/X Series
-		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
-	3576  82830 830 Chipset AGP Bridge
-	3577  82830 CGC [Chipset Graphics Controller]
-		1014 0513  ThinkPad A/T/X Series
-	3578  82830 830 Chipset Host Bridge
-	3580  82852/82855 GM/GME/PM/GMV Processor to I/O Controller
-		1014 055c  ThinkPad R50e
-		1028 0139  Latitude D400
-		1028 014f  Latitude X300
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m
-		1028 0196  Inspiron 5160
-		114a 0582  PC8
-		1734 1055  Amilo M1420
-		1775 10d0  V5D Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10e0  PSL09 PrPMC
-		e4bf 0cc9  CC9-SAMBA
-		e4bf 0cd2  CD2-BEBOP
-	3581  82852/82855 GM/GME/PM/GMV Processor to AGP Controller
-		1734 1055  Amilo M1420
-	3582  82852/855GM Integrated Graphics Device
-		1014 0562  ThinkPad R50e
-		1028 0139  Latitude D400
-		1028 014f  Latitude X300
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m
-		114a 0582  PC8 integrated graphics
-		1775 10d0  V5D Single Board Computer VGA
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10e0  PSL09 PrPMC
-		e4bf 0cc9  CC9-SAMBA
-		e4bf 0cd2  CD2-BEBOP
-	3584  82852/82855 GM/GME/PM/GMV Processor to I/O Controller
-		1014 055d  ThinkPad R50e
-		1028 0139  Latitude D400
-		1028 014f  Latitude X300
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m
-		1028 0196  Inspiron 5160
-		114a 0582  PC8
-		1734 1055  Amilo M1420
-		1775 10d0  V5D Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10e0  PSL09 PrPMC
-	3585  82852/82855 GM/GME/PM/GMV Processor to I/O Controller
-		1014 055e  ThinkPad R50e
-		1028 0139  Latitude D400
-		1028 014f  Latitude X300
-		1028 0163  Latitude D505
-		1028 018d  Inspiron 700m/710m
-		1028 0196  Inspiron 5160
-		114a 0582  PC8
-		1734 1055  Amilo M1420
-		1775 10d0  V5D Single Board Computer
-		1775 ce90  CE9
-		4c53 10b0  CL9 mainboard
-		4c53 10e0  PSL09 PrPMC
-	358c  82854 GMCH
-	358e  82854 GMCH Integrated Graphics Device
-	3590  E7520 Memory Controller Hub
-		1014 02dd  eServer xSeries server mainboard
-		1028 016c  PowerEdge 1850
-		1028 016d  PowerEdge 2850=20
-		1028 019a  PowerEdge SC1425
-		1734 103e  PRIMERGY RX/TX S2 series
-		1775 1100  CR11/VR11 Single Board Computer
-		4c53 10d0  Telum ASLP10 Processor AMC
-	3591  E7525/E7520 Error Reporting Registers
-		1014 02dd  eServer xSeries server mainboard
-		1028 0169  Precision 470
-		4c53 10d0  Telum ASLP10 Processor AMC
-	3592  E7320 Memory Controller Hub
-	3593  E7320 Error Reporting Registers
-	3594  E7520 DMA Controller
-		1775 1100  CR11/VR11 Single Board Computer
-		4c53 10d0  Telum ASLP10 Processor AMC
-	3595  E7525/E7520/E7320 PCI Express Port A
-		1775 1100  CR11/VR11 Single Board Computer
-	3596  E7525/E7520/E7320 PCI Express Port A1
-	3597  E7525/E7520 PCI Express Port B
-		1775 1100  CR11/VR11 Single Board Computer
-	3598  E7520 PCI Express Port B1
-		1775 1100  CR11/VR11 Single Board Computer
-	3599  E7520 PCI Express Port C
-		1775 1100  CR11/VR11 Single Board Computer
-	359a  E7520 PCI Express Port C1
-	359b  E7525/E7520/E7320 Extended Configuration Registers
-		1014 02dd  eServer xSeries server mainboard
-	359e  E7525 Memory Controller Hub
-		1028 0169  Precision 470
-	35b0  3100 Chipset Memory I/O Controller Hub
-	35b1  3100 DRAM Controller Error Reporting Registers
-	35b5  3100 Chipset Enhanced DMA Controller
-	35b6  3100 Chipset PCI Express Port A
-	35b7  3100 Chipset PCI Express Port A1
-	35c8  3100 Extended Configuration Test Overflow Registers
-	3600  7300 Chipset Memory Controller Hub
-	3604  7300 Chipset PCI Express Port 1
-	3605  7300 Chipset PCI Express Port 2
-	3606  7300 Chipset PCI Express Port 3
-	3607  7300 Chipset PCI Express Port 4
-	3608  7300 Chipset PCI Express Port 5
-	3609  7300 Chipset PCI Express Port 6
-	360a  7300 Chipset PCI Express Port 7
-	360b  7300 Chipset QuickData Technology Device
-	360c  7300 Chipset FSB Registers
-	360d  7300 Chipset Snoop Filter Registers
-	360e  7300 Chipset Debug and Miscellaneous Registers
-	360f  7300 Chipset FBD Branch 0 Registers
-	3610  7300 Chipset FBD Branch 1 Registers
-	3a00  ICH10 4 port SATA IDE Controller
-	3a02  ICH10 6 port SATA AHCI Controller
-	3a05  ICH10 SATA RAID Controller
-	3a06  ICH10 2 port SATA IDE Controller
-	3a14  ICH10 LPC Interface Controller
-	3a16  82801JIR (ICH10R) LPC Interface Controller
-		1458 5001  GA-EP45-DS5 Motherboard
-	3a18  82801JIB (ICH10) LPC Interface Controller
-	3a1a  ICH10 LPC Interface Controller
-	3a20  82801JI (ICH10 Family) 4 port SATA IDE Controller
-	3a22  82801JI (ICH10 Family) SATA AHCI Controller
-		1458 b005  GA-EP45-DS5 Motherboard
-	3a25  82801JIR (ICH10R) SATA RAID Controller
-	3a26  82801JI (ICH10 Family) 2 port SATA IDE Controller
-	3a30  82801JI (ICH10 Family) SMBus Controller
-		1458 5001  GA-EP45-DS5 Motherboard
-	3a32  82801JI (ICH10 Family) Thermal Subsystem
-	3a34  82801JI (ICH10 Family) USB UHCI Controller #1
-		1458 5004  GA-EP45-DS5 Motherboard
-	3a35  82801JI (ICH10 Family) USB UHCI Controller #2
-		1458 5004  GA-EP45-DS5 Motherboard
-	3a36  82801JI (ICH10 Family) USB UHCI Controller #3
-		1458 5004  GA-EP45-DS5 Motherboard
-	3a37  82801JI (ICH10 Family) USB UHCI Controller #4
-		1458 5004  GA-EP45-DS5 Motherboard
-	3a38  82801JI (ICH10 Family) USB UHCI Controller #5
-		1458 5004  GA-EP45-DS5 Motherboard
-	3a39  82801JI (ICH10 Family) USB UHCI Controller #6
-		1458 5004  GA-EP45-DS5 Motherboard
-	3a3a  82801JI (ICH10 Family) USB2 EHCI Controller #1
-		1458 5006  GA-EP45-DS5 Motherboard
-	3a3c  82801JI (ICH10 Family) USB2 EHCI Controller #2
-		1458 5006  GA-EP45-DS5 Motherboard
-	3a3e  82801JI (ICH10 Family) HD Audio Controller
-		1458 a102  GA-EP45-DS5 Motherboard
-	3a40  82801JI (ICH10 Family) PCI Express Port 1
-		1458 5001  GA-EP45-DS5 Motherboard
-	3a42  82801JI (ICH10 Family) PCI Express Port 2
-	3a44  82801JI (ICH10 Family) PCI Express Port 3
-	3a46  82801JI (ICH10 Family) PCI Express Port 4
-		1458 5001  GA-EP45-DS5 Motherboard
-	3a48  82801JI (ICH10 Family) PCI Express Port 5
-		1458 5001  GA-EP45-DS5 Motherboard
-	3a4a  82801JI (ICH10 Family) PCI Express Port 6
-		1458 5001  GA-EP45-DS5 Motherboard
-	3a4c  82801JI (ICH10 Family) Gigabit Ethernet Controller
-	3a51  ICH10 VECI Controller
-	3a55  ICH10 Virtual SATA Controller
-	3a60  ICH10 SMBus Controller
-	3a62  ICH10 Thermal Subsystem
-	3a64  ICH10 USB UHCI Controller #1
-	3a65  ICH10 USB UHCI Controller #2
-	3a66  ICH10 USB UHCI Controller #3
-	3a67  ICH10 USB UHCI Controller #4
-	3a68  ICH10 USB UHCI Controller #5
-	3a69  ICH10 USB UHCI Controller #6
-	3a6a  ICH10 USB2 EHCI Controller #1
-	3a6c  ICH10 USB2 EHCI Controller #2
-	3a6e  ICH10 HD Audio Controller
-	3a70  ICH10 PCI Express Port 1
-	3a72  ICH10 PCI Express Port 2
-	3a74  ICH10 PCI Express Port 3
-	3a76  ICH10 PCI Express Port 4
-	3a78  ICH10 PCI Express Port 5
-	3a7a  ICH10 PCI Express Port 6
-	3a7c  ICH10 Gigabit Ethernet Controller
-	3b00  Ibex Peak LPC Interface Controller
-	3b01  Ibex Peak LPC Interface Controller
-	3b02  Ibex Peak LPC Interface Controller
-	3b03  Ibex Peak LPC Interface Controller
-	3b04  Ibex Peak LPC Interface Controller
-	3b05  Ibex Peak LPC Interface Controller
-	3b06  Ibex Peak LPC Interface Controller
-	3b07  Ibex Peak LPC Interface Controller
-	3b08  Ibex Peak LPC Interface Controller
-	3b09  Ibex Peak LPC Interface Controller
-	3b0a  Ibex Peak LPC Interface Controller
-	3b0b  Ibex Peak LPC Interface Controller
-	3b0c  Ibex Peak LPC Interface Controller
-	3b0d  Ibex Peak LPC Interface Controller
-	3b0e  Ibex Peak LPC Interface Controller
-	3b0f  Ibex Peak LPC Interface Controller
-	3b10  Ibex Peak LPC Interface Controller
-	3b11  Ibex Peak LPC Interface Controller
-	3b12  Ibex Peak LPC Interface Controller
-	3b13  Ibex Peak LPC Interface Controller
-	3b14  Ibex Peak LPC Interface Controller
-	3b15  Ibex Peak LPC Interface Controller
-	3b16  Ibex Peak LPC Interface Controller
-	3b17  Ibex Peak LPC Interface Controller
-	3b18  Ibex Peak LPC Interface Controller
-	3b19  Ibex Peak LPC Interface Controller
-	3b1a  Ibex Peak LPC Interface Controller
-	3b1b  Ibex Peak LPC Interface Controller
-	3b1c  Ibex Peak LPC Interface Controller
-	3b1d  Ibex Peak LPC Interface Controller
-	3b1e  Ibex Peak LPC Interface Controller
-	3b1f  Ibex Peak LPC Interface Controller
-	3b20  Ibex Peak 4 port SATA IDE Controller
-	3b21  Ibex Peak 2 port SATA IDE Controller
-	3b22  Ibex Peak 6 port SATA AHCI Controller
-	3b23  Ibex Peak 4 port SATA AHCI Controller
-	3b24  Ibex Peak SATA Enhanced RAID Controller
-	3b25  Ibex Peak SATA RAID Controller
-	3b26  Ibex Peak 2 port SATA IDE Controller
-	3b28  Ibex Peak 4 port SATA IDE Controller
-	3b29  Ibex Peak 4 port SATA AHCI Controller
-	3b2b  Ibex Peak SATA Enhanced RAID Controller
-	3b2c  Ibex Peak SATA RAID Controller
-	3b2d  Ibex Peak 2 port SATA IDE Controller
-	3b2e  Ibex Peak 4 port SATA IDE Controller
-	3b2f  Ibex Peak 6 port SATA AHCI Controller
-	3b30  Ibex Peak SMBus Controller
-	3b32  Ibex Peak Thermal Subsystem
-	3b34  Ibex Peak USB2 Enhanced Host Controller
-	3b36  Ibex Peak USB Universal Host Controller
-	3b37  Ibex Peak USB Universal Host Controller
-	3b38  Ibex Peak USB Universal Host Controller
-	3b39  Ibex Peak USB Universal Host Controller
-	3b3a  Ibex Peak USB Universal Host Controller
-	3b3b  Ibex Peak USB Universal Host Controller
-	3b3c  Ibex Peak USB2 Enhanced Host Controller
-	3b3e  Ibex Peak USB Universal Host Controller
-	3b3f  Ibex Peak USB Universal Host Controller
-	3b40  Ibex Peak USB Universal Host Controller
-	3b41  Ibex Peak LAN Controller
-	3b42  Ibex Peak PCI Express Root Port 1
-	3b44  Ibex Peak PCI Express Root Port 2
-	3b46  Ibex Peak PCI Express Root Port 3
-	3b48  Ibex Peak PCI Express Root Port 4
-	3b4a  Ibex Peak PCI Express Root Port 5
-	3b4c  Ibex Peak PCI Express Root Port 6
-	3b4e  Ibex Peak PCI Express Root Port 7
-	3b50  Ibex Peak PCI Express Root Port 8
-	3b53  Ibex Peak VECI Controller
-	3b56  Ibex Peak High Definition Audio
-	3b64  Ibex Peak HECI Controller
-	3b65  Ibex Peak HECI Controller
-	3b66  Ibex Peak PT IDER Controller
-	3b67  Ibex Peak KT Controller
-	4000  5400 Chipset Memory Controller Hub
-	4001  5400 Chipset Memory Controller Hub
-	4003  5400 Chipset Memory Controller Hub
-	4021  5400 Chipset PCI Express Port 1
-	4022  5400 Chipset PCI Express Port 2
-	4023  5400 Chipset PCI Express Port 3
-	4024  5400 Chipset PCI Express Port 4
-	4025  5400 Chipset PCI Express Port 5
-	4026  5400 Chipset PCI Express Port 6
-	4027  5400 Chipset PCI Express Port 7
-	4028  5400 Chipset PCI Express Port 8
-	4029  5400 Chipset PCI Express Port 9
-	402d  5400 Chipset IBIST Registers
-	402e  5400 Chipset IBIST Registers
-	402f  5400 Chipset QuickData Technology Device
-	4030  5400 Chipset FSB Registers
-	4031  5400 Chipset CE/SF Registers
-	4032  5400 Chipset IOxAPIC
-	4035  5400 Chipset FBD Registers
-	4036  5400 Chipset FBD Registers
-	4220  PRO/Wireless 2200BG [Calexico2] Network Connection
-		103c 0934  Compaq nw8240/nx8220
-		103c 12f6  Compaq nw8240/nx8220
-		8086 2712  IBM ThinkPad R50e
-		8086 2721  Dell B130 laptop integrated WLAN
-		8086 2722  Dell Latitude D600
-		8086 2731  Samsung P35 integrated WLAN
-	4222  PRO/Wireless 3945ABG [Golan] Network Connection
-		103c 135c  Compaq 6710b
-		103c 30c0  Compaq 6710b
-		8086 1000  PRO/Wireless 3945ABG Network Connection
-		8086 1001  PRO/Wireless 3945ABG Network Connection
-		8086 1005  PRO/Wireless 3945BG Network Connection
-		8086 1034  PRO/Wireless 3945BG Network Connection
-		8086 1044  PRO/Wireless 3945BG Network Connection
-		8086 1c00  PRO/Wireless 3945ABG Network Connection
-	4223  PRO/Wireless 2915ABG [Calexico2] Network Connection
-		1000 8086  mPCI 3B Americas/Europe ZZA
-		1001 8086  mPCI 3B Europe ZZE
-		1002 8086  mPCI 3B Japan ZZJ
-		1003 8086  mPCI 3B High-Band ZZH
-		1351 103c  Compaq NC6220
-	4224  PRO/Wireless 2915ABG [Calexico2] Network Connection
-	4227  PRO/Wireless 3945ABG [Golan] Network Connection
-		8086 1011  ThinkPad R60e/X60s
-		8086 1014  PRO/Wireless 3945BG Network Connection
-	4229  PRO/Wireless 4965 AG or AGN [Kedron] Network Connection
-	4230  PRO/Wireless 4965 AG or AGN [Kedron] Network Connection
-		8086 1110  Lenovo ThinkPad T51
-		8086 1111  Lenovo ThinkPad T61
-	4232  Wireless WiFi Link 5100
-		8086 1205  PRO/Wireless 5100BG Network Connection
-		8086 1206  PRO/Wireless 5100ABG Network Connection
-		8086 1216  PRO/Wireless 5100ABG Network Connection
-		8086 1305  PRO/Wireless 5100BG Network Connection
-		8086 1306  PRO/Wireless 5100ABG Network Connection
-		8086 1326  PRO/Wireless 5100ABG Network Connection
-	4235  PRO/Wireless 5300 AGN [Shiloh] Network Connection
-	4236  Wireless WiFi Link 5100
-	4237  PRO/Wireless 5100 AGN [Shiloh] Network Connection
-	423a  PRO/Wireless 5350 AGN [Echo Peak] Network Connection
-	444e  Turbo Memory Controller
-	5001  LE80578
-	5002  LE80578 Graphics Processor Unit
-	5009  LE80578 Video Display Controller
-	500d  LE80578 Expansion Bus
-	500e  LE80578 UART Controller
-	500f  LE80578 General Purpose IO
-	5010  LE80578 I2C Controller
-	5012  LE80578 Serial Peripheral Interface Bus
-	5020  EP80579 Memory Controller Hub
-	5021  EP80579 DRAM Error Reporting Registers
-	5023  EP80579 EDMA Controller
-	5024  EP80579 PCI Express Port PEA0
-	5025  EP80579 PCI Express Port PEA1
-	5028  EP80579 S-ATA IDE
-	5029  EP80579 S-ATA AHCI
-	502a  EP80579 S-ATA Reserved
-	502b  EP80579 S-ATA Reserved
-	502c  EP80579 Integrated Processor ASU
-	502d  EP80579 Integrated Processor with QuickAssist ASU
-	502e  EP80579 Reserved
-	502f  EP80579 Reserved
-	5030  EP80579 Reserved
-	5031  EP80579 LPC Bus
-	5032  EP80579 SMBus Controller
-	5033  EP80579 USB 1.1 Controller
-	5035  EP80579 USB 2.0 Controller
-	5037  EP80579 PCI-PCI Bridge (transparent mode)
-	5039  EP80579 Controller Area Network (CAN) interface #1
-	503a  EP80579 Controller Area Network (CAN) interface #2
-	503b  EP80579 Synchronous Serial Port (SPP)
-	503c  EP80579 IEEE 1588 Hardware Assist
-	503d  EP80579 Local Expansion Bus
-	503e  EP80579 Global Control Unit (GCU)
-	503f  EP80579 Reserved
-	5040  EP80579 Integrated Processor Gigabit Ethernet MAC
-	5041  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC
-	5042  EP80579 Reserved
-	5043  EP80579 Reserved
-	5044  EP80579 Integrated Processor Gigabit Ethernet MAC
-	5045  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC
-	5046  EP80579 Reserved
-	5047  EP80579 Reserved
-	5048  EP80579 Integrated Processor Gigabit Ethernet MAC
-	5049  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC
-	504a  EP80579 Reserved
-	504b  EP80579 Reserved
-	504c  EP80579 Integrated Processor with QuickAssist TDM
-	5200  EtherExpress PRO/100 Intelligent Server
-	5201  EtherExpress PRO/100 Intelligent Server
-		8086 0001  EtherExpress PRO/100 Server Ethernet Adapter
-	530d  80310 (IOP) IO Processor
-	65c0  5100 Chipset Memory Controller Hub
-	65e2  5100 Chipset PCI Express x4 Port 2
-	65e3  5100 Chipset PCI Express x4 Port 3
-	65e4  5100 Chipset PCI Express x4 Port 4
-	65e5  5100 Chipset PCI Express x4 Port 5
-	65e6  5100 Chipset PCI Express x4 Port 6
-	65e7  5100 Chipset PCI Express x4 Port 7
-	65f0  5100 Chipset FSB Registers
-		1028 020f  PowerEdge R300
-		1028 0210  PowerEdge T300
-	65f1  5100 Chipset Reserved Registers
-		1028 0210  PowerEdge T300
-	65f3  5100 Chipset Reserved Registers
-	65f5  5100 Chipset DDR Channel 0 Registers
-	65f6  5100 Chipset DDR Channel 1 Registers
-	65f7  5100 Chipset PCI Express x8 Port 2-3
-	65f8  5100 Chipset PCI Express x8 Port 4-5
-	65f9  5100 Chipset PCI Express x8 Port 6-7
-	65fa  5100 Chipset PCI Express x16 Port 4-7
-	65ff  5100 Chipset DMA Engine
-	7000  82371SB PIIX3 ISA [Natoma/Triton II]
-	7010  82371SB PIIX3 IDE [Natoma/Triton II]
-	7020  82371SB PIIX3 USB [Natoma/Triton II]
-	7030  430VX - 82437VX TVX [Triton VX]
-	7050  Intercast Video Capture Card
-	7051  PB 642365-003 (Business Video Conferencing Card)
-	7100  430TX - 82439TX MTXC
-	7110  82371AB/EB/MB PIIX4 ISA
-		15ad 1976  Virtual Machine Chipset
-	7111  82371AB/EB/MB PIIX4 IDE
-		15ad 1976  Virtual Machine Chipset
-	7112  82371AB/EB/MB PIIX4 USB
-		15ad 1976  Virtual Machine Chipset
-	7113  82371AB/EB/MB PIIX4 ACPI
-		15ad 1976  Virtual Machine Chipset
-	7120  82810 GMCH (Graphics Memory Controller Hub)
-		4c53 1040  CL7 mainboard
-		4c53 1060  PC7 mainboard
-	7121  82810 (CGC) Chipset Graphics Controller
-		4c53 1040  CL7 mainboard
-		4c53 1060  PC7 mainboard
-		8086 4341  Cayman (CA810) Mainboard
-	7122  82810 DC-100 (GMCH) Graphics Memory Controller Hub
-	7123  82810 DC-100 (CGC) Chipset Graphics Controller
-	7124  82810E DC-133 (GMCH) Graphics Memory Controller Hub
-		1028 00b4  OptiPlex GX110
-	7125  82810E DC-133 (CGC) Chipset Graphics Controller
-		1028 00b4  OptiPlex GX110
-	7126  82810 DC-133 System and Graphics Controller
-	7128  82810-M DC-100 System and Graphics Controller
-	712a  82810-M DC-133 System and Graphics Controller
-	7180  440LX/EX - 82443LX/EX Host bridge
-	7181  440LX/EX - 82443LX/EX AGP bridge
-	7190  440BX/ZX/DX - 82443BX/ZX/DX Host bridge
-		0e11 0500  Armada 1750 Laptop System Chipset
-		0e11 b110  Armada M700/E500
-		1028 008e  PowerEdge 1300 mainboard
-		1043 803b  CUBX-L/E Mainboard
-		1179 0001  Toshiba Tecra 8100 Laptop System Chipset
-		15ad 1976  Virtual Machine Chipset
-		4c53 1050  CT7 mainboard
-		4c53 1051  CE7 mainboard
-	7191  440BX/ZX/DX - 82443BX/ZX/DX AGP bridge
-		1028 008e  PowerEdge 1300 mainboard
-	7192  440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled)
-		0e11 0460  Armada 1700 Laptop System Chipset
-		1179 0001  Satellite 4010
-		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
-		8086 7190  Dell PowerEdge 350
-	7194  82440MX Host Bridge
-		1033 0000  Versa Note Vxi
-		4c53 10a0  CA3/CR3 mainboard
-	7195  82440MX AC'97 Audio Controller
-		1033 80cc  Versa Note VXi
-		10cf 1099  QSound_SigmaTel Stac97 PCI Audio
-		11d4 0040  SoundMAX Integrated Digital Audio
-		11d4 0048  SoundMAX Integrated Digital Audio
-	7196  82440MX AC'97 Modem Controller
-	7198  82440MX ISA Bridge
-	7199  82440MX EIDE Controller
-	719a  82440MX USB Universal Host Controller
-	719b  82440MX Power Management Controller
-	71a0  440GX - 82443GX Host bridge
-		4c53 1050  CT7 mainboard
-		4c53 1051  CE7 mainboard
-	71a1  440GX - 82443GX AGP bridge
-	71a2  440GX - 82443GX Host bridge (AGP disabled)
-		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
-	7600  82372FB PIIX5 ISA
-	7601  82372FB PIIX5 IDE
-	7602  82372FB PIIX5 USB
-	7603  82372FB PIIX5 SMBus
-	7800  82740 (i740) AGP Graphics Accelerator
-		003d 0008  Starfighter AGP
-		003d 000b  Starfighter AGP
-		1092 0100  Stealth II G460
-		10b4 201a  Lightspeed 740
-		10b4 202f  Lightspeed 740
-		8086 0000  Terminator 2x/i
-		8086 0100  Intel740 Graphics Accelerator
-	8002  Trusted Execution Technology Registers
-	8003  Trusted Execution Technology Registers
-	8100  System Controller Hub (SCH Poulsbo)
-	8108  System Controller Hub (SCH Poulsbo) Graphics Controller
-	8110  System Controller Hub (SCH Poulsbo) PCI Express Port 1
-	8112  System Controller Hub (SCH Poulsbo) PCI Express Port 2
-	8114  System Controller Hub (SCH Poulsbo) USB UHCI #1
-	8115  System Controller Hub (SCH Poulsbo) USB UHCI #2
-	8116  System Controller Hub (SCH Poulsbo) USB UHCI #3
-	8117  System Controller Hub (SCH Poulsbo) USB EHCI #1
-	8118  System Controller Hub (SCH Poulsbo) USB Client Controller
-	8119  System Controller Hub (SCH Poulsbo) LPC Bridge
-	811a  System Controller Hub (SCH Poulsbo) IDE Controller
-	811b  System Controller Hub (SCH Poulsbo) HD Audio Controller
-	811c  System Controller Hub (SCH Poulsbo) SDIO Controller #1
-	811d  System Controller Hub (SCH Poulsbo) SDIO Controller #2
-	811e  System Controller Hub (SCH Poulsbo) SDIO Controller #3
-	84c4  450KX/GX [Orion] - 82454KX/GX PCI bridge
-	84c5  450KX/GX [Orion] - 82453KX/GX Memory controller
-	84ca  450NX - 82451NX Memory & I/O Controller
-	84cb  450NX - 82454NX/84460GX PCI Expander Bridge
-	84e0  460GX - 84460GX System Address Controller (SAC)
-	84e1  460GX - 84460GX System Data Controller (SDC)
-	84e2  460GX - 84460GX AGP Bridge (GXB function 2)
-	84e3  460GX - 84460GX Memory Address Controller (MAC)
-	84e4  460GX - 84460GX Memory Data Controller (MDC)
-	84e6  460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB)
-	84ea  460GX - 84460GX AGP Bridge (GXB function 1)
-	8500  IXP4XX Network Processor (IXP420/421/422/425/IXC1100)
-		1993 0ded  mGuard-PCI AV#2
-		1993 0dee  mGuard-PCI AV#1
-		1993 0def  mGuard-PCI AV#0
-	9000  IXP2000 Family Network Processor
-	9001  IXP2400 Network Processor
-	9002  IXP2300 Network Processor
-	9004  IXP2800 Network Processor
-	9621  Integrated RAID
-	9622  Integrated RAID
-	9641  Integrated RAID
-	96a1  Integrated RAID
-	a620  6400/6402 Advanced Memory Buffer (AMB)
-	b152  21152 PCI-to-PCI Bridge
-		8086 b152  21152 PCI-to-PCI Bridge
-# observed, and documented in Intel revision note; new mask of 1011:0026
-	b154  21154 PCI-to-PCI Bridge
-	b555  21555 Non transparent PCI-to-PCI Bridge
-		12c7 5005  SS7HD PCI Adaptor Card
-		12c7 5006  SS7HDC cPCI Adaptor Card
-		12d9 000a  PCI VoIP Gateway
-		4c53 1050  CT7 mainboard
-		4c53 1051  CE7 mainboard
-		e4bf 1000  CC8-1-BLUES
-80ee  InnoTek Systemberatung GmbH
-	beef  VirtualBox Graphics Adapter
-	cafe  VirtualBox Guest Service
-8384  Sigmatel
-	7618  High Definition Audio Codec
-	7670  9770 High Definition Audio
-	7672  9772 High Definition Audio
-8401  TRENDware International Inc.
-8686  ScaleMP
-	1010  vSMPowered system controller [vSMP CTL]
-8800  Trigem Computer Inc.
-	2008  Video assistent component
-8866  T-Square Design Inc.
-8888  Silicon Magic
-8912  TRX
-# 8c4a is not Winbond but there is a board misprogrammed
-8c4a  Winbond
-	1980  W89C940 misprogrammed [ne2k]
-8e0e  Computone Corporation
-8e2e  KTI
-	3000  ET32P2
-9004  Adaptec
-	0078  AHA-2940U_CN
-	1078  AIC-7810
-	1160  AIC-1160 [Family Fibre Channel Adapter]
-	2178  AIC-7821
-	3860  AHA-2930CU
-	3b78  AHA-4844W/4844UW
-	5075  AIC-755x
-	5078  AHA-7850
-		9004 7850  AHA-2904/Integrated AIC-7850
-	5175  AIC-755x
-	5178  AIC-7851
-	5275  AIC-755x
-	5278  AIC-7852
-	5375  AIC-755x
-	5378  AIC-7850
-	5475  AIC-755x
-	5478  AIC-7850
-	5575  AVA-2930
-	5578  AIC-7855
-	5647  ANA-7711 TCP Offload Engine
-		9004 7710  ANA-7711F TCP Offload Engine - Optical
-		9004 7711  ANA-7711LP TCP Offload Engine - Copper
-	5675  AIC-755x
-	5678  AIC-7856
-	5775  AIC-755x
-	5778  AIC-7850
-	5800  AIC-5800
-	5900  ANA-5910/5930/5940 ATM155 & 25 LAN Adapter
-	5905  ANA-5910A/5930A/5940A ATM Adapter
-	6038  AIC-3860
-	6075  AIC-1480 / APA-1480
-		9004 7560  AIC-1480 / APA-1480 Cardbus
-	6078  AIC-7860
-	6178  AIC-7861
-		9004 7861  AHA-2940AU Single
-	6278  AIC-7860
-	6378  AIC-7860
-	6478  AIC-786x
-	6578  AIC-786x
-	6678  AIC-786x
-	6778  AIC-786x
-	6915  ANA620xx/ANA69011A
-		9004 0008  ANA69011A/TX 10/100
-		9004 0009  ANA69011A/TX 10/100
-		9004 0010  ANA62022 2-port 10/100
-		9004 0018  ANA62044 4-port 10/100
-		9004 0019  ANA62044 4-port 10/100
-		9004 0020  ANA62022 2-port 10/100
-		9004 0028  ANA69011A/TX 10/100
-		9004 8008  ANA69011A/TX 64 bit 10/100
-		9004 8009  ANA69011A/TX 64 bit 10/100
-		9004 8010  ANA62022 2-port 64 bit 10/100
-		9004 8018  ANA62044 4-port 64 bit 10/100
-		9004 8019  ANA62044 4-port 64 bit 10/100
-		9004 8020  ANA62022 2-port 64 bit 10/100
-		9004 8028  ANA69011A/TX 64 bit 10/100
-	7078  AHA-294x / AIC-7870
-	7178  AHA-2940/2940W / AIC-7871
-	7278  AHA-3940/3940W / AIC-7872
-	7378  AHA-3985 / AIC-7873
-	7478  AHA-2944/2944W / AIC-7874
-	7578  AHA-3944/3944W / AIC-7875
-	7678  AHA-4944W/UW / AIC-7876
-	7710  ANA-7711F Network Accelerator Card (NAC) - Optical
-	7711  ANA-7711C Network Accelerator Card (NAC) - Copper
-	7778  AIC-787x
-	7810  AIC-7810
-	7815  AIC-7815 RAID+Memory Controller IC
-		9004 7815  ARO-1130U2 RAID Controller
-		9004 7840  AIC-7815 RAID+Memory Controller IC
-	7850  AIC-7850
-	7855  AHA-2930
-	7860  AIC-7860
-	7870  AIC-7870
-	7871  AHA-2940
-	7872  AHA-3940
-	7873  AHA-3980
-	7874  AHA-2944
-	7880  AIC-7880P
-	7890  AIC-7890
-	7891  AIC-789x
-	7892  AIC-789x
-	7893  AIC-789x
-	7894  AIC-789x
-	7895  AHA-2940U/UW / AHA-39xx / AIC-7895
-		9004 7890  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
-		9004 7891  AHA-2940U/2940UW Dual
-		9004 7892  AHA-3940AU/AUW/AUWD/UWD
-		9004 7894  AHA-3944AUWD
-		9004 7895  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
-		9004 7896  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
-		9004 7897  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
-	7896  AIC-789x
-	7897  AIC-789x
-	8078  AIC-7880U
-		9004 7880  AIC-7880P Ultra/Ultra Wide SCSI Chipset
-	8178  AHA-2940U/UW/D / AIC-7881U
-		9004 7881  AHA-2940UW SCSI Host Adapter
-	8278  AHA-3940U/UW/UWD / AIC-7882U
-	8378  AHA-3940U/UW / AIC-7883U
-	8478  AHA-2944UW / AIC-7884U
-	8578  AHA-3944U/UWD / AIC-7885
-	8678  AHA-4944UW / AIC-7886
-	8778  AHA-2940UW Pro / AIC-788x
-		9004 7887  2940UW Pro Ultra-Wide SCSI Controller
-	8878  AHA-2930UW / AIC-7888
-		9004 7888  AHA-2930UW SCSI Controller
-	8b78  ABA-1030
-	ec78  AHA-4944W/UW
-9005  Adaptec
-	0010  AHA-2940U2/U2W
-		9005 2180  AHA-2940U2 SCSI Controller
-		9005 8100  AHA-2940U2B SCSI Controller
-		9005 a100  AHA-2940U2B SCSI Controller
-		9005 a180  AHA-2940U2W SCSI Controller
-		9005 e100  AHA-2950U2B SCSI Controller
-	0011  AHA-2930U2
-	0013  78902
-		9005 0003  AAA-131U2 Array1000 1 Channel RAID Controller
-		9005 000f  AIC7890_ARO
-	001f  AHA-2940U2/U2W / 7890/7891
-		9005 000f  2940U2W SCSI Controller
-		9005 a180  2940U2W SCSI Controller
-	0020  AIC-7890
-	002f  AIC-7890
-	0030  AIC-7890
-	003f  AIC-7890
-	0050  AHA-3940U2x/395U2x
-		9005 f500  AHA-3950U2B
-		9005 ffff  AHA-3950U2B
-	0051  AHA-3950U2D
-		9005 b500  AHA-3950U2D
-	0053  AIC-7896 SCSI Controller
-		9005 ffff  AIC-7896 SCSI Controller mainboard implementation
-	005f  AIC-7896U2/7897U2
-	0080  AIC-7892A U160/m
-		0e11 e2a0  Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter
-		9005 6220  AHA-29160C
-		9005 62a0  29160N Ultra160 SCSI Controller
-		9005 e220  29160LP Low Profile Ultra160 SCSI Controller
-		9005 e2a0  29160 Ultra160 SCSI Controller
-	0081  AIC-7892B U160/m
-		9005 62a1  19160 Ultra160 SCSI Controller
-	0083  AIC-7892D U160/m
-	008f  AIC-7892P U160/m
-		1179 0001  Magnia Z310
-		15d9 9005  Onboard SCSI Host Adapter
-	0092  AVC-2010 [VideoH!]
-	0093  AVC-2410 [VideoH!]
-	00c0  AHA-3960D / AIC-7899A U160/m
-		0e11 f620  Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter
-		9005 f620  AHA-3960D U160/m
-	00c1  AIC-7899B U160/m
-	00c3  AIC-7899D U160/m
-	00c5  RAID subsystem HBA
-		1028 00c5  PowerEdge 2400,2500,2550,4400
-	00cf  AIC-7899P U160/m
-		1028 00ce  PowerEdge 1400
-		1028 00d1  PowerEdge 2550
-		1028 00d9  PowerEdge 2500
-		10f1 2462  Thunder K7 S2462
-		15d9 9005  Onboard SCSI Host Adapter
-		8086 3411  SDS2 Mainboard
-	0241  Serial ATA II RAID 1420SA
-	0242  Serial ATA II RAID 1220SA
-	0243  Serial ATA II RAID 1430SA
-	0250  ServeRAID Controller
-		1014 0279  ServeRAID-xx
-		1014 028c  ServeRAID-xx
-	0279  ServeRAID 6M
-	0283  AAC-RAID
-		9005 0283  Catapult
-	0284  AAC-RAID
-		9005 0284  Tomcat
-	0285  AAC-RAID
-		0e11 0295  SATA 6Ch (Bearcat)
-		1014 02f2  ServeRAID 8i
-		1028 0287  PowerEdge Expandable RAID Controller 320/DC
-		1028 0291  CERC SATA RAID 2 PCI SATA 6ch (DellCorsair)
-		103c 3227  AAR-2610SA
-		108e 0286  STK RAID INT
-		108e 0287  STK RAID EXT
-		108e 7aac  STK RAID REM
-		108e 7aae  STK RAID EX
-		15d9 02b5  AOC-USAS-S4i
-		15d9 02b6  AOC-USAS-S8i
-		15d9 02c9  AOC-USAS-S4iR
-		15d9 02ca  AOC-USAS-S8iR
-		17aa 0286  Legend S220 (Legend Crusader)
-		17aa 0287  Legend S230 (Legend Vulcan)
-		9005 0285  2200S (Vulcan)
-		9005 0286  2120S (Crusader)
-		9005 0287  2200S (Vulcan-2m)
-		9005 0288  3230S (Harrier)
-		9005 0289  3240S (Tornado)
-# Some early versions reported 2020S
-		9005 028a  ASR-2020ZCR
-# Some early versions reported 2025S
-		9005 028b  ASR-2025ZCR (Terminator)
-		9005 028e  ASR-2020SA (Skyhawk)
-		9005 028f  ASR-2025SA
-		9005 0290  AAR-2410SA PCI SATA 4ch (Jaguar II)
-		9005 0292  AAR-2810SA PCI SATA 8ch (Corsair-8)
-		9005 0293  AAR-21610SA PCI SATA 16ch (Corsair-16)
-		9005 0294  ESD SO-DIMM PCI-X SATA ZCR (Prowler)
-		9005 0296  ASR-2240S
-		9005 0297  ASR-4005SAS
-		9005 0298  ASR-4000
-		9005 0299  ASR-4800SAS
-		9005 029a  4805SAS
-		9005 02a4  ICP ICP9085LI
-		9005 02a5  ICP ICP5085BR
-		9005 02b5  ASR5800
-		9005 02b6  ASR5805
-		9005 02b7  ASR5808
-		9005 02b8  ICP5445SL
-		9005 02b9  ICP5085SL
-		9005 02ba  ICP5805SL
-		9005 02bb  3405
-		9005 02bc  3805
-		9005 02bd  31205
-		9005 02be  31605
-		9005 02bf  ICP ICP5045BL
-		9005 02c0  ICP ICP5085BL
-		9005 02c1  ICP ICP5125BR
-		9005 02c2  ICP ICP5165BR
-		9005 02c3  51205
-		9005 02c4  51605
-		9005 02c5  ICP ICP5125SL
-		9005 02c6  ICP ICP5165SL
-		9005 02c7  3085
-		9005 02c8  ICP5805BL
-		9005 02ce  51245
-		9005 02cf  51645
-		9005 02d0  52445
-		9005 02d1  5405
-	0286  AAC-RAID (Rocket)
-		1014 034d  8s
-		1014 9540  ServeRAID 8k/8k-l4
-		1014 9580  ServeRAID 8k/8k-l8
-		9005 028c  ASR-2230S + ASR-2230SLP PCI-X (Lancer)
-		9005 028d  ASR-2130S
-		9005 029b  ASR-2820SA
-		9005 029c  ASR-2620SA
-		9005 029d  ASR-2420SA
-		9005 029e  ICP ICP9024R0
-		9005 029f  ICP ICP9014R0
-		9005 02a0  ICP ICP9047MA
-		9005 02a1  ICP ICP9087MA
-		9005 02a2  3800
-		9005 02a3  ICP ICP5445AU
-		9005 02a4  ICP ICP9085LI
-		9005 02a5  ICP ICP5085BR
-		9005 02a6  ICP9067MA
-		9005 02a7  3805
-		9005 02a8  3400
-		9005 02a9  ICP ICP5085AU
-		9005 02aa  ICP ICP5045AU
-		9005 02ac  1800
-		9005 02b3  2400
-		9005 02b4  ICP ICP5045AL
-		9005 0800  Callisto
-	0410  AIC-9410W SAS (Razor HBA RAID)
-		9005 0410  ASC-48300(Spirit RAID)
-		9005 0411  ASC-58300 (Oakmont RAID)
-	0412  AIC-9410W SAS (Razor HBA non-RAID)
-		9005 0412  ASC-48300 (Spirit non-RAID)
-		9005 0413  ASC-58300 (Oakmont non-RAID)
-	0415  ASC-58300 SAS (Razor-External HBA RAID)
-	0416  ASC-58300 SAS (Razor-External HBA non-RAID)
-	041e  AIC-9410W SAS (Razor ASIC non-RAID)
-	041f  AIC-9410W SAS (Razor ASIC RAID)
-		9005 041f  AIC-9410W SAS (Razor ASIC RAID)
-	0430  AIC-9405W SAS (Razor-Lite HBA RAID)
-		9005 0430  ASC-44300 (Spirit-Lite RAID)
-	0432  AIC-9405W SAS (Razor-Lite HBA non-RAID)
-		9005 0432  ASC-44300 (Spirit-Lite non-RAID)
-	043e  AIC-9405W SAS (Razor-Lite ASIC non-RAID)
-	043f  AIC-9405W SAS (Razor-Lite ASIC RAID)
-	0500  Obsidian chipset SCSI controller
-		1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)
-		1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/572D)
-	0503  Scamp chipset SCSI controller
-		1014 02bf  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E)
-		1014 02c3  PCI-X DDR 3Gb SAS RAID Adapter (572F)
-		1014 02d5  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F)
-	0910  AUA-3100B
-	091e  AUA-3100B
-	8000  ASC-29320A U320
-	800f  AIC-7901 U320
-	8010  ASC-39320 U320
-	8011  ASC-39320D
-		0e11 00ac  ASC-39320D U320
-		9005 0041  ASC-39320D U320
-	8012  ASC-29320 U320
-	8013  ASC-29320B U320
-	8014  ASC-29320LP U320
-	8015  ASC-39320B U320
-	8016  ASC-39320A U320
-	8017  ASC-29320ALP U320
-		9005 0044  ASC-29320ALP PCIx U320
-		9005 0045  ASC-29320LPE PCIe U320
-	801c  ASC-39320D U320
-	801d  AIC-7902B U320
-		1014 02cc  ServeRAID 7e
-	801e  AIC-7901A U320
-	801f  AIC-7902 U320
-		1734 1011  Primergy RX300
-	8080  ASC-29320A U320 w/HostRAID
-	808f  AIC-7901 U320 w/HostRAID
-	8090  ASC-39320 U320 w/HostRAID
-	8091  ASC-39320D U320 w/HostRAID
-	8092  ASC-29320 U320 w/HostRAID
-	8093  ASC-29320B U320 w/HostRAID
-	8094  ASC-29320LP U320 w/HostRAID
-	8095  ASC-39320(B) U320 w/HostRAID
-	8096  ASC-39320A U320 w/HostRAID
-	8097  ASC-29320ALP U320 w/HostRAID
-	809c  ASC-39320D(B) U320 w/HostRAID
-	809d  AIC-7902(B) U320 w/HostRAID
-		1014 02cc  ServeRAID 7e
-	809e  AIC-7901A U320 w/HostRAID
-	809f  AIC-7902 U320 w/HostRAID
-907f  Atronics
-	2015  IDE-2015PL
-919a  Gigapixel Corp
-9412  Holtek
-	6565  6565
-9699  Omni Media Technology Inc
-	6565  6565
-9710  NetMos Technology
-	7780  USB IRDA-port
-	9805  PCI 1 port parallel adapter
-	9815  PCI 9815 Multi-I/O Controller
-		1000 0020  2P0S (2 port parallel adaptor)
-	9835  PCI 9835 Multi-I/O Controller
-		1000 0002  2S (16C550 UART)
-		1000 0012  1P2S
-	9845  PCI 9845 Multi-I/O Controller
-		1000 0004  0P4S (4 port 16550A serial card)
-		1000 0006  0P6S (6 port 16550a serial card)
-	9855  PCI 9855 Multi-I/O Controller
-		1000 0014  1P4S
-9902  Stargen Inc.
-	0001  SG2010 PCI over Starfabric Bridge
-	0002  SG2010 PCI to Starfabric Gateway
-	0003  SG1010 Starfabric Switch and PCI Bridge
-a0a0  AOPEN Inc.
-a0f1  UNISYS Corporation
-a200  NEC Corporation
-a259  Hewlett Packard
-a25b  Hewlett Packard GmbH PL24-MKT
-a304  Sony
-a727  3Com Corporation
-	0013  3CRPAG175 Wireless PC Card
-aa42  Scitex Digital Video
-ac1e  Digital Receiver Technology Inc
-ac3d  Actuality Systems
-aecb  Adrienne Electronics Corporation
-	6250  VITC/LTC Timecode Reader card [PCI-VLTC/RDR]
-affe  Sirrix AG security technologies
-	02e1  PCI2E1 2-port ISDN E1 interface
-	dead  Sirrix.PCI4S0 4-port ISDN S0 interface
-# Not registered officially
-b10b  Uakron PCI Project
-b1b3  Shiva Europe Limited
-# Pinnacle should be 11bd, but they got it wrong several times --mj
-bd11  Pinnacle Systems, Inc. (Wrong ID)
-c001  TSI Telsys
-c0a9  Micron/Crucial Technology
-c0de  Motorola
-c0fe  Motion Engineering, Inc.
-ca50  Varian Australia Pty Ltd
-cafe  Chrysalis-ITS
-	0003  Luna K3 Hardware Security Module
-cccc  Catapult Communications
-ccec  Curtiss-Wright Controls Embedded Computing
-cddd  Tyzx, Inc.
-	0101  DeepSea 1 High Speed Stereo Vision Frame Grabber
-	0200  DeepSea 2 High Speed Stereo Vision Frame Grabber
-d161  Digium, Inc.
-	0120  Wildcard TE120P single-span T1/E1/J1 card
-	0205  Wildcard TE205P dual-span T1/E1/J1 card 5.0V
-	0210  Wildcard TE210P dual-span T1/E1/J1 card 3.3V
-	0405  Wildcard TE405P quad-span T1/E1/J1 card 5.0V
-	0410  Wildcard TE410P quad-span T1/E1/J1 card 3.3V
-	0800  Wildcard TDM800P 8-port analog card
-	2400  Wildcard TDM2400P 24-port analog card
-	3400  Wildcard TC400P transcoder base card
-	b410  Wildcard B410 quad-BRI card
-d4d4  Dy4 Systems Inc
-	0601  PCI Mezzanine Card
-d531  I+ME ACTIA GmbH
-d84d  Exsys
-dead  Indigita Corporation
-deaf  Middle Digital Inc.
-	9050  PC Weasel Virtual VGA
-	9051  PC Weasel Serial Port
-	9052  PC Weasel Watchdog Timer
-e000  Winbond
-	e000  W89C940
-e159  Tiger Jet Network Inc.
-	0001  Tiger3XX Modem/ISDN interface
-		0059 0001  128k ISDN-S/T Adapter
-		0059 0003  128k ISDN-U Adapter
-		00a7 0001  TELES.S0/PCI 2.x ISDN Adapter
-		8086 0003  Digium X100P/X101P analogue PSTN FXO interface
-	0002  Tiger100APC ISDN chipset
-e4bf  EKF Elektronik GmbH
-e55e  Essence Technology, Inc.
-ea01  Eagle Technology
-	000a  PCI-773 Temperature Card
-	0032  PCI-730 & PC104P-30 Card
-	003e  PCI-762 Opto-Isolator Card
-	0041  PCI-763 Reed Relay Card
-	0043  PCI-769 Opto-Isolator Reed Relay Combo Card
-	0046  PCI-766 Analog Output Card
-	0052  PCI-703 Analog I/O Card
-	0800  PCI-800 Digital I/O Card
-# The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID.
-ea60  RME
-	9896  Digi32
-	9897  Digi32 Pro
-	9898  Digi32/8
-eabb  Aashima Technology B.V.
-eace  Endace Measurement Systems, Ltd
-	3100  DAG 3.10 OC-3/OC-12
-	3200  DAG 3.2x OC-3/OC-12
-	320e  DAG 3.2E Fast Ethernet
-	340e  DAG 3.4E Fast Ethernet
-	341e  DAG 3.41E Fast Ethernet
-	3500  DAG 3.5 OC-3/OC-12
-	351c  DAG 3.5ECM Fast Ethernet
-	4100  DAG 4.10 OC-48
-	4110  DAG 4.11 OC-48
-	4220  DAG 4.2 OC-48
-	422e  DAG 4.2E Dual Gigabit Ethernet
-ec80  Belkin Corporation
-	ec00  F5D6000
-ecc0  Echo Digital Audio Corporation
-edd8  ARK Logic Inc
-	a091  1000PV [Stingray]
-	a099  2000PV [Stingray]
-	a0a1  2000MT
-	a0a9  2000MI
-f1d0  AJA Video
-	c0fe  Xena HS/HD-R
-	c0ff  Kona/Xena 2
-	cafe  Kona SD
-	cfee  Xena LS/SD-22-DA/SD-DA
-	dcaf  Kona HD
-	dfee  Xena HD-DA
-	efac  Xena SD-MM/SD-22-MM
-	facd  Xena HD-MM
-fa57  Interagon AS
-	0001  PMC [Pattern Matching Chip]
-fab7  Fabric7 Systems, Inc.
-febd  Ultraview Corp.
-# Nee Epigram
-feda  Broadcom Inc
-	a0fa  BCM4210 iLine10 HomePNA 2.0
-	a10e  BCM4230 iLine10 HomePNA 2.0
-fede  Fedetec Inc.
-	0003  TABIC PCI v3
-fffd  XenSource, Inc.
-	0101  PCI Event Channel Controller
-fffe  VMWare Inc
-	0405  Virtual SVGA 4.0
-	0710  Virtual SVGA
-ffff  Illegal Vendor ID
-
-
-# List of known device classes, subclasses and programming interfaces
-
-# Syntax:
-# C class	class_name
-#	subclass	subclass_name  		<-- single tab
-#		prog-if  prog-if_name  	<-- two tabs
-
-C 00  Unclassified device
-	00  Non-VGA unclassified device
-	01  VGA compatible unclassified device
-C 01  Mass storage controller
-	00  SCSI storage controller
-	01  IDE interface
-	02  Floppy disk controller
-	03  IPI bus controller
-	04  RAID bus controller
-	05  ATA controller
-		20  ADMA single stepping
-		30  ADMA continuous operation
-	06  SATA controller
-		00  Vendor specific
-		01  AHCI 1.0
-	07  Serial Attached SCSI controller
-	80  Mass storage controller
-C 02  Network controller
-	00  Ethernet controller
-	01  Token ring network controller
-	02  FDDI network controller
-	03  ATM network controller
-	04  ISDN controller
-	05  WorldFip controller
-	06  PICMG controller
-	80  Network controller
-C 03  Display controller
-	00  VGA compatible controller
-		00  VGA controller
-		01  8514 controller
-	01  XGA compatible controller
-	02  3D controller
-	80  Display controller
-C 04  Multimedia controller
-	00  Multimedia video controller
-	01  Multimedia audio controller
-	02  Computer telephony device
-	03  Audio device
-	80  Multimedia controller
-C 05  Memory controller
-	00  RAM memory
-	01  FLASH memory
-	80  Memory controller
-C 06  Bridge
-	00  Host bridge
-	01  ISA bridge
-	02  EISA bridge
-	03  MicroChannel bridge
-	04  PCI bridge
-		00  Normal decode
-		01  Subtractive decode
-	05  PCMCIA bridge
-	06  NuBus bridge
-	07  CardBus bridge
-	08  RACEway bridge
-		00  Transparent mode
-		01  Endpoint mode
-	09  Semi-transparent PCI-to-PCI bridge
-		40  Primary bus towards host CPU
-		80  Secondary bus towards host CPU
-	0a  InfiniBand to PCI host bridge
-	80  Bridge
-C 07  Communication controller
-	00  Serial controller
-		00  8250
-		01  16450
-		02  16550
-		03  16650
-		04  16750
-		05  16850
-		06  16950
-	01  Parallel controller
-		00  SPP
-		01  BiDir
-		02  ECP
-		03  IEEE1284
-		fe  IEEE1284 Target
-	02  Multiport serial controller
-	03  Modem
-		00  Generic
-		01  Hayes/16450
-		02  Hayes/16550
-		03  Hayes/16650
-		04  Hayes/16750
-	04  GPIB controller
-	05  Smard Card controller
-	80  Communication controller
-C 08  Generic system peripheral
-	00  PIC
-		00  8259
-		01  ISA PIC
-		02  EISA PIC
-		10  IO-APIC
-		20  IO(X)-APIC
-	01  DMA controller
-		00  8237
-		01  ISA DMA
-		02  EISA DMA
-	02  Timer
-		00  8254
-		01  ISA Timer
-		02  EISA Timers
-	03  RTC
-		00  Generic
-		01  ISA RTC
-	04  PCI Hot-plug controller
-	05  SD Host controller
-	80  System peripheral
-C 09  Input device controller
-	00  Keyboard controller
-	01  Digitizer Pen
-	02  Mouse controller
-	03  Scanner controller
-	04  Gameport controller
-		00  Generic
-		10  Extended
-	80  Input device controller
-C 0a  Docking station
-	00  Generic Docking Station
-	80  Docking Station
-C 0b  Processor
-	00  386
-	01  486
-	02  Pentium
-	10  Alpha
-	20  Power PC
-	30  MIPS
-	40  Co-processor
-C 0c  Serial bus controller
-	00  FireWire (IEEE 1394)
-		00  Generic
-		10  OHCI
-	01  ACCESS Bus
-	02  SSA
-	03  USB Controller
-		00  UHCI
-		10  OHCI
-		20  EHCI
-		80  Unspecified
-		fe  USB Device
-	04  Fibre Channel
-	05  SMBus
-	06  InfiniBand
-	07  IPMI SMIC interface
-	08  SERCOS interface
-	09  CANBUS
-C 0d  Wireless controller
-	00  IRDA controller
-	01  Consumer IR controller
-	10  RF controller
-	11  Bluetooth
-	12  Broadband
-	20  802.1a controller
-	21  802.1b controller
-	80  Wireless controller
-C 0e  Intelligent controller
-	00  I2O
-C 0f  Satellite communications controller
-	01  Satellite TV controller
-	02  Satellite audio communication controller
-	03  Satellite voice communication controller
-	04  Satellite data communication controller
-C 10  Encryption controller
-	00  Network and computing encryption device
-	10  Entertainment encryption device
-	80  Encryption controller
-C 11  Signal processing controller
-	00  DPIO module
-	01  Performance counters
-	10  Communication synchronizer
-	20  Signal processing management
-	80  Signal processing controller
--- a/open-src/xserver/xorg/sun-src/mesa/Makefile.am	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-noinst_LTLIBRARIES = libvbo.la
-
-AM_CFLAGS = \
-	$(DIX_CFLAGS) \
-	-DXFree86Server \
-	@GLX_DEFINES@
-
-INCLUDES = -I@MESA_SOURCE@/include \
-           -I../X \
-           -I../glapi \
-           -I../main \
-           -I../math \
-           -I../shader \
-           -I../swrast \
-           -I../swrast_setup \
-           -I../tnl \
-           -I../vbo \
-           -I.. \
-           -I$(top_srcdir)/hw/xfree86/os-support
-
-nodist_libvbo_la_SOURCES = vbo_context.c \
-                       vbo_exec.c \
-                       vbo_exec_api.c \
-                       vbo_exec_array.c \
-                       vbo_exec_draw.c \
-                       vbo_exec_eval.c \
-                       vbo_rebase.c \
-                       vbo_save.c \
-                       vbo_save_api.c \
-                       vbo_save_draw.c \
-                       vbo_save_loopback.c \
-                       vbo_split.c \
-                       vbo_split_copy.c \
-                       vbo_split_inplace.c
--- a/open-src/xserver/xorg/sun-src/tsol/Makefile.am	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/tsol/Makefile.am	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 #########################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@
 # 
 #########################################################################
 # 
-# ident	"@(#)Makefile.am 1.10	08/02/02 SMI"
+# ident	"@(#)Makefile.am 1.11	09/01/14 SMI"
 #
 
 noinst_LTLIBRARIES = libxtsol.la
@@ -39,11 +39,11 @@
 
 INCLUDES = -I.. -I$(top_srcdir)/include -I$(top_srcdir)/os
 
-SERVERCONFIGdir = $(libdir)/X11/xserver
+SERVERCONFIGdir = @SERVER_MISC_CONFIG_PATH@
 SERVERCONFIG_DATA = TrustedExtensionsPolicy
 
 TSOLPOLICYFILEDEF = -DTSOLPOLICYFILE=\"$(SERVERCONFIGdir)/TrustedExtensionsPolicy\"
 
-AM_CFLAGS = $(DIX_CFLAGS) $(TSOLPOLICYFILEDEF) -DIN_MODULE
+AM_CFLAGS = $(DIX_CFLAGS) $(TSOLPOLICYFILEDEF)
 
 libxtsol_la_LIBADD = -ltsol -ltsnet -lsecdb -lbsm
--- a/open-src/xserver/xorg/sun-src/tsol/tsol.h	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/tsol/tsol.h	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-/* Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+/* Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@
  * of the copyright holder.
  */ 
 
-#pragma ident   "@(#)tsol.h 1.6     07/01/24 SMI"
+#pragma ident   "@(#)tsol.h 1.7     09/01/14 SMI"
 
 /*
  * tsol.h server side extension
@@ -58,14 +58,12 @@
 
 #include "tsolinfo.h"
 
-extern int tsolWindowPrivateIndex;  /* declared in tsol.c */
-extern int tsolPixmapPrivateIndex; 
 extern int SpecialName(char *string, int len);
-extern TsolInfoPtr GetClientTsolInfo();
-extern bslabel_t *lookupSL_low();
+extern TsolInfoPtr GetClientTsolInfo(ClientPtr client);
+extern bslabel_t *lookupSL_low(void);
 extern int PolyPropReadable(PropertyPtr pProp, ClientPtr client);
 extern void ReflectStackChange(WindowPtr pWin, WindowPtr pSib, VTKind  kind);
-extern WindowPtr TsolPointerWindow();
+extern WindowPtr TsolPointerWindow(void);
 
 #ifdef PANORAMIX
 extern int PanoramiXGetInputFocus(ClientPtr client);
--- a/open-src/xserver/xorg/sun-src/tsol/tsolextension.c	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/tsol/tsolextension.c	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-/* Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+/* Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -24,9 +24,9 @@
  * shall not be used in advertising or otherwise to promote the sale, use
  * or other dealings in this Software without prior written authorization
  * of the copyright holder.
- */ 
+ */
 
-#pragma ident   "@(#)tsolextension.c 1.30     08/07/21 SMI"
+#pragma ident   "@(#)tsolextension.c 1.31     09/01/14 SMI"
 
 #include <stdio.h>
 #include "auditwrite.h"
@@ -62,12 +62,16 @@
 #include "tsol.h"
 #include "inputstr.h"
 #include "extnsionst.h"
+#include "dixstruct.h"
+#include "xace.h"
+#include "xacestr.h"
 #ifdef PANORAMIX
 #include "../Xext/panoramiXsrv.h"
 #endif
 #ifdef XCSECURITY
 #define _SECURITY_SERVER
 #include "security.h"
+#include "../Xext/securitysrv.h"
 #endif
 #include "tsolpolicy.h"
 
@@ -79,10 +83,8 @@
 #define SECURE_RPC_AUTH	"SUN-DES-1"
 #define SECURE_RPC_LEN	9
 
-extern bslabel_t *lookupSL();
-extern void (*ReplySwapVector[]) ();
-extern TsolInfoPtr GetClientTsolInfo();
-extern char *NameForAtom(Atom atom);
+#define CALLBACK(name) void \
+name(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
 
 static int ProcTsolDispatch(ClientPtr);
 static int ProcSetPolyInstInfo(ClientPtr);
@@ -112,12 +114,10 @@
 static int SProcMakeTrustedWindow(ClientPtr);
 static int SProcMakeUntrustedWindow(ClientPtr);
 
-static void TsolReset();
+static void TsolReset(ExtensionEntry *extension);
 static void BreakAllGrabs(ClientPtr client);
 
-extern void init_xtsol();
-extern void init_win_privsets();
-extern void free_win_privsets();
+extern void init_xtsol(void);
 extern int DoScreenStripeHeight(int screen_num);
 extern int AddUID(int *userid);
 
@@ -126,10 +126,6 @@
 extern unsigned int StripeHeight;
 int ScreenStripeHeight[MAX_SCREENS - 1] = {0, 0};
 
-extern int tsolClientPrivateIndex;
-extern int tsolWindowPrivateIndex;
-extern int tsolPixmapPrivateIndex;
-
 static HotKeyRec hotkey = {FALSE, 0, 0, 0, 0};
 
 int tsolMultiLevel = TRUE;
@@ -142,14 +138,9 @@
 extern bclear_t SessionLO;        /* LO Clearance */
 extern TsolPolyInstInfoRec tsolpolyinstinfo;
 
-extern void LoadTsolConfig();
-extern void MakeTSOLAtoms();
-extern void UpdateTsolNode();
-/*
- * Protocol handling vectors
- */
-extern int (*ProcVector[])();
-extern int (*SwappedProcVector[])();
+extern void LoadTsolConfig(void);
+extern void MakeTSOLAtoms(void);
+extern void UpdateTsolNode(void);
 
 int (*TsolSavedProcVector[PROCVECTORSIZE])(ClientPtr client);
 int (*TsolSavedSwappedProcVector[PROCVECTORSIZE])(ClientPtr client);
@@ -158,7 +149,7 @@
 SecurityHook tsolSecHook;
 
 XID TsolCheckAuthorization (unsigned int name_length,
-	char *name, unsigned int data_length, 
+	char *name, unsigned int data_length,
 	char *data, ClientPtr client, char **reason);
 void TsolDeleteClientFromAnySelections(ClientPtr);
 void TsolDeleteWindowFromAnySelections(WindowPtr);
@@ -167,15 +158,18 @@
 	unsigned long, pointer, Bool);
 extern int TsolDeleteProperty(ClientPtr, WindowPtr, Atom);
 extern int TsolInitWindow(ClientPtr, WindowPtr);
-extern void TsolAuditStart(ClientPtr);
-extern void TsolAuditEnd(ClientPtr, int);
+static void TsolSetClientInfo(ClientPtr client);
 
-static void TsolClientStateCallback(CallbackListPtr *pcbl,
-	pointer nulldata, pointer calldata);
-static void TsolSetClientInfo(ClientPtr client);
-static void TsolProcessKeyboard(xEvent *, KeyClassPtr);
-static char TsolCheckPropertyAccess(ClientPtr client, WindowPtr pWin, ATOM propertyName,
-	Mask access_mode);
+/* XACE hook callbacks */
+static CALLBACK(TsolCheckExtensionAccess);
+static CALLBACK(TsolCheckPropertyAccess);
+static CALLBACK(TsolCheckResourceIDAccess);
+static CALLBACK(TsolProcessKeyboard);
+extern CALLBACK(TsolAuditStart);
+extern CALLBACK(TsolAuditEnd);
+
+/* other callbacks */
+static CALLBACK(TsolClientStateCallback);
 
 extern int ProcTsolInternAtom(ClientPtr client);
 extern int ProcTsolSetSelectionOwner(ClientPtr client);
@@ -231,12 +225,10 @@
  */
 
 void
-TsolExtensionInit()
+TsolExtensionInit(void)
 {
 	ExtensionEntry *extEntry;
-	ScreenPtr pScreen;
 	int i;
-	priv_set_t	*pset;
 
 	/* sleep(20); */
 
@@ -252,7 +244,7 @@
 	init_win_privsets();
 
 	extEntry = AddExtension(TSOLNAME, TSOL_NUM_EVENTS, TSOL_NUM_ERRORS,
-		ProcTsolDispatch, SProcTsolDispatch, TsolReset, 
+		ProcTsolDispatch, SProcTsolDispatch, TsolReset,
 		StandardMinorOpcode);
 
 	if (extEntry == NULL) {
@@ -260,64 +252,46 @@
 		return;
 	}
 
-	extEntry->secure = TRUE;
         TsolReqCode = (unsigned char) extEntry->base;
         tsolEventBase = extEntry->eventBase;
 
 	if (!AddCallback(&ClientStateCallback, TsolClientStateCallback, NULL))
 		return;
 
-	/* Allocate the client private index */
-	tsolClientPrivateIndex = AllocateClientPrivateIndex();
-	if (!AllocateClientPrivate(tsolClientPrivateIndex,
-		   sizeof (TsolInfoRec))) {
-		ErrorF("TsolExtensionInit: Cannot allocate client private.\n");
+	/* Allocate storage in devPrivates */
+	if (!dixRequestPrivate(tsolPrivKey, sizeof (TsolPrivRec))) {
+		ErrorF("TsolExtensionInit: Cannot allocate devPrivate.\n");
 		return;
 	}
 
-	/* Allocate per screen window/pixmap private index */
-	tsolWindowPrivateIndex = AllocateWindowPrivateIndex();
-	tsolPixmapPrivateIndex = AllocatePixmapPrivateIndex();
-
-	for (i = 0; i < screenInfo.numScreens; i++) {
-		pScreen = screenInfo.screens[i];
-		if (!AllocateWindowPrivate(pScreen, tsolWindowPrivateIndex,
-			   sizeof (TsolResRec))) {
-			ErrorF("TsolExtensionInit: Cannot allocate window private.\n");
-            		return;
-		}
-
-		if (!AllocatePixmapPrivate(pScreen, tsolPixmapPrivateIndex,
-                                   sizeof (TsolResRec))) {
-			ErrorF("TsolExtensionInit: Cannot allocate pixmap private.\n");
-			return;
-		}
-	}
-
 	LoadTsolConfig();
 
 	MakeTSOLAtoms();
 	UpdateTsolNode();
 
+	/* Initialize security hooks */
+	tsolSecHook.CheckAuthorization = TsolCheckAuthorization;
+	tsolSecHook.ChangeWindowProperty = TsolChangeWindowProperty;
+	tsolSecHook.DeleteProperty = TsolDeleteProperty;
+	tsolSecHook.DeleteClientFromAnySelections = TsolDeleteClientFromAnySelections;
+	tsolSecHook.DeleteWindowFromAnySelections = TsolDeleteWindowFromAnySelections;
+	pSecHook = &tsolSecHook;
+
+	XaceRegisterCallback(XACE_RESOURCE_ACCESS, TsolCheckResourceIDAccess,
+			     NULL);
+	XaceRegisterCallback(XACE_PROPERTY_ACCESS, TsolCheckPropertyAccess,
+			     NULL);
+	XaceRegisterCallback(XACE_EXT_ACCESS, TsolCheckExtensionAccess, NULL);
+	XaceRegisterCallback(XACE_KEY_AVAIL, TsolProcessKeyboard, NULL);
+	XaceRegisterCallback(XACE_AUDIT_BEGIN, TsolAuditStart, NULL);
+	XaceRegisterCallback(XACE_AUDIT_END, TsolAuditEnd, NULL);
+
 	/* Save original Proc vectors */
 	for (i = 0; i < PROCVECTORSIZE; i++) {
 		TsolSavedProcVector[i] = ProcVector[i];
 		TsolSavedSwappedProcVector[i] = SwappedProcVector[i];
 	}
 
-	/* Initialize security hooks */
-	tsolSecHook.CheckAuthorization = TsolCheckAuthorization;
-	tsolSecHook.ChangeWindowProperty = TsolChangeWindowProperty;
-	tsolSecHook.CheckPropertyAccess = TsolCheckPropertyAccess;
-	tsolSecHook.DeleteProperty = TsolDeleteProperty;
-	tsolSecHook.InitWindow = TsolInitWindow;
-	tsolSecHook.ProcessKeyboard = TsolProcessKeyboard;
-	tsolSecHook.DeleteClientFromAnySelections = TsolDeleteClientFromAnySelections;
-	tsolSecHook.DeleteWindowFromAnySelections = TsolDeleteWindowFromAnySelections;
-	tsolSecHook.AuditStart = TsolAuditStart;
-	tsolSecHook.AuditEnd = TsolAuditEnd;
-	pSecHook = &tsolSecHook;
-
 	/* Replace some of the original Proc vectors with our own TBD */
 	ProcVector[X_InternAtom] = ProcTsolInternAtom;
 	ProcVector[X_SetSelectionOwner] = ProcTsolSetSelectionOwner;
@@ -367,46 +341,52 @@
 
 }
 
-static pointer
-TsolCheckResourceIDAccess(
-    ClientPtr client,
-    XID id,
-    RESTYPE rtype,
-    Mask access_mode,
-    pointer rval)
+static CALLBACK(
+    TsolCheckResourceIDAccess)
 {
+    XaceResourceAccessRec *rec = calldata;
+    ClientPtr client = rec->client;
+    XID id = rec->id;
+    RESTYPE rtype = rec->rtype;
+    pointer rval = rec->res;
+    Mask access_mode = rec->access_mode;
+
     int cid = CLIENT_ID(id);
-    int reqtype = ((xReq *)client->requestBuffer)->reqType;  /* protocol */
-    pointer retval;
-    char msgbuf[1024];
+    int reqtype;
 
-
-    retval = rval;
+    if (client->requestBuffer) {
+	reqtype = MAJOROP;  /* protocol */
+    } else {
+	reqtype = -1;
+    }
 
     switch (rtype) {
-	case RT_GC:
-		switch (access_mode) {
-		case SecurityReadAccess:
-		    if (xtsol_policy(TSOL_RES_GC, TSOL_READ, (void *)id,
-			client, TSOL_ALL, (void *)MAJOROP))
-				retval = NULL;
-		    break;
+        case RT_GC:
+	    if (access_mode & DixReadAccess) {
+		if (xtsol_policy(TSOL_RES_GC, TSOL_READ, (void *)id,
+				 client, TSOL_ALL, (void *)MAJOROP))
+		    rec->status = BadAccess;
+	    }
 
-		case SecurityWriteAccess:
-		    if (xtsol_policy(TSOL_RES_GC, TSOL_MODIFY, (void *)id,
-			client, TSOL_ALL, (void *)MAJOROP))
-				retval = NULL;
-		    break;
+	    if (access_mode & DixWriteAccess) {
+		if (xtsol_policy(TSOL_RES_GC, TSOL_MODIFY, (void *)id,
+				 client, TSOL_ALL, (void *)MAJOROP))
+		    rec->status = BadAccess;
+	    }
 
-		case SecurityDestroyAccess:
-		    if (xtsol_policy(TSOL_RES_GC, TSOL_DESTROY, (void *)id,
-			client, TSOL_ALL, (void *)MAJOROP))
-				retval = NULL;
-		    break;
-		}
-		break;
+	    if (access_mode & DixDestroyAccess) {
+		if (xtsol_policy(TSOL_RES_GC, TSOL_DESTROY, (void *)id,
+				 client, TSOL_ALL, (void *)MAJOROP))
+		    rec->status = BadAccess;
+	    }
+	    break;
 
 	case RT_WINDOW:		/* Drawables */
+	    if (access_mode & DixCreateAccess) {
+		/* Replaces InitWindow hook */
+		TsolInitWindow(client, (WindowPtr) rval);
+	    }
+	    /* The rest falls through to code shared with RT_PIXMAP */
 	case RT_PIXMAP:
 	    /* Drawing operations use pixel access policy */
 	    switch (reqtype) {
@@ -421,19 +401,19 @@
 		case X_PolyText16:
 		case X_ImageText8:
 		case X_ImageText16:
-		switch (access_mode) {
-		case SecurityReadAccess:
-		    if (xtsol_policy(TSOL_RES_PIXEL, TSOL_READ, (void *)rval,
-			client, TSOL_ALL, (void *)MAJOROP))
-				retval = NULL;
-		    break;
+		    if (access_mode & DixReadAccess) {
+			if (xtsol_policy(TSOL_RES_PIXEL, TSOL_READ,
+					 (void *)rval, client, TSOL_ALL,
+					 (void *)MAJOROP))
+			    rec->status = BadAccess;
+		    }
 
-		case SecurityWriteAccess:
-		    if (xtsol_policy(TSOL_RES_PIXEL, TSOL_MODIFY, (void *)rval,
-			client, TSOL_ALL, (void *)MAJOROP))
-				retval = NULL;
-		    break;
-    		}
+		    if (access_mode & DixWriteAccess) {
+			if (xtsol_policy(TSOL_RES_PIXEL, TSOL_MODIFY,
+					 (void *)rval, client, TSOL_ALL,
+					 (void *)MAJOROP))
+			    rec->status = BadAccess;
+		    }
 		break;
 
 		/* Property protocols */
@@ -442,53 +422,45 @@
 		case X_GetProperty:
 		case X_ListProperties:
 		case X_RotateProperties:
-		switch (access_mode) {
-		case SecurityReadAccess:
-		    if (xtsol_policy(TSOL_RES_PROPWIN, TSOL_READ, (void *)rval,
-			client, TSOL_ALL, (void *)MAJOROP))
-				retval = NULL;
-		    break;
+		    if (access_mode & DixReadAccess) {
+			if (xtsol_policy(TSOL_RES_PROPWIN, TSOL_READ,
+					 (void *)rval, client, TSOL_ALL,
+					 (void *)MAJOROP))
+			    rec->status = BadAccess;
+		    }
 
-		case SecurityWriteAccess:
-		    if (xtsol_policy(TSOL_RES_PROPWIN, TSOL_MODIFY, (void *)rval,
-			client, TSOL_ALL, (void *)MAJOROP))
-				retval = NULL;
+		    if (access_mode & DixWriteAccess) {
+			if (xtsol_policy(TSOL_RES_PROPWIN, TSOL_MODIFY,
+					 (void *)rval, client, TSOL_ALL,
+					 (void *)MAJOROP))
+			    rec->status = BadAccess;
+		    }
 		    break;
-    		}
-		break;
-		}
-		break;
+	    }
+	    break;
     }
 
-    if (retval == NULL) {
-    	TsolInfoPtr tsolinfo, res_tsolinfo;
-    	tsolinfo = GetClientTsolInfo(client);
+    if (rec->status == BadAccess) {
+    	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
-	snprintf(msgbuf, sizeof (msgbuf), 
-	    "Access failed: cid = %d, rtype=%X, access=%d, xid=%X, proto = %d, pid = %d\n",
-		cid, rtype, access_mode, id, reqtype, tsolinfo->pid);
-	ErrorF(msgbuf);
+	ErrorF("Access failed: cid = %d, rtype=%X, access=%d,"
+	       " xid=%X, proto = %d, pid = %d\n",
+	       cid, (uint_t) rtype, access_mode, id, reqtype, tsolinfo->pid);
     }
-
-    return retval;
 }
 
-static void
-TsolClientStateCallback(CallbackListPtr *pcbl,
-	pointer nulldata,
-	pointer calldata)
+static
+CALLBACK(TsolClientStateCallback)
 {
  	NewClientInfoRec *pci = (NewClientInfoRec *)calldata;
 	ClientPtr client = pci->client;
-	TsolInfoPtr tsolinfo = (TsolInfoPtr)
-		(client->devPrivates[tsolClientPrivateIndex].ptr);
+	TsolInfoPtr tsolinfo = TsolClientPriv(client);
 
 	switch (client->clientState) {
 
 	case ClientStateInitial:
 		/* Got a new connection */
 		TsolSetClientInfo(client);
-		client->CheckAccess = TsolCheckResourceIDAccess;
 		break;
 
 	case ClientStateRunning:
@@ -527,9 +499,15 @@
 }
 
 static void
-TsolReset()
+TsolReset(ExtensionEntry *extension)
 {
-	free_win_privsets();
+    free_win_privsets();
+    XaceDeleteCallback(XACE_RESOURCE_ACCESS, TsolCheckResourceIDAccess, NULL);
+    XaceDeleteCallback(XACE_PROPERTY_ACCESS, TsolCheckPropertyAccess, NULL);
+    XaceDeleteCallback(XACE_EXT_ACCESS, TsolCheckExtensionAccess, NULL);
+    XaceDeleteCallback(XACE_KEY_AVAIL, TsolProcessKeyboard, NULL);
+    XaceDeleteCallback(XACE_AUDIT_BEGIN, TsolAuditStart, NULL);
+    XaceDeleteCallback(XACE_AUDIT_END, TsolAuditEnd, NULL);
 }
 
 /*
@@ -537,8 +515,7 @@
  *
  */
 static int
-ProcTsolDispatch(client)
-register ClientPtr client;
+ProcTsolDispatch(register ClientPtr client)
 {
     int retval;
 
@@ -569,7 +546,7 @@
             break;
         case X_GetPropAttributes:
             retval =  ProcGetPropAttributes(client);
-            break;            
+            break;
         case X_GetResAttributes:
             retval =  ProcGetResAttributes(client);
             break;
@@ -591,8 +568,7 @@
 
 
 static int
-SProcTsolDispatch(client)
-register ClientPtr client;
+SProcTsolDispatch(register ClientPtr client)
 {
     int n;
     int retval;
@@ -625,7 +601,7 @@
             break;
         case X_GetPropAttributes:
             retval =  SProcGetPropAttributes(client);
-            break;            
+            break;
         case X_GetResAttributes:
             retval =  SProcGetResAttributes(client);
             break;
@@ -802,12 +778,12 @@
 }
 
 /*
- * Set PolyInstantiation Info. 
+ * Set PolyInstantiation Info.
  * Normally a get(prop) will
  * get the prop. that has match sl, uid of the client. Setting
  * enabled to true will get only the prop. corresponding to
  * sl, uid specified instead of that of client. This is used
- * by dtwm/dtfile in special motif lib. 
+ * by dtwm/dtfile in special motif lib.
  */
 static int
 ProcSetPolyInstInfo(ClientPtr client)
@@ -841,9 +817,10 @@
     bslabel_t   *sl;
     WindowPtr    pWin;
     TsolPropPtr  tsolprop;
+    TsolPropPtr *tsolpropP;
     PropertyPtr  pProp;
     int          err_code;
-    
+
     REQUEST(xSetPropLabelReq);
 
     REQUEST_AT_LEAST_SIZE(xSetPropLabelReq);
@@ -883,14 +860,15 @@
     }
 
     /* Initialize property created internally by server */
-    if (pProp->secPrivate == NULL)
+    tsolpropP = TsolPropertyPriv(pProp);
+    if (*tsolpropP == NULL)
     {
-        pProp->secPrivate = (pointer)AllocServerTsolProp();
-        if (pProp->secPrivate == NULL)
+        *tsolpropP = (pointer)AllocServerTsolProp();
+        if (*tsolpropP == NULL)
 	    return(BadAlloc);
     }
 
-    tsolprop = (TsolPropPtr)(pProp->secPrivate);
+    tsolprop = *tsolpropP;
 
     sl = (bslabel_t *)(stuff + 1);
 
@@ -903,7 +881,7 @@
 	}
 	tsolprop->sl = lookupSL(sl);
     }
-    
+
     return (client->noClientException);
 }
 
@@ -912,13 +890,14 @@
 {
     WindowPtr   pWin;
     TsolPropPtr tsolprop;
+    TsolPropPtr *tsolpropP;
     PropertyPtr pProp;
     int         err_code;
 
     REQUEST(xSetPropUIDReq);
 
     REQUEST_SIZE_MATCH(xSetPropUIDReq);
-    
+
     pWin = LookupWindow(stuff->id, client);
     if (!pWin)
     {
@@ -957,14 +936,15 @@
         return (err_code);
     }
     /* Initialize property created internally by server */
-    if (pProp->secPrivate == NULL)
+    tsolpropP = TsolPropertyPriv(pProp);
+    if (*tsolpropP == NULL)
     {
-        pProp->secPrivate = (pointer)AllocServerTsolProp();
-        if (pProp->secPrivate == NULL)
-	    return(BadAlloc);
+        *tsolpropP = AllocServerTsolProp();
+        if (*tsolpropP == NULL)
+	    return (BadAlloc);
     }
 
-    tsolprop = (TsolPropPtr)(pProp->secPrivate);
+    tsolprop = *tsolpropP;
     tsolprop->uid = stuff->uid;
 
     return (client->noClientException);
@@ -978,9 +958,8 @@
     WindowPtr   pWin;
     xEvent      message;
     TsolResPtr  tsolres;
-    DrawablePtr pDraw;
     int         err_code;
-    
+
     REQUEST(xSetResLabelReq);
 
     REQUEST_AT_LEAST_SIZE(xSetResLabelReq);
@@ -1008,8 +987,7 @@
             pWin = LookupWindow(stuff->id, client);
             if (pWin)
             {
-                tsolres =
-                    (TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+                tsolres = TsolWindowPriv(pWin);
             }
             else
             {
@@ -1026,8 +1004,7 @@
             pMap = (PixmapPtr)LookupIDByType(stuff->id, RT_PIXMAP);
             if (pMap)
             {
-                tsolres =
-                    (TsolResPtr)(pMap->devPrivates[tsolPixmapPrivateIndex].ptr);
+                tsolres = TsolPixmapPriv(pMap);
             }
             else
             {
@@ -1114,8 +1091,7 @@
             pWin = LookupWindow(stuff->id, client);
             if (pWin)
             {
-                tsolres =
-                    (TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+                tsolres = TsolWindowPriv(pWin);
             }
             else
             {
@@ -1132,8 +1108,7 @@
             pMap = (PixmapPtr)LookupIDByType(stuff->id, RT_PIXMAP);
             if (pMap)
             {
-                tsolres =
-                    (TsolResPtr)(pMap->devPrivates[tsolPixmapPrivateIndex].ptr);
+                tsolres = TsolPixmapPriv(pMap);
             }
             else
             {
@@ -1149,7 +1124,7 @@
         default:
             return (BadValue);
     }
-    
+
     if (err_code = xtsol_policy(TSOL_RES_UID, TSOL_MODIFY, NULL,
                                 client, TSOL_ALL, (void *)MAJOROP))
     {
@@ -1170,7 +1145,7 @@
     WindowPtr	pWin;
 
     xGetClientAttributesReply rep;
-    
+
     REQUEST(xGetClientAttributesReq);
     REQUEST_SIZE_MATCH(xGetClientAttributesReq);
 
@@ -1198,7 +1173,7 @@
     /* Transfer the client info to reply rec */
     rep.type = X_Reply;
     rep.sequenceNumber = client->sequence;
-    rep.trustflag = (res_tsolinfo->forced_trust == 1 
+    rep.trustflag = (res_tsolinfo->forced_trust == 1
 	|| res_tsolinfo->trusted_path) ? (BYTE)1 : (BYTE)0;
     rep.uid = (CARD32) res_tsolinfo->uid;
     rep.pid = (CARD32) res_tsolinfo->pid;
@@ -1267,18 +1242,18 @@
     rep.sequenceNumber = client->sequence;
 
     /* allocate temp storage for labels */
-    sl = (bslabel_t *)(ALLOCATE_LOCAL(SL_SIZE));
+    sl = (bslabel_t *)(xalloc(SL_SIZE));
     rep.data00 = rep.data01 = 0;
     if (sl == NULL)
         return (BadAlloc);
-    
+
     /* fill the fields as per request mask */
     if (stuff->mask & RES_SL)
     {
         memcpy(sl, res_tsolinfo->sl, SL_SIZE);
         rep.data00 = SL_SIZE;
     }
-    
+
     rep.length = (CARD32)(rep.data00)/4;
 
     if (rep.length > 0)
@@ -1300,7 +1275,7 @@
     {
         WriteToClient(client, reply_length, (char *)sl);
     }
-    DEALLOCATE_LOCAL(sl);
+    xfree(sl);
 
     return (client->noClientException);
 }
@@ -1310,7 +1285,6 @@
 {
     int          n;
     int          reply_length;
-    int          extralen;
     int          err_code;
     Bool         write_to_client = 0;
     PropertyPtr  pProp;
@@ -1326,11 +1300,7 @@
     REQUEST_SIZE_MATCH(xGetPropAttributesReq);
 
     pWin = LookupWindow(stuff->id, client);
-    if (pWin)
-    {
-        tsolprop = (TsolPropPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
-    }
-    else
+    if (!pWin)
     {
         client->errorValue = stuff->id;
         return (BadWindow);
@@ -1361,7 +1331,7 @@
         client->errorValue = stuff->atom;
         return (BadAtom);
     }
-    tsolprop = (TsolPropPtr)(pProp->secPrivate);
+    tsolprop = TsolPropertyPriv(pProp);
     tmp_prop = tsolprop;
     while (tmp_prop)
     {
@@ -1395,11 +1365,11 @@
     }
 
     /* allocate temp storage for labels */
-    sl = (bslabel_t *)(ALLOCATE_LOCAL(SL_SIZE));
+    sl = (bslabel_t *)(xalloc(SL_SIZE));
     rep.sllength = rep.illength = 0;
     if (sl == NULL)
         return (BadAlloc);
-    
+
     /* fill the fields as per request mask */
     if (stuff->mask & RES_SL)
     {
@@ -1431,7 +1401,7 @@
     {
         WriteToClient(client, reply_length, (char *)sl);
     }
-    DEALLOCATE_LOCAL(sl);
+    xfree(sl);
 
     return (client->noClientException);
 }
@@ -1441,7 +1411,6 @@
 {
     int         n;
     int         reply_length;
-    int         extralen;
     int         err_code;
     Bool        write_to_client = 0;
     bslabel_t  *sl;
@@ -1463,14 +1432,13 @@
     {
         rep.owneruid = OwnerUID;
     }
-    if (stuff->resourceType == IsWindow && 
+    if (stuff->resourceType == IsWindow &&
         (stuff->mask & (RES_UID | RES_SL )))
     {
         pWin = LookupWindow(stuff->id, client);
         if (pWin)
         {
-            tsolres = (TsolResPtr)
-                (pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+            tsolres = TsolWindowPriv(pWin);
         }
         else
         {
@@ -1483,14 +1451,13 @@
             return (err_code);
         }
     }
-    if (stuff->resourceType == IsPixmap && 
+    if (stuff->resourceType == IsPixmap &&
         (stuff->mask & (RES_UID | RES_SL )))
     {
         pMap = (PixmapPtr)LookupIDByType(stuff->id, RT_PIXMAP);
         if (pMap)
         {
-            tsolres = (TsolResPtr)
-                (pMap->devPrivates[tsolPixmapPrivateIndex].ptr);
+            tsolres = TsolPixmapPriv(pMap);
         }
         else
         {
@@ -1510,11 +1477,11 @@
     }
 
     /* allocate temp storage for labels */
-    sl = (bslabel_t *)(ALLOCATE_LOCAL(SL_SIZE));
+    sl = (bslabel_t *)(xalloc(SL_SIZE));
     rep.sllength = rep.illength = rep.iillength = 0;
     if (sl == NULL)
         return (BadAlloc);
-    
+
     /* fill the fields as per request mask */
     if (stuff->mask & RES_SL)
     {
@@ -1548,7 +1515,7 @@
     {
             WriteToClient(client, reply_length, (char *)sl);
     }
-    DEALLOCATE_LOCAL(sl);
+    xfree(sl);
 
     return (client->noClientException);
 }
@@ -1566,21 +1533,19 @@
     REQUEST_SIZE_MATCH(xMakeTPWindowReq);
 
     /*
-     * Session type single-level? This is set by the 
+     * Session type single-level? This is set by the
      * label builder
      */
     tsolinfo = GetClientTsolInfo(client);
-    if (tsolinfo && HasTrustedPath(tsolinfo) && 
+    if (tsolinfo && HasTrustedPath(tsolinfo) &&
 		blequal(&SessionLO, &SessionHI) && stuff->id == 0) {
 	tsolMultiLevel = FALSE;
 	return (client->noClientException);
     }
 
-#if defined(PANORAMIX) 
-    if (!noPanoramiXExtension) 
+#if defined(PANORAMIX)
+    if (!noPanoramiXExtension)
     {
-#if defined(IN_MODULE)
-	/* Xorg X server */
         PanoramiXRes     *panres = NULL;
         int         j;
 
@@ -1611,40 +1576,7 @@
 		    ReflectStackChange(pWin, pParent->firstChild, VTStack);
 		}
 	}
-#else
-	/* Xsun X server */
-        PanoramiXWindow     *pPanoramiXWin = PanoramiXWinRoot;
-        int         j;
-
-        PANORAMIXFIND_ID(pPanoramiXWin, stuff->id);
-        IF_RETURN(!pPanoramiXWin, BadWindow);
-
-	FOR_NSCREENS_OR_ONCE(pPanoramiXWin, j)
-	{
-		pWin = LookupWindow(pPanoramiXWin->info[j].id, client);
-
-		/* window should not be root but child of root */
-		if (!pWin || (!pWin->parent))
-		{
-		    client->errorValue = stuff->id;
-		    return (BadWindow);
-		}
-		if (err_code = xtsol_policy(TSOL_RES_TPWIN, TSOL_MODIFY, pWin,
-					client, TSOL_ALL, (void *)MAJOROP))
-		{
-		    return (err_code);
-		}
-
-		pParent = pWin->parent;
-		if (pParent->firstChild != pWin)
-		{
-		    tpwin = (WindowPtr)NULL;
-		    ReflectStackChange(pWin, pParent->firstChild, VTStack);
-		}
-	}
-#endif
-
-    } else 
+    } else
 #endif
     {
 	pWin = LookupWindow(stuff->id, client);
@@ -1706,7 +1638,7 @@
     {
         return (err_code);
     }
-    tsolinfo = GetClientTsolInfo(client);    
+    tsolinfo = GetClientTsolInfo(client);
     /* Turn on Trusted bit of the window */
     tsolinfo->forced_trust = 1;
     return (client->noClientException);
@@ -1738,10 +1670,10 @@
     {
         return (err_code);
     }
-    tsolinfo = GetClientTsolInfo(client);    
+    tsolinfo = GetClientTsolInfo(client);
     tsolinfo->forced_trust = 0;
     tsolinfo->trusted_path = FALSE;
-    
+
     return (client->noClientException);
 }
 
@@ -1782,23 +1714,18 @@
 	bslabel_t *sl;
 	bslabel_t admin_low;
 	priv_set_t *privs;
-	const au_tid64_addr_t *tid64;
 	const au_mask_t *amask;
-	au_mask_t mask;		/* user audit mask */
 	socklen_t namelen;
-	struct passwd *pw;
 	struct auditinfo auinfo;
 	struct auditinfo *pauinfo;
 	OsCommPtr oc = (OsCommPtr)client->osPrivate;
-	register ConnectionInputPtr oci = oc->input;
 	int fd = oc->fd;
 	ucred_t *uc = NULL;
 	extern  au_id_t ucred_getauid(const ucred_t *uc);
 	extern  au_asid_t ucred_getasid(const ucred_t *uc);
 	extern  const au_mask_t *ucred_getamask(const ucred_t *uc);
 
-	TsolInfoPtr tsolinfo = (TsolInfoPtr)
-		(client->devPrivates[tsolClientPrivateIndex].ptr);
+	TsolInfoPtr tsolinfo = TsolClientPriv(client);
 
 	/* Get client attributes from the socket */
 	if (getpeerucred(fd, &uc) == -1) {
@@ -1829,14 +1756,14 @@
 				priv_copyset(privs, tsolinfo->privs);
 			}
 		} else {
-			priv_fillset(tsolinfo->privs); 
+			priv_fillset(tsolinfo->privs);
 		}
 	}
 
 	tsolinfo->priv_debug = FALSE;
 
 
-	/* 
+	/*
 	 * For remote hosts, the uid is determined during access control
 	 * using Secure RPC
 	 */
@@ -1846,7 +1773,7 @@
 		tsolinfo->client_type = CLIENT_LOCAL;
 	}
 
-	
+
 	/* Set Trusted Path for local clients */
 	if (tsolinfo->zid == GLOBAL_ZONEID) {
 		tsolinfo->trusted_path = TRUE;
@@ -1855,9 +1782,9 @@
 	}
 
 	if (tsolinfo->trusted_path || !tsolMultiLevel)
-		client->trustLevel = XSecurityClientTrusted;
+		setClientTrustLevel(client, XSecurityClientTrusted);
 	else
-		client->trustLevel = XSecurityClientUntrusted;
+		setClientTrustLevel(client, XSecurityClientUntrusted);
 
         tsolinfo->forced_trust = 0;
         tsolinfo->iaddr = 0;
@@ -1870,8 +1797,7 @@
 	  && (tsolinfo->client_type == CLIENT_REMOTE)) {
 		int errcode;
 		char hostbuf[NI_MAXHOST];
-		tsol_host_type_t host_type; 
-		struct sockaddr sname;
+		tsol_host_type_t host_type;
 		extern tsol_host_type_t tsol_getrhtype(char *);
 
 		/* Use NI_NUMERICHOST to avoid DNS lookup */
@@ -1882,10 +1808,11 @@
 			perror(gai_strerror(errcode));
 		} else {
 			host_type = tsol_getrhtype(hostbuf);
-			if ((host_type == SUN_CIPSO) && 
+			if ((host_type == SUN_CIPSO) &&
 				blequal(tsolinfo->sl, &admin_low)) {
 				tsolinfo->trusted_path = TRUE;
-				client->trustLevel = XSecurityClientTrusted;
+				setClientTrustLevel(client,
+						    XSecurityClientTrusted);
 				priv_fillset(tsolinfo->privs);
 			}
 		}
@@ -1926,17 +1853,15 @@
 
 static enum auth_stat tsol_why;
 
-static char * 
-tsol_authdes_decode(inmsg, len)
-char *inmsg;
-int  len;
+static char *
+tsol_authdes_decode(char *inmsg, int len)
 {
     struct rpc_msg  msg;
     char            cred_area[MAX_AUTH_BYTES];
     char            verf_area[MAX_AUTH_BYTES];
     char            *temp_inmsg;
     struct svc_req  r;
-    bool_t          res0, res1, auth_ret;
+    bool_t          res0, res1;
     XDR             xdr;
     SVCXPRT         xprt;
     extern bool_t xdr_opaque_auth(XDR *, struct opaque_auth *);
@@ -1951,7 +1876,7 @@
 
     msg.rm_call.cb_cred.oa_base = cred_area;
     msg.rm_call.cb_verf.oa_base = verf_area;
-    tsol_why = AUTH_FAILED; 
+    tsol_why = AUTH_FAILED;
     xdrmem_create(&xdr, temp_inmsg, len, XDR_DECODE);
 
     if ((r.rq_clntcred = (caddr_t) xalloc(MAX_AUTH_BYTES)) == NULL)
@@ -1959,7 +1884,7 @@
     r.rq_xprt = &xprt;
 
     /* decode into msg */
-    res0 = xdr_opaque_auth(&xdr, &(msg.rm_call.cb_cred)); 
+    res0 = xdr_opaque_auth(&xdr, &(msg.rm_call.cb_cred));
     res1 = xdr_opaque_auth(&xdr, &(msg.rm_call.cb_verf));
     if ( ! (res0 && res1) )
          goto bad2;
@@ -1978,13 +1903,14 @@
 #endif
             goto bad2;
     }
-    return (((struct authdes_cred *) r.rq_clntcred)->adc_fullname.name); 
+    return (((struct authdes_cred *) r.rq_clntcred)->adc_fullname.name);
 
 bad2:
     Xfree(r.rq_clntcred);
 bad1:
     return ((char *)0); /* ((struct authdes_cred *) NULL); */
 }
+
 static Bool
 TsolCheckNetName (unsigned char *addr, short len, pointer closure)
 {
@@ -1994,7 +1920,7 @@
 
 
 XID
-TsolCheckAuthorization(unsigned int name_length, char *name, unsigned int data_length, 
+TsolCheckAuthorization(unsigned int name_length, char *name, unsigned int data_length,
 	char *data, ClientPtr client, char **reason)
 {
 	char	domainname[128];
@@ -2017,8 +1943,8 @@
 			if (fullname == NULL) {
 				ErrorF("Unable to authenticate Secure RPC client");
 			} else {
-				if (netname2user(fullname, 
-					&client_uid, &client_gid, 
+				if (netname2user(fullname,
+					&client_uid, &client_gid,
 					&client_gidlen, &client_gidlist)) {
 					tsolinfo->uid = client_uid;
 				} else {
@@ -2027,14 +1953,14 @@
 			}
 		}
 	}
-	 
+
 	if (tsolinfo->uid == (uid_t)-1) {
 		tsolinfo->uid = UID_NOBODY; /* uid not available */
 	}
 
-	/* 
+	/*
 	 * For multilevel desktop, limit connections to the trusted path
-	 * i.e. global zone until a user logs in and the trusted stripe 
+	 * i.e. global zone until a user logs in and the trusted stripe
 	 * is in place. Unlabeled connections are rejected.
 	 */
 	if ((OwnerUID == (uid_t )(-1)) || (tsolMultiLevel && tpwin == NULL)) {
@@ -2043,23 +1969,23 @@
 				data, client, reason);
 		}
 	} else {
-		/* 
+		/*
 		 * Workstation Owner set, client must be within label
 		 * range or have trusted path
 		 */
 		if (tsolinfo->uid == OwnerUID) {
-			if (tsolinfo->sl != NULL && 
-					(bldominates(tsolinfo->sl, &SessionLO) &&
-					bldominates(&SessionHI, tsolinfo->sl)) || 
-					(HasTrustedPath(tsolinfo))) {
-				auth_token = (XID)(tsolinfo->uid);
+			if ((tsolinfo->sl != NULL &&
+			     (bldominates(tsolinfo->sl, &SessionLO) &&
+			      bldominates(&SessionHI, tsolinfo->sl))) ||
+			    (HasTrustedPath(tsolinfo))) {
+			    auth_token = (XID)(tsolinfo->uid);
 			}
 		} else {
 			/* Allow root from global zone */
 			if (tsolinfo->uid == 0 && HasTrustedPath(tsolinfo)) {
 				auth_token = (XID)(tsolinfo->uid);
 			} else {
-				/* 
+				/*
 				 * Access check based on uid. Check if
 				 * roles or other uids have  been added by
 				 * xhost +role@
@@ -2135,11 +2061,17 @@
 	return (auth_token);
 }
 
-static void
-TsolProcessKeyboard(xEvent *xE, KeyClassPtr keyc)
+static CALLBACK(
+TsolProcessKeyboard)
 {
+    XaceKeyAvailRec *rec = (XaceKeyAvailRec *) calldata;
+    xEvent *xE = rec->event;
+    DeviceIntPtr keybd = rec->keybd;
+/*  int count = rec->count; */
+    KeyClassPtr keyc = keybd->key;
+
     extern void InitHotKey(HotKeyPtr hk);
-    extern void HandleHotKey();
+    extern void HandleHotKey(void);
 
     if (xE->u.u.type == KeyPress)
     {
@@ -2154,54 +2086,68 @@
     }
 }
 
-static char
-TsolCheckPropertyAccess(ClientPtr client, WindowPtr pWin, ATOM propertyName,
-	Mask access_mode)
+static CALLBACK(
+TsolCheckPropertyAccess)
 {
-	char	action;
-	PropertyPtr pProp;
+    XacePropertyAccessRec *rec = (XacePropertyAccessRec *) calldata;
+    ClientPtr client = rec->client;
+    WindowPtr pWin = rec->pWin;
+    PropertyPtr pProp = *rec->ppProp;
+    Atom propertyName = pProp->propertyName;
+    Mask access_mode = rec->access_mode;
 
-        pProp = wUserProps (pWin);
-        while (pProp)
-        {
-            if (pProp->propertyName == propertyName)
-		break;
-	    pProp = pProp->next;
-        }
-
-	if (pProp == NULL)
-		return SecurityAllowOperation;
+    if (pProp == NULL) {
+	return;
+    }
 
-	if (access_mode & SecurityReadAccess) {
-		if (!PolyProperty(propertyName, pWin) &&
-		    xtsol_policy(TSOL_RES_PROPERTY, TSOL_READ,
-			pProp, client, TSOL_ALL, (void *)MAJOROP))
-		   return SecurityIgnoreOperation;
-		else
-		   return SecurityAllowOperation;
-	}
+    if (access_mode & DixReadAccess) {
+	if (!PolyProperty(propertyName, pWin) &&
+	    xtsol_policy(TSOL_RES_PROPERTY, TSOL_READ,
+			 pProp, client, TSOL_ALL, (void *)MAJOROP))
+	    rec->status = BadAccess;
+/* this used to be:
+                   return SecurityIgnoreOperation;
+                else
+                   return SecurityAllowOperation;
+*/
+    }
 
-	if (access_mode & SecurityWriteAccess) {
-		if (!PolyProperty(propertyName, pWin) &&
-		    xtsol_policy(TSOL_RES_PROPERTY, TSOL_MODIFY,
-			pProp, client, TSOL_ALL, (void *)MAJOROP))
-		   return SecurityIgnoreOperation;
-		else
-		   return SecurityAllowOperation;
-	}
+    if (access_mode & DixWriteAccess) {
+	if (!PolyProperty(propertyName, pWin) &&
+	    xtsol_policy(TSOL_RES_PROPERTY, TSOL_MODIFY,
+			 pProp, client, TSOL_ALL, (void *)MAJOROP))
+	    rec->status = BadAccess;
+/* this used to be:
+                   return SecurityIgnoreOperation;
+                else
+                   return SecurityAllowOperation;
+*/
+    }
 
-	if (access_mode & SecurityDestroyAccess) {
-		if (!PolyProperty(propertyName, pWin) &&
-		    xtsol_policy(TSOL_RES_PROPERTY, TSOL_DESTROY,
-			pProp, client, TSOL_ALL, (void *)MAJOROP))
-		   return SecurityIgnoreOperation;
-		else
-		   return SecurityAllowOperation;
-	}
-
-	return SecurityAllowOperation;
+    if (access_mode & DixDestroyAccess) {
+	if (!PolyProperty(propertyName, pWin) &&
+	    xtsol_policy(TSOL_RES_PROPERTY, TSOL_DESTROY,
+			 pProp, client, TSOL_ALL, (void *)MAJOROP))
+	    rec->status = BadAccess;
+/* this used to be:
+                   return SecurityIgnoreOperation;
+                else
+                   return SecurityAllowOperation;
+*/
+    }
 }
 
+static CALLBACK(
+TsolCheckExtensionAccess)
+{
+    XaceExtAccessRec *rec = (XaceExtAccessRec *) calldata;
+
+    if (TsolDisabledExtension(rec->ext->name)) {
+	rec->status = BadAccess;
+    }
+}
+
+#ifdef UNUSED
 /*
  * Return TRUE if host is cipso
  */
@@ -2211,7 +2157,7 @@
 	struct sockaddr sname;
 	socklen_t namelen;
 	char *rhost;
-	tsol_host_type_t host_type; 
+	tsol_host_type_t host_type;
 	struct sockaddr_in *so = (struct sockaddr_in *)&sname;
 	extern tsol_host_type_t tsol_getrhtype(char *);
 
@@ -2229,3 +2175,4 @@
 
 	return FALSE;
 }
+#endif
--- a/open-src/xserver/xorg/sun-src/tsol/tsolinfo.h	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/tsol/tsolinfo.h	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-/* Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+/* Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -24,9 +24,9 @@
  * shall not be used in advertising or otherwise to promote the sale, use
  * or other dealings in this Software without prior written authorization
  * of the copyright holder.
- */ 
+ */
 
-#pragma ident   "@(#)tsolinfo.h 1.18     07/06/08 SMI"
+#pragma ident   "@(#)tsolinfo.h 1.19     09/01/14 SMI"
 
 
 #ifndef    _TSOL_INFO_H
@@ -156,8 +156,8 @@
 	(tsolinfo->trusted_path ||\
 	(tsolinfo->forced_trust == 1))
 
-#define XTSOLTrusted(pWin)\
-	(((TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr))->flags & TRUSTED_MASK)
+#define XTSOLTrusted(pWin) \
+    ((TsolWindowPriv(pWin))->flags & TRUSTED_MASK)
 
 
 /*********************************
@@ -236,8 +236,36 @@
     pid_t       pid;                    /* who created it */
 } TsolSelnRec, *TsolSelnPtr;
 
+/*
+ * information stored in devPrivates
+ */
+typedef union {
+    TsolInfoRec		clientPriv;
+    TsolResRec		windowPriv;
+    TsolResRec		pixmapPriv;
+    TsolPropPtr		propertyPriv;
+    TsolSelnPtr		selectionPriv;
+} TsolPrivRec, *TsolPrivPtr;
+
+extern DevPrivateKey tsolPrivKey;
+
+#define TsolClientPriv(pClient) \
+    ((TsolInfoPtr) dixLookupPrivate(&(pClient)->devPrivates, tsolPrivKey))
+
+#define TsolWindowPriv(pWin)	\
+    ((TsolResPtr) dixLookupPrivate(&(pWin)->devPrivates, tsolPrivKey))
+
+#define TsolPixmapPriv(pPix)	\
+    ((TsolResPtr) dixLookupPrivate(&(pPix)->devPrivates, tsolPrivKey))
+
+#define TsolPropertyPriv(pProp)	\
+    ((TsolPropPtr *) dixLookupPrivate(&(pProp)->devPrivates, tsolPrivKey))
+
+#define TsolSelectionPriv(pSel) \
+    ((TsolSelnPtr *) dixLookupPrivate(&(pSel)->devPrivates, tsolPrivKey))
+
 #if 0
-/* 
+/*
  * NodeRec struct defined here is used instead of the
  * one defined in atom.c. This is used in policy functions
  */
@@ -295,14 +323,14 @@
  *  Disable flags for extensions
  */
 typedef struct _extensionFlag {
-    Bool disableACCESSX;          
+    Bool disableACCESSX;
     Bool disableDPS;
     Bool disableDBE;
     Bool disableDPMS;
     Bool disableEVI;
     Bool disableFBPM;
     Bool disableLBX;
-    Bool disableSCREENSAVER;  
+    Bool disableSCREENSAVER;
     Bool disableMITSHM;
     Bool disableMITMISC;
     Bool disableMULTIBUFFER;
@@ -317,7 +345,7 @@
     Bool disableCUP;
     Bool disableAPPGROUP;
     Bool disableXCMISC;
-    Bool disableXIE;               
+    Bool disableXIE;
     Bool disableXINPUT;
     Bool disableXINERAMA;
     Bool disableXTEST;
@@ -351,8 +379,6 @@
 extern  int PolyProperty(Atom atom, WindowPtr pWin);
 extern  int PolySelection(Atom atom);
 extern  TsolPolyInstInfoRec tsolpolyinstinfo;
-extern  int tsolWindowPrivateIndex;
-extern  int tsolPixmapPrivateIndex;
 extern  uid_t OwnerUID;                 /* Workstation owner uid */
 extern Bool system_audit_on;
 
@@ -369,14 +395,14 @@
 extern WindowPtr XYToWin(int x, int y); /* Defined in events.c */
 extern Window RootOf(WindowPtr pWin);
 extern Window RootOfClient(WindowPtr pWin);
-extern int TsolDisabledExtension(char *extname, int extlen);
+extern int TsolDisabledExtension(const char *extname);
 extern int MatchTsolConfig(char *name, int len);
 extern int HasWinSelection(TsolInfoPtr tsolinfo);
 extern int same_client (ClientPtr client, XID xid);
 extern int client_private (ClientPtr client, XID xid);
-extern TsolPropPtr AllocTsolProp();
-extern TsolPropPtr AllocServerTsolProp();
-extern bslabel_t *lookupSL_low();
+extern TsolPropPtr AllocTsolProp(void);
+extern TsolPropPtr AllocServerTsolProp(void);
+extern bslabel_t *lookupSL_low(void);
 extern bslabel_t *lookupSL(bslabel_t *slptr);
 extern BoxPtr WindowExtents(WindowPtr pWin, BoxPtr pBox);
 extern Bool ShapeOverlap(WindowPtr pWin, BoxPtr pWinBox,
--- a/open-src/xserver/xorg/sun-src/tsol/tsolpolicy.c	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/tsol/tsolpolicy.c	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-/* Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+/* Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -24,15 +24,15 @@
  * shall not be used in advertising or otherwise to promote the sale, use
  * or other dealings in this Software without prior written authorization
  * of the copyright holder.
- */ 
+ */
 
-#pragma ident   "@(#)tsolpolicy.c 1.22     08/07/21 SMI"
+#pragma ident   "@(#)tsolpolicy.c 1.23     09/01/14 SMI"
 
-#ifdef HAVE_DIX_CONFIG_H 
-#include <dix-config.h> 
-#endif 
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
 
-#include <X11/X.h> 
+#include <X11/X.h>
 #define		NEED_REPLIES
 #define		NEED_EVENTS
 #include <stdio.h>
@@ -42,6 +42,7 @@
 #include <bsm/audit_kevents.h>
 #include <bsm/audit_uevents.h>
 #include <X11/Xproto.h>
+#include "dix.h"
 #include "misc.h"
 #include "scrnintstr.h"
 #include "os.h"
@@ -60,9 +61,11 @@
 #include "servermd.h"
 #include <syslog.h>
 #include "extnsionst.h"
+#include "registry.h"
 #ifdef PANORAMIX
 #include "../Xext/panoramiXsrv.h"
 #endif
+#include "tsol.h"
 #include "tsolinfo.h"
 #include "tsolpolicy.h"
 
@@ -78,13 +81,7 @@
 static priv_set_t *pset_win_downgrade_sl = NULL;
 static priv_set_t *pset_win_selection = NULL;
 
-extern TsolInfoPtr GetClientTsolInfo();
-extern int tsolWindowPrivateIndex;
-extern int tsolPixmapPrivateIndex;
-extern WindowPtr TsolPointerWindow();
-extern char *NameForAtom(Atom atom);
 extern char *xsltos(bslabel_t *sl);
-extern char *ProtoNames[];
 extern InputInfo inputInfo;
 
 extern unsigned long tsoldebug;  /* from tsolutils.c */
@@ -97,38 +94,38 @@
 
 #define SAMECLIENT(client, xid) ((client)->index == CLIENT_ID(xid))
 
-int access_xid(xresource_t res, xmethod_t method, void *resource,
-		   void *subject, xpolicy_t policy_flags, void *misc, 
-		   RESTYPE res_type, priv_set_t *which_priv);
+static int access_xid(xresource_t res, xmethod_t method, void *resource,
+		      void *subject, xpolicy_t policy_flags, void *misc,
+		      RESTYPE res_type, priv_set_t *which_priv);
 
-int check_priv(xresource_t res, xmethod_t method, void *resource,
-	void *subject, xpolicy_t policy_flags, void *misc, priv_set_t *priv);
+static int check_priv(xresource_t res, xmethod_t method, void *resource,
+		      void *subject, xpolicy_t policy_flags, void *misc,
+		      priv_set_t *priv);
 
 #ifdef DEBUG
 
-int	xtsol_debug = XTSOL_FAIL;	/* set it to 0 if no logging is required */
-void XTsolErr(char *err_type, int protocol, bslabel_t *osl,
-              uid_t ouid, pid_t opid, char *opname,
-              bslabel_t *ssl, uid_t suid, pid_t spid,
-              char *spname, char *method, int isstring, void *xid);
+static int xtsol_debug = XTSOL_FAIL;	/* set it to 0 if no logging is required */
+static void XTsolErr(const char *err_type, uintptr_t protocol,
+	     bslabel_t *osl, uid_t ouid, pid_t opid, const char *opname,
+	     bslabel_t *ssl, uid_t suid, pid_t spid, const char *spname,
+	     const char *method, int isstring, void *xid);
 
-#define XTSOLERR(err_type, protocol, osl, ouid, opid, opname,\
-                 ssl, suid, spid, spname, method, xid)\
-                 (void) XTsolErr(err_type, protocol, osl, ouid, opid,\
-                                 opname, ssl, suid, spid, spname, method,\
-                                 0, (void *) xid)
-#define SXTSOLERR(err_type, protocol, osl, ouid, opid, opname,\
-                  ssl, suid, spid, spname, method, xid)\
-                  (void) XTsolErr(err_type, protocol, osl, ouid, opid,\
-                                  opname, ssl, suid, spid, spname,\
-                                  method, 1, (void *) xid)
+#define XTSOLERR_GEN(err_type, protocol, o, s, method, xid, isstring) \
+                 (void) XTsolErr(err_type, (uintptr_t) (protocol), \
+				 (o)->sl, (o)->uid, (o)->pid, NULL, \
+				 (s)->sl, (s)->uid, (s)->pid, NULL, \
+				 method, isstring, (void *) (xid))
 #else  /* !DEBUG */
-#define XTSOLERR(err_type, protocol, osl, ouid, opid, opname,\
-                 ssl, suid, spid, spname, method, xid)
-#define SXTSOLERR(err_type, protocol, osl, ouid, opid, opname,\
-                  ssl, suid, spid, spname, method, xid)
+#define XTSOLERR_GEN(err_type, protocol, o, s, method, xid, isstring)  /**/
 #endif /* DEBUG */
 
+#define XTSOLERR(err_type, protocol, o, s, method, xid) \
+	XTSOLERR_GEN(err_type, protocol, o, s, method, (uintptr_t) xid, 0);
+
+#define SXTSOLERR(err_type, protocol, o, s, method, xid) \
+	XTSOLERR_GEN(err_type, protocol, o, s, method, xid, 1);
+
+
 int object_float(TsolInfoPtr, WindowPtr);
 
 static void
@@ -138,7 +135,7 @@
         tsolinfo->flags &= ~TSOL_AUDITEVENT;
     if (!(tsolinfo->flags & TSOL_DOXAUDIT))
         tsolinfo->flags |= TSOL_DOXAUDIT;
-    
+
 }
 
 static void
@@ -148,7 +145,7 @@
         tsolinfo->flags &= ~TSOL_AUDITEVENT;
     if (tsolinfo->flags & TSOL_DOXAUDIT)
         tsolinfo->flags &= ~TSOL_DOXAUDIT;
-    
+
 }
 
 /*
@@ -158,11 +155,10 @@
  * Priv debugging will be done later TBD
  */
 
-int
+static int
 xpriv_policy(priv_set_t *set, priv_set_t *priv, xresource_t res,
 			 xmethod_t method, void *subject, Bool do_audit)
 {
-	int	i;
 	static int logopened = FALSE;
 	int	status = 0;
 	int audit_status = 0;
@@ -176,7 +172,7 @@
 	}
 	else
 	{
-		audit_status = 0;        
+		audit_status = 0;
 		if (!logopened)
 		{
 			/* LOG_USER doesn't work */
@@ -187,9 +183,10 @@
 		if (tsolinfo->priv_debug)
 		{
 #ifdef DEBUG
-			ErrorF("%s:Allowed priv %ld\n", tsolinfo->pname, priv);
+			ErrorF("pid %ld: Allowed priv %ld\n",
+			       (long) tsolinfo->pid, (long) priv);
 #endif /* DEBUG */
-			syslog(LOG_DEBUG|LOG_LOCAL0, 
+			syslog(LOG_DEBUG|LOG_LOCAL0,
                    "DEBUG: %s pid %ld lacking privilege %d to %d %d",
                    "xclient", tsolinfo->pid, priv, method, res);
 			status = 1;
@@ -221,8 +218,7 @@
 	ClientPtr ownerclient;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 	TsolInfoPtr tsolownerinfo;	/*client who owns the window */
-	TsolResPtr tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr tsolres = TsolWindowPriv(pWin);
 
 	ownerclient = clients[CLIENT_ID(pWin->drawable.id)];
 	tsolownerinfo = GetClientTsolInfo(ownerclient);
@@ -249,16 +245,14 @@
                 do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_mac_read,
 							 res, method, client, do_audit) ||
-				(tsolownerinfo && HasWinSelection(tsolownerinfo))) 
+				(tsolownerinfo && HasWinSelection(tsolownerinfo)))
 			{
 				ret_stat = PASSED;
 			}
 			else
 			{
-			    XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read window", pWin->drawable.id);
+				XTSOLERR("mac", misc, tsolres, tsolinfo,
+					 "read window", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -282,10 +276,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read window", pWin->drawable.id);
+				XTSOLERR("dac", misc, tsolres, tsolinfo,
+					 "read window", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -312,8 +304,7 @@
 	WindowPtr pWin = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr tsolres = TsolWindowPriv(pWin);
 
 	/* optimization based on client id */
 	if (SAMECLIENT(client, pWin->drawable.id))
@@ -324,13 +315,11 @@
 	 * Trusted Path Windows require Trusted Path attrib
 	 */
 	if (XTSOLTrusted(pWin) && !HasTrustedPath(tsolinfo))
-    {
-        XTSOLERR("tp", (int) misc, tsolres->sl,
-                 tsolres->uid, tsolres->pid, tsolres->pname,
-                 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-                 tsolinfo->pname, "modify window", pWin->drawable.id);
-        ret_stat = err_code;
-	}    
+	{
+		XTSOLERR("tp",  misc, tsolres, tsolinfo,
+			 "modify window", pWin->drawable.id);
+		ret_stat = err_code;
+	}
 	/*
 	 * MAC Check
 	 */
@@ -347,10 +336,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify window", pWin->drawable.id);
+				XTSOLERR("mac",  misc, tsolres, tsolinfo,
+					 "modify window", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -371,10 +358,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify window", pWin->drawable.id);
+				XTSOLERR("dac",  misc, tsolres, tsolinfo,
+					 "modify window", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -402,8 +387,7 @@
 	WindowPtr pWin = resource;	/* parent window */
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr  tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr  tsolres = TsolWindowPriv(pWin);
 
 	/*
 	 * Anyone can create a child of root window
@@ -419,11 +403,8 @@
 	{
 		if (!HasTrustedPath(tsolinfo))
 		{
-			/*
-			XTSOLERR("tp", (int) misc, tsolres->sl,
-					 tsolres->uid, tsolres->pid, tsolres->pname,
-					 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-					 tsolinfo->pname, "create window", pWin->drawable.id); */
+		/*	XTSOLERR("tp",  misc, tsolres, tsolinfo,
+				"create window", pWin->drawable.id); */
 			return (err_code);
 		}
 	}
@@ -446,10 +427,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "create window", pWin->drawable.id); 
+				XTSOLERR("mac",  misc, tsolres, tsolinfo,
+					 "create window", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -473,10 +452,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "create window", pWin->drawable.id); 
+				XTSOLERR("dac",  misc, tsolres, tsolinfo,
+					 "create window", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -505,8 +482,7 @@
 	WindowPtr pWin = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr  tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr  tsolres = TsolWindowPriv(pWin);
 
 	/*
 	 * Trusted Path Windows required Trusted Path attrib
@@ -515,10 +491,8 @@
 	{
 		if (!HasTrustedPath(tsolinfo))
 		{
-			XTSOLERR("tp", (int) misc, tsolres->sl,
-					 tsolres->uid, tsolres->pid, tsolres->pname,
-					 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-					 tsolinfo->pname, "destroy window", pWin->drawable.id);
+			XTSOLERR("tp",  misc, tsolres, tsolinfo,
+				 "destroy window", pWin->drawable.id);
 			return (err_code);
 		}
 	}
@@ -538,10 +512,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "destroy window", pWin->drawable.id);
+				XTSOLERR("mac",  misc, tsolres, tsolinfo,
+					 "destroy window", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -563,10 +535,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "destroy window", pWin->drawable.id);
+				XTSOLERR("dac",  misc, tsolres, tsolinfo,
+					 "destroy window", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -608,7 +578,7 @@
 		pWin = (WindowPtr)LookupWindow(pDraw->id, client);
 		if (pWin == NULL)
 			return (PASSED); /* server will handle bad params */
-		tsolres = (TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+		tsolres = TsolWindowPriv(pWin);
 		obj_code = AW_XWINDOW;
 		obj_id = pWin->drawable.id;
 	}
@@ -617,7 +587,7 @@
 		pMap = (PixmapPtr)LookupIDByType(pDraw->id, RT_PIXMAP);
 		if (pMap == NULL)
 			return (PASSED); /* server will handle bad params */
-		tsolres = (TsolResPtr)(pMap->devPrivates[tsolPixmapPrivateIndex].ptr);
+		tsolres = TsolPixmapPriv(pMap);
 		obj_code = AW_XPIXMAP;
 		obj_id = pMap->drawable.id;
 	}
@@ -631,7 +601,7 @@
 	     * Client must have Trusted Path to access root window
 	     * in multilevel desktop.
 	     */
-	    if (tsolMultiLevel && DrawableIsRoot(pDraw) && 
+	    if (tsolMultiLevel && DrawableIsRoot(pDraw) &&
 			!HasTrustedPath(tsolinfo))
 		return (err_code);
 		/*
@@ -641,12 +611,12 @@
 		{
 			if (!bldominates(tsolinfo->sl, tsolres->sl))
 			{
-                if (!(tsolinfo->flags & MAC_READ_AUDITED) &&
-                    (tsolinfo->flags & TSOL_AUDITEVENT))
-                {
-                    do_audit = TRUE;
-                    tsolinfo->flags |= MAC_READ_AUDITED;
-                }
+				if (!(tsolinfo->flags & MAC_READ_AUDITED) &&
+				    (tsolinfo->flags & TSOL_AUDITEVENT))
+				{
+					do_audit = TRUE;
+					tsolinfo->flags |= MAC_READ_AUDITED;
+				}
 				/* PRIV override? */
 				if (xpriv_policy(tsolinfo->privs, pset_win_mac_read,
 								 res, method, client, do_audit))
@@ -655,10 +625,9 @@
 				}
 				else
 				{
-					XTSOLERR("mac", (int) misc, tsolres->sl,
-							 tsolres->uid, tsolres->pid, tsolres->pname,
-							 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-							 tsolinfo->pname, "read pixel", pDraw->id);
+					XTSOLERR("mac",  misc,
+						 tsolres, tsolinfo,
+						 "read pixel", pDraw->id);
 					ret_stat = err_code;
 				}
 			}
@@ -670,23 +639,22 @@
 		{
 			if (tsolinfo->uid != tsolres->uid)
 			{
-                if (!(tsolinfo->flags & DAC_READ_AUDITED) &&
-                    (tsolinfo->flags & TSOL_AUDITEVENT))
-                {
-                    do_audit = TRUE;
-                    tsolinfo->flags |= DAC_READ_AUDITED;
-                }
+				if (!(tsolinfo->flags & DAC_READ_AUDITED) &&
+				    (tsolinfo->flags & TSOL_AUDITEVENT))
+				{
+					do_audit = TRUE;
+					tsolinfo->flags |= DAC_READ_AUDITED;
+				}
 				if (xpriv_policy(tsolinfo->privs, pset_win_dac_read,
-								 res, method, client, do_audit))
+						 res, method, client, do_audit))
 				{
 					ret_stat = PASSED;
 				}
 				else
 				{
-					XTSOLERR("mac", (int) misc, tsolres->sl,
-							 tsolres->uid, tsolres->pid, tsolres->pname,
-							 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-							 tsolinfo->pname, "read pixel", pDraw->id);
+					XTSOLERR("mac",  misc,
+						 tsolres, tsolinfo,
+						 "read pixel", pDraw->id);
 					ret_stat = err_code;
 				}
 			}
@@ -722,10 +690,10 @@
 	WindowPtr pWin = NullWindow;
 	TsolInfoPtr tsolinfo;
 	TsolResPtr tsolres;
-#if defined(PANORAMIX) && defined(IN_MODULE)
+#if defined(PANORAMIX)
 	PanoramiXRes *panres = NULL;
 #endif
-	
+
 	/*
 	 * Trusted Path Windows required Trusted Path attrib
 	 */
@@ -733,37 +701,37 @@
 
 	if (pDraw->type == DRAWABLE_WINDOW)
 	{
-#if defined(PANORAMIX) && defined(IN_MODULE)
+#if defined(PANORAMIX)
 		if (!noPanoramiXExtension)
 		{
 		    panres = (PanoramiXRes *)LookupIDByType(pDraw->id, XRT_WINDOW);
 		    if (panres)
 			pWin = (WindowPtr)LookupWindow(panres->info[0].id, client);
-		} else 
-#endif 
+		} else
+#endif
 		    pWin = (WindowPtr)LookupWindow(pDraw->id, client);
 
 		if (pWin == NULL)
 			return (PASSED);
-		tsolres = (TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+		tsolres = TsolWindowPriv(pWin);
 		obj_code = AW_XWINDOW;
 		obj_id = pWin->drawable.id;
 	}
 	else if (pDraw->type == DRAWABLE_PIXMAP)
 	{
-#if defined(PANORAMIX) && defined(IN_MODULE)
+#if defined(PANORAMIX)
 	    if (!noPanoramiXExtension)
 	    {
 		panres = (PanoramiXRes *)LookupIDByType(pDraw->id, XRT_PIXMAP);
 		if (panres)
 			pMap = (PixmapPtr)LookupIDByType(panres->info[0].id, RT_PIXMAP);
-	    } else 
+	    } else
 #endif
 		pMap = (PixmapPtr)LookupIDByType(pDraw->id, RT_PIXMAP);
 
 		if (pMap == NULL)
 			return (PASSED);
-		tsolres = (TsolResPtr) (pMap->devPrivates[tsolPixmapPrivateIndex].ptr);
+		tsolres = TsolPixmapPriv(pMap);
 		obj_code = AW_XPIXMAP;
 		obj_id = pMap->drawable.id;
 	}
@@ -777,96 +745,93 @@
 	     * Trusted Path Windows require Trusted Path attrib
 	     */
 	    if ((pDraw->type == DRAWABLE_WINDOW) &&
-            XTSOLTrusted(pWin) &&
-            !HasTrustedPath(tsolinfo))
-		{
-		    XTSOLERR("tp", (int) misc, tsolres->sl,
-					 tsolres->uid, tsolres->pid, tsolres->pname,
-					 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-					 tsolinfo->pname, "modify pixel", pWin->drawable.id);
-			return (err_code);
+		XTSOLTrusted(pWin) &&
+		!HasTrustedPath(tsolinfo))
+	    {
+		    XTSOLERR("tp",  misc, tsolres, tsolinfo,
+			     "modify pixel", pWin->drawable.id);
+		    return (err_code);
+	    }
+	    /*
+	     * You need  win_config priv to write to root window
+	     */
+	    if (!priv_win_config && (pWin && WindowIsRoot(pWin)))
+	    {
+		    if (!(tsolinfo->flags & CONFIG_AUDITED) &&
+			(tsolinfo->flags & TSOL_AUDITEVENT))
+		    {
+			    do_audit = TRUE;
+			    tsolinfo->flags |= CONFIG_AUDITED;
+		    }
+		    if (xpriv_policy(tsolinfo->privs, pset_win_config,
+				     res, method, client, do_audit))
+		    {
+			    ret_stat = PASSED;
+		    }
+		    else
+		    {
+			    XTSOLERR("mac",  misc, tsolres, tsolinfo,
+				     "modify pixel", pDraw->id);
+			    ret_stat = err_code;
+		    }
 	    }
-		/*
-	 	 * You need  win_config priv to write to root window
-	 	 */
-		if (!priv_win_config && (pWin && WindowIsRoot(pWin)))
-		{
-            if (!(tsolinfo->flags & CONFIG_AUDITED) &&
-                (tsolinfo->flags & TSOL_AUDITEVENT))
-            {
-                do_audit = TRUE;
-                tsolinfo->flags |= CONFIG_AUDITED;
-            }
-			if (xpriv_policy(tsolinfo->privs, pset_win_config,
-							 res, method, client, do_audit))
-			{
-				ret_stat = PASSED;
-			}
-			else
-			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify pixel", pDraw->id);
-				ret_stat = err_code;
-			}
-		}
-		/*
-		 * MAC Check
-		 */
-		if ((ret_stat == PASSED) && policy_flags & TSOL_MAC)
-		{
-			if (!blequal(tsolinfo->sl, tsolres->sl))
-			{
-                if (!(tsolinfo->flags & MAC_WRITE_AUDITED) &&
-                    (tsolinfo->flags & TSOL_AUDITEVENT))
-                {
-                    do_audit = TRUE;
-                    tsolinfo->flags |= MAC_WRITE_AUDITED;
-                }
-				if (xpriv_policy(tsolinfo->privs, pset_win_mac_write,
-								 res, method, client, do_audit))
-				{
-					ret_stat = PASSED;
-				}
-				else
-				{
-					XTSOLERR("mac", (int) misc, tsolres->sl,
-							 tsolres->uid, tsolres->pid, tsolres->pname,
-							 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-							 tsolinfo->pname, "modify pixel", pDraw->id);
-					ret_stat = err_code;
-				}
-			}
-		}
-		/*
-	 	 * DAC Check
-	 	 */
-		if ((ret_stat == PASSED) && policy_flags & TSOL_DAC)
-		{
-			if (tsolinfo->uid != tsolres->uid)
-			{
-                if (!(tsolinfo->flags & DAC_WRITE_AUDITED) &&
-                    (tsolinfo->flags & TSOL_AUDITEVENT))
-                {
-                    do_audit = TRUE;
-                    tsolinfo->flags |= DAC_WRITE_AUDITED;
-                }
-				if (xpriv_policy(tsolinfo->privs, pset_win_dac_write,
-								 res, method, client, do_audit))
-				{
-					ret_stat = PASSED;
-				}
-				else
-				{
-					XTSOLERR("dac", (int) misc, tsolres->sl,
-							 tsolres->uid, tsolres->pid, tsolres->pname,
-							 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-							 tsolinfo->pname, "modify pixel", pDraw->id);
-					ret_stat = err_code;
-				}
-			}
-		}
+	    /*
+	     * MAC Check
+	     */
+	    if ((ret_stat == PASSED) && policy_flags & TSOL_MAC)
+	    {
+		    if (!blequal(tsolinfo->sl, tsolres->sl))
+		    {
+			    if (!(tsolinfo->flags & MAC_WRITE_AUDITED) &&
+				(tsolinfo->flags & TSOL_AUDITEVENT))
+			    {
+				    do_audit = TRUE;
+				    tsolinfo->flags |= MAC_WRITE_AUDITED;
+			    }
+			    if (xpriv_policy(tsolinfo->privs,
+					     pset_win_mac_write,
+					     res, method, client, do_audit))
+			    {
+				    ret_stat = PASSED;
+			    }
+			    else
+			    {
+				    XTSOLERR("mac",  misc,
+					     tsolres, tsolinfo,
+					     "modify pixel", pDraw->id);
+				    ret_stat = err_code;
+			    }
+		    }
+	    }
+	    /*
+	     * DAC Check
+	     */
+	    if ((ret_stat == PASSED) && policy_flags & TSOL_DAC)
+	    {
+		    if (tsolinfo->uid != tsolres->uid)
+		    {
+			    if (!(tsolinfo->flags & DAC_WRITE_AUDITED) &&
+				(tsolinfo->flags & TSOL_AUDITEVENT))
+			    {
+				    do_audit = TRUE;
+				    tsolinfo->flags |= DAC_WRITE_AUDITED;
+			    }
+
+			    if (xpriv_policy(tsolinfo->privs,
+					     pset_win_dac_write,
+					     res, method, client, do_audit))
+			    {
+				     ret_stat = PASSED;
+			    }
+			    else
+			    {
+				    XTSOLERR("dac",  misc,
+					     tsolres, tsolinfo,
+					     "modify pixel", pDraw->id);
+				    ret_stat = err_code;
+			    }
+		    }
+	    }
 	}  /* end if SAMECLIENT */
 
 	if (do_audit)
@@ -890,8 +855,7 @@
 	PixmapPtr pMap = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr  tsolres =
-		(TsolResPtr)(pMap->devPrivates[tsolPixmapPrivateIndex].ptr);
+	TsolResPtr  tsolres = TsolPixmapPriv(pMap);
 
 	/*
 	 * MAC Check
@@ -909,10 +873,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read pixmap", pMap->drawable.id);
+				XTSOLERR("mac",  misc, tsolres, tsolinfo,
+					 "read pixmap", pMap->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -933,10 +895,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read pixmap", pMap->drawable.id);
+				XTSOLERR("dac",  misc, tsolres, tsolinfo,
+					 "read pixmap", pMap->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -963,8 +923,7 @@
 	PixmapPtr pMap = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr  tsolres =
-		(TsolResPtr)(pMap->devPrivates[tsolPixmapPrivateIndex].ptr);
+	TsolResPtr  tsolres = TsolPixmapPriv(pMap);
 
 	/*
 	 * MAC Check
@@ -982,10 +941,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify pixmap", pMap->drawable.id);
+				XTSOLERR("mac",  misc, tsolres, tsolinfo,
+					 "modify pixmap", pMap->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -1006,10 +963,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify pixmap", pMap->drawable.id);
+				XTSOLERR("dac",  misc, tsolres, tsolinfo,
+					 "modify pixmap", pMap->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -1036,8 +991,7 @@
 	PixmapPtr pMap = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr  tsolres =
-		(TsolResPtr)(pMap->devPrivates[tsolPixmapPrivateIndex].ptr);
+	TsolResPtr  tsolres = TsolPixmapPriv(pMap);
 
 	/*
 	 * MAC Check
@@ -1055,10 +1009,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "destroy pixmap", pMap->drawable.id);
+				XTSOLERR("mac",  misc, tsolres, tsolinfo,
+					 "destroy pixmap", pMap->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -1079,10 +1031,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "destroy pixmap", pMap->drawable.id);
+				XTSOLERR("dac",  misc, tsolres, tsolinfo,
+					 "destroy pixmap", pMap->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -1121,7 +1071,7 @@
 	if (res_client == serverClient || res_tsolinfo == NULL)
 	{
 		if (client == serverClient || HasTrustedPath(tsolinfo))
-			return (PASSED); 
+			return (PASSED);
 		else
 			return (BadValue);
 	}
@@ -1133,8 +1083,8 @@
 	{
 		if (!blequal(tsolinfo->sl, res_tsolinfo->sl))
 		{
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+				do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_mac_read,
 							 res, method, client, do_audit))
 			{
@@ -1142,11 +1092,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, res_tsolinfo->sl,
-						 res_tsolinfo->uid, res_tsolinfo->pid,
-						 res_tsolinfo->pname, tsolinfo->sl,
-						 tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read client", resource);
+				XTSOLERR("mac",  misc, res_tsolinfo,
+					 tsolinfo, "read client", resource);
 				ret_stat = err_code;
 			}
 		}
@@ -1167,11 +1114,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, res_tsolinfo->sl,
-						 res_tsolinfo->uid, res_tsolinfo->pid,
-						 res_tsolinfo->pname, tsolinfo->sl,
-						 tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read client", resource);
+				XTSOLERR("dac",  misc, res_tsolinfo,
+					 tsolinfo, "read client", resource);
 				ret_stat = ret_stat;
 			}
 		}
@@ -1183,11 +1127,8 @@
 	{
 		if (!HasTrustedPath(tsolinfo))
 		{
-			XTSOLERR("tp", (int) misc, res_tsolinfo->sl,
-					 res_tsolinfo->uid, res_tsolinfo->pid,
-					 res_tsolinfo->pname, tsolinfo->sl,
-					 tsolinfo->uid, tsolinfo->pid,
-					 tsolinfo->pname, "read client", resource);
+			XTSOLERR("tp", misc, res_tsolinfo,
+				 tsolinfo, "read client", resource);
 			ret_stat = err_code;
 		}
 	}
@@ -1230,11 +1171,11 @@
 	{
 		ret_stat = err_code;
 	}
-    if (do_audit)
-    {
-        set_audit_flags(tsolinfo);
-        auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
-    }
+	if (do_audit)
+	{
+		set_audit_flags(tsolinfo);
+		auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
+	}
 	return (ret_stat);
 }	/* modify_client */
 
@@ -1286,11 +1227,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, res_tsolinfo->sl,
-						 res_tsolinfo->uid, res_tsolinfo->pid,
-						 res_tsolinfo->pname, tsolinfo->sl,
-						 tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "destroy client", resource);
+				XTSOLERR("mac", misc, res_tsolinfo,
+					 tsolinfo, "destroy client", resource);
 				ret_stat = ret_stat;
 			}
 		}
@@ -1311,11 +1249,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, res_tsolinfo->sl,
-						 res_tsolinfo->uid, res_tsolinfo->pid,
-						 res_tsolinfo->pname, tsolinfo->sl,
-						 tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "destroy client", resource);
+				XTSOLERR("dac", misc, res_tsolinfo,
+					 tsolinfo, "destroy client", resource);
 				ret_stat = err_code;
 			}
 		}
@@ -1327,11 +1262,8 @@
 	{
 		if (!HasTrustedPath(tsolinfo))
 		{
-			XTSOLERR("tp", (int) misc, res_tsolinfo->sl,
-					 res_tsolinfo->uid, res_tsolinfo->pid,
-					 res_tsolinfo->pname, tsolinfo->sl,
-					 tsolinfo->uid, tsolinfo->pid,
-					 tsolinfo->pname, "destroy client", resource);
+			XTSOLERR("tp", misc, res_tsolinfo,
+				 tsolinfo, "destroy client", resource);
 			ret_stat = err_code;
 		}
 	}
@@ -1361,10 +1293,8 @@
 modify_gc(xresource_t res, xmethod_t method, void *resource,
 		  void *subject, xpolicy_t policy_flags, void *misc)
 {
-    unsigned int protocol = (unsigned int)misc;
-
     return (access_xid(res, method, resource, subject, policy_flags,
-                       misc, RT_GC, pset_win_dac_write));    
+                       misc, RT_GC, pset_win_dac_write));
 }
 
 /*
@@ -1401,9 +1331,9 @@
 }
 
 /*
- * access_ccell: access policy for color cells. 
+ * access_ccell: access policy for color cells.
  */
-int
+static int
 access_ccell(xresource_t res, xmethod_t method, void *resource, void *subject,
              xpolicy_t policy_flags, void *misc)
 {
@@ -1439,11 +1369,9 @@
             }
             else
             {
-                XTSOLERR("clientid mac", (int)NULL, tsolinfo->sl,
-                         tsolinfo->uid, tsolinfo->pid, tsolinfo->pname,
-                         tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-                         tsolinfo->pname, "access ccell", cmap_id);
-                ret_stat = BadAccess;
+		XTSOLERR("clientid mac", (int)NULL, tsolinfo, tsolinfo,
+			 "access ccell", cmap_id);
+		ret_stat = BadAccess;
             }
         }
     }
@@ -1470,11 +1398,9 @@
             }
             else
             {
-                XTSOLERR("clientid dac", (int)NULL, tsolinfo->sl,
-                         tsolinfo->uid, tsolinfo->pid, tsolinfo->pname,
-                         tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-                         tsolinfo->pname, "access ccell", cmap_id);
-                ret_stat = BadAccess;                
+		XTSOLERR("clientid dac", (int)NULL, tsolinfo,
+                         tsolinfo, "access ccell", cmap_id);
+                ret_stat = BadAccess;
             }
         }
     }
@@ -1527,7 +1453,7 @@
 {
 #ifdef TBD
     EntrySecAttrPtr  pentp = (EntrySecAttrPtr)resource;
-    
+
     if (priv_win_colormap)
         return (PASSED);
     else if ( pentp->sl == NULL) /* The cell is allocated by server */
@@ -1535,7 +1461,7 @@
     else
         return (access_ccell(res, method, resource, subject,
                              policy_flags, misc));
-#endif 
+#endif
    return (PASSED);
 }
 
@@ -1552,8 +1478,9 @@
 	if (pcmp->flags & IsDefault)
 		return (PASSED);
 
-	return (access_xid(res, method, (void *)(pcmp->mid), subject, policy_flags,
-					   misc, RT_COLORMAP, pset_win_dac_read));
+	return (access_xid(res, method, (void *)(pcmp->mid),
+			   subject, policy_flags, misc,
+			   RT_COLORMAP, pset_win_dac_read));
 }
 
 /*
@@ -1569,8 +1496,9 @@
 	if (pcmp->flags & IsDefault)
 		return (PASSED);
 
-	return (access_xid(res, method,(void *)(pcmp->mid) , subject, policy_flags,
-			misc, RT_COLORMAP, pset_win_dac_write));
+	return (access_xid(res, method, (void *)(pcmp->mid),
+			   subject, policy_flags, misc,
+			   RT_COLORMAP, pset_win_dac_write));
 }
 
 /*
@@ -1607,10 +1535,8 @@
 	}
 	else
 	{
-		XTSOLERR("install_cmap", (int) misc, tsolinfo->sl,
-				 tsolinfo->uid, tsolinfo->pid, tsolinfo->pname,
-				 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-				 tsolinfo->pname, "install_cmap", pcmp->mid);
+		XTSOLERR("install_cmap", misc, tsolinfo,
+			 tsolinfo, "install_cmap", pcmp->mid);
 		ret_stat = err_code;
 	}
     if (tsolinfo->flags & TSOL_AUDITEVENT)
@@ -1622,17 +1548,17 @@
 }
 
 /*
- * access_xid: access policy for XIDs 
+ * access_xid: access policy for XIDs
  */
-int
+static int
 access_xid(xresource_t res, xmethod_t method, void *resource,
-		   void *subject, xpolicy_t policy_flags, void *misc, 
+		   void *subject, xpolicy_t policy_flags, void *misc,
 		   RESTYPE res_type, priv_set_t *which_priv)
 {
 	int ret_stat = PASSED;
 	int object_code = 0;
 	int	err_code; /* depends on type of XID */
-    Bool do_audit = FALSE;
+	Bool do_audit = FALSE;
 	XID object = (XID) resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = (TsolInfoPtr)NULL;
@@ -1687,10 +1613,8 @@
 			}
 			else
 			{
-				XTSOLERR("clientid", (int) misc, tsolinfo->sl,
-						 tsolinfo->uid, tsolinfo->pid, tsolinfo->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "access xid", object);
+				XTSOLERR("clientid", misc, tsolinfo,
+					 tsolinfo, "access xid", object);
 				ret_stat = err_code;
 			}
             if (do_audit)
@@ -1709,21 +1633,21 @@
  */
 int
 modify_fontpath(xresource_t res, xmethod_t method, void *resource,
-				void *subject, xpolicy_t policy_flags, void *misc)
+		void *subject, xpolicy_t policy_flags, void *misc)
 {
 	int ret_stat = PASSED;
 	int	err_code = BadFont;
-    Bool do_audit = FALSE;
+	Bool do_audit = FALSE;
 	XID object = (XID)resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
-    if (priv_win_fontpath)
-        return (PASSED);
+	if (priv_win_fontpath)
+		return (PASSED);
 
-    if (tsolinfo->flags & TSOL_AUDITEVENT)
-        do_audit = TRUE;
-    
+	if (tsolinfo->flags & TSOL_AUDITEVENT)
+		do_audit = TRUE;
+
 	/*
 	 * No MAC & DAC. Check win_fontpath priv only
 	 */
@@ -1756,16 +1680,16 @@
 {
 	int ret_stat = PASSED;
 	int	err_code = BadValue;
-    Bool do_audit = FALSE;
+	Bool do_audit = FALSE;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
-    if (priv_win_devices)
-        return (PASSED);
+	if (priv_win_devices)
+		return (PASSED);
 
-    if (tsolinfo->flags & TSOL_AUDITEVENT)
-        do_audit = TRUE;
-    
+	if (tsolinfo->flags & TSOL_AUDITEVENT)
+		do_audit = TRUE;
+
 	/*
 	 * No MAC/DAC check. Needs win_devices priv
 	 */
@@ -1778,11 +1702,11 @@
 	{
 		ret_stat = err_code;
 	}
-    if (do_audit)
-    {
-        set_audit_flags(tsolinfo);
-        auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
-    }
+	if (do_audit)
+	{
+		set_audit_flags(tsolinfo);
+		auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
+	}
 	return (ret_stat);
 }
 
@@ -1796,16 +1720,16 @@
 {
 	int ret_stat = PASSED;
 	int	err_code = BadAccess;
-    Bool do_audit = FALSE;
+	Bool do_audit = FALSE;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
-    if (priv_win_devices)
-        return (PASSED);
+	if (priv_win_devices)
+		return (PASSED);
 
-    if (tsolinfo->flags & TSOL_AUDITEVENT)
-        do_audit = TRUE;
-    
+	if (tsolinfo->flags & TSOL_AUDITEVENT)
+		do_audit = TRUE;
+
 	/*
 	 * No MAC/DAC check. Needs win_devices priv
 	 */
@@ -1818,11 +1742,11 @@
 	{
 		ret_stat = err_code;
 	}
-    if (do_audit)
-    {
-        set_audit_flags(tsolinfo);
-        auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
-    }
+	if (do_audit)
+	{
+		set_audit_flags(tsolinfo);
+		auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
+	}
 	return (ret_stat);
 }
 
@@ -1835,21 +1759,21 @@
 {
 	int ret_stat = PASSED;
 	int	err_code = BadValue;
-    Bool do_audit = FALSE;
+	Bool do_audit = FALSE;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
 	if (priv_win_config)
 		return (PASSED);
 
-    if (tsolinfo->flags & TSOL_AUDITEVENT)
-        do_audit = TRUE;
-    
+	if (tsolinfo->flags & TSOL_AUDITEVENT)
+		do_audit = TRUE;
+
 	/*
 	 * Needs win_config priv
 	 */
-    if (tsolinfo->uid != OwnerUID)
-    {
+	if (tsolinfo->uid != OwnerUID)
+	{
 	    if (xpriv_policy(tsolinfo->privs, pset_win_config, res,
                          method, client, do_audit))
 	    {
@@ -1859,12 +1783,12 @@
 	    {
 		    ret_stat = err_code;
 	    }
-    }
-    if (do_audit)
-    {
-        set_audit_flags(tsolinfo);
-        auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
-    }
+	}
+	if (do_audit)
+	{
+		set_audit_flags(tsolinfo);
+		auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
+	}
 	return (ret_stat);
 }
 
@@ -1906,19 +1830,20 @@
 		if (status == FAILED)
 		{
 #ifdef DEBUG
-            if (xtsol_debug >= XTSOL_FAIL)
-		    {
-				ErrorF("\nmac failed:%s,subj(%s,%d,%d,%s),",
-					   ProtoNames[protocol], xsltos(tsolinfo->sl),
-					   tsolinfo->uid, tsolinfo->pid, tsolinfo->pname);
-				ErrorF("read atom, xid %s\n", NameForAtom(node->a));
-		    }
+			if (xtsol_debug >= XTSOL_FAIL)
+			{
+			    ErrorF("\nmac failed:%s,subj(%s,%d,%d),",
+				   LookupMajorName(protocol),
+				   xsltos(tsolinfo->sl),
+				   tsolinfo->uid, tsolinfo->pid);
+			    ErrorF("read atom, xid %s\n", NameForAtom(node->a));
+			}
 #endif /* DEBUG */
 			/* PRIV override? */
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+			    do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_mac_read,
-							 res, method, client, do_audit))
+					 res, method, client, do_audit))
 			{
 				status = PASSED;
 				ret_stat = PASSED;
@@ -1960,16 +1885,17 @@
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 	TsolPropPtr tsolprop;
+	TsolPropPtr *tsolpropP;
 
 	/* Initialize property created internally by server */
-	if (pProp->secPrivate == NULL)
+	tsolpropP = TsolPropertyPriv(pProp);
+	if (*tsolpropP == NULL)
 	{
-            pProp->secPrivate = (pointer)AllocServerTsolProp();
-	    if (pProp->secPrivate == NULL)
+	    *tsolpropP = (pointer)AllocServerTsolProp();
+	    if (*tsolpropP == NULL)
 		return(BadAlloc);
 	}
-
-	tsolprop = (TsolPropPtr)(pProp->secPrivate);
+	tsolprop = *tsolpropP;
 
 	/*
 	 * MAC Check
@@ -1987,11 +1913,9 @@
 			}
 			else
 			{
-				SXTSOLERR("mac", (int) misc, tsolprop->sl,
-						  tsolprop->uid, tsolprop->pid, tsolprop->pname,
-						  tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						  tsolinfo->pname, "read property",
-						  NameForAtom(pProp->propertyName));
+				SXTSOLERR("mac", misc, tsolprop,
+					  tsolinfo, "read property",
+					  NameForAtom(pProp->propertyName));
 				ret_stat = err_code;
 			}
 		}
@@ -2002,13 +1926,13 @@
 	if ((ret_stat == PASSED) && policy_flags & TSOL_DAC)
 	{
 	    extern bslabel_t        PublicObjSL;
-		/* 
+		/*
 		 * Anyone can read properties created internally by loadable modules.
 		 * roles can read property created by workstation owner at admin_low.
 		 */
 
 		if (!((tsolprop->serverOwned) ||
-			(tsolprop->uid == OwnerUID && blequal(tsolprop->sl, &PublicObjSL)) || 
+			(tsolprop->uid == OwnerUID && blequal(tsolprop->sl, &PublicObjSL)) ||
 			tsolprop->uid == tsolinfo->uid))
 		{
             if (tsolinfo->flags & TSOL_AUDITEVENT)
@@ -2049,16 +1973,17 @@
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 	TsolPropPtr tsolprop;
+	TsolPropPtr *tsolpropP;
 
 	/* Initialize property created internally by server */
-	if (pProp->secPrivate == NULL)
+	tsolpropP = TsolPropertyPriv(pProp);
+	if (*tsolpropP == NULL)
 	{
-            pProp->secPrivate = (pointer)AllocServerTsolProp();
-	    if (pProp->secPrivate == NULL)
+	    *tsolpropP = (pointer)AllocServerTsolProp();
+	    if (*tsolpropP == NULL)
 		return(BadAlloc);
 	}
-
-	tsolprop = (TsolPropPtr)(pProp->secPrivate);
+	tsolprop = *tsolpropP;
 
 	/*
 	 * MAC Check
@@ -2076,11 +2001,9 @@
 			}
 			else
 			{
-				SXTSOLERR("mac", (int) misc, tsolprop->sl,
-						  tsolprop->uid, tsolprop->pid, tsolprop->pname,
-						  tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						  tsolinfo->pname, "modify property",
-						  NameForAtom(pProp->propertyName));
+				SXTSOLERR("mac", misc, tsolprop,
+					  tsolinfo, "modify property",
+					  NameForAtom(pProp->propertyName));
 				ret_stat = err_code;
 			}
 		}
@@ -2090,7 +2013,7 @@
 	 */
 	if ((ret_stat == PASSED) && policy_flags & TSOL_DAC)
 	{
-		/* 
+		/*
 		 * workstation owner can write properties created internally by loadable modules.
 		 */
 
@@ -2134,16 +2057,17 @@
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 	TsolPropPtr tsolprop;
+	TsolPropPtr *tsolpropP;
 
 	/* Initialize property created internally by server */
-	if (pProp->secPrivate == NULL)
+	tsolpropP = TsolPropertyPriv(pProp);
+	if (*tsolpropP == NULL)
 	{
-            pProp->secPrivate = (pointer)AllocServerTsolProp();
-	    if (pProp->secPrivate == NULL)
+	    *tsolpropP = (pointer)AllocServerTsolProp();
+	    if (*tsolpropP == NULL)
 		return(BadAlloc);
 	}
-
-	tsolprop = (TsolPropPtr)(pProp->secPrivate);
+	tsolprop = *tsolpropP;
 
 	/*
 	 * MAC Check
@@ -2161,11 +2085,9 @@
 			}
 			else
 			{
-				SXTSOLERR("mac", (int) misc, tsolprop->sl,
-						  tsolprop->uid, tsolprop->pid, tsolprop->pname,
-						  tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						  tsolinfo->pname, "destroy property",
-						  NameForAtom(pProp->propertyName));
+				SXTSOLERR("mac", misc, tsolprop,
+					  tsolinfo, "destroy property",
+					  NameForAtom(pProp->propertyName));
 				ret_stat = err_code;
 			}
 		}
@@ -2186,11 +2108,9 @@
 			}
 			else
 			{
-				SXTSOLERR("dac", (int) misc, tsolprop->sl,
-						  tsolprop->uid, tsolprop->pid, tsolprop->pname,
-						  tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						  tsolinfo->pname, "destroy property",
-						  NameForAtom(pProp->propertyName));
+				SXTSOLERR("dac", misc, tsolprop,
+					  tsolinfo, "destroy property",
+					  NameForAtom(pProp->propertyName));
 				ret_stat = err_code;
 			}
 		}
@@ -2231,7 +2151,8 @@
 		if (WindowIsRoot(pWin))
 			return (PASSED);
 	}
-	tsolres = (TsolResPtr) (pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	tsolres = TsolWindowPriv(pWin);
+
 	/*
 	 * MAC Check
 	*/
@@ -2239,21 +2160,19 @@
 	{
 		if (!blequal(tsolinfo->sl, tsolres->sl))
 		{
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+				do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_mac_write,
-							 res, method, client, do_audit))
+					 res, method, client, do_audit))
 			{
 				ret_stat = PASSED;
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read grabwin", pWin->drawable.id);
-                do_audit = FALSE;  /* don't audit this */
-                unset_audit_flags(tsolinfo);
+				XTSOLERR("mac", misc, tsolres, tsolinfo,
+					 "read grabwin", pWin->drawable.id);
+				do_audit = FALSE;  /* don't audit this */
+				unset_audit_flags(tsolinfo);
 				ret_stat = err_code;
 			}
 		}
@@ -2265,21 +2184,19 @@
 	{
 		if (tsolinfo->uid != tsolres->uid /* && tsolres->uid != 0 */)
 		{
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+				do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_dac_write,
-							 res, method, client, do_audit))
+					 res, method, client, do_audit))
 			{
 				ret_stat = PASSED;
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read grabwin", pWin->drawable.id);
-                do_audit = FALSE;  /* don't audit this */
-                unset_audit_flags(tsolinfo);
+				XTSOLERR("dac", misc, tsolres, tsolinfo,
+					 "read grabwin", pWin->drawable.id);
+				do_audit = FALSE;  /* don't audit this */
+				unset_audit_flags(tsolinfo);
 				ret_stat = err_code;
 			}
 		}
@@ -2312,8 +2229,7 @@
 	WindowPtr pWin = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr tsolres = TsolWindowPriv(pWin);
 
         /*if (priv_win_devices)
         return (PASSED);*/
@@ -2333,8 +2249,8 @@
 	{
 		if (!blequal(tsolinfo->sl, tsolres->sl))
 		{
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+				do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_mac_write,
 							 res, method, client, do_audit))
 			{
@@ -2342,10 +2258,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read grabwin", pWin->drawable.id);
+				XTSOLERR("mac", misc, tsolres, tsolinfo,
+					 "read grabwin", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -2366,10 +2280,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read grabwin", pWin->drawable.id);
+				XTSOLERR("dac", misc, tsolres, tsolinfo,
+					 "read grabwin", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -2402,7 +2314,7 @@
 	}
     else
 	{
-		return (check_priv(res, method, resource, subject, policy_flags, 
+		return (check_priv(res, method, resource, subject, policy_flags,
 						   misc, pset_win_config));
 	}
 }
@@ -2420,37 +2332,37 @@
     }
     else
     {
-		return (check_priv(res, method, resource, subject, policy_flags, 
+		return (check_priv(res, method, resource, subject, policy_flags,
 						   misc, pset_win_config));
 	}
 }
 
 /*
- * check_priv: Use this for all policies that require 
+ * check_priv: Use this for all policies that require
  * no MAC/DAC, but a priv
  */
-int
+static int
 check_priv(xresource_t res, xmethod_t method, void *resource,
-		   void *subject, xpolicy_t policy_flags, void *misc, priv_set_t *priv)
+	   void *subject, xpolicy_t policy_flags, void *misc, priv_set_t *priv)
 {
 	int ret_stat = PASSED;
 	int	err_code = BadValue;
-    Bool do_audit = FALSE;
+	Bool do_audit = FALSE;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
 	/*
 	 * No MAC/DAC check.
 	 */
-    if (tsolinfo->flags & CONFIG_AUDITED)
-    {
-        do_audit = FALSE;
-    }
-    else if (tsolinfo->flags & TSOL_AUDITEVENT)
-    {
-        do_audit = TRUE;
-        tsolinfo->flags |= CONFIG_AUDITED;
-    }    
+	if (tsolinfo->flags & CONFIG_AUDITED)
+	{
+		do_audit = FALSE;
+	}
+	else if (tsolinfo->flags & TSOL_AUDITEVENT)
+	{
+		do_audit = TRUE;
+		tsolinfo->flags |= CONFIG_AUDITED;
+	}
 	if (xpriv_policy(tsolinfo->privs, priv, res, method, client, do_audit))
 	{
 		ret_stat = PASSED;
@@ -2459,11 +2371,11 @@
 	{
 		ret_stat = err_code;
 	}
-    if (do_audit)
-    {
-        set_audit_flags(tsolinfo);
-        auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
-    }
+	if (do_audit)
+	{
+		set_audit_flags(tsolinfo);
+		auditwrite(AW_XCLIENT, client->index, AW_APPEND, AW_END);
+	}
 	return (ret_stat);
 }
 
@@ -2475,7 +2387,7 @@
 {
 	char *slstring = NULL;
 
-	if (bsltos(sl, &slstring, 0, 
+	if (bsltos(sl, &slstring, 0,
 		VIEW_INTERNAL|SHORT_CLASSIFICATION | LONG_WORDS | ALL_ENTRIES) <= 0)
 		return (NULL);
 	else
@@ -2495,7 +2407,7 @@
 	Selection *selection = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolSelnPtr tsolseln = (TsolSelnPtr)(selection->secPrivate);
+	TsolSelnPtr tsolseln = *(TsolSelectionPriv(selection));
 
 	/*
 	 * MAC Check
@@ -2504,20 +2416,18 @@
 	{
 		if (!bldominates(tsolinfo->sl, tsolseln->sl))
 		{
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+				do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_mac_read,
-							 res, method, client, do_audit))
+					 res, method, client, do_audit))
 			{
 				ret_stat = PASSED;
 			}
 			else
 			{
-				SXTSOLERR("mac", (int) misc, tsolseln->sl,
-						  tsolseln->uid, tsolseln->pid, tsolseln->pname,
-						  tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						  tsolinfo->pname, "read selection",
-						  NameForAtom(selection->selection));
+				SXTSOLERR("mac", misc, tsolseln,
+					  tsolinfo, "read selection",
+					  NameForAtom(selection->selection));
 				ret_stat = err_code;
 			}
 		}
@@ -2530,8 +2440,8 @@
 		/* uid == DEF_UID means public window, shared read */
 		if (!(tsolseln->uid == DEF_UID || tsolinfo->uid == tsolseln->uid))
 		{
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+				do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_dac_read,
 							 res, method, client, do_audit))
 			{
@@ -2539,11 +2449,9 @@
 			}
 			else
 			{
-				SXTSOLERR("dac", (int) misc, tsolseln->sl,
-						  tsolseln->uid, tsolseln->pid, tsolseln->pname,
-						  tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						  tsolinfo->pname, "read selection",
-						  NameForAtom(selection->selection));
+				SXTSOLERR("dac", misc, tsolseln,
+					  tsolinfo, "read selection",
+					  NameForAtom(selection->selection));
 				ret_stat = err_code;
 			}
 		}
@@ -2568,12 +2476,11 @@
 {
 	int ret_stat = PASSED;
 	Bool do_audit = FALSE;
-	int	err_code = BadWindow; 
+	int	err_code = BadWindow;
 	WindowPtr pWin = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr tsolres = TsolWindowPriv(pWin);
 
 	/*
 	 * Anyone can modify properties on  RootWindow  subjected to
@@ -2588,10 +2495,8 @@
 	{
 		if (!HasTrustedPath(tsolinfo))
 		{
-			XTSOLERR("tp", (int) misc, tsolres->sl,
-					 tsolres->uid, tsolres->pid, tsolres->pname,
-					 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-					 tsolinfo->pname, "modify propwin", pWin->drawable.id);
+			XTSOLERR("tp", misc, tsolres, tsolinfo,
+				 "modify propwin", pWin->drawable.id);
 			return (err_code);
 		}
 	}
@@ -2603,8 +2508,8 @@
 	{
 		if (!blequal(tsolinfo->sl, tsolres->sl))
 		{
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+				do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_mac_write,
 							 res, method, client, do_audit))
 			{
@@ -2612,10 +2517,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify propwin", pWin->drawable.id);
+				XTSOLERR("mac", misc, tsolres, tsolinfo,
+					 "modify propwin", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -2627,8 +2530,8 @@
 	{
 		if (tsolinfo->uid != tsolres->uid)
 		{
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+				do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_dac_write,
 							 res, method, client, do_audit))
 			{
@@ -2636,10 +2539,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify propwin", pWin->drawable.id);
+				XTSOLERR("dac", misc, tsolres, tsolinfo,
+					 "modify propwin", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -2667,9 +2568,10 @@
 	WindowPtr pWin = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr tsolres = TsolWindowPriv(pWin);
+#if 0
 	GrabPtr grab;
+#endif
 
 	/*
 	 * MAC Check
@@ -2687,12 +2589,10 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify focuswin", pWin->drawable.id);
-                do_audit = FALSE;  /* don't audit this */
-                unset_audit_flags(tsolinfo);
+				XTSOLERR("mac", misc, tsolres, tsolinfo,
+					 "modify focuswin", pWin->drawable.id);
+				do_audit = FALSE;  /* don't audit this */
+				unset_audit_flags(tsolinfo);
 				ret_stat = err_code;
 			}
 		}
@@ -2704,21 +2604,19 @@
 	{
 		if (tsolinfo->uid != tsolres->uid)
 		{
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                do_audit = TRUE;
+			if (tsolinfo->flags & TSOL_AUDITEVENT)
+				do_audit = TRUE;
 			if (xpriv_policy(tsolinfo->privs, pset_win_dac_write,
-							 res, method, client, do_audit))
+					 res, method, client, do_audit))
 			{
 				ret_stat = PASSED;
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify focuswin", pWin->drawable.id);
-                do_audit = FALSE;  /* don't audit this */
-                unset_audit_flags(tsolinfo);
+				XTSOLERR("dac", misc, tsolres, tsolinfo,
+					 "modify focuswin", pWin->drawable.id);
+				do_audit = FALSE;  /* don't audit this */
+				unset_audit_flags(tsolinfo);
 				ret_stat = err_code;
 			}
 		}
@@ -2730,10 +2628,8 @@
 	{
 		if (!HasTrustedPath(tsolinfo))
 		{
-			XTSOLERR("tp", (int) misc, tsolres->sl,
-					 tsolres->uid, tsolres->pid, tsolres->pname,
-					 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-					 tsolinfo->pname, "modify focuswin", pWin->drawable.id);
+			XTSOLERR("tp", misc, tsolres, tsolinfo,
+				 "modify focuswin", pWin->drawable.id);
 			ret_stat = err_code;
 		}
 	}
@@ -2741,7 +2637,7 @@
 	/*
 	 * This causes problems when dragging cmdtool
 	 * TBD later
-	 * If ptr/kbd is grabbed, then this client must be 
+	 * If ptr/kbd is grabbed, then this client must be
 	 * the grabbing client
 	 */
 	grab = inputInfo.pointer->grab;
@@ -2758,15 +2654,13 @@
 			}
 			else
 			{
-				XTSOLERR("tp", (int) misc, 
-			    tsolres->sl, tsolres->uid, tsolres->pid, tsolres->pname, \
-			    tsolinfo->sl, tsolinfo->uid, tsolinfo->pid, tsolinfo->pname, \
-			    "modify focuswin", pWin->drawable.id);
+				XTSOLERR("tp", misc, tsolres, tsolinfo,
+					 "modify focuswin", pWin->drawable.id);
 				return (err_code);
 			}
 		}
 	}
-#endif	
+#endif
 	if (do_audit)
 	{
         set_audit_flags(tsolinfo);
@@ -2789,8 +2683,7 @@
 	WindowPtr pWin = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr tsolres = TsolWindowPriv(pWin);
 
 	/*
 	 * Anyone can read RootWindow attributes
@@ -2806,25 +2699,23 @@
 	{
 		if (!(bldominates(tsolinfo->sl, tsolres->sl)))
 		{
-            if (!(tsolinfo->flags & MAC_READ_AUDITED) &&
-                (tsolinfo->flags & TSOL_AUDITEVENT))
-            {
-                do_audit = TRUE;
-                tsolinfo->flags |= MAC_READ_AUDITED;
-            }
+			if (!(tsolinfo->flags & MAC_READ_AUDITED) &&
+			    (tsolinfo->flags & TSOL_AUDITEVENT))
+			{
+				do_audit = TRUE;
+				tsolinfo->flags |= MAC_READ_AUDITED;
+			}
 			if (xpriv_policy(tsolinfo->privs, pset_win_mac_read,
-							 res, method, client, do_audit))
+					 res, method, client, do_audit))
 			{
 				ret_stat = PASSED;
 			}
 			else
 			{
-			    XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read focuswin", pWin->drawable.id);
-                do_audit = FALSE;  /* don't audit this */
-                unset_audit_flags(tsolinfo);
+				XTSOLERR("mac", misc, tsolres, tsolinfo,
+					 "read focuswin", pWin->drawable.id);
+				do_audit = FALSE;  /* don't audit this */
+				unset_audit_flags(tsolinfo);
 				ret_stat = err_code;
 			}
 		}
@@ -2836,25 +2727,23 @@
 	{
 		if ((tsolinfo->uid != tsolres->uid) && (tsolres->uid != 0))
 		{
-            if (!(tsolinfo->flags & DAC_READ_AUDITED) &&
-                (tsolinfo->flags & TSOL_AUDITEVENT))
-            {
-                do_audit = TRUE;
-                tsolinfo->flags |= DAC_READ_AUDITED;
-            }
+			if (!(tsolinfo->flags & DAC_READ_AUDITED) &&
+			    (tsolinfo->flags & TSOL_AUDITEVENT))
+			{
+				do_audit = TRUE;
+				tsolinfo->flags |= DAC_READ_AUDITED;
+			}
 			if (xpriv_policy(tsolinfo->privs, pset_win_dac_read,
-							 res, method, client, do_audit))
+					 res, method, client, do_audit))
 			{
 				ret_stat = PASSED;
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "read focuswin", pWin->drawable.id);
-                do_audit = FALSE;  /* don't audit */
-                unset_audit_flags(tsolinfo);
+				XTSOLERR("dac", misc, tsolres, tsolinfo,
+					 "read focuswin", pWin->drawable.id);
+				do_audit = FALSE;  /* don't audit */
+				unset_audit_flags(tsolinfo);
 				ret_stat = err_code;
 			}
 		}
@@ -2870,13 +2759,13 @@
 
 #ifdef DEBUG
 /*
- * XTsolErr : used for debugging. 
- * WARNING: ErrorF can take upto 10 args & no more
+ * XTsolErr : used for debugging.
  */
-void
-XTsolErr(char *err_type, int protocol, bslabel_t *osl, uid_t ouid, pid_t opid,
-		 char *opname, bslabel_t *ssl, uid_t suid, pid_t spid, char *spname,
-		 char *method, int isstring, void *xid)
+static void
+XTsolErr(const char *err_type, uintptr_t protocol,
+	 bslabel_t *osl, uid_t ouid, pid_t opid, const char *opname,
+	 bslabel_t *ssl, uid_t suid, pid_t spid, const char *spname,
+	 const char *method, int isstring, void *xid)
 {
 	if (xtsol_debug < XTSOL_FAIL)
 		return;
@@ -2885,16 +2774,18 @@
 	/* range check of protocol */
 	if (protocol > X_NoOperation)
 		protocol = 0; /* unknown or extension */
-	ErrorF("\n%s failed:%s,obj(%s,%d,%d,%s), subj(%s,%d,%d,%s),", 
-		   err_type, ProtoNames[protocol], xsltos(osl), ouid,
-		   opid, opname, xsltos(ssl), suid, spid, spname);
+	ErrorF("\n%s failed:%s,obj(%s,%d,%d,%s), subj(%s,%d,%d,%s), %s, ",
+	       err_type, LookupMajorName(protocol),
+	       xsltos(osl), ouid, opid, opname ? opname : "",
+	       xsltos(ssl), suid, spid, spname ? spname : "",
+	       method);
 	if (isstring)
 	{
-		ErrorF("%s, xid=%s\n", method, (char *) xid); /* for atom/prop names */
+		ErrorF("xid=%s\n", (char *) xid); /* for atom/prop names */
 	}
 	else
 	{
-		ErrorF("%s, xid=%X\n", method, (long) xid); /* for window/pixmaps */
+		ErrorF("xid=%lX\n", (long) xid); /* for window/pixmaps */
 	}
 }
 #endif /* DEBUG */
@@ -2906,11 +2797,11 @@
 read_extn(xresource_t res, xmethod_t method, void *resource,
 		  void *subject, xpolicy_t policy_flags, void *misc)
 {
-	int	err_code = BadAccess;
+/*	int err_code = BadAccess;
 	char *extn_name = (char *)resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-
+*/
 	/*
 	 * No policy for this
 	 */
@@ -2935,8 +2826,7 @@
 	WindowPtr pWin = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr tsolres = TsolWindowPriv(pWin);
 
 	/*
 	 * MAC Check
@@ -2954,10 +2844,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify tpwin", pWin->drawable.id);
+				XTSOLERR("mac", misc, tsolres, tsolinfo,
+					 "modify tpwin", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -2978,10 +2866,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify tpwin", pWin->drawable.id);
+				XTSOLERR("dac", misc, tsolres, tsolinfo,
+					 "modify tpwin", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -2993,10 +2879,8 @@
 	{
 		if (!HasTrustedPath(tsolinfo))
 		{
-			XTSOLERR("tp", (int) misc, tsolres->sl,
-					 tsolres->uid, tsolres->pid, tsolres->pname,
-					 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-					 tsolinfo->pname, "modify tpwin", pWin->drawable.id);
+			XTSOLERR("tp", misc, tsolres, tsolinfo,
+				 "modify tpwin", pWin->drawable.id);
 			ret_stat = err_code;
 		}
 	}
@@ -3034,7 +2918,7 @@
 	{
         if (priv_win_config)
             return (ret_stat);
-        
+
         if (tsolinfo->flags & TSOL_AUDITEVENT)
             do_audit = TRUE;
 		if (xpriv_policy(tsolinfo->privs, pset_win_config,
@@ -3045,7 +2929,8 @@
 		else
 		{
 #ifdef DEBUG
-			ErrorF("modify_sl: failed for %s\n", tsolinfo->pname);
+			ErrorF("modify_sl: failed for %ld\n",
+			       (long) tsolinfo->pid);
 #endif /* DEBUG */
 			ret_stat = err_code;
 		}
@@ -3071,7 +2956,7 @@
 		else
 		{
 #ifdef DEBUG
-			ErrorF("modify_sl: failed for %s\n", tsolinfo->pname);
+			ErrorF("modify_sl: failed for %d\n", tsolinfo->pid);
 #endif /* DEBUG */
 			ret_stat = err_code;
 		}
@@ -3088,7 +2973,7 @@
 		else
 		{
 #ifdef DEBUG
-			ErrorF("modify_sl: failed for %s\n", tsolinfo->pname);
+			ErrorF("modify_sl: failed for %d\n", tsolinfo->pid);
 #endif /* DEBUG */
 			ret_stat = err_code;
 		}
@@ -3115,8 +3000,7 @@
 	WindowPtr pWin = resource;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-	TsolResPtr tsolres =
-		(TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+	TsolResPtr tsolres = TsolWindowPriv(pWin);
 	TsolInfoPtr tsolownerinfo;	/*client who owns the window */
 	ClientPtr	ownerclient;
 
@@ -3152,10 +3036,8 @@
 			}
 			else
 			{
-				XTSOLERR("mac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify eventwin", pWin->drawable.id);
+				XTSOLERR("mac", misc, tsolres, tsolinfo,
+					 "modify eventwin", pWin->drawable.id);
 				ret_stat = ret_stat;
 			}
 		}
@@ -3179,10 +3061,8 @@
 			}
 			else
 			{
-				XTSOLERR("dac", (int) misc, tsolres->sl,
-						 tsolres->uid, tsolres->pid, tsolres->pname,
-						 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-						 tsolinfo->pname, "modify eventwin", pWin->drawable.id);
+				XTSOLERR("dac", misc, tsolres, tsolinfo,
+					 "modify eventwin", pWin->drawable.id);
 				ret_stat = err_code;
 			}
 		}
@@ -3210,10 +3090,8 @@
 
 	if (!HasTrustedPath(tsolinfo))
 	{
-		XTSOLERR("tp", (int) misc, tsolinfo->sl,
-				 tsolinfo->uid, tsolinfo->pid, tsolinfo->pname,
-				 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-				 tsolinfo->pname, "modify stripe", 0);
+		XTSOLERR("tp", misc, tsolinfo, tsolinfo,
+			 "modify stripe", 0);
 		return (err_code);
 	}
 	return (PASSED);
@@ -3233,10 +3111,8 @@
 
 	if (!HasTrustedPath(tsolinfo))
 	{
-		XTSOLERR("tp", (int) misc, tsolinfo->sl,
-				 tsolinfo->uid, tsolinfo->pid, tsolinfo->pname,
-				 tsolinfo->sl, tsolinfo->uid, tsolinfo->pid,
-				 tsolinfo->pname, "modify tpwin", 0);
+		XTSOLERR("tp", misc, tsolinfo, tsolinfo,
+			 "modify tpwin", 0);
 		return (err_code);
 	}
 	return (PASSED);
@@ -3252,32 +3128,32 @@
 {
 	int ret_stat = PASSED;
 	int	err_code = BadAccess;
-    Bool do_audit = FALSE;
+	Bool do_audit = FALSE;
 	ClientPtr client = subject;
 	TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
-    if (tsolinfo->flags & TSOL_AUDITEVENT)
-        do_audit = TRUE;
+	if (tsolinfo->flags & TSOL_AUDITEVENT)
+		do_audit = TRUE;
 	if (xpriv_policy(tsolinfo->privs, pset_win_dac_write,
-                     res, method, client, do_audit))
+			 res, method, client, do_audit))
 	{
 		ret_stat = PASSED;
 	}
 	else
 	{
 #ifdef DEBUG
-		ErrorF("modify_uid: failed for %s\n", tsolinfo->pname);
+		ErrorF("modify_uid: failed for %d\n", tsolinfo->pid);
 #endif /* DEBUG */
 		ret_stat = err_code;
 	}
-    if (do_audit)
-        set_audit_flags(tsolinfo);
+	if (do_audit)
+		set_audit_flags(tsolinfo);
 	return (ret_stat);
 }
 
 /*
  * modify_polyinfo
- * Modify polyinstantiation info(sl, uid) 
+ * Modify polyinstantiation info(sl, uid)
  */
 int
 modify_polyinfo(xresource_t res, xmethod_t method, void *resource,
@@ -3306,14 +3182,14 @@
 	else
 		ret_stat = err_code;
 #ifdef DEBUG
-	ErrorF("modify_polyinfo: failed for %s\n", tsolinfo->pname);
+	ErrorF("modify_polyinfo: failed for %d\n", tsolinfo->pid);
 #endif /* DEBUG */
     if (do_audit)
         set_audit_flags(tsolinfo);
 	return (ret_stat);
 }
 
-/* 
+/*
  * access_dbe - check whether the buffer is client-private
  */
 int
@@ -3325,11 +3201,11 @@
 
     if (client_private(client, object))
        return (PASSED);
-    else 
+    else
        return BadAccess;
 }
 
-/* 
+/*
  * swap_dbe - check if the window is created by the client
  */
 int
@@ -3341,8 +3217,8 @@
 
 	if (SAMECLIENT(client, pWin->drawable.id))
             return PASSED;
-        else 
-            return BadAccess;   
+        else
+            return BadAccess;
 }
 
 /*
@@ -3367,124 +3243,131 @@
  * TSOL_RES_NAME            READ                MODIFY              CREATE\
  *                          DESTROY             SPECIAL
  */
-static int (*XTSOL_policy_table[TSOL_MAX_XRES_TYPES][TSOL_MAX_XMETHODS])() = {
-/* TSOL_RES_ACL */          no_policy,          modify_acl,         no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_ATOM */         read_atom,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_BELL */         no_policy,          modify_devices,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_BTNGRAB */      no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_CCELL */        read_ccell,         modify_ccell,       no_policy,\
-                            destroy_ccell,      no_policy,
-/* TSOL_RES_CLIENT */       read_client,        modify_client,      no_policy,\
-                            destroy_client,     no_policy,
-/* TSOL_RES_CMAP */         read_cmap,          modify_cmap,        no_policy,\
-                            modify_cmap,        install_cmap,
-/* TSOL_RES_CONFWIN */      no_policy,          modify_confwin,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_CURSOR */       no_policy,          modify_cursor,      no_policy,\
-                            modify_cursor,      no_policy,
-/* TSOL_RES_EVENTWIN */     no_policy,          modify_eventwin,    no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_EXTN */         read_extn,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_FOCUSWIN */     read_focuswin,      modify_focuswin,    no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_FONT */         read_font,          modify_font,        no_policy,\
-                            modify_font,        no_policy,
-/* TSOL_RES_FONTLIST */     no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_FONTPATH */     no_policy,          modify_fontpath,    no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_GC */           read_gc,            modify_gc,          no_policy,\
-                            modify_gc,          no_policy,
-/* TSOL_RES_GRABWIN */      no_policy,          modify_grabwin,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_HOSTLIST */     no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_IL */           no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_KBDCTL */       no_policy,          modify_devices,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_KBDGRAB */      no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_KEYGRAB */      no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_KEYMAP */       read_devices,       modify_devices,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_MODMAP */       no_policy,          modify_devices,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PIXEL */        read_pixel,         modify_pixel,       no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PIXMAP */       read_pixmap,        modify_pixmap,      no_policy,\
-                            destroy_pixmap,     no_policy,
-/* TSOL_RES_POLYINFO */     no_policy,          modify_polyinfo,    no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PROPERTY */     read_property,      modify_property,    no_policy,\
-                            destroy_property,   no_policy,
-/* TSOL_RES_PROPWIN */      read_window,        modify_propwin,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_IIL */          no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PROP_SL */      no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PROP_UID */     no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PTRCTL */       no_policy,          modify_devices,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PTRGRAB */      no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PTRLOC */       no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PTRMAP */       no_policy,          modify_devices,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_PTRMOTION */    no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_SCRSAVER */     no_policy,          modify_devices,     no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_SELECTION */    read_selection,     no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_SELNWIN */      no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_SENDEVENT */    no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_SL */           no_policy,          modify_sl,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_SRVGRAB */      no_policy,          no_policy,      create_srvgrab,\
-                            destroy_srvgrab,    no_policy,
-/* TSOL_RES_STRIPE */       no_policy,          modify_stripe,      no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_TPWIN */        no_policy,          modify_tpwin,       no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_UID */          no_policy,          modify_uid,         no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_VISUAL */       no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_WINATTR */      no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_WINDOW */       read_window,        modify_window,   create_window,\
-                            destroy_window,     no_policy,
-/* TSOL_RES_WINLOC */       no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_WINMAP */       no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_WINSIZE */      no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_WINSTACK */     no_policy,          no_policy,          no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_WOWNER */       no_policy,          modify_wowner,      no_policy,\
-                            no_policy,          no_policy,
-/* TSOL_RES_DBE */          no_policy,          no_policy,         access_dbe,
-                            access_dbe,         swap_dbe
+typedef int (*XTSOL_policy_func)
+	(xresource_t res, xmethod_t method, void *resource,
+	 void *subject, xpolicy_t policy_flags, void *misc);
+
+static const XTSOL_policy_func
+XTSOL_policy_table[TSOL_MAX_XRES_TYPES - TSOL_START_XRES][TSOL_MAX_XMETHODS] =
+{
+
+/* TSOL_RES_ACL */        { no_policy,          modify_acl,         no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_ATOM */       { read_atom,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_BELL */       { no_policy,          modify_devices,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_BTNGRAB */    { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_CCELL */      { read_ccell,         modify_ccell,       no_policy,\
+                            destroy_ccell,      no_policy },
+/* TSOL_RES_CLIENT */     { read_client,        modify_client,      no_policy,\
+                            destroy_client,     no_policy },
+/* TSOL_RES_CMAP */       { read_cmap,          modify_cmap,        no_policy,\
+                            modify_cmap,        install_cmap },
+/* TSOL_RES_CONFWIN */    { no_policy,          modify_confwin,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_CURSOR */     { no_policy,          modify_cursor,      no_policy,\
+                            modify_cursor,      no_policy },
+/* TSOL_RES_EVENTWIN */   { no_policy,          modify_eventwin,    no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_EXTN */       { read_extn,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_FOCUSWIN */   { read_focuswin,      modify_focuswin,    no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_FONT */       { read_font,          modify_font,        no_policy,\
+                            modify_font,        no_policy },
+/* TSOL_RES_FONTLIST */   { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_FONTPATH */   { no_policy,          modify_fontpath,    no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_GC */         { read_gc,            modify_gc,          no_policy,\
+                            modify_gc,          no_policy },
+/* TSOL_RES_GRABWIN */    { no_policy,          modify_grabwin,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_HOSTLIST */   { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_IL */         { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_KBDCTL */     { no_policy,          modify_devices,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_KBDGRAB */    { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_KEYGRAB */    { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_KEYMAP */     { read_devices,       modify_devices,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_MODMAP */     { no_policy,          modify_devices,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PIXEL */      { read_pixel,         modify_pixel,       no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PIXMAP */     { read_pixmap,        modify_pixmap,      no_policy,\
+                            destroy_pixmap,     no_policy },
+/* TSOL_RES_POLYINFO */   { no_policy,          modify_polyinfo,    no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PROPERTY */   { read_property,      modify_property,    no_policy,\
+                            destroy_property,   no_policy },
+/* TSOL_RES_PROPWIN */    { read_window,        modify_propwin,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_IIL */        { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PROP_SL */    { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PROP_UID */   { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PTRCTL */     { no_policy,          modify_devices,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PTRGRAB */    { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PTRLOC */     { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PTRMAP */     { no_policy,          modify_devices,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_PTRMOTION */  { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_SCRSAVER */   { no_policy,          modify_devices,     no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_SELECTION */  { read_selection,     no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_SELNWIN */    { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_SENDEVENT */  { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_SL */         { no_policy,          modify_sl,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_SRVGRAB */    { no_policy,          no_policy,      create_srvgrab,\
+                            destroy_srvgrab,    no_policy },
+/* TSOL_RES_STRIPE */     { no_policy,          modify_stripe,      no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_TPWIN */      { no_policy,          modify_tpwin,       no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_UID */        { no_policy,          modify_uid,         no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_VISUAL */     { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_WINATTR */    { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_WINDOW */     { read_window,        modify_window,   create_window,\
+                            destroy_window,     no_policy },
+/* TSOL_RES_WINLOC */     { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_WINMAP */     { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_WINSIZE */    { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_WINSTACK */   { no_policy,          no_policy,          no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_WOWNER */     { no_policy,          modify_wowner,      no_policy,\
+                            no_policy,          no_policy },
+/* TSOL_RES_DBE */        { no_policy,          no_policy,         access_dbe,
+                            access_dbe,         swap_dbe }
 };
 
 struct xpolicy_cache {
 	xresource_t res;
 	xmethod_t method;
 	void *resource;
-	void *subject;      
+	void *subject;
 	xpolicy_t policy_flags;
 	int	ret_value;
 	int	count;
@@ -3507,10 +3390,10 @@
 	res_type = (int)(res - TSOL_START_XRES);
 
 	if (policy_cache.subject == subject &&
-		policy_cache.res == res  && 
+		policy_cache.res == res  &&
 		policy_cache.method == method &&
-		policy_cache.resource == resource  && 
-		policy_cache.policy_flags == policy_flags) 
+		policy_cache.resource == resource  &&
+		policy_cache.policy_flags == policy_flags)
 	{
 
 		policy_cache.count++;
@@ -3522,7 +3405,7 @@
 		policy_cache.subject = subject;
 		policy_cache.policy_flags = policy_flags;
 
-		ret_value = ((XTSOL_policy_table[res_type][method]) (res,	
+		ret_value = ((XTSOL_policy_table[res_type][method]) (res,
 			method,	resource, subject,	policy_flags,	misc));
 		policy_cache.ret_value = ret_value;
 
@@ -3553,7 +3436,7 @@
  * Binary privilege testing is much faster than the string testing
  */
 void
-init_win_privsets()
+init_win_privsets(void)
 {
 
 	pset_win_mac_read = alloc_win_priv(PRIV_WIN_MAC_READ);
@@ -3570,7 +3453,7 @@
 }
 
 void
-free_win_privsets()
+free_win_privsets(void)
 {
 	priv_freeset(pset_win_mac_read);
 	priv_freeset(pset_win_mac_write);
--- a/open-src/xserver/xorg/sun-src/tsol/tsolpolicy.h	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/tsol/tsolpolicy.h	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-/* Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+/* Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -24,15 +24,12 @@
  * shall not be used in advertising or otherwise to promote the sale, use
  * or other dealings in this Software without prior written authorization
  * of the copyright holder.
- */ 
-
-#pragma ident	"@(#)tsolpolicy.h	1.6	07/01/31 SMI"
-
+ */
 
 #ifndef	_TSOL_POLICY_H
 #define	_TSOL_POLICY_H
 
-#pragma ident	"@(#)xpolicy.h	5.10	97/03/04 SMI; TSOL 2.x"
+#pragma ident	"@(#)tsolpolicy.h	1.7	09/01/14 SMI"
 
 #ifdef	__cplusplus
 extern "C" {
@@ -149,13 +146,13 @@
     void *resource, void *subject, xpolicy_t policy_flags, void *misc);
 
 #ifdef DEBUG	/* define this in tsolinfo.h if you want debug */
-/* 
+/*
  * For priv debugging messages.
  * XTSOL_FAIL : logs all failures that cause a err code to be returned
  * 		in protocol
  * XTSOL_ALLOW:	logs all privs that the client is lacking, but is allowed
  * XTSOL_IGNORE	logs all failures whose err code is not returned in protocol
- * 
+ *
  * The higher no. always includes the lower no. log
  */
 extern int xtsol_debug; 	/* defined xres_policy.c */
@@ -282,6 +279,9 @@
 int swap_dbe(xresource_t res, xmethod_t method,
     void *resource, void *subject, xpolicy_t policy_flags, void *misc);
 
+void init_win_privsets(void);
+void free_win_privsets(void);
+
 #ifdef	__cplusplus
 }
 #endif
--- a/open-src/xserver/xorg/sun-src/tsol/tsolprotocol.c	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/tsol/tsolprotocol.c	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-/* Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+/* Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -24,13 +24,13 @@
  * shall not be used in advertising or otherwise to promote the sale, use
  * or other dealings in this Software without prior written authorization
  * of the copyright holder.
- */ 
-
-#pragma ident	"@(#)tsolprotocol.c 1.24	08/07/21 SMI"
-
-#ifdef HAVE_DIX_CONFIG_H 
-#include <dix-config.h> 
-#endif 
+ */
+
+#pragma ident	"@(#)tsolprotocol.c 1.25	09/01/14 SMI"
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
 
 #include <sys/param.h>
 #include <fcntl.h>
@@ -60,9 +60,13 @@
 #include "../Xext/panoramiXsrv.h"
 #endif
 #ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include "security.h"
+#include "../Xext/securitysrv.h"
 #endif
+#include "xace.h"
+#include "xacestr.h"
+
+#define CALLBACK(name) void \
+name(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
 
 /*
  * The event # here match those in /usr/include/bsm/audit_uevents.h.
@@ -72,125 +76,123 @@
 #define MAX_AUDIT_EVENTS 100
 
 int audit_eventsid[100][2] = {
-	X_CreateWindow, AUE_CreateWindow,
-	X_ChangeWindowAttributes, AUE_ChangeWindowAttributes,
-	X_GetWindowAttributes, AUE_GetWindowAttributes,
-	X_DestroyWindow, AUE_DestroyWindow,
-	X_DestroySubwindows, AUE_DestroySubwindows,
-	X_ChangeSaveSet, AUE_ChangeSaveSet,
-	X_ReparentWindow, AUE_ReparentWindow,
-	X_MapWindow, AUE_MapWindow,
-	X_MapSubwindows, AUE_MapSubwindows,
-	X_UnmapWindow, AUE_UnmapWindow,
-	X_UnmapSubwindows, AUE_UnmapSubwindows,
-	X_ConfigureWindow, AUE_ConfigureWindow,
-	X_CirculateWindow, AUE_CirculateWindow,
-	X_GetGeometry, AUE_GetGeometry,
-	X_QueryTree, AUE_QueryTree,
-	X_InternAtom, AUE_InternAtom,
-	X_GetAtomName, AUE_GetAtomName,
-	X_ChangeProperty, AUE_ChangeProperty,
-	X_DeleteProperty, AUE_DeleteProperty,
-	X_GetProperty, AUE_GetProperty,
-	X_ListProperties, AUE_ListProperties,
-	X_SetSelectionOwner, AUE_SetSelectionOwner,
-	X_GetSelectionOwner, AUE_GetSelectionOwner,
-	X_ConvertSelection, AUE_ConvertSelection,
-	X_SendEvent, AUE_SendEvent,
-	X_GrabPointer, AUE_GrabPointer,
-	X_UngrabPointer, AUE_UngrabPointer,
-	X_GrabButton, AUE_GrabButton,
-	X_UngrabButton, AUE_UngrabButton,
-	X_ChangeActivePointerGrab, AUE_ChangeActivePointerGrab,
-	X_GrabKeyboard, AUE_GrabKeyboard,
-	X_UngrabKeyboard, AUE_UngrabKeyboard,
-	X_GrabKey, AUE_GrabKey,
-	X_UngrabKey, AUE_UngrabKey,
-	X_GrabServer, AUE_GrabServer,
-	X_UngrabServer, AUE_UngrabServer,
-	X_QueryPointer, AUE_QueryPointer,
-	X_GetMotionEvents, AUE_GetMotionEvents,
-	X_TranslateCoords, AUE_TranslateCoords,
-	X_WarpPointer, AUE_WarpPointer,
-	X_SetInputFocus, AUE_SetInputFocus,
-	X_GetInputFocus, AUE_GetInputFocus,
-	X_QueryKeymap, AUE_QueryKeymap,
-	X_SetFontPath, AUE_SetFontPath,
-	X_FreePixmap, AUE_FreePixmap,
-	X_ChangeGC, AUE_ChangeGC,
-	X_CopyGC, AUE_CopyGC,
-	X_SetDashes, AUE_SetDashes,
-	X_SetClipRectangles, AUE_SetClipRectangles,
-	X_FreeGC, AUE_FreeGC,
-	X_ClearArea, AUE_ClearArea,
-	X_CopyArea, AUE_CopyArea,
-	X_CopyPlane, AUE_CopyPlane,
-	X_PolyPoint, AUE_PolyPoint,
-	X_PolyLine, AUE_PolyLine,
-	X_PolySegment, AUE_PolySegment,
-	X_PolyRectangle, AUE_PolyRectangle,
-	X_PolyArc, AUE_PolyArc,
-	X_FillPoly, AUE_FillPolygon,
-	X_PolyFillRectangle, AUE_PolyFillRectangle,
-	X_PolyFillArc, AUE_PolyFillArc,
-	X_PutImage, AUE_PutImage,
-	X_GetImage, AUE_GetImage,
-	X_PolyText8, AUE_PolyText8,
-	X_PolyText16, AUE_PolyText16,
-	X_ImageText8, AUE_ImageText8,
-	X_ImageText16, AUE_ImageText16,
-	X_CreateColormap, AUE_CreateColormap,
-	X_FreeColormap, AUE_FreeColormap,
-	X_CopyColormapAndFree, AUE_CopyColormapAndFree,
-	X_InstallColormap, AUE_InstallColormap,
-	X_UninstallColormap, AUE_UninstallColormap,
-	X_ListInstalledColormaps, AUE_ListInstalledColormaps,
-	X_AllocColor, AUE_AllocColor,
-	X_AllocNamedColor, AUE_AllocNamedColor,
-	X_AllocColorCells, AUE_AllocColorCells,
-	X_AllocColorPlanes, AUE_AllocColorPlanes,
-	X_FreeColors, AUE_FreeColors,
-	X_StoreColors, AUE_StoreColors,
-	X_StoreNamedColor, AUE_StoreNamedColor,
-	X_QueryColors, AUE_QueryColors,
-	X_LookupColor, AUE_LookupColor,
-	X_CreateCursor, AUE_CreateCursor,
-	X_CreateGlyphCursor, AUE_CreateGlyphCursor,
-	X_FreeCursor, AUE_FreeCursor,
-	X_RecolorCursor, AUE_RecolorCursor,
-	X_ChangeKeyboardMapping, AUE_ChangeKeyboardMapping,
-	X_ChangeKeyboardControl, AUE_ChangeKeyboardControl,
-	X_Bell, AUE_Bell,
-	X_ChangePointerControl, AUE_ChangePointerControl,
-	X_SetScreenSaver, AUE_SetScreenSaver,
-	X_ChangeHosts, AUE_ChangeHosts,
-	X_SetAccessControl, AUE_SetAccessControl,
-	X_SetCloseDownMode, AUE_SetCloseDownMode,
-	X_KillClient, AUE_KillClient,
-	X_RotateProperties, AUE_RotateProperties,
-	X_ForceScreenSaver, AUE_ForceScreenSaver,
-	X_SetPointerMapping, AUE_SetPointerMapping,
-	X_SetModifierMapping, AUE_SetModifierMapping,
-	X_NoOperation, AUE_XExtensions
+	{ X_CreateWindow, AUE_CreateWindow },
+	{ X_ChangeWindowAttributes, AUE_ChangeWindowAttributes },
+	{ X_GetWindowAttributes, AUE_GetWindowAttributes },
+	{ X_DestroyWindow, AUE_DestroyWindow },
+	{ X_DestroySubwindows, AUE_DestroySubwindows },
+	{ X_ChangeSaveSet, AUE_ChangeSaveSet },
+	{ X_ReparentWindow, AUE_ReparentWindow },
+	{ X_MapWindow, AUE_MapWindow },
+	{ X_MapSubwindows, AUE_MapSubwindows },
+	{ X_UnmapWindow, AUE_UnmapWindow },
+	{ X_UnmapSubwindows, AUE_UnmapSubwindows },
+	{ X_ConfigureWindow, AUE_ConfigureWindow },
+	{ X_CirculateWindow, AUE_CirculateWindow },
+	{ X_GetGeometry, AUE_GetGeometry },
+	{ X_QueryTree, AUE_QueryTree },
+	{ X_InternAtom, AUE_InternAtom },
+	{ X_GetAtomName, AUE_GetAtomName },
+	{ X_ChangeProperty, AUE_ChangeProperty },
+	{ X_DeleteProperty, AUE_DeleteProperty },
+	{ X_GetProperty, AUE_GetProperty },
+	{ X_ListProperties, AUE_ListProperties },
+	{ X_SetSelectionOwner, AUE_SetSelectionOwner },
+	{ X_GetSelectionOwner, AUE_GetSelectionOwner },
+	{ X_ConvertSelection, AUE_ConvertSelection },
+	{ X_SendEvent, AUE_SendEvent },
+	{ X_GrabPointer, AUE_GrabPointer },
+	{ X_UngrabPointer, AUE_UngrabPointer },
+	{ X_GrabButton, AUE_GrabButton },
+	{ X_UngrabButton, AUE_UngrabButton },
+	{ X_ChangeActivePointerGrab, AUE_ChangeActivePointerGrab },
+	{ X_GrabKeyboard, AUE_GrabKeyboard },
+	{ X_UngrabKeyboard, AUE_UngrabKeyboard },
+	{ X_GrabKey, AUE_GrabKey },
+	{ X_UngrabKey, AUE_UngrabKey },
+	{ X_GrabServer, AUE_GrabServer },
+	{ X_UngrabServer, AUE_UngrabServer },
+	{ X_QueryPointer, AUE_QueryPointer },
+	{ X_GetMotionEvents, AUE_GetMotionEvents },
+	{ X_TranslateCoords, AUE_TranslateCoords },
+	{ X_WarpPointer, AUE_WarpPointer },
+	{ X_SetInputFocus, AUE_SetInputFocus },
+	{ X_GetInputFocus, AUE_GetInputFocus },
+	{ X_QueryKeymap, AUE_QueryKeymap },
+	{ X_SetFontPath, AUE_SetFontPath },
+	{ X_FreePixmap, AUE_FreePixmap },
+	{ X_ChangeGC, AUE_ChangeGC },
+	{ X_CopyGC, AUE_CopyGC },
+	{ X_SetDashes, AUE_SetDashes },
+	{ X_SetClipRectangles, AUE_SetClipRectangles },
+	{ X_FreeGC, AUE_FreeGC },
+	{ X_ClearArea, AUE_ClearArea },
+	{ X_CopyArea, AUE_CopyArea },
+	{ X_CopyPlane, AUE_CopyPlane },
+	{ X_PolyPoint, AUE_PolyPoint },
+	{ X_PolyLine, AUE_PolyLine },
+	{ X_PolySegment, AUE_PolySegment },
+	{ X_PolyRectangle, AUE_PolyRectangle },
+	{ X_PolyArc, AUE_PolyArc },
+	{ X_FillPoly, AUE_FillPolygon },
+	{ X_PolyFillRectangle, AUE_PolyFillRectangle },
+	{ X_PolyFillArc, AUE_PolyFillArc },
+	{ X_PutImage, AUE_PutImage },
+	{ X_GetImage, AUE_GetImage },
+	{ X_PolyText8, AUE_PolyText8 },
+	{ X_PolyText16, AUE_PolyText16 },
+	{ X_ImageText8, AUE_ImageText8 },
+	{ X_ImageText16, AUE_ImageText16 },
+	{ X_CreateColormap, AUE_CreateColormap },
+	{ X_FreeColormap, AUE_FreeColormap },
+	{ X_CopyColormapAndFree, AUE_CopyColormapAndFree },
+	{ X_InstallColormap, AUE_InstallColormap },
+	{ X_UninstallColormap, AUE_UninstallColormap },
+	{ X_ListInstalledColormaps, AUE_ListInstalledColormaps },
+	{ X_AllocColor, AUE_AllocColor },
+	{ X_AllocNamedColor, AUE_AllocNamedColor },
+	{ X_AllocColorCells, AUE_AllocColorCells },
+	{ X_AllocColorPlanes, AUE_AllocColorPlanes },
+	{ X_FreeColors, AUE_FreeColors },
+	{ X_StoreColors, AUE_StoreColors },
+	{ X_StoreNamedColor, AUE_StoreNamedColor },
+	{ X_QueryColors, AUE_QueryColors },
+	{ X_LookupColor, AUE_LookupColor },
+	{ X_CreateCursor, AUE_CreateCursor },
+	{ X_CreateGlyphCursor, AUE_CreateGlyphCursor },
+	{ X_FreeCursor, AUE_FreeCursor },
+	{ X_RecolorCursor, AUE_RecolorCursor },
+	{ X_ChangeKeyboardMapping, AUE_ChangeKeyboardMapping },
+	{ X_ChangeKeyboardControl, AUE_ChangeKeyboardControl },
+	{ X_Bell, AUE_Bell },
+	{ X_ChangePointerControl, AUE_ChangePointerControl },
+	{ X_SetScreenSaver, AUE_SetScreenSaver },
+	{ X_ChangeHosts, AUE_ChangeHosts },
+	{ X_SetAccessControl, AUE_SetAccessControl },
+	{ X_SetCloseDownMode, AUE_SetCloseDownMode },
+	{ X_KillClient, AUE_KillClient },
+	{ X_RotateProperties, AUE_RotateProperties },
+	{ X_ForceScreenSaver, AUE_ForceScreenSaver },
+	{ X_SetPointerMapping, AUE_SetPointerMapping },
+	{ X_SetModifierMapping, AUE_SetModifierMapping },
+	{ X_NoOperation, AUE_XExtensions }
 };
-extern void Swap32Write();
 extern int (*TsolSavedProcVector[PROCVECTORSIZE])(ClientPtr /*client*/);
 extern int (*TsolSavedSwappedProcVector[PROCVECTORSIZE])(ClientPtr /*client*/);
 
+extern int GetGeometry(ClientPtr client, xGetGeometryReply *rep);
 
 Atom MakeTSOLAtom(ClientPtr client, char *string, unsigned int len, Bool makeit);
 
 #define INITIAL_TSOL_NODELENGTH 1500
 
 extern WindowPtr XYToWindow(int x, int y);
-extern WindowPtr AnyWindowOverlapsJustMe(WindowPtr pWin, 
+extern WindowPtr AnyWindowOverlapsJustMe(WindowPtr pWin,
 	WindowPtr pHead, BoxPtr box);
 
 extern Atom tsol_lastAtom;
 extern int tsol_nodelength;
 extern TsolNodePtr tsol_node;
-extern int NumCurrentSelections;
-extern Selection *CurrentSelections;
 extern WindowPtr tpwin;
 extern int tsolMultiLevel;
 
@@ -203,7 +205,7 @@
  * Get number of atoms defined in the system
  */
 static Atom
-GetLastAtom()
+GetLastAtom(void)
 {
 	Atom a = (Atom) 1; /* atoms start at 1 */
 
@@ -220,7 +222,7 @@
  * called if some atoms are created internally by server.
  */
 void
-UpdateTsolNode()
+UpdateTsolNode(void)
 {
 	Atom lastAtom = GetLastAtom();
 	Atom ia;
@@ -228,7 +230,7 @@
 	/* Update may not be needed */
 	if (lastAtom == None || lastAtom == tsol_lastAtom)
 		return;
-	
+
 	if (tsol_node == NULL) {
 		int newsize = (lastAtom > INITIAL_TSOL_NODELENGTH ? lastAtom : INITIAL_TSOL_NODELENGTH);
 
@@ -257,7 +259,7 @@
 		return;
 	}
 
-	/* 
+	/*
 	 * Initialize the tsol node for each atom
 	 */
 	for (ia = tsol_lastAtom + 1; ia <= lastAtom; ia++) {
@@ -274,8 +276,7 @@
 }
 
 int
-ProcTsolInternAtom(client)
-    register ClientPtr client;
+ProcTsolInternAtom(ClientPtr client)
 {
     Atom atom;
     char *tchar;
@@ -304,8 +305,7 @@
 }
 
 int
-ProcTsolGetAtomName(client)
-    register ClientPtr client;
+ProcTsolGetAtomName(ClientPtr client)
 {
     char *str;
     xGetAtomNameReply reply;
@@ -325,8 +325,8 @@
 	(void)WriteToClient(client, len, str);
 	return(client->noClientException);
     }
-    else 
-    { 
+    else
+    {
 	client->errorValue = stuff->id;
 	return (BadAtom);
     }
@@ -336,16 +336,11 @@
 MakeTSOLAtom(ClientPtr client, char *string, unsigned int len, Bool makeit)
 {
 	TsolNodePtr tndp;
-	int count;
 	int k;
 	int newsize;
-	Atom lastAtom;
 	Atom newAtom;
-	bslabel_t **newsl;
 
 	TsolInfoPtr tsolinfo;
-	bslabel_t *sl;
-
 
 	/* Make the atom as usual */
 	newAtom = MakeAtom(string, len, makeit);
@@ -406,12 +401,12 @@
 
 
 int
-ProcTsolSetSelectionOwner(client)
-    register ClientPtr client;
+ProcTsolSetSelectionOwner(ClientPtr client)
 {
-    WindowPtr pWin;
+    WindowPtr pWin = NULL;
     TimeStamp time;
-    REQUEST(xSetSelectionOwnerReq);
+    Selection *pSel;
+    int rc;
 
 #ifdef TSOL
     TsolSelnPtr tsolseln = NULL;
@@ -419,7 +414,9 @@
     TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 #endif /* TSOL */
 
+    REQUEST(xSetSelectionOwnerReq);
     REQUEST_SIZE_MATCH(xSetSelectionOwnerReq);
+
     UpdateCurrentTime();
     time = ClientTimeToServerTime(stuff->time);
 
@@ -427,28 +424,36 @@
 	time stamp, do not set the selection, just return success. */
     if (CompareTimeStamps(time, currentTime) == LATER)
     	return Success;
+
     if (stuff->window != None)
     {
-        pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-					       SecurityReadAccess);
-        if (!pWin)
-            return(BadWindow);
+        rc = dixLookupWindow(&pWin, stuff->window, client, DixSetAttrAccess);
+        if (rc != Success)
+            return rc;
+    }
+    if (!ValidAtom(stuff->selection)) {
+	client->errorValue = stuff->selection;
+        return BadAtom;
     }
-    else
-        pWin = (WindowPtr)None;
-    if (ValidAtom(stuff->selection))
-    {
+
+    /*
+     * First, see if the selection is already set...
+     */
+    rc = dixLookupSelection(&pSel, stuff->selection, client, DixSetAttrAccess);
+
+    if (rc == Success) {
+	xEvent event;
+
+#ifdef TSOL
 	int i = 0;
 
+	for (pSel = CurrentSelections;
+	     (pSel != NULL) && pSel->selection != stuff->selection;
+	     pSel = pSel->next) {
+            i++;
+	}
+
 	/*
-	 * First, see if the selection is already set... 
-	 */
-	while ((i < NumCurrentSelections) && 
-	       CurrentSelections[i].selection != stuff->selection) 
-            i++;
-
-#ifdef TSOL
-	/* 
 	 * special processing for selection agent. Just note
 	 * the owner of this special selection
 	 */
@@ -456,271 +461,263 @@
 	{
 	    if (HasWinSelection(tsolinfo))
 	    {
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-               auditwrite(AW_USEOFPRIV, 1, PRIV_WIN_SELECTION,
-                          AW_APPEND, AW_END);
-            tsol_sel_agnt = i; /* owner of this seln */
+		if (tsolinfo->flags & TSOL_AUDITEVENT)
+		    auditwrite(AW_USEOFPRIV, 1, PRIV_WIN_SELECTION,
+			       AW_APPEND, AW_END);
+		tsol_sel_agnt = i; /* owner of this seln */
 	    }
 	    else
 	    {
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-               auditwrite(AW_USEOFPRIV, 0, PRIV_WIN_SELECTION,
-                          AW_APPEND, AW_END);
-            client->errorValue = stuff->selection;
-            return(BadAtom);
+		if (tsolinfo->flags & TSOL_AUDITEVENT)
+		    auditwrite(AW_USEOFPRIV, 0, PRIV_WIN_SELECTION,
+			       AW_APPEND, AW_END);
+		client->errorValue = stuff->selection;
+		return(BadAtom);
 	    }
-	}	
-#endif /* TSOL */
-
-        if (i < NumCurrentSelections)
-        {        
-	    xEvent event;
-
-	  #ifdef TSOL
-	    /* for poly-selections, search further to see if sl,uid match */
-	    tsolseln = (TsolSelnPtr)CurrentSelections[i].secPrivate;
-	    if (PolySelection(CurrentSelections[i].selection))
+	}
+
+	/* for poly-selections, search further to see if sl,uid match */
+	tsolseln = *(TsolSelectionPriv(pSel));
+	if (PolySelection(pSel->selection))
+	{
+	    prevtsolseln = tsolseln;
+	    while (tsolseln)
 	    {
-	        prevtsolseln = tsolseln;
-            while (tsolseln)
-            {
-                if (tsolseln->uid == tsolinfo->uid &&
-                    tsolseln->sl == tsolinfo->sl)
-		            break; /* match found */
-                prevtsolseln = tsolseln;
-                tsolseln = tsolseln->next;
-            }
-	    }	    
-	    if (PolySelection(CurrentSelections[i].selection) && tsolseln)
-	    {
-            if (CompareTimeStamps(time, tsolseln->lastTimeChanged) == EARLIER)
-                return Success;
-	        if (tsolseln->client && (!pWin || (tsolseln->client != client)))
-	        {
-                event.u.u.type = SelectionClear;
-                event.u.selectionClear.time = time.milliseconds;
-                event.u.selectionClear.window = tsolseln->window;
-                event.u.selectionClear.atom = CurrentSelections[i].selection;
-                (void)TryClientEvents (tsolseln->client,
-                                       &event,
-                                       1,
-                                       NoEventMask,
-                                       NoEventMask /* CantBeFiltered */,
-                                       NullGrab);
-	        }
+		if (tsolseln->uid == tsolinfo->uid &&
+		    tsolseln->sl == tsolinfo->sl)
+		    break; /* match found */
+		prevtsolseln = tsolseln;
+		tsolseln = tsolseln->next;
 	    }
-	    else if (tsolseln)
-	    {
-            /* we use the existing code. So we left it unindented */
-#endif /* TSOL */
-
-            /* If the timestamp in client's request is in the past relative
-		to the time stamp indicating the last time the owner of the
-		selection was set, do not set the selection, just return 
-		success. */
-            if (CompareTimeStamps(time, CurrentSelections[i].lastTimeChanged)
+	}
+	if (PolySelection(pSel->selection) && tsolseln)
+	{
+	    if (CompareTimeStamps(time, tsolseln->lastTimeChanged)
 		== EARLIER)
 		return Success;
-	    if (CurrentSelections[i].client &&
-		(!pWin || (CurrentSelections[i].client != client)))
+	    if (tsolseln->client &&
+		(!pWin || (tsolseln->client != client)))
 	    {
 		event.u.u.type = SelectionClear;
 		event.u.selectionClear.time = time.milliseconds;
-		event.u.selectionClear.window = CurrentSelections[i].window;
-		event.u.selectionClear.atom = CurrentSelections[i].selection;
-		(void) TryClientEvents (CurrentSelections[i].client, &event, 1,
-				NoEventMask, NoEventMask /* CantBeFiltered */,
-				NullGrab);
+		event.u.selectionClear.window = tsolseln->window;
+		event.u.selectionClear.atom = pSel->selection;
+		(void)TryClientEvents (tsolseln->client,
+				       &event,
+				       1,
+				       NoEventMask,
+				       NoEventMask /* CantBeFiltered */,
+				       NullGrab);
 	    }
-#ifdef TSOL
-	    }
-#endif /* TSOL */
 	}
-	else
+	else if (tsolseln)
 	{
-	    /*
-	     * It doesn't exist, so add it...
-	     */
-	    Selection *newsels;
-
-	    if (i == 0)
-		newsels = (Selection *)xalloc(sizeof(Selection));
-	    else
-		newsels = (Selection *)xrealloc(CurrentSelections,
-			    (NumCurrentSelections + 1) * sizeof(Selection));
-	    if (!newsels)
-		return BadAlloc;
-	    NumCurrentSelections++;
-	    CurrentSelections = newsels;
-	    CurrentSelections[i].selection = stuff->selection;
+            /* we use the existing code. So we left it unindented */
+#endif /* TSOL */
+
+	/* If the timestamp in client's request is in the past relative
+	   to the time stamp indicating the last time the owner of the
+	   selection was set, do not set the selection, just return
+	   success. */
+	if (CompareTimeStamps(time, pSel->lastTimeChanged) == EARLIER)
+	    return Success;
+	if (pSel->client && (!pWin || (pSel->client != client)))
+	{
+	    event.u.u.type = SelectionClear;
+	    event.u.selectionClear.time = time.milliseconds;
+	    event.u.selectionClear.window = pSel->window;
+	    event.u.selectionClear.atom = pSel->selection;
+	    TryClientEvents(pSel->client, &event, 1, NoEventMask,
+			    NoEventMask /* CantBeFiltered */, NullGrab);
 	}
 #ifdef TSOL
-	/* 
-	 * tsolseln == NULL, either seln does not exist, 
-	 * or there is no sl,uid match
+	}
+#endif /* TSOL */
+    }
+    else if (rc == BadMatch)
+    {
+	/*
+	 * It doesn't exist, so add it...
 	 */
+	pSel = xalloc(sizeof(Selection));
+	if (!pSel)
+	    return BadAlloc;
+
+	pSel->selection = stuff->selection;
+	pSel->devPrivates = NULL;
+
+	/* security creation/labeling check */
+	rc = XaceHookSelectionAccess(client, &pSel,
+				     DixCreateAccess|DixSetAttrAccess);
+	if (rc != Success) {
+	    xfree(pSel);
+	    return rc;
+	}
+
+	pSel->next = CurrentSelections;
+	CurrentSelections = pSel;
+    }
+    else
+	return rc;
+
+#ifdef TSOL
+    /*
+     * tsolseln == NULL, either seln does not exist,
+     * or there is no sl,uid match
+     */
+    if (!tsolseln)
+    {
+	/* create one & put  it in place */
+	tsolseln = (TsolSelnPtr)xalloc(sizeof(TsolSelnRec));
 	if (!tsolseln)
-	{
-	    /* create one & put  it in place */
-	    tsolseln = (TsolSelnPtr)xalloc(sizeof(TsolSelnRec));
-	    if (!tsolseln)
-            return BadAlloc;
-	    tsolseln->next = (TsolSelnPtr)NULL;
-
-	    /* if necessary put at the end of the list */
-	    if (prevtsolseln)
-            prevtsolseln->next = tsolseln;
-	    else
-	        CurrentSelections[i].secPrivate = (pointer)tsolseln;
-	}
-	/* fill it in */
+	    return BadAlloc;
+	tsolseln->next = (TsolSelnPtr)NULL;
+
+	/* if necessary put at the end of the list */
+	if (prevtsolseln)
+	    prevtsolseln->next = tsolseln;
+	else
+	    *(TsolSelectionPriv(pSel)) = tsolseln;
+    }
+    /* fill it in */
     tsolseln->sl = tsolinfo->sl;
     tsolseln->uid = tsolinfo->uid;
     tsolseln->lastTimeChanged = time;
-	tsolseln->window = stuff->window;
-	tsolseln->pWin = pWin;
-	tsolseln->client = (pWin ? client : NullClient);
-	if (!PolySelection(CurrentSelections[i].selection))
-	{
+    tsolseln->window = stuff->window;
+    tsolseln->pWin = pWin;
+    tsolseln->client = (pWin ? client : NullClient);
+    if (!PolySelection(pSel->selection))
+    {
         /* no change to existing code. left as it is */
 #endif /* TSOL */
 
-        CurrentSelections[i].lastTimeChanged = time;
-	CurrentSelections[i].window = stuff->window;
-	CurrentSelections[i].pWin = pWin;
-	CurrentSelections[i].client = (pWin ? client : NullClient);
-	if (SelectionCallback)
-	{
-	    SelectionInfoRec	info;
-
-	    info.selection = &CurrentSelections[i];
-	    info.kind= SelectionSetOwner;
-	    CallCallbacks(&SelectionCallback, &info);
-	}
-#ifdef TSOL 
-	}
+    pSel->lastTimeChanged = time;
+    pSel->window = stuff->window;
+    pSel->pWin = pWin;
+    pSel->client = (pWin ? client : NullClient);
+
+    if (SelectionCallback != NULL) {
+	SelectionInfoRec info = { pSel, client, SelectionSetOwner };
+	CallCallbacks(&SelectionCallback, &info);
+    }
+#ifdef TSOL
+    }
 #endif /* TSOL */
 
-	return (client->noClientException);
-    }
-    else 
-    {
-	client->errorValue = stuff->selection;
-        return (BadAtom);
-    }
+    return (client->noClientException);
 }
 
 int
-ProcTsolGetSelectionOwner(client)
-    register ClientPtr client;
+ProcTsolGetSelectionOwner(ClientPtr client)
 {
+    int rc;
+    Selection *pSel;
+    xGetSelectionOwnerReply reply;
+
     REQUEST(xResourceReq);
-
     REQUEST_SIZE_MATCH(xResourceReq);
-    if (ValidAtom(stuff->id))
-    {
-	int i;
-        xGetSelectionOwnerReply reply;
-
-	i = 0;
-        while ((i < NumCurrentSelections) && 
-	       CurrentSelections[i].selection != stuff->id) i++;
-        reply.type = X_Reply;
-	reply.length = 0;
-	reply.sequenceNumber = client->sequence;
-        if (i < NumCurrentSelections)
-#ifdef TSOL 
+
+    if (!ValidAtom(stuff->id)) {
+	client->errorValue = stuff->id;
+        return BadAtom;
+    }
+
+    reply.type = X_Reply;
+    reply.length = 0;
+    reply.sequenceNumber = client->sequence;
+
+    rc = dixLookupSelection(&pSel, stuff->id, client, DixGetAttrAccess);
+    if (rc == Success)
+#ifdef TSOL
 	{
 	    TsolSelnPtr tsolseln;
 	    TsolInfoPtr tsolinfo; /* tsol client info */
 	    tsolinfo = GetClientTsolInfo(client);
 
 	    /* find matching sl,uid in case of poly selns */
-	    tsolseln = (TsolSelnPtr)CurrentSelections[i].secPrivate;
-	    if (PolySelection(CurrentSelections[i].selection))
+	    tsolseln = *(TsolSelectionPriv(pSel));
+	    if (PolySelection(pSel->selection))
 	    {
-            while (tsolseln)
-            {
-                if (tsolseln->uid == tsolinfo->uid &&
-                    tsolseln->sl == tsolinfo->sl)
-                    break; /* match found */
-                tsolseln = tsolseln->next;
-            }
-            if (tsolseln)
-                reply.owner = tsolseln->window;
-            else
-                reply.owner = None;
+		while (tsolseln)
+		{
+		    if (tsolseln->uid == tsolinfo->uid &&
+			tsolseln->sl == tsolinfo->sl)
+			break; /* match found */
+		    tsolseln = tsolseln->next;
+		}
+		if (tsolseln)
+		    reply.owner = tsolseln->window;
+		else
+		    reply.owner = None;
 	    }
 	    else
-        {
-            reply.owner = CurrentSelections[i].window;
+	    {
+		reply.owner = pSel->window;
 	    }
-	    /* 
+	    /*
 	     * Selection Agent processing. Override the owner
 	     */
-        if (!HasWinSelection(tsolinfo) &&
-            client->index != CLIENT_ID(reply.owner) &&
-            reply.owner != None &&
-            tsol_sel_agnt != -1 &&
-            CurrentSelections[tsol_sel_agnt].client)
-        {
-            WindowPtr pWin;
-            pWin = (WindowPtr)LookupWindow(reply.owner, client);
-            if (tsolinfo->flags & TSOL_AUDITEVENT)
-                auditwrite(AW_USEOFPRIV, 0, PRIV_WIN_SELECTION,
-                           AW_APPEND, AW_END);
-	     }
-	     else if (HasWinSelection(tsolinfo) &&
-                  tsolinfo->flags & TSOL_AUDITEVENT)
-	     {
-             auditwrite(AW_USEOFPRIV, 1, PRIV_WIN_SELECTION,
-                        AW_APPEND, AW_END);             
-	     }
+	    if (!HasWinSelection(tsolinfo) &&
+		client->index != CLIENT_ID(reply.owner) &&
+		reply.owner != None &&
+		tsol_sel_agnt != -1 &&
+		CurrentSelections[tsol_sel_agnt].client)
+	    {
+		WindowPtr pWin;
+		pWin = (WindowPtr)LookupWindow(reply.owner, client);
+		if (tsolinfo->flags & TSOL_AUDITEVENT)
+		    auditwrite(AW_USEOFPRIV, 0, PRIV_WIN_SELECTION,
+			       AW_APPEND, AW_END);
+	    }
+	    else if (HasWinSelection(tsolinfo) &&
+		     tsolinfo->flags & TSOL_AUDITEVENT)
+	    {
+		auditwrite(AW_USEOFPRIV, 1, PRIV_WIN_SELECTION,
+			   AW_APPEND, AW_END);
+	    }
 	     /* end seln agent processing */
 	}
 #else /* TSOL */
-            reply.owner = CurrentSelections[i].window;
+	reply.owner = pSel->window;
 #endif /* TSOL */
-        else
-            reply.owner = None;
-        WriteReplyToClient(client, sizeof(xGetSelectionOwnerReply), &reply);
-        return(client->noClientException);
-    }
-    else            
-    {
-	client->errorValue = stuff->id;
-        return (BadAtom); 
-    }
+    else if (rc == BadMatch)
+	reply.owner = None;
+    else
+	return rc;
+
+    WriteReplyToClient(client, sizeof(xGetSelectionOwnerReply), &reply);
+    return client->noClientException;
 }
 
 int
-ProcTsolConvertSelection(client)
-    register ClientPtr client;
+ProcTsolConvertSelection(ClientPtr client)
 {
     Bool paramsOkay;
     xEvent event;
     WindowPtr pWin;
+    Selection *pSel;
+    int rc;
+
     REQUEST(xConvertSelectionReq);
-
     REQUEST_SIZE_MATCH(xConvertSelectionReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->requestor, client,
-					   SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-
-    paramsOkay = (ValidAtom(stuff->selection) && ValidAtom(stuff->target));
-    if (stuff->property != None)
-	paramsOkay &= ValidAtom(stuff->property);
-    if (paramsOkay)
-    {
-	int i;
-
-	i = 0;
-	while ((i < NumCurrentSelections) && 
-	       CurrentSelections[i].selection != stuff->selection) i++;
-#ifdef TSOL 
-	if (i < NumCurrentSelections)
-	{
+
+    rc = dixLookupWindow(&pWin, stuff->requestor, client, DixSetAttrAccess);
+    if (rc != Success)
+        return rc;
+
+    paramsOkay = ValidAtom(stuff->selection) && ValidAtom(stuff->target);
+    paramsOkay &= (stuff->property == None) || ValidAtom(stuff->property);
+    if (!paramsOkay) {
+	client->errorValue = stuff->property;
+        return BadAtom;
+    }
+
+    rc = dixLookupSelection(&pSel, stuff->selection, client, DixReadAccess);
+
+    if (rc != Success && rc != BadMatch)
+	return rc;
+#ifdef TSOL
+    else if (rc == Success) {
 	    TsolSelnPtr tsolseln;
 	    TsolInfoPtr tsolinfo; /* tsol client info */
 	    Window twin;          /* temporary win */
@@ -729,117 +726,101 @@
 	    tsolinfo = GetClientTsolInfo(client);
 
 	    /* find matching sl,uid in case of poly selns */
-	    tsolseln = (TsolSelnPtr)CurrentSelections[i].secPrivate;
-	    if (PolySelection(CurrentSelections[i].selection))
+	    tsolseln = *(TsolSelectionPriv(pSel));
+	    if (PolySelection(pSel->selection))
 	    {
-            while (tsolseln)
-            {
-                if (tsolseln->uid == tsolinfo->uid &&
-                    tsolseln->sl == tsolinfo->sl)
-                    break; /* match found */
-                tsolseln = tsolseln->next;
-            }
-            if (!tsolseln)
-            {
-                client->errorValue = stuff->property;
-                return (BadAtom);
-            }
-            twin = tsolseln->window;
-            tclient = tsolseln->client;
+		while (tsolseln)
+		{
+		    if (tsolseln->uid == tsolinfo->uid &&
+			tsolseln->sl == tsolinfo->sl)
+			break; /* match found */
+		    tsolseln = tsolseln->next;
+		}
+		if (!tsolseln)
+		{
+		    client->errorValue = stuff->property;
+		    return (BadAtom);
+		}
+		twin = tsolseln->window;
+		tclient = tsolseln->client;
 	    }
 	    else
 	    {
-            twin = CurrentSelections[i].window;
-            tclient = CurrentSelections[i].client;
+		twin = pSel->window;
+		tclient = pSel->client;
 	    }
 	    /*
 	     * Special case for seln agent.
 	     * SelectionRequest event is redirected to selection
 	     * agent for unpirvileged clients and who do not own
 	     * the selection
-	     */	    
+	     */
 	    if (tsol_sel_agnt != -1 && CurrentSelections[tsol_sel_agnt].client)
 	    {
-            /* Redirect only if client other than owner & does not have priv */
+	    /* Redirect only if client other than owner & does not have priv */
 	        if (!HasWinSelection(tsolinfo) && (client != tclient))
-            {
-                tclient = CurrentSelections[tsol_sel_agnt].client;
-                twin = CurrentSelections[tsol_sel_agnt].window;
-                if (tsolinfo->flags & TSOL_AUDITEVENT)
-                    auditwrite(AW_USEOFPRIV, 1, PRIV_WIN_SELECTION,
-                               AW_APPEND, AW_END);
+		{
+		    tclient = CurrentSelections[tsol_sel_agnt].client;
+		    twin = CurrentSelections[tsol_sel_agnt].window;
+		    if (tsolinfo->flags & TSOL_AUDITEVENT)
+			auditwrite(AW_USEOFPRIV, 1, PRIV_WIN_SELECTION,
+				   AW_APPEND, AW_END);
 	        }
-            else if (HasWinSelection(tsolinfo) &&
-                     tsolinfo->flags & TSOL_AUDITEVENT)
-            {
-                auditwrite(AW_USEOFPRIV, 0, PRIV_WIN_SELECTION,
-                           AW_APPEND, AW_END);
-            }
+		else if (HasWinSelection(tsolinfo) &&
+			 tsolinfo->flags & TSOL_AUDITEVENT)
+		{
+		    auditwrite(AW_USEOFPRIV, 0, PRIV_WIN_SELECTION,
+			       AW_APPEND, AW_END);
+		}
 	    }
 	    /* end of special case seln handling */
 
 	    if (twin != None)
 	    {
-            event.u.u.type = SelectionRequest;
-            event.u.selectionRequest.time = stuff->time;
-            event.u.selectionRequest.owner = twin;
-            event.u.selectionRequest.requestor = stuff->requestor;
-            event.u.selectionRequest.selection = stuff->selection;
-            event.u.selectionRequest.target = stuff->target;
-            event.u.selectionRequest.property = stuff->property;
-            if (TryClientEvents(tclient, &event, 1,
-                                NoEventMask, NoEventMask /* CantBeFiltered */,
-                                NullGrab))
-                return (client->noClientException);
+		event.u.u.type = SelectionRequest;
+		event.u.selectionRequest.time = stuff->time;
+		event.u.selectionRequest.owner = twin;
+		event.u.selectionRequest.requestor = stuff->requestor;
+		event.u.selectionRequest.selection = stuff->selection;
+		event.u.selectionRequest.target = stuff->target;
+		event.u.selectionRequest.property = stuff->property;
+		if (TryClientEvents(tclient, &event, 1,
+				    NoEventMask,
+				    NoEventMask /* CantBeFiltered */,
+				    NullGrab))
+		    return (client->noClientException);
 	    }
-	}
+    }
 #else /* TSOL */
-	if ((i < NumCurrentSelections) && 
-	    (CurrentSelections[i].window != None)
-#ifdef XCSECURITY
-	    && (!client->CheckAccess ||
-		(* client->CheckAccess)(client, CurrentSelections[i].window,
-					RT_WINDOW, SecurityReadAccess,
-					CurrentSelections[i].pWin))
-#endif
-	    )
-	{        
-	    event.u.u.type = SelectionRequest;
-	    event.u.selectionRequest.time = stuff->time;
-	    event.u.selectionRequest.owner = 
-			CurrentSelections[i].window;
-	    event.u.selectionRequest.requestor = stuff->requestor;
-	    event.u.selectionRequest.selection = stuff->selection;
-	    event.u.selectionRequest.target = stuff->target;
-	    event.u.selectionRequest.property = stuff->property;
-	    if (TryClientEvents(
-		CurrentSelections[i].client, &event, 1, NoEventMask,
-		NoEventMask /* CantBeFiltered */, NullGrab))
-		return (client->noClientException);
-	}
+        else if (rc == Success && pSel->window != None) {
+	event.u.u.type = SelectionRequest;
+	event.u.selectionRequest.owner = pSel->window;
+	event.u.selectionRequest.time = stuff->time;
+	event.u.selectionRequest.requestor = stuff->requestor;
+	event.u.selectionRequest.selection = stuff->selection;
+	event.u.selectionRequest.target = stuff->target;
+	event.u.selectionRequest.property = stuff->property;
+	if (TryClientEvents(pSel->client, &event, 1, NoEventMask,
+			    NoEventMask /* CantBeFiltered */, NullGrab))
+	    return client->noClientException;
+    }
 #endif /* TSOL */
 
-	event.u.u.type = SelectionNotify;
-	event.u.selectionNotify.time = stuff->time;
-	event.u.selectionNotify.requestor = stuff->requestor;
-	event.u.selectionNotify.selection = stuff->selection;
-	event.u.selectionNotify.target = stuff->target;
-	event.u.selectionNotify.property = None;
-	(void) TryClientEvents(client, &event, 1, NoEventMask,
-			       NoEventMask /* CantBeFiltered */, NullGrab);
-	return (client->noClientException);
-    }
-    else 
-    {
-	client->errorValue = stuff->property;
-        return (BadAtom);
-    }
+    event.u.u.type = SelectionNotify;
+    event.u.selectionNotify.time = stuff->time;
+    event.u.selectionNotify.requestor = stuff->requestor;
+    event.u.selectionNotify.selection = stuff->selection;
+    event.u.selectionNotify.target = stuff->target;
+    event.u.selectionNotify.property = None;
+    TryClientEvents(client, &event, 1, NoEventMask,
+		    NoEventMask /* CantBeFiltered */, NullGrab);
+    return client->noClientException;
 }
 
 /* Allocate and initialize a tsolprop */
 
 TsolPropPtr
-AllocTsolProp()
+AllocTsolProp(void)
 {
     TsolPropPtr tsolprop;
 
@@ -856,13 +837,13 @@
     return tsolprop;
 }
 
-/* 
+/*
  * Allocate and initialize tsolprop created
  * internally by the X server
  */
 
 TsolPropPtr
-AllocServerTsolProp()
+AllocServerTsolProp(void)
 {
     TsolPropPtr tsolprop;
 
@@ -890,15 +871,16 @@
  */
 
 int
-TsolChangeWindowProperty(client, pWin, property, type,
-                         format, mode, len, value, sendevent)
-    ClientPtr	client;
-    WindowPtr	pWin;
-    Atom	property, type;
-    int		format, mode;
-    unsigned long len;
-    pointer	value;
-    Bool	sendevent;
+TsolChangeWindowProperty(
+    ClientPtr	client,
+    WindowPtr	pWin,
+    Atom	property,
+    Atom	type,
+    int		format,
+    int		mode,
+    unsigned long len,
+    pointer	value,
+    Bool	sendevent)
 {
     PropertyPtr pProp;
     xEvent event;
@@ -906,6 +888,7 @@
     int totalSize;
     pointer data;
     TsolPropPtr tsolprop;
+    TsolPropPtr *tsolpropP;
     TsolInfoPtr tsolinfo;
     TsolResPtr tsolres;
     int result;
@@ -914,8 +897,8 @@
 
     if (!polyprop)
     {
-        result = ChangeWindowProperty(pWin, property, type,
-				      format, mode, len, value, sendevent);
+        result = dixChangeWindowProperty(client, pWin, property, type,
+					 format, mode, len, value, sendevent);
 	if (result != Success)
 	    return (result);
     }
@@ -934,19 +917,21 @@
     }
 
     tsolinfo = GetClientTsolInfo(client);
-    tsolres = (TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+    tsolres = TsolWindowPriv(pWin);
 
     /* Initialize secPrviate if property is not polyinstantiated */
     if (!polyprop && pProp)
     {
 	/* Initialize for internally created properties */
-	if (!pProp->secPrivate)
-            pProp->secPrivate = (pointer)AllocTsolProp();
-
-        if (!pProp->secPrivate)
-            return(BadAlloc);
-
-        tsolprop = (TsolPropPtr)(pProp->secPrivate);
+	tsolpropP = TsolPropertyPriv(pProp);
+	if (*tsolpropP == NULL)
+	{
+	    *tsolpropP = (pointer)AllocTsolProp();
+	    if (*tsolpropP == NULL)
+		return(BadAlloc);
+	}
+	tsolprop = *tsolpropP;
+
         if (WindowIsRoot(pWin))
         {
             tsolprop->sl = tsolinfo->sl;	/* use client's sl/uid */
@@ -971,13 +956,14 @@
         pProp = (PropertyPtr)xalloc(sizeof(PropertyRec));
         if (!pProp)
             return(BadAlloc);
-        pProp->secPrivate = (pointer)Xcalloc(sizeof(TsolPropRec));
-        if (!pProp->secPrivate)
+	tsolpropP = TsolPropertyPriv(pProp);
+        *tsolpropP = (pointer)Xcalloc(sizeof(TsolPropRec));
+        if (!(*tsolpropP))
             return(BadAlloc);
         data = (pointer)xalloc(totalSize);
         if (!data && len)
         {
-            xfree(pProp->secPrivate);
+            xfree(*tsolpropP);
             xfree(pProp);
             return(BadAlloc);
         }
@@ -988,7 +974,7 @@
         if (len)
             bcopy((char *)value, (char *)data, totalSize);
         pProp->size = len;
-        tsolprop = (TsolPropPtr)(pProp->secPrivate);
+        tsolprop = *tsolpropP;
         if (WindowIsRoot(pWin))
         {
             tsolprop->sl = tsolinfo->sl;
@@ -1017,7 +1003,8 @@
         if ((pProp->type != type) && (mode != PropModeReplace))
             return(BadMatch);
 
-        tsolprop = (TsolPropPtr)(pProp->secPrivate);
+        tsolpropP = TsolPropertyPriv(pProp);
+	tsolprop = *tsolpropP;
         /* search for a matching (sl, uid) pair */
         while (tsolprop)
         {
@@ -1040,19 +1027,20 @@
 	    }
 	    if (len)
 	        memcpy((char *)data, (char *)value, totalSize);
-	    
+
 	    newtsol->sl = tsolinfo->sl;
 	    newtsol->uid = tsolinfo->uid;
 	    newtsol->data = data;
 	    newtsol->size = len;
-            newtsol->next = (TsolPropPtr)(pProp->secPrivate);
-            pProp->secPrivate = (pointer)newtsol;
+	    tsolpropP = TsolPropertyPriv(pProp);
+            newtsol->next = *tsolpropP;
+            *tsolpropP = newtsol;
         }
         else
         {
             switch (mode)
             {
-                case PropModeReplace:                    
+                case PropModeReplace:
                     if (totalSize != tsolprop->size * (pProp->format >> 3))
                     {
                         data = (pointer)xrealloc(tsolprop->data, totalSize);
@@ -1066,7 +1054,7 @@
                     pProp->type = type;
                     pProp->format = format;
                     break;
-                    
+
                 case PropModeAppend:
                     if (len)
                     {
@@ -1082,7 +1070,7 @@
                         tsolprop->size += len;
                     }
                     break;
-                    
+
                 case PropModePrepend:
                     if (len)
                     {
@@ -1114,12 +1102,12 @@
 }
 
 int
-TsolInitWindow(client, pWin)
-    ClientPtr client;
-    WindowPtr pWin;
+TsolInitWindow(
+    ClientPtr client,
+    WindowPtr pWin)
 {
     TsolInfoPtr tsolinfo;
-    TsolResPtr  tsolres = (TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+    TsolResPtr  tsolres = TsolWindowPriv(pWin);
 
     if (client == serverClient)
     {
@@ -1137,28 +1125,30 @@
 }
 
 int
-TsolDeleteProperty(client, pWin, propName)
-    ClientPtr client;
-    WindowPtr pWin;
-    Atom propName;
+TsolDeleteProperty(
+    ClientPtr client,
+    WindowPtr pWin,
+    Atom propName)
 {
     PropertyPtr pProp, prevProp;
     xEvent event;
     TsolPropPtr tsolprop, tail_prop, prevtsolprop;
+    TsolPropPtr *tsolpropP;
     TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
     if (!(pProp = wUserProps (pWin)))
         return(Success);
 
     if (!PolyProperty(propName, pWin))
-	return (DeleteProperty(pWin, propName));
+	return (DeleteProperty(client, pWin, propName));
 
     prevProp = (PropertyPtr)NULL;
     while (pProp)
     {
         if (pProp->propertyName == propName)
         {
-    	    tsolprop = (TsolPropPtr)(pProp->secPrivate);
+	    tsolpropP = TsolPropertyPriv(pProp);
+	    tsolprop = *tsolpropP;
             /* Found a matching name. Further match for SL,UID */
             prevtsolprop = (TsolPropPtr)NULL;
             tail_prop = tsolprop;
@@ -1189,8 +1179,8 @@
         pProp = pProp->next;
     }
 
-    if (pProp) 
-    {		    
+    if (pProp)
+    {
         event.u.u.type = PropertyNotify;
         event.u.property.window = pWin->drawable.id;
         event.u.property.state = PropertyDelete;
@@ -1200,8 +1190,9 @@
 
         if (tsolprop)
         {
-	    if ((TsolPropPtr)(pProp->secPrivate) == tsolprop)
-		pProp->secPrivate = (pointer)(tsolprop->next);
+	    tsolpropP = TsolPropertyPriv(pProp);
+	    if (*tsolpropP == tsolprop)
+		*tsolpropP = tsolprop->next;
 
             if (prevtsolprop)
             {
@@ -1216,106 +1207,95 @@
 }
 
 int
-ProcTsolListProperties(client)
-    ClientPtr client;
+ProcTsolListProperties(ClientPtr client)
 {
     Atom *pAtoms, *temppAtoms;
     xListPropertiesReply xlpr;
-    int	numProps = 0;
+    int	rc, numProps = 0;
     WindowPtr pWin;
     PropertyPtr pProp;
     REQUEST(xResourceReq);
-    int err_code;
 
     REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-					   SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
+    rc = dixLookupWindow(&pWin, stuff->id, client, DixListPropAccess);
+    if (rc != Success)
+        return rc;
 
     /* policy check for window  */
-    if (err_code = xtsol_policy(TSOL_RES_PROPWIN, TSOL_READ, pWin,
+    if (rc = xtsol_policy(TSOL_RES_PROPWIN, TSOL_READ, pWin,
                                 client, TSOL_ALL, (void *)MAJOROP))
     {
         client->errorValue = stuff->id;
-        return (err_code);
+        return (rc);
     }
 
-    pProp = wUserProps (pWin);
-    while (pProp)
-    {        
+    for (pProp = wUserProps(pWin); pProp; pProp = pProp->next)
+	numProps++;
+
+    if (numProps && !(pAtoms = (Atom *)xalloc(numProps * sizeof(Atom))))
+        return BadAlloc;
+
+    numProps = 0;
+    temppAtoms = pAtoms;
+    for (pProp = wUserProps(pWin); pProp; pProp = pProp->next)
+    {
         if (PolyProperty(pProp->propertyName, pWin))
         {
-            if (PolyPropReadable(pProp, client))
-                numProps++;
+            if (PolyPropReadable(pProp, client)) {
+                *temppAtoms++ = pProp->propertyName;
+		numProps++;
+	    }
         }
         else
         {
             /* error ignored */
             if (!xtsol_policy(TSOL_RES_PROPERTY, TSOL_READ, pProp,
-                              client, TSOL_ALL, (void *)MAJOROP))
-                numProps++;
+                              client, TSOL_ALL, (void *)MAJOROP)) {
+                *temppAtoms++ = pProp->propertyName;
+		numProps++;
+	    }
         }
-        pProp = pProp->next;
     }
 
-    if (numProps)
-        if(!(pAtoms = (Atom *)ALLOCATE_LOCAL(numProps * sizeof(Atom))))
-            return(BadAlloc);
-
     xlpr.type = X_Reply;
     xlpr.nProperties = numProps;
     xlpr.length = (numProps * sizeof(Atom)) >> 2;
     xlpr.sequenceNumber = client->sequence;
-    pProp = wUserProps (pWin);
-    temppAtoms = pAtoms;
-    while (pProp)
-    {
-        if (PolyProperty(pProp->propertyName, pWin))
-        {
-            if (PolyPropReadable(pProp, client))
-                *temppAtoms++ = pProp->propertyName;
-        }
-        else
-        {
-            /* error ignored */
-            if (!xtsol_policy(TSOL_RES_PROPERTY, TSOL_READ, pProp,
-                              client, TSOL_ALL, (void *)MAJOROP))
-                *temppAtoms++ = pProp->propertyName;
-        }
-	pProp = pProp->next;
-    }
     WriteReplyToClient(client, sizeof(xGenericReply), &xlpr);
     if (numProps)
     {
     	client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
         WriteSwappedDataToClient(client, numProps * sizeof(Atom), pAtoms);
-        DEALLOCATE_LOCAL(pAtoms);
     }
+    xfree(pAtoms);
     return(client->noClientException);
 }
 
 int
-ProcTsolGetProperty(client)
-    ClientPtr client;
+ProcTsolGetProperty(ClientPtr client)
 {
     PropertyPtr pProp, prevProp;
     unsigned long n, len, ind;
+    int rc;
     WindowPtr pWin;
     xGetPropertyReply reply;
+    Mask win_mode = DixGetPropAccess, prop_mode = DixReadAccess;
+
     TsolPropPtr tsolprop;
     TsolPropPtr prevtsolprop;
-    int err_code;
     TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
+
     REQUEST(xGetPropertyReq);
 
     REQUEST_SIZE_MATCH(xGetPropertyReq);
-    if (stuff->delete)
-	UpdateCurrentTime();
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-					   SecurityReadAccess);
-    if (!pWin)
-	return BadWindow;
+    if (stuff->delete) {
+        UpdateCurrentTime();
+        win_mode |= DixSetPropAccess;
+        prop_mode |= DixDestroyAccess;
+    }
+    rc = dixLookupWindow(&pWin, stuff->window, client, win_mode);
+    if (rc != Success)
+        return rc;
 
     if (!ValidAtom(stuff->property))
     {
@@ -1336,11 +1316,11 @@
 
 
     /* policy check for window  */
-    if (err_code = xtsol_policy(TSOL_RES_PROPWIN, TSOL_READ, pWin,
-                                client, TSOL_ALL, (void *)MAJOROP))
+    if (rc = xtsol_policy(TSOL_RES_PROPWIN, TSOL_READ, pWin,
+			  client, TSOL_ALL, (void *)MAJOROP))
     {
         client->errorValue = stuff->window;
-        return (err_code);
+        return (rc);
     }
 
     if (!PolyProperty(stuff->property, pWin))
@@ -1355,7 +1335,7 @@
     {
         if (pProp->propertyName == stuff->property)
 	{
-            tsolprop = (TsolPropPtr)(pProp->secPrivate);
+            tsolprop = *(TsolPropertyPriv(pProp));
 	    prevtsolprop = tsolprop;
             while (tsolprop)
             {
@@ -1383,7 +1363,7 @@
     reply.type = X_Reply;
     reply.sequenceNumber = client->sequence;
 
-    if ( (!pProp) || (!tsolprop) || err_code)
+    if ( (!pProp) || (!tsolprop) || rc)
     {
         reply.nItems = 0;
         reply.length = 0;
@@ -1412,9 +1392,9 @@
 	/*
          *  Return type, format, value to client
          */
-        n = (pProp->format/8) * tsolprop->size; 
-
-	ind = stuff->longOffset << 2;        
+        n = (pProp->format/8) * tsolprop->size;
+
+	ind = stuff->longOffset << 2;
 
         /* If longOffset is invalid such that it causes "len" to
            be negative, it's a value error. */
@@ -1439,7 +1419,7 @@
                            client, TSOL_ALL, (void *)MAJOROP)))
         { /* send the event */
 	    xEvent event;
-		
+
 	    event.u.u.type = PropertyNotify;
 	    event.u.property.window = pWin->drawable.id;
 	    event.u.property.state = PropertyDelete;
@@ -1481,124 +1461,98 @@
     return (client->noClientException);
 }
 
-int
-ProcTsolChangeKeyboardMapping(client)
-    ClientPtr client;
+/* Generic ProcVector wrapper for functions which just need to set the
+   client's TrustLevel to Trusted before executing. */
+static inline int
+ProcTsolUnwrapWithTrust(ClientPtr client, int majorop)
+{
+    int result, savedtrust;
+
+    savedtrust = setClientTrustLevel(client, XSecurityClientTrusted);
+    result = (*TsolSavedProcVector[majorop])(client);
+    setClientTrustLevel(client, savedtrust);
+
+    return result;
+}
+
+/* Generic ProcVector wrapper for functions which need to check
+   a policy before executing.   If policy check fails, and reportErrors
+   is False, ignores error and returns success to client even though it's
+   not actually doing anything.  If policy check succeeds, and makeTrusted
+   is True, set the clients TrustLevel before calling the wrapped function.
+*/
+#define IGNORE_ERRORS FALSE
+#define REPORT_ERRORS TRUE
+#define KEEP_TRUSTLEVEL FALSE
+#define RAISE_TRUSTLEVEL TRUE
+
+static inline int
+ProcTsolUnwrapResourceAccess(ClientPtr client, xresource_t res_type,
+			     xmethod_t method, XID resource,
+			     Bool reportErrors, Bool makeTrusted)
 {
     int status;
-    int savedtrust = client->trustLevel;
-
-    client->trustLevel = XSecurityClientTrusted;
-
-    if (xtsol_policy(TSOL_RES_KEYMAP, TSOL_MODIFY, 
-	NULL, client, TSOL_ALL, (void *)MAJOROP))
+
+    status = xtsol_policy(res_type, method, (void *) resource, client,
+			  TSOL_ALL, (void *)MAJOROP);
+
+    if (status != PASSED)
     {
-	status = client->noClientException; /* ignore error */
+	if (!reportErrors) {
+	    status = client->noClientException; /* ignore error */
+	} else if (resource != NULL) {
+	    client->errorValue = resource;
+        }
+    }
+    else if (makeTrusted)
+    {
+	status = ProcTsolUnwrapWithTrust(client, MAJOROP);
     }
     else
     {
-	status = (*TsolSavedProcVector[X_ChangeKeyboardMapping])(client);
+	status = (*TsolSavedProcVector[MAJOROP])(client);
     }
 
-    client->trustLevel = savedtrust;
-    return (status);
-}
-
-int
-ProcTsolSetPointerMapping(client)
-    ClientPtr client;
-{
-    int status;
-    int savedtrust = client->trustLevel;
-
-    client->trustLevel = XSecurityClientTrusted;
-
-    if (xtsol_policy(TSOL_RES_PTRMAP, TSOL_MODIFY, 
-	NULL, client, TSOL_ALL, (void *)MAJOROP))
-    {
-	status = Success; /* ignore error */
-    }
-    else
-    {
-	status = (*TsolSavedProcVector[X_SetPointerMapping])(client);
-    }
-
-    client->trustLevel = savedtrust;
     return (status);
 }
 
 int
-ProcTsolChangeKeyboardControl(client)
-    ClientPtr client;
+ProcTsolChangeKeyboardMapping(ClientPtr client)
 {
-    int status;
-    int savedtrust = client->trustLevel;
-
-    client->trustLevel = XSecurityClientTrusted;
-
-    if (xtsol_policy(TSOL_RES_KBDCTL, TSOL_MODIFY, 
-	NULL, client, TSOL_ALL, (void *)MAJOROP))
-    {
-	status = Success; /* ignore error */
-    }
-    else
-    {
-	status = (*TsolSavedProcVector[X_ChangeKeyboardControl])(client);
-    }
-
-    client->trustLevel = savedtrust;
-    return (status);
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_KEYMAP, TSOL_MODIFY,
+					NULL, IGNORE_ERRORS, RAISE_TRUSTLEVEL);
+}
+
+int
+ProcTsolSetPointerMapping(ClientPtr client)
+{
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_PTRMAP, TSOL_MODIFY,
+					NULL, IGNORE_ERRORS, RAISE_TRUSTLEVEL);
 }
 
 int
-ProcTsolBell(client)
-    ClientPtr client;
+ProcTsolChangeKeyboardControl(ClientPtr client)
 {
-    int status;
-    int savedtrust = client->trustLevel;
-
-    client->trustLevel = XSecurityClientTrusted;
-
-    if (xtsol_policy(TSOL_RES_BELL, TSOL_MODIFY, 
-	NULL, client, TSOL_ALL, (void *)MAJOROP))
-    {
-	status = Success; /* ignore error */
-    }
-    else
-    {
-	status = (*TsolSavedProcVector[X_Bell])(client);
-    }
-
-    client->trustLevel = savedtrust;
-    return (status);
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_KBDCTL, TSOL_MODIFY,
+					NULL, IGNORE_ERRORS, RAISE_TRUSTLEVEL);
 }
 
 int
-ProcTsolChangePointerControl(client)
-    ClientPtr client;
+ProcTsolBell(ClientPtr client)
 {
-    int status;
-    int savedtrust = client->trustLevel;
-
-    client->trustLevel = XSecurityClientTrusted;
-
-    if (xtsol_policy(TSOL_RES_PTRCTL, TSOL_MODIFY, 
-	NULL, client, TSOL_ALL, (void *)MAJOROP))
-    {
-	status = Success; /* ignore error */
-    }
-    else
-    {
-	status = (*TsolSavedProcVector[X_ChangePointerControl])(client);
-    }
-
-    client->trustLevel = savedtrust;
-    return (status);
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_BELL, TSOL_MODIFY,
+					NULL, IGNORE_ERRORS, RAISE_TRUSTLEVEL);
 }
 
-int 
-ProcTsolSetModifierMapping(client)
-    ClientPtr client;
+int
+ProcTsolChangePointerControl(ClientPtr client)
+{
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_PTRCTL, TSOL_MODIFY,
+					NULL, IGNORE_ERRORS, RAISE_TRUSTLEVEL);
+}
+
+int
+ProcTsolSetModifierMapping(ClientPtr client)
 {
 
     xSetModifierMappingReply rep;
@@ -1607,17 +1561,16 @@
     int inputMapLen;
     register int i;
     int status;
-    DeviceIntPtr keybd = inputInfo.keyboard;
-    register KeyClassPtr keyc = keybd->key;
-    int savedtrust = client->trustLevel;
-    
+    DeviceIntPtr pDev = NULL;
+    int savedtrust;
+
     REQUEST_AT_LEAST_SIZE(xSetModifierMappingReq);
 
     if (client->req_len != ((stuff->numKeyPerModifier<<1) +
 			    (sizeof (xSetModifierMappingReq)>>2)))
 	return BadLength;
 
-    inputMapLen = 8*stuff->numKeyPerModifier;
+    inputMapLen = 8 * stuff->numKeyPerModifier;
     inputMap = (KeyCode *)&stuff[1];
 
     /*
@@ -1625,15 +1578,18 @@
      *	in the range specified by min-keycode and max-keycode in the
      *	connection setup (else a Value error)"
      */
-    i = inputMapLen;
-    while (i--)
-    {
-	if (inputMap[i]
-	    && (inputMap[i] < keyc->curKeySyms.minKeyCode
-		|| inputMap[i] > keyc->curKeySyms.maxKeyCode))
-	{
-	    client->errorValue = inputMap[i];
-	    return BadValue;
+    for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
+	if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->key) {
+	    for (i = 0; i < inputMapLen; i++) {
+		/* Check that all the new modifiers fall within the advertised
+		 * keycode range, and are okay with the DDX. */
+		if (inputMap[i] && ((inputMap[i] < pDev->key->curKeySyms.minKeyCode ||
+				     inputMap[i] > pDev->key->curKeySyms.maxKeyCode) ||
+				    !LegalModifier(inputMap[i], pDev))) {
+		    client->errorValue = inputMap[i];
+		    return BadValue;
+		}
+	    }
 	}
     }
 
@@ -1642,26 +1598,27 @@
     rep.sequenceNumber = client->sequence;
     rep.success = MappingSuccess;
 
-    client->trustLevel = XSecurityClientTrusted;
-
-    if (xtsol_policy(TSOL_RES_MODMAP, TSOL_MODIFY, 
+    savedtrust = setClientTrustLevel(client, XSecurityClientTrusted);
+
+
+    if (xtsol_policy(TSOL_RES_MODMAP, TSOL_MODIFY,
 	NULL, client, TSOL_ALL, (void *)MAJOROP))
     {
-	/* 
-	 * silently ignore the request. xview apps 
+	/*
+	 * silently ignore the request. xview apps
 	 * complain if we return error code. If we don't
 	 * send the map notify event application hangs
 	 */
-         SendMappingNotify(MappingModifier, 0, 0,client);
-	 WriteReplyToClient(client, sizeof(xSetModifierMappingReply), &rep);
-	 status = client->noClientException;
+	SendMappingNotify(MappingModifier, 0, 0, client);
+	WriteReplyToClient(client, sizeof(xSetModifierMappingReply), &rep);
+	status = client->noClientException;
     }
     else
     {
 	status = (*TsolSavedProcVector[X_SetModifierMapping])(client);
     }
 
-    client->trustLevel = savedtrust;
+    setClientTrustLevel(client, savedtrust);
     return (status);
 }
 
@@ -1671,10 +1628,9 @@
     WindowPtr pParent;
     WindowPtr pWin = NULL;
 
-#if defined(PANORAMIX) 
+#if defined(PANORAMIX)
     if (!noPanoramiXExtension)
     {
-#if defined(IN_MODULE)
 	PanoramiXRes     *panres = NULL;
 	int         j;
 
@@ -1700,33 +1656,6 @@
 
 	    ReflectStackChange(pWin, pParent->firstChild, VTStack);
     	}
-#else
-	PanoramiXWindow     *pPanoramiXWin = PanoramiXWinRoot;
-	int         j;
-
-	if (tpwin) {
-            PANORAMIXFIND_ID(pPanoramiXWin, tpwin->drawable.id);
-	    if (pPanoramiXWin == NULL)
-		return;
-	}
-
-	FOR_NSCREENS_OR_ONCE(pPanoramiXWin, j)
-	{
-	    if (pPanoramiXWin == NULL)
-		return;
-	    /* Validate trusted stripe window */
-	    pWin = LookupWindow(pPanoramiXWin->info[j].id, client);
-
-	    if (tpwin == NullWindow || pWin == NullWindow)
-		return;
-
-	    pParent = pWin->parent;
-    	    if (!pParent || pParent->firstChild == pWin)
-		return;
-
-	    ReflectStackChange(pWin, pParent->firstChild, VTStack);
-    	}
-#endif
     } else
 #endif
     {
@@ -1747,10 +1676,9 @@
 }
 
 int
-ProcTsolCreateWindow(client)
-    ClientPtr client;
+ProcTsolCreateWindow(ClientPtr client)
 {
-    int result;
+    int rc;
     WindowPtr pParent;
     WindowPtr pWin;
     bslabel_t admin_low;
@@ -1760,21 +1688,20 @@
     REQUEST(xCreateWindowReq);
 
     REQUEST_AT_LEAST_SIZE(xCreateWindowReq);
-    
+
     LEGAL_NEW_RESOURCE(stuff->wid, client);
-    if (!(pParent = (WindowPtr)SecurityLookupWindow(stuff->parent, client,
-						    SecurityWriteAccess)))
-        return BadWindow;
-
-
-    if (result = xtsol_policy(TSOL_RES_WINDOW, TSOL_CREATE, pParent,
-		client, TSOL_ALL, (void *)MAJOROP))
-	return (result);
+    rc = dixLookupWindow(&pParent, stuff->parent, client, DixAddAccess);
+    if (rc != Success)
+        return rc;
+
+    if (rc = xtsol_policy(TSOL_RES_WINDOW, TSOL_CREATE, pParent,
+			  client, TSOL_ALL, (void *)MAJOROP))
+	return rc;
 
     /* Initialize tsol security attributes */
-    result = (*TsolSavedProcVector[X_CreateWindow])(client);
+    rc = (*TsolSavedProcVector[X_CreateWindow])(client);
     pWin = pParent->firstChild;
-    tsolres = (TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+    tsolres = TsolWindowPriv(pWin);
 
     /* stuff tsol info into window from client */
     if (tsolinfo == NULL || client == serverClient) {
@@ -1796,88 +1723,83 @@
 
     ResetStripeWindow(client);
 
-    return result;
+    return rc;
 }
 
 int
-ProcTsolChangeWindowAttributes(client)
-    register ClientPtr client;
+ProcTsolChangeWindowAttributes(ClientPtr client)
 {
-    register WindowPtr pWin;
+    WindowPtr pWin;
     REQUEST(xChangeWindowAttributesReq);
-    int result;
+    int rc;
+    Mask access_mode = 0;
 
     REQUEST_AT_LEAST_SIZE(xChangeWindowAttributesReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-					   SecurityWriteAccess);
-    if (!pWin)
-        return(BadWindow);
-
-    if (result = xtsol_policy(TSOL_RES_WINDOW, TSOL_MODIFY, pWin,
+    access_mode |= (stuff->valueMask & CWEventMask) ? DixReceiveAccess : 0;
+    access_mode |= (stuff->valueMask & ~CWEventMask) ? DixSetAttrAccess : 0;
+    rc = dixLookupWindow(&pWin, stuff->window, client, access_mode);
+    if (rc != Success)
+        return rc;
+
+    if (rc = xtsol_policy(TSOL_RES_WINDOW, TSOL_MODIFY, pWin,
     	client, TSOL_ALL, (void *)MAJOROP))
     {
         if (!WindowIsRoot(pWin))
-            return (result);
+            return (rc);
     }
 
-    result = (*TsolSavedProcVector[X_ChangeWindowAttributes])(client);
+    rc = (*TsolSavedProcVector[X_ChangeWindowAttributes])(client);
+    ResetStripeWindow(client);
+
+    return rc;
+}
+
+/* Generic ProcVector wrapper for functions which just need to have
+   ResetStripeWindow called after executing. */
+static inline int
+ProcTsolUnwrapAndResetStripe(ClientPtr client, int majorop)
+{
+    int result;
+
+    result = (*TsolSavedProcVector[majorop])(client);
     ResetStripeWindow(client);
 
     return result;
 }
 
 int
-ProcTsolConfigureWindow(client)
-    register ClientPtr client;
+ProcTsolConfigureWindow(ClientPtr client)
 {
-    int result;
-
-    result = (*TsolSavedProcVector[X_ConfigureWindow])(client);
-    ResetStripeWindow(client);
-
-    return result;
+    return ProcTsolUnwrapAndResetStripe(client, X_ConfigureWindow);
 }
 
 int
-ProcTsolCirculateWindow(client)
-    register ClientPtr client;
+ProcTsolCirculateWindow(ClientPtr client)
 {
-    int result;
-
-    result = (*TsolSavedProcVector[X_CirculateWindow])(client);
-    ResetStripeWindow(client);
-
-    return result;
+    return ProcTsolUnwrapAndResetStripe(client, X_CirculateWindow);
 }
 
 int
-ProcTsolReparentWindow(client)
-    register ClientPtr client;
+ProcTsolReparentWindow(ClientPtr client)
 {
-    int result;
-
-    result = (*TsolSavedProcVector[X_ReparentWindow])(client);
-    ResetStripeWindow(client);
-
-    return result;
+    return ProcTsolUnwrapAndResetStripe(client, X_ReparentWindow);
 }
 
 int
-ProcTsolSendEvent(client)
-    register ClientPtr client;
+ProcTsolSendEvent(ClientPtr client)
 {
     WindowPtr pWin;
     REQUEST(xSendEventReq);
 
     REQUEST_SIZE_MATCH(xSendEventReq);
 
-    pWin = LookupWindow(stuff->destination, client);
+    dixLookupWindow(&pWin, stuff->destination, client, DixSendAccess);
 
     if (!pWin)
 	return BadWindow;
 
     if (xtsol_policy(TSOL_RES_EVENTWIN, TSOL_MODIFY,
-		pWin, client, TSOL_ALL, (void *)MAJOROP))
+		     pWin, client, TSOL_ALL, (void *)MAJOROP))
 	return Success; /* ignore error */
 
     return (*TsolSavedProcVector[X_SendEvent])(client);
@@ -1885,14 +1807,14 @@
 
 
 /*
- * HandleHotKey - 
+ * HandleHotKey -
  * HotKey is Meta(Diamond)+ Stop Key
  * Breaks untusted Ptr and Kbd grabs.
- * Trusted Grabs are NOT broken 
+ * Trusted Grabs are NOT broken
  * Warps pointer to the Trusted Stripe if not Trusted grabs in force.
  */
 void
-HandleHotKey()
+HandleHotKey(void)
 {
     extern unsigned int StripeHeight;
     int	            x, y;
@@ -1900,7 +1822,7 @@
     ClientPtr       client;
     DeviceIntPtr    mouse = inputInfo.pointer;
     DeviceIntPtr    keybd = inputInfo.keyboard;
-    TsolInfoPtr	    tsolinfo;    
+    TsolInfoPtr	    tsolinfo;
     GrabPtr         ptrgrab = mouse->grab;
     GrabPtr         kbdgrab = keybd->grab;
     ScreenPtr       pScreen;
@@ -1946,9 +1868,9 @@
 }
 
 int
-ProcTsolSetInputFocus(client)
-    ClientPtr client;
+ProcTsolSetInputFocus(ClientPtr client)
 {
+    int rc;
 
     REQUEST(xSetInputFocusReq);
 
@@ -1956,11 +1878,12 @@
 
     if (stuff->focus != None)
     {
-        WindowPtr focuswin;
-
-	focuswin = LookupWindow(stuff->focus, client);
-	if ((focuswin != NullWindow) &&
-	    xtsol_policy(TSOL_RES_FOCUSWIN, TSOL_MODIFY, focuswin,
+        WindowPtr focusWin;
+
+	rc = dixLookupWindow(&focusWin, stuff->focus,
+			     client, DixSetAttrAccess);
+	if ((rc == Success) && (focusWin != NullWindow) &&
+	    xtsol_policy(TSOL_RES_FOCUSWIN, TSOL_MODIFY, focusWin,
 		client, TSOL_ALL, (void *)MAJOROP))
 	{
 	    return (client->noClientException);
@@ -1970,15 +1893,20 @@
 }
 
 int
-ProcTsolGetInputFocus(client)
-    ClientPtr client;
+ProcTsolGetInputFocus(ClientPtr client)
 {
     xGetInputFocusReply rep;
     REQUEST(xReq);
     FocusClassPtr focus = inputInfo.keyboard->focus;
+    int rc;
 
     REQUEST_SIZE_MATCH(xReq);
 
+    rc = XaceHook(XACE_DEVICE_ACCESS, client, inputInfo.keyboard,
+                  DixGetFocusAccess);
+    if (rc != Success)
+        return rc;
+
     rep.type = X_Reply;
     rep.length = 0;
     rep.sequenceNumber = client->sequence;
@@ -1996,8 +1924,7 @@
 }
 
 void
-PrintSiblings(p1)
-    WindowPtr p1;
+PrintSiblings(WindowPtr p1)
 {
     WindowPtr p2;
 
@@ -2006,7 +1933,7 @@
     p2 = p1->parent->firstChild;
     while (p2)
     {
-	ErrorF( "(%x, %d, %d, %x)\n", p2, p2->drawable.width, 
+	ErrorF( "(%x, %d, %d, %x)\n", p2, p2->drawable.width,
 	    p2->drawable.height, p2->prevSib);
 	p2 = p2->nextSib;
     }
@@ -2018,7 +1945,7 @@
  * Sibling has a bad parent
  */
 int
-CheckTPWin()
+CheckTPWin(void)
 {
 	WindowPtr pWin;
 	int count = 1;
@@ -2037,8 +1964,7 @@
 /* NEW */
 
 int
-ProcTsolGetGeometry(client)
-    register ClientPtr client;
+ProcTsolGetGeometry(ClientPtr client)
 {
     xGetGeometryReply rep;
     int status;
@@ -2060,7 +1986,7 @@
         WriteReplyToClient(client, sizeof(xGetGeometryReply), &rep);
         return(client->noClientException);
 
-    } else 
+    } else
     {
         status = (*TsolSavedProcVector[X_GetGeometry])(client);
         return (status);
@@ -2068,8 +1994,7 @@
 }
 
 int
-ProcTsolGrabServer(client)
-    register ClientPtr client;
+ProcTsolGrabServer(ClientPtr client)
 {
     TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
@@ -2090,8 +2015,7 @@
 }
 
 int
-ProcTsolUngrabServer(client)
-    register ClientPtr client;
+ProcTsolUngrabServer(ClientPtr client)
 {
     TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
@@ -2112,8 +2036,7 @@
 }
 
 int
-ProcTsolCreatePixmap(client)
-    register ClientPtr client;
+ProcTsolCreatePixmap(ClientPtr client)
 {
     PixmapPtr pMap;
     int result;
@@ -2125,13 +2048,12 @@
     result = (*TsolSavedProcVector[X_CreatePixmap])(client);
 
     pMap = (PixmapPtr)SecurityLookupIDByType(client, stuff->pid, RT_PIXMAP,
-					     SecurityDestroyAccess);
-    if (pMap) 
+					     DixDestroyAccess);
+    if (pMap)
     {
 	/* Initialize security info */
         TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
-        TsolResPtr tsolres =
-            (TsolResPtr)(pMap->devPrivates[tsolPixmapPrivateIndex].ptr);
+        TsolResPtr tsolres = TsolPixmapPriv(pMap);
 
         if (tsolinfo == NULL || client == serverClient)
 	{
@@ -2149,98 +2071,53 @@
 
     return result;
 }
+
 int
-ProcTsolSetScreenSaver(client)
-    register ClientPtr client;
+ProcTsolSetScreenSaver(ClientPtr client)
 {
     int result;
 
     REQUEST(xSetScreenSaverReq);
-
     REQUEST_SIZE_MATCH(xSetScreenSaverReq);
 
-    if (result = xtsol_policy(TSOL_RES_SCRSAVER, TSOL_MODIFY, NULL,
-             client, TSOL_ALL, (void *)MAJOROP))
-        return (result);
-
-    return (*TsolSavedProcVector[X_SetScreenSaver])(client);
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_SCRSAVER, TSOL_MODIFY,
+					NULL, REPORT_ERRORS, KEEP_TRUSTLEVEL);
 }
 
 int
-ProcTsolChangeHosts(client)
-    register ClientPtr client;
+ProcTsolChangeHosts(ClientPtr client)
 {
-    int result;
-    int savedtrust = client->trustLevel;
-
-    REQUEST(xChangeHostsReq);
-
-    REQUEST_FIXED_SIZE(xChangeHostsReq, stuff->hostLength);
-
-    if (result = xtsol_policy(TSOL_RES_ACL, TSOL_MODIFY, NULL,
-             client, TSOL_ALL, (void *)MAJOROP))
-        return (result);
-
-    client->trustLevel = XSecurityClientTrusted;
-    result = (*TsolSavedProcVector[X_ChangeHosts])(client);
-    client->trustLevel = savedtrust;
-
-    return (result);
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_ACL, TSOL_MODIFY,
+					NULL, REPORT_ERRORS, RAISE_TRUSTLEVEL);
 }
 
 int
-ProcTsolChangeAccessControl(client)
-    register ClientPtr client;
+ProcTsolChangeAccessControl(ClientPtr client)
 {
-    int result;
-    int savedtrust = client->trustLevel;
-
     REQUEST(xSetAccessControlReq);
-
     REQUEST_SIZE_MATCH(xSetAccessControlReq);
 
-    if (result = xtsol_policy(TSOL_RES_ACL, TSOL_MODIFY,
-		(void *)stuff->mode, client, TSOL_ALL, (void *)MAJOROP))
-    {
-        client->errorValue = stuff->mode;
-        return (result);
-    }
-
-    client->trustLevel = XSecurityClientTrusted;
-    result = (*TsolSavedProcVector[X_SetAccessControl])(client);
-    client->trustLevel = savedtrust;
-
-    return (result);
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_ACL, TSOL_MODIFY,
+				stuff->mode, REPORT_ERRORS, RAISE_TRUSTLEVEL);
 }
 
 int
-ProcTsolKillClient(client)
-    register ClientPtr client;
+ProcTsolKillClient(ClientPtr client)
 {
-    int result;
-
     REQUEST(xResourceReq);
-
     REQUEST_SIZE_MATCH(xResourceReq);
 
-    if (result = xtsol_policy(TSOL_RES_CLIENT, TSOL_DESTROY,
-		(void *)stuff->id, client, TSOL_ALL, (void *)MAJOROP))
-    {
-        client->errorValue = stuff->id;
-        return (result);
-    }
-
-    return (*TsolSavedProcVector[X_KillClient])(client);
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_CLIENT, TSOL_DESTROY,
+				stuff->id, REPORT_ERRORS, KEEP_TRUSTLEVEL);
 }
 
 int
-ProcTsolSetFontPath(client)
-    register ClientPtr client;
+ProcTsolSetFontPath(ClientPtr client)
 {
     REQUEST(xSetFontPathReq);
-    
+
     REQUEST_AT_LEAST_SIZE(xSetFontPathReq);
-    
+
     if (xtsol_policy(TSOL_RES_FONTPATH, TSOL_MODIFY, NULL,
                      client, TSOL_ALL, (void *)MAJOROP))
     {
@@ -2251,50 +2128,37 @@
 }
 
 int
-ProcTsolChangeCloseDownMode(client)
-    register ClientPtr client;
+ProcTsolChangeCloseDownMode(ClientPtr client)
 {
     REQUEST(xSetCloseDownModeReq);
-
     REQUEST_SIZE_MATCH(xSetCloseDownModeReq);
 
-    if (xtsol_policy(TSOL_RES_CLIENT, TSOL_MODIFY, NULL,
-		client, TSOL_ALL, (void *)MAJOROP))
-        return (client->noClientException); /* Ignore error */
-
-    return (*TsolSavedProcVector[X_SetCloseDownMode])(client);
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_CLIENT, TSOL_MODIFY,
+					NULL, IGNORE_ERRORS, KEEP_TRUSTLEVEL);
 }
 
-int ProcTsolForceScreenSaver(client)
-    register ClientPtr client;
-{    
-    int result;
-
+int
+ProcTsolForceScreenSaver(ClientPtr client)
+{
     REQUEST(xForceScreenSaverReq);
-
     REQUEST_SIZE_MATCH(xForceScreenSaverReq);
-    
-
-    if (result = xtsol_policy(TSOL_RES_SCRSAVER, TSOL_MODIFY, NULL,
-             client, TSOL_ALL, (void *)MAJOROP))
-        return (result);
-
-    return (*TsolSavedProcVector[X_ForceScreenSaver])(client);
+
+    return ProcTsolUnwrapResourceAccess(client, TSOL_RES_SCRSAVER, TSOL_MODIFY,
+					NULL, REPORT_ERRORS, KEEP_TRUSTLEVEL);
 }
 
 void
-TsolDeleteWindowFromAnySelections(pWin)
-    WindowPtr pWin;
+TsolDeleteWindowFromAnySelections(WindowPtr pWin)
 {
-    register int i;
+    Selection *pSel;
     TsolSelnPtr tsolseln = NULL;
     TsolSelnPtr prevtsolseln = NULL;
 
-    for (i = 0; i< NumCurrentSelections; i++)
+    for (pSel = CurrentSelections; pSel; pSel = pSel->next)
     {
-        if (PolySelection(CurrentSelections[i].selection))
+        if (PolySelection(pSel->selection))
         {
-            tsolseln = (TsolSelnPtr)CurrentSelections[i].secPrivate;
+            tsolseln = *(TsolSelectionPriv(pSel));
             prevtsolseln = tsolseln;
             while (tsolseln)
             {
@@ -2310,52 +2174,55 @@
 	        {
 		    SelectionInfoRec    info;
 
-		    info.selection = &CurrentSelections[i];
+		    info.selection = pSel;
 		    info.kind = SelectionClientClose;
 		    CallCallbacks(&SelectionCallback, &info);
 	        }
 
                 /* first on the list */
                 if (prevtsolseln == tsolseln)
-                    CurrentSelections[i].secPrivate = (pointer)tsolseln->next;
+                    *(TsolSelectionPriv(pSel))
+			= tsolseln->next;
                 else
                     prevtsolseln->next = tsolseln->next;
                 xfree(tsolseln);
 
 		/* handle the last reference */
-                if (CurrentSelections[i].secPrivate == NULL)
+                if (*(TsolSelectionPriv(pSel)) == NULL)
                 {
-                    CurrentSelections[i].pWin = (WindowPtr)NULL;
-                    CurrentSelections[i].window = None;
-                    CurrentSelections[i].client = NullClient;
+                    pSel->pWin = (WindowPtr)NULL;
+                    pSel->window = None;
+                    pSel->client = NullClient;
                 }
             }
         }
         else
         {
-            if (CurrentSelections[i].pWin == pWin)
+            if (pSel->pWin == pWin)
             {
-                CurrentSelections[i].pWin = (WindowPtr)NULL;
-                CurrentSelections[i].window = None;
-                CurrentSelections[i].client = NullClient;
+		SelectionInfoRec info = { pSel, NULL, SelectionWindowDestroy };
+		CallCallbacks(&SelectionCallback, &info);
+
+                pSel->pWin = (WindowPtr)NULL;
+                pSel->window = None;
+                pSel->client = NullClient;
             }
         }
    }
 }
 
 void
-TsolDeleteClientFromAnySelections(client)
-    ClientPtr client;
+TsolDeleteClientFromAnySelections(ClientPtr client)
 {
-    register int i;
+    Selection *pSel;
     TsolSelnPtr tsolseln = NULL;
     TsolSelnPtr prevtsolseln = NULL;
 
-    for (i = 0; i< NumCurrentSelections; i++)
+    for (pSel = CurrentSelections; pSel; pSel = pSel->next)
     {
-        if (PolySelection(CurrentSelections[i].selection))
+        if (PolySelection(pSel->selection))
         {
-            tsolseln = (TsolSelnPtr)CurrentSelections[i].secPrivate;
+            tsolseln = *(TsolSelectionPriv(pSel));
             prevtsolseln = tsolseln;
             while (tsolseln)
             {
@@ -2371,57 +2238,63 @@
 	        {
 		    SelectionInfoRec    info;
 
-		    info.selection = &CurrentSelections[i];
+		    info.selection = pSel;
 		    info.kind = SelectionClientClose;
 		    CallCallbacks(&SelectionCallback, &info);
 	        }
 
                 /* first on the list */
                 if (prevtsolseln == tsolseln)
-                    CurrentSelections[i].secPrivate = (pointer)tsolseln->next;
+                    *(TsolSelectionPriv(pSel))
+			= tsolseln->next;
                 else
                     prevtsolseln->next = tsolseln->next;
                 xfree(tsolseln);
 
 		/* handle the last reference */
-                if (CurrentSelections[i].secPrivate == NULL)
+                if (*(TsolSelectionPriv(pSel)) == NULL)
                 {
-                    CurrentSelections[i].pWin = (WindowPtr)NULL;
-                    CurrentSelections[i].window = None;
-                    CurrentSelections[i].client = NullClient;
+                    pSel->pWin = (WindowPtr)NULL;
+                    pSel->window = None;
+                    pSel->client = NullClient;
                 }
             }
         }
         else
         {
-            if (CurrentSelections[i].client == client)
+            if (pSel->client == client)
             {
-                CurrentSelections[i].pWin = (WindowPtr)NULL;
-                CurrentSelections[i].window = None;
-                CurrentSelections[i].client = NullClient;
+		SelectionInfoRec info = { pSel, NULL, SelectionClientClose };
+		CallCallbacks(&SelectionCallback, &info);
+
+                pSel->pWin = (WindowPtr)NULL;
+                pSel->window = None;
+                pSel->client = NullClient;
             }
         }
    }
 }
 
 int
-ProcTsolListInstalledColormaps(client)
-    register ClientPtr client;
+ProcTsolListInstalledColormaps(ClientPtr client)
 {
-    xListInstalledColormapsReply *preply; 
-    int nummaps;
+    xListInstalledColormapsReply *preply;
+    int nummaps, rc;
     WindowPtr pWin;
     REQUEST(xResourceReq);
-
     REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-					   SecurityReadAccess);
-
-    if (!pWin)
-        return(BadWindow);
-
-    preply = (xListInstalledColormapsReply *) 
-		ALLOCATE_LOCAL(sizeof(xListInstalledColormapsReply) +
+
+    rc = dixLookupWindow(&pWin, stuff->id, client, DixGetAttrAccess);
+    if (rc != Success)
+        return rc;
+
+    rc = XaceHook(XACE_SCREEN_ACCESS, client, pWin->drawable.pScreen,
+                  DixGetAttrAccess);
+    if (rc != Success)
+        return rc;
+
+    preply = (xListInstalledColormapsReply *)
+		xalloc(sizeof(xListInstalledColormapsReply) +
 		     pWin->drawable.pScreen->maxInstalledCmaps *
 		     sizeof(Colormap));
     if(!preply)
@@ -2440,7 +2313,7 @@
         ColormapPtr pcmp;
 
 	    /*
-         * check every colormap id for access. return default colormap
+	     * check every colormap id for access. return default colormap
 	     * id in case of failure
 	     */
         for (i = 0; i < nummaps; i++, pcmap++)
@@ -2457,23 +2330,18 @@
     WriteReplyToClient(client, sizeof (xListInstalledColormapsReply), preply);
     client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
     WriteSwappedDataToClient(client, nummaps * sizeof(Colormap), &preply[1]);
-    DEALLOCATE_LOCAL(preply);
+    xfree(preply);
     return(client->noClientException);
 }
 
 
 int
-ProcTsolQueryTree(client)
-    register ClientPtr client;
+ProcTsolQueryTree(ClientPtr client)
 {
     xQueryTreeReply reply;
-    int numChildren = 0;
-    register WindowPtr pChild, pWin, pHead;
+    int rc, numChildren = 0;
+    WindowPtr pChild, pWin, pHead;
     Window  *childIDs = (Window *)NULL;
-#if defined(PANORAMIX) && !defined(IN_MODULE)
-    PanoramiXWindow     *pPanoramiXWin = PanoramiXWinRoot;
-    int         j, thisScreen;
-#endif
 
 #ifdef TSOL
     TsolInfoPtr  tsolinfo = GetClientTsolInfo(client);
@@ -2482,10 +2350,9 @@
     REQUEST(xResourceReq);
 
     REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-					   SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
+    rc = dixLookupWindow(&pWin, stuff->id, client, DixListAccess);
+    if (rc != Success)
+        return rc;
 
 #ifdef TSOL
     if (xtsol_policy(TSOL_RES_WINDOW, TSOL_READ, pWin,
@@ -2510,91 +2377,13 @@
 	reply.parent = pWin->parent->drawable.id;
     else
         reply.parent = (Window)None;
-#if defined(SUNSOFT) && defined(PANORAMIX) && !defined(IN_MODULE)
-    if ( !noPanoramiXExtension ) {
-        thisScreen = 0;
-        for (j = 0; j <= PanoramiXNumScreens - 1; j++) {
-          if ( pWin->winSize.extents.x1 <  (panoramiXdataPtr[j].x  + 
-					    panoramiXdataPtr[j].width)) {
-             thisScreen = j;
-             break;
-          }
-        }
-    }
-    if ( !noPanoramiXExtension  && thisScreen ) {
-        PANORAMIXFIND_ID(pPanoramiXWin, pWin->drawable.id);
-        IF_RETURN(!pPanoramiXWin, BadWindow);
-        pWin = 
-	(WindowPtr)SecurityLookupWindow(pPanoramiXWin->info[thisScreen].id,
-		   client,
-                   SecurityReadAccess);
-        if (!pWin)
-            return(BadWindow);
-        pHead = RealChildHead(pWin);
-        for(pChild = pWin->lastChild;pChild != pHead; pChild = pChild->prevSib)
-             numChildren++;
-        if (numChildren)
-        {
-          int curChild = 0;
-          childIDs = (Window *) ALLOCATE_LOCAL(numChildren * sizeof(Window));
-          if (!childIDs)
-              return BadAlloc;
-          for (pChild = pWin->lastChild; pChild != pHead; 
-		                       pChild = pChild->prevSib) {
-              pPanoramiXWin = PanoramiXWinRoot;
-              PANORAMIXFIND_ID_BY_SCRNUM(pPanoramiXWin, pChild->drawable.id, 
-				         thisScreen);
-              IF_RETURN(!pPanoramiXWin, BadWindow);
-              childIDs[curChild++] = pPanoramiXWin->info[0].id;
-          }
-        } /* numChildren */
-    }else { /* otherwise its screen 0, and nothing changes */
-      pHead = RealChildHead(pWin);
-      for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib)
-#ifdef TSOL
-      {
-		/* error ignored */
-		if (!xtsol_policy(TSOL_RES_WINDOW, TSOL_READ, pChild,
-						  client, TSOL_ALL, (void *)MAJOROP))
-		{
-			numChildren++;
-		}
-      }
-#else /* !TSOL */
-	  numChildren++;
-#endif /* TSOL */
-      if (numChildren)
-      {
-        int curChild = 0;
-
-        childIDs = (Window *) ALLOCATE_LOCAL(numChildren * sizeof(Window));
-        if (!childIDs)
-            return BadAlloc;
-        for (pChild = pWin->lastChild; pChild != pHead; 
-			pChild = pChild->prevSib)
-#ifdef TSOL
-	{
-
-	    /* error ignored */
-	    if (!xtsol_policy(TSOL_RES_WINDOW, TSOL_READ, pChild,
-                          client, TSOL_ALL, (void *)MAJOROP))
-        {
-	        childIDs[curChild++] = pChild->drawable.id;
-        }
-	}
-#else /* !TSOL */
-	    childIDs[curChild++] = pChild->drawable.id;
-#endif /* TSOL */
-      }
-    }
-#else
     pHead = RealChildHead(pWin);
     for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib)
 #ifdef TSOL
     {
 		/* error ignored */
 		if (!xtsol_policy(TSOL_RES_WINDOW, TSOL_READ, pChild,
-						  client, TSOL_ALL, (void *)MAJOROP))
+				  client, TSOL_ALL, (void *)MAJOROP))
 		{
 			numChildren++;
 		}
@@ -2606,7 +2395,7 @@
     {
 	int curChild = 0;
 
-	childIDs = (Window *) ALLOCATE_LOCAL(numChildren * sizeof(Window));
+	childIDs = (Window *) xalloc(numChildren * sizeof(Window));
 	if (!childIDs)
 	    return BadAlloc;
 	for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib)
@@ -2616,33 +2405,35 @@
 	    /* error ignored */
 	    if (!xtsol_policy(TSOL_RES_WINDOW, TSOL_READ, pChild,
                           client, TSOL_ALL, (void *)MAJOROP))
-        {
+	    {
 	        childIDs[curChild++] = pChild->drawable.id;
-        }
+	    }
 	}
 #else /* !TSOL */
 	    childIDs[curChild++] = pChild->drawable.id;
 #endif /* TSOL */
     }
-#endif
-    
+
     reply.nChildren = numChildren;
     reply.length = (numChildren * sizeof(Window)) >> 2;
-    
+
     WriteReplyToClient(client, sizeof(xQueryTreeReply), &reply);
     if (numChildren)
     {
     	client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
 	WriteSwappedDataToClient(client, numChildren * sizeof(Window), childIDs);
-	DEALLOCATE_LOCAL(childIDs);
+	xfree(childIDs);
     }
 
     return(client->noClientException);
 }
 
-void
-TsolAuditStart(ClientPtr client)
+CALLBACK(
+TsolAuditStart)
 {
+    XaceAuditRec *rec = (XaceAuditRec *) calldata;
+    ClientPtr client = rec->client;
+
     extern Bool system_audit_on;
     unsigned int protocol;
     int xevent_num;
@@ -2650,15 +2441,14 @@
     int status = 0;
     Bool do_x_audit = FALSE;
     Bool audit_event = FALSE;
-    char audit_ret = (char)NULL;
     TsolInfoPtr tsolinfo = (TsolInfoPtr)NULL;
     tsolinfo = GetClientTsolInfo(client);
-    if (system_audit_on && 
+    if (system_audit_on &&
 	(tsolinfo->amask.am_success || tsolinfo->amask.am_failure)) {
 
 	do_x_audit = TRUE;
         auditwrite(AW_PRESELECT, &(tsolinfo->amask), AW_END);
-		
+
         /*
          * X audit events start from 9101 in audit_uevents.h. The first two
          * events are non-protocol ones viz. ClientConnect, mapped to 9101
@@ -2702,16 +2492,13 @@
     }
 }
 
-void
-TsolAuditEnd(ClientPtr client, int result)
+CALLBACK(
+TsolAuditEnd)
 {
-    extern Bool system_audit_on;
-    unsigned int protocol;
-    int xevent_num;
-    int count = 0;
-    int status = 0;
-    Bool do_x_audit = FALSE;
-    Bool audit_event = FALSE;
+    XaceAuditRec *rec = (XaceAuditRec *) calldata;
+    ClientPtr client = rec->client;
+    int result = rec->requestResult;
+
     char audit_ret = (char)NULL;
     TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
@@ -2735,18 +2522,21 @@
 }
 
 int
-ProcTsolQueryPointer(client)
-    ClientPtr client;
+ProcTsolQueryPointer(ClientPtr client)
 {
     xQueryPointerReply rep;
-    WindowPtr pWin, t, ptrWin;
-    REQUEST(xResourceReq);
+    WindowPtr pWin, ptrWin;
     DeviceIntPtr mouse = inputInfo.pointer;
-
+    int rc;
+    REQUEST(xResourceReq);
     REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = SecurityLookupWindow(stuff->id, client, SecurityReadAccess);
-    if (!pWin)
-	return BadWindow;
+
+    rc = dixLookupWindow(&pWin, stuff->id, client, DixGetAttrAccess);
+    if (rc != Success)
+	return rc;
+    rc = XaceHook(XACE_DEVICE_ACCESS, client, mouse, DixReadAccess);
+    if (rc != Success)
+	return rc;
 
     ptrWin = TsolPointerWindow();
     if (!xtsol_policy(TSOL_RES_WINDOW, TSOL_READ, ptrWin,
@@ -2769,118 +2559,47 @@
 
     WriteReplyToClient(client, sizeof(xQueryPointerReply), &rep);
 
-    return(Success);    
+    return(Success);
+}
+
+
+int
+ProcTsolQueryExtension(ClientPtr client)
+{
+    /* Allow extensions in the labeled zones */
+    return ProcTsolUnwrapWithTrust(client, X_QueryExtension);
 }
 
 int
-ProcTsolQueryExtension(client)
-    ClientPtr client;
+ProcTsolListExtensions(ClientPtr client)
 {
-    xQueryExtensionReply reply;
-    int savedtrust;
-    int status = client->noClientException;
-   
-    REQUEST(xQueryExtensionReq);
-
-    REQUEST_FIXED_SIZE(xQueryExtensionReq, stuff->nbytes);
-    
-    reply.type = X_Reply;
-    reply.length = 0;
-    reply.major_opcode = 0;
-    reply.sequenceNumber = client->sequence;
-
     /* Allow extensions in the labeled zones */
-    savedtrust = client->trustLevel;
-    client->trustLevel = XSecurityClientTrusted;
-
-    if (!TsolDisabledExtension((char *)&stuff[1],  stuff->nbytes)) {
-    	status = (*TsolSavedProcVector[X_QueryExtension])(client);
-    } else {
-	/* Hide this extension */
-        reply.present = xFalse;
-        WriteReplyToClient(client, sizeof(xQueryExtensionReply), &reply);
-        status = client->noClientException;
-    }
-
-    client->trustLevel = savedtrust;
-
-    return (status);
+    return ProcTsolUnwrapWithTrust(client, X_ListExtensions);
 }
 
 int
-ProcTsolListExtensions(client)
-    ClientPtr client;
+ProcTsolMapWindow(ClientPtr client)
 {
-    int savedtrust;
-    int status;
-
-    REQUEST(xReq);
-    REQUEST_SIZE_MATCH(xReq);
-
-    /* Allow extensions in the labeled zones */
-    savedtrust = client->trustLevel;
-    client->trustLevel = XSecurityClientTrusted;
-    status = (*TsolSavedProcVector[X_ListExtensions])(client);
-    client->trustLevel = savedtrust;
-
-    return (status);
+    return ProcTsolUnwrapWithTrust(client, X_MapWindow);
 }
 
 int
-ProcTsolMapWindow(register ClientPtr client)
+ProcTsolMapSubwindows(ClientPtr client)
 {
-    int savedtrust;
-    int status;
-
-    WindowPtr pWin;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-					   SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    savedtrust = client->trustLevel;
-    client->trustLevel = XSecurityClientTrusted;
-    status = (*TsolSavedProcVector[X_MapWindow])(client);
-    client->trustLevel = savedtrust;
-
-    return(status);
-}
-
-int
-ProcTsolMapSubwindows(register ClientPtr client)
-{
-    int savedtrust;
-    int status;
-
-    WindowPtr pWin;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client,
-					    SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    savedtrust = client->trustLevel;
-    client->trustLevel = XSecurityClientTrusted;
-    status = (*TsolSavedProcVector[X_MapSubwindows])(client);
-    client->trustLevel = savedtrust;
-
-    return(status);
+    return ProcTsolUnwrapWithTrust(client, X_MapSubwindows);
 }
 
 static int
-TsolDoGetImage(client, format, drawable, x, y, width, height, planemask, im_return)
-    register ClientPtr	client;
-    Drawable drawable;
-    int format;
-    int x, y, width, height;
-    Mask planemask;
-    xGetImageReply **im_return;
+TsolDoGetImage(
+    register ClientPtr	client,
+    Drawable drawable,
+    int format,
+    int x, int y, int width, int height,
+    Mask planemask,
+    xGetImageReply **im_return)
 {
-    register DrawablePtr pDraw;
-    int			nlines, linesPerBuf;
+    DrawablePtr 	pDraw;
+    int			nlines, linesPerBuf, rc;
     register int	linesDone;
     long		widthBytesLine, length;
     Mask		plane = 0;
@@ -2904,14 +2623,17 @@
 	client->errorValue = format;
         return(BadValue);
     }
-    SECURITY_VERIFY_DRAWABLE(pDraw, drawable, client, SecurityReadAccess);
+    rc = dixLookupDrawable(&pDraw, drawable, client, 0, DixReadAccess);
+    if (rc != Success)
+        return rc;
+
 
 #ifdef TSOL
-    if (!xtsol_policy(TSOL_RES_PIXEL, TSOL_READ, 
+    if (!xtsol_policy(TSOL_RES_PIXEL, TSOL_READ,
 	    pDraw, client, TSOL_ALL, (void *)MAJOROP) &&
 	(DrawableIsRoot(pDraw) || !tsolMultiLevel))
     {
-	return DoGetImage(client, format, drawable, x, y, 
+	return DoGetImage(client, format, drawable, x, y,
 		width, height, planemask, im_return);
     }
 
@@ -2969,8 +2691,7 @@
             box.y1 = pwinbox->y1;
             box.x2 = pwinbox->x2;
             box.y2 = box.y1;
-            tsolres_win =
-                (TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+            tsolres_win = TsolWindowPriv(pWin);
             root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id;
             pRoot = (WindowPtr)LookupIDByType(root, RT_WINDOW);
             pHead = pRoot->firstChild;
@@ -3014,8 +2735,6 @@
 	xgi.visual = None;
     }
 
-    SET_DBE_SRCBUF(pDraw, drawable);
-
     xgi.type = X_Reply;
     xgi.sequenceNumber = client->sequence;
     xgi.depth = pDraw->depth;
@@ -3025,7 +2744,7 @@
 	length = widthBytesLine * height;
 
     }
-    else 
+    else
     {
 	widthBytesLine = BitmapBytePad(width);
 	plane = ((Mask)1) << (pDraw->depth - 1);
@@ -3076,7 +2795,7 @@
 		length += widthBytesLine;
 	    }
 	}
-	if(!(pBuf = (char *) ALLOCATE_LOCAL(length)))
+	if(!(pBuf = (char *) xalloc(length)))
 	    return (BadAlloc);
 	WriteReplyToClient(client, sizeof (xGetImageReply), &xgi);
     }
@@ -3094,7 +2813,7 @@
 	    (*pDraw->pScreen->GetImage) (pDraw,
 	                                 x,
 				         y + linesDone,
-				         width, 
+				         width,
 				         nlines,
 				         format,
 				         planemask,
@@ -3152,7 +2871,7 @@
 	            (*pDraw->pScreen->GetImage) (pDraw,
 	                                         x,
 				                 y + linesDone,
-				                 width, 
+				                 width,
 				                 nlines,
 				                 format,
 				                 plane,
@@ -3201,18 +2920,15 @@
     }
 
     if (!im_return)
-	DEALLOCATE_LOCAL(pBuf);
+	xfree(pBuf);
     return (client->noClientException);
 }
 
 int
-ProcTsolGetImage(client)
-    register ClientPtr	client;
+ProcTsolGetImage(ClientPtr client)
 {
     int status;
-    int savedtrust = client->trustLevel;
-
-    client->trustLevel = XSecurityClientTrusted;
+    int savedtrust = setClientTrustLevel(client, XSecurityClientTrusted);
 
     REQUEST(xGetImageReq);
 
@@ -3223,13 +2939,12 @@
 		      (int)stuff->width, (int)stuff->height,
 		      stuff->planeMask, (xGetImageReply **)NULL);
 
-    client->trustLevel = savedtrust;
+    setClientTrustLevel(client, savedtrust);
     return (status);
 }
 
 int
-ProcTsolPolySegment(client)
-    register ClientPtr client;
+ProcTsolPolySegment(ClientPtr client)
 {
     int savedtrust;
     int status;
@@ -3239,10 +2954,9 @@
 
     REQUEST_AT_LEAST_SIZE(xPolySegmentReq);
 
-    savedtrust = client->trustLevel;
-    client->trustLevel = XSecurityClientTrusted;
-
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
+    savedtrust = setClientTrustLevel(client, XSecurityClientTrusted);
+
+    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess);
 
     if (xtsol_policy(TSOL_RES_PIXEL, TSOL_MODIFY, pDraw,
                      client, TSOL_ALL, (void *)MAJOROP))
@@ -3258,14 +2972,13 @@
     }
 
     status = (*TsolSavedProcVector[X_PolySegment])(client);
-    client->trustLevel = savedtrust;
+    setClientTrustLevel(client, savedtrust);
 
     return (status);
 }
 
 int
-ProcTsolPolyRectangle (client)
-    register ClientPtr client;
+ProcTsolPolyRectangle (ClientPtr client)
 {
     int savedtrust;
     int status;
@@ -3275,10 +2988,9 @@
     REQUEST(xPolyRectangleReq);
     REQUEST_AT_LEAST_SIZE(xPolyRectangleReq);
 
-    savedtrust = client->trustLevel;
-    client->trustLevel = XSecurityClientTrusted;
-
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
+    savedtrust = setClientTrustLevel(client, XSecurityClientTrusted);
+
+    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess);
 
     if (xtsol_policy(TSOL_RES_PIXEL, TSOL_MODIFY, pDraw,
                      client, TSOL_ALL, (void *)MAJOROP))
@@ -3294,33 +3006,35 @@
     }
 
     status = (*TsolSavedProcVector[X_PolyRectangle])(client);
-    client->trustLevel = savedtrust;
+    setClientTrustLevel(client, savedtrust);
 
     return (status);
 }
 
 int
-ProcTsolCopyArea (client)
-    register ClientPtr client;
+ProcTsolCopyArea (ClientPtr client)
 {
     int savedtrust;
     int status;
-    register DrawablePtr pDst;
-    register DrawablePtr pSrc;
-    register GC *pGC;
+    DrawablePtr pDst;
+    DrawablePtr pSrc;
+    GC *pGC;
+    int rc;
+
     REQUEST(xCopyAreaReq);
 
     REQUEST_SIZE_MATCH(xCopyAreaReq);
 
-    savedtrust = client->trustLevel;
-    client->trustLevel = XSecurityClientTrusted;
-
-    VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pDst, pGC, client);
+    savedtrust = setClientTrustLevel(client, XSecurityClientTrusted);
+
+    VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pDst, DixWriteAccess);
 
     if (stuff->dstDrawable != stuff->srcDrawable)
     {
-        SECURITY_VERIFY_DRAWABLE(pSrc, stuff->srcDrawable, client,
-                                 SecurityReadAccess);
+        rc = dixLookupDrawable(&pSrc, stuff->srcDrawable, client, 0,
+				 DixReadAccess);
+	if (rc != Success)
+	    return rc;
         if ((pDst->pScreen != pSrc->pScreen) || (pDst->depth != pSrc->depth))
         {
             client->errorValue = stuff->dstDrawable;
@@ -3330,8 +3044,6 @@
     else
         pSrc = pDst;
 
-    SET_DBE_SRCBUF(pSrc, stuff->srcDrawable);
-
     if (xtsol_policy(TSOL_RES_PIXEL, TSOL_READ, pSrc,
                      client, TSOL_ALL, (void *)MAJOROP))
     {
@@ -3352,33 +3064,34 @@
     }
 
     status = (*TsolSavedProcVector[X_CopyArea])(client);
-    client->trustLevel = savedtrust;
+    setClientTrustLevel(client, savedtrust);
 
     return (status);
 }
 
 int
-ProcTsolCopyPlane(client)
-    register ClientPtr client;
+ProcTsolCopyPlane(ClientPtr client)
 {
     int savedtrust;
     int status;
-    register DrawablePtr psrcDraw, pdstDraw;
-    register GC *pGC;
+    DrawablePtr psrcDraw, pdstDraw;
+    GC *pGC;
     REQUEST(xCopyPlaneReq);
-    RegionPtr pRgn;
+    int rc;
 
     REQUEST_SIZE_MATCH(xCopyPlaneReq);
 
-    savedtrust = client->trustLevel;
-    client->trustLevel = XSecurityClientTrusted;
-
-    VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pdstDraw, pGC, client);
+    savedtrust = setClientTrustLevel(client, XSecurityClientTrusted);
+
+    VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pdstDraw,  DixWriteAccess);
 
     if (stuff->dstDrawable != stuff->srcDrawable)
     {
-	SECURITY_VERIFY_DRAWABLE(psrcDraw, stuff->srcDrawable, client,
-				 SecurityReadAccess);
+	rc = dixLookupDrawable(&psrcDraw, stuff->srcDrawable, client, 0,
+			       DixReadAccess);
+	if (rc != Success)
+	    return rc;
+
 	if (pdstDraw->pScreen != psrcDraw->pScreen)
 	{
 	    client->errorValue = stuff->dstDrawable;
@@ -3388,8 +3101,6 @@
     else
         psrcDraw = pdstDraw;
 
-    SET_DBE_SRCBUF(psrcDraw, stuff->srcDrawable);
-
     if (xtsol_policy(TSOL_RES_PIXEL, TSOL_READ, psrcDraw,
                      client, TSOL_ALL, (void *)MAJOROP))
     {
@@ -3410,7 +3121,7 @@
     }
 
     status = (*TsolSavedProcVector[X_CopyPlane])(client);
-    client->trustLevel = savedtrust;
+    setClientTrustLevel(client, savedtrust);
 
     return (status);
 }
--- a/open-src/xserver/xorg/sun-src/tsol/tsolutils.c	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/sun-src/tsol/tsolutils.c	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-/* Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+/* Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -24,12 +24,12 @@
  * shall not be used in advertising or otherwise to promote the sale, use
  * or other dealings in this Software without prior written authorization
  * of the copyright holder.
- */ 
+ */
 
-#pragma ident   "@(#)tsolutils.c 1.15     07/04/03 SMI"
+#pragma ident   "@(#)tsolutils.c	1.19	09/01/14 SMI"
 
-#ifdef HAVE_DIX_CONFIG_H 
-#include <dix-config.h> 
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
 #endif
 
 #define NEED_EVENTS
@@ -44,6 +44,7 @@
 #include <X11/Xproto.h>
 #include "windowstr.h"
 #include "scrnintstr.h"
+#include  "tsol.h"
 #include  "tsolinfo.h"
 #include  <X11/keysym.h>
 #include  "misc.h"
@@ -93,11 +94,10 @@
 
 
 /*
- * Private indices
+ * Key to lookup devPrivate data in various structures
  */
-int tsolClientPrivateIndex = -1;
-int tsolWindowPrivateIndex = -1;
-int tsolPixmapPrivateIndex = -1;
+static int tsolPrivKeyIndex;
+DevPrivateKey tsolPrivKey = &tsolPrivKeyIndex;
 
 bclear_t SessionHI;	   /* HI Clearance */
 bclear_t SessionLO;	   /* LO Clearance */
@@ -157,7 +157,7 @@
 };
 
 #define TSOL_ATOMCOUNT 4
-static char *tsolatomnames[TSOL_ATOMCOUNT] = {
+static const char *tsolatomnames[TSOL_ATOMCOUNT] = {
 	"_TSOL_CMWLABEL_CHANGE",
 	"_TSOL_GRABNOTIFY",
 	"_TSOL_CLIENT_TERM",
@@ -173,8 +173,8 @@
 unsigned long tsoldebug = 0; /* TSOLD_SELECTION; */
 #endif /* DEBUG */
 
-void
-init_TSOL_cached_SL()
+static void
+init_TSOL_cached_SL(void)
 {
 	sltable[0].allocated = ALLOCATED;
 	bsllow (&(sltable[0].senlabel));
@@ -185,16 +185,17 @@
 }
 
 /* Initialize UID table, this table should at least contains owner UID */
-void
-init_TSOL_uid_table()
+static void
+init_TSOL_uid_table(void)
 {
 	uidtable[0].allocated = ALLOCATED;
 	uidtable[0].userid    = 0;
 }
 
+#if UNUSED
 /*  Count how many valid entried in the uid table */
 int
-count_uid_table()
+count_uid_table(void)
 {
 	int i, count = 0;
 
@@ -209,8 +210,7 @@
 
 /* return (1); if userid is in the table */
 int
-lookupUID(userid)
-	int userid;
+lookupUID(int userid)
 {
 	int i;
 	for (i = 0; i < MAX_UID_ENTRY; i++)
@@ -227,9 +227,9 @@
 /* Passed into a pointer to a storage which is used to store UID */
 /* and nUid represents how many UID in the table(returned by count_uid_table) */
 int
-ListUID(uidaddr, nUid)
-	struct xUIDreply 	* uidaddr;
-	int			nUid;
+ListUID(
+    struct xUIDreply 	* uidaddr,
+    int			nUid)
 {
 	int i, j = 0;
 
@@ -251,11 +251,11 @@
 
 	return (1);
 }
+#endif /* UNUSED */
 
 /* add userid into UIDtable  */
 int
-AddUID(userid)
-	int *userid;
+AddUID(int *userid)
 {
 
 	int i = 0;
@@ -296,11 +296,10 @@
 	return (0);
 }
 
-
+#if UNUSED
 /* remove userid from UIDtable */
 int
-RemoveUID(userid)
-	int *userid;
+RemoveUID(int *userid)
 {
 	int i = 0;
 
@@ -326,20 +325,20 @@
 	/* no such entry in the table, why delete it? no-op */
 	return (0);
 }
+#endif
 
 
 
 
 bslabel_t *
-lookupSL_low()
+lookupSL_low(void)
 {
 	return (&(sltable[0].senlabel));
 }
 
 
 bslabel_t *
-lookupSL(slptr)
-bslabel_t *slptr;
+lookupSL(bslabel_t *slptr)
 {
 	int i = 0;
 
@@ -379,8 +378,7 @@
 }
 
 int
-DoScreenStripeHeight(screen_num)
-	int screen_num;
+DoScreenStripeHeight(int screen_num)
 {
 	extern char 	*ConnectionInfo;
 	extern int	connBlockScreenStart;
@@ -420,8 +418,9 @@
 
 	return (0);
 }
+
 void
-init_xtsol()
+init_xtsol(void)
 {
 	extern Bool system_audit_on;
 	extern bslabel_t	PublicObjSL;
@@ -456,7 +455,7 @@
     KeySym lsym, usym;
 
     if ((col < 0) || ((col >= per) && (col > 3)) ||
-	((int)keycode < curKeySyms->minKeyCode) || 
+	((int)keycode < curKeySyms->minKeyCode) ||
         ((int)keycode > curKeySyms->maxKeyCode))
       return NoSymbol;
 
@@ -555,7 +554,8 @@
 
 	hk->initialized = TRUE;
 }
-void
+
+static void
 UpdateTsolConfig(char *keyword, char *value)
 {
 	int i;
@@ -590,8 +590,8 @@
 	tsolconfig[i].count++;
 }
 
-void
-InitPrivileges()
+static void
+InitPrivileges(void)
 {
 	int i;
 	int count;
@@ -619,7 +619,7 @@
  * TBD: Process extension keywords
  */
 void
-LoadTsolConfig()
+LoadTsolConfig(void)
 {
 	FILE *fp;
 	char buf[BUFSIZ];
@@ -662,11 +662,10 @@
 
 
 void
-MakeTSOLAtoms()
+MakeTSOLAtoms(void)
 {
 	int i;
 	char *atomname;
-	Atom a;
 
 	/* Create new TSOL atoms */
 	for (i = 0; i < TSOL_ATOMCOUNT; i++) {
@@ -685,10 +684,10 @@
 
 /*
  *	Names starting with a slash in selection.atoms and property.atoms
- *	are treated as regular expressions to be matched against the 
+ *	are treated as regular expressions to be matched against the
  *	selection and property names.  They may optionally end with a slash.
  */
-int
+static int
 regexcompare(char *string, int len, char *regexp)
 {
 	int	status;
@@ -757,18 +756,17 @@
 }
 
 TsolInfoPtr
-GetClientTsolInfo(client)
-    ClientPtr client;
+GetClientTsolInfo(ClientPtr client)
 {
-	return	(TsolInfoPtr)(client->devPrivates[tsolClientPrivateIndex].ptr);
+    return TsolClientPriv(client);
 }
 
 /* Property is polyinstantiated only on root window */
 int
 PolyProperty(Atom atom, WindowPtr pWin)
 {
-	if (WindowIsRoot(pWin) && 
-		((!tsolpolyprop.polyinst && !(tsol_node[atom].IsSpecial & TSOLM_PROPERTY)) || 
+	if (WindowIsRoot(pWin) &&
+		((!tsolpolyprop.polyinst && !(tsol_node[atom].IsSpecial & TSOLM_PROPERTY)) ||
 		(tsolpolyprop.polyinst && (tsol_node[atom].IsSpecial & TSOLM_PROPERTY))))
 		return TRUE;
 	return FALSE;
@@ -777,7 +775,7 @@
 int
 PolySelection(Atom atom)
 {
-	if ((tsolpolyseln.polyinst && (tsol_node[atom].IsSpecial & TSOLM_SELECTION)) || 
+	if ((tsolpolyseln.polyinst && (tsol_node[atom].IsSpecial & TSOLM_SELECTION)) ||
 		(!tsolpolyseln.polyinst && !(tsol_node[atom].IsSpecial & TSOLM_SELECTION)))
 		return TRUE;
 	return FALSE;
@@ -790,7 +788,7 @@
 int
 PolyPropReadable(PropertyPtr pProp, ClientPtr client)
 {
-    TsolPropPtr tsolprop = (TsolPropPtr)(pProp->secPrivate);
+    TsolPropPtr tsolprop = *(TsolPropertyPriv(pProp));
     TsolInfoPtr tsolinfo = GetClientTsolInfo(client);
 
     while (tsolprop)
@@ -816,7 +814,7 @@
  * client_private returns true if xid is owned/created by
  * client or is a default server xid
  */
-int  
+int
 client_private (ClientPtr client, XID xid)
 {
 	if (same_client(client, xid) || (xid & SERVER_BIT))
@@ -862,13 +860,13 @@
     }
     return (NULL);
 }
-	
+
 
 /*
  * same_client returns true if xid is owned/created by
  * client
  */
-int  
+int
 same_client (ClientPtr client, XID xid)
 {
 	TsolInfoPtr tsolinfo_client;
@@ -893,21 +891,22 @@
 	}
         return FALSE;
 }
+
 WindowPtr
-AnyWindowOverlapsJustMe(pWin, pHead, box)
-    WindowPtr pWin, pHead;
-    register BoxPtr box;
+AnyWindowOverlapsJustMe(
+    WindowPtr pWin,
+    WindowPtr pHead,
+    register BoxPtr box)
 {
     register WindowPtr pSib;
     BoxRec sboxrec;
     register BoxPtr sbox;
-    TsolResPtr win_res =
-        (TsolResPtr)(pWin->devPrivates[tsolWindowPrivateIndex].ptr);
+    TsolResPtr win_res = TsolWindowPriv(pWin);
 
     for (pSib = pWin->prevSib; (pSib != NULL && pSib != pHead); pSib = pSib->prevSib)
     {
-        TsolResPtr sib_res =
-            (TsolResPtr)(pSib->devPrivates[tsolWindowPrivateIndex].ptr);
+        TsolResPtr sib_res = TsolWindowPriv(pSib);
+
         if (pSib->mapped && !bldominates(win_res->sl, sib_res->sl))
         {
             sbox = WindowExtents(pSib, &sboxrec);
@@ -946,27 +945,27 @@
  * sprite is static & TsolPointerWindow is called in policy functions.
  */
 WindowPtr
-TsolPointerWindow()
+TsolPointerWindow(void)
 {
 	return (GetSpriteWindow());	/* Window currently under mouse */
 }
 
 /*
- * Matches in the list of disabled extensions via 
+ * Matches in the list of disabled extensions via
  * the policy file (TrustedExtensionsPolicy)
  * Returns
  *  TRUE  - if a match is found
  *  FALSE - otherwise
  */
 int
-TsolDisabledExtension(char *extname, int extlen)
+TsolDisabledExtension(const char *extname)
 {
 	int i;
 
 	for (i = 0; i < tsolconfig[TSOL_EXTENSION].count; i++) {
-		if (strncmp(extname, tsolconfig[TSOL_EXTENSION].list[i], extlen) == 0) {
-			return TRUE;
-		}
+	    if (strcmp(extname, tsolconfig[TSOL_EXTENSION].list[i]) == 0) {
+		return TRUE;
+	    }
 	}
 
 	return FALSE;
--- a/open-src/xserver/xorg/sun-virtual-mouse.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
---- hw/xfree86/os-support/solaris/sun_mouse.c	2006-10-11 13:46:15.000000000 -0700
-+++ hw/xfree86/os-support/sunos/sun_mouse.c	2006-01-25 17:42:37.627729000 -0800
-@@ -601,44 +603,9 @@
- solarisMouseAutoProbe(InputInfoPtr pInfo, const char **protocol, 
- 	const char **device)
- {
--    const char **pdev, **pproto, *dev = NULL;
--    int fd = -1;
--    Bool found;
--
--    for (pdev = solarisMouseDevs; *pdev; pdev += 2) {
--	pproto = pdev + 1;
--	if ((*protocol != NULL) && (strcmp(*protocol, "Auto") != 0) &&
--	  (*pproto != NULL) && (strcmp(*pproto, *protocol) != 0)) {
--	    continue;
--	}
--	if ((*device != NULL) && (strcmp(*device, *pdev) != 0)) {
--	    continue;
--	}
--        SYSCALL (fd = open(*pdev, O_RDWR | O_NONBLOCK));
--	if (fd == -1) {
--#ifdef DEBUG
--	    ErrorF("Cannot open %s (%s)\n", pdev, strerror(errno));
--#endif
--	} else {
--	    found = TRUE;
--	    if ((*pproto != NULL) && (strcmp(*pproto, "VUID") == 0)) {
--		int i, r;
--		SYSCALL(r = ioctl(fd, VUIDGFORMAT, &i));
--    		if (r < 0) {
--		    found = FALSE;
--		}
--	    }
--	    close(fd);
--	    if (found == TRUE) {
--		if (*pproto != NULL) {
--		    *protocol = *pproto;
--		}
--		*device = *pdev;
--		return TRUE;
--	    }
--	}
--    }
--    return FALSE;
-+    *protocol = "VUID";
-+    *device = "/dev/mouse";
-+    return TRUE;
- }
- 
- static const char *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/sys-kd.h.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,55 @@
+From cc78d977cac74fcfb7c9b27e7109a1e369018dd8 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Fri, 22 Aug 2008 10:14:11 -0700
+Subject: [PATCH] Convert Solaris #ifdef's for <sys/kd.h> to AC_CHECK_HEADERS check
+
+Upcoming virtual terminal support changes in Solaris kernel will provide
+<sys/kd.h> on SPARC too, so this gets us ready for them.
+---
+ configure.ac                             |    1 +
+ hw/xfree86/os-support/solaris/sun_init.c |    2 +-
+ include/xorg-config.h.in                 |    3 +++
+ 3 files changed, 5 insertions(+), 1 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 52d35c3..4250f80 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1280,6 +1280,7 @@ if test "x$XORG" = xyes; then
+ 	  solaris*)
+ 	  	XORG_OS="solaris"
+ 		XORG_OS_SUBDIR="solaris"
++		AC_CHECK_HEADERS([sys/kd.h])
+ 		# This really should be tests for specific features, but the #ifdef's
+ 		# were done as a simple version check in XFree86 4.x and haven't been 
+ 		# fixed yet
+diff --git a/hw/xfree86/os-support/solaris/sun_init.c b/hw/xfree86/os-support/solaris/sun_init.c
+index 1f389cb..b2237d9 100644
+--- a/hw/xfree86/os-support/solaris/sun_init.c
++++ b/hw/xfree86/os-support/solaris/sun_init.c
+@@ -29,7 +29,7 @@
+ #include "xf86.h"
+ #include "xf86Priv.h"
+ #include "xf86_OSlib.h"
+-#if defined(__i386__) || defined(__i386) || defined(__x86)
++#ifdef HAVE_SYS_KD_H
+ # include <sys/kd.h>
+ #endif
+ 
+diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
+index 6137406..f9b77d0 100644
+--- a/include/xorg-config.h.in
++++ b/include/xorg-config.h.in
+@@ -54,6 +54,9 @@
+ /* Solaris 8 or later? */
+ #undef __SOL8__
+ 
++/* Define to 1 if you have the <sys/kd.h> header file. */
++#undef HAVE_SYS_KD_H
++
+ /* Define to 1 if you have the `walkcontext' function (used on Solaris for
+    xorg_backtrace in hw/xfree86/common/xf86Events.c */
+ #undef HAVE_WALKCONTEXT
+-- 
+1.5.6.5
+
--- a/open-src/xserver/xorg/wsfb.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
---- hw/xfree86/common/xf86AutoConfig.c	2006-11-28 18:49:05.915360000 -0800
-+++ hw/xfree86/common/xf86AutoConfig.c	2006-12-01 10:44:30.000775000 -0800
-@@ -101,9 +101,13 @@
- static const char **builtinConfig = NULL;
- static int builtinLines = 0;
- static const char *deviceList[] = {
-+#if defined(sun) && defined(__sparc)
-+	"wsfb",
-+#else	
- 	"fbdev",
- 	"vesa",
- 	"vga",
-+#endif	
- 	NULL
- };
- 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/x86-64-ifdef.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,206 @@
+From 9719354ae04a41e9834ac9ba8fd9e895092ba4f1 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <[email protected]>
+Date: Tue, 24 Jun 2008 14:37:06 -0400
+Subject: [PATCH] Check for __amd64__, not __x86_64__.
+
+Spiritual revert of 1fa4de80fcfc697b5e5879cc351fb3e9dbf6acbe.  Intel's C
+compiler claims to be gcc-compatible; if they're not defining the same
+macros as gcc then that's their bug, not ours.  Even if we were to do
+this aliasing we should do it once and for all in servermd.h.
+---
+ fb/fb.h                                 |    2 +-
+ hw/xfree86/common/compiler.h            |    2 +-
+ hw/xfree86/common/xf86AutoConfig.c      |    2 +-
+ hw/xfree86/loader/loader.c              |    2 +-
+ hw/xfree86/os-support/bsd/bsdResource.c |    2 +-
+ hw/xfree86/os-support/bus/Pci.h         |    2 +-
+ hw/xfree86/os-support/misc/SlowBcopy.c  |    4 ++--
+ hw/xfree86/utils/xorgcfg/loadmod.c      |    2 +-
+ hw/xfree86/x86emu/prim_ops.c            |    2 +-
+ hw/xfree86/x86emu/x86emu/prim_x86_gcc.h |    2 +-
+ hw/xfree86/x86emu/x86emu/types.h        |    2 +-
+ include/servermd.h                      |    2 +-
+ mi/micoord.h                            |    2 +-
+ 13 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/fb/fb.h b/fb/fb.h
+index 8e76beb..2c6c4fb 100644
+--- a/fb/fb.h
++++ b/fb/fb.h
+@@ -138,7 +138,7 @@ #  if defined(__alpha__) || defined(__al
+       defined(ia64) || defined(__ia64__) || \
+       defined(__sparc64__) || defined(_LP64) || \
+       defined(__s390x__) || \
+-      defined(amd64) || defined (__amd64__) || defined(__x86_64__) || \
++      defined(amd64) || defined (__amd64__) \
+       defined (__powerpc64__) || \
+       (defined(sgi) && (_MIPS_SZLONG == 64))
+ typedef unsigned long	    FbBits;
+diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
+index 9e7f821..a20baa3 100644
+--- a/hw/xfree86/common/compiler.h
++++ b/hw/xfree86/common/compiler.h
+@@ -498,7 +498,7 @@ extern unsigned int inb(unsigned long po
+ extern unsigned int inw(unsigned long port);
+ extern unsigned int inl(unsigned long port);
+  
+-#   elif defined(linux) && (defined(__amd64__) || defined(__x86_64__))
++#   elif defined(linux) && defined(__amd64__)
+  
+ #    include <inttypes.h>
+ 
+diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
+index 7e5fab4..a786eed 100644
+--- a/hw/xfree86/common/xf86AutoConfig.c
++++ b/hw/xfree86/common/xf86AutoConfig.c
+@@ -454,7 +454,7 @@ #endif /* __linux__ */
+ 	if (info != NULL)
+ 	    chosen_driver = videoPtrToDriverName(info);
+ 	if (chosen_driver == NULL) {
+-#if defined  __i386__ || defined __amd64__ || defined __x86_64__ || defined __hurd__
++#if defined  __i386__ || defined __amd64__ || defined __hurd__
+ 	    chosen_driver = "vesa";
+ #elif defined __sparc__
+ 	    chosen_driver = "sunffb";
+diff --git a/hw/xfree86/loader/loader.c b/hw/xfree86/loader/loader.c
+index a00269b..774a4c4 100644
+--- a/hw/xfree86/loader/loader.c
++++ b/hw/xfree86/loader/loader.c
+@@ -63,7 +63,7 @@ #include <fcntl.h>
+ #include <string.h>
+ #if defined(linux) && \
+     (defined(__alpha__) || defined(__powerpc__) || defined(__ia64__) \
+-    || defined(__amd64__) || defined(__x86_64__))
++    || defined(__amd64__))
+ #include <malloc.h>
+ #endif
+ #include <stdarg.h>
+diff --git a/hw/xfree86/os-support/bsd/bsdResource.c b/hw/xfree86/os-support/bsd/bsdResource.c
+index d1ee787..fe166c8 100644
+--- a/hw/xfree86/os-support/bsd/bsdResource.c
++++ b/hw/xfree86/os-support/bsd/bsdResource.c
+@@ -19,7 +19,7 @@ #include "bus/Pci.h"
+ 
+ #ifdef INCLUDE_XF86_NO_DOMAIN
+ 
+-#if defined(__alpha__) || defined(__sparc64__) || defined(__amd64__) || defined(__x86_64__)
++#if defined(__alpha__) || defined(__sparc64__) || defined(__amd64__)
+ 
+ resPtr
+ xf86AccResFromOS(resPtr ret)
+diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h
+index 557483b..a1390c0 100644
+--- a/hw/xfree86/os-support/bus/Pci.h
++++ b/hw/xfree86/os-support/bus/Pci.h
+@@ -202,7 +202,7 @@ #if !defined(ARCH_PCI_INIT)
+ /*
+  * Select architecture specific PCI init function
+  */
+-#if defined(__i386__) || defined(__i386) ||  defined(__amd64__) || defined(__amd64) || defined(__x86_64__)
++#if defined(__i386__) || defined(__i386) ||  defined(__amd64__) || defined(__amd64)
+ # define ARCH_PCI_INIT ix86PciInit
+ #elif defined(__powerpc__) || defined(__powerpc64__)
+ # define ARCH_PCI_INIT ppcPciInit
+diff --git a/hw/xfree86/os-support/misc/SlowBcopy.c b/hw/xfree86/os-support/misc/SlowBcopy.c
+index 5cd7168..7c51fcc 100644
+--- a/hw/xfree86/os-support/misc/SlowBcopy.c
++++ b/hw/xfree86/os-support/misc/SlowBcopy.c
+@@ -30,7 +30,7 @@ xf86SetReallySlowBcopy(void)
+ 	really_slow_bcopy = 1;
+ }
+ 
+-#if defined(__i386__) || defined(__x86_64__)
++#if defined(__i386__) || defined(__amd64__)
+ static void xf86_really_slow_bcopy(unsigned char *src, unsigned char *dst, int len)
+ {
+     while(len--)
+@@ -45,7 +45,7 @@ #endif
+ _X_EXPORT void
+ xf86SlowBcopy(unsigned char *src, unsigned char *dst, int len)
+ {
+-#if defined(__i386__) || defined(__x86_64__)
++#if defined(__i386__) || defined(__amd64__)
+     if (really_slow_bcopy) {
+ 	xf86_really_slow_bcopy(src, dst, len);
+ 	return;
+diff --git a/hw/xfree86/utils/xorgcfg/loadmod.c b/hw/xfree86/utils/xorgcfg/loadmod.c
+index 629dfe1..748bd3a 100644
+--- a/hw/xfree86/utils/xorgcfg/loadmod.c
++++ b/hw/xfree86/utils/xorgcfg/loadmod.c
+@@ -181,7 +181,7 @@ LOOKUP xfree86LookupTab[] = {
+    SYMFUNC(xf86memcpy)
+ #if (defined(__powerpc__) && (defined(Lynx) || defined(linux))) || \
+     defined(__sparc__) || defined(__sparc) || defined(__ia64__) || \
+-    defined (__amd64__) || defined(__x86_64__)
++    defined (__amd64__)
+    /*
+     * Some PPC, SPARC, and IA64 compilers generate calls to memcpy to handle
+     * structure copies.  This causes a problem both here and in shared
+diff --git a/hw/xfree86/x86emu/prim_ops.c b/hw/xfree86/x86emu/prim_ops.c
+index 41968e1..4a6ac5d 100644
+--- a/hw/xfree86/x86emu/prim_ops.c
++++ b/hw/xfree86/x86emu/prim_ops.c
+@@ -103,7 +103,7 @@ #define	PRIM_OPS_NO_REDEFINE_ASM
+ #include "x86emu/x86emui.h"
+ 
+ #if defined(__GNUC__)
+-# if defined (__i386__) || defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__) || defined(__x86_64__)
++# if defined (__i386__) || defined(__i386) || defined(__AMD64__) || defined(__amd64__)
+ #  include "x86emu/prim_x86_gcc.h"
+ # endif
+ #endif
+diff --git a/hw/xfree86/x86emu/x86emu/prim_x86_gcc.h b/hw/xfree86/x86emu/x86emu/prim_x86_gcc.h
+index 5a443cd..5530a3a 100644
+--- a/hw/xfree86/x86emu/x86emu/prim_x86_gcc.h
++++ b/hw/xfree86/x86emu/x86emu/prim_x86_gcc.h
+@@ -42,7 +42,7 @@ #define __X86EMU_PRIM_X86_GCC_H
+ 
+ #include "x86emu/types.h"
+ 
+-#if !defined(__GNUC__) || !(defined (__i386__) || defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__) || defined(__x86_64__))
++#if !defined(__GNUC__) || !(defined (__i386__) || defined(__i386) || defined(__AMD64__) || defined(__amd64__))
+ #error This file is intended to be used by gcc on i386 or x86-64 system
+ #endif
+ 
+diff --git a/hw/xfree86/x86emu/x86emu/types.h b/hw/xfree86/x86emu/x86emu/types.h
+index 2d41b0f..ff28885 100644
+--- a/hw/xfree86/x86emu/x86emu/types.h
++++ b/hw/xfree86/x86emu/x86emu/types.h
+@@ -75,7 +75,7 @@ #if defined (_LP64) || \
+     defined(__sparc64__) || \
+     defined(__s390x__) || \
+     (defined(__hppa__) && defined(__LP64)) || \
+-    defined(__amd64__) || defined(amd64) || defined(__x86_64__) || \
++    defined(__amd64__) || defined(amd64) \
+     (defined(__sgi) && (_MIPS_SZLONG == 64))
+ #define NUM32 int
+ #else
+diff --git a/include/servermd.h b/include/servermd.h
+index 91b705b..f10e6bc 100644
+--- a/include/servermd.h
++++ b/include/servermd.h
+@@ -285,7 +285,7 @@ # define GLYPHPADBYTES		4
+ 
+ #endif /* ia64 */
+ 
+-#if defined(__amd64__) || defined(amd64) || defined(__amd64) || defined(__x86_64__)
++#if defined(__amd64__) || defined(amd64) || defined(__amd64)
+ # define IMAGE_BYTE_ORDER	LSBFirst
+ 
+ # if defined(XF86MONOVGA) || defined(XF86VGA16) || defined(XF86MONO)
+diff --git a/mi/micoord.h b/mi/micoord.h
+index 876e88c..16d0861 100644
+--- a/mi/micoord.h
++++ b/mi/micoord.h
+@@ -48,7 +48,7 @@ #if defined(mips) || defined(sgi) || \
+     defined(__alpha) || defined(__alpha__) || \
+     defined(__i386__) || defined(__i386) || defined(__ia64__) || \
+     defined(__s390x__) || defined(__s390__) || \
+-    defined(__amd64__) || defined(amd64) || defined(__amd64) || defined(__x86_64__)
++    defined(__amd64__) || defined(amd64) || defined(__amd64)
+ #define GetHighWord(x) (((int) (x)) >> 16)
+ #else
+ #define GetHighWord(x) (((int) (x)) / 65536)
+-- 
+1.4.1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/x86emu-fix-build.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,24 @@
+From 9ed9d98dec58d1f7468d02c4b951811b8e1ca7c1 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <[email protected]>
+Date: Tue, 24 Jun 2008 22:36:32 +0200
+Subject: [PATCH] x86emu: fix build, fallout from 9719354
+---
+ hw/xfree86/x86emu/x86emu/types.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/hw/xfree86/x86emu/x86emu/types.h b/hw/xfree86/x86emu/x86emu/types.h
+index ff28885..c0c09c1 100644
+--- a/hw/xfree86/x86emu/x86emu/types.h
++++ b/hw/xfree86/x86emu/x86emu/types.h
+@@ -75,7 +75,7 @@ #if defined (_LP64) || \
+     defined(__sparc64__) || \
+     defined(__s390x__) || \
+     (defined(__hppa__) && defined(__LP64)) || \
+-    defined(__amd64__) || defined(amd64) \
++    defined(__amd64__) || defined(amd64) || \
+     (defined(__sgi) && (_MIPS_SZLONG == 64))
+ #define NUM32 int
+ #else
+-- 
+1.4.1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/xephyr-man.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,221 @@
+[Adjusted to apply to 1.5.x tree]
+
+From 6a1b2fed7e465a9c652e8ee250b8eab440945862 Mon Sep 17 00:00:00 2001
+From: Matthieu Herrb <[email protected]>
+Date: Sun, 28 Sep 2008 12:18:16 +0200
+Subject: [PATCH] Add a man page for Xephyr, with information from the README file.
+
+---
+ hw/kdrive/ephyr/Makefile.am    |   16 +++++++-
+ hw/kdrive/ephyr/Xephyr.man.pre |   84 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 99 insertions(+), 1 deletions(-)
+ create mode 100644 hw/kdrive/ephyr/Xephyr.man.pre
+
+diff --git a/hw/kdrive/ephyr/Makefile.am b/hw/kdrive/ephyr/Makefile.am
+index bf1f475..9380e4d 100644
+--- a/hw/kdrive/ephyr/Makefile.am
++++ b/hw/kdrive/ephyr/Makefile.am
+@@ -83,2 +83,18 @@ Xephyr_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
+ relink:
+ 	rm -f $(bin_PROGRAMS) && make $(bin_PROGRAMS)
++
++MAN_SRCS = Xephyr.man.pre
++
++appmandir = $(APP_MAN_DIR)
++appman_DATA = Xephyr.$(APP_MAN_SUFFIX)
++
++Xephyr.$(APP_MAN_SUFFIX): Xephyr.man
++	-rm -f Xephyr.$(APP_MAN_SUFFIX)
++	$(LN_S) Xephyr.man Xephyr.$(APP_MAN_SUFFIX)
++
++include $(top_srcdir)/cpprules.in
++
++CLEANFILES = $(appman_DATA) Xephyr.man
++
++EXTRA_DIST = \
++	$(MAN_SRCS)
+diff --git a/hw/kdrive/ephyr/Xephyr.man.pre b/hw/kdrive/ephyr/Xephyr.man.pre
+new file mode 100644
+index 0000000..19c9b86
+--- /dev/null
++++ b/hw/kdrive/ephyr/Xephyr.man.pre
+@@ -0,0 +1,84 @@
++."
++." Copyright (c) Matthieu Herrb <[email protected]>
++."
++." Permission to use, copy, modify, and distribute this software for any
++." purpose with or without fee is hereby granted, provided that the above
++." copyright notice and this permission notice appear in all copies.
++."
++." THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++." WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++." MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
++." ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++." WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++." ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++." OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++."
++.TH Xephyr __appmansuffix__ __vendorversion__
++.SH NAME
++Xephyr - X server outputting to a window on a pre-existing X display
++.SH SYNOPSIS
++.B Xephyr
++.RI [\fB:\fP display ]
++.RI [ option
++.IR ... ]
++.SH DESCRIPTION
++.B Xephyr 
++is a a kdrive server that outputs to a window on a pre-existing
++'host' X display. 
++Think 
++.I Xnest 
++but with support for modern extensions like composite, damage and randr. 
++.PP
++Unlike 
++.I Xnest 
++which is an X proxy, i.e.  limited to the capabilities of the host X server, 
++.B Xephyr 
++is a real X server which
++uses the host X server window as "framebuffer" via fast SHM XImages.
++.PP
++It also has support for "visually" debugging what the server is
++painting.
++.SH OPTIONS
++.TP 8
++.BI -screen " width" x height
++sets the screen size.
++.TP 8
++.BI -parent " id"
++uses exiting window
++.I id .
++.TP 8
++.B -host-cursor
++set 'cursor acceleration':
++The host's cursor is reused. This is only really there to aid
++debugging by avoiding server paints for the cursor. Performance
++improvement is negiable.
++.SH "SIGNALS"
++Send a SIGUSR1 to the server (e.g. pkill -USR1 Xephyr) to
++toggle the debugging mode. 
++In this mode red rectangles are painted to
++screen areas getting painted before painting the actual content. 
++The
++delay between this can be altered by setting a XEPHYR_PAUSE env var to
++a value in micro seconds.
++.SH CAVEATS
++.PP
++.IP \(bu 2
++Rotated displays are currently updated via full blits. This
++is slower than a normal oprientated display. Debug mode will
++therefore not be of much use rotated.  
++.IP \(bu 2
++The '-host-cursor' cursor is static in its appearence. 
++.IP \(bu 2
++The build gets a warning about 'nanosleep'. I think the various '-D'
++build flags are causing this. I havn't figured as yet how to work
++round it. It doesn't appear to break anything however. 
++.IP \(bu 2
++Keyboard handling is basic but works. 
++.TP \(bu 2
++Mouse button 5 probably wont work. 
++.SH "SEE ALSO"
++X(__miscmansuffix), Xserver(__appmansuffix__)
++.SH AUTHOR
++Matthew Allum <[email protected]> 2004 
++
++
+-- 
+1.5.6.5
+
+
+From dacad9ae0bdaedff9403fbe84a5c5a4b4eef3542 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Fri, 21 Nov 2008 17:16:22 -0800
+Subject: [PATCH] Xephyr man page typo fixes.
+
+Also trailing white space removal to clear git warnings.
+---
+ hw/kdrive/ephyr/Xephyr.man.pre |   42 ++++++++++++++++++++--------------------
+ 1 files changed, 21 insertions(+), 21 deletions(-)
+
+diff --git a/hw/kdrive/ephyr/Xephyr.man.pre b/hw/kdrive/ephyr/Xephyr.man.pre
+index 19c9b86..7f0e811 100644
+--- a/hw/kdrive/ephyr/Xephyr.man.pre
++++ b/hw/kdrive/ephyr/Xephyr.man.pre
+@@ -22,17 +22,17 @@ Xephyr - X server outputting to a window on a pre-existing X display
+ .RI [ option
+ .IR ... ]
+ .SH DESCRIPTION
+-.B Xephyr 
++.B Xephyr
+ is a a kdrive server that outputs to a window on a pre-existing
+-'host' X display. 
+-Think 
+-.I Xnest 
+-but with support for modern extensions like composite, damage and randr. 
++'host' X display.
++Think
++.I Xnest
++but with support for modern extensions like composite, damage and randr.
+ .PP
+-Unlike 
+-.I Xnest 
+-which is an X proxy, i.e.  limited to the capabilities of the host X server, 
+-.B Xephyr 
++Unlike
++.I Xnest
++which is an X proxy, i.e.  limited to the capabilities of the host X server,
++.B Xephyr
+ is a real X server which
+ uses the host X server window as "framebuffer" via fast SHM XImages.
+ .PP
+@@ -51,12 +51,12 @@ uses exiting window
+ set 'cursor acceleration':
+ The host's cursor is reused. This is only really there to aid
+ debugging by avoiding server paints for the cursor. Performance
+-improvement is negiable.
++improvement is negligible.
+ .SH "SIGNALS"
+ Send a SIGUSR1 to the server (e.g. pkill -USR1 Xephyr) to
+-toggle the debugging mode. 
++toggle the debugging mode.
+ In this mode red rectangles are painted to
+-screen areas getting painted before painting the actual content. 
++screen areas getting painted before painting the actual content.
+ The
+ delay between this can be altered by setting a XEPHYR_PAUSE env var to
+ a value in micro seconds.
+@@ -64,21 +64,21 @@ a value in micro seconds.
+ .PP
+ .IP \(bu 2
+ Rotated displays are currently updated via full blits. This
+-is slower than a normal oprientated display. Debug mode will
+-therefore not be of much use rotated.  
++is slower than a normal orientated display. Debug mode will
++therefore not be of much use rotated.
+ .IP \(bu 2
+-The '-host-cursor' cursor is static in its appearence. 
++The '-host-cursor' cursor is static in its appearance.
+ .IP \(bu 2
+ The build gets a warning about 'nanosleep'. I think the various '-D'
+-build flags are causing this. I havn't figured as yet how to work
+-round it. It doesn't appear to break anything however. 
++build flags are causing this. I haven't figured as yet how to work
++round it. It doesn't appear to break anything however.
+ .IP \(bu 2
+-Keyboard handling is basic but works. 
++Keyboard handling is basic but works.
+ .TP \(bu 2
+-Mouse button 5 probably wont work. 
++Mouse button 5 probably wont work.
+ .SH "SEE ALSO"
+-X(__miscmansuffix), Xserver(__appmansuffix__)
++X(__miscmansuffix__), Xserver(__appmansuffix__)
+ .SH AUTHOR
+-Matthew Allum <[email protected]> 2004 
++Matthew Allum <[email protected]> 2004
+ 
+ 
+-- 
+1.5.6.5
+
--- a/open-src/xserver/xorg/xephyr.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
---- xorg-server-1.2.0/hw/kdrive/ephyr/hostx.c~	2007-01-22 21:39:15.000000000 -0800
-+++ xorg-server-1.2.0/hw/kdrive/ephyr/hostx.c	2007-02-02 16:03:09.840426000 -0800
-@@ -40,6 +40,7 @@
- #include <X11/Xatom.h>
- #include <X11/keysym.h>
- #include <X11/extensions/XShm.h>
-+#include <X11/Xmd.h>
- 
- /*  
-  * All xlib calls go here, which gets built as its own .a .
-@@ -79,7 +80,8 @@
- 
- extern KeySym         EphyrKeymap[];
- 
--extern KeySym	      kdKeymap[];
-+extern CARD32	      kdKeymap[];	/* really KeySym, but Xlib & Xserver
-+					   use different sizes for that */
- extern int	      kdMinScanCode;
- extern int	      kdMaxScanCode;
- extern int	      kdMinKeyCode;
-
-
-Backport to 7.2 of commit 47c1c948e69cfba950ad37a3133fa2db0bd0ff2c
-Original Author: Daniel Stone <[email protected]>
-Date:   Tue Aug 15 15:25:16 2006 +0300
-
-    kdrive/input: only run special key behaviours on non-XKB
-    Only attempt to manually deal with special key behaviours (e.g. terminating
-    the server) when not using XKB, and leave locking behaviour up to GKVE.
-
---- xorg-server-1.2.0/hw/kdrive/src/kinput.c	2007-01-22 21:39:15.000000000 -0800
-+++ xorg-server-1.2.0/hw/kdrive/src/kinput.c	2007-04-09 18:58:43.562841000 -0700
-@@ -616,15 +616,6 @@
-     RegisterKeyboardDevice(pKeyboard);
-     miRegisterPointerDevice(screenInfo.screens[0], pPointer);
-     mieqInit(&pKeyboard->public, &pPointer->public);
--#ifdef XINPUT
--    {
--	static long zero1, zero2;
--
--	//SetExtInputCheck (&zero1, &zero2);
--	ErrorF("Extended Input Devices not yet supported. Impelement it at line %d in %s\n",
--	       __LINE__, __FILE__);
--    }
--#endif
- }
- 
- /*
-@@ -1303,20 +1294,6 @@
- 	    xE.u.u.type = KeyPress;
- 	xE.u.u.detail = key_code;
- 	
--	switch (KEYCOL1(key_code)) 
--	{
--	case XK_Num_Lock:
--	case XK_Scroll_Lock:
--	case XK_Shift_Lock:
--	case XK_Caps_Lock:
--	    if (xE.u.u.type == KeyRelease)
--		return;
--	    if (IsKeyDown (key_code))
--		xE.u.u.type = KeyRelease;
--	    else
--		xE.u.u.type = KeyPress;
--	}
--	
- 	/*
- 	 * Check pressed keys which are already down
- 	 */
--- a/open-src/xserver/xorg/xevie.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/xevie.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -27,9 +27,9 @@
 # of the copyright holder.
 
 diff -urp -x '*~' -x '*.orig' hw/xfree86/dixmods/extmod/modinit.c hw/xfree86/dixmods/extmod/modinit.c
---- hw/xfree86/dixmods/extmod/modinit.c	2006-06-06 10:13:53.000000000 -0700
-+++ hw/xfree86/dixmods/extmod/modinit.c	2007-07-30 18:35:59.381657000 -0700
-@@ -198,6 +198,15 @@ static ExtensionModule extensionModules[
+--- hw/xfree86/dixmods/extmod/modinit.c	2008-09-23 11:24:58.000000000 -0700
++++ hw/xfree86/dixmods/extmod/modinit.c	2008-09-24 20:22:10.609262000 -0700
+@@ -207,6 +207,15 @@ static ExtensionModule extensionModules[
          NULL
      },
  #endif
@@ -46,8 +46,8 @@
  	NULL,
  	NULL,
 diff -urp -x '*~' -x '*.orig' hw/xfree86/dixmods/extmod/modinit.h hw/xfree86/dixmods/extmod/modinit.h
---- hw/xfree86/dixmods/extmod/modinit.h	2006-10-24 17:25:19.000000000 -0700
-+++ hw/xfree86/dixmods/extmod/modinit.h	2007-07-30 18:35:59.382387000 -0700
+--- hw/xfree86/dixmods/extmod/modinit.h	2008-09-23 11:24:58.000000000 -0700
++++ hw/xfree86/dixmods/extmod/modinit.h	2008-09-24 20:22:10.610205000 -0700
 @@ -149,3 +149,9 @@ extern void PanoramiXExtensionInit(int a
  #if 1
  extern void XkbExtensionInit(INITARGS);
@@ -59,9 +59,9 @@
 +# include <X11/extensions/Xeviestr.h>
 +#endif
 diff -urp -x '*~' -x '*.orig' os/utils.c os/utils.c
---- os/utils.c	2007-07-30 18:35:42.383397000 -0700
-+++ os/utils.c	2007-07-30 18:35:59.387632000 -0700
-@@ -200,9 +200,9 @@ _X_EXPORT Bool noXagExtension = FALSE;
+--- os/utils.c	2008-09-24 20:21:55.314450000 -0700
++++ os/utils.c	2008-09-24 20:22:10.611688000 -0700
+@@ -199,9 +199,9 @@ _X_EXPORT Bool noXagExtension = FALSE;
  _X_EXPORT Bool noXCMiscExtension = FALSE;
  #endif
  #ifdef XEVIE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/xkb-defaults-compat.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,24 @@
+Provide old #define for code not yet converted to the new ones set in
+xkb-defaults.patch (like the xorgcfg & xorgconfig code that isn't in 1.6).
+
+--- include/xkb-config.h.in	Sun Jan 11 20:09:47 2009
++++ include/xkb-config.h.in	Mon Jan 12 08:48:16 2009
+@@ -7,6 +7,7 @@
+ 
+ /* Default set of XKB rules. */
+ #undef XKB_DFLT_RULES
++#define __XKBDEFRULES__ XKB_DFLT_RULES
+ 
+ /* Default XKB model. */
+ #undef XKB_DFLT_MODEL
+
+--- include/xorg-server.h.in	Wed Nov  5 08:52:17 2008
++++ include/xorg-server.h.in	Mon Jan 12 20:37:24 2009
+@@ -135,6 +135,7 @@
+ 
+ /* XKB default rules */
+ #undef XKB_DFLT_RULES
++#define __XKBDEFRULES__ XKB_DFLT_RULES
+ 
+ /* Build XKB support in server */
+ #undef XKB_IN_SERVER
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/xkb-defaults.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,313 @@
+From aabfda4518579f5782605ed0e47853fbe919848b Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <[email protected]>
+Date: Mon, 12 Jan 2009 21:19:15 -0800
+Subject: [PATCH] XKB: Allow build-time configuration of XKB defaults
+
+Instead of hardcoding base/pc105/us, allow users to change the defaults at
+./configure time.  Change the default model to be evdev on Linux.
+
+Modified from original version by: Daniel Stone <[email protected]>
+---
+ configure.ac             |   82 +++++++++++++++++++++++++++++++++-------------
+ hw/xnest/Keyboard.c      |   32 +++---------------
+ include/xkb-config.h.in  |   14 +++++++-
+ include/xorg-server.h.in |    8 ++--
+ xkb/xkbInit.c            |   41 ++++++-----------------
+ 5 files changed, 91 insertions(+), 86 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 55b5ec7..b0f9825 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -483,6 +483,26 @@ AC_ARG_WITH(xkb-path,         AS_HELP_STRING([--with-xkb-path=PATH], [Path to XK
+ AC_ARG_WITH(xkb-output,       AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]),
+ 				[ XKBOUTPUT="$withval" ],
+ 				[ XKBOUTPUT="compiled" ])
++AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES],
++                                   [Keyboard ruleset (default: base/evdev)]),
++                                [ XKB_DFLT_RULES="$withval" ],
++                                [ XKB_DFLT_RULES="" ])
++AC_ARG_WITH(default-xkb-model, AS_HELP_STRING([--with-default-xkb-model=MODEL],
++                                   [Keyboard model (default: pc104)]),
++                                [ XKB_DFLT_MODEL="$withval" ],
++                                [ XKB_DFLT_MODEL="pc104" ])
++AC_ARG_WITH(default-xkb-layout, AS_HELP_STRING([--with-default-xkb-layout=LAYOUT],
++                                   [Keyboard layout (default: us)]),
++                                [ XKB_DFLT_LAYOUT="$withval" ],
++                                [ XKB_DFLT_LAYOUT="us" ])
++AC_ARG_WITH(default-xkb-variant, AS_HELP_STRING([--with-default-xkb-variant=VARIANT],
++                                   [Keyboard variant (default: (none))]),
++                                [ XKB_DFLT_VARIANT="$withval" ],
++                                [ XKB_DFLT_VARIANT="" ])
++AC_ARG_WITH(default-xkb-options, AS_HELP_STRING([--with-default-xkb-options=OPTIONS],
++                                   [Keyboard layout options (default: (none))]),
++                                [ XKB_DFLT_OPTIONS="$withval" ],
++                                [ XKB_DFLT_OPTIONS="" ])
+ AC_ARG_WITH(serverconfig-path, AS_HELP_STRING([--with-serverconfig-path=PATH],
+ 				   [Directory where ancillary server config files are installed (default: ${libdir}/xorg)]),
+ 				[ SERVERCONFIG="$withval" ],
+@@ -999,9 +1019,47 @@ AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
+ AC_DEFINE(XKB, 1, [Build XKB])
+ AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
+ AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
+-REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
++AC_DEFINE_DIR(XKB_BASE_DIRECTORY, XKBPATH, [Path to XKB data])
++AC_DEFINE_DIR(XKB_BIN_DIRECTORY, bindir, [Path to XKB bin dir])
++
++dnl Make sure XKM_OUTPUT_DIR is an absolute path
++XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
++if [[ x$XKBOUTPUT_FIRSTCHAR != x/ ]] ; then
++   XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT"
++fi
++
++dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed
++dnl XKB_COMPILED_DIR (used in Makefiles) must not or install-sh gets confused
++
++XKBOUTPUT=`echo $XKBOUTPUT/ | sed 's|/*$|/|'`
++XKB_COMPILED_DIR=`echo $XKBOUTPUT | sed 's|/*$||'`
++AC_DEFINE_DIR(XKM_OUTPUT_DIR, XKBOUTPUT, [Path to XKB output dir])
++AC_SUBST(XKB_COMPILED_DIR)
++
++if test "x$XKB_DFLT_RULES" = x; then
++    case $host_os in
++    linux*)
++        dnl doesn't take AutoAddDevices into account, but whatever.
++        if test "x$CONFIG_HAL" = xyes; then
++            XKB_DFLT_RULES="evdev"
++        else
++            XKB_DFLT_RULES="base"
++        fi
++        ;;
++    *)
++        XKB_DFLT_RULES="base"
++        ;;
++    esac
++fi
++AC_DEFINE_UNQUOTED(XKB_DFLT_RULES, ["$XKB_DFLT_RULES"], [Default XKB ruleset])
++AC_DEFINE_UNQUOTED(XKB_DFLT_MODEL, ["$XKB_DFLT_MODEL"], [Default XKB model])
++AC_DEFINE_UNQUOTED(XKB_DFLT_LAYOUT, ["$XKB_DFLT_LAYOUT"], [Default XKB layout])
++AC_DEFINE_UNQUOTED(XKB_DFLT_VARIANT, ["$XKB_DFLT_VARIANT"], [Default XKB variant])
++AC_DEFINE_UNQUOTED(XKB_DFLT_OPTIONS, ["$XKB_DFLT_OPTIONS"], [Default XKB options])
++
+ XKB_LIB='$(top_builddir)/xkb/libxkb.la'
+ XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
++REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
+ 
+ AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
+                                         [Do not have 'strcasecmp'.]))
+@@ -1792,28 +1850,6 @@ AM_CONDITIONAL(XEPHYR, [test "x$KDRIVE" = xyes && test "x$XEPHYR" = xyes])
+ AM_CONDITIONAL(BUILD_KDRIVEFBDEVLIB, [test "x$KDRIVE" = xyes && test "x$KDRIVEFBDEVLIB" = xyes])
+ AM_CONDITIONAL(XFAKESERVER, [test "x$KDRIVE" = xyes && test "x$XFAKE" = xyes])
+ 
+-dnl these only go in xkb-config.h (which is shared by the Xorg and Xnest servers)
+-AC_DEFINE(__XKBDEFRULES__, "xorg", [Default XKB rules])
+-AC_DEFINE_DIR(XKB_BASE_DIRECTORY, XKBPATH, [Path to XKB data])
+-AC_DEFINE_DIR(XKB_BIN_DIRECTORY, bindir, [Path to XKB bin dir])
+-
+-# Make sure XKM_OUTPUT_DIR is an absolute path
+-XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
+-
+-if [[ x$XKBOUTPUT_FIRSTCHAR != x/ ]] ; then
+-   XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT"
+-fi
+-
+-# XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed
+-# XKB_COMPILED_DIR (used in Makefiles) must not or install-sh gets confused
+-
+-XKBOUTPUT=`echo $XKBOUTPUT/ | sed 's|/*$|/|'`
+-XKB_COMPILED_DIR=`echo $XKBOUTPUT | sed 's|/*$||'`
+-
+-AC_DEFINE_DIR(XKM_OUTPUT_DIR, XKBOUTPUT, [Path to XKB output dir])
+-
+-AC_SUBST(XKB_COMPILED_DIR)
+-
+ dnl and the rest of these are generic, so they're in config.h
+ dnl 
+ dnl though, thanks to the passing of some significant amount of time, the
+diff --git a/hw/xnest/Keyboard.c b/hw/xnest/Keyboard.c
+index 9adf78f..61a06b2 100644
+--- a/hw/xnest/Keyboard.c
++++ b/hw/xnest/Keyboard.c
+@@ -60,28 +60,6 @@ extern	Status	XkbGetControls(
+ 	XkbDescPtr		/* desc */
+ );
+ 
+-#ifndef XKB_BASE_DIRECTORY
+-#define	XKB_BASE_DIRECTORY	"/usr/X11R6/lib/X11/xkb/"
+-#endif
+-#ifndef XKB_CONFIG_FILE
+-#define	XKB_CONFIG_FILE		"X0-config.keyboard"
+-#endif
+-#ifndef XKB_DFLT_RULES_FILE
+-#define	XKB_DFLT_RULES_FILE	__XKBDEFRULES__
+-#endif
+-#ifndef XKB_DFLT_KB_LAYOUT
+-#define	XKB_DFLT_KB_LAYOUT	"us"
+-#endif
+-#ifndef XKB_DFLT_KB_MODEL
+-#define	XKB_DFLT_KB_MODEL	"pc101"
+-#endif
+-#ifndef XKB_DFLT_KB_VARIANT
+-#define	XKB_DFLT_KB_VARIANT	NULL
+-#endif
+-#ifndef XKB_DFLT_KB_OPTIONS
+-#define	XKB_DFLT_KB_OPTIONS	NULL
+-#endif
+-
+ #endif
+ 
+ DeviceIntPtr xnestKeyboardDevice = NULL;
+@@ -222,11 +200,11 @@ XkbError:
+ 	XkbGetControls(xnestDisplay, XkbAllControlsMask, xkb);
+ 
+ 	memset(&names, 0, sizeof(XkbComponentNamesRec));
+-	rules = XKB_DFLT_RULES_FILE;
+-	model = XKB_DFLT_KB_MODEL;
+-	layout = XKB_DFLT_KB_LAYOUT;
+-	variants = XKB_DFLT_KB_VARIANT;
+-	options = XKB_DFLT_KB_OPTIONS;
++	rules = XKB_DFLT_RULES;
++	model = XKB_DFLT_MODEL;
++	layout = XKB_DFLT_LAYOUT;
++	variants = XKB_DFLT_VARIANT;
++	options = XKB_DFLT_OPTIONS;
+ 
+ 	XkbSetRulesDflts(rules, model, layout, variants, options);
+ 	XkbInitKeyboardDeviceStruct(pDev, &names, &keySyms, modmap,
+diff --git a/include/xkb-config.h.in b/include/xkb-config.h.in
+index 29261de..d3cdd19 100644
+--- a/include/xkb-config.h.in
++++ b/include/xkb-config.h.in
+@@ -6,7 +6,19 @@
+ #define _XKB_CONFIG_H_
+ 
+ /* Default set of XKB rules. */
+-#undef __XKBDEFRULES__
++#undef XKB_DFLT_RULES
++
++/* Default XKB model. */
++#undef XKB_DFLT_MODEL
++
++/* Default XKB layout. */
++#undef XKB_DFLT_LAYOUT
++
++/* Default XKB variant. */
++#undef XKB_DFLT_VARIANT
++
++/* Default XKB options. */
++#undef XKB_DFLT_OPTIONS
+ 
+ /* Path to XKB definitions. */
+ #undef XKB_BASE_DIRECTORY
+diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
+index 4cf1bbf..57b8a82 100644
+--- a/include/xorg-server.h.in
++++ b/include/xorg-server.h.in
+@@ -106,7 +106,10 @@
+ /* Enable XKB per default */
+ #undef XKB_DFLT_DISABLED
+ 
+-/* Build XKB server */
++/* XKB default rules */
++#undef XKB_DFLT_RULES
++
++/* Build XKB support in server */
+ #undef XKB_IN_SERVER
+ 
+ /* Support loadable input and output drivers */
+@@ -160,9 +163,6 @@
+ /* Location of configuration file */
+ #undef __XCONFIGFILE__
+ 
+-/* XKB default rules */
+-#undef __XKBDEFRULES__
+-
+ /* Name of X server */
+ #undef __XSERVERNAME__
+ 
+diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
+index f10125b..573e731 100644
+--- a/xkb/xkbInit.c
++++ b/xkb/xkbInit.c
+@@ -85,27 +85,6 @@ typedef struct	_SrvXkmInfo {
+ 
+ /***====================================================================***/
+ 
+-#ifndef XKB_BASE_DIRECTORY
+-#define	XKB_BASE_DIRECTORY	"/usr/lib/X11/xkb"
+-#endif
+-#ifndef XKB_BIN_DIRECTORY
+-#define	XKB_BIN_DIRECTORY	XKB_BASE_DIRECTORY
+-#endif
+-#ifndef XKB_DFLT_RULES_FILE
+-#define	XKB_DFLT_RULES_FILE	"base"
+-#endif
+-#ifndef XKB_DFLT_KB_LAYOUT
+-#define	XKB_DFLT_KB_LAYOUT	"us"
+-#endif
+-#ifndef XKB_DFLT_KB_MODEL
+-#define	XKB_DFLT_KB_MODEL	"dflt"
+-#endif
+-#ifndef XKB_DFLT_KB_VARIANT
+-#define	XKB_DFLT_KB_VARIANT	NULL
+-#endif
+-#ifndef XKB_DFLT_KB_OPTIONS
+-#define	XKB_DFLT_KB_OPTIONS	NULL
+-#endif
+ #ifndef XKB_DFLT_DISABLED
+ #define	XKB_DFLT_DISABLED	True
+ #endif
+@@ -140,14 +119,14 @@ static char *
+ XkbGetRulesDflts(XkbRF_VarDefsPtr defs)
+ {
+     if (XkbModelDflt)	defs->model= XkbModelDflt;
+-    else		defs->model= XKB_DFLT_KB_MODEL;
++    else		defs->model= XKB_DFLT_MODEL;
+     if (XkbLayoutDflt)	defs->layout= XkbLayoutDflt;
+-    else		defs->layout= XKB_DFLT_KB_LAYOUT;
++    else		defs->layout= XKB_DFLT_LAYOUT;
+     if (XkbVariantDflt)	defs->variant= XkbVariantDflt;
+-    else		defs->variant= XKB_DFLT_KB_VARIANT;
++    else		defs->variant= XKB_DFLT_VARIANT;
+     if (XkbOptionsDflt)	defs->options= XkbOptionsDflt;
+-    else		defs->options= XKB_DFLT_KB_OPTIONS;
+-    return (rulesDefined?XkbRulesFile:XKB_DFLT_RULES_FILE);
++    else		defs->options= XKB_DFLT_OPTIONS;
++    return (rulesDefined?XkbRulesFile:XKB_DFLT_RULES);
+ }
+ 
+ static Bool
+@@ -159,7 +138,7 @@ char *			pval;
+ 
+     if (rulesDefined && (!XkbRulesFile))
+ 	return False;
+-    len= (XkbRulesFile?strlen(XkbRulesFile):strlen(XKB_DFLT_RULES_FILE));
++    len= (XkbRulesFile?strlen(XkbRulesFile):strlen(XKB_DFLT_RULES));
+     len+= (XkbModelUsed?strlen(XkbModelUsed):0);
+     len+= (XkbLayoutUsed?strlen(XkbLayoutUsed):0);
+     len+= (XkbVariantUsed?strlen(XkbVariantUsed):0);
+@@ -185,8 +164,8 @@ char *			pval;
+ 	strcpy(&pval[out],XkbRulesFile);
+ 	out+= strlen(XkbRulesFile);
+     } else {
+-	strcpy(&pval[out],XKB_DFLT_RULES_FILE);
+-	out+= strlen(XKB_DFLT_RULES_FILE);
++	strcpy(&pval[out],XKB_DFLT_RULES);
++	out+= strlen(XKB_DFLT_RULES);
+     }
+     pval[out++]= '\0';
+     if (XkbModelUsed) {
+@@ -255,8 +234,8 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout,
+     {
+ 	LogMessage(X_WARNING, "[xkb] No rule given, and no previous rule "
+ 		              "defined. Defaulting to '%s'.\n",
+-                              XKB_DFLT_RULES_FILE);
+-	rulesFile = XKB_DFLT_RULES_FILE;
++                              XKB_DFLT_RULES);
++	rulesFile = XKB_DFLT_RULES;
+     }
+ 
+     if (rulesFile) {
+-- 
+1.5.6.5
+
--- a/open-src/xserver/xorg/xorgcfg.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/xorgcfg.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -26,9 +26,9 @@
 # of the copyright holder.
 # 
 
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/cards.c hw/xfree86/utils/xorgcfg/cards.c
---- hw/xfree86/utils/xorgcfg/cards.c	2006-11-13 16:59:40.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/cards.c	2007-01-05 15:23:49.350763000 -0800
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/cards.c hw/xfree86/utils/xorgcfg/cards.c
+--- hw/xfree86/utils/xorgcfg/cards.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/cards.c	2008-09-23 16:32:33.107719000 -0700
 @@ -691,5 +691,8 @@ CompareCards(_Xconst void *left, _Xconst
  static int
  BCompareCards(_Xconst void *name, _Xconst void *card)
@@ -38,9 +38,9 @@
 +
    return (strcasecmp((char*)name, (*(CardsEntry**)card)->name));
  }
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/config.c hw/xfree86/utils/xorgcfg/config.c
---- hw/xfree86/utils/xorgcfg/config.c	2006-11-13 16:59:40.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/config.c	2007-01-05 15:23:49.351310000 -0800
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/config.c hw/xfree86/utils/xorgcfg/config.c
+--- hw/xfree86/utils/xorgcfg/config.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/config.c	2008-09-23 16:32:33.108368000 -0700
 @@ -107,14 +107,25 @@ StartConfig(void)
      static int first = 1;
      Widget pane, top, bottom, cancel;
@@ -93,13 +93,13 @@
      configp = XtCreateManagedWidget("work", formWidgetClass,
  				    pane, NULL, 0);
      current = XtCreateManagedWidget("wellcome", labelWidgetClass,
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/config.h hw/xfree86/utils/xorgcfg/config.h
---- hw/xfree86/utils/xorgcfg/config.h	2006-11-13 16:59:40.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/config.h	2007-01-05 15:23:49.382920000 -0800
-@@ -104,6 +104,29 @@
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/config.h hw/xfree86/utils/xorgcfg/config.h
+--- hw/xfree86/utils/xorgcfg/config.h	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/config.h	2008-09-23 16:32:33.130156000 -0700
+@@ -97,6 +97,29 @@
+ #define CONFIG_ACCESSX	3
  extern int config_mode;
  
- #ifndef __UNIXOS2__
 +#ifdef sun
 +#define CONFPATH	"%A," "%R," \
 +			"/etc/X11/%R," "%P/etc/X11/%R," \
@@ -126,18 +126,18 @@
  #define CONFPATH	"%A," "%R," \
  			"/etc/X11/%R," "%P/etc/X11/%R," \
  			"%E," "%F," \
-@@ -120,6 +143,7 @@ extern int config_mode;
+@@ -112,6 +135,7 @@ extern int config_mode;
  			"%P/etc/X11/%X," \
  			"%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \
  			"%P/lib/X11/%X"
 +#endif
- #else
- #define CONFPATH	"%&"XF86CONFIGDIR"/%R," "%&"XF86CONFIGDIR"/%X," \
- 			"%A," "%R," \
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/interface.c hw/xfree86/utils/xorgcfg/interface.c
---- hw/xfree86/utils/xorgcfg/interface.c	2006-12-21 10:50:47.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/interface.c	2007-01-05 15:23:49.384667000 -0800
-@@ -63,12 +63,16 @@
+ 
+ /*
+  * Types
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/interface.c hw/xfree86/utils/xorgcfg/interface.c
+--- hw/xfree86/utils/xorgcfg/interface.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/interface.c	2008-09-23 16:32:33.132868000 -0700
+@@ -63,11 +63,15 @@
  #ifdef PROJECT_ROOT
  #define DefaultXFree86Dir	PROJECT_ROOT
  #else
@@ -145,8 +145,7 @@
 +#define DefaultXFree86Dir	"/usr/X11"
  #endif
  
- #define IS_KBDDRIV(S) ((strcasecmp((S),"kbd") == 0) || \
- 	(strcasecmp((S), "keyboard") == 0))
+ #define IS_KBDDRIV(S) ((strcasecmp((S),"kbd") == 0))
  
 +#ifdef sun
 +#define DefaultOpenwinDir	"/usr/openwin"
@@ -155,7 +154,7 @@
  /*
   * Prototypes
   */
-@@ -130,6 +134,9 @@ char *XF86Font_path = NULL;
+@@ -129,6 +133,9 @@ char *XF86Font_path = NULL;
  char *XF86RGB_path = NULL;
  char *XkbConfig_path = NULL;
  char *XFree86Dir;
@@ -165,7 +164,7 @@
  static char XF86Config_path_static[1024];
  static char XkbConfig_path_static[1024];
  Bool xf86config_set = False;
-@@ -199,7 +206,7 @@ static XtResource appResources[] = {
+@@ -198,7 +205,7 @@ static XtResource appResources[] = {
        0, XtRString, "/etc/X11/"__XCONFIGFILE__},
  #endif
      {"menuBitmap",  "MenuBitmap",  XtRString, sizeof(char*),
@@ -174,7 +173,7 @@
  };
  
  static void
-@@ -243,10 +250,19 @@ main(int argc, char *argv[])
+@@ -241,10 +248,19 @@ main(int argc, char *argv[])
      int i, startedx;
      char *menuPixmapPath = NULL;
      XrmValue from, to;
@@ -194,7 +193,7 @@
      chdir(XFree86Dir);
  
  #ifdef USE_MODULES
-@@ -308,6 +324,20 @@ main(int argc, char *argv[])
+@@ -303,6 +319,20 @@ main(int argc, char *argv[])
  		    "%s/%s%s", XFree86Dir, XkbConfigDir, XkbConfigFile);
  	XkbConfig_path = XkbConfig_path_static;
      }
@@ -215,7 +214,7 @@
      toplevel = XtAppInitialize(&appcon, "XOrgCfg",
  		    	       NULL, 0,
  			       &argc, argv,
-@@ -507,7 +537,11 @@ main(int argc, char *argv[])
+@@ -502,7 +532,11 @@ main(int argc, char *argv[])
  	    case 0: {
  		char path[PATH_MAX];
  
@@ -227,7 +226,7 @@
  		execl(path, "twm", (void *)NULL);
  		exit(-127);
  	    }	break;
-@@ -543,6 +577,11 @@ main(int argc, char *argv[])
+@@ -538,6 +572,11 @@ main(int argc, char *argv[])
      if (startedx)
  	endx();
  
@@ -239,9 +238,33 @@
      return (0);
  }
  
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/loader.c hw/xfree86/utils/xorgcfg/loader.c
---- hw/xfree86/utils/xorgcfg/loader.c	2006-11-13 16:59:40.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/loader.c	2007-01-05 15:23:49.385165000 -0800
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/keyboard-cfg.c hw/xfree86/utils/xorgcfg/keyboard-cfg.c
+--- hw/xfree86/utils/xorgcfg/keyboard-cfg.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/keyboard-cfg.c	2008-09-23 16:32:33.164601000 -0700
+@@ -70,7 +70,7 @@ static void UpdateRulesPopups(void);
+  */
+ static XF86XkbRulesDescInfo **xkb_desc, *xkb_rules;
+ static int num_xkb_desc;
+-static char *XkbRulesDir = "share/X11/xkb/rules/";
++static char *XkbRulesDir = "lib/X11/xkb/rules/";
+ #ifdef XFREE98_XKB
+ static char *XkbRulesFile = "xfree98";
+ #else
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/keyboard-cfg.h hw/xfree86/utils/xorgcfg/keyboard-cfg.h
+--- hw/xfree86/utils/xorgcfg/keyboard-cfg.h	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/keyboard-cfg.h	2008-09-23 16:32:33.165075000 -0700
+@@ -37,7 +37,7 @@
+ /*
+  * All file names are from XProjectRoot or XWINHOME environment variable.
+  */
+-#define	XkbConfigDir		"share/X11/xkb/"
++#define	XkbConfigDir		"lib/X11/xkb/"
+ #define	XkbConfigFile		"X0-config.keyboard"
+ 
+ /*
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/loader.c hw/xfree86/utils/xorgcfg/loader.c
+--- hw/xfree86/utils/xorgcfg/loader.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/loader.c	2008-09-23 16:32:33.133513000 -0700
 @@ -277,7 +277,7 @@ LoaderInitializeOptions(void)
  			nfont_modules = numFontModules;
  			error_level = 0;
@@ -260,9 +283,9 @@
  		}
  		signal(SIGTRAP, SIG_DFL);
  		signal(SIGBUS, SIG_DFL);
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/loader.h hw/xfree86/utils/xorgcfg/loader.h
---- hw/xfree86/utils/xorgcfg/loader.h	2006-11-13 16:59:40.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/loader.h	2007-01-05 15:23:49.397328000 -0800
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/loader.h hw/xfree86/utils/xorgcfg/loader.h
+--- hw/xfree86/utils/xorgcfg/loader.h	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/loader.h	2008-09-23 16:32:33.133963000 -0700
 @@ -35,6 +35,9 @@
  
  #else
@@ -298,9 +321,9 @@
  typedef struct _xf86cfgModuleOptions {
      char *name;
      ModuleType type;
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/loadmod.c hw/xfree86/utils/xorgcfg/loadmod.c
---- hw/xfree86/utils/xorgcfg/loadmod.c	2006-12-21 10:50:47.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/loadmod.c	2007-01-05 15:23:49.398123000 -0800
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/loadmod.c hw/xfree86/utils/xorgcfg/loadmod.c
+--- hw/xfree86/utils/xorgcfg/loadmod.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/loadmod.c	2008-09-23 16:32:33.152176000 -0700
 @@ -41,6 +41,7 @@
  
  #define LOADER_PRIVATE
@@ -309,7 +332,7 @@
  
  #define	True		1
  #define False		0
-@@ -322,6 +323,51 @@ LOOKUP xfree86LookupTab[] = {
+@@ -320,6 +321,51 @@ LOOKUP xfree86LookupTab[] = {
      {0,0}
  };
  
@@ -361,7 +384,7 @@
  static DriverPtr driver;
  static ModuleInfoPtr info;
  static SymTabPtr chips;
-@@ -335,6 +381,7 @@ AddModuleOptions(char *name, const Optio
+@@ -333,6 +379,7 @@ AddModuleOptions(char *name, const Optio
      const OptionInfoRec *tmp;
      SymTabPtr ctmp;
      int count;
@@ -369,7 +392,7 @@
  
      /* XXX If the module is already in the list, then it means that
       * it is now being properly loaded by xf86cfg and the "fake" entry
-@@ -364,6 +411,13 @@ AddModuleOptions(char *name, const Optio
+@@ -362,6 +409,13 @@ AddModuleOptions(char *name, const Optio
      }
      else
  	ptr->option = NULL;
@@ -383,7 +406,7 @@
      if (vendor != -1 && chips) {
  	ptr->vendor = vendor;
  	for (count = 0, ctmp = chips; ctmp->name; ctmp++, count++)
-@@ -436,12 +490,16 @@ xf86cfgLoaderInitList(int type)
+@@ -434,12 +488,16 @@ xf86cfgLoaderInitList(int type)
      /* XXX Xf86cfg isn't able to provide enough wrapper functions
       * to these drivers. Maybe the drivers could also be changed
       * to work better when being loaded "just for testing" */
@@ -400,7 +423,7 @@
  }
  
  void
-@@ -451,12 +509,16 @@ xf86cfgLoaderFreeList(void)
+@@ -449,12 +507,16 @@ xf86cfgLoaderFreeList(void)
  }
  
  int
@@ -418,7 +441,7 @@
  
      driver = NULL;
      chips = NULL;
-@@ -472,14 +534,35 @@ xf86cfgCheckModule(void)
+@@ -470,14 +532,35 @@ xf86cfgCheckModule(void)
      }
      else if (driver && driver->AvailableOptions) {
  	/* at least fbdev does not call xf86MatchPciInstances in Probe */
@@ -456,36 +479,10 @@
  
      if (!noverify) {
  	XF86ModuleData *initdata = NULL;
-
---- hw/xfree86/utils/xorgcfg/keyboard-cfg.c
-+++ hw/xfree86/utils/xorgcfg/keyboard-cfg.c
-@@ -71,7 +71,7 @@ static void UpdateRulesPopups(void);
-  */
- static XF86XkbRulesDescInfo **xkb_desc, *xkb_rules;
- static int num_xkb_desc;
--static char *XkbRulesDir = "share/X11/xkb/rules/";
-+static char *XkbRulesDir = "lib/X11/xkb/rules/";
- #ifdef XFREE98_XKB
- static char *XkbRulesFile = "xfree98";
- #else
-
---- hw/xfree86/utils/xorgcfg/keyboard-cfg.h
-+++ hw/xfree86/utils/xorgcfg/keyboard-cfg.h
-@@ -37,7 +37,7 @@ #define _xf86cfg_keyboard_h
- /*
-  * All file names are from XProjectRoot or XWINHOME environment variable.
-  */
--#define	XkbConfigDir		"share/X11/xkb/"
-+#define	XkbConfigDir		"lib/X11/xkb/"
- #define	XkbConfigFile		"X0-config.keyboard"
- 
- /*
-
-
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/mouse-cfg.c hw/xfree86/utils/xorgcfg/mouse-cfg.c
---- hw/xfree86/utils/xorgcfg/mouse-cfg.c	2006-12-21 10:50:47.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/mouse-cfg.c	2007-01-05 15:23:49.414822000 -0800
-@@ -278,7 +278,10 @@ MouseApplyCallback(Widget w, XtPointer u
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/mouse-cfg.c hw/xfree86/utils/xorgcfg/mouse-cfg.c
+--- hw/xfree86/utils/xorgcfg/mouse-cfg.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/mouse-cfg.c	2008-09-23 16:32:33.175273000 -0700
+@@ -272,7 +272,10 @@ MouseApplyCallback(Widget w, XtPointer u
      XF86MiscMouseSettings mouse;
  
      XF86MiscGetMouseSettings(XtDisplay(w), &mouse);
@@ -496,7 +493,7 @@
  
      if (mouse.baudrate == 0 || mouse.baudrate < 0 || mouse.baudrate > 9600 ||
  	mouse.baudrate % 1200)
-@@ -294,7 +297,9 @@ MouseApplyCallback(Widget w, XtPointer u
+@@ -288,7 +291,9 @@ MouseApplyCallback(Widget w, XtPointer u
      mouse.emulate3buttons = emulate;
      mouse.flags |= MF_REOPEN;
  
@@ -506,9 +503,9 @@
  
      XFlush(XtDisplay(w));
      XF86MiscSetMouseSettings(XtDisplay(w), &mouse);
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/screen-cfg.c hw/xfree86/utils/xorgcfg/screen-cfg.c
---- hw/xfree86/utils/xorgcfg/screen-cfg.c	2006-11-13 16:59:40.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/screen-cfg.c	2007-01-05 15:23:49.415382000 -0800
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/screen-cfg.c hw/xfree86/utils/xorgcfg/screen-cfg.c
+--- hw/xfree86/utils/xorgcfg/screen-cfg.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/screen-cfg.c	2008-09-23 16:32:33.175877000 -0700
 @@ -73,6 +73,7 @@ static char *standard_modes[] = {
      "512x384",
      "1400x1050",
@@ -517,9 +514,9 @@
      "1920x1440",
  };
  
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/startx.c hw/xfree86/utils/xorgcfg/startx.c
---- hw/xfree86/utils/xorgcfg/startx.c	2006-11-13 16:59:40.000000000 -0800
-+++ hw/xfree86/utils/xorgcfg/startx.c	2007-01-05 15:23:49.415853000 -0800
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/startx.c hw/xfree86/utils/xorgcfg/startx.c
+--- hw/xfree86/utils/xorgcfg/startx.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/startx.c	2008-09-23 16:32:33.182971000 -0700
 @@ -46,11 +46,32 @@ Bool
  startx(void)
  {
@@ -553,7 +550,7 @@
      if (XF86Config_path == NULL) {
  	char *home, filename[PATH_MAX];
  	char commandline[PATH_MAX * 4];
-@@ -103,13 +124,25 @@ startx(void)
+@@ -100,13 +121,25 @@ startx(void)
      switch (xpid = fork()) {
  	case 0: {
  	    char path[PATH_MAX];
@@ -581,11 +578,11 @@
  	    exit(-127);
  	}   break;
  	case -1:
-diff -urp -x '*~' hw/xfree86/utils/xorgcfg/text-mode.c hw/xfree86/utils/xorgcfg/text-mode.c
---- hw/xfree86/utils/xorgcfg/text-mode.c	2007-01-05 15:23:35.567891000 -0800
-+++ hw/xfree86/utils/xorgcfg/text-mode.c	2007-01-05 15:23:49.417927000 -0800
-@@ -50,16 +50,14 @@
- 	(strcmp((X), "keyboard") == 0))
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgcfg/text-mode.c hw/xfree86/utils/xorgcfg/text-mode.c
+--- hw/xfree86/utils/xorgcfg/text-mode.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgcfg/text-mode.c	2008-09-23 16:32:33.186900000 -0700
+@@ -49,12 +49,10 @@
+ #define IS_KBDDRIV(X) ((strcmp((X),"kbd") == 0))
  
  #ifndef PROJECT_ROOT
 -#define PROJECT_ROOT "/usr"
@@ -593,17 +590,13 @@
  #endif
  
 -#ifndef XKB_RULES_DIR
- #ifndef __UNIXOS2__
 -#define XKB_RULES_DIR PROJECT_ROOT "/share/X11/xkb/rules"
+-#endif
 +#define XKB_RULES_DIR PROJECT_ROOT "/lib/X11/xkb/rules"
- #else
- #define XKB_RULES_DIR XF86CONFIGDIR "/xkb/rules"
- #endif
--#endif
  
  #define CONTROL_A	1
  #define CONTROL_D	4
-@@ -302,9 +300,21 @@ static int
+@@ -293,9 +291,21 @@ static int
  WriteXF86Config(void)
  {
      char *xf86config;
@@ -624,4 +617,4 @@
 +
      xf86config = DialogInput("Write "__XCONFIGFILE__, "Write configuration to file:",
  			     10, 60, XF86Config_path ? XF86Config_path :
- #ifndef __UNIXOS2__
+ 			     "/etc/X11/"__XCONFIGFILE__, "  Ok  ", " Cancel ", 0);
--- a/open-src/xserver/xorg/xorgconfig.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/xorgconfig.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,5 +1,6 @@
---- hw/xfree86/utils/xorgconfig/xorgconfig.c	2006-10-11 15:42:19.000000000 -0700
-+++ hw/xfree86/xf86config/xorgconfig.c	2006-03-28 14:31:38.614507000 -0800
+diff -urp -x '*~' -x '*.orig' hw/xfree86/utils/xorgconfig/xorgconfig.c hw/xfree86/utils/xorgconfig/xorgconfig.c
+--- hw/xfree86/utils/xorgconfig/xorgconfig.c	2008-09-23 11:24:59.000000000 -0700
++++ hw/xfree86/utils/xorgconfig/xorgconfig.c	2008-09-23 16:32:21.769251000 -0700
 @@ -1,3 +1,30 @@
 +/* Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
 + *
@@ -28,12 +29,12 @@
 + * or other dealings in this Software without prior written authorization
 + * of the copyright holder.
 + */
- 
  /*
   * This is a configuration program that will create a base XF86Config
-@@ -113,6 +144,15 @@
- static int getuid() { return 0; }
- #endif
+  * file based on menu choices. Its main feature is that clueless users
+@@ -112,6 +139,15 @@
+ 
+ #include "cards.h"
  
 +#ifdef SUNSOFT  /* setuid support for running under RBAC */
 +#include <fcntl.h>
@@ -45,9 +46,9 @@
 +static void configdir_check(void);
 +#endif
  
- #include <X11/Xlib.h>
- #include <X11/extensions/XKBstr.h>
-@@ -262,7 +302,11 @@
+ /*
+  * Define the following to 310 to remove references to XFree86 features that
+@@ -249,7 +285,11 @@ static char *intro_text =
  "This program will create a basic " CONFIGNAME " file, based on menu selections\n"
  "you make.  It will ask for a pathname when it is ready to write the file.\n"
  "\n"
@@ -59,7 +60,7 @@
  "no " CONFIGNAME " file is present there, " __XSERVERNAME__" will probe the system to\n"
  "autoconfigure itself.  You can run " __XSERVERNAME__ " -configure to generate a " CONFIGNAME "\n"
  "file based on the results of autoconfiguration, or let this program\n"
-@@ -1765,6 +1807,7 @@
+@@ -1702,6 +1742,7 @@ skipclockprobing:
  	config_virtual = 0;
  	for (;;) {
  	 	char modes[128];
@@ -67,7 +68,7 @@
  
  		emptylines();
  
-@@ -1798,24 +1841,29 @@
+@@ -1735,24 +1776,29 @@ skipclockprobing:
  		printf("\n");
  
  		modes[0] = '\0';
@@ -111,7 +112,7 @@
  		}
  		switch (c) {
  		case 0 :
-@@ -1946,10 +1994,21 @@
+@@ -1883,10 +1929,21 @@ static char *XF86Config_firstchunk_text 
  "#    Load        \"type1\"\n"
  #endif
  "    Load        \"freetype\"\n"
@@ -133,7 +134,7 @@
  "# This loads the DRI module\n"
  "#    Load       \"dri\"\n"
  "\n"
-@@ -2558,14 +2615,42 @@
+@@ -2463,20 +2520,71 @@ write_fontpath_section(FILE *f)
  static int 
  write_XF86Config(char *filename)
  {
@@ -177,9 +178,8 @@
 +
 +	if ((fd < 0) || (f == NULL)) {
  		printf("Failed to open filename for writing.\n");
- #ifndef __EMX__
  		if (getuid() != 0)
-@@ -2574,6 +2659,29 @@
+ 			printf("Maybe you need to be root to write to the specified directory?\n");
  		return(1);
  	}
  
@@ -209,10 +209,10 @@
  	fprintf(f, "%s", XF86Config_firstchunk_text);
  	write_fontpath_section(f);
  	fprintf(f, "%s", XF86Config_fontpathchunk_text);
-@@ -2800,7 +2908,11 @@
+@@ -2702,7 +2810,11 @@ ask_XF86Config_location(void) {
+ "I am going to write the " CONFIGNAME " file now. Make sure you don't accidently\n"
  "overwrite a previously configured one.\n\n");
  
- #ifndef __EMX__
 +#ifdef SUNSOFT
 +	if ((geteuid() == 0) || euid_changed) {
 +#else
@@ -221,7 +221,7 @@
  #ifdef PREFER_XF86CONFIG_IN_ETC
  		filename = Strdup("/etc/X11/" XCONFIGFILE);
  		filename = append_version(filename);
-@@ -2811,6 +2923,7 @@
+@@ -2713,6 +2825,7 @@ ask_XF86Config_location(void) {
  			return filename;
  #endif
  
@@ -229,7 +229,7 @@
  		if (filename)
  			free(filename);
  		filename = Strdup(TREEROOTCFG "/" XCONFIGFILE);
-@@ -2821,6 +2934,7 @@
+@@ -2723,6 +2836,7 @@ ask_XF86Config_location(void) {
  		printf("\n");
  		if (answerisyes(s))
  			return filename;
@@ -237,7 +237,7 @@
  
  #ifndef PREFER_XF86CONFIG_IN_ETC
  		if (filename)
-@@ -2936,12 +3050,18 @@
+@@ -2824,12 +2938,18 @@ static void
  configdir_check(void)
  {
  	/* /etc/X11 may not exist on some systems */
@@ -256,7 +256,7 @@
  	}
  }
  
-@@ -2952,6 +3072,19 @@
+@@ -2840,6 +2960,19 @@ configdir_check(void)
  
  int 
  main(int argc, char *argv[]) {
@@ -276,7 +276,7 @@
      
  	createtmpdir();
  
-@@ -2966,9 +3099,11 @@
+@@ -2854,9 +2987,11 @@ main(int argc, char *argv[]) {
  
  	emptylines();
  
--- a/open-src/xserver/xorg/xprint.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/xprint.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,29 +1,6 @@
---- dix/xpstubs.c	2008-09-04 11:36:37.719156000 -0700
-+++ dix/xpstubs.c.1	2008-09-04 11:38:51.427569000 -0700
-@@ -35,9 +35,9 @@ from The Open Group.
- #ifdef XPRINT
- #include "DiPrint.h"
- #else
-+#if 0
- extern Bool XpClientIsBitmapClient(ClientPtr client);
- extern Bool XpClientIsPrintClient(ClientPtr client, FontPathElementPtr fpe);
--#endif
- 
- Bool
- XpClientIsBitmapClient(
-@@ -53,6 +53,9 @@ XpClientIsPrintClient(
- {
-     return FALSE;
- }
-+#endif
-+#endif
-+
- #ifdef XPRINT
- int
- PrinterOptions(
 --- include/dpi.h	1969-12-31 16:00:00.000000000 -0800
 +++ include/dpi.h.new	2008-09-24 09:56:39.448121000 -0700
-@@ -0,0 +1,123 @@
+@@ -0,0 +1,95 @@
 +/*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
 + * Use is subject to license terms.
@@ -104,51 +81,25 @@
 +#ifndef DPI_H
 +#define DPI_H
 +
-+extern Bool XpClientDPIAdd(
-+#if NeedFunctionPrototypes
-+XpContextPtr, int, int
-+#endif
-+);
++extern Bool XpClientDPIAdd(XpContextPtr, int, int);
 +
-+extern Bool XpClientDPIGetData(
-+#if NeedFunctionPrototypes
-+XpContextPtr, int *, int *
-+#endif
-+);
++extern Bool XpClientDPIGetData(XpContextPtr, int *, float *);
 +
-+extern Bool XpClientDPIFindData(
-+#if NeedFunctionPrototypes
-+int, int *, int *
-+#endif
-+);
++extern Bool XpClientDPIFindData(int, int *, float *);
 +
-+extern XpClientDPIPtr XpClientDPIGetRec(
-+#if NeedFunctionPrototypes
-+XpContextPtr
-+#endif
-+);
++extern XpClientDPIPtr XpClientDPIGetRec(XpContextPtr);
 +
-+extern XpClientDPIPtr XpClientDPIFindRec(
-+#if NeedFunctionPrototypes
-+int
-+#endif
-+);
++extern XpClientDPIPtr XpClientDPIFindRec(int);
 +
-+extern Bool XpClientDPISet(
-+#if NeedFunctionPrototypes
-+XpContextPtr, int
-+#endif
-+);
++extern Bool XpClientDPISet(XpContextPtr, int);
 +
-+extern FontPtr XpClientDPIGrabFont(
-+#if NeedFunctionPrototypes
-+XpClientDPIPtr, FontPtr
-+#endif
-+);
++extern FontPtr XpClientDPIGrabFont(XpClientDPIPtr, FontPtr);
 +
 +#endif
---- dix/dispatch.c	2008-09-23 20:00:53.010137000 -0700
-+++ dix/dispatch.c.new	2008-09-24 10:10:13.109578000 -0700
+
+diff -urp -x '*~' -x '*.orig' dix/dispatch.c dix/dispatch.c
+--- dix/dispatch.c	2008-10-17 15:51:32.379041000 -0700
++++ dix/dispatch.c	2008-10-17 15:51:50.036961000 -0700
 @@ -1,3 +1,33 @@
 +/*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
@@ -183,7 +134,7 @@
  /************************************************************
  
  Copyright 1987, 1989, 1998  The Open Group
-@@ -3545,6 +3575,21 @@ InitProcVectors(void)
+@@ -3391,6 +3421,21 @@ InitProcVectors(void)
      
  }
  
@@ -192,7 +143,7 @@
 + * change the X_OpenFont to ProcXpOpenFont and SProcOpenFont. This allows
 + * apps using scaling to load two fonts.
 + */
-+void
++_X_HIDDEN void
 +ChangeProcVector(int vector, int (* proc)(), int (* sproc)())
 +{
 +    if (vector >= 0 && vector < 256 && proc && sproc)
@@ -205,8 +156,9 @@
  /**********************
   * CloseDownClient
   *
---- dix/dixfonts.c	2008-09-23 20:00:58.340424000 -0700
-+++ dix/dixfonts.c.new	2008-09-24 10:21:40.683384000 -0700
+diff -urp -x '*~' -x '*.orig' dix/dixfonts.c dix/dixfonts.c
+--- dix/dixfonts.c	2008-10-10 11:12:48.000000000 -0700
++++ dix/dixfonts.c	2008-10-17 15:51:50.038909000 -0700
 @@ -1,3 +1,32 @@
 +/*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
@@ -240,16 +192,17 @@
  /************************************************************************
  Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
  
-@@ -95,6 +124,8 @@ static int  size_slept_fpes = 0;
+@@ -97,6 +126,9 @@ static int  size_slept_fpes = 0;
  static FontPathElementPtr *slept_fpes = (FontPathElementPtr *) 0;
  static FontPatternCachePtr patternCache;
  
-+static void (*XpSetFont)();     /* BUG 4402782: clientDPI */
++static void (*XpSetFont)(register ClientPtr client,
++    FontPtr pFont);     /* BUG 4402782: clientDPI */
 +
  _X_EXPORT int
  FontToXError(err)
      int         err;
-@@ -226,6 +257,20 @@ FreeFPE (FontPathElementPtr fpe)
+@@ -223,6 +255,20 @@ FreeFPE (FontPathElementPtr fpe)
      }
  }
  
@@ -260,7 +213,7 @@
 + * call, so no other job could inadvertently get the wrong value. We do not need
 + * to have this information dependent on the clientID
 + */
-+void
++_X_HIDDEN void
 +SetXpFontFunc(void (*func)())
 +{
 +    XpSetFont = func;
@@ -270,7 +223,7 @@
  static Bool
  doOpenFont(ClientPtr client, OFclosurePtr c)
  {
-@@ -361,6 +406,15 @@ doOpenFont(ClientPtr client, OFclosurePt
+@@ -358,6 +404,15 @@ doOpenFont(ClientPtr client, OFclosurePt
      if (patternCache && pfont != c->non_cachable_font)
  	CacheFontPattern(patternCache, c->origFontName, c->origFontNameLen,
  			 pfont);
@@ -286,8 +239,9 @@
  bail:
      if (err != Successful && c->client != serverClient) {
  	SendErrorToClient(c->client, X_OpenFont, 0,
---- Xext/xprint.c	2008-09-27 08:56:13.159552000 -0700
-+++ Xext/xprint.c.new	2008-09-27 08:56:13.183691000 -0700
+diff -urp -x '*~' -x '*.orig' Xext/xprint.c Xext/xprint.c
+--- Xext/xprint.c	2008-10-10 11:12:48.000000000 -0700
++++ Xext/xprint.c	2008-10-17 15:51:50.089810000 -0700
 @@ -1,4 +1,33 @@
  /*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
@@ -322,59 +276,53 @@
  (c) Copyright 1996 Hewlett-Packard Company
  (c) Copyright 1996 International Business Machines Corp.
  (c) Copyright 1996 Sun Microsystems, Inc.
-@@ -68,7 +97,7 @@ copyright holders.
- #ifdef HAVE_DIX_CONFIG_H
+@@ -69,6 +98,7 @@ copyright holders.
  #include <dix-config.h>
  #endif
--
+ 
 +#include <stdio.h>
  #include <X11/X.h>
  #include <X11/Xos.h>
  #define NEED_EVENTS
-@@ -86,6 +115,7 @@ copyright holders.
+@@ -86,6 +116,10 @@ copyright holders.
  #include "../hw/xprint/DiPrint.h"
  #include "../hw/xprint/attributes.h"
  #include "modinit.h"
 +#include "resource.h"
++#include "dixfont.h"
++#include "swapreq.h"
++#include "dpi.h"
  
  static void XpResetProc(ExtensionEntry *);
  
-@@ -117,6 +147,8 @@ static int ProcXpQueryScreens(ClientPtr)
+@@ -117,6 +151,8 @@ static int ProcXpQueryScreens(ClientPtr)
  static int ProcXpGetPageDimensions(ClientPtr);
  static int ProcXpSetImageResolution(ClientPtr);
  static int ProcXpGetImageResolution(ClientPtr);
-+static int ProcXpClientDpi();           /* BUG: 4402782 */
-+int ProcXpOpenFont();           /* BUG: 4402782 */
++static int ProcXpClientDpi(ClientPtr);           /* BUG: 4402782 */
++static int ProcXpOpenFont(ClientPtr);           /* BUG: 4402782 */
  
  static void SwapXpNotifyEvent(xPrintPrintEvent *, xPrintPrintEvent *);
  static void SwapXpAttributeEvent(xPrintAttributeEvent *, xPrintAttributeEvent *);
-@@ -144,6 +176,7 @@ static int SProcXpRehashPrinterList(Clie
+@@ -144,6 +180,7 @@ static int SProcXpRehashPrinterList(Clie
  static int SProcXpGetPageDimensions(ClientPtr);
  static int SProcXpSetImageResolution(ClientPtr);
  static int SProcXpGetImageResolution(ClientPtr);
-+static int SProcXpClientDpi();
++static int SProcXpClientDpi(ClientPtr);
  
  static void SendXpNotify(XpContextPtr, int, int);
  static void SendAttributeNotify(XpContextPtr, int);
-@@ -169,6 +202,8 @@ typedef struct  _xpScreen {
+@@ -167,6 +204,9 @@ typedef struct  _xpScreen {
      struct _driver *drivers;
  } XpScreenRec, *XpScreenPtr;
  
 +static XpClientDPIPtr client_dpi_head;          /* BUG: 4402782 */
++static int client_server_font;          /* BUG: 4402782 */
 +
  /*
   * Each context has a list of XpClients indicating which clients have
   * associated this context with their connection.
-@@ -236,6 +271,8 @@ static int XpErrorBase;
- static unsigned long XpGeneration = 0;
- static int XpClientPrivateIndex;
- 
-+static int client_server_font;          /* BUG: 4402782 */
-+
- /* Variables for the context private machinery. 
-  * These must be initialized at compile time because
-  * main() calls InitOutput before InitExtensions, and the
-@@ -270,6 +307,287 @@ static RESTYPE RTclient, RTcontext, RTpa
+@@ -259,6 +299,285 @@ static RESTYPE RTclient, RTcontext, RTpa
   */
  static CARD32 allEvents = XPPrintMask | XPAttributeMask;
  
@@ -388,11 +336,11 @@
 + * Create an entry for the clientDPI to be stored. This entry will hold lookup
 + * information (context and clientAsMask), and the font and scaling information.
 + */
-+Bool
-+XpClientDPIAdd(context, clientAsMask, client_dpi)       /* Bug: 4402782 */
-+XpContextPtr context;
-+int clientAsMask;
-+int client_dpi;
++_X_HIDDEN Bool
++XpClientDPIAdd(				/* Bug: 4402782 */
++XpContextPtr context,
++int clientAsMask,
++int client_dpi)
 +{
 +    XpClientDPIPtr new;
 +    XpClientDPIPtr temp = client_dpi_head;
@@ -440,12 +388,12 @@
 +/*
 + * This function is currently not called. This is not a good state, but we cannot
 + * call the function at the end of the document since the client is still connected
-+ * and believe that fonts that were opened are still open for it. (They are, but this * list contains the links to go between the fonts). Need to check if there is a way
++ * and believe that fonts that were opened are still open for it. (They are, but this 
++ * list contains the links to go between the fonts). Need to check if there is a way
 + * to remove the client when the client terminates its connection with Xprt?
 + */
 +static Bool
-+XpClientDPIRemove(context)      /* Bug: 4402782 */
-+XpContextPtr context;
++XpClientDPIRemove(XpContextPtr context)      /* Bug: 4402782 */
 +{
 +    XpClientDPIPtr temp = client_dpi_head;
 +    Bool found = FALSE;
@@ -501,11 +449,11 @@
 +/*
 + * Return the DPI and scale factor the the caller
 + */
-+Bool
-+XpClientDPIGetData(context, pDPI, pSF)  /* Bug: 4402782 */
-+XpContextPtr context;
-+int *pDPI;
-+float *pSF;
++_X_HIDDEN Bool
++XpClientDPIGetData(		 /* Bug: 4402782 */
++XpContextPtr context,
++int *pDPI,
++float *pSF)
 +{
 +    XpClientDPIPtr temp = client_dpi_head;
 +    Bool found = FALSE;
@@ -526,13 +474,13 @@
 +}       /* Bug: 4402782 */
 +
 +/*
-+ * Return the DPI and scale factor the the caller
++ * Return the DPI and scale factor the caller
 + */
-+Bool
-+XpClientDPIFindData(clientAsMask, pDPI, pSF)    /* Bug: 4402782 */
-+int clientAsMask;
-+int *pDPI;
-+float *pSF;
++_X_HIDDEN Bool
++XpClientDPIFindData(		    /* Bug: 4402782 */
++int clientAsMask,
++int *pDPI,
++float *pSF)
 +{
 +    XpClientDPIPtr temp = client_dpi_head;
 +    Bool found = FALSE;
@@ -554,9 +502,8 @@
 +/*
 + * Return the DPI and scale factor the the caller
 + */
-+XpClientDPIPtr
-+XpClientDPIGetRec(context)      /* Bug: 4402782 */
-+XpContextPtr context;
++_X_HIDDEN XpClientDPIPtr
++XpClientDPIGetRec(XpContextPtr context)      /* Bug: 4402782 */
 +{
 +    XpClientDPIPtr temp = client_dpi_head;
 +    Bool found = FALSE;
@@ -575,9 +522,8 @@
 +    return temp;
 +}       /* Bug: 4402782 */
 +
-+XpClientDPIPtr
-+XpClientDPIFindRec(clientAsMask)        /* Bug: 4402782 */
-+int clientAsMask;
++_X_HIDDEN XpClientDPIPtr
++XpClientDPIFindRec(int clientAsMask)        /* Bug: 4402782 */
 +{
 +    XpClientDPIPtr temp = client_dpi_head;
 +    Bool found = FALSE;
@@ -596,10 +542,10 @@
 +    return temp;
 +}       /* Bug: 4402782 */
 +
-+Bool
-+XpClientDPISet(context, serverDPI)      /* Bug: 4402782 */
-+XpContextPtr context;
-+int serverDPI;
++_X_HIDDEN Bool
++XpClientDPISet(      /* Bug: 4402782 */
++XpContextPtr context,
++int serverDPI)
 +{
 +    XpClientDPIPtr temp = client_dpi_head;
 +    Bool found = FALSE;
@@ -618,10 +564,10 @@
 +    return found;
 +}       /* Bug: 4402782 */
 +
-+FontPtr
-+XpClientDPIGrabFont(pClientDPI, pFont)  /* Bug: 4402782 */
-+XpClientDPIPtr pClientDPI;
-+FontPtr pFont;
++_X_HIDDEN FontPtr
++XpClientDPIGrabFont(	/* Bug: 4402782 */
++XpClientDPIPtr pClientDPI,
++FontPtr pFont)
 +{
 +    FontPtr tempFont = pFont;
 +    Bool found = FALSE;
@@ -639,21 +585,21 @@
 +    return tempFont;
 +}       /* Bug: 4402782 */
 +
-+void
-+XpClientDPIGetPos(pClientDPI, pCx, pSx) /* Bug: 4402782 */
-+XpClientDPIPtr pClientDPI;
-+int *pCx;
-+int *pSx;
++_X_HIDDEN void
++XpClientDPIGetPos(	 /* Bug: 4402782 */
++XpClientDPIPtr pClientDPI,
++int *pCx,
++int *pSx)
 +{
 +    *pCx = pClientDPI->client_x;
 +    *pSx = pClientDPI->server_x;
 +}
 +
-+void
-+XpClientDPISetPos(pClientDPI, Cx, Sx)   /* Bug 4402782 */
-+XpClientDPIPtr pClientDPI;
-+int Cx;
-+int Sx;
++_X_HIDDEN void
++XpClientDPISetPos(	/* Bug 4402782 */
++XpClientDPIPtr pClientDPI,
++int Cx,
++int Sx)
 +{
 +    pClientDPI->client_x = Cx;
 +    pClientDPI->server_x = Sx;
@@ -662,23 +608,19 @@
  
  /*******************************************************************************
   *
-@@ -336,6 +654,15 @@ XpExtensionInit(INITARGS)
+@@ -310,6 +629,11 @@ XpExtensionInit(INITARGS)
+ 	    screenInfo.screens[i]->CloseScreen = XpCloseScreen;
  	}
      }
-     DeclareExtensionSecurity(XP_PRINTNAME, TRUE);
 +    /*
 +     * BUG: 4402782: Client DPI. Set the font open function to new Xprt functions
 +     *               that will do font renaming/ double opening if necessary.
 +     */
-+    {
-+        extern int SProcOpenFont();
-+
-+        ChangeProcVector(X_OpenFont, ProcXpOpenFont, SProcOpenFont);
-+    } /* BUG: 4402782 */
++    ChangeProcVector(X_OpenFont, ProcXpOpenFont, SProcOpenFont);
  }
  
  static void
-@@ -495,6 +822,8 @@ ProcXpDispatch(ClientPtr client)
+@@ -442,6 +766,8 @@ ProcXpDispatch(ClientPtr client)
              return ProcXpSetImageResolution(client);
  	case X_PrintGetImageResolution:
              return ProcXpGetImageResolution(client);
@@ -687,7 +629,7 @@
  	default:
  	    return BadRequest;
      }
-@@ -560,8 +889,10 @@ ProcXpSwappedDispatch(ClientPtr client)
+@@ -507,8 +833,10 @@ ProcXpSwappedDispatch(ClientPtr client)
              return SProcXpSetImageResolution(client);
  	case X_PrintGetImageResolution:
              return SProcXpGetImageResolution(client);
@@ -700,7 +642,7 @@
      }
  }
  
-@@ -742,7 +1073,9 @@ ProcXpGetPageDimensions(ClientPtr client
+@@ -689,7 +1017,9 @@ ProcXpGetPageDimensions(ClientPtr client
      xRectangle rect;
      xPrintGetPageDimensionsReply rep;
      XpContextPtr pContext;
@@ -710,7 +652,7 @@
  
      REQUEST_SIZE_MATCH(xPrintGetPageDimensionsReq);
  
-@@ -760,6 +1093,13 @@ ProcXpGetPageDimensions(ClientPtr client
+@@ -707,6 +1037,13 @@ ProcXpGetPageDimensions(ClientPtr client
         (pContext->funcs.GetReproducibleArea == 0))
          return BadImplementation;
  
@@ -724,7 +666,7 @@
      result = pContext->funcs.GetMediumDimensions(pContext, &width, &height);
      if(result != Success)
          return result;
-@@ -771,12 +1111,12 @@ ProcXpGetPageDimensions(ClientPtr client
+@@ -718,12 +1055,12 @@ ProcXpGetPageDimensions(ClientPtr client
      rep.type = X_Reply;
      rep.sequenceNumber = client->sequence;
      rep.length = 0;
@@ -741,13 +683,13 @@
  
      if(client->swapped)
      {
-@@ -885,6 +1225,220 @@ ProcXpGetImageResolution(ClientPtr clien
+@@ -832,6 +1169,218 @@ ProcXpGetImageResolution(ClientPtr clien
      return client->noClientException;
  }
  
++/* BUG: 4402782: Accept the client DPI request */
 +static int
-+ProcXpClientDpi(client) /* BUG: 4402782: Accept the client DPI request */
-+    ClientPtr client;
++ProcXpClientDpi(ClientPtr client)
 +{
 +    REQUEST(xPrintClientDpiReq);
 +    xPrintClientDpiReply rep;
@@ -756,8 +698,7 @@
 +
 +    REQUEST_SIZE_MATCH(xPrintClientDpiReq);
 +
-+    if((pContext = (XpContextPtr)client->devPrivates[XpClientPrivateIndex].ptr)
-+       == (XpContextPtr)NULL)
++    if((pContext = XP_GETPRIV(client)) == (XpContextPtr)NULL)
 +    {
 +        client->errorValue = stuff->printContext;
 +        return XpErrorBase+XPBadContext;
@@ -780,10 +721,10 @@
 +    return client->noClientException;
 +}       /* BUG: 4402782 */
 +
-+void
-+ProcXpSetFont(client, pFont)    /* BUG: 4402782: Store the client or server font */
-+    register ClientPtr client;
-+    FontPtr pFont;
++static void
++ProcXpSetFont(    /* BUG: 4402782: Store the client or server font */
++    register ClientPtr client,
++    FontPtr pFont)
 +{
 +    XpClientDPIPtr clientDPI;
 +
@@ -799,13 +740,13 @@
 +        clientDPI->head->server_font = pFont;
 +}       /* BUG: 4402782 */
 +
-+void
-+ProcXpMakeFontName(font_name, font_len, base_name, base_len, client_dpi)/* BUG: 4402782 */
-+    char *font_name;
-+    int  *font_len;
-+    char *base_name;
-+    int   base_len;
-+    int   client_dpi;
++static void
++ProcXpMakeFontName( /* BUG: 4402782 */
++    char *font_name,
++    int  *font_len,
++    char *base_name,
++    int   base_len,
++    int   client_dpi)
 +{
 +    int x, num = 0;
 +
@@ -813,7 +754,7 @@
 +     * Create a new font name (xlfd) using the clients DPI values.
 +     */
 +    for(x=0;x<base_len;x++)
-+        if(base_name[x] == '-')
++        if(base_name[x] == '-') {
 +            if(++num == 7)
 +            {
 +                strncpy(font_name, base_name, x+1);
@@ -848,14 +789,14 @@
 +            else
 +	    {
 +	    }
++	}
 +}       /* BUG: 4402782 */
 +
 +
-+int
-+ProcXpOpenFont(client)  /* BUG: 4402782 */
-+    register ClientPtr client;
++static int
++ProcXpOpenFont(ClientPtr client)  /* BUG: 4402782 */
 +{
-+    int err;
++    int err = Success;
 +    int client_dpi;
 +    float scl_fact = 1;
 +    int open_two = 0;
@@ -910,7 +851,6 @@
 +        XpClientFontsPtr new;
 +        char *font_name;
 +        int   font_len = 0;
-+        int   x, num = 0;
 +
 +        font_name = (char *)malloc(sizeof(char)*stuff->nbytes+4);
 +        memset(font_name, 0, stuff->nbytes+4);
@@ -962,16 +902,15 @@
  /*******************************************************************************
   *
   * RehashPrinterList : Cause the server's list of printers to be rebuilt.
-@@ -1497,7 +2051,7 @@ ProcXpStartJob(ClientPtr client)
- {
+@@ -1360,6 +1909,7 @@ ProcXpStartJob(ClientPtr client)
      REQUEST(xPrintStartJobReq);
      XpContextPtr pContext;
--    int result = Success;
-+    int ires, result = Success;         /* BUG: 4402782 */
+     int result = Success;
++    int ires;         /* BUG: 4402782 */
  
      REQUEST_SIZE_MATCH(xPrintStartJobReq);
  
-@@ -1528,6 +2082,13 @@ ProcXpStartJob(ClientPtr client)
+@@ -1389,6 +1939,13 @@ ProcXpStartJob(ClientPtr client)
  
      SendXpNotify(pContext, XPStartJobNotify, FALSE);
  
@@ -985,13 +924,12 @@
      if (client->noClientException != Success)
          return client->noClientException;
      else
-@@ -2724,6 +3285,20 @@ SProcXpGetImageResolution(ClientPtr clie
+@@ -2583,6 +3140,19 @@ SProcXpGetImageResolution(ClientPtr clie
      return ProcXpGetImageResolution(client);
  }
  
 +static int
-+SProcXpClientDpi(client)        /* BUG: 4402782 */
-+    ClientPtr client;
++SProcXpClientDpi(ClientPtr client)        /* BUG: 4402782 */
 +{
 +    long n;
 +    int i;
--- a/open-src/xserver/xorg/xprint01.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/xprint01.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,27 +1,31 @@
---- hw/xprint/Makefile.am	2008-09-18 08:44:25.509594000 -0700
-+++ hw/xprint/Makefile.am.new	2008-09-18 08:50:42.896701000 -0700
-@@ -1,16 +1,16 @@
+diff -urp -x '*~' -x '*.orig' hw/xprint/Makefile.am hw/xprint/Makefile.am
+--- hw/xprint/Makefile.am	2008-10-10 11:12:48.000000000 -0700
++++ hw/xprint/Makefile.am	2008-10-17 15:52:06.580191000 -0700
+@@ -1,11 +1,11 @@
 -SUBDIRS = doc pcl pcl-mono raster ps etc config
-+SUBDIRS = doc pcl raster ps config
++SUBDIRS = doc pcl raster ps etc config
  
  bin_PROGRAMS = Xprt
  
  Xprt_CFLAGS = @DIX_CFLAGS@ @XPRINT_CFLAGS@ \
- 	-DXPRINT -DPRINT_ONLY_SERVER -D_XP_PRINT_SERVER_  \
+ 	-DPRINT_ONLY_SERVER -D_XP_PRINT_SERVER_  \
  	-DXPRINTDIR=\"$(libdir)/X11/xserver\"    \
 -	-DXPRASTERDDX -DXPPCLDDX -DXPMONOPCLDDX -DXPPSDDX \
 +	-DXPRASTERDDX -DXPPCLDDX -DXPPSDDX \
  	-DXFree86Server
  
  Xprt_LDFLAGS = -L$(top_srcdir)
- Xprt_LDADD = @XPRINT_LIBS@ ps/libps.la raster/libraster.la  \
--	pcl/libpcl.la pcl-mono/libpcl.la ../../fb/libfb.la \
-+	pcl/libpcl.la ../../fb/libfb.la \
- 	../../render/librender.la ../../mi/libmi.la ../../Xext/libXext.la \
- 	@FREETYPE_LIBS@
- 
---- hw/xprint/pcl/PclArc.c	2006-09-17 23:04:18.000000000 -0700
-+++ hw/xprint/pcl/PclArc.c.new	2008-09-24 10:31:37.863682000 -0700
+@@ -14,7 +14,6 @@ XPRINT_LIBS = \
+ 	ps/libps.la \
+ 	raster/libraster.la \
+ 	pcl/libpcl.la \
+-	pcl-mono/libpcl.la \
+ 	$(top_builddir)/fb/libfb.la \
+ 	$(top_builddir)/render/librender.la \
+ 	$(top_builddir)/dix/libXpdix.la \
+diff -urp -x '*~' -x '*.orig' hw/xprint/pcl/PclArc.c hw/xprint/pcl/PclArc.c
+--- hw/xprint/pcl/PclArc.c	2008-10-10 11:12:48.000000000 -0700
++++ hw/xprint/pcl/PclArc.c	2008-10-17 15:52:06.580966000 -0700
 @@ -1,3 +1,32 @@
 +/*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
@@ -69,7 +73,7 @@
        return;
 @@ -87,7 +121,10 @@ PclDoArc(
      pConPriv = (PclContextPrivPtr)
- 			pCon->devPrivates[PclContextPrivateIndex].ptr;
+ 	dixLookupPrivate(&pCon->devPrivates, PclContextPrivateKey);
      XpGetReproductionArea( pCon, &repro );
 -    
 +    pClientDPI = (XpClientDPIPtr) XpClientDPIGetRec(pCon);
@@ -104,8 +108,9 @@
  	  
  	  /*
  	   * Clean up the temporary regions
---- hw/xprint/pcl/PclArea.c	2006-09-17 23:04:18.000000000 -0700
-+++ hw/xprint/pcl/PclArea.c.new	2008-09-24 10:31:37.878339000 -0700
+diff -urp -x '*~' -x '*.orig' hw/xprint/pcl/PclArea.c hw/xprint/pcl/PclArea.c
+--- hw/xprint/pcl/PclArea.c	2008-10-10 11:12:48.000000000 -0700
++++ hw/xprint/pcl/PclArea.c	2008-10-17 15:52:06.582540000 -0700
 @@ -1,3 +1,32 @@
 +/*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
@@ -307,8 +312,9 @@
  
      /*
       * Update the destination's GC to the source's GC.
---- hw/xprint/pcl/PclColor.c	2006-09-17 23:04:18.000000000 -0700
-+++ hw/xprint/pcl/PclColor.c.new	2008-09-24 10:31:37.893034000 -0700
+diff -urp -x '*~' -x '*.orig' hw/xprint/pcl/PclColor.c hw/xprint/pcl/PclColor.c
+--- hw/xprint/pcl/PclColor.c	2008-10-10 11:12:48.000000000 -0700
++++ hw/xprint/pcl/PclColor.c	2008-10-17 15:52:06.602989000 -0700
 @@ -1,3 +1,32 @@
 +/*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
@@ -402,7 +408,7 @@
  			    if( pdefs[i].flags & DoRed )
  				  r = pdefs[i].red;
  			    if( pdefs[i].flags & DoGreen )
-@@ -496,19 +538,28 @@ PclUpdateColormap(DrawablePtr pDrawable,
+@@ -498,19 +540,28 @@ PclUpdateColormap(DrawablePtr pDrawable,
  		
  		for(i = 0; i < cmap->pVisual->ColormapEntries; i++ )
  		  {
@@ -443,8 +449,9 @@
  		      sprintf( t, "\033*v%ua%ub%uc%dI", r, g, b, i );
  		      SEND_PCL( outFile, t );
  		  }
---- hw/xprint/pcl/PclGC.c	2006-09-17 23:04:18.000000000 -0700
-+++ hw/xprint/pcl/PclGC.c.new	2008-09-24 10:31:37.908117000 -0700
+diff -urp -x '*~' -x '*.orig' hw/xprint/pcl/PclGC.c hw/xprint/pcl/PclGC.c
+--- hw/xprint/pcl/PclGC.c	2008-10-10 11:12:48.000000000 -0700
++++ hw/xprint/pcl/PclGC.c	2008-10-17 15:52:06.604340000 -0700
 @@ -1,3 +1,32 @@
 +/*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
@@ -478,7 +485,7 @@
  /*******************************************************************
  **
  **    *********************************************************
-@@ -800,6 +829,12 @@ PclComputeCompositeClip(
+@@ -804,6 +833,12 @@ PclComputeCompositeClip(
  {
      if (pDrawable->type == DRAWABLE_WINDOW)
      {
@@ -491,7 +498,7 @@
  	WindowPtr       pWin = (WindowPtr) pDrawable;
  	RegionPtr       pregWin;
  	Bool            freeTmpClip, freeCompClip;
-@@ -815,6 +850,19 @@ PclComputeCompositeClip(
+@@ -819,6 +854,19 @@ PclComputeCompositeClip(
  	    freeTmpClip = FALSE;
  	}
  	freeCompClip = pGC->freeCompClip;
@@ -511,8 +518,9 @@
  
  	/*
  	 * if there is no client clip, we can get by with just keeping the
---- hw/xprint/pcl/PclPrint.c	2006-09-17 23:04:18.000000000 -0700
-+++ hw/xprint/pcl/PclPrint.c.new	2008-09-24 10:31:37.922983000 -0700
+diff -urp -x '*~' -x '*.orig' hw/xprint/pcl/PclPrint.c hw/xprint/pcl/PclPrint.c
+--- hw/xprint/pcl/PclPrint.c	2008-10-10 11:12:48.000000000 -0700
++++ hw/xprint/pcl/PclPrint.c	2008-10-17 15:52:06.605144000 -0700
 @@ -1,3 +1,32 @@
 +/*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
@@ -580,8 +588,9 @@
      SEND_PCL( pConPriv->pPageFile, t );
  
      return Success;
---- hw/xprint/pcl/PclText.c	2006-09-17 23:04:18.000000000 -0700
-+++ hw/xprint/pcl/PclText.c.new	2008-09-24 10:31:37.939144000 -0700
+diff -urp -x '*~' -x '*.orig' hw/xprint/pcl/PclText.c hw/xprint/pcl/PclText.c
+--- hw/xprint/pcl/PclText.c	2008-10-10 11:12:48.000000000 -0700
++++ hw/xprint/pcl/PclText.c	2008-10-17 15:52:06.606327000 -0700
 @@ -1,3 +1,32 @@
 +/*
 + * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
@@ -641,7 +650,7 @@
  	return x;
 +        pCon = PclGetContextFromWindow( (WindowPtr)pDrawable );
 +    pConPriv = (PclContextPrivPtr)
-+                        pCon->devPrivates[PclContextPrivateIndex].ptr;
++	dixLookupPrivate(&pCon->devPrivates, PclContextPrivateKey);
  
 -    GetGlyphs(pGC->font, (unsigned long)count, (unsigned char *)string,
 -						Linear8Bit, &n, charinfo);
@@ -682,7 +691,7 @@
  
 @@ -125,12 +197,12 @@ char font_type;
      pConPriv = (PclContextPrivPtr)
- 			pCon->devPrivates[PclContextPrivateIndex].ptr;
+ 	dixLookupPrivate(&pCon->devPrivates, PclContextPrivateKey);
      pSoftFontInfo = pConPriv->pSoftFontInfo;
 -    font_type = isInternal(pGC->font);
 +    font_type = isInternal(useFont);
@@ -790,8 +799,7 @@
 -
      pCon = PclGetContextFromWindow( (WindowPtr)pDrawable );
      pConPriv = (PclContextPrivPtr)
--			pCon->devPrivates[PclContextPrivateIndex].ptr;
-+                        pCon->devPrivates[PclContextPrivateIndex].ptr;
+ 	dixLookupPrivate(&pCon->devPrivates, PclContextPrivateKey);
 +
 +    pClientDPI = XpClientDPIGetRec(pCon);
 +
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/xpstubs.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,18 @@
+diff -urp -x '*~' -x '*.orig' dix/Makefile.am dix/Makefile.am
+--- dix/Makefile.am	2008-09-23 11:24:56.000000000 -0700
++++ dix/Makefile.am	2008-09-24 20:26:33.498245000 -0700
+@@ -68,12 +68,12 @@ Xserver-dtrace.h: $(srcdir)/Xserver.d
+ 
+ # Generate dtrace object code for probes in libdix
+ dtrace-dix.o: $(top_srcdir)/dix/Xserver.d $(am_libdix_la_OBJECTS)
+-	$(DTRACE) -G -C -o $@ -s $(top_srcdir)/dix/Xserver.d .libs/*.o
++	$(DTRACE) -G -C -o $@ -s $(top_srcdir)/dix/Xserver.d $(am_libdix_la_OBJECTS:%.lo=.libs/%.o)
+ 
+ noinst_PROGRAMS = dix.O
+ 
+ dix.O: dtrace-dix.o $(am_libdix_la_OBJECTS)
+-	ld -r -o $@ .libs/*.o
++	ld -r -o $@ $(am_libdix_la_OBJECTS:%.lo=.libs/%.o)
+ endif
+ 
+ dix.c:
--- a/open-src/xserver/xorg/xtsol.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xorg/xtsol.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,112 +1,92 @@
-diff -urp -x '*~' -x '*.orig' Makefile.am Makefile.am
---- Makefile.am	2007-09-20 14:21:57.003122000 -0700
-+++ Makefile.am	2007-09-20 14:22:20.855563000 -0700
-@@ -34,6 +34,10 @@ if DBE
- DBE_DIR=dbe
- endif
- 
-+if BUILD_TSOL_MODULE
-+TSOL_DIR=tsol
-+endif
-+
- SUBDIRS = \
- 	doc \
- 	include \
-@@ -59,6 +63,7 @@ SUBDIRS = \
- 	$(COMPOSITE_DIR) \
- 	$(GLX_DIR) \
- 	IA \
-+	$(TSOL_DIR) \
- 	exa \
- 	hw
- 
-diff -urp -x '*~' -x '*.orig' Xext/Makefile.am Xext/Makefile.am
---- Xext/Makefile.am	2007-09-20 14:21:56.845261000 -0700
-+++ Xext/Makefile.am	2007-09-20 14:22:20.855984000 -0700
-@@ -149,6 +149,10 @@ if DPMSExtension
- MODULE_SRCS += $(DPMS_SRCS)
- endif
- 
-+# Solaris Trusted Extensions / XACE compatibility
-+TSOL_SRCS = tsolCompat.c
-+BUILTIN_SRCS += $(TSOL_SRCS)
-+
- # Now take all of the above, mix well, bake for 10 minutes and get libXext*.la
- 
- libXext_la_SOURCES =		$(BUILTIN_SRCS) $(MODULE_SRCS)
-diff -urp -x '*~' -x '*.orig' Xext/security.c Xext/security.c
---- Xext/security.c	2006-11-16 09:39:03.000000000 -0800
-+++ Xext/security.c	2007-09-20 14:22:20.858055000 -0700
-@@ -72,10 +72,15 @@ typedef struct {
-     ((extnsn)->devPrivates[securityExtnsnPrivateIndex].val)
- #define STATEPTR(client) \
-     ((client)->devPrivates[securityClientPrivateIndex].ptr)
-+#ifdef TSOL	/* Maintaining binary compatibility with Xtsol module */
-+#define TRUSTLEVEL(client) ((client)->trustLevel)
-+#define AUTHID(client)    ((client)->authId)
-+#else
- #define TRUSTLEVEL(client) \
-     (((SecurityClientStateRec*)STATEPTR(client))->trustLevel)
- #define AUTHID(client) \
-     (((SecurityClientStateRec*)STATEPTR(client))->authId)
-+#endif
- 
- CallbackListPtr SecurityValidateGroupCallback = NULL;  /* see security.h */
- 
+# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Use subject to license terms.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+# 
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+
 diff -urp -x '*~' -x '*.orig' configure.ac configure.ac
---- configure.ac	2007-09-20 14:21:57.684612000 -0700
-+++ configure.ac	2007-09-20 14:22:20.875351000 -0700
-@@ -127,6 +127,13 @@ AC_CHECK_FUNC([mmap], AC_DEFINE(HAS_MMAP
- dnl Find the math libary
+--- configure.ac	2008-10-17 15:44:58.744720000 -0700
++++ configure.ac	2008-10-17 15:45:15.246237000 -0700
+@@ -215,6 +215,14 @@ dnl Find the math libary
  AC_CHECK_LIB(m, sqrt)
+ AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT, 1, [Have the 'cbrt' function]))
  
 +dnl Check for libtsol for Solaris Trusted Extensions module
 +AC_CHECK_LIB(tsol, bsllow, [BUILD_TSOL_MODULE=yes], [BUILD_TSOL_MODULE=no])
 +AM_CONDITIONAL(BUILD_TSOL_MODULE, [test x$BUILD_TSOL_MODULE = xyes])
 +if test "x$BUILD_TSOL_MODULE" = xyes; then
-+	TSOL_LIB='$(top_builddir)/tsol/libxtsol.la -ltsol -ltsnet -lsecdb -lbsm'
++	TSOL_LIB='$(top_builddir)/tsol/libxtsol.la'
++	TSOL_SYS_LIBS='-ltsol -ltsnet -lsecdb -lbsm'
 +fi
 +
  AC_CHECK_HEADERS([ndbm.h dbm.h rpcsvc/dbm.h])
  
  dnl AGPGART headers
-@@ -1026,7 +1029,7 @@
+@@ -1227,8 +1235,8 @@ AC_MSG_RESULT([$XVFB])
  AM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
  
  if test "x$XVFB" = xyes; then
--	XVFB_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $CWRAP_LIB $OS_LIB $LIBS"
-+	XVFB_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $TSOL_LIB $CWRAP_LIB $OS_LIB $LIBS"
+-	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB"
+-	XVFB_SYS_LIBS="$XVFBMODULES_LIBS"
++	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $TSOL_LIB"
++	XVFB_SYS_LIBS="$XVFBMODULES_LIBS $TSOL_SYS_LIBS"
  	AC_SUBST([XVFB_LIBS])
+ 	AC_SUBST([XVFB_SYS_LIBS])
  fi
- 
-@@ -1042,7 +1045,7 @@
+@@ -1245,8 +1253,8 @@ AC_MSG_RESULT([$XNEST])
  AM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes])
  
  if test "x$XNEST" = xyes; then
--	XNEST_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $CWRAP_LIB $OS_LIB $LIBS"
-+	XNEST_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $TSOL_LIB $CWRAP_LIB $OS_LIB $LIBS"
+-	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $DIX_LIB $OS_LIB $CONFIG_LIB $IA_LIB"
+-	XNEST_SYS_LIBS="$XNESTMODULES_LIBS"
++	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $DIX_LIB $OS_LIB $CONFIG_LIB $IA_LIB $TSOL_LIB"
++	XNEST_SYS_LIBS="$XNESTMODULES_LIBS $TSOL_SYS_LIBS"
  	AC_SUBST([XNEST_LIBS])
+ 	AC_SUBST([XNEST_SYS_LIBS])
  fi
- 
-@@ -1403,7 +1406,7 @@
- 
+@@ -1609,8 +1617,8 @@ AC_MSG_RESULT([$XPRINT])
  if test "x$XPRINT" = xyes; then
- 	PKG_CHECK_MODULES([XPRINT], [printproto x11 xfont $XDMCP_MODULES xau])
--	XPRINT_EXTENSIONS="$XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $COMPOSITE_LIB $RANDR_LIB $XI_LIB $FIXES_LIB $DAMAGE_LIB $XI_LIB $GLX_LIBS"
-+	XPRINT_EXTENSIONS="$XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $COMPOSITE_LIB $RANDR_LIB $XI_LIB $FIXES_LIB $DAMAGE_LIB $XI_LIB $GLX_LIBS $TSOL_LIB"
- 	XPRINT_LIBS="$XPRINT_LIBS $DIX_LIB $XKB_LIB $XKB_STUB_LIB $XPRINT_EXTENSIONS $MI_LIB $MIEXT_DAMAGE_LIB $CWRAP_LIB $OS_LIB $LIBS"
- 	AC_SUBST([XPRINT_CFLAGS])
- 	AC_SUBST([XPRINT_LIBS])
-@@ -1562,7 +1565,7 @@
-     # dix os fb mi extension glx (NOTYET) damage shadow xpstubs
-     #KDRIVE_PURE_LIBS="$DIX_LIB $OS_LIB $FB_LIB $XEXT_LIB $MIEXT_DAMAGE_LIB \
-     #    $MIEXT_SHADOW_LIB $XPSTUBS_LIB"
+ 	PKG_CHECK_MODULES([XPRINTMODULES], [printproto x11 xfont $XDMCP_MODULES xau])
+ 	XPRINT_CFLAGS="$XPRINTMODULES_CFLAGS -DXPRINT"
+-	XPRINT_LIBS="$XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $COMPOSITE_LIB $RANDR_LIB $XI_LIB $FIXES_LIB $DAMAGE_LIB $XI_LIB $GLX_LIBS $MIEXT_DAMAGE_LIB $XKB_LIB $XKB_STUB_LIB"
+-	XPRINT_SYS_LIBS="$XPRINTMODULES_LIBS"
++	XPRINT_LIBS="$XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $COMPOSITE_LIB $RANDR_LIB $XI_LIB $FIXES_LIB $DAMAGE_LIB $XI_LIB $GLX_LIBS $MIEXT_DAMAGE_LIB $XKB_LIB $XKB_STUB_LIB $TSOL_LIB"
++	XPRINT_SYS_LIBS="$XPRINTMODULES_LIBS $TSOL_SYS_LIBS"
+ 
+ 	xpconfigdir=$libdir/X11/xserver
+ 	AC_SUBST([xpconfigdir])
+@@ -1965,7 +1973,7 @@ if test "$KDRIVE" = yes; then
+     
+     KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H $TSLIB_CFLAGS"
+ 
 -    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $OS_LIB"
 +    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $IA_LIB $TSOL_LIB $OS_LIB"
      KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a'
      case $host_os in
  	*linux*)
-@@ -1869,3 +1873,6 @@ xorg-server.pc
+@@ -2272,3 +2280,6 @@ xorg-server.pc
  
  # Add Sun IA extension
  AC_OUTPUT([IA/Makefile])
@@ -114,8 +94,8 @@
 +# Add Sun Trusted Extensions extension
 +AC_OUTPUT([tsol/Makefile])
 diff -urp -x '*~' -x '*.orig' dix/dispatch.c dix/dispatch.c
---- dix/dispatch.c	2007-09-20 14:21:56.671742000 -0700
-+++ dix/dispatch.c	2007-09-20 14:22:20.877325000 -0700
+--- dix/dispatch.c	2008-10-10 11:12:48.000000000 -0700
++++ dix/dispatch.c	2008-10-17 15:45:15.263147000 -0700
 @@ -74,8 +74,8 @@ Equipment Corporation.
  
  ******************************************************************/
@@ -123,23 +103,50 @@
 -/* XSERVER_DTRACE additions:
 - * Copyright 2005-2006 Sun Microsystems, Inc.  All rights reserved.
 +/* 
-+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
++ * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
   *
   * Permission is hereby granted, free of charge, to any person obtaining a
   * copy of this software and associated documentation files (the
-@@ -188,6 +188,11 @@ static void KillAllClients(void);
+@@ -177,6 +177,10 @@ extern int connBlockScreenStart;
  
- static void DeleteClientFromAnySelections(ClientPtr client);
+ static void KillAllClients(void);
  
 +#ifdef TSOL
-+#include <X11/extensions/security.h>
 +SecurityHookPtr pSecHook = NULL;
 +#endif /* TSOL */
 +
  static int nextFreeClientID; /* always MIN free client ID */
  
  static int	nClients;	/* number of authorized clients */
-@@ -3563,6 +3568,11 @@ CloseDownClient(register ClientPtr clien
+@@ -789,7 +793,12 @@ ProcCirculateWindow(ClientPtr client)
+     return(client->noClientException);
+ }
+ 
+-static int
++#ifdef TSOL
++_X_EXPORT
++#else
++static
++#endif
++int
+ GetGeometry(ClientPtr client, xGetGeometryReply *rep)
+ {
+     DrawablePtr pDraw;
+@@ -1927,7 +1936,12 @@ ProcPutImage(ClientPtr client)
+      return (client->noClientException);
+ }
+ 
+-static int
++#ifdef TSOL
++_X_EXPORT
++#else
++static
++#endif
++int
+ DoGetImage(ClientPtr client, int format, Drawable drawable, 
+            int x, int y, int width, int height, 
+            Mask planemask, xGetImageReply **im_return)
+@@ -3400,6 +3414,11 @@ CloseDownClient(ClientPtr client)
  	    UngrabServer(client);
  	}
  	BITCLEAR(grabWaiters, client->index);
@@ -151,38 +158,9 @@
  	DeleteClientFromAnySelections(client);
  	ReleaseActiveGrabs(client);
  	DeleteClientFontStuff(client);
-@@ -3716,6 +3726,11 @@ void InitClient(ClientPtr client, int i,
-     }
- #endif
-     client->replyBytesRemaining = 0;
-+#ifdef TSOL	/* Maintaining binary compatibility with Xtsol module */
-+    client->trustLevel = XSecurityClientTrusted;
-+    client->CheckAccess = NULL;
-+    client->authId = 0;
-+#endif
- #ifdef XAPPGROUP
-     client->appgroup = NULL;
- #endif
-@@ -3761,6 +3776,8 @@ InitClientPrivates(ClientPtr client)
- 	    ppriv->ptr = (pointer)NULL;
-     }
- 
-+#ifndef TSOL
-+/* Temporarily removed to preserve compatibility with old Xtsol module */
-     /* Allow registrants to initialize the serverClient devPrivates */
-     if (!client->index && ClientStateCallback)
-     {
-@@ -3771,6 +3788,7 @@ InitClientPrivates(ClientPtr client)
- 	clientinfo.setup = (xConnSetup *) NULL;
- 	CallCallbacks((&ClientStateCallback), (pointer)&clientinfo);
-     } 
-+#endif /* TSOL */    
-     return 1;
- }
- 
 diff -urp -x '*~' -x '*.orig' dix/events.c dix/events.c
---- dix/events.c	2007-09-20 14:21:56.673705000 -0700
-+++ dix/events.c	2007-09-20 14:22:20.879320000 -0700
+--- dix/events.c	2008-10-10 11:12:48.000000000 -0700
++++ dix/events.c	2008-10-17 15:45:15.265785000 -0700
 @@ -76,7 +76,7 @@ Equipment Corporation.
  
  /*****************************************************************
@@ -192,7 +170,7 @@
  
  All rights reserved.
  
-@@ -266,7 +266,12 @@ static void DoEnterLeaveEvents(
+@@ -299,7 +299,12 @@ static void DoEnterLeaveEvents(
      int mode
  );
  
@@ -206,10 +184,10 @@
      int x,
      int y
  );
-@@ -1947,7 +1952,12 @@ PointInBorderSize(WindowPtr pWin, int x,
-     return FALSE;
- }
- 
+@@ -2142,7 +2147,12 @@ PointInBorderSize(WindowPtr pWin, int x,
+  *
+  * @returns the window at the given coordinates.
+  */
 -static WindowPtr 
 +#ifdef TSOL
 +_X_EXPORT
@@ -219,10 +197,10 @@
 +WindowPtr 
  XYToWindow(int x, int y)
  {
-     register WindowPtr  pWin;
+     WindowPtr  pWin;
 diff -urp -x '*~' -x '*.orig' dix/property.c dix/property.c
---- dix/property.c	2006-10-24 17:25:19.000000000 -0700
-+++ dix/property.c	2007-09-20 14:22:20.880023000 -0700
+--- dix/property.c	2008-10-10 11:12:48.000000000 -0700
++++ dix/property.c	2008-10-17 15:45:15.358024000 -0700
 @@ -45,6 +45,34 @@ SOFTWARE.
  
  ******************************************************************/
@@ -258,9 +236,9 @@
  #ifdef HAVE_DIX_CONFIG_H
  #include <dix-config.h>
  #endif
-@@ -62,6 +90,11 @@ SOFTWARE.
+@@ -60,6 +88,11 @@ SOFTWARE.
+ #include "swaprep.h"
  #include "xace.h"
- #endif
  
 +#ifdef TSOL
 +#include "extnsionst.h"
@@ -270,9 +248,9 @@
  /*****************************************************************
   * Property Stuff
   *
-@@ -245,6 +278,12 @@ ProcChangeProperty(ClientPtr client)
+@@ -239,6 +272,12 @@ ProcChangeProperty(ClientPtr client)
+ 	return(BadAtom);
      }
- #endif
  
 +#ifdef TSOL
 +    if (pSecHook)
@@ -280,54 +258,24 @@
 +	   stuff->type, (int)format, (int)mode, len, (pointer)&stuff[1], TRUE);
 +    else
 +#endif /* TSOL */
-     err = ChangeWindowProperty(pWin, stuff->property, stuff->type, (int)format,
- 			       (int)mode, len, (pointer)&stuff[1], TRUE);
-     if (err != Success)
-@@ -298,6 +337,9 @@ ChangeWindowProperty(WindowPtr pWin, Ato
- 	pProp->size = len;
-         pProp->next = pWin->optional->userProps;
-         pWin->optional->userProps = pProp;
-+#ifdef TSOL
-+        pProp->secPrivate = (pointer)NULL;
-+#endif /* TSOL */	
+     err = dixChangeWindowProperty(client, pWin, stuff->property, stuff->type,
+ 				  (int)format, (int)mode, len, &stuff[1],
+ 				  TRUE);
+@@ -629,6 +668,11 @@ ProcDeleteProperty(ClientPtr client)
+ 	return (BadAtom);
      }
-     else
-     {
-@@ -400,6 +442,9 @@ DeleteProperty(WindowPtr pWin, Atom prop
- 	event.u.property.time = currentTime.milliseconds;
- 	DeliverEvents(pWin, &event, 1, (WindowPtr)NULL);
- 	xfree(pProp->data);
-+#ifdef TSOL
-+	xfree(pProp->secPrivate);
-+#endif /* TSOL */
-         xfree(pProp);
-     }
-     return(Success);
-@@ -422,6 +467,9 @@ DeleteAllWindowProperties(WindowPtr pWin
- 	DeliverEvents(pWin, &event, 1, (WindowPtr)NULL);
- 	pNextProp = pProp->next;
-         xfree(pProp->data);
-+#ifdef TSOL
-+	xfree(pProp->secPrivate);
-+#endif /* TSOL */
-         xfree(pProp);
- 	pProp = pNextProp;
-     }
-@@ -675,6 +723,11 @@ ProcDeleteProperty(register ClientPtr cl
-     }
- #endif
  
 +#ifdef TSOL
 +    if (pSecHook)
 +	result = (*pSecHook->DeleteProperty)(client, pWin, stuff->property);
 +    else
 +#endif /* TSOL */
-     result = DeleteProperty(pWin, stuff->property);
+     result = DeleteProperty(client, pWin, stuff->property);
      if (client->noClientException != Success)
  	return(client->noClientException);
 diff -urp -x '*~' -x '*.orig' dix/window.c dix/window.c
---- dix/window.c	2007-03-17 17:29:16.000000000 -0700
-+++ dix/window.c	2007-09-20 14:22:20.881976000 -0700
+--- dix/window.c	2008-10-10 11:12:48.000000000 -0700
++++ dix/window.c	2008-10-17 15:45:15.360112000 -0700
 @@ -98,6 +98,33 @@ Equipment Corporation.
  
  ******************************************************************/
@@ -362,7 +310,7 @@
  
  #ifdef HAVE_DIX_CONFIG_H
  #include <dix-config.h>
-@@ -181,6 +208,11 @@ static Bool TileScreenSaver(int i, int k
+@@ -172,6 +199,11 @@ static Bool TileScreenSaver(int i, int k
  _X_EXPORT int numSaveUndersViewable = 0;
  _X_EXPORT int deltaSaveUndersViewable = 0;
  
@@ -374,8 +322,8 @@
  #ifdef DEBUG
  /******
   * PrintWindowTree
-@@ -846,6 +878,11 @@ FreeWindowResources(register WindowPtr p
-     register ScreenPtr pScreen = pWin->drawable.pScreen;
+@@ -820,6 +852,11 @@ FreeWindowResources(WindowPtr pWin)
+     ScreenPtr pScreen = pWin->drawable.pScreen;
  
      DeleteWindowFromAnySaveSet(pWin);
 +#ifdef TSOL
@@ -386,7 +334,7 @@
      DeleteWindowFromAnySelections(pWin);
      DeleteWindowFromAnyEvents(pWin, TRUE);
      REGION_UNINIT(pScreen, &pWin->clipList);
-@@ -1929,7 +1966,12 @@ IsSiblingAboveMe(
+@@ -1915,7 +1952,12 @@ IsSiblingAboveMe(
      return(Below);
  }
  
@@ -398,9 +346,9 @@
 +#endif
 +BoxPtr
  WindowExtents(
-     register WindowPtr pWin,
-     register BoxPtr pBox)
-@@ -1965,7 +2007,12 @@ MakeBoundingRegion (
+     WindowPtr pWin,
+     BoxPtr pBox)
+@@ -1952,7 +1994,12 @@ MakeBoundingRegion (
      return pRgn;
  }
  
@@ -414,7 +362,7 @@
  ShapeOverlap (
      WindowPtr	pWin,
      BoxPtr	pWinBox,
-@@ -2174,7 +2221,12 @@ WhereDoIGoInTheStack(
+@@ -2161,7 +2208,12 @@ WhereDoIGoInTheStack(
      }
  }
  
@@ -426,40 +374,37 @@
 +#endif
 +void
  ReflectStackChange(
-     register WindowPtr pWin,
-     register WindowPtr pSib,
-diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86AutoConfig.c hw/xfree86/common/xf86AutoConfig.c
---- hw/xfree86/common/xf86AutoConfig.c	2007-09-20 14:21:57.861184000 -0700
-+++ hw/xfree86/common/xf86AutoConfig.c	2007-09-20 14:22:20.882348000 -0700
-@@ -52,6 +52,7 @@
- 	"\tLoad\t\"record\"\n" \
- 	"\tLoad\t\"dri\"\n" \
- 	"\tLoad\t\"IA\"\n" \
-+	"\tLoad\t\"xtsol\"\n" \
- 	"EndSection\n\n"
+     WindowPtr pWin,
+     WindowPtr pSib,
+diff -urp -x '*~' -x '*.orig' hw/dmx/Makefile.am hw/dmx/Makefile.am
+--- hw/dmx/Makefile.am	2008-10-17 15:44:58.745221000 -0700
++++ hw/dmx/Makefile.am	2008-10-17 15:45:15.360748000 -0700
+@@ -87,6 +87,7 @@ XDMX_LIBS = \
+         input/libdmxinput.a \
+         config/libdmxconfig.a \
+ 	$(top_builddir)/IA/libIA.la \
++	$(top_builddir)/tsol/libxtsol.la
+ 	$(XSERVER_LIBS)
  
- #define BUILTIN_DEVICE_NAME \
+ Xdmx_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
 diff -urp -x '*~' -x '*.orig' hw/xfree86/common/xf86Config.c hw/xfree86/common/xf86Config.c
---- hw/xfree86/common/xf86Config.c	2007-09-20 14:21:57.862784000 -0700
-+++ hw/xfree86/common/xf86Config.c	2007-09-20 14:22:20.883535000 -0700
-@@ -298,6 +298,10 @@ xf86ModulelistFromConfig(pointer **optli
- 	/* Sun addition - IA extension */
- 	ptr = xf86addNewLoadDirective(ptr, "IA", XF86_LOAD_MODULE, NULL);
- 	count++;
-+
-+	/* Sun addition - extension for Solaris Trusted Extensions */
-+	ptr = xf86addNewLoadDirective(ptr, "xtsol", XF86_LOAD_MODULE, NULL);
-+	count++;
-     }
+--- hw/xfree86/common/xf86Config.c	2008-10-17 15:44:58.746569000 -0700
++++ hw/xfree86/common/xf86Config.c	2008-10-17 15:45:15.381539000 -0700
+@@ -127,6 +127,7 @@ static ModuleDefault ModuleDefaults[] = 
+     {.name = "dri2",     .toLoad = TRUE,    .load_opt=NULL},
+ #endif
+     {.name = "ia",       .toLoad = TRUE,    .load_opt=NULL},
++    {.name = "xtsol",    .toLoad = TRUE,    .load_opt=NULL},
+     {.name = NULL,       .toLoad = FALSE,   .load_opt=NULL}
+ };
  
-     /*
 diff -urp -x '*~' -x '*.orig' hw/xfree86/dixmods/Makefile.am hw/xfree86/dixmods/Makefile.am
---- hw/xfree86/dixmods/Makefile.am	2007-09-20 14:21:57.863164000 -0700
-+++ hw/xfree86/dixmods/Makefile.am	2007-09-20 14:22:20.883822000 -0700
-@@ -109,3 +109,11 @@ extsmodule_LTLIBRARIES += libIA.la
- libIA_la_LDFLAGS = -avoid-version
- libIA_la_LIBADD = $(top_builddir)/IA/libIA.la
- libIA_la_SOURCES = iamodule.c
+--- hw/xfree86/dixmods/Makefile.am	2008-10-17 15:44:58.747030000 -0700
++++ hw/xfree86/dixmods/Makefile.am	2008-10-17 15:45:15.382121000 -0700
+@@ -119,3 +119,11 @@ extsmodule_LTLIBRARIES += libia.la
+ libia_la_LDFLAGS = -avoid-version
+ libia_la_LIBADD = $(top_builddir)/IA/libia.la
+ libia_la_SOURCES = iamodule.c
 +
 +if BUILD_TSOL_MODULE
 +# Sun Trusted Extensions extension module additions
@@ -468,33 +413,9 @@
 +libxtsol_la_LIBADD = $(top_builddir)/tsol/libxtsol.la
 +libxtsol_la_SOURCES = tsolmodule.c
 +endif
-diff -urp -x '*~' -x '*.orig' include/dixstruct.h include/dixstruct.h
---- include/dixstruct.h	2006-10-24 17:25:19.000000000 -0700
-+++ include/dixstruct.h	2007-09-20 14:22:20.884203000 -0700
-@@ -127,7 +127,20 @@ typedef struct _Client {
-     unsigned char requestLog[MAX_REQUEST_LOG];
-     int         requestLogIndex;
- #endif
-+#ifdef TSOL	/* Maintaining binary compatibility with Xtsol module */
-+    int	(*pad1)(ClientPtr /*client*/);
-+#endif    
-     unsigned long replyBytesRemaining;
-+#ifdef TSOL	/* Maintaining binary compatibility with Xtsol module */
-+    XID                authId;
-+    unsigned int trustLevel;
-+    pointer (* CheckAccess)(
-+	ClientPtr /*pClient*/,
-+	XID /*id*/,
-+	RESTYPE /*classes*/,
-+	Mask /*access_mode*/,
-+	pointer /*resourceval*/);
-+#endif
- #ifdef XAPPGROUP
-     struct _AppGroupRec*	appgroup;
- #endif
 diff -urp -x '*~' -x '*.orig' include/extnsionst.h include/extnsionst.h
---- include/extnsionst.h	2006-10-24 17:25:19.000000000 -0700
-+++ include/extnsionst.h	2007-09-20 14:22:20.884616000 -0700
+--- include/extnsionst.h	2008-10-02 14:01:26.000000000 -0700
++++ include/extnsionst.h	2008-10-17 15:45:15.383877000 -0700
 @@ -45,6 +45,34 @@ SOFTWARE.
  
  ******************************************************************/
@@ -530,9 +451,9 @@
  #ifndef EXTENSIONSTRUCT_H
  #define EXTENSIONSTRUCT_H 
  
-@@ -54,6 +82,10 @@ SOFTWARE.
- #include "extension.h"
+@@ -55,6 +83,10 @@ SOFTWARE.
  #include "gc.h"
+ #include "privates.h"
  
 +#ifdef TSOL
 +#include "inputstr.h"
@@ -541,149 +462,53 @@
  typedef struct _ExtensionEntry {
      int index;
      void (* CloseDown)(	/* called at server shutdown */
-@@ -69,6 +101,9 @@ typedef struct _ExtensionEntry {
-     pointer extPrivate;
-     unsigned short (* MinorOpcode)(	/* called for errors */
- 	ClientPtr /* client */);
-+#ifdef TSOL	/* Maintaining binary compatibility with Xtsol module */
-+    Bool secure;		/* extension visible to untrusted clients? */
-+#endif
-     DevUnion *devPrivates;
- } ExtensionEntry;
- 
-@@ -146,5 +181,28 @@ extern void DeclareExtensionSecurity(
-     char * /*extname*/,
-     Bool /*secure*/);
+@@ -108,5 +140,21 @@ extern Bool AddExtensionAlias(
+ extern ExtensionEntry *CheckExtension(const char *extname);
+ extern ExtensionEntry *GetExtensionEntry(int major);
  
 +#ifdef TSOL
 +typedef struct
 +{
-+   XID (*CheckAuthorization)(unsigned int, char *, unsigned int,
++    XID (*CheckAuthorization)(unsigned int, char *, unsigned int,
 +        char *, ClientPtr , char **);
-+    int (*InitWindow)(ClientPtr, WindowPtr);
 +    int (*ChangeWindowProperty)(ClientPtr, WindowPtr, Atom, Atom, int, int,
 +        unsigned long, pointer, Bool);
 +    int (*DeleteProperty)(ClientPtr, WindowPtr, Atom);
-+    char (*CheckPropertyAccess)(ClientPtr, WindowPtr, ATOM, Mask);
-+    void (*ProcessKeyboard)(xEvent *, KeyClassPtr);
 +    void (*DeleteClientFromAnySelections)(ClientPtr);
 +    void (*DeleteWindowFromAnySelections)(WindowPtr);
-+    void (*AuditStart)(ClientPtr);
-+    void (*AuditEnd)(ClientPtr, int);
 +} SecurityHook, *SecurityHookPtr;
 +
 +extern SecurityHookPtr pSecHook;
 +
-+extern void tsolCompatRegisterHooks(void);
-+
 +#endif /* TSOL */
 +
  #endif /* EXTENSIONSTRUCT_H */
  
-diff -urp -x '*~' -x '*.orig' include/propertyst.h include/propertyst.h
---- include/propertyst.h	2006-09-17 23:04:18.000000000 -0700
-+++ include/propertyst.h	2007-09-20 14:22:20.884994000 -0700
-@@ -45,6 +45,35 @@ SOFTWARE.
- 
- ******************************************************************/
- 
-+/* Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, and/or sell copies of the Software, and to permit persons
-+ * to whom the Software is furnished to do so, provided that the above
-+ * copyright notice(s) and this permission notice appear in all copies of
-+ * the Software and that both the above copyright notice(s) and this
-+ * permission notice appear in supporting documentation.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-+ * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ *
-+ * Except as contained in this notice, the name of a copyright holder
-+ * shall not be used in advertising or otherwise to promote the sale, use
-+ * or other dealings in this Software without prior written authorization
-+ * of the copyright holder.
-+ */ 
-+
-+
- #ifndef PROPERTYSTRUCT_H
- #define PROPERTYSTRUCT_H 
- #include "misc.h"
-@@ -60,6 +89,13 @@ typedef struct _Property {
- 	short		format;     /* format of data for swapping - 8,16,32 */
- 	long		size;       /* size of data in (format/8) bytes */
- 	pointer         data;       /* private to client */
-+#ifdef TSOL	/* Maintaining binary compatibility with Xtsol module */
-+    	short		pad1;	    /* previously used by LBX */
-+  	XID		pad2;
-+#endif
-+#ifdef TSOL
-+	pointer		secPrivate;	/* Security information */
-+#endif /* TSOL */
- } PropertyRec;
+diff -urp -x '*~' -x '*.orig' Makefile.am Makefile.am
+--- Makefile.am	2008-10-17 15:44:58.741284000 -0700
++++ Makefile.am	2008-10-17 15:45:15.039639000 -0700
+@@ -34,6 +34,10 @@ if RECORD
+ RECORD_DIR=record
+ endif
  
- #endif /* PROPERTYSTRUCT_H */
-diff -urp -x '*~' -x '*.orig' include/selection.h include/selection.h
---- include/selection.h	2006-09-17 23:04:18.000000000 -0700
-+++ include/selection.h	2007-09-20 14:22:20.885346000 -0700
-@@ -49,6 +49,34 @@ SOFTWARE.
- 
- ******************************************************************/
- 
-+/* Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, and/or sell copies of the Software, and to permit persons
-+ * to whom the Software is furnished to do so, provided that the above
-+ * copyright notice(s) and this permission notice appear in all copies of
-+ * the Software and that both the above copyright notice(s) and this
-+ * permission notice appear in supporting documentation.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-+ * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ *
-+ * Except as contained in this notice, the name of a copyright holder
-+ * shall not be used in advertising or otherwise to promote the sale, use
-+ * or other dealings in this Software without prior written authorization
-+ * of the copyright holder.
-+ */ 
++if BUILD_TSOL_MODULE
++TSOL_DIR=tsol
++endif
 +
- #include "dixstruct.h"
- /*
-  *
-@@ -61,6 +89,9 @@ typedef struct _Selection {
-     Window window;
-     WindowPtr pWin;
-     ClientPtr client;
-+#ifdef TSOL
-+    pointer secPrivate;	/* Security Information */
-+#endif /* TSOL */
- } Selection;
- 
- #endif /* SELECTION_H */
+ SUBDIRS = \
+ 	doc \
+ 	include \
+@@ -59,6 +63,7 @@ SUBDIRS = \
+ 	$(COMPOSITE_DIR) \
+ 	$(GLX_DIR) \
+ 	IA \
++	$(TSOL_DIR) \
+ 	exa \
+ 	config \
+ 	hw
 diff -urp -x '*~' -x '*.orig' mi/miinitext.c mi/miinitext.c
---- mi/miinitext.c	2007-09-20 14:21:57.965252000 -0700
-+++ mi/miinitext.c	2007-09-20 14:22:21.276990000 -0700
+--- mi/miinitext.c	2008-10-17 15:44:58.747720000 -0700
++++ mi/miinitext.c	2008-10-17 15:45:15.384710000 -0700
 @@ -86,6 +86,10 @@ SOFTWARE.
  
  #define SolarisIAExtension
@@ -695,7 +520,7 @@
  #if defined(QNX4) /* sleaze for Watcom on QNX4 ... */
  #undef GLXEXT
  #endif
-@@ -221,6 +225,9 @@ extern Bool noXvExtension;
+@@ -227,6 +231,9 @@ extern Bool noXvExtension;
  #ifdef SolarisIAExtension
  Bool noIAExtension;
  #endif
@@ -705,7 +530,7 @@
  
  #ifndef XFree86LOADER
  #define INITARGS void
-@@ -266,6 +273,10 @@ typedef void (*InitExtension)(INITARGS);
+@@ -272,6 +279,10 @@ typedef void (*InitExtension)(INITARGS);
  #ifdef SolarisIAExtension
  #include <X11/extensions/interactive.h>
  #endif
@@ -716,7 +541,7 @@
  
  /* FIXME: this whole block of externs should be from the appropriate headers */
  #ifdef EVI
-@@ -396,6 +407,9 @@ extern void CompositeExtensionInit(INITA
+@@ -398,6 +409,9 @@ extern void CompositeExtensionInit(INITA
  #ifdef SolarisIAExtension
  extern void IAExtensionInit(void);
  #endif
@@ -726,7 +551,7 @@
  
  /* The following is only a small first step towards run-time
   * configurable extensions.
-@@ -456,6 +470,9 @@ static ExtensionToggle ExtensionToggleLi
+@@ -458,6 +472,9 @@ static ExtensionToggle ExtensionToggleLi
  #ifdef XCSECURITY
      { "SECURITY", &noSecurityExtension },
  #endif
@@ -736,36 +561,21 @@
  #ifdef XSYNC
      { "SYNC", &noSyncExtension },
  #endif
-@@ -681,6 +698,14 @@ InitExtensions(argc, argv)
+@@ -682,6 +699,11 @@ InitExtensions(argc, argv)
  #ifdef SolarisIAExtension
      if (!noIAExtension) IAExtensionInit();
  #endif
 +#ifdef TSOL
 +    if (!noXTSolExtension) {
 +	TsolExtensionInit();
-+	if (pSecHook) { /* If TSOL security hooks set, add to XACE callbacks */
-+	    tsolCompatRegisterHooks();
-+	}
 +    }
 +#endif
  }
  
  void
-@@ -792,6 +817,11 @@ InitExtensions(argc, argv)
- 	    (ext->initFunc)();
- 	}
-     }
-+#ifdef TSOL	/* Maintaining binary compatibility with Xtsol module */
-+    if (pSecHook) { /* If TSOL security hooks set, add to XACE callbacks */
-+	tsolCompatRegisterHooks();
-+    }
-+#endif
- }
- 
- static void (*__miHookInitVisualsFunction)(miInitVisualsProcPtr *);
 diff -urp -x '*~' -x '*.orig' os/connection.c os/connection.c
---- os/connection.c	2007-09-20 14:21:56.995403000 -0700
-+++ os/connection.c	2007-09-20 14:22:21.289634000 -0700
+--- os/connection.c	2008-10-17 15:44:58.728705000 -0700
++++ os/connection.c	2008-10-17 15:45:15.387013000 -0700
 @@ -44,6 +44,33 @@ ARISING OUT OF OR IN CONNECTION WITH THE
  SOFTWARE.
  
@@ -800,7 +610,7 @@
  /*****************************************************************
   *  Stuff to create connections --- OS dependent
   *
-@@ -309,6 +336,11 @@ int		ListenTransCount;
+@@ -298,6 +325,11 @@ static int		ListenTransCount;
  
  static void ErrorConnMax(XtransConnInfo /* trans_conn */);
  
@@ -812,9 +622,9 @@
  static XtransConnInfo
  lookup_trans_conn (int fd)
  {
-@@ -711,6 +743,12 @@ ClientAuthorized(ClientPtr client, 
-     priv = (OsCommPtr)client->osPrivate;
-     trans_conn = priv->trans_conn;
+@@ -721,6 +753,12 @@ ClientAuthorized(ClientPtr client, 
+         !strncmp(saddr->sa_data, "/tmp/launch", 11)) goto done;
+ #endif
  
 +#ifdef TSOL
 +    if (pSecHook)
@@ -825,16 +635,46 @@
      auth_id = CheckAuthorization (proto_n, auth_proto,
  				  string_n, auth_string, client, &reason);
  
---- hw/dmx/Makefile.am.orig	2008-01-13 23:05:52.858949249 -0700
-+++ hw/dmx/Makefile.am	2008-01-13 23:07:17.138575807 -0700
-@@ -85,6 +85,10 @@
-              $(top_builddir)/IA/libIA.la \
-              @DMXMODULES_LIBS@
+diff -urp -x '*~' -x '*.orig' Xext/security.c Xext/security.c
+--- Xext/security.c	2008-10-17 15:44:58.336824000 -0700
++++ Xext/security.c	2008-10-17 15:45:15.081938000 -0700
+@@ -1148,3 +1148,27 @@ SecurityExtensionInit(INITARGS)
+     /* Label objects that were created before we could register ourself */
+     SecurityLabelInitial();
+ }
++
++/* API needed for Xtsol module to get/set client trustLevel */
++_X_EXPORT unsigned int
++getClientTrustLevel(ClientPtr client)
++{
++    SecurityStateRec *state;
++
++    state = dixLookupPrivate(&client->devPrivates, stateKey);
++
++    return state->trustLevel;
++}
++
++_X_EXPORT unsigned int
++setClientTrustLevel(ClientPtr client, unsigned int newLevel)
++{
++    SecurityStateRec *state;
++    unsigned int oldLevel;
++
++    state = dixLookupPrivate(&client->devPrivates, stateKey);
++    oldLevel = state->trustLevel;
++    state->trustLevel = newLevel;
++    
++    return oldLevel;
++}
+diff -urp -x '*~' -x '*.orig' Xext/securitysrv.h Xext/securitysrv.h
+--- Xext/securitysrv.h	2008-01-04 14:42:34.000000000 -0800
++++ Xext/securitysrv.h	2008-10-17 15:45:15.082414000 -0700
+@@ -80,4 +80,8 @@ typedef struct {
+ /* Give this value or higher to the -audit option to get security messages */
+ #define SECURITY_AUDIT_LEVEL 4
  
-+if BUILD_TSOL_MODULE
-+Xdmx_LDADD += $(top_builddir)/tsol/libxtsol.la
-+endif
++/* API needed for Xtsol module to get/set client trustLevel */
++extern unsigned int getClientTrustLevel(ClientPtr client);
++extern unsigned int setClientTrustLevel(ClientPtr client, unsigned int newLevel);
 +
- Xdmx_CFLAGS = \
-               -DHAVE_DMX_CONFIG_H \
-               $(DIX_CFLAGS) \
+ #endif /* _SECURITY_SRV_H */
--- a/open-src/xserver/xorg/xv-swap.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,261 +0,0 @@
-###############################################################################
-#
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-# Use subject to license terms.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-
-Fixes Xv extension byte swapping bugs:
-    X.Org Bugzilla #4947 <https://bugs.freedesktop.org/show_bug.cgi?id=4947>
-    Sun bug 6646626 <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6646626>
-    
-    Don't use swapped data after swapping it.   When done swapping data,
-    send the swapped data, not the address of the pointer to it, to the client.
-    Make sure we swap all the right fields.
-
-Contributed upstream for Xorg server 1.5 in commits:
-	dfd682b582636a36345144bcf835e3ee46718d90
-	6844bd2e63490870bab3c469eec6030354ef2865
-
---- Xext/xvdisp.c	2006-09-17 23:04:17.000000000 -0700
-+++ Xext/xvdisp.c	2008-01-02 16:11:40.967091000 -0800
-@@ -374,6 +374,7 @@
-   xvAdaptorInfo ainfo;
-   xvQueryAdaptorsReply rep;
-   int totalSize;
-+  int nameSize;
-   int na;
-   XvAdaptorPtr pa;
-   int nf;
-@@ -439,12 +440,12 @@
-       ainfo.base_id = pa->base_id;
-       ainfo.num_ports = pa->nPorts;
-       ainfo.type = pa->type;
--      ainfo.name_size = strlen(pa->name);
-+      ainfo.name_size = nameSize = strlen(pa->name);
-       ainfo.num_formats = pa->nFormats;
- 
-       _WriteAdaptorInfo(client, &ainfo);
- 
--      WriteToClient(client, ainfo.name_size, pa->name);
-+      WriteToClient(client, nameSize, pa->name);
- 
-       nf = pa->nFormats;
-       pf = pa->pFormats;
-@@ -470,6 +471,7 @@
-   xvEncodingInfo einfo;
-   xvQueryEncodingsReply rep;
-   int totalSize;
-+  int nameSize;
-   XvPortPtr pPort;
-   int ne;
-   XvEncodingPtr pe;
-@@ -514,13 +516,13 @@
-   while (ne--) 
-     {
-       einfo.encoding = pe->id;
--      einfo.name_size = strlen(pe->name);
-+      einfo.name_size = nameSize = strlen(pe->name);
-       einfo.width = pe->width;
-       einfo.height = pe->height;
-       einfo.rate.numerator = pe->rate.numerator;
-       einfo.rate.denominator = pe->rate.denominator;
-       _WriteEncodingInfo(client, &einfo);
--      WriteToClient(client, einfo.name_size, pe->name);
-+      WriteToClient(client, nameSize, pe->name);
-       pe++;
-     }
- 
-@@ -1001,18 +1003,19 @@
-   rep.text_size = 0;
- 
-   for(i = 0, pAtt = pPort->pAdaptor->pAttributes; 
--      i < rep.num_attributes; i++, pAtt++) 
-+      i < pPort->pAdaptor->nAttributes; i++, pAtt++) 
-   {    
-       rep.text_size += (strlen(pAtt->name) + 1 + 3) & ~3L;
-   }
- 
--  rep.length = (rep.num_attributes * sz_xvAttributeInfo) + rep.text_size;
-+  rep.length = (pPort->pAdaptor->nAttributes * sz_xvAttributeInfo)
-+      + rep.text_size;
-   rep.length >>= 2;
- 
-   _WriteQueryPortAttributesReply(client, &rep);
- 
-   for(i = 0, pAtt = pPort->pAdaptor->pAttributes; 
--      i < rep.num_attributes; i++, pAtt++) 
-+      i < pPort->pAdaptor->nAttributes; i++, pAtt++) 
-   {
-       size = strlen(pAtt->name) + 1;  /* pass the NULL */
-       Info.flags = pAtt->flags;
-@@ -1223,6 +1226,7 @@
-   XvPortPtr pPort;
-   int *offsets;
-   int *pitches;
-+  int planeLength;
-   REQUEST(xvQueryImageAttributesReq);
- 
-   REQUEST_SIZE_MATCH(xvQueryImageAttributesReq);
-@@ -1262,7 +1266,7 @@
- 
-   rep.type = X_Reply;
-   rep.sequenceNumber = client->sequence;
--  rep.length = num_planes << 1;
-+  rep.length = planeLength = num_planes << 1;
-   rep.num_planes = num_planes;
-   rep.width = width;
-   rep.height = height;
-@@ -1270,8 +1274,8 @@
-  
-   _WriteQueryImageAttributesReply(client, &rep);
-   if(client->swapped)
--    SwapLongs((CARD32*)offsets, rep.length);
--  WriteToClient(client, rep.length << 2, (char*)offsets);
-+    SwapLongs((CARD32*)offsets, planeLength);
-+  WriteToClient(client, planeLength << 2, (char*)offsets);
- 
-   xfree(offsets);
- 
-@@ -1305,7 +1309,7 @@
- 
-   pImage = pPort->pAdaptor->pImages;
-   
--  for(i = 0; i < rep.num_formats; i++, pImage++) {
-+  for(i = 0; i < pPort->pAdaptor->nImages; i++, pImage++) {
-      info.id = pImage->id; 	
-      info.type = pImage->type; 	
-      info.byte_order = pImage->byte_order; 
-@@ -1504,6 +1508,7 @@ SProcXvShmPutImage(ClientPtr client)
-   swapl(&stuff->gc, n);
-   swapl(&stuff->shmseg, n);
-   swapl(&stuff->id, n);
-+  swapl(&stuff->offset, n);
-   swaps(&stuff->src_x, n);
-   swaps(&stuff->src_y, n);
-   swaps(&stuff->src_w, n);
-@@ -1512,7 +1517,6 @@ SProcXvShmPutImage(ClientPtr client)
-   swaps(&stuff->drw_y, n);
-   swaps(&stuff->drw_w, n);
-   swaps(&stuff->drw_h, n);
--  swaps(&stuff->offset, n);
-   swaps(&stuff->width, n);
-   swaps(&stuff->height, n);
-   return ProcXvShmPutImage(client);
-@@ -1603,9 +1607,10 @@ SProcXvQueryImageAttributes(ClientPtr cl
-   register char n;
-   REQUEST(xvQueryImageAttributesReq);
-   swaps(&stuff->length, n);
-+  swapl(&stuff->port, n);
-   swapl(&stuff->id, n);
-   swaps(&stuff->width, n);
--  swaps(&stuff->width, n);
-+  swaps(&stuff->height, n);
-   return ProcXvQueryImageAttributes(client);
- }
- 
-@@ -1632,7 +1636,7 @@
-   swaps(&rep->version, n);
-   swaps(&rep->revision, n);
-   
--  (void)WriteToClient(client, sz_xvQueryExtensionReply, (char *)&rep);
-+  (void)WriteToClient(client, sz_xvQueryExtensionReply, (char *)rep);
- 
-   return Success;
- }
-@@ -1648,7 +1652,7 @@
-   swapl(&rep->length, n);
-   swaps(&rep->num_adaptors, n);
-   
--  (void)WriteToClient(client, sz_xvQueryAdaptorsReply, (char *)&rep);
-+  (void)WriteToClient(client, sz_xvQueryAdaptorsReply, (char *)rep);
- 
-   return Success;
- }
-@@ -1664,7 +1668,7 @@
-   swapl(&rep->length, n);
-   swaps(&rep->num_encodings, n);
-   
--  (void)WriteToClient(client, sz_xvQueryEncodingsReply, (char *)&rep);
-+  (void)WriteToClient(client, sz_xvQueryEncodingsReply, (char *)rep);
- 
-   return Success;
- }
-@@ -1771,7 +1775,7 @@
-   swaps(&rep->sequenceNumber, n);
-   swapl(&rep->length, n);
- 
--  (void)WriteToClient(client, sz_xvGrabPortReply, (char *)&rep);
-+  (void)WriteToClient(client, sz_xvGrabPortReply, (char *)rep);
- 
-   return Success;
- }
-@@ -1787,7 +1791,7 @@
-   swapl(&rep->length, n);
-   swapl(&rep->value, n);
- 
--  (void)WriteToClient(client, sz_xvGetPortAttributeReply, (char *)&rep);
-+  (void)WriteToClient(client, sz_xvGetPortAttributeReply, (char *)rep);
- 
-   return Success;
- }
-@@ -1804,7 +1808,7 @@
-   swaps(&rep->actual_width, n);
-   swaps(&rep->actual_height, n);
- 
--  (void)WriteToClient(client, sz_xvQueryBestSizeReply, (char *)&rep);
-+  (void)WriteToClient(client, sz_xvQueryBestSizeReply, (char *)rep);
- 
-   return Success;
- }
-@@ -1821,7 +1825,7 @@
-   swapl(&rep->num_attributes, n);
-   swapl(&rep->text_size, n);
- 
--  (void)WriteToClient(client, sz_xvQueryPortAttributesReply, (char *)&rep);
-+  (void)WriteToClient(client, sz_xvQueryPortAttributesReply, (char *)rep);
- 
-   return Success;
- }
-@@ -1840,7 +1844,7 @@
-   swaps(&rep->width, n);
-   swaps(&rep->height, n);
- 
--  (void)WriteToClient(client, sz_xvQueryImageAttributesReply, (char *)&rep);
-+  (void)WriteToClient(client, sz_xvQueryImageAttributesReply, (char *)rep);
- 
-   return Success;
- }
-@@ -1857,7 +1861,7 @@
-   swapl(&rep->length, n);
-   swapl(&rep->num_formats, n);
- 
--  (void)WriteToClient(client, sz_xvListImageFormatsReply, (char *)&rep);
-+  (void)WriteToClient(client, sz_xvListImageFormatsReply, (char *)rep);
- 
-   return Success;
- }
--- a/open-src/xserver/xvnc/COPYING	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/COPYING	Thu Jan 15 12:55:00 2009 -0800
@@ -8,6 +8,13 @@
 
 --------------------------------------------------------------------
 
+This distribution of VNC software incorporates changes distributed by 
+the Fedora Project under the GNU General Public License version 2.
+
+Those changes are Copyright 2003-2008 Red Hat, Inc.  All rights reserved.
+
+--------------------------------------------------------------------
+
 VNC 4.1.3 Source Distribution for Unix platforms
 ================================================
 
@@ -421,3 +428,4 @@
 consider it more useful to permit linking proprietary applications with the
 library.  If this is what you want to do, use the GNU Library General
 Public License instead of this License.
+
--- a/open-src/xserver/xvnc/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,10 +1,10 @@
 ###############################################################################
 #
 # Xvnc server Makefile
-# Based on Fedora's vnc.spec from
-#  http://cvs.fedoraproject.org/viewcvs/rpms/vnc/
+# Based on Fedora's vnc.spec revision 1.202 from
+# http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc.spec
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -32,7 +32,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.16 08/12/19
+# @(#)Makefile	1.17 09/01/14
 #
 
 # Package name used in tarballs
@@ -59,20 +59,31 @@
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = \
+	vnc-Makefile.am.patch,-p1 \
 	vnc-use-fb.patch,-p1 \
 	vnc-restart.patch,-p1 \
+	vnc-vncpasswd.patch,-p1 \
 	vnc-modular-xorg.patch,-p1 \
+	vnc-xorg.patch,-p1 \
 	vnc-nohttpd.patch,-p1 \
-	vnc-int10.patch,-p1 \
 	vnc-64bit.patch,-p1 \
 	vnc-render.patch,-p1 \
 	vnc-autotools.patch,-p1 \
 	vnc-autotools-compile.patch,-p1 \
 	vnc-always_use_fb.patch,-p1 \
 	vnc-24bit.patch,-p1 \
-	vnc-ipv6.patch,-p1 \
+	vnc-gcc43.patch,-p1 \
+	vnc-privates.patch,-p1 \
+	vnc-mieq.patch,-p1 \
+	vnc-allocate.patch,-p1 \
+	vnc-paint.patch,-p1 \
+	vnc-selections.patch,-p1 \
+	vnc-scrollbars.patch,-p1 \
+	vnc-bounds.patch,-p1 \
+	vnc-includes.patch,-p1 \
+	vnc-viewerIPv6.patch,-p1 \
+	vnc-fasterPrivates.patch \
 	c++public.patch \
-	build-without-Xorg.patch \
 	solaris-port.patch
 
 # Man pages to apply Sun footer to & attributes to list
@@ -119,8 +130,6 @@
 	fi
 	mv $(XORG_SOURCE_DIR) $(XORG_BUILD_DIR)
 	(cd $(XORG_BUILD_DIR) && $(LNDIR) ../../../../../xorg/sun-src)
-	(mkdir -p $(XORG_BUILD_DIR)/GL/mesa/vbo)
-	(cp ../xorg/sun-src/mesa/Makefile.am $(XORG_BUILD_DIR)/GL/mesa/vbo)
 
 
 include ../Makefile.inc
@@ -135,15 +144,7 @@
 		unix/xc/programs/Xserver/Xvnc.man \
 		unix/xc/programs/Xserver/vnc/*.h \
 		unix/xc/programs/Xserver/vnc/*.cc \
-		unix/xorg-x11-server-source/hw/vnc/ ; \
-	cp -p unix/xorg-x11-server-source/cfb/cfb.h \
-		unix/xorg-x11-server-source/fb/fb.h \
-		unix/xorg-x11-server-source/fb/fbrop.h \
-		unix/xorg-x11-server-source/hw/vnc/ ; \
-	perl -i -p -e 's,\b(xor|and)\b,c_$$1,g' \
-		unix/xorg-x11-server-source/hw/vnc/cfb.h \
-		unix/xorg-x11-server-source/hw/vnc/fb.h \
-		unix/xorg-x11-server-source/hw/vnc/fbrop.h )
+		unix/xorg-x11-server-source/hw/vnc/ )
 	(cd $(SOURCE_DIR) && \
 		/usr/perl5/bin/perl $(TOP)/common/suntouch-manpages.pl \
 		-a '{Availability, SUNWvncviewer} {Interface Stability, Volatile}' \
@@ -160,8 +161,8 @@
 
 # Command line options to GNU autoconf configure script for Xvnc
 XVNC_CONFIG_OPTS = $(DEFAULT_CONFIG_OPTS) $(XSERVER_CONFIG_OPTS) \
-        --disable-builddocs --with-int10=stub \
-	--disable-dga --disable-xfree86-utils --disable-dri \
+	--disable-builddocs --with-int10=stub \
+	--disable-dga --disable-xfree86-utils --disable-config-hal \
 	--disable-xorg --disable-dmx --disable-xvfb --disable-xnest \
 	--disable-xprint --disable-kdrive
 
@@ -182,12 +183,15 @@
         -R$(X11_SERVERMODS_DIR)/extensions$(ARCHLIBSUBDIR)
 LDPATH_ADDITIONS_i386 = \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)/extensions$(ARCHLIBSUBDIR) \
-        -R$(X11_SERVERMODS_DIR)/extensions/mesa/$(ARCHLIBSUBDIR) \
         -R$(X11_SERVERMODS_DIR)/extensions$(ARCHLIBSUBDIR)
 LDPATH_ADDITIONS=$(LDPATH_ADDITIONS_$(MACH))
 
 MODULE_LDFLAGS = $(LDPATH_ADDITIONS)
 
+# Needed by unix/xorg-x11-server-source/hw/vnc/Makefile.am to find libpixman
+# headers in proto area after solaris-port.patch is applied
+MODULE_MAKEFLAGS = PROTODIR=$(PROTODIR)
+
 # Run configure scripts for vnc sources
 $(SOURCE_DIR)/unix/Makefile: $(UNPACK_TARGET)
 	(cd $(SOURCE_DIR)/common && \
@@ -207,14 +211,17 @@
 	$(TOP)/common/delibtoolize.pl -P -s $(SOURCE_DIR)
 
 Xvnc_build: $(SOURCE_DIR)/unix/Makefile $(XORG_BUILD_DIR)/Makefile
-	(cd $(SOURCE_DIR)/common ; $(BUILD_ENV) $(MAKE) $(MAKEFLAGS))
-	(cd $(SOURCE_DIR)/unix ; $(BUILD_ENV) $(MAKE) $(MAKEFLAGS))
-	(cd $(XORG_BUILD_DIR) ; $(BUILD_ENV) $(MAKE) $(MAKEFLAGS))
+	(cd $(SOURCE_DIR)/common ; \
+	 $(BUILD_ENV) $(MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS))
+	(cd $(SOURCE_DIR)/unix ; \
+	 $(BUILD_ENV) $(MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS))
+	(cd $(XORG_BUILD_DIR) ; \
+	 $(BUILD_ENV) $(MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS))
 
 Xvnc_install::
 	(cd $(XORG_BUILD_DIR)/hw/vnc \
-	 &&  $(BUILD_ENV) $(MAKE) $(MAKEFLAGS) -e install \
-	 DESTDIR=$(PROTODIR) CPPROG="cp -p" )
+	 &&  $(BUILD_ENV) $(MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS) \
+	 CPPROG="cp -p" install)
 	mkdir -p $(PROTODIR)/usr/bin/$(ARCHLIBSUBDIR) \
 		$(PROTODIR)/usr/share/man/man1 \
 		$(PROTODIR)$(X11_MAN_DIR)/man/man1 \
--- a/open-src/xserver/xvnc/build-without-Xorg.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
---- unix/xorg-x11-server-source/configure.ac~	2007-09-19 14:00:02.330977000 -0700
-+++ unix/xorg-x11-server-source/configure.ac	2007-09-19 14:16:41.522248000 -0700
-@@ -1121,7 +1121,7 @@
- xorg_bus_sparcpci=no
- xorg_bus_sparc=no
- 
--if test "x$XORG" = xyes -o "x$XGL" = xyes; then
-+if test "xyes" = xyes -o "x$XGL" = xyes; then
- 	XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
- 	XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
- 	XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
-
-
---- unix/xorg-x11-server-source/Xext/Makefile.am~	2007-09-19 14:18:08.721581000 -0700
-+++ unix/xorg-x11-server-source/Xext/Makefile.am	2007-09-19 14:36:05.327716000 -0700
-@@ -4,11 +4,7 @@
- #                    Xorg by default
- # libXextmodule.la:  includes those extensions that are built into a module
- #                    that Xorg loads
--if XORG
- noinst_LTLIBRARIES = libXext.la libXextbuiltin.la libXextmodule.la
--else
--noinst_LTLIBRARIES = libXext.la
--endif
- 
- INCLUDES = -I$(top_srcdir)/hw/xfree86/dixmods/extmod
- 
-@@ -163,11 +159,9 @@
- 
- libXext_la_SOURCES =		$(BUILTIN_SRCS) $(MODULE_SRCS)
- 
--if XORG
- libXextbuiltin_la_SOURCES =	$(BUILTIN_SRCS)
- 
- libXextmodule_la_SOURCES =	$(MODULE_SRCS)
--endif
- 
- EXTRA_DIST = \
- 	$(SERVERCONFIG_DATA) \
-
---- unix/xorg-x11-server-source/hw/Makefile.am~	2007-09-19 13:17:07.009236000 -0700
-+++ unix/xorg-x11-server-source/hw/Makefile.am	2007-09-19 13:57:41.224962000 -0700
-@@ -4,6 +4,8 @@
- 
- if XORG
- XORG_SUBDIRS = xfree86
-+else
-+XORG_SUBDIRS = xfree86/os-support xfree86/common
- endif
- 
- if XVFB
-
- 
--- a/open-src/xserver/xvnc/solaris-port.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/solaris-port.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -29,7 +29,7 @@
 
 --- common/rfb/Makefile.am	2007-06-27 19:05:47.368239000 -0700
 +++ common/rfb/Makefile.am	2007-06-27 19:47:41.890789000 -0700
-@@ -130,8 +130,8 @@
+@@ -130,7 +130,7 @@
  	ZRLEEncoder.cxx \
  	ZRLEEncoder.h
  
@@ -81,84 +81,51 @@
  	-lXtst
 
 
---- unix/xorg-x11-server-source/hw/Makefile.am~	2007-09-19 13:17:07.009236000 -0700
-+++ unix/xorg-x11-server-source/hw/Makefile.am	2007-09-19 13:57:41.224962000 -0700
-@@ -6,6 +6,15 @@
- XORG_SUBDIRS = xfree86
- else
- XORG_SUBDIRS = xfree86/os-support xfree86/common
-+
-+# Needs to be built before any files are compiled when using Sun compilers
-+# so in*/out* inline definitions are properly processed.
-+
-+BUILT_SOURCES = xfree86/os-support/solaris/solaris-@[email protected]
-+
-+xfree86/os-support/solaris/solaris-@[email protected]:
-+	cd xfree86/os-support/solaris ; make solaris-@[email protected]
-+
- endif
- 
- if XVFB
-
 --- unix/xorg-x11-server-source/hw/vnc/Makefile.am~	2007-09-19 16:36:35.755205000 -0700
 +++ unix/xorg-x11-server-source/hw/vnc/Makefile.am	2007-09-19 16:40:43.150927000 -0700
-@@ -26,10 +26,25 @@
- 		$(top_srcdir)/mi/miinitext.c \
- 		$(top_srcdir)/fb/fbcmap.c
+@@ -25,11 +25,22 @@
+ 	-DVENDOR_STRING="\"$(VENDOR_STRING)\"" -I$(LIB_DIR) \
+ 	-I$(top_srcdir)/include -I$(includedir)/pixman-1
  
-+if MMX_CAPABLE
-+FBMMX_LIBS = ../../fb/libfbmmx.la
-+endif
-+
 +if BUILD_TSOL_MODULE
 +TSOL_LIBS = 	../../tsol/libxtsol.la -ltsol -ltsnet -lsecdb -lbsm
 +endif
 +
-+if GLX
-+GLX_LIBS = 	-lGLcore
-+endif
-+
- Xvnc_LDADD =	$(XORG_CORE_LIBS) \
- 		$(XORG_LIBS) \
- 		$(XSERVER_LIBS) \
- 		../../fb/libfb.la \
-+		$(FBMMX_LIBS) \
-+		../../IA/libIA.la \
-+		$(TSOL_LIBS) \
- 		../../mi/libminimi.la \
- 		../../render/librender.la \
- 		../../xkb/libxkbstubs.la \
-@@ -42,7 +46,12 @@
- 		../xfree86/common/libcommon.la \
- 		-lX11 \
- 		libvnccommon.la \
--		../../../../common/rfb/librfb.la
-+		../../../../common/rfb/librfb.la \
-+		../../../../common/network/libnetwork.la \
-+		../../../../common/rdr/librdr.la \
-+		../../../../common/Xregion/libXregion.la \
-+		-lz \
-+		$(GLX_LIBS)
+ Xvnc_LDADD = $(XVNC_LIBS) libvnccommon.la $(RFB_LIBS) \
+-	$(XSERVER_LIBS) $(XSERVER_SYS_LIBS) -lX11
++	../../IA/libIA.la \
++	$(TSOL_LIBS) \
++ 	$(XSERVER_LIBS) $(XSERVER_SYS_LIBS) -lX11 \
++	../../../../common/network/libnetwork.la \
++	../../../../common/rdr/librdr.la \
++	../../../../common/Xregion/libXregion.la \
++	-lz
  
- Xvnc_CFLAGS =  -DHAVE_DIX_CONFIG_H \
- 		-DNO_HW_ONLY_EXTS \
-@@ -59,6 +79,7 @@
- 		-I../../render \
- 		-I/usr/include/X11
+ Xvnc_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
  
 +if XORG
  libvnc_la_LTLIBRARIES = libvnc.la
+ libvnc_ladir = $(moduledir)/extensions
+ 
+@@ -45,15 +59,16 @@
  libvnc_la_LDFLAGS = -module -avoid-version
- libvnc_ladir = $(moduledir)/extensions
-@@ -72,6 +93,7 @@
- 		-I$(top_srcdir)/hw/xfree86/os-support \
- 		-I$(top_srcdir)/hw/xfree86/os-support/bus \
- 		-DXFree86Module -DXFree86LOADER -DIN_MODULE
+ 
+ libvnc_la_LIBADD = libvnccommon.la $(RFB_LIBS)
 +endif
  
- AM_CXXFLAGS =	$(CFLAGS) \
- 		-DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
-
+ # C++ hacks
+ BUILT_SOURCES = $(nodist_Xvnc_SOURCES)
+ 
+ fb.h: $(top_srcdir)/fb/fb.h
+ 	cat $(top_srcdir)/fb/fb.h | sed -e 's,and,c_and,' -e 's,xor,c_xor,' > $(srcdir)/fb.h
+ 
+-pixman.h: $(includedir)/pixman-1/pixman.h
+-	cat $(includedir)/pixman-1/pixman.h | sed 's/xor/c_xor/' > $(srcdir)/pixman.h
++pixman.h: $(PROTODIR)/usr/include/pixman-1/pixman.h
++	cat $(PROTODIR)/usr/include/pixman-1/pixman.h | sed 's/xor/c_xor/' > $(srcdir)/pixman.h
+ 
+ fbrop.h: $(top_srcdir)/fb/fbrop.h
+ 	cat $(top_srcdir)/fb/fbrop.h | sed -e 's,and,c_and,' -e 's,xor,c_xor,' > $(srcdir)/fbrop.h
 --- unix/xc/programs/Xserver/Xvnc.man	2007-10-08 21:26:03.141427000 -0700
 +++ unix/xc/programs/Xserver/Xvnc.man	2007-10-09 11:37:23.168899000 -0700
 @@ -67,8 +68,7 @@
--- a/open-src/xserver/xvnc/vnc-24bit.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/vnc-24bit.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,5 @@
-## Patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-render.patch
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-24bit.patch
 
 --- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.24bit	2007-06-07 17:27:46.000000000 +0200
 +++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2007-06-07 17:29:01.000000000 +0200
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-Makefile.am.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,67 @@
+## Source originally from Fedora - Revision 1.4 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/Makefile.am
+converted to patch format
+
+--- /dev/null	2008-09-30 20:41:15.000000000 -0700
++++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/Makefile.am	2008-09-30 20:39:33.184092000 -0700
+@@ -0,0 +1,60 @@
++LIB_DIR=$(top_srcdir)/../../common
++BIN_DIR=$(top_srcdir)/..
++
++RFB_LIBS=$(LIB_DIR)/rfb/librfb.la
++
++noinst_LTLIBRARIES = libvnccommon.la
++
++libvnccommon_la_SOURCES = vncExtInit.cc vncHooks.cc XserverDesktop.cc
++
++libvnccommon_la_CPPFLAGS = -DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
++	-DVENDOR_STRING="\"$(VENDOR_STRING)\"" -I$(LIB_DIR) \
++	-I$(BIN_DIR)/vncconfig -DGC_HAS_COMPOSITE_CLIP $(XVNC_CPPFLAGS) \
++	-I$(includedir)/pixman-1
++
++bin_PROGRAMS = Xvnc
++
++Xvnc_SOURCES = xvnc.cc $(top_srcdir)/Xext/dpmsstubs.c \
++	$(top_srcdir)/Xi/stubs.c $(top_srcdir)/mi/miinitext.c \
++	$(top_srcdir)/fb/fbcmap_mi.c
++
++nodist_Xvnc_SOURCES = fbrop.h fb.h pixman.h
++
++Xvnc_CPPFLAGS = $(XVNC_CPPFLAGS) -DNO_HW_ONLY_EXTS -DNO_MODULE_EXTS \
++	-DXFree86Server -DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
++	-DVENDOR_STRING="\"$(VENDOR_STRING)\"" -I$(LIB_DIR) \
++	-I$(top_srcdir)/include -I$(includedir)/pixman-1
++
++Xvnc_LDADD = $(XVNC_LIBS) libvnccommon.la $(RFB_LIBS) \
++	$(XSERVER_LIBS) $(XSERVER_SYS_LIBS) -lX11
++
++Xvnc_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
++
++libvnc_la_LTLIBRARIES = libvnc.la
++libvnc_ladir = $(moduledir)/extensions
++
++libvnc_la_SOURCES = xf86vncModule.cc
++
++libvnc_la_CPPFLAGS = $(XVNC_CPPFLAGS) -I$(LIB_DIR) \
++	-I$(top_srcdir)/hw/xfree86/common \
++	-I$(top_srcdir)/hw/xfree86/os-support \
++	-I$(top_srcdir)/hw/xfree86/os-support/bus \
++	-DXFree86Module -DXFree86LOADER -DIN_MODULE \
++	-I$(includedir)/pixman-1
++
++libvnc_la_LDFLAGS = -module -avoid-version
++
++libvnc_la_LIBADD = libvnccommon.la $(RFB_LIBS)
++
++# C++ hacks
++BUILT_SOURCES = $(nodist_Xvnc_SOURCES)
++
++fb.h: $(top_srcdir)/fb/fb.h
++	cat $(top_srcdir)/fb/fb.h | sed -e 's,and,c_and,' -e 's,xor,c_xor,' > $(srcdir)/fb.h
++
++pixman.h: $(includedir)/pixman-1/pixman.h
++	cat $(includedir)/pixman-1/pixman.h | sed 's/xor/c_xor/' > $(srcdir)/pixman.h
++
++fbrop.h: $(top_srcdir)/fb/fbrop.h
++	cat $(top_srcdir)/fb/fbrop.h | sed -e 's,and,c_and,' -e 's,xor,c_xor,' > $(srcdir)/fbrop.h
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-allocate.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,34 @@
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-allocate.patch
+with paths adjusted to match sources in tarball before files are moved
+
+Remove use of ALLOCATE_LOCAL & DEALLOCATE_LOCAL macros removed from X headers
+
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.allocate vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.allocate	2008-02-25 16:38:37.000000000 +0100
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2008-02-25 16:54:48.000000000 +0100
+@@ -536,9 +536,9 @@ static void vfbInstallColormap(ColormapP
+     swapcopy32(pXWDHeader->bits_per_rgb, pVisual->bitsPerRGBValue);
+     swapcopy32(pXWDHeader->colormap_entries, pVisual->ColormapEntries);
+ 
+-    ppix = (Pixel *)ALLOCATE_LOCAL(entries * sizeof(Pixel));
+-    prgb = (xrgb *)ALLOCATE_LOCAL(entries * sizeof(xrgb));
+-    defs = (xColorItem *)ALLOCATE_LOCAL(entries * sizeof(xColorItem));
++    ppix = (Pixel *)xalloc(entries * sizeof(Pixel));
++    prgb = (xrgb *)xalloc(entries * sizeof(xrgb));
++    defs = (xColorItem *)xalloc(entries * sizeof(xColorItem));
+ 
+     for (i = 0; i < entries; i++)  ppix[i] = i;
+     /* XXX truecolor */
+@@ -553,9 +553,9 @@ static void vfbInstallColormap(ColormapP
+     }
+     (*pmap->pScreen->StoreColors)(pmap, entries, defs);
+ 
+-    DEALLOCATE_LOCAL(ppix);
+-    DEALLOCATE_LOCAL(prgb);
+-    DEALLOCATE_LOCAL(defs);
++    xfree(ppix);
++    xfree(prgb);
++    xfree(defs);
+   }
+ }
--- a/open-src/xserver/xvnc/vnc-always_use_fb.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/vnc-always_use_fb.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,5 @@
-## Patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-always_use_fb.patch
+## Patch originally from Fedora - Revision 1.2 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-always_use_fb.patch
 
 --- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.always_use_fb	2007-03-05 14:03:21.000000000 +0100
 +++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2007-03-05 14:10:57.000000000 +0100
--- a/open-src/xserver/xvnc/vnc-autotools-compile.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/vnc-autotools-compile.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,5 @@
-## Patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-autotools-compile.patch
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-autotools-compile.patch
 
 --- vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx.autotools-compile	2007-02-15 18:56:52.000000000 +0100
 +++ vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx	2007-02-15 18:57:21.000000000 +0100
--- a/open-src/xserver/xvnc/vnc-autotools.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/vnc-autotools.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,5 @@
-## Patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-autotools.patch
+## Patch originally from Fedora - Revision 1.3 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-autotools.patch
 
 --- /dev/null	2007-02-16 09:39:42.585819347 +0100
 +++ vnc-4_1_2-unixsrc/common/Makefile.am	2007-02-16 09:51:11.000000000 +0100
@@ -368,32 +369,6 @@
 +                 vncviewer/Makefile
 +                 x0vncserver/Makefile])
 +AC_OUTPUT
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/Makefile.am.autotools	2007-02-16 09:52:43.000000000 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/Makefile.am	2007-02-16 09:53:24.000000000 +0100
-@@ -42,10 +42,7 @@
- 		../xfree86/common/libcommon.la \
- 		-lX11 \
- 		libvnccommon.la \
--		../../../../common/rfb/librfb.a \
--		../../../../common/rdr/librdr.a \
--		../../../../common/network/libnetwork.a \
--		../../../../common/Xregion/libXregion.a
-+		../../../../common/rfb/librfb.la
- 
- Xvnc_CFLAGS =  -DHAVE_DIX_CONFIG_H \
- 		-DNO_HW_ONLY_EXTS \
-@@ -68,10 +65,7 @@
- libvnc_la_SOURCES = xf86vncModule.cc
- libvnc_la_LIBADD = \
- 		libvnccommon.la \
--		../../../../common/rfb/librfb.a \
--		../../../../common/rdr/librdr.a \
--		../../../../common/network/libnetwork.a \
--		../../../../common/Xregion/libXregion.a
-+		../../../../common/rfb/librfb.la
- libvnc_la_CXXFLAGS = \
- 		-I../../../../common \
- 		-I$(top_srcdir)/hw/xfree86/common \
 --- /dev/null	2007-02-16 09:39:42.585819347 +0100
 +++ vnc-4_1_2-unixsrc/unix/vncviewer/Makefile.am	2007-02-16 09:51:11.000000000 +0100
 @@ -0,0 +1,24 @@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-bounds.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,59 @@
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-bounds.patch
+with paths adjusted to match sources in tarball before files are moved
+
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc.bounds vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc.bounds	2008-03-17 16:46:27.000000000 +0100
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc	2008-03-17 16:59:11.000000000 +0100
+@@ -486,32 +486,36 @@ void XserverDesktop::add_changed(RegionP
+ {
+   if (ignoreHooks_) return;
+   if (grabbing) return;
++
++  BoxRec screenbox;
++  RegionPtr newreg = REGION_CREATE(pScreen, 0, 0);
++
++  screenbox.x1 = screenbox.y1 = 0;
++  screenbox.x2 = pScreen->width;
++  screenbox.y2 = pScreen->height;
++
++  RegionPtr screenreg = REGION_CREATE(pScreen, &screenbox, 0);
++  REGION_INTERSECT(pScreen, newreg, reg, screenreg);
++  REGION_DESTROY (pScreen, screenreg);
++
+   try {
+     rfb::Region rfbReg;
+-    rfbReg.setExtentsAndOrderedRects((ShortRect*)REGION_EXTENTS(pScreen, reg),
+-                                     REGION_NUM_RECTS(reg),
+-                                     (ShortRect*)REGION_RECTS(reg));
++    rfbReg.setExtentsAndOrderedRects((ShortRect*)REGION_EXTENTS(pScreen, newreg),
++                                     REGION_NUM_RECTS(newreg),
++                                     (ShortRect*)REGION_RECTS(newreg));
+     server->add_changed(rfbReg);
+     deferUpdate();
+   } catch (rdr::Exception& e) {
+     vlog.error("XserverDesktop::add_changed: %s",e.str());
+   }
++  REGION_DESTROY (pScreen, newreg);
+ }
+ 
+ void XserverDesktop::add_copied(RegionPtr dst, int dx, int dy)
+ {
+-  if (ignoreHooks_) return;
+-  if (grabbing) return;
+-  try {
+-    rfb::Region rfbReg;
+-    rfbReg.setExtentsAndOrderedRects((ShortRect*)REGION_EXTENTS(pScreen, dst),
+-                                     REGION_NUM_RECTS(dst),
+-                                     (ShortRect*)REGION_RECTS(dst));
+-    server->add_copied(rfbReg, rfb::Point(dx, dy));
+-    deferUpdate();
+-  } catch (rdr::Exception& e) {
+-    vlog.error("XserverDesktop::add_copied: %s",e.str());
+-  }
++  add_changed (dst);
++  REGION_TRANSLATE (pScreen, dst, -dx, -dy);
++  add_changed (dst);
+ }
+ 
+ void XserverDesktop::positionCursor()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-fasterPrivates.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,16 @@
+Make Xvnc build after applying ../xorg/faster-devPrivates.patch
+which changes the type of DevPrivateKey.
+
+--- unix/xc/programs/Xserver/vnc/vncHooks.cc	2008-10-08 08:21:12.289265000 -0700
++++ unix/xc/programs/Xserver/vnc/vncHooks.cc	2008-10-08 08:20:15.523901000 -0700
+@@ -90,8 +90,8 @@
+     GCOps *wrappedOps;
+ } vncHooksGCRec, *vncHooksGCPtr;
+ 
+-static DevPrivateKey vncHooksScrPrivateKey = &vncHooksScrPrivateKey;
+-static DevPrivateKey vncHooksGCPrivateKey = &vncHooksGCPrivateKey;
++static DevPrivateKey vncHooksScrPrivateKey = (DevPrivateKey) &vncHooksScrPrivateKey;
++static DevPrivateKey vncHooksGCPrivateKey = (DevPrivateKey) &vncHooksGCPrivateKey;
+ 
+ #define vncHooksScreenPrivate(scrn) \
+ 	(vncHooksScreenPtr) dixLookupPrivate (&(scrn)->devPrivates, \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-gcc43.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,38 @@
+## Patch originally from Fedora - Revision 1.2 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-gcc43.patch
+
+diff -up vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx.gcc43 vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx
+--- vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx.gcc43	2008-01-09 14:51:54.000000000 +0100
++++ vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx	2008-01-09 14:51:54.000000000 +0100
+@@ -37,6 +37,9 @@
+ #include <fcntl.h>
+ #endif
+ 
++extern "C" {
++#include <stdlib.h>
++}
+ #include <network/TcpSocket.h>
+ #include <rfb/util.h>
+ #include <rfb/LogWriter.h>
+diff -up vnc-4_1_2-unixsrc/unix/tx/TXImage.cxx.gcc43 vnc-4_1_2-unixsrc/unix/tx/TXImage.cxx
+--- vnc-4_1_2-unixsrc/unix/tx/TXImage.cxx.gcc43	2006-05-15 18:56:20.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/tx/TXImage.cxx	2008-01-09 14:51:54.000000000 +0100
+@@ -22,6 +22,7 @@
+ 
+ #include <stdio.h>
+ #include <strings.h>
++#include <stdlib.h>
+ #include <sys/types.h>
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+diff -up vnc-4_1_2-unixsrc/unix/x0vncserver/Image.cxx.gcc43 vnc-4_1_2-unixsrc/unix/x0vncserver/Image.cxx
+--- vnc-4_1_2-unixsrc/unix/x0vncserver/Image.cxx.gcc43	2006-05-15 18:56:20.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/x0vncserver/Image.cxx	2008-01-09 14:51:54.000000000 +0100
+@@ -21,6 +21,7 @@
+ 
+ 
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <sys/types.h>
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-includes.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,45 @@
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-includes.patch
+with paths adjusted to match sources in tarball before files are moved
+
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncExtInit.cc.includes vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncExtInit.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncExtInit.cc.includes	2008-04-04 13:54:24.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncExtInit.cc	2008-04-04 13:54:49.000000000 +0200
+@@ -22,8 +22,8 @@
+ extern "C" {
+ #define class c_class
+ #define NEED_EVENTS
+-#include "X.h"
+-#include "Xproto.h"
++#include <X11/X.h>
++#include <X11/Xproto.h>
+ #include "misc.h"
+ #include "os.h"
+ #include "dixstruct.h"
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc.includes vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc.includes	2008-04-04 13:55:07.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc	2008-04-04 13:55:29.000000000 +0200
+@@ -50,9 +50,9 @@ extern char *display;
+ #include "resource.h"
+ #include "cursorstr.h"
+ #include "windowstr.h"
+-#include "mi/mi.h"
++#include "mi.h"
+ #define XK_CYRILLIC
+-#include "keysym.h"
++#include <X11/keysym.h>
+ #undef public
+ #undef class
+ }
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/xvnc.cc.includes vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/xvnc.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.includes	2008-04-04 13:57:34.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2008-04-04 13:57:44.000000000 +0200
+@@ -68,7 +68,7 @@ extern "C" {
+ #include <X11/XWDFile.h>
+ #include "dix.h"
+ #include "inputstr.h"
+-#include "keysym.h"
++#include <X11/keysym.h>
+   extern int defaultColorVisualClass;
+ #undef new
+ #undef class
--- a/open-src/xserver/xvnc/vnc-int10.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-## Subset of patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-s390.patch
-
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/xfree86/int10/Makefile.am.s390	2007-06-06 15:00:23.000000000 +0200
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/xfree86/int10/Makefile.am	2007-06-06 15:00:26.000000000 +0200
-@@ -38,7 +38,8 @@ libint10_la_SOURCES = \
- endif
- 
- if INT10_STUB
--AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_VM86_LINUX $(XORG_CFLAGS) $(EXTRA_CFLAGS)
-+AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_VM86_LINUX $(XORG_CFLAGS) $(EXTRA_CFLAGS) \
-+	-I../common -I../os-support -I../os-support/bus
- libint10_la_SOURCES = stub.c xf86int10module.c
- endif
- 
--- a/open-src/xserver/xvnc/vnc-ipv6.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-## Patch from Fedora - Revision 1.2 of
-## http://cvs.fedoraproject.org/viewcvs/rpms/vnc/devel/vnc-viewerIPv6.patch
-
-diff -up vnc-4_1_2-unixsrc/common/network/Makefile.am.ipv6 vnc-4_1_2-unixsrc/common/network/Makefile.am
---- vnc-4_1_2-unixsrc/common/network/Makefile.am.ipv6	2008-05-29 17:53:53.000000000 +0200
-+++ vnc-4_1_2-unixsrc/common/network/Makefile.am	2008-05-29 17:53:53.000000000 +0200
-@@ -1,5 +1,7 @@
- noinst_LTLIBRARIES = libnetwork.la
- 
-+libnetwork_la_CPPFLAGS = -DHAVE_IPV6
-+
- libnetwork_la_SOURCES = \
- 	Socket.h \
- 	TcpSocket.cxx \
-diff -up vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx.ipv6 vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx
---- vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx.ipv6	2008-05-29 17:53:53.000000000 +0200
-+++ vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx	2008-05-29 18:18:28.000000000 +0200
-@@ -109,50 +109,100 @@ TcpSocket::TcpSocket(int sock, bool clos
- TcpSocket::TcpSocket(const char *host, int port)
-   : closeFd(true)
- {
--  int sock;
-+  int sock, err, family, ret;
-+  size_t addrlen;
-+  struct sockaddr_storage addr;
-+#ifdef HAVE_IPV6
-+  struct addrinfo *hostai, *current, hints;
-+  char errstr[256];
-+#endif
- 
-   // - Create a socket
-   initSockets();
--  if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
--    throw SocketException("unable to create socket", errorNumber);
- 
--#ifndef WIN32
--  // - By default, close the socket on exec()
--  fcntl(sock, F_SETFD, FD_CLOEXEC);
--#endif
-+#ifdef HAVE_IPV6
-+  memset(&hints, 0, sizeof(struct addrinfo));
-+  hints.ai_family = AF_UNSPEC;
-+  hints.ai_socktype = SOCK_STREAM;
-+  hints.ai_canonname = NULL;
-+  hints.ai_addr = NULL;
-+  hints.ai_next = NULL;
-+
-+  if (getaddrinfo(host, NULL, &hints, &hostai) != 0) {
-+    err = errorNumber;
-+    if (snprintf(errstr, 256, "unable resolve host by name (%s)",
-+	gai_strerror(err)) < 0)
-+      throw Exception("unable resolve host by name");
-+    throw Exception(errstr);
-+  }
-+
-+  for (current = hostai; current != NULL; current = hostai->ai_next) {
-+    family = current->ai_family;
-+    if (family != AF_INET && family != AF_INET6)
-+      continue;
-+
-+    addrlen = current->ai_addrlen;
-+    memcpy(&addr, current->ai_addr, addrlen);
-+
-+    if (family == AF_INET)
-+      ((struct sockaddr_in *)&addr)->sin_port = htons(port);
-+    else
-+      ((struct sockaddr_in6 *)&addr)->sin6_port = htons(port);
- 
--  // - Connect it to something
-+#else
-+    family = AF_INET;
-+    addrlen = sizeof(struct sockaddr_in);
- 
--  // Try processing the host as an IP address
--  struct sockaddr_in addr;
--  memset(&addr, 0, sizeof(addr));
--  addr.sin_family = AF_INET;
--  addr.sin_addr.s_addr = inet_addr(host);
--  addr.sin_port = htons(port);
--  if ((int)addr.sin_addr.s_addr == -1) {
--    // Host was not an IP address - try resolving as DNS name
--    struct hostent *hostinfo;
--    hostinfo = gethostbyname(host);
--    if (hostinfo && hostinfo->h_addr) {
--      addr.sin_addr.s_addr = ((struct in_addr *)hostinfo->h_addr)->s_addr;
--    } else {
--      int e = errorNumber;
--      closesocket(sock);
--      throw SocketException("unable to resolve host by name", e);
-+    // Try processing the host as an IP address
-+    memset(&addr, 0, addrlen);
-+    addr.sin_family = AF_INET;
-+    addr.sin_addr.s_addr = inet_addr(host);
-+    addr.sin_port = htons(port);
-+    if ((int)addr.sin_addr.s_addr == -1) {
-+      // Host was not an IP address - try resolving as DNS name
-+      struct hostent *hostinfo;
-+      hostinfo = gethostbyname(host);
-+      if (hostinfo && hostinfo->h_addr) {
-+	addr.sin_addr.s_addr = ((struct in_addr *)hostinfo->h_addr)->s_addr;
-+      } else {
-+	err = errorNumber;
-+	strcpy(errstr, "unable to resolve host by name");
-+	goto socket_fail;
-+      }
-+    }
-+#endif
-+    sock = socket (family, SOCK_STREAM, 0);
-+    if (sock == -1) {
-+      err = errno;
-+      strcpy(errstr, "unable to create socket");
-+      goto socket_fail;
-     }
--  }
- 
--  // Attempt to connect to the remote host
--  for (;;) {
--    if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) != 0) {
--      int e = errorNumber;
--      if (e == EINTR)
--        continue;
-+    // Attempt to connect to the remote host
-+    while ((ret = connect(sock, (struct sockaddr *)&addr, addrlen)) == -1) {
-+      err = errorNumber;
-+      if (err == EINTR)
-+	continue;
-       closesocket(sock);
--      throw SocketException("unable to connect to host", e);
--    } else break;
-+      break;
-+    }
-+#ifdef HAVE_IPV6
-+    if (ret == 0)
-+      break;
-+    else
-+      continue;
-+  }
-+#endif
-+  if (ret == -1) {
-+    strcpy(errstr, "unable to connect to host");
-+    goto socket_fail;
-   }
- 
-+#ifndef WIN32
-+  // - By default, close the socket on exec()
-+  fcntl(sock, F_SETFD, FD_CLOEXEC);
-+#endif
-+
-   // Disable Nagle's algorithm, to reduce latency
-   enableNagles(sock, false);
- 
-@@ -160,6 +210,14 @@ TcpSocket::TcpSocket(const char *host, i
-   instream = new FdInStream(sock);
-   outstream = new FdOutStream(sock);
-   ownStreams = true;
-+
-+  return;
-+
-+socket_fail:
-+#ifdef HAVE_IPV6
-+  freeaddrinfo(hostai);
-+#endif
-+  throw SocketException(errstr, err);
- }
- 
- TcpSocket::~TcpSocket() {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-mieq.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,694 @@
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-mieq.patch
+with paths adjusted to match sources in tarball before files are moved
+
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc.mieq vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc.mieq	2006-05-15 18:56:20.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc	2008-03-05 12:25:06.000000000 +0100
+@@ -50,12 +50,20 @@ extern char *display;
+ #include "resource.h"
+ #include "cursorstr.h"
+ #include "windowstr.h"
++#include "mi/mi.h"
+ #define XK_CYRILLIC
+ #include "keysym.h"
+ #undef public
+ #undef class
+ }
+ 
++static xEvent *eventq = NULL;
++static DeviceIntPtr vncKeyboard = NULL;
++static DeviceIntPtr vncMouse = NULL;
++
++static int vfbKeybdProc (DeviceIntPtr pDev, int onoff);
++static int vfbMouseProc (DeviceIntPtr pDev, int onoff);
++
+ using namespace rfb;
+ using namespace network;
+ 
+@@ -202,6 +210,21 @@ XserverDesktop::XserverDesktop(ScreenPtr
+ 
+   if (httpListener)
+     httpServer = new FileHTTPServer(this);
++
++// XXX Memory leak here, eventq is not free()-d because it has to exist till server exits
++  if (!eventq)
++    eventq = (xEvent *) xcalloc(sizeof(xEvent), GetMaximumEventsNum());
++  if (!eventq)
++    FatalError("couldn't allocate room for events\n");
++
++  if (vncMouse == NULL) {
++    vncMouse = AddInputDevice(vfbMouseProc, TRUE);
++    RegisterPointerDevice (vncMouse);
++  }
++  if (vncKeyboard == NULL) {
++    vncKeyboard = AddInputDevice(vfbKeybdProc, TRUE);
++    RegisterKeyboardDevice (vncKeyboard);
++  }
+ }
+ 
+ XserverDesktop::~XserverDesktop()
+@@ -495,7 +518,7 @@ void XserverDesktop::positionCursor()
+ {
+   if (!cursorPos.equals(oldCursorPos)) {
+     oldCursorPos = cursorPos;
+-    (*pScreen->SetCursorPosition) (pScreen, cursorPos.x, cursorPos.y, FALSE);
++//    (*pScreen->SetCursorPosition) (pScreen, cursorPos.x, cursorPos.y, FALSE);
+     server->setCursorPos(cursorPos);
+     server->tryUpdate();
+   }
+@@ -660,8 +683,8 @@ void XserverDesktop::approveConnection(v
+ 
+ void XserverDesktop::pointerEvent(const Point& pos, int buttonMask)
+ {
+-  xEvent ev;
+-  DevicePtr dev = LookupPointerDevice();
++  BYTE detail;
++  int i, j, n, valuators[2];
+ 
+   // SetCursorPosition seems to be very expensive (at least on XFree86 3.3.6
+   // for S3), so we delay calling it until positionCursor() is called at the
+@@ -670,14 +693,14 @@ void XserverDesktop::pointerEvent(const 
+ 
+   NewCurrentScreen(pScreen, pos.x, pos.y);
+ 
+-  ev.u.u.type = MotionNotify;
+-  ev.u.u.detail = 0;
+-  ev.u.keyButtonPointer.rootX = pos.x;
+-  ev.u.keyButtonPointer.rootY = pos.y;
+-  ev.u.keyButtonPointer.time = GetTimeInMillis();
+-
+-  if (!pos.equals(cursorPos))
+-    (*dev->processInputProc)(&ev, (DeviceIntPtr)dev, 1);
++  if (!pos.equals(cursorPos)) {
++    valuators[0] = pos.x;
++    valuators[1] = pos.y;
++    n = GetPointerEvents (eventq, vncMouse, MotionNotify, 0,
++                          POINTER_ABSOLUTE, 0, 2, valuators);
++    for (i = 0; i < n; i++)
++      mieqEnqueue (vncMouse, eventq + i);
++  }
+ 
+   for (int i = 0; i < 5; i++) {
+     if ((buttonMask ^ oldButtonMask) & (1<<i)) {
+@@ -685,12 +708,15 @@ void XserverDesktop::pointerEvent(const 
+       // God knows why but some idiot decided to conditionally move the pointer
+       // mapping out of DIX, so we guess here that if XINPUT is defined we have
+       // to do it ourselves...
+-      ev.u.u.detail = ((DeviceIntPtr)dev)->button->map[i + 1];
++      detail = vncMouse->button->map[i + 1];
+ #else
+-      ev.u.u.detail = i + 1;
++      detail = i + 1;
+ #endif
+-      ev.u.u.type = (buttonMask & (1<<i)) ? ButtonPress : ButtonRelease;
+-      (*dev->processInputProc)(&ev, (DeviceIntPtr)dev, 1);
++      n = GetPointerEvents (eventq, vncMouse, (buttonMask & (1<<i)) ?
++                                      ButtonPress : ButtonRelease,
++                            detail, POINTER_RELATIVE, 0, 0, NULL);
++      for (j = 0; j < n; j++)
++        mieqEnqueue (vncMouse, eventq + j);
+     }
+   }
+ 
+@@ -771,8 +797,8 @@ void XserverDesktop::lookup(int index, i
+ 
+ class ModifierState {
+ public:
+-  ModifierState(DeviceIntPtr dev_, int modIndex_)
+-    : dev(dev_), modIndex(modIndex_), nKeys(0), keys(0), pressed(false)
++  ModifierState(int modIndex_)
++    : modIndex(modIndex_), nKeys(0), keys(0), pressed(false)
+   {
+   }
+   ~ModifierState() {
+@@ -781,7 +807,7 @@ public:
+     delete [] keys;
+   }
+   void press() {
+-    KeyClassPtr keyc = dev->key;
++    KeyClassPtr keyc = vncKeyboard->key;
+     if (!(keyc->state & (1<<modIndex))) {
+       tempKeyEvent(keyc->modifierKeyMap[modIndex * keyc->maxKeysPerModifier],
+                    true);
+@@ -789,7 +815,7 @@ public:
+     }
+   }
+   void release() {
+-    KeyClassPtr keyc = dev->key;
++    KeyClassPtr keyc = vncKeyboard->key;
+     if (keyc->state & (1<<modIndex)) {
+       for (int k = 0; k < keyc->maxKeysPerModifier; k++) {
+         int keycode
+@@ -802,20 +828,19 @@ public:
+ private:
+   void tempKeyEvent(int keycode, bool down) {
+     if (keycode) {
+-      if (!keys) keys = new int[dev->key->maxKeysPerModifier];
++      if (!keys) keys = new int[vncKeyboard->key->maxKeysPerModifier];
+       keys[nKeys++] = keycode;
+       generateXKeyEvent(keycode, down);
+     }
+   }
+   void generateXKeyEvent(int keycode, bool down) {
+-    xEvent ev;
+-    ev.u.u.type = down ? KeyPress : KeyRelease;
+-    ev.u.u.detail = keycode;
+-    ev.u.keyButtonPointer.time = GetTimeInMillis();
+-    (*dev->c_public.processInputProc)(&ev, dev, 1);
++    int i, n;
++    n = GetKeyboardEvents (eventq, vncKeyboard,
++                           down ? KeyPress : KeyRelease, keycode);
++    for (i = 0; i < n; i++)
++      mieqEnqueue (vncKeyboard, eventq + i);
+     vlog.debug("fake keycode %d %s", keycode, down ? "down" : "up");
+   }
+-  DeviceIntPtr dev;
+   int modIndex;
+   int nKeys;
+   int* keys;
+@@ -888,16 +913,16 @@ void XserverDesktop::keyEvent(rdr::U32 k
+     vlog.debug("Ignoring caps lock");
+     return;
+   }
+-  DeviceIntPtr dev = (DeviceIntPtr)LookupKeyboardDevice();
+-  KeyClassPtr keyc = dev->key;
++  KeyClassPtr keyc = vncKeyboard->key;
+   KeySymsPtr keymap = &keyc->curKeySyms;
++  int i, j, k, n;
+ 
+   // find which modifier Mode_switch is on.
+   int modeSwitchMapIndex = 0;
+-  for (int i = 3; i < 8; i++) {
+-    for (int k = 0; k < keyc->maxKeysPerModifier; k++) {
++  for (i = 3; i < 8; i++) {
++    for (k = 0; k < keyc->maxKeysPerModifier; k++) {
+       int keycode = keyc->modifierKeyMap[i * keyc->maxKeysPerModifier + k];
+-      for (int j = 0; j < keymap->mapWidth; j++) {
++      for (j = 0; j < keymap->mapWidth; j++) {
+         if (keycode != 0 &&
+             keymap->map[(keycode - keymap->minKeyCode)
+                         * keymap->mapWidth + j] == XK_Mode_switch)
+@@ -926,7 +951,7 @@ void XserverDesktop::keyEvent(rdr::U32 k
+   if (kc == 0) {
+     // Not a direct match in the local keyboard mapping.  Check for alternative
+     // keysyms with the same meaning.
+-    for (int i = 0; i < sizeof(altKeysym) / sizeof(altKeysym_t); i++) {
++    for (i = 0; i < sizeof(altKeysym) / sizeof(altKeysym_t); i++) {
+       if (keysym == altKeysym[i].a)
+         kc = KeysymToKeycode(keymap, altKeysym[i].b, &col);
+       else if (keysym == altKeysym[i].b)
+@@ -954,16 +979,16 @@ void XserverDesktop::keyEvent(rdr::U32 k
+ 
+   // See if it's a modifier key.  If so, then don't do any auto-repeat, because
+   // the X server will translate each press into a release followed by a press.
+-  for (int i = 0; i < 8; i++) {
+-    for (int k = 0; k < keyc->maxKeysPerModifier; k++) {
++  for (i = 0; i < 8; i++) {
++    for (k = 0; k < keyc->maxKeysPerModifier; k++) {
+       if (kc == keyc->modifierKeyMap[i * keyc->maxKeysPerModifier + k] &&
+           IS_PRESSED(keyc,kc) && down)
+         return;
+     }
+   }
+ 
+-  ModifierState shift(dev, ShiftMapIndex);
+-  ModifierState modeSwitch(dev, modeSwitchMapIndex);
++  ModifierState shift(ShiftMapIndex);
++  ModifierState modeSwitch(modeSwitchMapIndex);
+   if (down) {
+     if (col & 1)
+       shift.press();
+@@ -977,11 +1002,10 @@ void XserverDesktop::keyEvent(rdr::U32 k
+     }
+   }
+   vlog.debug("keycode %d %s", kc, down ? "down" : "up");
+-  xEvent ev;
+-  ev.u.u.type = down ? KeyPress : KeyRelease;
+-  ev.u.u.detail = kc;
+-  ev.u.keyButtonPointer.time = GetTimeInMillis();
+-  (*dev->c_public.processInputProc)(&ev, dev, 1);
++  n = GetKeyboardEvents (eventq, vncKeyboard, down ? KeyPress : KeyRelease,
++                         kc);
++  for (i = 0; i < n; i++)
++    mieqEnqueue (vncKeyboard, eventq + i);
+ }
+ 
+ 
+@@ -1150,3 +1174,208 @@ static KeyCode KeysymToKeycode(KeySymsPt
+   }
+   return 0;
+ }
++
++void vncRingBell(int percent, int pitch, int duration)
++{
++  if (percent > 0)
++    vncBell();
++}
++
++/* Fairly standard US PC Keyboard */
++
++#define VFB_MIN_KEY 8
++#define VFB_MAX_KEY 255
++#define VFB_MAP_LEN (VFB_MAX_KEY - VFB_MIN_KEY + 1)
++#define KEYSYMS_PER_KEY 2
++KeySym keyboardMap[VFB_MAP_LEN * KEYSYMS_PER_KEY] = {
++  NoSymbol, NoSymbol,
++  XK_Escape, NoSymbol,
++  XK_1, XK_exclam,
++  XK_2, XK_at,
++  XK_3, XK_numbersign,
++  XK_4, XK_dollar,
++  XK_5, XK_percent,
++  XK_6, XK_asciicircum,
++  XK_7, XK_ampersand,
++  XK_8, XK_asterisk,
++  XK_9, XK_parenleft,
++  XK_0, XK_parenright,
++  XK_minus, XK_underscore,
++  XK_equal, XK_plus,
++  XK_BackSpace, NoSymbol,
++  XK_Tab, NoSymbol,
++  XK_q, XK_Q,
++  XK_w, XK_W,
++  XK_e, XK_E,
++  XK_r, XK_R,
++  XK_t, XK_T,
++  XK_y, XK_Y,
++  XK_u, XK_U,
++  XK_i, XK_I,
++  XK_o, XK_O,
++  XK_p, XK_P,
++  XK_bracketleft, XK_braceleft,
++  XK_bracketright, XK_braceright,
++  XK_Return, NoSymbol,
++  XK_Control_L, NoSymbol,
++  XK_a, XK_A,
++  XK_s, XK_S,
++  XK_d, XK_D,
++  XK_f, XK_F,
++  XK_g, XK_G,
++  XK_h, XK_H,
++  XK_j, XK_J,
++  XK_k, XK_K,
++  XK_l, XK_L,
++  XK_semicolon, XK_colon,
++  XK_apostrophe, XK_quotedbl,
++  XK_grave, XK_asciitilde,
++  XK_Shift_L, NoSymbol,
++  XK_backslash, XK_bar,
++  XK_z, XK_Z,
++  XK_x, XK_X,
++  XK_c, XK_C,
++  XK_v, XK_V,
++  XK_b, XK_B,
++  XK_n, XK_N,
++  XK_m, XK_M,
++  XK_comma, XK_less,
++  XK_period, XK_greater,
++  XK_slash, XK_question,
++  XK_Shift_R, NoSymbol,
++  XK_KP_Multiply, NoSymbol,
++  XK_Alt_L, XK_Meta_L,
++  XK_space, NoSymbol,
++  /*XK_Caps_Lock*/ NoSymbol, NoSymbol,
++  XK_F1, NoSymbol,
++  XK_F2, NoSymbol,
++  XK_F3, NoSymbol,
++  XK_F4, NoSymbol,
++  XK_F5, NoSymbol,
++  XK_F6, NoSymbol,
++  XK_F7, NoSymbol,
++  XK_F8, NoSymbol,
++  XK_F9, NoSymbol,
++  XK_F10, NoSymbol,
++  XK_Num_Lock, XK_Pointer_EnableKeys,
++  XK_Scroll_Lock, NoSymbol,
++  XK_KP_Home, XK_KP_7,
++  XK_KP_Up, XK_KP_8,
++  XK_KP_Prior, XK_KP_9,
++  XK_KP_Subtract, NoSymbol,
++  XK_KP_Left, XK_KP_4,
++  XK_KP_Begin, XK_KP_5,
++  XK_KP_Right, XK_KP_6,
++  XK_KP_Add, NoSymbol,
++  XK_KP_End, XK_KP_1,
++  XK_KP_Down, XK_KP_2,
++  XK_KP_Next, XK_KP_3,
++  XK_KP_Insert, XK_KP_0,
++  XK_KP_Delete, XK_KP_Decimal,
++  NoSymbol, NoSymbol,
++  NoSymbol, NoSymbol,
++  NoSymbol, NoSymbol,
++  XK_F11, NoSymbol,
++  XK_F12, NoSymbol,
++  XK_Home, NoSymbol,
++  XK_Up, NoSymbol,
++  XK_Prior, NoSymbol,
++  XK_Left, NoSymbol,
++  NoSymbol, NoSymbol,
++  XK_Right, NoSymbol,
++  XK_End, NoSymbol,
++  XK_Down, NoSymbol,
++  XK_Next, NoSymbol,
++  XK_Insert, NoSymbol,
++  XK_Delete, NoSymbol,
++  XK_KP_Enter, NoSymbol,
++  XK_Control_R, NoSymbol,
++  XK_Pause, XK_Break,
++  XK_Print, XK_Execute,
++  XK_KP_Divide, NoSymbol,
++  XK_Alt_R, XK_Meta_R,
++};
++
++static Bool GetMappings(KeySymsPtr pKeySyms, CARD8 *pModMap)
++{
++  int i;
++
++  for (i = 0; i < MAP_LENGTH; i++)
++    pModMap[i] = NoSymbol;
++
++  for (i = 0; i < VFB_MAP_LEN; i++) {
++    if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Caps_Lock)
++      pModMap[i + VFB_MIN_KEY] = LockMask;
++    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Shift_L ||
++             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Shift_R)
++      pModMap[i + VFB_MIN_KEY] = ShiftMask;
++    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Control_L ||
++             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Control_R) {
++      pModMap[i + VFB_MIN_KEY] = ControlMask;
++    }
++    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Alt_L ||
++             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Alt_R)
++      pModMap[i + VFB_MIN_KEY] = Mod1Mask;
++  }
++
++  pKeySyms->minKeyCode = VFB_MIN_KEY;
++  pKeySyms->maxKeyCode = VFB_MAX_KEY;
++  pKeySyms->mapWidth = KEYSYMS_PER_KEY;
++  pKeySyms->map = keyboardMap;
++
++  return TRUE;
++}
++
++static int vfbKeybdProc(DeviceIntPtr pDev, int onoff)
++{
++  KeySymsRec            keySyms;
++  CARD8                 modMap[MAP_LENGTH];
++
++  switch (onoff)
++  {
++  case DEVICE_INIT: 
++    GetMappings(&keySyms, modMap);
++    InitKeyboardDeviceStruct(&pDev->c_public, &keySyms, modMap,
++                             (BellProcPtr)vncRingBell, (KbdCtrlProcPtr)NoopDDA);
++    break;
++  case DEVICE_ON: 
++    pDev->c_public.on = TRUE;
++    break;
++  case DEVICE_OFF: 
++    pDev->c_public.on = FALSE;
++    break;
++  case DEVICE_CLOSE:
++    break;
++  }
++  return Success;
++}
++
++static int vfbMouseProc(DeviceIntPtr pDev, int onoff)
++{
++  BYTE map[6];
++
++  switch (onoff)
++  {
++  case DEVICE_INIT:
++    map[1] = 1;
++    map[2] = 2;
++    map[3] = 3;
++    map[4] = 4;
++    map[5] = 5;
++    InitPointerDeviceStruct(&pDev->c_public, map, 5, GetMotionHistory,
++                            (PtrCtrlProcPtr)NoopDDA, GetMotionHistorySize(), 2);
++    break;
++
++  case DEVICE_ON:
++    pDev->c_public.on = TRUE;
++    break;
++
++  case DEVICE_OFF:
++    pDev->c_public.on = FALSE;
++    break;
++
++  case DEVICE_CLOSE:
++    break;
++  }
++  return Success;
++}
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/xvnc.cc.mieq vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/xvnc.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2008-03-04 12:08:05.000000000 +0100
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2008-03-05 11:52:34.000000000 +0100
+@@ -125,6 +125,8 @@ static bool displaySpecified = false;
+ static bool wellKnownSocketsCreated = false;
+ static char displayNumStr[16];
+ 
++extern void vncRingBell (int percent, int pitch, int duration);
++
+ #define swapcopy16(_dst, _src) \
+     if (needswap) { CARD16 _s = _src; cpswaps(_s, _dst); } \
+     else _dst = _src;
+@@ -925,7 +927,7 @@ void InitOutput(ScreenInfo *screenInfo, 
+ int SelectWaitTime = 10000; /* usec */
+ #endif
+ 
+-Bool LegalModifier(unsigned int key, DevicePtr pDev)
++Bool LegalModifier(unsigned int key, DeviceIntPtr pDev)
+ {
+   return TRUE;
+ }
+@@ -936,223 +938,14 @@ void ProcessInputEvents()
+   miPointerUpdate();
+ }
+ 
+-/* Fairly standard US PC Keyboard */
+-
+-#define VFB_MIN_KEY 8
+-#define VFB_MAX_KEY 255
+-#define VFB_MAP_LEN (VFB_MAX_KEY - VFB_MIN_KEY + 1)
+-#define KEYSYMS_PER_KEY 2
+-KeySym keyboardMap[VFB_MAP_LEN * KEYSYMS_PER_KEY] = {
+-  NoSymbol, NoSymbol,
+-  XK_Escape, NoSymbol,
+-  XK_1, XK_exclam,
+-  XK_2, XK_at,
+-  XK_3, XK_numbersign,
+-  XK_4, XK_dollar,
+-  XK_5, XK_percent,
+-  XK_6, XK_asciicircum,
+-  XK_7, XK_ampersand,
+-  XK_8, XK_asterisk,
+-  XK_9, XK_parenleft,
+-  XK_0, XK_parenright,
+-  XK_minus, XK_underscore,
+-  XK_equal, XK_plus,
+-  XK_BackSpace, NoSymbol,
+-  XK_Tab, NoSymbol,
+-  XK_q, XK_Q,
+-  XK_w, XK_W,
+-  XK_e, XK_E,
+-  XK_r, XK_R,
+-  XK_t, XK_T,
+-  XK_y, XK_Y,
+-  XK_u, XK_U,
+-  XK_i, XK_I,
+-  XK_o, XK_O,
+-  XK_p, XK_P,
+-  XK_bracketleft, XK_braceleft,
+-  XK_bracketright, XK_braceright,
+-  XK_Return, NoSymbol,
+-  XK_Control_L, NoSymbol,
+-  XK_a, XK_A,
+-  XK_s, XK_S,
+-  XK_d, XK_D,
+-  XK_f, XK_F,
+-  XK_g, XK_G,
+-  XK_h, XK_H,
+-  XK_j, XK_J,
+-  XK_k, XK_K,
+-  XK_l, XK_L,
+-  XK_semicolon, XK_colon,
+-  XK_apostrophe, XK_quotedbl,
+-  XK_grave, XK_asciitilde,
+-  XK_Shift_L, NoSymbol,
+-  XK_backslash, XK_bar,
+-  XK_z, XK_Z,
+-  XK_x, XK_X,
+-  XK_c, XK_C,
+-  XK_v, XK_V,
+-  XK_b, XK_B,
+-  XK_n, XK_N,
+-  XK_m, XK_M,
+-  XK_comma, XK_less,
+-  XK_period, XK_greater,
+-  XK_slash, XK_question,
+-  XK_Shift_R, NoSymbol,
+-  XK_KP_Multiply, NoSymbol,
+-  XK_Alt_L, XK_Meta_L,
+-  XK_space, NoSymbol,
+-  /*XK_Caps_Lock*/ NoSymbol, NoSymbol,
+-  XK_F1, NoSymbol,
+-  XK_F2, NoSymbol,
+-  XK_F3, NoSymbol,
+-  XK_F4, NoSymbol,
+-  XK_F5, NoSymbol,
+-  XK_F6, NoSymbol,
+-  XK_F7, NoSymbol,
+-  XK_F8, NoSymbol,
+-  XK_F9, NoSymbol,
+-  XK_F10, NoSymbol,
+-  XK_Num_Lock, XK_Pointer_EnableKeys,
+-  XK_Scroll_Lock, NoSymbol,
+-  XK_KP_Home, XK_KP_7,
+-  XK_KP_Up, XK_KP_8,
+-  XK_KP_Prior, XK_KP_9,
+-  XK_KP_Subtract, NoSymbol,
+-  XK_KP_Left, XK_KP_4,
+-  XK_KP_Begin, XK_KP_5,
+-  XK_KP_Right, XK_KP_6,
+-  XK_KP_Add, NoSymbol,
+-  XK_KP_End, XK_KP_1,
+-  XK_KP_Down, XK_KP_2,
+-  XK_KP_Next, XK_KP_3,
+-  XK_KP_Insert, XK_KP_0,
+-  XK_KP_Delete, XK_KP_Decimal,
+-  NoSymbol, NoSymbol,
+-  NoSymbol, NoSymbol,
+-  NoSymbol, NoSymbol,
+-  XK_F11, NoSymbol,
+-  XK_F12, NoSymbol,
+-  XK_Home, NoSymbol,
+-  XK_Up, NoSymbol,
+-  XK_Prior, NoSymbol,
+-  XK_Left, NoSymbol,
+-  NoSymbol, NoSymbol,
+-  XK_Right, NoSymbol,
+-  XK_End, NoSymbol,
+-  XK_Down, NoSymbol,
+-  XK_Next, NoSymbol,
+-  XK_Insert, NoSymbol,
+-  XK_Delete, NoSymbol,
+-  XK_KP_Enter, NoSymbol,
+-  XK_Control_R, NoSymbol,
+-  XK_Pause, XK_Break,
+-  XK_Print, XK_Execute,
+-  XK_KP_Divide, NoSymbol,
+-  XK_Alt_R, XK_Meta_R,
+-};
+-
+-static Bool GetMappings(KeySymsPtr pKeySyms, CARD8 *pModMap)
+-{
+-  int i;
+-
+-  for (i = 0; i < MAP_LENGTH; i++)
+-    pModMap[i] = NoSymbol;
+-
+-  for (i = 0; i < VFB_MAP_LEN; i++) {
+-    if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Caps_Lock)
+-      pModMap[i + VFB_MIN_KEY] = LockMask;
+-    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Shift_L ||
+-             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Shift_R)
+-      pModMap[i + VFB_MIN_KEY] = ShiftMask;
+-    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Control_L ||
+-             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Control_R) {
+-      pModMap[i + VFB_MIN_KEY] = ControlMask;
+-    }
+-    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Alt_L ||
+-             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Alt_R)
+-      pModMap[i + VFB_MIN_KEY] = Mod1Mask;
+-  }
+-
+-  pKeySyms->minKeyCode = VFB_MIN_KEY;
+-  pKeySyms->maxKeyCode = VFB_MAX_KEY;
+-  pKeySyms->mapWidth = KEYSYMS_PER_KEY;
+-  pKeySyms->map = keyboardMap;
+-
+-  return TRUE;
+-}
+-
+-static void vfbBell(int percent, DeviceIntPtr device, pointer ctrl, int class_)
+-{
+-  if (percent > 0)
+-    vncBell();
+-}
+-
+-static int vfbKeybdProc(DeviceIntPtr pDevice, int onoff)
+-{
+-  KeySymsRec		keySyms;
+-  CARD8 		modMap[MAP_LENGTH];
+-  DevicePtr pDev = (DevicePtr)pDevice;
+-
+-  switch (onoff)
+-  {
+-  case DEVICE_INIT: 
+-    GetMappings(&keySyms, modMap);
+-    InitKeyboardDeviceStruct(pDev, &keySyms, modMap,
+-                             (BellProcPtr)vfbBell, (KbdCtrlProcPtr)NoopDDA);
+-    break;
+-  case DEVICE_ON: 
+-    pDev->on = TRUE;
+-    break;
+-  case DEVICE_OFF: 
+-    pDev->on = FALSE;
+-    break;
+-  case DEVICE_CLOSE:
+-    break;
+-  }
+-  return Success;
+-}
+-
+-static int vfbMouseProc(DeviceIntPtr pDevice, int onoff)
++void DDXRingBell(int percent, int pitch, int duration)
+ {
+-  BYTE map[6];
+-  DevicePtr pDev = (DevicePtr)pDevice;
+-
+-  switch (onoff)
+-  {
+-  case DEVICE_INIT:
+-    map[1] = 1;
+-    map[2] = 2;
+-    map[3] = 3;
+-    map[4] = 4;
+-    map[5] = 5;
+-    InitPointerDeviceStruct(pDev, map, 5, miPointerGetMotionEvents,
+-                            (PtrCtrlProcPtr)NoopDDA, miPointerGetMotionBufferSize());
+-    break;
+-
+-  case DEVICE_ON:
+-    pDev->on = TRUE;
+-    break;
+-
+-  case DEVICE_OFF:
+-    pDev->on = FALSE;
+-    break;
+-
+-  case DEVICE_CLOSE:
+-    break;
+-  }
+-  return Success;
++  vncRingBell (percent, pitch, duration);
+ }
+-
+ // InitInput is called after InitExtensions, so we're guaranteed that
+ // vncExtensionInit() has already been called.
+ 
+ void InitInput(int argc, char *argv[])
+ {
+-  DeviceIntPtr p, k;
+-  p = AddInputDevice(vfbMouseProc, TRUE);
+-  k = AddInputDevice(vfbKeybdProc, TRUE);
+-  RegisterPointerDevice(p);
+-  RegisterKeyboardDevice(k);
+-  miRegisterPointerDevice(screenInfo.screens[0], p);
+-  (void)mieqInit ((DevicePtr)k, (DevicePtr)p);
++  mieqInit ();
+ }
--- a/open-src/xserver/xvnc/vnc-modular-xorg.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/vnc-modular-xorg.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,144 +1,6 @@
-## Patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-modular-xorg.patch
+## Patch originally from Fedora - Revision 1.13 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-modular-xorg.patch
 
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/mi/miinitext.c.modular-xorg	2007-03-02 15:45:37.000000000 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/mi/miinitext.c	2007-03-02 15:45:38.000000000 +0100
-@@ -283,6 +283,9 @@
- #ifdef MITMISC
- extern void MITMiscExtensionInit(INITARGS);
- #endif
-+#ifdef VNCEXT
-+extern void vncExtensionInit(INITARGS);
-+#endif
- #ifdef XIDLE
- extern void XIdleExtensionInit(INITARGS);
- #endif
-@@ -561,6 +564,9 @@
- #ifdef MITMISC
-     if (!noMITMiscExtension) MITMiscExtensionInit();
- #endif
-+#ifdef VNCEXT
-+    vncExtensionInit();
-+#endif
- #ifdef XIDLE
-     if (!noXIdleExtension) XIdleExtensionInit();
- #endif
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/Makefile.am.modular-xorg	2007-03-02 15:45:38.000000000 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/Makefile.am	2007-03-02 15:47:10.000000000 +0100
-@@ -30,6 +30,8 @@
- XPRINT_SUBDIRS = xprint
- endif
- 
-+XVNC_SUBDIRS = vnc
-+
- # need to add darwin support here
- 
- SUBDIRS =			\
-@@ -39,6 +41,7 @@
- 	$(XVFB_SUBDIRS)		\
- 	$(XNEST_SUBDIRS)	\
- 	$(DMX_SUBDIRS)          \
-+	$(XVNC_SUBDIRS)		\
-         $(KDRIVE_SUBDIRS)	\
- 	$(XPRINT_SUBDIRS)
- 
---- /dev/null	2007-03-01 10:25:08.783929433 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/Makefile.am	2007-03-02 15:45:38.000000000 +0100
-@@ -0,0 +1,85 @@
-+noinst_LTLIBRARIES = libvnccommon.la
-+libvnccommon_la_SOURCES = \
-+		RegionHelper.h     \
-+		vncExtInit.cc     \
-+		vncExtInit.h      \
-+		vncHooks.cc       \
-+		vncHooks.h        \
-+		XserverDesktop.cc \
-+		XserverDesktop.h
-+
-+libvnccommon_la_CXXFLAGS = \
-+		-DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
-+		-DVENDOR_STRING="\"$(VENDOR_STRING)\"" \
-+		-DGC_HAS_COMPOSITE_CLIP \
-+		-DVNC_USE_FB \
-+		-I/usr/include/X11 \
-+		-I../../../../common \
-+		-I../../../vncconfig
-+
-+bin_PROGRAMS = Xvnc
-+
-+Xvnc_SOURCES = \
-+		xvnc.cc \
-+		$(top_srcdir)/Xext/dpmsstubs.c \
-+		$(top_srcdir)/Xi/stubs.c \
-+		$(top_srcdir)/mi/miinitext.c \
-+		$(top_srcdir)/fb/fbcmap.c
-+
-+Xvnc_LDADD =	$(XORG_CORE_LIBS) \
-+		$(XORG_LIBS) \
-+		$(XSERVER_LIBS) \
-+		../../fb/libfb.la \
-+		../../mi/libminimi.la \
-+		../../render/librender.la \
-+		../../xkb/libxkbstubs.la \
-+		../../dbe/libdbe.la \
-+		../../Xext/libXext.la \
-+		../../XTrap/libxtrap.la \
-+		../../record/librecord.la \
-+		../xfree86/os-support/libxorgos.la \
-+		../../os/libos.la \
-+		../xfree86/common/libcommon.la \
-+		-lX11 \
-+		libvnccommon.la \
-+		../../../../common/rfb/librfb.a \
-+		../../../../common/rdr/librdr.a \
-+		../../../../common/network/libnetwork.a \
-+		../../../../common/Xregion/libXregion.a
-+
-+Xvnc_CFLAGS =  -DHAVE_DIX_CONFIG_H \
-+		-DNO_HW_ONLY_EXTS \
-+		-DNO_MODULE_EXTS \
-+		-DXFree86Server -DVNCEXT
-+
-+Xvnc_CXXFLAGS = $(Xvnc_CFLAGS) \
-+		-DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
-+		-DVENDOR_STRING="\"$(VENDOR_STRING)\"" \
-+		-DVNC_USE_FB \
-+		-I../../../../common \
-+		-I../../../vncconfig \
-+		-I../../mi \
-+		-I../../render \
-+		-I/usr/include/X11
-+
-+libvnc_la_LTLIBRARIES = libvnc.la
-+libvnc_la_LDFLAGS = -module -avoid-version
-+libvnc_ladir = $(moduledir)/extensions
-+libvnc_la_SOURCES = xf86vncModule.cc
-+libvnc_la_LIBADD = \
-+		libvnccommon.la \
-+		../../../../common/rfb/librfb.a \
-+		../../../../common/rdr/librdr.a \
-+		../../../../common/network/libnetwork.a \
-+		../../../../common/Xregion/libXregion.a
-+libvnc_la_CXXFLAGS = \
-+		-I../../../../common \
-+		-I$(top_srcdir)/hw/xfree86/common \
-+		-I$(top_srcdir)/hw/xfree86/os-support \
-+		-I$(top_srcdir)/hw/xfree86/os-support/bus \
-+		-DXFree86Module -DXFree86LOADER -DIN_MODULE
-+
-+AM_CXXFLAGS =	$(CFLAGS) \
-+		-DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
-+		-DVENDOR_STRING="\"$(VENDOR_STRING)\""
-+
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac.modular-xorg	2007-03-02 15:45:38.000000000 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac	2007-03-02 15:45:38.000000000 +0100
-@@ -1793,6 +1793,7 @@
- hw/xnest/Makefile
- hw/xwin/Makefile
- hw/darwin/Makefile
-+hw/vnc/Makefile
- hw/kdrive/Makefile
- hw/kdrive/ati/Makefile
- hw/kdrive/chips/Makefile
 --- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.modular-xorg	2007-03-02 15:45:38.000000000 +0100
 +++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2007-03-02 15:45:38.000000000 +0100
 @@ -36,8 +36,6 @@
--- a/open-src/xserver/xvnc/vnc-module_crash.patch	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-## Patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-module_crash.patch
-
---- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncHooks.cc.module_crash	2007-03-26 20:00:49.000000000 +0200
-+++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncHooks.cc	2007-03-26 20:05:20.000000000 +0200
-@@ -509,7 +509,12 @@
-   BoxRec box;
-   PictureScreenPtr ps = GetPictureScreen(pScreen);
- 
--  if ((xDst >= 0) && (yDst >= 0)) {
-+  ps->Composite = vncHooksScreen->Composite;
-+  (*ps->Composite)(op, pSrc, pMask, pDst, xSrc, ySrc,
-+                   xMask, yMask, xDst, yDst, width, height);
-+  ps->Composite = vncHooksComposite;
-+
-+  if((xDst >= 0) && (yDst >= 0) && pDst->pDrawable->type == DRAWABLE_WINDOW) {
-       box.x1 = pDst->pDrawable->x + xDst;
-       box.y1 = pDst->pDrawable->y + yDst;
-       box.x2 = box.x1 + width;
-@@ -518,11 +523,6 @@
-       RegionHelper changed(pScreen, &box, 0);
-       vncHooksScreen->desktop->add_changed(changed.reg);
-   }
--
--  ps->Composite = vncHooksScreen->Composite;
--  (*ps->Composite)(op, pSrc, pMask, pDst, xSrc, ySrc,
--                   xMask, yMask, xDst, yDst, width, height);
--  ps->Composite = vncHooksComposite;
- }
- 
- #endif /* RENDER */
--- a/open-src/xserver/xvnc/vnc-nohttpd.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/vnc-nohttpd.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,5 @@
-## Patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-nohttpd.patch
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-nohttpd.patch
 ## Modified to make httpd service off by default and only offered via -httpd
 
 --- vnc-4_1_1-unixsrc/unix/vncserver.nohttpd	2005-08-08 15:51:09.000000000 +0100
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-paint.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,113 @@
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-paint.patch
+with paths adjusted to match sources in tarball before files are moved
+
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncHooks.cc.paint vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncHooks.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncHooks.cc.paint	2008-03-06 14:54:52.000000000 +0100
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncHooks.cc	2008-03-06 14:56:54.000000000 +0100
+@@ -72,8 +72,6 @@ typedef struct {
+ 
+   CloseScreenProcPtr           CloseScreen;
+   CreateGCProcPtr              CreateGC;
+-  PaintWindowBackgroundProcPtr PaintWindowBackground;
+-  PaintWindowBorderProcPtr     PaintWindowBorder;
+   CopyWindowProcPtr            CopyWindow;
+   ClearToBackgroundProcPtr     ClearToBackground;
+   RestoreAreasProcPtr          RestoreAreas;
+@@ -106,10 +104,6 @@ static DevPrivateKey vncHooksGCPrivateKe
+ 
+ static Bool vncHooksCloseScreen(int i, ScreenPtr pScreen);
+ static Bool vncHooksCreateGC(GCPtr pGC);
+-static void vncHooksPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion,
+-                                          int what);
+-static void vncHooksPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion,
+-                                      int what);
+ static void vncHooksCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
+                                RegionPtr pOldRegion);
+ static void vncHooksClearToBackground(WindowPtr pWin, int x, int y, int w,
+@@ -231,8 +225,6 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
+ 
+   vncHooksScreen->CloseScreen = pScreen->CloseScreen;
+   vncHooksScreen->CreateGC = pScreen->CreateGC;
+-  vncHooksScreen->PaintWindowBackground = pScreen->PaintWindowBackground;
+-  vncHooksScreen->PaintWindowBorder = pScreen->PaintWindowBorder;
+   vncHooksScreen->CopyWindow = pScreen->CopyWindow;
+   vncHooksScreen->ClearToBackground = pScreen->ClearToBackground;
+   vncHooksScreen->RestoreAreas = pScreen->RestoreAreas;
+@@ -253,8 +245,6 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
+ 
+   pScreen->CloseScreen = vncHooksCloseScreen;
+   pScreen->CreateGC = vncHooksCreateGC;
+-  pScreen->PaintWindowBackground = vncHooksPaintWindowBackground;
+-  pScreen->PaintWindowBorder = vncHooksPaintWindowBorder;
+   pScreen->CopyWindow = vncHooksCopyWindow;
+   pScreen->ClearToBackground = vncHooksClearToBackground;
+   pScreen->RestoreAreas = vncHooksRestoreAreas;
+@@ -297,8 +287,6 @@ static Bool vncHooksCloseScreen(int i, S
+   SCREEN_UNWRAP(pScreen_, CloseScreen);
+ 
+   pScreen->CreateGC = vncHooksScreen->CreateGC;
+-  pScreen->PaintWindowBackground = vncHooksScreen->PaintWindowBackground;
+-  pScreen->PaintWindowBorder = vncHooksScreen->PaintWindowBorder;
+   pScreen->CopyWindow = vncHooksScreen->CopyWindow;
+   pScreen->ClearToBackground = vncHooksScreen->ClearToBackground;
+   pScreen->RestoreAreas = vncHooksScreen->RestoreAreas;
+@@ -333,38 +321,6 @@ static Bool vncHooksCreateGC(GCPtr pGC)
+   return ret;
+ }
+ 
+-// PaintWindowBackground - changed region is the given region
+-
+-static void vncHooksPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion,
+-                                          int what)
+-{
+-  SCREEN_UNWRAP(pWin->drawable.pScreen, PaintWindowBackground);
+-
+-  RegionHelper changed(pScreen, pRegion);
+-
+-  (*pScreen->PaintWindowBackground) (pWin, pRegion, what);
+-
+-  vncHooksScreen->desktop->add_changed(changed.reg);
+-
+-  SCREEN_REWRAP(PaintWindowBackground);
+-}
+-
+-// PaintWindowBorder - changed region is the given region
+-
+-static void vncHooksPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion,
+-                                      int what)
+-{
+-  SCREEN_UNWRAP(pWin->drawable.pScreen, PaintWindowBorder);
+-
+-  RegionHelper changed(pScreen, pRegion);
+-
+-  (*pScreen->PaintWindowBorder) (pWin, pRegion, what);
+-
+-  vncHooksScreen->desktop->add_changed(changed.reg);
+-
+-  SCREEN_REWRAP(PaintWindowBorder);
+-}
+-
+ // CopyWindow - destination of the copy is the old region, clipped by
+ // borderClip, translated by the delta.  This call only does the copy - it
+ // doesn't affect any other bits.
+@@ -534,16 +490,9 @@ static void vncHooksValidateGC(GCPtr pGC
+   (*pGC->funcs->ValidateGC) (pGC, changes, pDrawable);
+     
+   u.vncHooksGC->wrappedOps = 0;
+-  if (pDrawable->type == DRAWABLE_WINDOW && ((WindowPtr)pDrawable)->viewable) {
+-    WindowPtr pWin = (WindowPtr)pDrawable;
+-    RegionPtr pRegion = &pWin->clipList;
+-
+-    if (pGC->subWindowMode == IncludeInferiors)
+-      pRegion = &pWin->borderClip;
+-    if (REGION_NOTEMPTY(pDrawable->pScreen, pRegion)) {
+-      u.vncHooksGC->wrappedOps = pGC->ops;
+-      DBGPRINT((stderr,"vncHooksValidateGC: wrapped GC ops\n"));
+-    }
++  if (pDrawable->type == DRAWABLE_WINDOW || pDrawable->type == DRAWABLE_PIXMAP) {
++    u.vncHooksGC->wrappedOps = pGC->ops;
++    DBGPRINT((stderr,"vncHooksValidateGC: wrapped GC ops\n"));
+   }
+ }
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-privates.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,136 @@
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-privates.patch
+with paths adjusted to match sources in tarball before files are moved
+
+--- a/unix/xc/programs/Xserver/vnc/vncHooks.cc	Mon Jan 21 17:29:11 2008 +0100
++++ b/unix/xc/programs/Xserver/vnc/vncHooks.cc	Thu Jan 24 09:50:48 2008 +0100
+@@ -86,9 +86,15 @@ typedef struct {
+     GCOps *wrappedOps;
+ } vncHooksGCRec, *vncHooksGCPtr;
+ 
+-static int vncHooksScreenIndex;
+-static int vncHooksGCIndex;
++static DevPrivateKey vncHooksScrPrivateKey = &vncHooksScrPrivateKey;
++static DevPrivateKey vncHooksGCPrivateKey = &vncHooksGCPrivateKey;
+ 
++#define vncHooksScreenPrivate(scrn) \
++	(vncHooksScreenPtr) dixLookupPrivate (&(scrn)->devPrivates, \
++					      vncHooksScrPrivateKey)
++#define vncHooksGCPrivate(pGC) \
++	(vncHooksGCPtr) dixLookupPrivate (&(pGC)->devPrivates, \
++					  vncHooksGCPrivateKey)
+ 
+ // screen functions
+ 
+@@ -209,26 +215,11 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
+   if (vncHooksGeneration != serverGeneration) {
+     vncHooksGeneration = serverGeneration;
+ 
+-    vncHooksScreenIndex = AllocateScreenPrivateIndex();
+-    if (vncHooksScreenIndex < 0) {
+-      ErrorF("vncHooksInit: AllocateScreenPrivateIndex failed\n");
+-      return FALSE;
+-    }
+-
+-    vncHooksGCIndex = AllocateGCPrivateIndex();
+-    if (vncHooksGCIndex < 0) {
+-      ErrorF("vncHooksInit: AllocateGCPrivateIndex failed\n");
+-      return FALSE;
+-    }
+-  }
+-
+-  if (!AllocateGCPrivate(pScreen, vncHooksGCIndex, sizeof(vncHooksGCRec))) {
+-    ErrorF("vncHooksInit: AllocateGCPrivate failed\n");
+-    return FALSE;
++    if (!dixRequestPrivate (vncHooksGCPrivateKey, sizeof (vncHooksGCRec)))
++	return FALSE;
+   }
+ 
+   vncHooksScreen = (vncHooksScreenPtr)xnfalloc(sizeof(vncHooksScreenRec));
+-  pScreen->devPrivates[vncHooksScreenIndex].ptr = (pointer)vncHooksScreen;
+ 
+   vncHooksScreen->desktop = desktop;
+ 
+@@ -266,6 +257,8 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
+   pScreen->DisplayCursor = vncHooksDisplayCursor;
+   pScreen->BlockHandler = vncHooksBlockHandler;
+ 
++  dixSetPrivate (&pScreen->devPrivates, vncHooksScrPrivateKey, vncHooksScreen);
++
+   return TRUE;
+ }
+ 
+@@ -281,11 +274,10 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
+ // distinct type, so it would have to use templates, and it's not worth that
+ // much pain.
+ 
+-#define SCREEN_UNWRAP(scrn,field)                                         \
+-  ScreenPtr pScreen = scrn;                                               \
+-  vncHooksScreenPtr vncHooksScreen                                        \
+-    = ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr); \
+-  pScreen->field = vncHooksScreen->field;                                 \
++#define SCREEN_UNWRAP(scrn,field) \
++  ScreenPtr pScreen = scrn; \
++  vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate (scrn); \
++  pScreen->field = vncHooksScreen->field; \
+   DBGPRINT((stderr,"vncHooks" #field " called\n"));
+ 
+ #define SCREEN_REWRAP(field) pScreen->field = vncHooks##field;
+@@ -322,8 +314,7 @@ static Bool vncHooksCreateGC(GCPtr pGC)
+ {
+   SCREEN_UNWRAP(pGC->pScreen, CreateGC);
+     
+-  vncHooksGCPtr vncHooksGC
+-    = (vncHooksGCPtr)pGC->devPrivates[vncHooksGCIndex].ptr;
++  vncHooksGCPtr vncHooksGC = vncHooksGCPrivate (pGC);
+ 
+   Bool ret = (*pScreen->CreateGC) (pGC);
+ 
+@@ -507,7 +498,7 @@ class GCFuncUnwrapper {
+ class GCFuncUnwrapper {
+ public:
+   GCFuncUnwrapper(GCPtr pGC_) : pGC(pGC_) {
+-    vncHooksGC = (vncHooksGCPtr)pGC->devPrivates[vncHooksGCIndex].ptr;
++    vncHooksGC = vncHooksGCPrivate (pGC);
+     pGC->funcs = vncHooksGC->wrappedFuncs;
+     if (vncHooksGC->wrappedOps)
+       pGC->ops = vncHooksGC->wrappedOps;
+@@ -592,7 +583,7 @@ public:
+   GCOpUnwrapper(DrawablePtr pDrawable, GCPtr pGC_)
+     : pGC(pGC_), pScreen(pDrawable->pScreen)
+   {
+-    vncHooksGC = (vncHooksGCPtr)pGC->devPrivates[vncHooksGCIndex].ptr;
++    vncHooksGC = vncHooksGCPrivate (pGC);
+     oldFuncs = pGC->funcs;
+     pGC->funcs = vncHooksGC->wrappedFuncs;
+     pGC->ops = vncHooksGC->wrappedOps;
+@@ -611,8 +602,7 @@ public:
+ #define GC_OP_UNWRAPPER(pDrawable, pGC, name)                             \
+   GCOpUnwrapper u(pDrawable, pGC);                                        \
+   ScreenPtr pScreen = (pDrawable)->pScreen;                               \
+-  vncHooksScreenPtr vncHooksScreen                                        \
+-    = ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr); \
++  vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate (pScreen);	  \
+   DBGPRINT((stderr,"vncHooks" #name " called\n"));
+ 
+ 
+@@ -1511,8 +1501,7 @@ static void vncHooksComposite(CARD8 op, 
+                               INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
+ {
+     ScreenPtr           pScreen = pDst->pDrawable->pScreen;
+-    vncHooksScreenPtr vncHooksScreen = \
+-        ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr);
++    vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate (pScreen);
+     PictureScreenPtr    ps = GetPictureScreen(pScreen);
+     BoxRec              box;
+ 
+@@ -1534,8 +1523,7 @@ static void vncHooksGlyphs(CARD8 op, Pic
+                            GlyphListPtr list, GlyphPtr *glyphs)
+ {
+     ScreenPtr           pScreen = pDst->pDrawable->pScreen;
+-    vncHooksScreenPtr vncHooksScreen = \
+-        ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr);
++    vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate (pScreen);
+     PictureScreenPtr    ps = GetPictureScreen(pScreen);
+     int                 x, y;
+     int                 n;
--- a/open-src/xserver/xvnc/vnc-restart.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/vnc-restart.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,5 @@
-## Patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-restart.patch
+## Patch originally from Fedora - Revision 1.2 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-restart.patch
 
 --- vnc-4_1-unixsrc/common/network/TcpSocket.cxx.restart	2005-03-04 09:02:21.000000000 +0000
 +++ vnc-4_1-unixsrc/common/network/TcpSocket.cxx	2005-03-04 09:03:05.000000000 +0000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-scrollbars.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,72 @@
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-scrollbars.patch
+
+diff -up vnc-4_1_2-unixsrc/unix/tx/TXViewport.h.scrollbars vnc-4_1_2-unixsrc/unix/tx/TXViewport.h
+--- vnc-4_1_2-unixsrc/unix/tx/TXViewport.h.scrollbars	2008-03-14 12:44:19.000000000 +0100
++++ vnc-4_1_2-unixsrc/unix/tx/TXViewport.h	2008-03-14 12:44:19.000000000 +0100
+@@ -77,7 +77,8 @@ private:
+   int xOff, yOff;
+   rfb::Timer bumpScrollTimer;
+   bool bumpScroll;
+-  bool needScrollbars;
++  bool needXScrollbar;
++  bool needYScrollbar;
+   int bumpScrollX, bumpScrollY;
+ };
+ #endif
+diff -up vnc-4_1_2-unixsrc/unix/tx/TXViewport.cxx.scrollbars vnc-4_1_2-unixsrc/unix/tx/TXViewport.cxx
+--- vnc-4_1_2-unixsrc/unix/tx/TXViewport.cxx.scrollbars	2008-03-14 12:44:19.000000000 +0100
++++ vnc-4_1_2-unixsrc/unix/tx/TXViewport.cxx	2008-03-14 13:08:30.000000000 +0100
+@@ -25,7 +25,8 @@
+ TXViewport::TXViewport(Display* dpy_, int w, int h, TXWindow* parent_)
+   : TXWindow(dpy_, w, h, parent_), child(0), hScrollbar(0),
+     vScrollbar(0), scrollbarSize(15), xOff(0), yOff(0), bumpScrollTimer(this),
+-    bumpScroll(false), needScrollbars(false), bumpScrollX(0), bumpScrollY(0)
++    bumpScroll(false), needXScrollbar(false), needYScrollbar(false),
++    bumpScrollX(0), bumpScrollY(0)
+ {
+   clipper = new TXWindow(dpy, width()-scrollbarSize, height()-scrollbarSize,
+                          this);
+@@ -132,13 +133,23 @@ bool TXViewport::handleTimeout(rfb::Time
+ 
+ void TXViewport::resizeNotify()
+ {
+-  needScrollbars = (!bumpScroll &&
+-                    (width() < child->width() || height() < child->height()) &&
+-                    (width() > scrollbarSize && height() > scrollbarSize));
+-  if (needScrollbars) {
++  needXScrollbar = (!bumpScroll && width() < child->width() &&
++		    height() > scrollbarSize && width() > scrollbarSize);
++  needYScrollbar = (!bumpScroll && height() < child->height() &&
++		    height() > scrollbarSize && width() > scrollbarSize);
++
++  if (needXScrollbar && needYScrollbar) {
+     clipper->resize(width()-scrollbarSize, height()-scrollbarSize);
+     hScrollbar->map();
+     vScrollbar->map();
++  } else if (needXScrollbar) {
++    clipper->resize(width(), height()-scrollbarSize);
++    hScrollbar->map();
++    vScrollbar->unmap();
++  } else if (needYScrollbar) {
++    clipper->resize(width()-scrollbarSize, height());
++    hScrollbar->unmap();
++    vScrollbar->map();
+   } else {
+     clipper->resize(width(), height());
+     hScrollbar->unmap();
+@@ -147,10 +158,13 @@ void TXViewport::resizeNotify()
+ 
+   setOffset(xOff, yOff);
+ 
+-  if (needScrollbars) {
++  if (needXScrollbar) {
+     hScrollbar->move(0, height()-scrollbarSize);
+     hScrollbar->resize(width()-scrollbarSize, scrollbarSize);
+     hScrollbar->set(child->width(), -xOff, width()-scrollbarSize);
++  }
++
++  if (needYScrollbar) {
+     vScrollbar->move(width()-scrollbarSize, 0);
+     vScrollbar->resize(scrollbarSize, height()-scrollbarSize);
+     vScrollbar->set(child->height(), -yOff, height()-scrollbarSize);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-selections.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,82 @@
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-selections.patch
+with paths adjusted to match sources in tarball before files are moved
+
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncExtInit.cc.selections vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncExtInit.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncExtInit.cc.selections	2008-03-10 15:34:24.000000000 +0100
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/vncExtInit.cc	2008-03-11 10:55:44.000000000 +0100
+@@ -62,11 +62,9 @@ extern "C" {
+   static void SendSelectionChangeEvent(Atom selection);
+   static int ProcVncExtDispatch(ClientPtr client);
+   static int SProcVncExtDispatch(ClientPtr client);
++  static void vncSelectionCallback(CallbackListPtr *callbacks, pointer data, pointer args);
+ 
+   extern char *display;
+-
+-  extern Selection *CurrentSelections;
+-  extern int NumCurrentSelections;
+ }
+ 
+ using namespace rfb;
+@@ -99,7 +97,6 @@ struct VncInputSelect {
+   VncInputSelect* next;
+ };
+ 
+-static int nPrevSelections = 0;
+ static TimeStamp* prevSelectionTimes = 0;
+ 
+ static int vncErrorBase = 0;
+@@ -147,6 +144,10 @@ void vncExtensionInit()
+     FatalError("AddCallback failed\n");
+   }
+ 
++  if (!AddCallback(&SelectionCallback, vncSelectionCallback, 0)) {
++    FatalError("Add selection callback failed\n");
++  }
++
+   try {
+     if (!initialised) {
+       rfb::initStdIOLoggers();
+@@ -212,6 +213,14 @@ static void vncResetProc(ExtensionEntry*
+ {
+ }
+ 
++static void vncSelectionCallback(CallbackListPtr *callbacks, pointer data, pointer args)
++{
++  SelectionInfoRec *info = (SelectionInfoRec *) args;
++  Selection *selection = info->selection;
++
++  SendSelectionChangeEvent(selection->selection);
++}
++
+ //
+ // vncBlockHandler - called just before the X server goes into select().  Call
+ // on to the block handler for each desktop.  Then check whether any of the
+@@ -227,27 +236,6 @@ static void vncBlockHandler(pointer data
+       desktop[scr]->blockHandler(fds);
+     }
+   }
+-
+-  if (nPrevSelections != NumCurrentSelections) {
+-    prevSelectionTimes
+-      = (TimeStamp*)xnfrealloc(prevSelectionTimes,
+-                               NumCurrentSelections * sizeof(TimeStamp));
+-    for (int i = nPrevSelections; i < NumCurrentSelections; i++) {
+-      prevSelectionTimes[i].months = 0;
+-      prevSelectionTimes[i].milliseconds = 0;
+-    }
+-    nPrevSelections = NumCurrentSelections;
+-  }
+-  for (int i = 0; i < NumCurrentSelections; i++) {
+-    if (CurrentSelections[i].lastTimeChanged.months
+-        != prevSelectionTimes[i].months ||
+-        CurrentSelections[i].lastTimeChanged.milliseconds
+-        != prevSelectionTimes[i].milliseconds)
+-    {
+-      SendSelectionChangeEvent(CurrentSelections[i].selection);
+-      prevSelectionTimes[i] = CurrentSelections[i].lastTimeChanged;
+-    }
+-  }
+ }
+ 
+ static void vncWakeupHandler(pointer data, int nfds, pointer readmask)
--- a/open-src/xserver/xvnc/vnc-use-fb.patch	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/xserver/xvnc/vnc-use-fb.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -1,8 +1,12 @@
-## Patch originally from Fedora vnc-4.1.2-21.fc8 RPM - vnc-use-fb.patch
+## Patch originally from Fedora - Revision 1.5 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-use-fb.patch
+
+Makes Xvnc use fb instead of the older cfb*/mfb libraries.
 
---- vnc-4_1-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.use-fb	2005-02-28 12:59:09.000000000 +0000
-+++ vnc-4_1-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2005-03-04 16:13:19.000000000 +0000
-@@ -48,8 +48,12 @@
+diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.use-fb vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc
+--- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.use-fb	2006-05-12 18:50:32.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2008-07-16 13:28:27.000000000 +0200
+@@ -48,8 +48,12 @@ extern "C" {
  #include "X11/Xos.h"
  #include "scrnintstr.h"
  #include "servermd.h"
@@ -15,7 +19,7 @@
  #include "mi.h"
  #include "mibstore.h"
  #include "colormapst.h"
-@@ -73,6 +77,7 @@
+@@ -73,6 +77,7 @@ extern "C" {
  #undef public
  #undef xor
  #undef and
@@ -23,15 +27,15 @@
    extern Bool cfb16ScreenInit(ScreenPtr, pointer, int, int, int, int, int);
    extern Bool cfb32ScreenInit(ScreenPtr, pointer, int, int, int, int, int);
    extern Bool cfb16CreateGC(GCPtr);
-@@ -83,6 +88,7 @@
+@@ -83,6 +88,7 @@ extern "C" {
                              unsigned long, char*);
    extern void cfb32GetImage(DrawablePtr, int, int, int, int, unsigned int,
                              unsigned long, char*);
 +#endif
  }
  
- #define XVNCVERSION "Free Edition 4.1"
-@@ -482,7 +488,7 @@
+ #define XVNCVERSION "Free Edition 4.1.2"
+@@ -482,7 +488,7 @@ CARD32 GetTimeInMillis()
  }
  #endif
  
@@ -40,7 +44,7 @@
  static Bool vfbMultiDepthCreateGC(GCPtr   pGC)
  {
    switch (vfbBitsPerPixel(pGC->depth))
-@@ -541,6 +547,7 @@
+@@ -541,6 +547,7 @@ vfbMultiDepthGetImage(DrawablePtr pDrawa
      break;
    }
  }
@@ -48,7 +52,7 @@
  
  static ColormapPtr InstalledMaps[MAXSCREENS];
  
-@@ -811,6 +818,11 @@
+@@ -811,6 +818,11 @@ static Bool vfbScreenInit(int index, Scr
    defaultColorVisualClass
      = (pvfb->bitsPerPixel > 8) ? TrueColor : PseudoColor;
  
@@ -60,7 +64,7 @@
    switch (pvfb->bitsPerPixel)
    {
    case 1:
-@@ -838,6 +850,7 @@
+@@ -838,6 +850,7 @@ static Bool vfbScreenInit(int index, Scr
    pScreen->CreateGC = vfbMultiDepthCreateGC;
    pScreen->GetImage = vfbMultiDepthGetImage;
    pScreen->GetSpans = vfbMultiDepthGetSpans;
@@ -68,7 +72,7 @@
  
    pScreen->InstallColormap = vfbInstallColormap;
    pScreen->UninstallColormap = vfbUninstallColormap;
-@@ -883,6 +896,9 @@
+@@ -883,6 +896,9 @@ static Bool vfbScreenInit(int index, Scr
      }
    }
  
@@ -78,10 +82,11 @@
    if (pvfb->bitsPerPixel == 1)
    {
      ret = mfbCreateDefColormap(pScreen);
-@@ -891,6 +907,7 @@
+@@ -891,6 +907,7 @@ static Bool vfbScreenInit(int index, Scr
    {
      ret = cfbCreateDefColormap(pScreen);
    }
 +#endif
  
    miSetZeroLineBias(pScreen, pvfb->lineBias);
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-viewerIPv6.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,166 @@
+## Patch from Fedora - Revision 1.2 of
+## http://cvs.fedoraproject.org/viewcvs/rpms/vnc/devel/vnc-viewerIPv6.patch
+
+diff -up vnc-4_1_2-unixsrc/common/network/Makefile.am.ipv6 vnc-4_1_2-unixsrc/common/network/Makefile.am
+--- vnc-4_1_2-unixsrc/common/network/Makefile.am.ipv6	2008-05-29 17:53:53.000000000 +0200
++++ vnc-4_1_2-unixsrc/common/network/Makefile.am	2008-05-29 17:53:53.000000000 +0200
+@@ -1,5 +1,7 @@
+ noinst_LTLIBRARIES = libnetwork.la
+ 
++libnetwork_la_CPPFLAGS = -DHAVE_IPV6
++
+ libnetwork_la_SOURCES = \
+ 	Socket.h \
+ 	TcpSocket.cxx \
+diff -up vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx.ipv6 vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx
+--- vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx.ipv6	2008-05-29 17:53:53.000000000 +0200
++++ vnc-4_1_2-unixsrc/common/network/TcpSocket.cxx	2008-05-29 18:18:28.000000000 +0200
+@@ -109,50 +109,100 @@ TcpSocket::TcpSocket(int sock, bool clos
+ TcpSocket::TcpSocket(const char *host, int port)
+   : closeFd(true)
+ {
+-  int sock;
++  int sock, err, family, ret;
++  size_t addrlen;
++  struct sockaddr_storage addr;
++#ifdef HAVE_IPV6
++  struct addrinfo *hostai, *current, hints;
++  char errstr[256];
++#endif
+ 
+   // - Create a socket
+   initSockets();
+-  if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+-    throw SocketException("unable to create socket", errorNumber);
+ 
+-#ifndef WIN32
+-  // - By default, close the socket on exec()
+-  fcntl(sock, F_SETFD, FD_CLOEXEC);
+-#endif
++#ifdef HAVE_IPV6
++  memset(&hints, 0, sizeof(struct addrinfo));
++  hints.ai_family = AF_UNSPEC;
++  hints.ai_socktype = SOCK_STREAM;
++  hints.ai_canonname = NULL;
++  hints.ai_addr = NULL;
++  hints.ai_next = NULL;
++
++  if (getaddrinfo(host, NULL, &hints, &hostai) != 0) {
++    err = errorNumber;
++    if (snprintf(errstr, 256, "unable resolve host by name (%s)",
++	gai_strerror(err)) < 0)
++      throw Exception("unable resolve host by name");
++    throw Exception(errstr);
++  }
++
++  for (current = hostai; current != NULL; current = hostai->ai_next) {
++    family = current->ai_family;
++    if (family != AF_INET && family != AF_INET6)
++      continue;
++
++    addrlen = current->ai_addrlen;
++    memcpy(&addr, current->ai_addr, addrlen);
++
++    if (family == AF_INET)
++      ((struct sockaddr_in *)&addr)->sin_port = htons(port);
++    else
++      ((struct sockaddr_in6 *)&addr)->sin6_port = htons(port);
+ 
+-  // - Connect it to something
++#else
++    family = AF_INET;
++    addrlen = sizeof(struct sockaddr_in);
+ 
+-  // Try processing the host as an IP address
+-  struct sockaddr_in addr;
+-  memset(&addr, 0, sizeof(addr));
+-  addr.sin_family = AF_INET;
+-  addr.sin_addr.s_addr = inet_addr(host);
+-  addr.sin_port = htons(port);
+-  if ((int)addr.sin_addr.s_addr == -1) {
+-    // Host was not an IP address - try resolving as DNS name
+-    struct hostent *hostinfo;
+-    hostinfo = gethostbyname(host);
+-    if (hostinfo && hostinfo->h_addr) {
+-      addr.sin_addr.s_addr = ((struct in_addr *)hostinfo->h_addr)->s_addr;
+-    } else {
+-      int e = errorNumber;
+-      closesocket(sock);
+-      throw SocketException("unable to resolve host by name", e);
++    // Try processing the host as an IP address
++    memset(&addr, 0, addrlen);
++    addr.sin_family = AF_INET;
++    addr.sin_addr.s_addr = inet_addr(host);
++    addr.sin_port = htons(port);
++    if ((int)addr.sin_addr.s_addr == -1) {
++      // Host was not an IP address - try resolving as DNS name
++      struct hostent *hostinfo;
++      hostinfo = gethostbyname(host);
++      if (hostinfo && hostinfo->h_addr) {
++	addr.sin_addr.s_addr = ((struct in_addr *)hostinfo->h_addr)->s_addr;
++      } else {
++	err = errorNumber;
++	strcpy(errstr, "unable to resolve host by name");
++	goto socket_fail;
++      }
++    }
++#endif
++    sock = socket (family, SOCK_STREAM, 0);
++    if (sock == -1) {
++      err = errno;
++      strcpy(errstr, "unable to create socket");
++      goto socket_fail;
+     }
+-  }
+ 
+-  // Attempt to connect to the remote host
+-  for (;;) {
+-    if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) != 0) {
+-      int e = errorNumber;
+-      if (e == EINTR)
+-        continue;
++    // Attempt to connect to the remote host
++    while ((ret = connect(sock, (struct sockaddr *)&addr, addrlen)) == -1) {
++      err = errorNumber;
++      if (err == EINTR)
++	continue;
+       closesocket(sock);
+-      throw SocketException("unable to connect to host", e);
+-    } else break;
++      break;
++    }
++#ifdef HAVE_IPV6
++    if (ret == 0)
++      break;
++    else
++      continue;
++  }
++#endif
++  if (ret == -1) {
++    strcpy(errstr, "unable to connect to host");
++    goto socket_fail;
+   }
+ 
++#ifndef WIN32
++  // - By default, close the socket on exec()
++  fcntl(sock, F_SETFD, FD_CLOEXEC);
++#endif
++
+   // Disable Nagle's algorithm, to reduce latency
+   enableNagles(sock, false);
+ 
+@@ -160,6 +210,14 @@ TcpSocket::TcpSocket(const char *host, i
+   instream = new FdInStream(sock);
+   outstream = new FdOutStream(sock);
+   ownStreams = true;
++
++  return;
++
++socket_fail:
++#ifdef HAVE_IPV6
++  freeaddrinfo(hostai);
++#endif
++  throw SocketException(errstr, err);
+ }
+ 
+ TcpSocket::~TcpSocket() {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-vncpasswd.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,29 @@
+## Patch originally from Fedora - Revision 1.1 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-vncpasswd.patch
+
+Fixes vncpasswd crash (Red Hat bug #160471).
+https://bugzilla.redhat.com/show_bug.cgi?id=160471
+http://www.realvnc.com/pipermail/vnc-list/2005-June/051429.html
+
+--- vnc-4_1_1-unixsrc/common/rfb/Password.cxx.vncpasswd	2005-06-27 15:08:30.000000000 +0100
++++ vnc-4_1_1-unixsrc/common/rfb/Password.cxx	2005-06-27 15:18:28.000000000 +0100
+@@ -38,6 +38,9 @@
+ PlainPasswd::PlainPasswd(char* pwd) : CharArray(pwd) {
+ }
+ 
++PlainPasswd::PlainPasswd(int len) : CharArray(len) {
++}
++
+ PlainPasswd::PlainPasswd(const ObfuscatedPasswd& obfPwd) : CharArray(9) {
+   if (obfPwd.length < 8)
+     throw rdr::Exception("bad obfuscated password length");
+--- vnc-4_1_1-unixsrc/common/rfb/Password.h.vncpasswd	2005-06-27 15:18:46.000000000 +0100
++++ vnc-4_1_1-unixsrc/common/rfb/Password.h	2005-06-27 15:18:56.000000000 +0100
+@@ -28,6 +28,7 @@
+   public:
+     PlainPasswd();
+     PlainPasswd(char* pwd);
++    PlainPasswd(int l);
+     PlainPasswd(const ObfuscatedPasswd& obfPwd);
+     ~PlainPasswd();
+     void replaceBuf(char* b);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/vnc-xorg.patch	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,64 @@
+## Patch originally from Fedora - Revision 1.4 of:
+http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-xorg.patch
+
+diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac.vnc vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac
+--- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac.vnc	2008-07-16 13:33:14.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac	2008-07-16 13:33:50.000000000 +0200
+@@ -29,7 +29,6 @@ AC_PREREQ(2.57)
+ AC_INIT([xorg-server], 1.4.99.905, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+ AC_CONFIG_SRCDIR([Makefile.am])
+ AM_INIT_AUTOMAKE([dist-bzip2 foreign])
+-AM_MAINTAINER_MODE
+ 
+ dnl this gets generated by autoheader, and thus contains all the defines.  we
+ dnl don't ever actually use it, internally.
+@@ -1212,6 +1211,9 @@ if test "x$XVFB" = xyes; then
+ 	AC_SUBST([XVFB_SYS_LIBS])
+ fi
+ 
++dnl Xvnc DDX
++AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XEXT_INC $FB_INC $MI_INC $RENDER_INC"])
++AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB"])
+ 
+ dnl Xnest DDX
+ 
+@@ -2176,6 +2178,7 @@ hw/dmx/input/Makefile
+ hw/dmx/glxProxy/Makefile
+ hw/dmx/Makefile
+ hw/vfb/Makefile
++hw/vnc/Makefile
+ hw/xgl/Makefile
+ hw/xgl/egl/Makefile
+ hw/xgl/egl/module/Makefile
+diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/Makefile.am.vnc vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/Makefile.am
+--- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/Makefile.am.vnc	2008-07-16 13:33:14.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/Makefile.am	2008-07-16 13:33:15.000000000 +0200
+@@ -43,7 +43,8 @@ SUBDIRS =			\
+ 	$(DMX_SUBDIRS)		\
+ 	$(KDRIVE_SUBDIRS)	\
+ 	$(XQUARTZ_SUBDIRS)	\
+-	$(XPRINT_SUBDIRS)
++	$(XPRINT_SUBDIRS)	\
++	vnc
+ 
+ DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xgl xprint
+ 
+diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/mi/miinitext.c.vnc vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/mi/miinitext.c
+--- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/mi/miinitext.c.vnc	2008-07-16 13:33:14.000000000 +0200
++++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/mi/miinitext.c	2008-07-16 13:33:15.000000000 +0200
+@@ -292,6 +292,7 @@ extern void BigReqExtensionInit(INITARGS
+ #ifdef MITMISC
+ extern void MITMiscExtensionInit(INITARGS);
+ #endif
++extern void vncExtensionInit(INITARGS);
+ #ifdef XIDLE
+ extern void XIdleExtensionInit(INITARGS);
+ #endif
+@@ -566,6 +567,7 @@ InitExtensions(argc, argv)
+ #ifdef MITMISC
+     if (!noMITMiscExtension) MITMiscExtensionInit();
+ #endif
++    vncExtensionInit();
+ #ifdef XIDLE
+     if (!noXIdleExtension) XIdleExtensionInit();
+ #endif
--- a/packages/SUNW0xman/Makefile	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNW0xman/Makefile	Thu Jan 15 12:55:00 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@
 # of the copyright holder.
 #
 #
-# ident "@(#)Makefile	1.3    07/01/31 SMI"
+# ident "@(#)Makefile	1.4    09/01/14 SMI"
 #
 
 SOURCEDIR=../../packages
@@ -36,15 +36,21 @@
 	$(SOURCEDIR)/SUNWxwman/prototype_com			\
 	$(SOURCEDIR)/SUNWxwman/prototype_i386			\
 	$(SOURCEDIR)/SUNWfontconfig-docs/prototype 		\
+	$(SOURCEDIR)/SUNWpciaccess/prototype	 		\
+	$(SOURCEDIR)/SUNWvncviewer/prototype	 		\
+	$(SOURCEDIR)/SUNWxvnc/prototype_com	 		\
 	$(SOURCEDIR)/SUNWxwsvr/prototype			\
-	$(SOURCEDIR)/SUNWxorg-doc/prototype_com			\
+	$(SOURCEDIR)/SUNWxorg-graphics-ddx/prototype_com	\
+	$(SOURCEDIR)/SUNWxorg-server/prototype_com		\
 	$(SOURCEDIR)/SUNWxorg-client-docs/prototype		\
 	$(SOURCEDIR)/SUNWxscreensaver-hacks/prototype		\
 	$(SOURCEDIR)/SUNWxscreensaver-hacks-gl/prototype_com
 
-#	$(SOURCEDIR)/SUNWxorg-doc/prototype_i386		\
-#	$(SOURCEDIR)/SUNWxorg-doc/prototype_sparc		\
-
+# Don't include platform-specific man pages for now, since it will
+# break builds on the other platform:
+#	$(SOURCEDIR)/SUNWxorg-graphics-ddx/prototype_sparc	\
+#	$(SOURCEDIR)/SUNWxorg-graphics-ddx/prototype_i386	\
+#	$(SOURCEDIR)/SUNWxorg-server/prototype_i386		\
 
 all: prototype
 
--- a/packages/SUNWxorg-cfg/prototype_com	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxorg-cfg/prototype_com	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ##########################################################################
 #
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@
 #
 ##########################################################################
 #
-# ident "@(#)prototype_com 1.15     08/01/23 SMI"
+# ident "@(#)prototype_com 1.16     09/01/14 SMI"
 #
 # X.Org server configuration tool
 
@@ -82,3 +82,8 @@
 f none X11/include/X11/bitmaps/keyboard.xbm	0444 root bin
 f none X11/include/X11/bitmaps/monitor.xbm	0444 root bin
 
+!search $HOME/share/man/man1
+d none X11/share 0755 root bin
+d none X11/share/man 0755 root bin
+d none X11/share/man/man1 0755 root bin
+f none X11/share/man/man1/xorgcfg.1 0444 root bin
--- a/packages/SUNWxorg-doc/copyright.add	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-
---------------------------------------------------------------------
-
-Files from the X.Org xserver package are covered by the following notice:
-
-include xserver/xorg/COPYING.xorg-docs
-
---------------------------------------------------------------------
-
-Files from the app/xkbcomp package are covered by the following notice:
-
-include app/xkbcomp/COPYING
-
---------------------------------------------------------------------
-
-Files from the driver/xf86-input-keyboard package are covered by the following notice:
-
-include driver/xf86-input-keyboard/COPYING
-
---------------------------------------------------------------------
-
-Files from the driver/xf86-input-mouse package are covered by the following notice:
-
-include driver/xf86-input-mouse/COPYING
-
---------------------------------------------------------------------
-
-Files from the driver/xf86-input-void package are covered by the following notice:
-
-include driver/xf86-input-void/COPYING
-
-
---------------------------------------------------------------------
-
-Files from the driver/xf86-video-dummy package are covered by the following notice:
-
-include driver/xf86-video-dummy/COPYING
-
--- a/packages/SUNWxorg-doc/copyright.add.i386	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +0,0 @@
-
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-acecad package are covered by the following notice:
-
-include driver/xf86-input-acecad/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-calcomp package are covered by the following notice:
-
-include driver/xf86-input-calcomp/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-citron package are covered by the following notice:
-
-include driver/xf86-input-citron/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-digitaledge package are covered by the following notice:
-
-include driver/xf86-input-digitaledge/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-dmc package are covered by the following notice:
-
-include driver/xf86-input-dmc/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-dynapro package are covered by the following notice:
-
-include driver/xf86-input-dynapro/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-elographics package are covered by the following notice:
-
-include driver/xf86-input-elographics/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-fpit package are covered by the following notice:
-
-include driver/xf86-input-fpit/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-hyperpen package are covered by the following notice:
-
-include driver/xf86-input-hyperpen/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-jamstudio package are covered by the following notice:
-
-include driver/xf86-input-jamstudio/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-magellan package are covered by the following notice:
-
-include driver/xf86-input-magellan/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-microtouch package are covered by the following notice:
-
-include driver/xf86-input-microtouch/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-mutouch package are covered by the following notice:
-
-include driver/xf86-input-mutouch/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-palmax package are covered by the following notice:
-
-include driver/xf86-input-palmax/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-penmount package are covered by the following notice:
-
-include driver/xf86-input-penmount/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-spaceorb package are covered by the following notice:
-
-include driver/xf86-input-spaceorb/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-summa package are covered by the following notice:
-
-include driver/xf86-input-summa/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-tek4957 package are covered by the following notice:
-
-include driver/xf86-input-tek4957/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-input-vmmouse package are covered by the following notice:
-
-include driver/xf86-input-vmmouse/COPYING
-
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-apm package are covered by the following notice:
-
-include driver/xf86-video-apm/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-ark package are covered by the following notice:
-
-include driver/xf86-video-ark/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-ast package are covered by the following notice:
-
-include driver/xf86-video-ast/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-ati package are covered by the following notice:
-
-include driver/xf86-video-ati/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-chips package are covered by the following notice:
-
-include driver/xf86-video-chips/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-cirrus package are covered by the following notice:
-
-include driver/xf86-video-cirrus/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-cyrix package are covered by the following notice:
-
-include driver/xf86-video-cyrix/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-glint package are covered by the following notice:
-
-include driver/xf86-video-glint/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-i128 package are covered by the following notice:
-
-include driver/xf86-video-i128/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-i740 package are covered by the following notice:
-
-include driver/xf86-video-i740/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-intel package are covered by the following notice:
-
-include driver/xf86-video-intel/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-mga package are covered by the following notice:
-
-include driver/xf86-video-mga/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-neomagic package are covered by the following notice:
-
-include driver/xf86-video-neomagic/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-nsc package are covered by the following notice:
-
-include driver/xf86-video-nsc/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-nv package are covered by the following notice:
-
-include driver/xf86-video-nv/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-radeonhd package are covered by the following notice:
-
-include driver/xf86-video-radeonhd/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-rendition package are covered by the following notice:
-
-include driver/xf86-video-rendition/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-s3 package are covered by the following notice:
-
-include driver/xf86-video-s3/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-s3virge package are covered by the following notice:
-
-include driver/xf86-video-s3virge/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-savage package are covered by the following notice:
-
-include driver/xf86-video-savage/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-siliconmotion package are covered by the following notice:
-
-include driver/xf86-video-siliconmotion/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-sis package are covered by the following notice:
-
-include driver/xf86-video-sis/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-tdfx package are covered by the following notice:
-
-include driver/xf86-video-tdfx/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-tga package are covered by the following notice:
-
-include driver/xf86-video-tga/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-trident package are covered by the following notice:
-
-include driver/xf86-video-trident/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-tseng package are covered by the following notice:
-
-include driver/xf86-video-tseng/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-vesa package are covered by the following notice:
-
-include driver/xf86-video-vesa/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-vga package are covered by the following notice:
-
-include driver/xf86-video-vga/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-via package are covered by the following notice:
-
-include driver/xf86-video-via/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-vmware package are covered by the following notice:
-
-include driver/xf86-video-vmware/COPYING
-
--- a/packages/SUNWxorg-doc/copyright.add.sparc	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-wsfb package are covered by the following notice:
-
-include driver/xf86-video-wsfb/COPYING
-
--- a/packages/SUNWxorg-doc/depend	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-##########################################################################
-#
-# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-##########################################################################
-#
-# ident "@(#)depend 1.3     05/11/07 SMI"
-#
-# X.Org Foundation Xserver documentation
-
-P SUNWcsr       Core Solaris, (Root)
-P SUNWcsu       Core Solaris, (Usr)
-P SUNWcsl       Core Solaris, (Shared Libs)
-P SUNWxwman	X Window System online user man pages
-
--- a/packages/SUNWxorg-doc/pkginfo.tmpl	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-##########################################################################
-#
-# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-##########################################################################
-#
-# ident "@(#)pkginfo.tmpl 1.4     05/11/07 SMI"
-#
-PKG="SUNWxorg-doc"
-NAME="X.Org Foundation Xserver documentation"
-ARCH="ISA"
-VERSION=0.1,REV=0.2000.02.02
-CATEGORY="system"
-DESC="Documentation for X Window System server based on X.Org Foundation open source release"
-BASEDIR="/usr"
-VENDOR="Sun Microsystems, Inc."
-HOTLINE="Please contact your local service provider"
-EMAIL=""
-MAXINST="1000"
-SUNW_PKGVERS=1.0
-SUNW_PRODNAME="X.Org Foundation X11 for Solaris"
-SUNW_PRODVERS=1.0
-SUNW_PKGTYPE=usr
--- a/packages/SUNWxorg-doc/prototype_com	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-##########################################################################
-#
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-##########################################################################
-#
-# ident "@(#)prototype_com 1.18     08/04/01 SMI"
-#
-# X.Org Foundation X server for Solaris
-
-!HOME=../usr/X11
-
-i pkginfo
-i depend
-i copyright
-
-d none X11 0755 root bin
-d none X11/share 0755 root bin
-
-!search $HOME/share/doc
-d none X11/share/doc 0755 root bin
-f none X11/share/doc/LICENSE 0444 root bin
-f none X11/share/doc/README.DRI 0444 root bin
-f none X11/share/doc/README.XKB-Config 0444 root bin
-f none X11/share/doc/README.XKB-Enhancing 0444 root bin
-f none X11/share/doc/README.fonts 0444 root bin
-f none X11/share/doc/README.mouse 0444 root bin
-f none X11/share/doc/RELNOTES 0444 root bin
-
-!search $HOME/lib/X11/xkb
-d none X11/lib 0755 root bin
-d none X11/lib/X11 0755 root bin
-s none X11/lib/X11/doc=../../share/doc
-d none X11/lib/X11/xkb 0755 root bin
-s none X11/lib/X11/xkb/README.config=../../../share/doc/README.XKB-Config
-s none X11/lib/X11/xkb/README.enhancing=../../../share/doc/README.XKB-Enhancing
-
-d none X11/share/man 0755 root bin
-s none X11/man=share/man
-
-!search $HOME/share/man/man1
-d none X11/share/man/man1 0755 root bin
-f none X11/share/man/man1/Xorg.1 0444 root bin
-#f none X11/share/man/man1/getconfig.1 0444 root bin
-f none X11/share/man/man1/gtf.1 0444 root bin
-f none X11/share/man/man1/pcitweak.1 0444 root bin
-f none X11/share/man/man1/scanpci.1 0444 root bin
-f none X11/share/man/man1/xkbcomp.1 0444 root bin
-f none X11/share/man/man1/xorgcfg.1 0444 root bin
-f none X11/share/man/man1/xorgconfig.1 0444 root bin
-
-!search $HOME/share/man/man4
-d none X11/share/man/man4 0755 root bin
-f none X11/share/man/man4/xorg.conf.4 0444 root bin
-#f none X11/share/man/man4/getconfig.4 0444 root bin
-
-!search $HOME/share/man/man7
-d none X11/share/man/man7 0755 root bin
-f none X11/share/man/man7/exa.7 0444 root bin
-f none X11/share/man/man7/kbd.7 0444 root bin
-f none X11/share/man/man7/keyboard.7 0444 root bin
-f none X11/share/man/man7/mouse.7=$HOME/share/man/man7/mousedrv.7 0444 root bin
-f none X11/share/man/man7/void.7 0444 root bin
-
--- a/packages/SUNWxorg-doc/prototype_i386	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-##########################################################################
-#
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-##########################################################################
-#
-# ident "@(#)prototype_i386 1.15     08/04/01 SMI"
-#
-# X.Org Foundation X server for Solaris
-
-# Include ISA independent files (prototype_com)
-#
-!include prototype_com
-
-!search $HOME/share/doc
-f none X11/share/doc/README.I128 0444 root bin
-f none X11/share/doc/README.SiS 0444 root bin
-f none X11/share/doc/README.apm 0444 root bin
-f none X11/share/doc/README.ati 0444 root bin
-f none X11/share/doc/README.chips 0444 root bin
-f none X11/share/doc/README.cyrix 0444 root bin
-f none X11/share/doc/README.i740 0444 root bin
-f none X11/share/doc/README.intel 0444 root bin
-f none X11/share/doc/README.r128 0444 root bin
-f none X11/share/doc/README.rapidaccess 0444 root bin
-f none X11/share/doc/README.rendition 0444 root bin
-f none X11/share/doc/README.s3virge 0444 root bin
-
-!search $HOME/share/man/man7
-f none X11/share/man/man7/acecad.7 0444 root bin
-f none X11/share/man/man7/apm.7 0444 root bin
-f none X11/share/man/man7/ati.7 0444 root bin
-f none X11/share/man/man7/calcomp.7 0444 root bin
-f none X11/share/man/man7/chips.7 0444 root bin
-f none X11/share/man/man7/cirrus.7 0444 root bin
-f none X11/share/man/man7/citron.7 0444 root bin
-f none X11/share/man/man7/cyrix.7 0444 root bin
-f none X11/share/man/man7/dmc.7 0444 root bin
-f none X11/share/man/man7/dynapro.7 0444 root bin
-f none X11/share/man/man7/elographics.7 0444 root bin
-f none X11/share/man/man7/fpit.7 0444 root bin
-f none X11/share/man/man7/glint.7 0444 root bin
-f none X11/share/man/man7/i128.7 0444 root bin
-f none X11/share/man/man7/i740.7 0444 root bin
-f none X11/share/man/man7/i810.7 0444 root bin
-f none X11/share/man/man7/intel.7 0444 root bin
-f none X11/share/man/man7/js_x.7 0444 root bin
-f none X11/share/man/man7/mga.7 0444 root bin
-f none X11/share/man/man7/microtouch.7 0444 root bin
-f none X11/share/man/man7/mutouch.7 0444 root bin
-f none X11/share/man/man7/neomagic.7 0444 root bin
-f none X11/share/man/man7/nsc.7 0444 root bin
-f none X11/share/man/man7/nv.7 0444 root bin
-f none X11/share/man/man7/palmax.7 0444 root bin
-f none X11/share/man/man7/penmount.7 0444 root bin
-f none X11/share/man/man7/r128.7 0444 root bin
-f none X11/share/man/man7/radeon.7 0444 root bin
-f none X11/share/man/man7/radeonhd.7 0444 root bin
-f none X11/share/man/man7/rendition.7 0444 root bin
-f none X11/share/man/man7/s3virge.7 0444 root bin
-f none X11/share/man/man7/savage.7 0444 root bin
-f none X11/share/man/man7/siliconmotion.7 0444 root bin
-f none X11/share/man/man7/sis.7 0444 root bin
-f none X11/share/man/man7/tdfx.7 0444 root bin
-f none X11/share/man/man7/tek4957.7 0444 root bin
-f none X11/share/man/man7/trident.7 0444 root bin
-f none X11/share/man/man7/tseng.7 0444 root bin
-f none X11/share/man/man7/vesa.7 0444 root bin
-f none X11/share/man/man7/vga.7 0444 root bin
-f none X11/share/man/man7/via.7 0444 root bin
-f none X11/share/man/man7/vmmouse.7 0444 root bin
-f none X11/share/man/man7/vmware.7 0444 root bin
-#f none X11/share/man/man7/wacom.7 0444 root bin
-
-
--- a/packages/SUNWxorg-doc/prototype_sparc	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-##########################################################################
-#
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-##########################################################################
-#
-# ident "@(#)prototype_sparc 1.2     07/01/31 SMI"
-#
-# X.Org Foundation X server for Solaris
-
-# Include ISA independent files (prototype_com)
-#
-!include prototype_com
-
-!search $HOME/share/man/man7
-f none X11/share/man/man7/wsfb.7 0444 root bin
--- a/packages/SUNWxorg-graphics-ddx/copyright.add.i386	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxorg-graphics-ddx/copyright.add.i386	Thu Jan 15 12:55:00 2009 -0800
@@ -23,10 +23,6 @@
 
 include driver/xf86-video-cirrus/COPYING
 ------------------------------------------------------------------------------
-Files from the driver/xf86-video-cyrix package are covered by the following notice:
-
-include driver/xf86-video-cyrix/COPYING
-------------------------------------------------------------------------------
 Files from the driver/xf86-video-glint package are covered by the following notice:
 
 include driver/xf86-video-glint/COPYING
@@ -51,14 +47,14 @@
 
 include driver/xf86-video-neomagic/COPYING
 ------------------------------------------------------------------------------
-Files from the driver/xf86-video-nsc package are covered by the following notice:
-
-include driver/xf86-video-nsc/COPYING
-------------------------------------------------------------------------------
 Files from the driver/xf86-video-nv package are covered by the following notice:
 
 include driver/xf86-video-nv/COPYING
 ------------------------------------------------------------------------------
+Files from the driver/xf86-video-openchrome package are covered by the following notice:
+
+include driver/xf86-video-openchrome/COPYING
+------------------------------------------------------------------------------
 Files from the driver/xf86-video-radeonhd package are covered by the following notice:
 
 include driver/xf86-video-radeonhd/COPYING
@@ -107,14 +103,6 @@
 
 include driver/xf86-video-vesa/COPYING
 ------------------------------------------------------------------------------
-Files from the driver/xf86-video-vga package are covered by the following notice:
-
-include driver/xf86-video-vga/COPYING
-------------------------------------------------------------------------------
-Files from the driver/xf86-video-via package are covered by the following notice:
-
-include driver/xf86-video-via/COPYING
-------------------------------------------------------------------------------
 Files from the driver/xf86-video-vmware package are covered by the following notice:
 
 include driver/xf86-video-vmware/COPYING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/SUNWxorg-graphics-ddx/depend_com	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,38 @@
+##########################################################################
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+##########################################################################
+#
+# ident "@(#)depend_com	1.1	09/01/14 SMI"
+#
+#  X.Org Foundation X server graphics driver modules for Solaris & OpenSolaris
+
+P SUNWxorg-server       X.org Foundation Xserver
+P SUNWpciaccess		PCI bus access library and tools
+P SUNWpixman		Pixman library
--- a/packages/SUNWxorg-graphics-ddx/depend_i386	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-##########################################################################
-#
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-##########################################################################
-#
-# ident "%Z%%M% %I%     %E% SMI"
-#
-# X.Org Foundation X server graphics driver modules for Solaris
-
-P SUNWcsr	Core Solaris, (Root)
-P SUNWcsu	Core Solaris, (Usr)
-P SUNWcsl	Core Solaris, (Shared Libs)
-P SUNWesu	Extended System Utilities
-P SUNWxorg-server	X.org Foundation Xserver
-# Needed for drivers that depend on dri bits from Mesa pkg:
-P SUNWxorg-mesa		Xorg Server Mesa Modules and Libraries
-# Needed since we build with gcc:
-P SUNWgccruntime	GCC Runtime libraries
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/SUNWxorg-graphics-ddx/depend_i386.tmpl	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,45 @@
+##########################################################################
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+##########################################################################
+#
+# ident "@(#)depend_i386.tmpl 1.1     09/01/14 SMI"
+#
+# X.Org Foundation X server graphics driver modules for Solaris & OpenSolaris
+
+# Needed for drivers that depend on dri bits from Mesa pkg:
+P SUNWxorg-mesa		Xorg Server Mesa Modules and Libraries
+
+# Needed since we build with gcc:
+P SUNWgccruntime	GCC Runtime libraries
+
+include depend_com
+
+include ../depend
+
--- a/packages/SUNWxorg-graphics-ddx/depend_sparc	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-##########################################################################
-#
-# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-##########################################################################
-#
-# ident "@(#)depend_sparc 1.2     05/11/07 SMI"
-#
-# X.Org Foundation X server graphics driver modules for Solaris
-
-P SUNWcsr	Core Solaris, (Root)
-P SUNWcsu	Core Solaris, (Usr)
-P SUNWcsl	Core Solaris, (Shared Libs)
-P SUNWesu	Extended System Utilities
-P SUNWxorg-server	X.org Foundation Xserver
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/SUNWxorg-graphics-ddx/depend_sparc.tmpl	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,38 @@
+##########################################################################
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+##########################################################################
+#
+# ident "@(#)depend_sparc.tmpl 1.3     09/01/14 SMI"
+#
+# X.Org Foundation X server graphics driver modules for Solaris & OpenSolaris
+
+include depend_com
+
+include ../depend
--- a/packages/SUNWxorg-graphics-ddx/prototype_com	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxorg-graphics-ddx/prototype_com	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ##########################################################################
 #
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@
 #
 ##########################################################################
 #
-# ident "@(#)prototype_com 1.6     07/07/20 SMI"
+# ident "@(#)prototype_com 1.7     09/01/14 SMI"
 #
 # X.Org Foundation X server for Solaris Graphics Device DDX modules
 
@@ -43,3 +43,7 @@
 d none X11/lib/X11 0755 root bin
 d none X11/lib/modules 0755 root bin
 d none X11/lib/modules/drivers 0755 root bin
+d none X11/share 0755 root bin
+d none X11/share/doc 0755 root bin
+d none X11/share/man 0755 root bin
+d none X11/share/man/man7 0755 root bin
--- a/packages/SUNWxorg-graphics-ddx/prototype_i386	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxorg-graphics-ddx/prototype_i386	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###########################################################################
 #
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@
 #
 ###########################################################################
 #
-# ident "@(#)prototype_i386 1.16     08/03/18 SMI"
+# ident "@(#)prototype_i386 1.17     09/01/14 SMI"
 #
 # X.Org Foundation X server for Solaris
 
@@ -54,7 +54,6 @@
 f none X11/lib/modules/drivers/cirrus_alpine.so 0755 root bin
 f none X11/lib/modules/drivers/cirrus_drv.so 0755 root bin
 f none X11/lib/modules/drivers/cirrus_laguna.so 0755 root bin
-f none X11/lib/modules/drivers/cyrix_drv.so 0755 root bin
 f none X11/lib/modules/drivers/glint_drv.so 0755 root bin
 f none X11/lib/modules/drivers/i128_drv.so 0755 root bin
 f none X11/lib/modules/drivers/i740_drv.so 0755 root bin
@@ -63,8 +62,8 @@
 f none X11/lib/modules/drivers/mach64_drv.so 0755 root bin
 f none X11/lib/modules/drivers/mga_drv.so 0755 root bin
 f none X11/lib/modules/drivers/neomagic_drv.so 0755 root bin
-f none X11/lib/modules/drivers/nsc_drv.so 0755 root bin
 f none X11/lib/modules/drivers/nv_drv.so 0755 root bin
+f none X11/lib/modules/drivers/openchrome_drv.so 0755 root bin
 f none X11/lib/modules/drivers/radeon_drv.so 0755 root bin
 f none X11/lib/modules/drivers/radeonhd_drv.so 0755 root bin
 f none X11/lib/modules/drivers/r128_drv.so 0755 root bin
@@ -79,8 +78,7 @@
 f none X11/lib/modules/drivers/trident_drv.so 0755 root bin
 f none X11/lib/modules/drivers/tseng_drv.so 0755 root bin
 f none X11/lib/modules/drivers/vesa_drv.so 0755 root bin
-f none X11/lib/modules/drivers/vga_drv.so 0755 root bin
-f none X11/lib/modules/drivers/via_drv.so 0755 root bin
+s none X11/lib/modules/drivers/via_drv.so=openchrome_drv.so
 f none X11/lib/modules/drivers/vmware_drv.so 0755 root bin
 
 !search $HOME/lib/modules/amd64/drivers
@@ -93,15 +91,15 @@
 f none X11/lib/modules/drivers/amd64/radeonhd_drv.so 0755 root bin
 f none X11/lib/modules/drivers/amd64/r128_drv.so 0755 root bin
 f none X11/lib/modules/drivers/amd64/vesa_drv.so 0755 root bin
-f none X11/lib/modules/drivers/amd64/vga_drv.so 0755 root bin
 f none X11/lib/modules/drivers/amd64/ast_drv.so 0755 root bin
 f none X11/lib/modules/drivers/amd64/intel_drv.so 0755 root bin
 s none X11/lib/modules/drivers/amd64/i810_drv.so=intel_drv.so
 f none X11/lib/modules/drivers/amd64/mach64_drv.so 0755 root bin
 f none X11/lib/modules/drivers/amd64/mga_drv.so 0755 root bin
 f none X11/lib/modules/drivers/amd64/nv_drv.so 0755 root bin
+f none X11/lib/modules/drivers/amd64/openchrome_drv.so 0755 root bin
 f none X11/lib/modules/drivers/amd64/trident_drv.so 0755 root bin
-f none X11/lib/modules/drivers/amd64/via_drv.so 0755 root bin
+s none X11/lib/modules/drivers/amd64/via_drv.so=openchrome_drv.so
 f none X11/lib/modules/drivers/amd64/vmware_drv.so 0755 root bin
 
 !search $HOME/lib/modules/multimedia
@@ -131,3 +129,42 @@
 f none X11/lib/modules/multimedia/amd64/uda1380_drv.so 0755 root bin
 
 
+!search $HOME/share/doc
+f none X11/share/doc/README.I128 0444 root bin
+f none X11/share/doc/README.SiS 0444 root bin
+f none X11/share/doc/README.apm 0444 root bin
+f none X11/share/doc/README.ati 0444 root bin
+f none X11/share/doc/README.chips 0444 root bin
+f none X11/share/doc/README.i740 0444 root bin
+f none X11/share/doc/README.intel 0444 root bin
+f none X11/share/doc/README.r128 0444 root bin
+f none X11/share/doc/README.rendition 0444 root bin
+f none X11/share/doc/README.s3virge 0444 root bin
+
+!search $HOME/share/man/man7
+f none X11/share/man/man7/apm.7 0444 root bin
+f none X11/share/man/man7/ati.7 0444 root bin
+f none X11/share/man/man7/chips.7 0444 root bin
+f none X11/share/man/man7/cirrus.7 0444 root bin
+f none X11/share/man/man7/glint.7 0444 root bin
+f none X11/share/man/man7/i128.7 0444 root bin
+f none X11/share/man/man7/i740.7 0444 root bin
+f none X11/share/man/man7/i810.7 0444 root bin
+f none X11/share/man/man7/intel.7 0444 root bin
+f none X11/share/man/man7/mga.7 0444 root bin
+f none X11/share/man/man7/neomagic.7 0444 root bin
+f none X11/share/man/man7/nv.7 0444 root bin
+f none X11/share/man/man7/openchrome.7=$HOME/share/man/man4/openchrome.4 0444 root bin
+f none X11/share/man/man7/r128.7 0444 root bin
+f none X11/share/man/man7/radeon.7 0444 root bin
+f none X11/share/man/man7/radeonhd.7 0444 root bin
+f none X11/share/man/man7/rendition.7 0444 root bin
+f none X11/share/man/man7/s3virge.7 0444 root bin
+f none X11/share/man/man7/savage.7 0444 root bin
+f none X11/share/man/man7/siliconmotion.7 0444 root bin
+f none X11/share/man/man7/sis.7 0444 root bin
+f none X11/share/man/man7/tdfx.7 0444 root bin
+f none X11/share/man/man7/trident.7 0444 root bin
+f none X11/share/man/man7/tseng.7 0444 root bin
+f none X11/share/man/man7/vesa.7 0444 root bin
+f none X11/share/man/man7/vmware.7 0444 root bin
--- a/packages/SUNWxorg-graphics-ddx/prototype_sparc	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxorg-graphics-ddx/prototype_sparc	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###########################################################################
 #
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@
 #
 ###########################################################################
 #
-# ident "@(#)prototype_sparc 1.4     07/07/20 SMI"
+# ident "@(#)prototype_sparc 1.5     09/01/14 SMI"
 #
 # X.Org Foundation X server for Solaris
 
@@ -41,3 +41,6 @@
 
 !search $HOME/lib/modules/drivers
 f none X11/lib/modules/drivers/wsfb_drv.so 0755 root bin
+
+!search $HOME/share/man/man7
+f none X11/share/man/man7/wsfb.7 0444 root bin
--- a/packages/SUNWxorg-headers/prototype	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxorg-headers/prototype	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ##########################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@
 #
 ##########################################################################
 #
-# ident "@(#)prototype 1.11     08/05/30 SMI"
+# ident "@(#)prototype 1.12     09/01/14 SMI"
 #
 # X.Org Foundation X client libraries for Solaris
 
@@ -158,14 +158,6 @@
 f none X11/include/xorg/bstore.h			0444 root bin
 f none X11/include/xorg/bstorestr.h			0444 root bin
 f none X11/include/xorg/bt829.h				0444 root bin
-f none X11/include/xorg/cfb.h				0444 root bin
-f none X11/include/xorg/cfb16.h				0444 root bin
-f none X11/include/xorg/cfb32.h				0444 root bin
-f none X11/include/xorg/cfb8_16.h			0444 root bin
-f none X11/include/xorg/cfb8_32.h			0444 root bin
-f none X11/include/xorg/cfbmap.h			0444 root bin
-f none X11/include/xorg/cfbmskbits.h			0444 root bin
-f none X11/include/xorg/cfbunmap.h			0444 root bin
 f none X11/include/xorg/closestr.h			0444 root bin
 f none X11/include/xorg/closure.h			0444 root bin
 f none X11/include/xorg/colormap.h			0444 root bin
@@ -178,11 +170,14 @@
 f none X11/include/xorg/dbestruct.h			0444 root bin
 f none X11/include/xorg/dgaproc.h			0444 root bin
 f none X11/include/xorg/dix.h				0444 root bin
+f none X11/include/xorg/dixaccess.h			0444 root bin
 f none X11/include/xorg/dixevents.h			0444 root bin
 f none X11/include/xorg/dixfont.h			0444 root bin
 f none X11/include/xorg/dixfontstr.h			0444 root bin
 f none X11/include/xorg/dixgrabs.h			0444 root bin
 f none X11/include/xorg/dixstruct.h			0444 root bin
+f none X11/include/xorg/dri.h				0444 root bin
+f none X11/include/xorg/dristruct.h			0444 root bin
 f none X11/include/xorg/edid.h				0444 root bin
 f none X11/include/xorg/exa.h				0444 root bin
 f none X11/include/xorg/exevents.h			0444 root bin
@@ -200,6 +195,7 @@
 f none X11/include/xorg/gcstruct.h			0444 root bin
 f none X11/include/xorg/globals.h			0444 root bin
 f none X11/include/xorg/glyphstr.h			0444 root bin
+f none X11/include/xorg/hotplug.h			0444 root bin
 f none X11/include/xorg/i2c_def.h			0444 root bin
 f none X11/include/xorg/input.h				0444 root bin
 f none X11/include/xorg/inputstr.h			0444 root bin
@@ -232,14 +228,17 @@
 f none X11/include/xorg/picturestr.h			0444 root bin
 f none X11/include/xorg/pixmap.h			0444 root bin
 f none X11/include/xorg/pixmapstr.h			0444 root bin
+f none X11/include/xorg/privates.h			0444 root bin
 f none X11/include/xorg/property.h			0444 root bin
 f none X11/include/xorg/propertyst.h			0444 root bin
 f none X11/include/xorg/randrstr.h			0444 root bin
 f none X11/include/xorg/region.h			0444 root bin
 f none X11/include/xorg/regionstr.h			0444 root bin
+f none X11/include/xorg/registry.h			0444 root bin
 f none X11/include/xorg/renderedge.h			0444 root bin
 f none X11/include/xorg/resource.h			0444 root bin
 f none X11/include/xorg/rgb.h				0444 root bin
+f none X11/include/xorg/sarea.h				0444 root bin
 f none X11/include/xorg/screenint.h			0444 root bin
 f none X11/include/xorg/scrnintstr.h			0444 root bin
 f none X11/include/xorg/selection.h			0444 root bin
@@ -256,26 +255,23 @@
 f none X11/include/xorg/validate.h			0444 root bin
 f none X11/include/xorg/vbe.h				0444 root bin
 f none X11/include/xorg/vbeModes.h			0444 root bin
-f none X11/include/xorg/vdif.h				0444 root bin
 f none X11/include/xorg/vgaHW.h				0444 root bin
+f none X11/include/xorg/wfbrename.h			0444 root bin
 f none X11/include/xorg/window.h			0444 root bin
 f none X11/include/xorg/windowstr.h			0444 root bin
 f none X11/include/xorg/xaa.h				0444 root bin
 f none X11/include/xorg/xaaWrapper.h			0444 root bin
 f none X11/include/xorg/xaalocal.h			0444 root bin
 f none X11/include/xorg/xaarop.h			0444 root bin
-f none X11/include/xorg/xf1bpp.h			0444 root bin
-f none X11/include/xorg/xf4bpp.h			0444 root bin
 f none X11/include/xorg/xf86.h				0444 root bin
 f none X11/include/xorg/xf86Crtc.h			0444 root bin
 f none X11/include/xorg/xf86Cursor.h			0444 root bin
 f none X11/include/xorg/xf86DDC.h			0444 root bin
 f none X11/include/xorg/xf86Modes.h			0444 root bin
 f none X11/include/xorg/xf86Module.h			0444 root bin
+f none X11/include/xorg/xf86Opt.h			0444 root bin
 f none X11/include/xorg/xf86Optrec.h			0444 root bin
-f none X11/include/xorg/xf86OSKbd.h			0444 root bin
 f none X11/include/xorg/xf86OSmouse.h			0444 root bin
-f none X11/include/xorg/xf86Opt.h			0444 root bin
 f none X11/include/xorg/xf86Parser.h			0444 root bin
 f none X11/include/xorg/xf86Pci.h			0444 root bin
 f none X11/include/xorg/xf86PciInfo.h			0444 root bin
@@ -291,8 +287,6 @@
 f none X11/include/xorg/xf86Xinput.h			0444 root bin
 f none X11/include/xorg/xf86_OSlib.h			0444 root bin
 f none X11/include/xorg/xf86_OSproc.h			0444 root bin
-f none X11/include/xorg/xf86_ansic.h			0444 root bin
-f none X11/include/xorg/xf86_libc.h			0444 root bin
 f none X11/include/xorg/xf86cmap.h			0444 root bin
 f none X11/include/xorg/xf86fbman.h			0444 root bin
 f none X11/include/xorg/xf86i2c.h			0444 root bin
@@ -303,6 +297,9 @@
 f none X11/include/xorg/xf86xvmc.h			0444 root bin
 f none X11/include/xorg/xf86xvpriv.h			0444 root bin
 f none X11/include/xorg/xisb.h				0444 root bin
+f none X11/include/xorg/xkbfile.h			0444 root bin
+f none X11/include/xorg/xkbsrv.h			0444 root bin
+f none X11/include/xorg/xkbstr.h			0444 root bin
 f none X11/include/xorg/xorg-server.h			0444 root bin
 f none X11/include/xorg/xorgVersion.h			0444 root bin
 f none X11/include/xorg/xvdix.h				0444 root bin
--- a/packages/SUNWxorg-mesa/prototype	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxorg-mesa/prototype	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ##########################################################################
 #
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@
 #
 ##########################################################################
 #
-# ident	"@(#)prototype	1.20	08/05/13 SMI"
+# ident	"@(#)prototype	1.21	09/01/15 SMI"
 #
 # Mesa - OpenGL Workalike for Solaris
 
@@ -52,20 +52,16 @@
 s none X11/lib/mesa/libGLU.so=libGLU.so.1 0755 root bin
 f none X11/lib/mesa/libGLw.so.1 0755 root bin
 s none X11/lib/mesa/libGLw.so=libGLw.so.1 0755 root bin
-#f none X11/lib/mesa/libOSMesa.so.4.0 0755 root bin
-#s none X11/lib/mesa/libOSMesa.so=libOSMesa.so.4.0 0755 root bin
 
-!search $HOME/amd64/lib
-d none X11/lib/mesa/amd64 0755 root bin
-s none X11/lib/mesa/64=amd64
-f none X11/lib/mesa/amd64/libGL.so.1 0755 root bin
-s none X11/lib/mesa/amd64/libGL.so=libGL.so.1 0755 root bin
-f none X11/lib/mesa/amd64/libGLU.so.1 0755 root bin
-s none X11/lib/mesa/amd64/libGLU.so=libGLU.so.1 0755 root bin
-f none X11/lib/mesa/amd64/libGLw.so.1 0755 root bin
-s none X11/lib/mesa/amd64/libGLw.so=libGLw.so.1 0755 root bin
-#f none X11/lib/mesa/amd64/libOSMesa.so.4.0 0755 root bin
-#s none X11/lib/mesa/amd64/libOSMesa.so=libOSMesa.so.4.0 0755 root bin
+!search $HOME/lib/$plat_64
+d none X11/lib/mesa/$plat_64 0755 root bin
+s none X11/lib/mesa/64=$plat_64
+f none X11/lib/mesa/$plat_64/libGL.so.1 0755 root bin
+s none X11/lib/mesa/$plat_64/libGL.so=libGL.so.1 0755 root bin
+f none X11/lib/mesa/$plat_64/libGLU.so.1 0755 root bin
+s none X11/lib/mesa/$plat_64/libGLU.so=libGLU.so.1 0755 root bin
+f none X11/lib/mesa/$plat_64/libGLw.so.1 0755 root bin
+s none X11/lib/mesa/$plat_64/libGLw.so=libGLw.so.1 0755 root bin
 
 s none X11/lib/libGL.so=GL/libGL.so 0755 root bin
 s none X11/lib/libGL.so.1=GL/libGL.so.1 0755 root bin
@@ -80,26 +76,23 @@
 s none X11/lib/GL/libGLU.so.1=../mesa/libGLU.so.1 0755 root bin
 s none X11/lib/GL/libGLw.so=../mesa/libGLw.so 0755 root bin
 s none X11/lib/GL/libGLw.so.1=../mesa/libGLw.so.1 0755 root bin
-#s none X11/lib/GL/libOSMesa.so.4.0=../mesa/libOSMesa.so.4.0 0755 root bin
-#s none X11/lib/GL/libOSMesa.so=libOSMesa.so.4.0 0755 root bin
 
-d none X11/lib/amd64 0755 root bin
-s none X11/lib/64=amd64
-s none X11/lib/amd64/libGL.so=../GL/amd64/libGL.so 0755 root bin
-s none X11/lib/amd64/libGL.so.1=../GL/amd64/libGL.so.1 0755 root bin
-s none X11/lib/amd64/libGLU.so=../GL/amd64/libGLU.so 0755 root bin
-s none X11/lib/amd64/libGLU.so.1=../GL/amd64/libGLU.so.1 0755 root bin
-s none X11/lib/amd64/libGLw.so=../GL/amd64/libGLw.so 0755 root bin
-s none X11/lib/amd64/libGLw.so.1=../GL/amd64/libGLw.so.1 0755 root bin
-d none X11/lib/GL/amd64 0755 root bin
-s none X11/lib/GL/amd64/libGL.so=libGL.so.1 0755 root bin
-s none X11/lib/GL/amd64/libGL.so.1=../../../../../var/run/opengl/lib/amd64/libGL.so.1 0755 root bin
-s none X11/lib/GL/amd64/libGLU.so=../../mesa/amd64/libGLU.so 0755 root bin
-s none X11/lib/GL/amd64/libGLU.so.1=../../mesa/amd64/libGLU.so.1 0755 root bin
-s none X11/lib/GL/amd64/libGLw.so=../../mesa/amd64/libGLw.so 0755 root bin
-s none X11/lib/GL/amd64/libGLw.so.1=../../mesa/amd64/libGLw.so.1 0755 root bin
-#s none X11/lib/GL/amd64/libOSMesa.so.4.0=../../mesa/amd64/libOSMesa.so.4.0 0755 root bin
-#s none X11/lib/GL/amd64/libOSMesa.so=libOSMesa.so.4.0 0755 root bin
+d none X11/lib/$plat_64 0755 root bin
+s none X11/lib/64=$plat_64
+s none X11/lib/$plat_64/libGL.so=../GL/64/libGL.so 0755 root bin
+s none X11/lib/$plat_64/libGL.so.1=../GL/64/libGL.so.1 0755 root bin
+s none X11/lib/$plat_64/libGLU.so=../GL/64/libGLU.so 0755 root bin
+s none X11/lib/$plat_64/libGLU.so.1=../GL/64/libGLU.so.1 0755 root bin
+s none X11/lib/$plat_64/libGLw.so=../GL/64/libGLw.so 0755 root bin
+s none X11/lib/$plat_64/libGLw.so.1=../GL/64/libGLw.so.1 0755 root bin
+d none X11/lib/GL/$plat_64 0755 root bin
+s none X11/lib/GL/64=$plat_64
+s none X11/lib/GL/$plat_64/libGL.so=libGL.so.1 0755 root bin
+s none X11/lib/GL/$plat_64/libGL.so.1=../../../../../var/run/opengl/lib/amd64/libGL.so.1 0755 root bin
+s none X11/lib/GL/$plat_64/libGLU.so=../../mesa/64/libGLU.so 0755 root bin
+s none X11/lib/GL/$plat_64/libGLU.so.1=../../mesa/64/libGLU.so.1 0755 root bin
+s none X11/lib/GL/$plat_64/libGLw.so=../../mesa/64/libGLw.so 0755 root bin
+s none X11/lib/GL/$plat_64/libGLw.so.1=../../mesa/64/libGLw.so.1 0755 root bin
 
 
 !search $HOME/include/GL
@@ -155,40 +148,33 @@
 f none X11/lib/modules/dri/r200_dri.so 0755 root bin
 f none X11/lib/modules/dri/r300_dri.so 0755 root bin
 f none X11/lib/modules/dri/radeon_dri.so 0755 root bin
-!search $HOME/lib/X11/xserver
-d none X11/lib/X11 0755 root bin
-d none X11/lib/X11/xserver 0755 root bin
-f none X11/lib/X11/xserver/libdrm.so.2 0755 root bin
+f none X11/lib/modules/dri/swrast_dri.so 0755 root bin
+
 !search $HOME/lib/modules/extensions
 d none X11/lib/modules/extensions 0755 root bin
 f none X11/lib/modules/extensions/libdri.so 0755 root bin
 d none X11/lib/modules/extensions/mesa 0755 root bin
-f none X11/lib/modules/extensions/mesa/libGLcore.so 0755 root bin
 f none X11/lib/modules/extensions/mesa/libglx.so 0755 root bin
 s none X11/lib/modules/extensions/GL=mesa 0755 root bin
-s none X11/lib/modules/extensions/libGLcore.so=GL/libGLcore.so 0755 root bin
 s none X11/lib/modules/extensions/libglx.so=../../../../../var/run/opengl/server/libglx.so 0755 root bin
 
 
 # 64-bit X server-side components
-d none X11/lib/modules/dri/amd64 0755 root bin
-!search $HOME/lib/modules/dri/amd64
-f none X11/lib/modules/dri/amd64/i915_dri.so 0755 root bin
-f none X11/lib/modules/dri/amd64/i965_dri.so 0755 root bin
-f none X11/lib/modules/dri/amd64/r200_dri.so 0755 root bin
-f none X11/lib/modules/dri/amd64/r300_dri.so 0755 root bin
-f none X11/lib/modules/dri/amd64/radeon_dri.so 0755 root bin
-!search $HOME/lib/X11/xserver/amd64
-d none X11/lib/X11/xserver/amd64 0755 root bin
-f none X11/lib/X11/xserver/amd64/libdrm.so.2 0755 root bin
-!search $HOME/lib/modules/amd64/extensions
-d none X11/lib/modules/extensions/amd64 0755 root bin
-f none X11/lib/modules/extensions/amd64/libdri.so 0755 root bin
-d none X11/lib/modules/extensions/mesa/amd64 0755 root bin
-f none X11/lib/modules/extensions/mesa/amd64/libGLcore.so 0755 root bin
-f none X11/lib/modules/extensions/mesa/amd64/libglx.so 0755 root bin
-s none X11/lib/modules/extensions/amd64/libGLcore.so=../GL/amd64/libGLcore.so 0755 root bin
-s none X11/lib/modules/extensions/amd64/libglx.so=../../../../../../var/run/opengl/server/amd64/libglx.so 0755 root bin
+d none X11/lib/modules/dri/$plat_64 0755 root bin
+!search $HOME/lib/modules/dri/$plat_64
+f none X11/lib/modules/dri/$plat_64/i915_dri.so 0755 root bin
+f none X11/lib/modules/dri/$plat_64/i965_dri.so 0755 root bin
+f none X11/lib/modules/dri/$plat_64/r200_dri.so 0755 root bin
+f none X11/lib/modules/dri/$plat_64/r300_dri.so 0755 root bin
+f none X11/lib/modules/dri/$plat_64/radeon_dri.so 0755 root bin
+f none X11/lib/modules/dri/$plat_64/swrast_dri.so 0755 root bin
+
+!search $HOME/lib/modules/$plat_64/extensions
+d none X11/lib/modules/extensions/$plat_64 0755 root bin
+f none X11/lib/modules/extensions/$plat_64/libdri.so 0755 root bin
+d none X11/lib/modules/extensions/mesa/$plat_64 0755 root bin
+f none X11/lib/modules/extensions/mesa/$plat_64/libglx.so 0755 root bin
+s none X11/lib/modules/extensions/$plat_64/libglx.so=../../../../../../var/run/opengl/server/amd64/libglx.so 0755 root bin
 
 # "legacy" SPARC links for GLU/GLw headers and libraries
 
@@ -200,13 +186,13 @@
 s none lib/libGLU.so.1=../X11/lib/libGLU.so.1 0755 root bin
 s none lib/libGLw.so=../X11/lib/libGLw.so 0755 root bin
 s none lib/libGLw.so.1=../X11/lib/libGLw.so.1 0755 root bin
-d none lib/amd64 0755 root bin
-s none lib/amd64/libGL.so=../../X11/lib/amd64/libGL.so 0755 root bin
-s none lib/amd64/libGL.so.1=../../X11/lib/amd64/libGL.so.1 0755 root bin
-s none lib/amd64/libGLU.so=../../X11/lib/amd64/libGLU.so 0755 root bin
-s none lib/amd64/libGLU.so.1=../../X11/lib/amd64/libGLU.so.1 0755 root bin
-s none lib/amd64/libGLw.so=../../X11/lib/amd64/libGLw.so 0755 root bin
-s none lib/amd64/libGLw.so.1=../../X11/lib/amd64/libGLw.so.1 0755 root bin
+d none lib/$plat_64 0755 root bin
+s none lib/$plat_64/libGL.so=../../X11/lib/64/libGL.so 0755 root bin
+s none lib/$plat_64/libGL.so.1=../../X11/lib/64/libGL.so.1 0755 root bin
+s none lib/$plat_64/libGLU.so=../../X11/lib/64/libGLU.so 0755 root bin
+s none lib/$plat_64/libGLU.so.1=../../X11/lib/64/libGLU.so.1 0755 root bin
+s none lib/$plat_64/libGLw.so=../../X11/lib/64/libGLw.so 0755 root bin
+s none lib/$plat_64/libGLw.so.1=../../X11/lib/64/libGLw.so.1 0755 root bin
 
 d none openwin 0755 root bin
 d none openwin/lib 0755 root bin
@@ -216,13 +202,13 @@
 s none openwin/lib/libGLU.so.1=../../X11/lib/libGLU.so.1 0755 root bin
 s none openwin/lib/libGLw.so=../../X11/lib/libGLw.so 0755 root bin
 s none openwin/lib/libGLw.so.1=../../X11/lib/libGLw.so.1 0755 root bin
-d none openwin/lib/amd64 0755 root bin
-s none openwin/lib/amd64/libGL.so=../../../X11/lib/amd64/libGL.so 0755 root bin
-s none openwin/lib/amd64/libGL.so.1=../../../X11/lib/amd64/libGL.so.1 0755 root bin
-s none openwin/lib/amd64/libGLU.so=../../../X11/lib/amd64/libGLU.so 0755 root bin
-s none openwin/lib/amd64/libGLU.so.1=../../../X11/lib/amd64/libGLU.so.1 0755 root bin
-s none openwin/lib/amd64/libGLw.so=../../../X11/lib/amd64/libGLw.so 0755 root bin
-s none openwin/lib/amd64/libGLw.so.1=../../../X11/lib/amd64/libGLw.so.1 0755 root bin
+d none openwin/lib/$plat_64 0755 root bin
+s none openwin/lib/$plat_64/libGL.so=../../../X11/lib/64/libGL.so 0755 root bin
+s none openwin/lib/$plat_64/libGL.so.1=../../../X11/lib/64/libGL.so.1 0755 root bin
+s none openwin/lib/$plat_64/libGLU.so=../../../X11/lib/64/libGLU.so 0755 root bin
+s none openwin/lib/$plat_64/libGLU.so.1=../../../X11/lib/64/libGLU.so.1 0755 root bin
+s none openwin/lib/$plat_64/libGLw.so=../../../X11/lib/64/libGLw.so 0755 root bin
+s none openwin/lib/$plat_64/libGLw.so.1=../../../X11/lib/64/libGLw.so.1 0755 root bin
 
 d none include 0755 root bin
 s none include/GL=../X11/include/GL
@@ -234,10 +220,13 @@
 !search $HOME/../lib/pkgconfig
 d none lib                                      0755 root bin
 d none lib/pkgconfig                            0755 root other
+f none lib/pkgconfig/gl.pc		        0444 root bin
 f none lib/pkgconfig/glproto.pc                 0444 root bin
 
+!search $HOME/../lib/$plat_64/pkgconfig
 d none lib/$plat_64                             0755 root bin
 d none lib/$plat_64/pkgconfig                   0755 root other
+f none lib/$plat_64/pkgconfig/gl.pc		0444 root bin
 s none lib/$plat_64/pkgconfig/glproto.pc=../../pkgconfig/glproto.pc
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/SUNWxorg-server/depend_com	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,46 @@
+##########################################################################
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+##########################################################################
+#
+# ident "@(#)depend_com	1.1	09/01/14 SMI"
+#
+# X.Org Foundation X server for OpenSolaris
+
+P SUNWesu	Extended System Utilities
+P SUNWxwfnt	X Window System Fonts
+P SUNWxwfsw	X Window System platform required font software
+P SUNWlibms	Sun Compilers Bundled shared libm
+P SUNWzlib	The Zip compression library
+P SUNWxorg-xkb	X.org Foundation Xserver keyboard layouts
+P SUNWxorg-clientlibs	X.Org Foundation X Client Libraries
+P SUNWhal	Hardware Abstraction Layer
+P SUNWdbus-libs	Simple IPC library based on messages - client libraries
+P SUNWpciaccess	PCI bus access library and tools
+P SUNWpixman	Pixman library
--- a/packages/SUNWxorg-server/depend_i386	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-##########################################################################
-#
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-##########################################################################
-#
-# ident "@(#)depend_i386 1.12     07/07/20 SMI"
-#
-# X.Org Foundation X server for Solaris
-
-P SUNWcsr	Core Solaris, (Root)
-P SUNWcsu	Core Solaris, (Usr)
-P SUNWcsl	Core Solaris, (Shared Libs)
-P SUNWcslr	Core Solaris Libraries (Root)
-P SUNWesu	Extended System Utilities
-P SUNWxwfnt	X Window System Fonts
-P SUNWxwfsw	X Window System platform required font software
-P SUNWlibms	Sun Compilers Bundled shared libm
-P SUNWzlib	The Zip compression library
-P SUNWxorg-xkb	X.org Foundation Xserver keyboard layouts
-P SUNWxsvc	Xserver pseudo driver
-P SUNWxwplt	X Window System platform software
-P SUNWxorg-clientlibs	X.Org Foundation X Client Libraries
-# Needed since we build with gcc:
-P SUNWgccruntime	GCC Runtime libraries
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/SUNWxorg-server/depend_i386.tmpl	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,46 @@
+##########################################################################
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+##########################################################################
+#
+# ident "@(#)depend_i386.tmpl 1.13	09/01/14 SMI"
+#
+# X.Org Foundation X server for Solaris & OpenSolaris
+
+
+# i386 platform specific dependencies:
+P SUNWxsvc	Xserver pseudo driver
+
+# Needed since we build with gcc:
+P SUNWgccruntime	GCC Runtime libraries
+
+include ../depend
+
+include depend_com
+
--- a/packages/SUNWxorg-server/depend_sparc	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-##########################################################################
-#
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-##########################################################################
-#
-# ident "@(#)depend_sparc 1.5     07/07/18 SMI"
-#
-# X.Org Foundation X server for Solaris
-
-P SUNWcsr	Core Solaris, (Root)
-P SUNWcsu	Core Solaris, (Usr)
-P SUNWcsl	Core Solaris, (Shared Libs)
-P SUNWcslr	Core Solaris Libraries (Root)
-P SUNWesu	Extended System Utilities
-P SUNWxwfnt	X Window System Fonts
-P SUNWxwfsw	X Window System platform required font software
-P SUNWlibms	Sun Compilers Bundled shared libm
-P SUNWzlib	The Zip compression library
-P SUNWxorg-xkb	X.org Foundation Xserver keyboard layouts
-P SUNWxwplt	X Window System platform software
-P SUNWxorg-clientlibs	X.Org Foundation X Client Libraries
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/SUNWxorg-server/depend_sparc.tmpl	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,43 @@
+##########################################################################
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+##########################################################################
+#
+# ident "@(#)depend_sparc.tmpl 1.6	09/01/14 SMI"
+#
+# X.Org Foundation X server for Solaris & OpenSolaris
+
+# SPARC platform specific dependencies:  none
+
+include ../depend
+
+include depend_com
+
+
+
--- a/packages/SUNWxorg-server/prototype_com	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxorg-server/prototype_com	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###########################################################################
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,9 +29,9 @@
 #
 ###########################################################################
 #
-# ident "@(#)prototype_com 1.31     08/10/06 SMI"
+# ident "@(#)prototype_com 1.32     09/01/14 SMI"
 #
-# X.Org Foundation X server for Solaris
+# X.Org Foundation X server for Solaris & OpenSolaris
 
 !HOME=../usr/X11
 
@@ -46,6 +46,9 @@
 f none X11/bin/cvt 0555 root bin
 f none X11/bin/xorgconfig 0555 root bin
 
+!search $HOME/bin
+f none X11/bin/xkbcomp 0755 root bin
+
 d none X11/lib 0755 root bin
 
 !search $HOME/lib/X11 
@@ -55,11 +58,7 @@
 
 !search $HOME/lib/X11/xserver
 d none X11/lib/X11/xserver 0755 root bin
-f none X11/lib/X11/xserver/SecurityPolicy 0444 root bin
-
-!search $HOME/bin
-d none X11/lib/X11/xkb 0755 root bin
-f none X11/lib/X11/xkb/xkbcomp 0755 root bin
+f none X11/lib/X11/xserver/protocol.txt 0444 root bin
 
 !search $HOME/$XSERVERMODDIR
 d none X11/lib/modules 0755 root bin
@@ -68,64 +67,26 @@
 f none X11/lib/modules/libfb.so 0755 root bin
 f none X11/lib/modules/libint10.so 0755 root bin
 f none X11/lib/modules/libmfb.so 0755 root bin
-f none X11/lib/modules/libpcidata.so 0755 root bin
-f none X11/lib/modules/libscanpci.so 0755 root bin
 f none X11/lib/modules/libshadow.so 0755 root bin
 f none X11/lib/modules/libshadowfb.so 0755 root bin
 f none X11/lib/modules/libvbe.so 0755 root bin
 f none X11/lib/modules/libvgahw.so 0755 root bin
+f none X11/lib/modules/libwfb.so 0755 root bin
 f none X11/lib/modules/libxaa.so 0755 root bin
 f none X11/lib/modules/libxf1bpp.so 0755 root bin
 f none X11/lib/modules/libxf4bpp.so 0755 root bin
 f none X11/lib/modules/libxf8_16bpp.so 0755 root bin
 f none X11/lib/modules/libxf8_32bpp.so 0755 root bin
 
-# !search $HOME/$XSERVERMODDIR/codeconv
-# d none X11/lib/modules/codeconv 0755 root bin
-# f none X11/lib/modules/codeconv/libARABIC.so 0755 root bin
-# f none X11/lib/modules/codeconv/libARMSCII8.so 0755 root bin
-# f none X11/lib/modules/codeconv/libBIG5.so 0755 root bin
-# f none X11/lib/modules/codeconv/libBIG5HKSCS.so 0755 root bin
-# f none X11/lib/modules/codeconv/libDOSENCODING.so 0755 root bin
-# f none X11/lib/modules/codeconv/libGB18030.so 0755 root bin
-# f none X11/lib/modules/codeconv/libGB2312.so 0755 root bin
-# f none X11/lib/modules/codeconv/libGBK.so 0755 root bin
-# f none X11/lib/modules/codeconv/libGEORGIAN.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_1.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_10.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_11.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_13.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_14.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_15.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_2.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_3.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_4.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_5.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_6.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_7.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_8.so 0755 root bin
-# f none X11/lib/modules/codeconv/libISO8859_9.so 0755 root bin
-# f none X11/lib/modules/codeconv/libJISX0201.so 0755 root bin
-# f none X11/lib/modules/codeconv/libJISX0208.so 0755 root bin
-# f none X11/lib/modules/codeconv/libJISX0212.so 0755 root bin
-# f none X11/lib/modules/codeconv/libKOI8.so 0755 root bin
-# f none X11/lib/modules/codeconv/libKSC5601.so 0755 root bin
-# f none X11/lib/modules/codeconv/libKSCJOHAB.so 0755 root bin
-# f none X11/lib/modules/codeconv/libMULEENCODING.so 0755 root bin
-# f none X11/lib/modules/codeconv/libTCVN.so 0755 root bin
-# f none X11/lib/modules/codeconv/libVISCII.so 0755 root bin
-
 !search $HOME/$XSERVERMODDIR/drivers
 d none X11/lib/modules/drivers 0755 root bin
 f none X11/lib/modules/drivers/dummy_drv.so 0755 root bin
 
 !search $HOME/$XSERVERMODDIR/extensions
 d none X11/lib/modules/extensions 0755 root bin
-f none X11/lib/modules/extensions/libIA.so 0755 root bin
+f none X11/lib/modules/extensions/libia.so 0755 root bin
 f none X11/lib/modules/extensions/libdbe.so 0755 root bin
 f none X11/lib/modules/extensions/libextmod.so 0755 root bin
-f none X11/lib/modules/extensions/librecord.so 0755 root bin
-f none X11/lib/modules/extensions/libxtrap.so 0755 root bin
 
 !search $HOME/$XSERVERMODDIR/fonts
 d none X11/lib/modules/fonts 0755 root bin
@@ -136,3 +97,47 @@
 f none X11/lib/modules/input/kbd_drv.so 0755 root bin
 f none X11/lib/modules/input/mouse_drv.so 0755 root bin
 f none X11/lib/modules/input/void_drv.so 0755 root bin
+
+d none X11/share 0755 root bin
+
+!search $HOME/share/doc
+d none X11/share/doc 0755 root bin
+f none X11/share/doc/LICENSE 0444 root bin
+f none X11/share/doc/README.DRI 0444 root bin
+f none X11/share/doc/README.XKB-Config 0444 root bin
+f none X11/share/doc/README.XKB-Enhancing 0444 root bin
+f none X11/share/doc/README.fonts 0444 root bin
+f none X11/share/doc/README.mouse 0444 root bin
+f none X11/share/doc/RELNOTES 0444 root bin
+
+d none X11/lib 0755 root bin
+d none X11/lib/X11 0755 root bin
+s none X11/lib/X11/doc=../../share/doc
+d none X11/lib/X11/xkb 0755 root bin
+s none X11/lib/X11/xkb/xkbcomp=../../../bin/xkbcomp
+s none X11/lib/X11/xkb/README.config=../../../share/doc/README.XKB-Config
+s none X11/lib/X11/xkb/README.enhancing=../../../share/doc/README.XKB-Enhancing
+
+d none X11/share/man 0755 root bin
+s none X11/man=share/man
+
+!search $HOME/share/man/man1
+d none X11/share/man/man1 0755 root bin
+f none X11/share/man/man1/Xephyr.1 0444 root bin
+f none X11/share/man/man1/Xorg.1 0444 root bin
+f none X11/share/man/man1/gtf.1 0444 root bin
+f none X11/share/man/man1/xkbcomp.1 0444 root bin
+f none X11/share/man/man1/xorgconfig.1 0444 root bin
+
+!search $HOME/share/man/man4
+d none X11/share/man/man4 0755 root bin
+f none X11/share/man/man4/xorg.conf.4 0444 root bin
+
+!search $HOME/share/man/man7
+d none X11/share/man/man7 0755 root bin
+f none X11/share/man/man7/exa.7 0444 root bin
+f none X11/share/man/man7/kbd.7 0444 root bin
+s none X11/share/man/man7/keyboard.7=kbd.7
+f none X11/share/man/man7/mousedrv.7 0444 root bin
+s none X11/share/man/man7/mouse.7=mousedrv.7
+f none X11/share/man/man7/void.7 0444 root bin
--- a/packages/SUNWxorg-server/prototype_i386	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxorg-server/prototype_i386	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###########################################################################
 #
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@
 #
 ###########################################################################
 #
-# ident "@(#)prototype_i386 1.15     08/10/30 SMI"
+# ident "@(#)prototype_i386 1.16     09/01/15 SMI"
 #
 # X.Org Foundation X server for Solaris
 
@@ -51,7 +51,6 @@
 f none X11/bin/i386/Xorg 4555 root bin
 f none X11/bin/i386/Xephyr 0555 root bin
 f none X11/bin/i386/Xvfb 0555 root bin
-f none X11/bin/pcitweak 0555 root bin
 
 !search $HOME/bin/amd64
 d none X11/bin/amd64 0755 root bin
@@ -59,6 +58,15 @@
 f none X11/bin/amd64/Xephyr 0555 root bin
 f none X11/bin/amd64/Xvfb 0555 root bin
 
+!search $HOME/lib/X11/xserver
+d none X11/lib/X11 0755 root bin
+d none X11/lib/X11/xserver 0755 root bin
+f none X11/lib/X11/xserver/libdrm.so.2 0755 root bin
+
+!search $HOME/lib/X11/xserver/$plat_64
+d none X11/lib/X11/xserver/$plat_64 0755 root bin
+f none X11/lib/X11/xserver/$plat_64/libdrm.so.2 0755 root bin
+
 !search $HOME/lib/modules/amd64
 d none X11/lib/modules/amd64 0755 root bin
 f none X11/lib/modules/amd64/libafb.so 0755 root bin
@@ -66,11 +74,11 @@
 f none X11/lib/modules/amd64/libfb.so 0755 root bin
 f none X11/lib/modules/amd64/libint10.so 0755 root bin
 f none X11/lib/modules/amd64/libmfb.so 0755 root bin
-f none X11/lib/modules/amd64/libpcidata.so 0755 root bin
 f none X11/lib/modules/amd64/libshadow.so 0755 root bin
 f none X11/lib/modules/amd64/libshadowfb.so 0755 root bin
 f none X11/lib/modules/amd64/libvbe.so 0755 root bin
 f none X11/lib/modules/amd64/libvgahw.so 0755 root bin
+f none X11/lib/modules/amd64/libwfb.so 0755 root bin
 f none X11/lib/modules/amd64/libxaa.so 0755 root bin
 f none X11/lib/modules/amd64/libxf1bpp.so 0755 root bin
 f none X11/lib/modules/amd64/libxf4bpp.so 0755 root bin
@@ -83,11 +91,9 @@
 
 !search $HOME/lib/modules/amd64/extensions
 d none X11/lib/modules/extensions/amd64 0755 root bin
-f none X11/lib/modules/extensions/amd64/libIA.so 0755 root bin
+f none X11/lib/modules/extensions/amd64/libia.so 0755 root bin
 f none X11/lib/modules/extensions/amd64/libdbe.so 0755 root bin
 f none X11/lib/modules/extensions/amd64/libextmod.so 0755 root bin
-f none X11/lib/modules/extensions/amd64/librecord.so 0755 root bin
-f none X11/lib/modules/extensions/amd64/libxtrap.so 0755 root bin
 
 !search $HOME/lib/modules/amd64/fonts
 d none X11/lib/modules/fonts/amd64 0755 root bin
@@ -105,7 +111,6 @@
 f none X11/lib/modules/input/fpit_drv.so 0755 root bin
 f none X11/lib/modules/input/hyperpen_drv.so 0755 root bin
 f none X11/lib/modules/input/js_x_drv.so 0755 root bin
-f none X11/lib/modules/input/keyboard_drv.so 0755 root bin
 f none X11/lib/modules/input/magellan_drv.so 0755 root bin
 f none X11/lib/modules/input/microtouch_drv.so 0755 root bin
 f none X11/lib/modules/input/mutouch_drv.so 0755 root bin
@@ -131,7 +136,6 @@
 f none X11/lib/modules/input/amd64/hyperpen_drv.so 0755 root bin
 f none X11/lib/modules/input/amd64/js_x_drv.so 0755 root bin
 f none X11/lib/modules/input/amd64/kbd_drv.so 0755 root bin
-f none X11/lib/modules/input/amd64/keyboard_drv.so 0755 root bin
 f none X11/lib/modules/input/amd64/magellan_drv.so 0755 root bin
 f none X11/lib/modules/input/amd64/microtouch_drv.so 0755 root bin
 f none X11/lib/modules/input/amd64/mouse_drv.so 0755 root bin
@@ -144,3 +148,28 @@
 f none X11/lib/modules/input/amd64/void_drv.so 0755 root bin
 f none X11/lib/modules/input/amd64/vmmouse_drv.so 0755 root bin
 #f none X11/lib/modules/input/amd64/wacom_drv.so 0755 root bin
+
+!search $HOME/share/man/man7
+f none X11/share/man/man7/acecad.7 0444 root bin
+f none X11/share/man/man7/calcomp.7 0444 root bin
+f none X11/share/man/man7/citron.7 0444 root bin
+f none X11/share/man/man7/dmc.7 0444 root bin
+f none X11/share/man/man7/dynapro.7 0444 root bin
+f none X11/share/man/man7/elographics.7 0444 root bin
+f none X11/share/man/man7/fpit.7 0444 root bin
+f none X11/share/man/man7/js_x.7 0444 root bin
+f none X11/share/man/man7/microtouch.7 0444 root bin
+f none X11/share/man/man7/mutouch.7 0444 root bin
+f none X11/share/man/man7/palmax.7 0444 root bin
+f none X11/share/man/man7/penmount.7 0444 root bin
+f none X11/share/man/man7/tek4957.7 0444 root bin
+f none X11/share/man/man7/vmmouse.7 0444 root bin
+
+# HAL probe support for vmmouse driver
+!search ../usr/lib/hal
+d none lib 					0755 root bin
+d none lib/hal 					0755 root bin
+f none lib/hal/hal-probe-vmmouse 		0555 root bin
+
+!search $HOME/lib/X11/xserver
+f none X11/lib/X11/xserver/vmmouse_detect	0555 root bin
--- a/packages/SUNWxorg-tsol-module/depend	Sat Jan 10 10:35:32 2009 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-#
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-# 
-# ident "@(#)depend	1.4	07/01/31 SMI"
-#
-# Xorg Trusted Extensions
-#
-
-P SUNWcsr	Core Solaris, (Root)
-P SUNWcsu	Core Solaris, (Usr)
-P SUNWcsl	Core Solaris, (Shared Libs)
-P SUNWxorg-server X.Org Foundation Xserver
-P SUNWxwts	Trusted Extensions, X Windows
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/SUNWxorg-tsol-module/depend.tmpl	Thu Jan 15 12:55:00 2009 -0800
@@ -0,0 +1,36 @@
+#
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+# 
+# ident "@(#)depend.tmpl	1.5	09/01/14 SMI"
+#
+# Xorg Trusted Extensions
+#
+
+P SUNWxorg-server X.Org Foundation Xserver
+
+include ../depend
--- a/packages/SUNWxwinc/prototype	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxwinc/prototype	Thu Jan 15 12:55:00 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@
 # of the copyright holder.
 # 
 #
-# ident	"@(#)prototype	35.91	08/12/19 SMI"
+# ident	"@(#)prototype	35.92	09/01/14 SMI"
 #
 #  X Window System include files
 
@@ -351,7 +351,6 @@
 s none openwin/share/include/X11/extensions/XShm.h=../../../../../X11/include/X11/extensions/XShm.h
 s none openwin/share/include/X11/extensions/XTest.h=../../../../../X11/include/X11/extensions/XTest.h
 s none openwin/share/include/X11/extensions/Xag.h=../../../../../X11/include/X11/extensions/Xag.h
-s none openwin/share/include/X11/extensions/Xagsrv.h=../../../../../X11/include/X11/extensions/Xagsrv.h
 s none openwin/share/include/X11/extensions/Xagstr.h=../../../../../X11/include/X11/extensions/Xagstr.h
 s none openwin/share/include/X11/extensions/Xcup.h=../../../../../X11/include/X11/extensions/Xcup.h
 s none openwin/share/include/X11/extensions/Xcupstr.h=../../../../../X11/include/X11/extensions/Xcupstr.h
@@ -415,7 +414,6 @@
 f none X11/include/X11/extensions/XShm.h 	0444 root bin
 f none X11/include/X11/extensions/XTest.h 	0444 root bin
 f none X11/include/X11/extensions/Xag.h 	0444 root bin
-f none X11/include/X11/extensions/Xagsrv.h 	0444 root bin
 f none X11/include/X11/extensions/Xagstr.h 	0444 root bin
 f none X11/include/X11/extensions/Xcup.h 	0444 root bin
 f none X11/include/X11/extensions/Xcupstr.h 	0444 root bin
@@ -789,5 +787,6 @@
 
 !search $HOME/X11/share/aclocal
 # Autoconf macro files
-d none share/aclocal					0755 root other 
+d none share						0755 root sys
+d none share/aclocal					0755 root other
 f none share/aclocal/xorg-macros.m4			0444 root bin
--- a/packages/SUNWxwplr/prototype_com	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxwplr/prototype_com	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -25,7 +25,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# ident	"@(#)prototype_com	1.9	08/10/24 SMI"
+# ident	"@(#)prototype_com	1.10	09/01/14 SMI"
 #
 # This required package information file contains a list of package contents.
 # The 'pkgmk' command uses this file to identify the contents of a package
@@ -75,3 +75,11 @@
 # Font catalogue directory
 d none etc/X11 0755 root sys
 d none etc/X11/fontpath.d 0755 root sys
+
+# HAL configuration for Xorg 1.5+ input devices
+d none etc/hal 0755 root bin
+d none etc/hal/fdi 0755 root bin
+d none etc/hal/fdi/preprobe 0755 root bin
+d none etc/hal/fdi/preprobe/10osvendor 0755 root bin
+!search ../usr/X11/share/hal/fdi/policy/10osvendor
+f none etc/hal/fdi/preprobe/10osvendor/10-x11-input.fdi 0444 root bin
--- a/packages/SUNWxwplr/prototype_i386	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/SUNWxwplr/prototype_i386	Thu Jan 15 12:55:00 2009 -0800
@@ -1,4 +1,4 @@
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -25,7 +25,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# ident	"@(#)prototype_i386	1.4	08/10/24 SMI"
+# ident	"@(#)prototype_i386	1.5	09/01/14 SMI"
 #
 #
 # Include ISA independent files (prototype_com)
@@ -43,3 +43,8 @@
 !search ../var/svc/manifest/application/opengl
 d none var/svc/manifest/application/opengl 755 root sys
 f manifest var/svc/manifest/application/opengl/ogl-select.xml 0444 root sys
+
+!search ../etc/hal/fdi/policy/10osvendor
+d none etc/hal/fdi/policy 0755 root bin
+d none etc/hal/fdi/policy/10osvendor 0755 root bin
+f none etc/hal/fdi/policy/10osvendor/11-x11-vmmouse.fdi 0444 root bin
--- a/packages/copyright	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/copyright	Thu Jan 15 12:55:00 2009 -0800
@@ -1,2 +1,2 @@
-Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 Use is subject to license terms.
--- a/packages/depend	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/depend	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 ###########################################################################
 #
-# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@
 #
 ###########################################################################
 #
-# ident	"@(#)depend	35.4	07/11/05 SMI"
+# ident	"@(#)depend	35.5	09/01/15 SMI"
 #
 # This package information file defines software dependencies associated
 # with the pkg.  You can define three types of pkg dependencies with this file:
@@ -57,4 +57,5 @@
 P SUNWcsu	Core Solaris, (Usr)
 P SUNWcsd	Core Solaris Devices
 P SUNWcsl	Core Solaris Libraries
+P SUNWcslr	Core Solaris Libraries (Root)
 P SUNWxwplt	X Window System platform software
--- a/packages/upgrade-X	Sat Jan 10 10:35:32 2009 -0800
+++ b/packages/upgrade-X	Thu Jan 15 12:55:00 2009 -0800
@@ -2,9 +2,9 @@
 
 ###
 #
-# @(#)upgrade-X	1.44 08/10/30
+# @(#)upgrade-X	1.45 09/01/14
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the
@@ -178,7 +178,6 @@
 	SUNWxorg-clientlibs
 	SUNWxorg-compatlinks
 	SUNWxorg-devel-docs
-	SUNWxorg-doc
 	SUNWxorg-graphics-ddx
 	SUNWxorg-headers
 	SUNWxorg-server
@@ -262,6 +261,10 @@
 # snv_98: 6741034 Merge SUNWi1of into SUNWxwfnt
 REM_PKGS+=" SUNWi1of"
 
+# snv_107: 
+# Merged SUNWxorg-doc into SUNWxorg-server & SUNWxorg-graphics-ddx
+REM_PKGS+=" SUNWxorg-doc"
+
 # Various compatibility links in SUNWxorg-server have been replaced with
 # files in other packages, so we need to remove SUNWxorg-server first
 # (for example: 6658871 changed /usr/X11/lib/X11/fonts/Type1 from a link