[kernel] r5174 - in people/waldi/linux-2.6: . debian debian/arch debian/arch/alpha debian/arch/amd64 debian/arch/arm debian/arch/hppa debian/arch/i386 debian/arch/ia64 debian/arch/m68k debian/arch/powerpc debian/arch/s390 debian/arch/sparc debian/bin debian/patches-arch debian/patches-debian debian/patches-debian/series debian/templates

Bastian Blank waldi at costa.debian.org
Mon Jan 2 19:33:12 UTC 2006


Author: waldi
Date: Mon Jan  2 19:32:22 2006
New Revision: 5174

Added:
   people/waldi/linux-2.6/debian/arch/hppa/config.parisc
   people/waldi/linux-2.6/debian/arch/hppa/config.parisc-smp
   people/waldi/linux-2.6/debian/arch/hppa/config.parisc64
   people/waldi/linux-2.6/debian/arch/hppa/config.parisc64-smp
   people/waldi/linux-2.6/debian/arch/i386/config.486
   people/waldi/linux-2.6/debian/bin/kconfig.ml   (contents, props changed)
   people/waldi/linux-2.6/debian/patches-debian/powerpc-mv643xx-spinlock-fix-support.patch
   people/waldi/linux-2.6/debian/patches-debian/powerpc-prep-utah-ide-interrupt.patch
   people/waldi/linux-2.6/debian/patches-debian/series/2.6.14+2.6.15-rc7-0experimental.1
   people/waldi/linux-2.6/debian/patches-debian/series/2.6.14+2.6.15-rc7-0experimental.2
   people/waldi/linux-2.6/debian/patches-debian/sparc64-atyfb-xl-gr-final.patch
Removed:
   people/waldi/linux-2.6/debian/arch/hppa/config.32
   people/waldi/linux-2.6/debian/arch/hppa/config.32-smp
   people/waldi/linux-2.6/debian/arch/hppa/config.64
   people/waldi/linux-2.6/debian/arch/hppa/config.64-smp
   people/waldi/linux-2.6/debian/arch/i386/config.386
   people/waldi/linux-2.6/debian/patches-debian/modular-ide.patch
   people/waldi/linux-2.6/debian/patches-debian/powerpc64-audit_sysctl-build.patch
   people/waldi/linux-2.6/debian/patches-debian/series/2.6.14+2.6.15-rc4-0experimental.1
   people/waldi/linux-2.6/debian/patches-debian/sparc64-atyfb-xl-gr.patch
Modified:
   people/waldi/linux-2.6/   (props changed)
   people/waldi/linux-2.6/debian/README.build
   people/waldi/linux-2.6/debian/arch/alpha/config
   people/waldi/linux-2.6/debian/arch/alpha/defines
   people/waldi/linux-2.6/debian/arch/amd64/config
   people/waldi/linux-2.6/debian/arch/arm/config
   people/waldi/linux-2.6/debian/arch/arm/config.footbridge
   people/waldi/linux-2.6/debian/arch/arm/config.ixp4xx
   people/waldi/linux-2.6/debian/arch/arm/config.rpc
   people/waldi/linux-2.6/debian/arch/arm/config.s3c2410
   people/waldi/linux-2.6/debian/arch/arm/defines
   people/waldi/linux-2.6/debian/arch/config
   people/waldi/linux-2.6/debian/arch/hppa/config
   people/waldi/linux-2.6/debian/arch/hppa/defines
   people/waldi/linux-2.6/debian/arch/i386/config
   people/waldi/linux-2.6/debian/arch/i386/config.686
   people/waldi/linux-2.6/debian/arch/i386/config.686-smp
   people/waldi/linux-2.6/debian/arch/i386/config.k7
   people/waldi/linux-2.6/debian/arch/i386/config.k7-smp
   people/waldi/linux-2.6/debian/arch/i386/defines
   people/waldi/linux-2.6/debian/arch/ia64/config
   people/waldi/linux-2.6/debian/arch/m68k/config.amiga
   people/waldi/linux-2.6/debian/arch/m68k/config.atari
   people/waldi/linux-2.6/debian/arch/m68k/config.mac
   people/waldi/linux-2.6/debian/arch/m68k/config.q40
   people/waldi/linux-2.6/debian/arch/powerpc/config
   people/waldi/linux-2.6/debian/arch/powerpc/config.apus
   people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc
   people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc-miboot
   people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc-smp
   people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc64
   people/waldi/linux-2.6/debian/arch/powerpc/defines
   people/waldi/linux-2.6/debian/arch/s390/config
   people/waldi/linux-2.6/debian/arch/s390/config.s390
   people/waldi/linux-2.6/debian/arch/s390/config.s390-tape
   people/waldi/linux-2.6/debian/arch/s390/config.s390x
   people/waldi/linux-2.6/debian/arch/sparc/config
   people/waldi/linux-2.6/debian/arch/sparc/config.sparc64
   people/waldi/linux-2.6/debian/arch/sparc/config.sparc64-smp
   people/waldi/linux-2.6/debian/bin/gencontrol.py
   people/waldi/linux-2.6/debian/changelog
   people/waldi/linux-2.6/debian/patches-arch/hppa.diff
   people/waldi/linux-2.6/debian/patches-debian/drivers-scsi-megaraid_splitup.patch
   people/waldi/linux-2.6/debian/patches-debian/powerpc-apus.patch
   people/waldi/linux-2.6/debian/patches-debian/powerpc-build-links.patch
   people/waldi/linux-2.6/debian/patches-debian/powerpc-mv643xx-hotplug-support.patch
   people/waldi/linux-2.6/debian/rules.real
   people/waldi/linux-2.6/debian/templates/control.extra.in
   people/waldi/linux-2.6/debian/templates/control.source.in
Log:
Merge /dists/trunk/linux-2.6.


Modified: people/waldi/linux-2.6/debian/README.build
==============================================================================
--- people/waldi/linux-2.6/debian/README.build	(original)
+++ people/waldi/linux-2.6/debian/README.build	Mon Jan  2 19:32:22 2006
@@ -15,4 +15,9 @@
 options globally (across *all* architectures), for the particular arch
 that you're working on, for the particular sub-arch you're working on,
 or just for that particular flavour.
-
+6) split-config sometimes create duplicates that are treated wrongly.
+Run trunk/scripts/split-config <arch dir> <flavour> if you made changes
+to your local subarch only.
+Run trunk/scripts/split-config -f <arch dir> <flavour> if you made
+changes either globally generally for your arch (and make sure you agree
+with others if doing so and comitting your changes to SVN).

Modified: people/waldi/linux-2.6/debian/arch/alpha/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/alpha/config	(original)
+++ people/waldi/linux-2.6/debian/arch/alpha/config	Mon Jan  2 19:32:22 2006
@@ -208,9 +208,7 @@
 CONFIG_BLK_DEV_IDECD=m
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-CONFIG_IDE_TASK_IOCTL=y
 CONFIG_IDE_GENERIC=m
-# CONFIG_BLK_DEV_IDEPNP is not set
 CONFIG_BLK_DEV_IDEPCI=y
 CONFIG_IDEPCI_SHARE_IRQ=y
 # CONFIG_BLK_DEV_OFFBOARD is not set
@@ -1132,8 +1130,6 @@
 CONFIG_VIDEO_ZORAN_DC30=m
 CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_DVB=m
 CONFIG_VIDEO_MXB=m
 CONFIG_VIDEO_DPC=m
 CONFIG_VIDEO_HEXIUM_ORION=m
@@ -1446,7 +1442,7 @@
 CONFIG_USB=m
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_DEVICEFS=y
-CONFIG_USB_BANDWIDTH=y
+# CONFIG_USB_BANDWIDTH is not set
 # CONFIG_USB_DYNAMIC_MINORS is not set
 # CONFIG_USB_OTG is not set
 CONFIG_USB_EHCI_HCD=m
@@ -1694,3 +1690,4 @@
 # CONFIG_MTD_OTP is not set
 # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
 CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y

Modified: people/waldi/linux-2.6/debian/arch/alpha/defines
==============================================================================
--- people/waldi/linux-2.6/debian/arch/alpha/defines	(original)
+++ people/waldi/linux-2.6/debian/arch/alpha/defines	Mon Jan  2 19:32:22 2006
@@ -1,7 +1,6 @@
 [base]
 flavours: alpha-generic alpha-smp
 suggests: aboot, fdutils
-conflicts: initramfs-tools
 
 kernel-arch: alpha
 kernel-header-dirs: alpha

Modified: people/waldi/linux-2.6/debian/arch/amd64/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/amd64/config	(original)
+++ people/waldi/linux-2.6/debian/arch/amd64/config	Mon Jan  2 19:32:22 2006
@@ -255,7 +255,6 @@
 CONFIG_BLK_DEV_IDECD=m
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_GENERIC=m
 CONFIG_BLK_DEV_CMD640=y
 # CONFIG_BLK_DEV_CMD640_ENHANCED is not set
@@ -383,92 +382,6 @@
 CONFIG_INET_ESP=m
 CONFIG_IP_TCPDIAG=m
 CONFIG_IP_TCPDIAG_IPV6=y
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_BRIDGE_NETFILTER=y
-CONFIG_IP_NF_CT_ACCT=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_PHYSDEV=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_REALM=m
-CONFIG_IP_NF_MATCH_SCTP=m
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_CONNMARK=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_CLASSIFY=m
-CONFIG_IP_NF_TARGET_CONNMARK=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_TARGET_NOTRACK=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AHESP=m
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_PHYSDEV=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_DECNET_NF_GRABULATOR=m
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
 CONFIG_IP_SCTP=m
 # CONFIG_SCTP_DBG_MSG is not set
 # CONFIG_SCTP_DBG_OBJCNT is not set
@@ -1115,8 +1028,6 @@
 CONFIG_VIDEO_ZORAN_DC30=m
 CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_DVB=m
 CONFIG_VIDEO_MXB=m
 CONFIG_VIDEO_DPC=m
 CONFIG_VIDEO_HEXIUM_ORION=m
@@ -1377,7 +1288,7 @@
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_DEVICEFS=y
-CONFIG_USB_BANDWIDTH=y
+# CONFIG_USB_BANDWIDTH is not set
 # CONFIG_USB_DYNAMIC_MINORS is not set
 # CONFIG_USB_OTG is not set
 CONFIG_USB_EHCI_HCD=m
@@ -1650,3 +1561,4 @@
 CONFIG_USB_SUSPEND=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_PM_LEGACY=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y

Modified: people/waldi/linux-2.6/debian/arch/arm/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/arm/config	(original)
+++ people/waldi/linux-2.6/debian/arch/arm/config	Mon Jan  2 19:32:22 2006
@@ -15,3 +15,4 @@
 CONFIG_ECONET_NATIVE=y
 CONFIG_EQUALIZER=m
 CONFIG_NET_CLS_ROUTE=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y

Modified: people/waldi/linux-2.6/debian/arch/arm/config.footbridge
==============================================================================
--- people/waldi/linux-2.6/debian/arch/arm/config.footbridge	(original)
+++ people/waldi/linux-2.6/debian/arch/arm/config.footbridge	Mon Jan  2 19:32:22 2006
@@ -35,7 +35,6 @@
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SHMEM=y
 CONFIG_CC_ALIGN_FUNCTIONS=0
 CONFIG_CC_ALIGN_LABELS=0
@@ -426,13 +425,11 @@
 # CONFIG_BLK_DEV_IDETAPE is not set
 # CONFIG_BLK_DEV_IDEFLOPPY is not set
 # CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
 
 #
 # IDE chipset support/bugfixes
 #
 CONFIG_IDE_GENERIC=y
-CONFIG_BLK_DEV_IDEPNP=m
 # CONFIG_BLK_DEV_IDEPCI is not set
 # CONFIG_IDE_ARM is not set
 # CONFIG_IDE_CHIPSETS is not set
@@ -808,7 +805,9 @@
 #
 # Serial drivers
 #
-# CONFIG_SERIAL_8250 is not set
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=16
 
 #
 # Non-8250 serial port support
@@ -1010,7 +1009,6 @@
 # CONFIG_VIDEO_SAA5249 is not set
 # CONFIG_TUNER_3036 is not set
 # CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_SAA7134 is not set
 # CONFIG_VIDEO_MXB is not set
 # CONFIG_VIDEO_DPC is not set
 # CONFIG_VIDEO_HEXIUM_ORION is not set
@@ -1240,9 +1238,13 @@
 # File systems
 #
 CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
 # CONFIG_JBD is not set
 CONFIG_REISERFS_FS=m
 # CONFIG_REISERFS_CHECK is not set
@@ -1495,7 +1497,7 @@
 CONFIG_MTD_CFI_I2=y
 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
 # CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_SL82C105=m
+CONFIG_BLK_DEV_SL82C105=y
 # CONFIG_SUNDANCE_MMIO is not set
 # CONFIG_MTD_CFI_I4 is not set
 # CONFIG_USB_HIDDEV is not set

Modified: people/waldi/linux-2.6/debian/arch/arm/config.ixp4xx
==============================================================================
--- people/waldi/linux-2.6/debian/arch/arm/config.ixp4xx	(original)
+++ people/waldi/linux-2.6/debian/arch/arm/config.ixp4xx	Mon Jan  2 19:32:22 2006
@@ -35,7 +35,6 @@
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SHMEM=y
 CONFIG_CC_ALIGN_FUNCTIONS=0
 CONFIG_CC_ALIGN_LABELS=0
@@ -593,7 +592,6 @@
 # CONFIG_BLK_DEV_IDETAPE is not set
 # CONFIG_BLK_DEV_IDEFLOPPY is not set
 # CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
 
 #
 # IDE chipset support/bugfixes

Modified: people/waldi/linux-2.6/debian/arch/arm/config.rpc
==============================================================================
--- people/waldi/linux-2.6/debian/arch/arm/config.rpc	(original)
+++ people/waldi/linux-2.6/debian/arch/arm/config.rpc	Mon Jan  2 19:32:22 2006
@@ -37,7 +37,6 @@
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SHMEM=y
 CONFIG_CC_ALIGN_FUNCTIONS=0
 CONFIG_CC_ALIGN_LABELS=0
@@ -333,7 +332,6 @@
 # CONFIG_BLK_DEV_IDETAPE is not set
 # CONFIG_BLK_DEV_IDEFLOPPY is not set
 # CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
 
 #
 # IDE chipset support/bugfixes

Modified: people/waldi/linux-2.6/debian/arch/arm/config.s3c2410
==============================================================================
--- people/waldi/linux-2.6/debian/arch/arm/config.s3c2410	(original)
+++ people/waldi/linux-2.6/debian/arch/arm/config.s3c2410	Mon Jan  2 19:32:22 2006
@@ -36,7 +36,6 @@
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SHMEM=y
 CONFIG_CC_ALIGN_FUNCTIONS=0
 CONFIG_CC_ALIGN_LABELS=0
@@ -440,7 +439,6 @@
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
 # CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
 
 #
 # IDE chipset support/bugfixes

Modified: people/waldi/linux-2.6/debian/arch/arm/defines
==============================================================================
--- people/waldi/linux-2.6/debian/arch/arm/defines	(original)
+++ people/waldi/linux-2.6/debian/arch/arm/defines	Mon Jan  2 19:32:22 2006
@@ -1,5 +1,4 @@
 [base]
-compiler: gcc-4.0
 flavours:
  footbridge
  ixp4xx
@@ -8,3 +7,20 @@
 kernel-arch: arm
 kernel-header-dirs: arm
 suggests: fdutils
+
+[footbridge]
+class: Footbridge based
+longclass: Footbridge (CATS, Netwinder)
+
+[ixp4xx]
+class: IXP4xx
+longclass: IXP4xx based
+
+[rpc]
+class: RiscPC
+longclass: Arcon RiscPC
+
+[s3c2410]
+class: Samsung S3C2410
+longclass: Samsung S3C2410 based (BAST, IPAQ 1940, etc)
+

Modified: people/waldi/linux-2.6/debian/arch/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/config	(original)
+++ people/waldi/linux-2.6/debian/arch/config	Mon Jan  2 19:32:22 2006
@@ -110,13 +110,11 @@
 CONFIG_TCG_NSC=m
 # CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
 CONFIG_6PACK=m
-CONFIG_TCP_CONG_SCALABLE=m
 CONFIG_DVB_USB_DTT200U=m
 CONFIG_DVB_USB_DIGITV=m
 CONFIG_SERIAL_8250_ACCENT=m
 CONFIG_FB_ARC=m
 CONFIG_FUSION_SPI=m
-# CONFIG_IP_FIB_TRIE is not set
 CONFIG_DVB_USB_CXUSB=m
 CONFIG_FUSION_FC=m
 CONFIG_USB_ACECAD=m
@@ -125,22 +123,18 @@
 CONFIG_USB_CXACRU=m
 CONFIG_DVB_USB_A800=m
 CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TCP_CONG_HTCP=m
 CONFIG_BLK_DEV_IT821X=m
 CONFIG_TEXTSEARCH=y
 CONFIG_DRM_VIA=m
 CONFIG_USB_KEYSPAN_REMOTE=m
 CONFIG_DVB_S5H1420=m
 CONFIG_SND_HDSPM=m
-CONFIG_TCP_CONG_HSTCP=m
 CONFIG_SENSORS_PCA9539=m
 # CONFIG_HWMON_DEBUG_CHIP is not set
 CONFIG_SKGE=m
 CONFIG_USB_GADGET_SELECTED=y
-CONFIG_TCP_CONG_VEGAS=m
 CONFIG_INFINIBAND_USER_VERBS=m
 CONFIG_USB_ITMTOUCH=m
-CONFIG_TCP_CONG_WESTWOOD=m
 CONFIG_USB_ISP116X_HCD=m
 CONFIG_DVB_LGDT330X=m
 CONFIG_SERIAL_8250_HUB6=m
@@ -156,12 +150,9 @@
 CONFIG_DVB_BCM3510=m
 CONFIG_SENSORS_MAX6875=m
 CONFIG_MTD_PLATRAM=m
-CONFIG_IP_FIB_HASH=y
 CONFIG_SENSORS_ADM9240=m
-CONFIG_TCP_CONG_HYBLA=m
 CONFIG_SENSORS_DS1374=m
 CONFIG_USB_XUSBATM=m
-CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_PCMCIA_LOAD_CIS=y
 CONFIG_DVB_USB=m
 CONFIG_USB_LD=m
@@ -739,3 +730,8 @@
 # CONFIG_USB_MIDI is not set
 CONFIG_OBSOLETE_OSS_USB_DRIVER=y
 CONFIG_ATM_DUMMY=m
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_VIDEO_SAA7134_OSS=m
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134=m

Modified: people/waldi/linux-2.6/debian/arch/hppa/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/hppa/config	(original)
+++ people/waldi/linux-2.6/debian/arch/hppa/config	Mon Jan  2 19:32:22 2006
@@ -125,7 +125,6 @@
 CONFIG_BLK_DEV_IDECD=m
 # CONFIG_BLK_DEV_IDETAPE is not set
 # CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_GENERIC=m
 CONFIG_BLK_DEV_IDEPCI=y
 CONFIG_IDEPCI_SHARE_IRQ=y
@@ -961,3 +960,13 @@
 # CONFIG_HZ_100 is not set
 CONFIG_HZ_250=y
 # CONFIG_HZ_1000 is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_HZ=250
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_MEGARAID_MM=m
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_MEGARAID_MAILBOX=m
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+CONFIG_SPLIT_PTLOCK_CPUS=4096

Added: people/waldi/linux-2.6/debian/arch/hppa/config.parisc
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/arch/hppa/config.parisc	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,14 @@
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_PA7000=y
+# CONFIG_PA8X00 is not set
+CONFIG_PA11=y
+# CONFIG_SMP is not set
+# CONFIG_HPUX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_NSP32 is not set
+CONFIG_PCMCIA_AHA152X=m
+CONFIG_PCMCIA_NINJA_SCSI=m
+# CONFIG_NI5010 is not set
+# CONFIG_PCMCIA_XIRTULIP is not set
+CONFIG_TLAN=m
+# CONFIG_ARLAN is not set

Added: people/waldi/linux-2.6/debian/arch/hppa/config.parisc-smp
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/arch/hppa/config.parisc-smp	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,17 @@
+CONFIG_LOCK_KERNEL=y
+# CONFIG_CPUSETS is not set
+CONFIG_STOP_MACHINE=y
+CONFIG_PA7000=y
+# CONFIG_PA8X00 is not set
+CONFIG_PA11=y
+CONFIG_SMP=y
+CONFIG_HOTPLUG_CPU=y
+# CONFIG_HPUX is not set
+CONFIG_NR_CPUS=32
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_NSP32 is not set
+CONFIG_PCMCIA_AHA152X=m
+CONFIG_PCMCIA_NINJA_SCSI=m
+CONFIG_TLAN=m
+# CONFIG_ARLAN is not set
+# CONFIG_DEBUG_RWLOCK is not set

Added: people/waldi/linux-2.6/debian/arch/hppa/config.parisc64
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/arch/hppa/config.parisc64	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,13 @@
+CONFIG_BROKEN_ON_SMP=y
+# CONFIG_PA7000 is not set
+CONFIG_PA8X00=y
+CONFIG_PA20=y
+CONFIG_PREFETCH=y
+CONFIG_64BIT=y
+# CONFIG_SMP is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_COMPAT=y
+# CONFIG_NI5010 is not set
+# CONFIG_PCMCIA_XIRTULIP is not set
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_FLATMEM_MANUAL is not set

Added: people/waldi/linux-2.6/debian/arch/hppa/config.parisc64-smp
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/arch/hppa/config.parisc64-smp	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,16 @@
+CONFIG_LOCK_KERNEL=y
+# CONFIG_CPUSETS is not set
+CONFIG_STOP_MACHINE=y
+# CONFIG_PA7000 is not set
+CONFIG_PA8X00=y
+CONFIG_PA20=y
+CONFIG_PREFETCH=y
+CONFIG_64BIT=y
+CONFIG_SMP=y
+CONFIG_HOTPLUG_CPU=y
+CONFIG_DISCONTIGMEM=y
+CONFIG_COMPAT=y
+CONFIG_NR_CPUS=32
+# CONFIG_DEBUG_RWLOCK is not set
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_FLATMEM_MANUAL is not set

Modified: people/waldi/linux-2.6/debian/arch/hppa/defines
==============================================================================
--- people/waldi/linux-2.6/debian/arch/hppa/defines	(original)
+++ people/waldi/linux-2.6/debian/arch/hppa/defines	Mon Jan  2 19:32:22 2006
@@ -1,22 +1,22 @@
 [base]
 flavours:
- 32
- 32-smp
- 64
- 64-smp
+ parisc
+ parisc-smp
+ parisc64
+ parisc64-smp
 kernel-arch: parisc
 kernel-header-dirs: parisc
 suggests: palo
 
-[32]
+[parisc]
 class: 32-bit PA-RISC
 
-[32-smp]
+[parisc-smp]
 class: multi-processor 32-bit PA-RISC
 
-[64]
+[parisc64]
 class: 64-bit PA-RISC
 
-[64-smp]
+[parisc64-smp]
 class: multi-processor 64-bit PA-RISC
 

Modified: people/waldi/linux-2.6/debian/arch/i386/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/i386/config	(original)
+++ people/waldi/linux-2.6/debian/arch/i386/config	Mon Jan  2 19:32:22 2006
@@ -21,7 +21,6 @@
 # CONFIG_X86_VISWS is not set
 # CONFIG_X86_GENERICARCH is not set
 # CONFIG_X86_ES7000 is not set
-# CONFIG_M486 is not set
 # CONFIG_M586 is not set
 # CONFIG_M586TSC is not set
 # CONFIG_M586MMX is not set
@@ -316,7 +315,6 @@
 CONFIG_BLK_DEV_IDECD=m
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_GENERIC=m
 CONFIG_BLK_DEV_CMD640=y
 # CONFIG_BLK_DEV_CMD640_ENHANCED is not set
@@ -480,92 +478,6 @@
 CONFIG_INET_ESP=m
 CONFIG_IP_TCPDIAG=m
 CONFIG_IP_TCPDIAG_IPV6=y
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_BRIDGE_NETFILTER=y
-CONFIG_IP_NF_CT_ACCT=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_PHYSDEV=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_REALM=m
-CONFIG_IP_NF_MATCH_SCTP=m
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_CONNMARK=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_CLASSIFY=m
-CONFIG_IP_NF_TARGET_CONNMARK=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_TARGET_NOTRACK=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AHESP=m
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_PHYSDEV=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_DECNET_NF_GRABULATOR=m
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
 CONFIG_IP_SCTP=m
 # CONFIG_SCTP_DBG_MSG is not set
 # CONFIG_SCTP_DBG_OBJCNT is not set
@@ -1304,8 +1216,6 @@
 CONFIG_VIDEO_ZORAN_LML33R10=m
 # CONFIG_VIDEO_ZR36120 is not set
 CONFIG_VIDEO_MEYE=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_DVB=m
 CONFIG_VIDEO_MXB=m
 CONFIG_VIDEO_DPC=m
 CONFIG_VIDEO_HEXIUM_ORION=m
@@ -1630,7 +1540,7 @@
 CONFIG_USB=m
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_DEVICEFS=y
-CONFIG_USB_BANDWIDTH=y
+# CONFIG_USB_BANDWIDTH is not set
 # CONFIG_USB_DYNAMIC_MINORS is not set
 CONFIG_USB_SUSPEND=y
 # CONFIG_USB_OTG is not set
@@ -1912,3 +1822,4 @@
 # CONFIG_SPARSEMEM_MANUAL is not set
 # CONFIG_DISCONTIGMEM_MANUAL is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y

Added: people/waldi/linux-2.6/debian/arch/i386/config.486
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/arch/i386/config.486	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,112 @@
+CONFIG_M486=y
+# CONFIG_M686 is not set
+# CONFIG_MK7 is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_F00F_BUG=y
+CONFIG_X86_INTEL_USERCOPY=y
+# CONFIG_SMP is not set
+CONFIG_X86_UP_APIC=y
+CONFIG_X86_UP_IOAPIC=y
+# CONFIG_X86_MCE is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+CONFIG_MATH_EMULATION=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+CONFIG_EISA=y
+CONFIG_EISA_VLB_PRIMING=y
+CONFIG_EISA_PCI_EISA=y
+CONFIG_EISA_VIRTUAL_ROOT=y
+CONFIG_EISA_NAMES=y
+CONFIG_MCA=y
+CONFIG_MCA_LEGACY=y
+# CONFIG_MCA_PROC_FS is not set
+CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
+# CONFIG_MTD_XIP is not set
+CONFIG_BLK_DEV_PS2=m
+CONFIG_SCSI_FD_MCS=m
+CONFIG_SCSI_IBMMCA=m
+CONFIG_IBMMCA_SCSI_ORDER_STANDARD=y
+# CONFIG_IBMMCA_SCSI_DEV_RESET is not set
+CONFIG_SCSI_NCR_D700=m
+CONFIG_SCSI_NCR_Q720=m
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=4
+CONFIG_SCSI_NCR53C8XX_SYNC=5
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+CONFIG_SCSI_MCA_53C9X=m
+CONFIG_SCSI_SIM710=m
+CONFIG_53C700_IO_MAPPED=y
+CONFIG_SBPCD=m
+CONFIG_CM206=m
+CONFIG_CDU31A=m
+CONFIG_DMASCC=m
+CONFIG_IRPORT_SIR=m
+# CONFIG_DONGLE_OLD is not set
+CONFIG_ELMC=m
+CONFIG_ELMC_II=m
+CONFIG_ULTRAMCA=m
+CONFIG_ULTRA32=m
+CONFIG_NI5010=m
+CONFIG_PCMCIA_XIRTULIP=m
+# CONFIG_SKMC is not set
+CONFIG_NE2_MCA=m
+CONFIG_IBMLANA=m
+CONFIG_LNE390=m
+CONFIG_NE3210=m
+CONFIG_ES3210=m
+CONFIG_MADGEMC=m
+CONFIG_ISDN_DRV_LOOP=m
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_T1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_COMPUTONE=m
+CONFIG_DIGIEPCA=m
+CONFIG_MOXA_INTELLIO=m
+CONFIG_SX=m
+CONFIG_RIO=m
+CONFIG_RIO_OLDPCI=y
+CONFIG_STALLION=m
+CONFIG_ISTALLION=m
+CONFIG_FTAPE=m
+CONFIG_ZFTAPE=m
+CONFIG_ZFT_DFLT_BLK_SZ=10240
+CONFIG_ZFT_COMPRESSOR=m
+CONFIG_FT_NR_BUFFERS=3
+CONFIG_FT_PROC_FS=y
+CONFIG_FT_NORMAL_DEBUG=y
+# CONFIG_FT_FULL_DEBUG is not set
+# CONFIG_FT_NO_TRACE is not set
+# CONFIG_FT_NO_TRACE_AT_ALL is not set
+CONFIG_FT_STD_FDC=y
+# CONFIG_FT_MACH2 is not set
+# CONFIG_FT_PROBE_FC10 is not set
+# CONFIG_FT_ALT_FDC is not set
+CONFIG_FT_FDC_THR=8
+CONFIG_FT_FDC_MAX_RATE=2000
+CONFIG_FT_ALPHA_CLOCK=0
+CONFIG_I2C_ELEKTOR=m
+CONFIG_I2C_STUB=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_EXT2_FS=y
+CONFIG_FS_MBCACHE=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_M386 is not set
+CONFIG_X86_POPAD_OK=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_XADD=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_ALIGNMENT_16=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_WP_WORKS_OK=y

Modified: people/waldi/linux-2.6/debian/arch/i386/config.686
==============================================================================
--- people/waldi/linux-2.6/debian/arch/i386/config.686	(original)
+++ people/waldi/linux-2.6/debian/arch/i386/config.686	Mon Jan  2 19:32:22 2006
@@ -1,4 +1,3 @@
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 # CONFIG_M386 is not set
 CONFIG_M686=y
 # CONFIG_MK7 is not set
@@ -84,3 +83,4 @@
 CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_X86_CMPXCHG64=y
+# CONFIG_M486 is not set

Modified: people/waldi/linux-2.6/debian/arch/i386/config.686-smp
==============================================================================
--- people/waldi/linux-2.6/debian/arch/i386/config.686-smp	(original)
+++ people/waldi/linux-2.6/debian/arch/i386/config.686-smp	Mon Jan  2 19:32:22 2006
@@ -1,6 +1,5 @@
 CONFIG_LOCK_KERNEL=y
 # CONFIG_CPUSETS is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_STOP_MACHINE=y
 # CONFIG_M386 is not set
 CONFIG_M686=y
@@ -70,3 +69,4 @@
 CONFIG_X86_HT=y
 CONFIG_X86_TRAMPOLINE=y
 CONFIG_X86_CMPXCHG64=y
+# CONFIG_M486 is not set

Modified: people/waldi/linux-2.6/debian/arch/i386/config.k7
==============================================================================
--- people/waldi/linux-2.6/debian/arch/i386/config.k7	(original)
+++ people/waldi/linux-2.6/debian/arch/i386/config.k7	Mon Jan  2 19:32:22 2006
@@ -1,4 +1,3 @@
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 # CONFIG_M386 is not set
 # CONFIG_M686 is not set
 CONFIG_MK7=y
@@ -85,3 +84,4 @@
 CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_X86_CMPXCHG64=y
+# CONFIG_M486 is not set

Modified: people/waldi/linux-2.6/debian/arch/i386/config.k7-smp
==============================================================================
--- people/waldi/linux-2.6/debian/arch/i386/config.k7-smp	(original)
+++ people/waldi/linux-2.6/debian/arch/i386/config.k7-smp	Mon Jan  2 19:32:22 2006
@@ -1,6 +1,5 @@
 CONFIG_LOCK_KERNEL=y
 # CONFIG_CPUSETS is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_STOP_MACHINE=y
 # CONFIG_M386 is not set
 # CONFIG_M686 is not set
@@ -71,3 +70,4 @@
 CONFIG_X86_HT=y
 CONFIG_X86_TRAMPOLINE=y
 CONFIG_X86_CMPXCHG64=y
+# CONFIG_M486 is not set

Modified: people/waldi/linux-2.6/debian/arch/i386/defines
==============================================================================
--- people/waldi/linux-2.6/debian/arch/i386/defines	(original)
+++ people/waldi/linux-2.6/debian/arch/i386/defines	Mon Jan  2 19:32:22 2006
@@ -1,6 +1,6 @@
 [base]
 flavours:
- 386
+ 486
  686
  686-smp
  k7

Modified: people/waldi/linux-2.6/debian/arch/ia64/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/ia64/config	(original)
+++ people/waldi/linux-2.6/debian/arch/ia64/config	Mon Jan  2 19:32:22 2006
@@ -24,6 +24,8 @@
 # CONFIG_IA64_PAGE_SIZE_8KB is not set
 CONFIG_IA64_PAGE_SIZE_16KB=y
 # CONFIG_IA64_PAGE_SIZE_64KB is not set
+CONFIG_PGTABLE_3=y
+# CONFIG_PGTABLE_4 is not set
 # CONFIG_HZ_100 is not set
 CONFIG_HZ_250=y
 # CONFIG_HZ_1000 is not set
@@ -33,8 +35,12 @@
 CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
 # CONFIG_IA64_CYCLONE is not set
 CONFIG_IOSAPIC=y
-# CONFIG_IA64_SGI_SN_XP is not set
-CONFIG_FORCE_MAX_ZONEORDER=18
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_IA64_SGI_SN_XP=m
+CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_IA32_SUPPORT=y
 CONFIG_COMPAT=y
 CONFIG_IA64_MCA_RECOVERY=m
@@ -44,6 +50,7 @@
 CONFIG_EFI_VARS=m
 CONFIG_EFI_PCDP=y
 CONFIG_PM=y
+CONFIG_PM_LEGACY=y
 CONFIG_ACPI=y
 CONFIG_ACPI_BOOT=y
 CONFIG_ACPI_INTERPRETER=y
@@ -212,7 +219,6 @@
 CONFIG_BLK_DEV_IDECD=m
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-CONFIG_IDE_TASK_IOCTL=y
 CONFIG_IDE_GENERIC=m
 CONFIG_BLK_DEV_IDEPCI=y
 CONFIG_IDEPCI_SHARE_IRQ=y
@@ -890,8 +896,6 @@
 CONFIG_VIDEO_ZORAN_DC30=m
 CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_DVB=m
 CONFIG_VIDEO_MXB=m
 CONFIG_VIDEO_DPC=m
 CONFIG_VIDEO_HEXIUM_ORION=m
@@ -1117,7 +1121,7 @@
 CONFIG_USB=m
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_DEVICEFS=y
-CONFIG_USB_BANDWIDTH=y
+# CONFIG_USB_BANDWIDTH is not set
 # CONFIG_USB_DYNAMIC_MINORS is not set
 # CONFIG_USB_SUSPEND is not set
 # CONFIG_USB_OTG is not set
@@ -1364,3 +1368,4 @@
 # CONFIG_PM_DEBUG is not set
 CONFIG_DIGIEPCA=m
 # CONFIG_CPU_FREQ is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y

Modified: people/waldi/linux-2.6/debian/arch/m68k/config.amiga
==============================================================================
--- people/waldi/linux-2.6/debian/arch/m68k/config.amiga	(original)
+++ people/waldi/linux-2.6/debian/arch/m68k/config.amiga	Mon Jan  2 19:32:22 2006
@@ -42,7 +42,6 @@
 CONFIG_BLK_DEV_IDECD=y
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_GENERIC=y
 # CONFIG_IDE_ARM is not set
 CONFIG_BLK_DEV_GAYLE=y

Modified: people/waldi/linux-2.6/debian/arch/m68k/config.atari
==============================================================================
--- people/waldi/linux-2.6/debian/arch/m68k/config.atari	(original)
+++ people/waldi/linux-2.6/debian/arch/m68k/config.atari	Mon Jan  2 19:32:22 2006
@@ -34,7 +34,6 @@
 CONFIG_BLK_DEV_IDECD=y
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_GENERIC=y
 # CONFIG_IDE_ARM is not set
 CONFIG_BLK_DEV_FALCON_IDE=y

Modified: people/waldi/linux-2.6/debian/arch/m68k/config.mac
==============================================================================
--- people/waldi/linux-2.6/debian/arch/m68k/config.mac	(original)
+++ people/waldi/linux-2.6/debian/arch/m68k/config.mac	Mon Jan  2 19:32:22 2006
@@ -28,7 +28,6 @@
 CONFIG_BLK_DEV_IDECD=y
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_GENERIC=y
 # CONFIG_IDE_ARM is not set
 CONFIG_BLK_DEV_MAC_IDE=y

Modified: people/waldi/linux-2.6/debian/arch/m68k/config.q40
==============================================================================
--- people/waldi/linux-2.6/debian/arch/m68k/config.q40	(original)
+++ people/waldi/linux-2.6/debian/arch/m68k/config.q40	Mon Jan  2 19:32:22 2006
@@ -30,7 +30,6 @@
 CONFIG_BLK_DEV_IDECD=y
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_GENERIC=y
 # CONFIG_IDE_ARM is not set
 CONFIG_BLK_DEV_Q40IDE=y

Modified: people/waldi/linux-2.6/debian/arch/powerpc/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/config	(original)
+++ people/waldi/linux-2.6/debian/arch/powerpc/config	Mon Jan  2 19:32:22 2006
@@ -2,7 +2,6 @@
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_HAVE_DEC_LOCK=y
 CONFIG_PPC=y
-CONFIG_PPC32=y
 CONFIG_GENERIC_NVRAM=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
 CONFIG_CLEAN_COMPILE=y
@@ -44,7 +43,6 @@
 CONFIG_PM=y
 CONFIG_PPC_STD_MMU=y
 CONFIG_PPC_MULTIPLATFORM=y
-# CONFIG_APUS is not set
 # CONFIG_KATANA is not set
 # CONFIG_WILLOW is not set
 # CONFIG_CPCI690 is not set
@@ -141,7 +139,6 @@
 CONFIG_BLK_DEV_IDECD=m
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_IDE_TASK_IOCTL is not set
 # CONFIG_IDE_GENERIC is not set
 CONFIG_BLK_DEV_IDEPCI=y
 CONFIG_IDEPCI_SHARE_IRQ=y
@@ -801,8 +798,6 @@
 CONFIG_VIDEO_ZORAN_DC30=m
 CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
-CONFIG_VIDEO_SAA7134=m
-CONFIG_VIDEO_SAA7134_DVB=m
 CONFIG_VIDEO_MXB=m
 CONFIG_VIDEO_DPC=m
 CONFIG_VIDEO_HEXIUM_ORION=m
@@ -875,12 +870,8 @@
 # CONFIG_FB_PM2 is not set
 # CONFIG_FB_CYBER2000 is not set
 CONFIG_FB_OF=y
-CONFIG_FB_CONTROL=y
-CONFIG_FB_PLATINUM=y
-CONFIG_FB_VALKYRIE=y
 CONFIG_FB_CT65550=y
 # CONFIG_FB_ASILIANT is not set
-CONFIG_FB_IMSTT=y
 # CONFIG_FB_VGA16 is not set
 CONFIG_FB_NVIDIA=y
 # CONFIG_FB_RIVA is not set
@@ -1008,7 +999,7 @@
 CONFIG_USB=m
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_DEVICEFS=y
-CONFIG_USB_BANDWIDTH=y
+# CONFIG_USB_BANDWIDTH is not set
 CONFIG_USB_DYNAMIC_MINORS=y
 CONFIG_USB_SUSPEND=y
 # CONFIG_USB_OTG is not set
@@ -1256,7 +1247,6 @@
 CONFIG_PM_LEGACY=y
 CONFIG_PPC_I8259=y
 CONFIG_WINDFARM=m
-CONFIG_FLATMEM_MANUAL=y
 CONFIG_FB_NVIDIA_I2C=y
 # CONFIG_SPARSEMEM_MANUAL is not set
 # CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -1280,5 +1270,6 @@
 CONFIG_RTAS_PROC=y
 # CONFIG_PPC_52xx is not set
 # CONFIG_PPC_83xx is not set
-# CONFIG_PPC64 is not set
 CONFIG_XMON=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+

Modified: people/waldi/linux-2.6/debian/arch/powerpc/config.apus
==============================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/config.apus	(original)
+++ people/waldi/linux-2.6/debian/arch/powerpc/config.apus	Mon Jan  2 19:32:22 2006
@@ -247,7 +247,6 @@
 CONFIG_BLK_DEV_IDECD=y
 # CONFIG_BLK_DEV_IDETAPE is not set
 CONFIG_BLK_DEV_IDEFLOPPY=y
-# CONFIG_IDE_TASK_IOCTL is not set
 
 #
 # IDE chipset support/bugfixes
@@ -1067,3 +1066,7 @@
 # CONFIG_HWMON_VID is not set
 CONFIG_NFS_ACL_SUPPORT=y
 CONFIG_CRYPTO=y
+CONFIG_FLATMEM_MANUAL=y
+
+# CONFIG_SOFTWARE_SUSPEND is not set
+

Modified: people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc
==============================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc	(original)
+++ people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc	Mon Jan  2 19:32:22 2006
@@ -1,3 +1,5 @@
+# CONFIG_APUS is not set
+CONFIG_PPC32=y
 CONFIG_BROKEN_ON_SMP=y
 # CONFIG_SMP is not set
 CONFIG_PM_STD_PARTITION=""
@@ -5,3 +7,9 @@
 CONFIG_PCMCIA_XIRTULIP=m
 # CONFIG_USB_SERIAL_WHITEHEAT is not set
 CONFIG_MAC_FLOPPY=y
+CONFIG_FLATMEM_MANUAL=y
+CONFIG_FB_CONTROL=y
+CONFIG_FB_PLATINUM=y
+CONFIG_FB_VALKYRIE=y
+CONFIG_FB_IMSTT=y
+

Modified: people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc-miboot
==============================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc-miboot	(original)
+++ people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc-miboot	Mon Jan  2 19:32:22 2006
@@ -1,3 +1,5 @@
+# CONFIG_APUS is not set
+CONFIG_PPC32=y
 CONFIG_MAC_FLOPPY=y
 # CONFIG_SMP is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
@@ -16,8 +18,6 @@
 # CONFIG_PROC_DEVICETREE is not set
 # CONFIG_PREP_RESIDUAL is not set
 # CONFIG_LBD is not set
-# CONFIG_IOSCHED_AS is not set
-# CONFIG_IOSCHED_CFQ is not set
 # CONFIG_THERM_WINDTUNNEL is not set
 # CONFIG_THERM_ADT746X is not set
 # CONFIG_IPV6_TUNNEL is not set
@@ -68,10 +68,23 @@
 # CONFIG_IRPORT_SIR is not set
 # CONFIG_USB_SERIAL_WHITEHEAT is not set
 # CONFIG_PMAC_BACKLIGHT is not set
-
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_CRYPTO_MD5=y
 # CONFIG_SOFTWARE_SUSPEND is not set
-ONFIG_SOFTWARE_SUSPEND=m
 CONFIG_DEFAULT_DEADLINE=y
+CONFIG_FLATMEM_MANUAL=y
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="deadline"
+
+CONFIG_FB_CONTROL=y
+CONFIG_FB_PLATINUM=y
+CONFIG_FB_VALKYRIE=y
+CONFIG_FB_IMSTT=y
+

Modified: people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc-smp
==============================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc-smp	(original)
+++ people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc-smp	Mon Jan  2 19:32:22 2006
@@ -1,3 +1,5 @@
+# CONFIG_APUS is not set
+CONFIG_PPC32=y
 CONFIG_LOCK_KERNEL=y
 # CONFIG_CPUSETS is not set
 CONFIG_STOP_MACHINE=y
@@ -5,3 +7,9 @@
 CONFIG_IRQ_ALL_CPUS=y
 CONFIG_NR_CPUS=4
 # CONFIG_MAC_FLOPPY is not set
+CONFIG_FLATMEM_MANUAL=y
+CONFIG_FB_CONTROL=y
+CONFIG_FB_PLATINUM=y
+CONFIG_FB_VALKYRIE=y
+CONFIG_FB_IMSTT=y
+

Modified: people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc64
==============================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc64	(original)
+++ people/waldi/linux-2.6/debian/arch/powerpc/config.powerpc64	Mon Jan  2 19:32:22 2006
@@ -1,3 +1,5 @@
+# CONFIG_APUS is not set
+CONFIG_PPC64=y
 CONFIG_64BIT=y
 CONFIG_COMPAT=y
 CONFIG_CPUSETS=y
@@ -30,8 +32,16 @@
 CONFIG_MEGARAID_LEGACY=m
 CONFIG_MPIC_BROKEN_U3=y
 CONFIG_NR_CPUS=32
-# CONFIG_FLATMEM is not set
-CONFIG_DISCONTIGMEM=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPARSEMEM_EXTREME=y
+# CONFIG_MEMORY_HOTPLUG is not set
 CONFIG_NUMA=y
 # CONFIG_PMAC_BACKLIGHT is not set
 # CONFIG_PMAC_PBOOK is not set
@@ -86,9 +96,7 @@
 CONFIG_RTAS_ERROR_LOGGING=y
 CONFIG_GENERIC_TBSYNC=y
 # CONFIG_EMBEDDED6xx is not set
-CONFIG_WINDFARM_PM91=y
 CONFIG_ARCH_SPARSEMEM_DEFAULT=y
-CONFIG_WINDFARM_PM81=y
 CONFIG_HAVE_MEMORY_PRESENT=y
 # CONFIG_PPC_64K_PAGES is not set
 CONFIG_SPARSEMEM_EXTREME=y
@@ -100,3 +108,10 @@
 CONFIG_POWER3=y
 CONFIG_POWER4=y
 # CONFIG_FLATMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_WINDFARM_PM91=m
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_WINDFARM_PM81=m
+CONFIG_KERNEL_START=0xc000000000000000
+# CONFIG_MAC_FLOPPY is not set
+

Modified: people/waldi/linux-2.6/debian/arch/powerpc/defines
==============================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/defines	(original)
+++ people/waldi/linux-2.6/debian/arch/powerpc/defines	Mon Jan  2 19:32:22 2006
@@ -1,20 +1,25 @@
 [base]
 flavours:
+ apus
  powerpc
  powerpc-smp
  powerpc-miboot
  powerpc64
-kernel-header-dirs: powerpc ppc ppc64 m68k
+kernel-header-dirs: powerpc ppc m68k
 kernel-arch: powerpc
-kpkg-subarch: powerpc
+kpkg-subarch: ppc
 
 [apus]
-kernel-arch: ppc
-kpkg-subarch: powerpc32
-depends: mkvmlinuz (>= 15)
+depends: mkvmlinuz (>= 18)
 
 [powerpc]
-depends: mkvmlinuz (>= 15)
+depends: mkvmlinuz (>= 18)
 
 [powerpc-smp]
-depends: mkvmlinuz (>= 15)
+depends: mkvmlinuz (>= 18)
+
+[powerpc-miboot]
+depends: mkvmlinuz (>= 18)
+
+[powerpc64]
+kpkg-subarch: powerpc64

Modified: people/waldi/linux-2.6/debian/arch/s390/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/s390/config	(original)
+++ people/waldi/linux-2.6/debian/arch/s390/config	Mon Jan  2 19:32:22 2006
@@ -12,8 +12,7 @@
 CONFIG_STOP_MACHINE=y
 CONFIG_SMP=y
 CONFIG_NR_CPUS=32
-# CONFIG_HOTPLUG_CPU is not set
-# CONFIG_MARCH_Z990 is not set
+CONFIG_HOTPLUG_CPU=y
 # CONFIG_PACK_STACK is not set
 # CONFIG_CHECK_STACK is not set
 # CONFIG_WARN_STACK is not set
@@ -52,6 +51,7 @@
 # CONFIG_DASD_PROFILE is not set
 CONFIG_DASD_ECKD=m
 CONFIG_DASD_FBA=m
+# CONFIG_DASD_DIAG is not set
 # CONFIG_DASD_CMB is not set
 # CONFIG_ATA_OVER_ETH is not set
 # CONFIG_MD_RAID10 is not set
@@ -174,3 +174,4 @@
 # CONFIG_CRC_CCITT is not set
 CONFIG_CRC32=m
 CONFIG_KEXEC=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y

Modified: people/waldi/linux-2.6/debian/arch/s390/config.s390
==============================================================================
--- people/waldi/linux-2.6/debian/arch/s390/config.s390	(original)
+++ people/waldi/linux-2.6/debian/arch/s390/config.s390	Mon Jan  2 19:32:22 2006
@@ -5,7 +5,7 @@
 CONFIG_MATHEMU=y
 CONFIG_MARCH_G5=y
 # CONFIG_MARCH_Z900 is not set
+# CONFIG_MARCH_Z990 is not set
 # CONFIG_IPL_TAPE is not set
 CONFIG_IPL_VM=y
 # CONFIG_LBD is not set
-# CONFIG_DASD_DIAG is not set

Modified: people/waldi/linux-2.6/debian/arch/s390/config.s390-tape
==============================================================================
--- people/waldi/linux-2.6/debian/arch/s390/config.s390-tape	(original)
+++ people/waldi/linux-2.6/debian/arch/s390/config.s390-tape	Mon Jan  2 19:32:22 2006
@@ -5,7 +5,7 @@
 CONFIG_MATHEMU=y
 CONFIG_MARCH_G5=y
 # CONFIG_MARCH_Z900 is not set
+# CONFIG_MARCH_Z990 is not set
 CONFIG_IPL_TAPE=y
 # CONFIG_IPL_VM is not set
 # CONFIG_LBD is not set
-# CONFIG_DASD_DIAG is not set

Modified: people/waldi/linux-2.6/debian/arch/s390/config.s390x
==============================================================================
--- people/waldi/linux-2.6/debian/arch/s390/config.s390x	(original)
+++ people/waldi/linux-2.6/debian/arch/s390/config.s390x	Mon Jan  2 19:32:22 2006
@@ -6,5 +6,6 @@
 CONFIG_BINFMT_ELF32=y
 # CONFIG_MARCH_G5 is not set
 CONFIG_MARCH_Z900=y
+# CONFIG_MARCH_Z990 is not set
 # CONFIG_IPL_TAPE is not set
 CONFIG_IPL_VM=y

Modified: people/waldi/linux-2.6/debian/arch/sparc/config
==============================================================================
--- people/waldi/linux-2.6/debian/arch/sparc/config	(original)
+++ people/waldi/linux-2.6/debian/arch/sparc/config	Mon Jan  2 19:32:22 2006
@@ -76,7 +76,6 @@
 CONFIG_BLK_DEV_NBD=m
 CONFIG_BLK_DEV_RAM_SIZE=16384
 CONFIG_ATA_OVER_ETH=m
-# CONFIG_MEGARAID_NEWGEN is not set
 # CONFIG_SCSI_FUTURE_DOMAIN is not set
 # CONFIG_SCSI_IPS is not set
 # CONFIG_SCSI_INIA100 is not set
@@ -470,3 +469,7 @@
 # CONFIG_SPARSEMEM_MANUAL is not set
 # CONFIG_DISCONTIGMEM_MANUAL is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y

Modified: people/waldi/linux-2.6/debian/arch/sparc/config.sparc64
==============================================================================
--- people/waldi/linux-2.6/debian/arch/sparc/config.sparc64	(original)
+++ people/waldi/linux-2.6/debian/arch/sparc/config.sparc64	Mon Jan  2 19:32:22 2006
@@ -66,7 +66,6 @@
 CONFIG_BLK_DEV_IDECD=m
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_GENERIC=m
 CONFIG_BLK_DEV_IDEPCI=y
 # CONFIG_IDEPCI_SHARE_IRQ is not set
@@ -283,7 +282,6 @@
 # CONFIG_TUNER_3036 is not set
 # CONFIG_VIDEO_STRADIS is not set
 # CONFIG_VIDEO_ZORAN is not set
-CONFIG_VIDEO_SAA7134=m
 # CONFIG_VIDEO_MXB is not set
 # CONFIG_VIDEO_DPC is not set
 # CONFIG_VIDEO_HEXIUM_ORION is not set

Modified: people/waldi/linux-2.6/debian/arch/sparc/config.sparc64-smp
==============================================================================
--- people/waldi/linux-2.6/debian/arch/sparc/config.sparc64-smp	(original)
+++ people/waldi/linux-2.6/debian/arch/sparc/config.sparc64-smp	Mon Jan  2 19:32:22 2006
@@ -70,7 +70,6 @@
 CONFIG_BLK_DEV_IDECD=m
 CONFIG_BLK_DEV_IDETAPE=m
 CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_GENERIC=m
 CONFIG_BLK_DEV_IDEPCI=y
 # CONFIG_IDEPCI_SHARE_IRQ is not set
@@ -287,7 +286,6 @@
 # CONFIG_TUNER_3036 is not set
 # CONFIG_VIDEO_STRADIS is not set
 # CONFIG_VIDEO_ZORAN is not set
-CONFIG_VIDEO_SAA7134=m
 # CONFIG_VIDEO_MXB is not set
 # CONFIG_VIDEO_DPC is not set
 # CONFIG_VIDEO_HEXIUM_ORION is not set

Modified: people/waldi/linux-2.6/debian/bin/gencontrol.py
==============================================================================
--- people/waldi/linux-2.6/debian/bin/gencontrol.py	(original)
+++ people/waldi/linux-2.6/debian/bin/gencontrol.py	Mon Jan  2 19:32:22 2006
@@ -76,6 +76,7 @@
         for i in (
             ('compiler', 'COMPILER'),
             ('kernel-header-dirs', 'KERNEL_HEADER_DIRS'),
+            ('kpkg-arch', 'KPKG_ARCH'),
             ('kpkg-subarch', 'KPKG_SUBARCH'),
             ('type', 'TYPE'),
         ):

Added: people/waldi/linux-2.6/debian/bin/kconfig.ml
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/bin/kconfig.ml	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,135 @@
+#!/usr/bin/ocamlrun /usr/bin/ocaml
+
+let basedir = ref "debian/arch"
+let arch = ref ""
+let subarch = ref ""
+let flavour = ref ""
+let config_name = ref ""
+let verbose = ref false
+let archindir = ref false
+
+let spec = [
+  "-b", Arg.Set_string basedir, "base dir of the arch configurations [default: debian/arch]";
+  "-ba", Arg.Set archindir, "basedir includes arch";
+  "-a", Arg.Set_string arch, "arch";
+  "-s", Arg.Set_string subarch, "subarch";
+  "-f", Arg.Set_string flavour, "flavour";
+  "-v", Arg.Set verbose, "verbose";
+]
+let usage =
+  "./kconfig.ml [ -b basedir ] -a arch [ -s subarch ] -f flavour" ^ "\n" ^
+  "./kconfig.ml config_file"
+
+let () = Arg.parse
+  spec
+  (function s -> config_name := s) 
+  usage
+
+let usage () = Arg.usage spec usage
+
+type options =
+  | Config_Yes of string
+  | Config_No of string
+  | Config_Module of string
+  | Config_Value of string * string
+  | Config_Comment of string
+  | Config_Empty
+
+let print_option = function
+  | Config_Yes s -> Printf.printf "CONFIG_%s=y\n" s
+  | Config_No s -> Printf.printf "# CONFIG_%s is not set\n" s
+  | Config_Module s -> Printf.printf "CONFIG_%s=m\n" s
+  | Config_Value (s,v) -> Printf.printf "CONFIG_%s=%s\n" s v
+  | Config_Comment s -> Printf.printf "#%s\n" s
+  | Config_Empty -> Printf.printf "\n"
+  
+exception Comment
+  
+let parse_line fd =
+  let line = input_line fd in
+  let len = String.length line in
+  if len = 0 then Config_Empty else
+  try
+    if len <= 9 then raise Comment else 
+    match line.[0], line.[1], line.[2], line.[3], line.[4], line.[5], line.[6], line.[7], line.[8] with 
+    | '#', ' ', 'C', 'O', 'N', 'F', 'I', 'G', '_' ->
+      begin
+        try
+          let space = String.index_from line 8 ' ' in
+	  if String.sub line (space + 1) 10 = "is not set" then 
+	    let o = String.sub line 9 (space - 9) in
+	    Config_No o
+	  else raise Comment
+        with Not_found | Invalid_argument "String.sub" -> raise Comment
+      end
+    | '#', _, _, _, _, _, _, _, _ -> raise Comment
+    | 'C', 'O', 'N', 'F', 'I', 'G', _, _, _ ->
+      begin
+        try
+          let equal = String.index_from line 6 '=' in
+	  let o = String.sub line 7 (equal - 7) in
+	  let v = String.sub line (equal + 1) (len - equal - 1) in
+	  match v with
+	  | "y" -> Config_Yes o
+	  | "m" -> Config_Module o
+	  | _ -> Config_Value (o,v)
+        with Not_found | Invalid_argument "String.sub" -> raise Comment
+      end
+    | _ -> raise Comment
+  with Comment -> Config_Comment (String.sub line 1 (len - 1))
+
+module C = Map.Make (String)
+
+(* Map.add behavior ensures the latest entry is the one staying *)
+let rec parse_config fd m =
+  try 
+    let line = parse_line fd in
+    match line with
+    | Config_Comment _ | Config_Empty -> parse_config fd m
+    | Config_Yes s | Config_No s | Config_Module s | Config_Value (s,_) ->
+      parse_config fd (C.add s line m)
+  with End_of_file -> m
+
+let print_config m = C.iter (function _ -> print_option) m
+
+let parse_config_file name m force =
+  try 
+    let config = open_in name in
+    let m = parse_config config m in
+    close_in config;
+    m
+  with Sys_error s ->
+    if force then raise (Sys_error s) else m
+
+let () =
+  begin
+    if !verbose then
+      if !config_name <> "" then
+        Printf.eprintf "Reading config file %s" !config_name
+      else
+        Printf.eprintf "Creating config file for arch %s, subarch %s, flavour %s (basedir is %s)\n" !arch !subarch !flavour !basedir
+  end;
+  if !config_name <> "" then 
+    try
+      let config = open_in !config_name in
+      let m = parse_config config C.empty in
+      print_config m;
+      close_in config
+    with Sys_error s -> Printf.eprintf "Error: %s\n" s
+  else if !arch <> "" && !flavour <> "" then
+    try
+      let dir = if !archindir then Filename.dirname !basedir else !basedir in
+      let m = parse_config_file (dir ^ "/config") C.empty false in
+      let archdir = dir ^ "/" ^ !arch in
+      let m = parse_config_file (archdir ^ "/config") m false in
+      let m, archdir = 
+        if !subarch <> ""  && !subarch <> "none" then 
+	  let archdir = archdir ^ "/" ^ !subarch in
+          parse_config_file (archdir ^ "/config") m false, archdir
+	else m, archdir
+      in
+      let m = parse_config_file (archdir ^ "/config." ^ !flavour) m true in
+      print_config m;
+    with Sys_error s -> Printf.eprintf "Error: %s\n" s
+  else
+    usage ()

Modified: people/waldi/linux-2.6/debian/changelog
==============================================================================
--- people/waldi/linux-2.6/debian/changelog	(original)
+++ people/waldi/linux-2.6/debian/changelog	Mon Jan  2 19:32:22 2006
@@ -1,3 +1,96 @@
+linux-2.6 (2.6.14+2.6.15-rc7-0experimental.3) UNRELEASED; urgency=low
+
+  [ Bastian Blank ]
+  * [s390] Update configs.
+
+ -- Bastian Blank <waldi at debian.org>  Mon, 02 Jan 2006 11:23:55 +0100
+
+linux-2.6 (2.6.14+2.6.15-rc7-0experimental.2) experimental; urgency=low
+
+  [ Kyle McMartin ]
+  * Snag latest hppa.diff from cvs.parisc-linux.org.
+  * Update configs for 2.6.15.
+
+  [ Frederik Schüler ]
+  * Fix kconfig.ml call in rules.real.
+
+  [ Sven Luther ]
+  * [powerpc] Readded PReP Motorola PowerStack II Utah IDE interrupt
+    (Closes: #345424)
+  * [powerpc] Readded Marvell gigabit ethernet hotplug support which is not
+    yet upstream after all, only went to -mm.
+
+ -- Sven Luther <luther at debian.org>  Sun,  1 Jan 2006 16:14:02 +0000
+
+linux-2.6 (2.6.14+2.6.15-rc7-0experimental.1) experimental; urgency=low
+
+  [ Kyle McMartin ]
+  * Change parisc kernel names to something less ambiguous.
+
+  [ dann frazier ]
+  * Update ia64 configs
+
+  [ maximilian attems ]
+  * Drop modular-ide.patch, nacked by ide upstream.  Prevents udev to load
+    ide-generic and those successfull boots with initramfs-tools.
+  * Disable CONFIG_USB_BANDWIDTH, causes major trouble for alsa usb cards.
+
+  [ Norbert Tretkowski ]
+  * [alpha] Removed conflict with initramfs-tools, thanks vorlon for finding
+    the klibc bug!
+
+  [ Jonas Smedegaard ]
+  * Adjust short description of transitional package kernel-image-2.6-
+    486 to mention 2.6 (not 2.6.12).
+  * Clean duplicate Kconfig options.
+
+  [ Frederik Schüler ]
+  * New upstream release cadidate.
+  * Add updated version of drivers-scsi-megaraid_splitup.patch.
+  * Deactivate CONFIG_IDE_TASK_IOCTL on alpha and ia64 and make it a global
+    option.
+  * Make CONFIG_VIDEO_SAA7134 a global option.
+  * New option CONFIG_CC_OPTIMIZE_FOR_SIZE set per-arch.
+
+  [ Sven Luther ]
+  * Added make-kpkg --arch option support to gencontrol.py.
+  * [powerpc] now set --arch kernel-package option correctly.
+  * [powerpc] Fixed apus patch for 2.6.15-rc7 (and beyond hopefully).
+  * [powerpc] Fixed config options, but i guess jonas broke it again with his
+    cleanup, oh well :)
+  * Added debian/bin/kconfig.ml to process config file snipplet, so we can
+    preserve the pre 2.6.15 ordering of config file snipplets. Upto 2.6.15
+    the kernel Kconfig magic apparently kept the later occuring config options,
+    but it seems that this is no more the case. Instead of catting the config
+    files together, not use the kconfig.ml script to read in the files from
+    more generic to more specific, and keep only the more specific.
+
+  [ Martin Michlmayr ]
+  * [arm] Don't define "compiler" since GCC 4.x is the default now anyway.
+  * [arm] Add descriptions for "class" and "longclass".
+  * [arm] Compile CONFIG_BLK_DEV_SL82C105 support into the kernel on
+    Footbridge.
+  * [arm] Compile ext3 support into the kernel on Footbridge.
+  * [arm] Turn on CONFIG_SERIAL_8250 support on Footbridge.
+
+  [ Jurij Smakov ]
+  * [sparc] Correct the patch for the atyfb framebuffer driver
+    (sparc64-atyfb-xl-gr.patch) to finally fix the console and X
+    image defects on Blade 100/150. The new patch is named
+    sparc64-atyfb-xl-gr-final.patch to avoid the confusion.
+    Thanks to Luis F. Ortiz for fixing the patch and Luigi Gangitano
+    for testing it out.
+  
+ -- Sven Luther <luther at debian.org>  Thu, 29 Dec 2005 09:48:36 +0000
+
+linux-2.6 (2.6.14+2.6.15-rc5-0experimental.1) experimental; urgency=low
+
+  * New upstream release candidate.
+  * Rename i386 368 flavour to 486.
+  * Add myself to uploaders.
+
+ -- Frederik Schüler <fs at debian.org>  Fri,  9 Dec 2005 16:30:06 +0000
+
 linux-2.6 (2.6.14+2.6.15-rc4-0experimental.1) experimental; urgency=low
 
   [ Frederik Schüler ]
@@ -5,7 +98,14 @@
   * Readdition of qla2xxx drivers, as firmware license has been fixed.
   * Make CONFIG_PACKET, PACKET_MM and UNIX builtin on all architectures:
     statically linked has better performance then modules due to TLB issue.
-  * clean up debian-patches dir: remove all obsolete patches.
+  * clean up debian-patches dir: remove all obsolete patches:
+    - alpha-compile-fix.patch: obsolete
+    - amd64-int3-fix.patch: fixed since 2.6.12
+    - net-ipconntrack-nat-fix.patch: merged upstream after 2.6.14 release
+    - net-nf_queue-oops.patch: merged upstream after 2.6.14 release
+    - qla2xxx-removed.patch: obsolete
+  * Drop M386 support remains from the i386 386 flavour: built with M486 
+    from now on.
 
   [ Simon Horman ]
   * Enable MKISS globally (closes: #340215)
@@ -25,7 +125,7 @@
     shutdown on some sparc machines with serial console. Proper fix has
     been incorporated upstream.
 
- -- Frederik Schüler <fs at debian.org>  Thu,  1 Dec 2005 22:13:02 +0000
+ -- Frederik Schüler <fs at debian.org>  Sun,  4 Dec 2005 12:31:04 +0000
 
 linux-2.6 (2.6.14-3) unstable; urgency=low
 

Modified: people/waldi/linux-2.6/debian/patches-arch/hppa.diff
==============================================================================
--- people/waldi/linux-2.6/debian/patches-arch/hppa.diff	(original)
+++ people/waldi/linux-2.6/debian/patches-arch/hppa.diff	Mon Jan  2 19:32:22 2006
@@ -1,39 +1,10 @@
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/CREDITS CVS2_6_14_PA0/CREDITS
---- LINUS_2_6_14/CREDITS	2005-10-27 21:30:30.000000000 -0600
-+++ CVS2_6_14_PA0/CREDITS	2005-10-27 15:47:36.000000000 -0600
-@@ -611,8 +611,7 @@
- N: Randolph Chung
- E: tausq at debian.org
- D: Linux/PA-RISC hacker
--S: Los Altos, CA 94022
--S: USA
-+S: Hong Kong
- 
- N: Juan Jose Ciarlante
- W: http://juanjox.kernelnotes.org/
-@@ -3399,6 +3398,15 @@
- S: 10200 Prague 10, Hostivar
- S: Czech Republic
- 
-+N: Thibaut Varene
-+E: T-Bone at parisc-linux.org
-+W: http://www.parisc-linux.org/
-+P: 1024D/B7D2F063 E67C 0D43 A75E 12A5 BB1C  FA2F 1E32 C3DA B7D2 F063
-+D: PA-RISC port minion, PDC and GSCPS2 drivers, debuglocks and other bits
-+D: Some bits in an ARM port, S1D13XXX FB driver, random patches here and there
-+D: AD1889 sound driver
-+S: Paris, France
-+
- N: Heikki Vatiainen
- E: hessu at cs.tut.fi
- D: Co-author of Multi-Protocol Over ATM (MPOA), some LANE hacks
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/Documentation/parisc/todo CVS2_6_14_PA0/Documentation/parisc/todo
---- LINUS_2_6_14/Documentation/parisc/todo	1969-12-31 17:00:00.000000000 -0700
-+++ CVS2_6_14_PA0/Documentation/parisc/todo	2005-04-27 00:45:20.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/Documentation/parisc/todo CVS2_6_15_RC7_PA0/Documentation/parisc/todo
+--- LINUS_2_6_15_RC7/Documentation/parisc/todo	1969-12-31 17:00:00.000000000 -0700
++++ CVS2_6_15_RC7_PA0/Documentation/parisc/todo	2005-10-28 19:28:34.000000000 -0600
 @@ -0,0 +1,82 @@
-+Status 2005-03-07 :
++Status 2005-10-28 :
 +-------------------
-+ - Merged to 2.6.11
++ - Merged to 2.6.15
 +
 +Todo:
 +-----
@@ -113,28 +84,9 @@
 + - fix HIL problem: ksoftirqd/0 eats 56% cpu (kernel 2.4 & kernel 2.6)
 + - NPTL kernel support (CLONE_*TID flags need to be correctly handled by 
 +   sys_clone() and friends)
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/MAINTAINERS CVS2_6_14_PA0/MAINTAINERS
---- LINUS_2_6_14/MAINTAINERS	2005-10-27 21:30:30.000000000 -0600
-+++ CVS2_6_14_PA0/MAINTAINERS	2005-10-20 08:42:21.000000000 -0600
-@@ -197,6 +197,15 @@
- W:	http://linux.thorsten-knabe.de
- S:	Maintained
- 
-+AD1889 SOUND DRIVER
-+P:	Kyle McMartin
-+M:	kyle at parisc-linux.org
-+P:	Thibaut Varene
-+M:	T-Bone at parisc-linux.org
-+W:	http://wiki.parisc-linux.org/AD1889
-+L:	parisc-linux at lists.parisc-linux.org
-+S:	Maintained
-+
- ADM1025 HARDWARE MONITOR DRIVER
- P:	Jean Delvare
- M:	khali at linux-fr.org
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/ia64/ia32/ia32_signal.c CVS2_6_14_PA0/arch/ia64/ia32/ia32_signal.c
---- LINUS_2_6_14/arch/ia64/ia32/ia32_signal.c	2005-10-27 21:30:33.000000000 -0600
-+++ CVS2_6_14_PA0/arch/ia64/ia32/ia32_signal.c	2005-09-14 06:54:22.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/ia64/ia32/ia32_signal.c CVS2_6_15_RC7_PA0/arch/ia64/ia32/ia32_signal.c
+--- LINUS_2_6_15_RC7/arch/ia64/ia32/ia32_signal.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/ia64/ia32/ia32_signal.c	2005-09-14 06:54:22.000000000 -0600
 @@ -24,6 +24,7 @@
  #include <linux/unistd.h>
  #include <linux/wait.h>
@@ -143,9 +95,9 @@
  
  #include <asm/intrinsics.h>
  #include <asm/uaccess.h>
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/ia64/ia32/ia32priv.h CVS2_6_14_PA0/arch/ia64/ia32/ia32priv.h
---- LINUS_2_6_14/arch/ia64/ia32/ia32priv.h	2005-10-27 21:30:33.000000000 -0600
-+++ CVS2_6_14_PA0/arch/ia64/ia32/ia32priv.h	2005-04-12 14:38:26.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/ia64/ia32/ia32priv.h CVS2_6_15_RC7_PA0/arch/ia64/ia32/ia32priv.h
+--- LINUS_2_6_15_RC7/arch/ia64/ia32/ia32priv.h	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/ia64/ia32/ia32priv.h	2005-12-19 05:42:13.000000000 -0700
 @@ -225,58 +225,6 @@
  	unsigned int	st_ino_hi;
  };
@@ -205,10313 +157,3994 @@
  struct old_linux32_dirent {
  	u32	d_ino;
  	u32	d_offset;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/Kconfig CVS2_6_14_PA0/arch/parisc/Kconfig
---- LINUS_2_6_14/arch/parisc/Kconfig	2005-10-27 21:30:33.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/Kconfig	2005-09-24 17:20:57.000000000 -0600
-@@ -47,10 +47,10 @@
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/cache.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/cache.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/cache.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/cache.c	2005-12-17 10:21:16.000000000 -0700
+@@ -29,9 +29,9 @@
+ #include <asm/processor.h>
+ #include <asm/sections.h>
  
- config ISA_DMA_API
- 	bool
--	default y
+-int split_tlb;
+-int dcache_stride;
+-int icache_stride;
++int split_tlb __read_mostly;
++int dcache_stride __read_mostly;
++int icache_stride __read_mostly;
+ EXPORT_SYMBOL(dcache_stride);
+ 
+ 
+@@ -45,29 +45,29 @@
+ EXPORT_SYMBOL(pa_tlb_lock);
+ #endif
+ 
+-struct pdc_cache_info cache_info;
++struct pdc_cache_info cache_info __read_mostly;
+ #ifndef CONFIG_PA20
+-static struct pdc_btlb_info btlb_info;
++static struct pdc_btlb_info btlb_info __read_mostly;
+ #endif
  
- config ARCH_MAY_HAVE_PC_FDC
- 	bool
-+	depends on BROKEN
- 	default y
+ #ifdef CONFIG_SMP
+ void
+ flush_data_cache(void)
+ {
+-	on_each_cpu((void (*)(void *))flush_data_cache_local, NULL, 1, 1);
++	on_each_cpu(flush_data_cache_local, NULL, 1, 1);
+ }
+ void 
+ flush_instruction_cache(void)
+ {
+-	on_each_cpu((void (*)(void *))flush_instruction_cache_local, NULL, 1, 1);
++	on_each_cpu(flush_instruction_cache_local, NULL, 1, 1);
+ }
+ #endif
  
- source "init/Kconfig"
-@@ -154,13 +154,14 @@
+ void
+ flush_cache_all_local(void)
+ {
+-	flush_instruction_cache_local();
+-	flush_data_cache_local();
++	flush_instruction_cache_local(NULL);
++	flush_data_cache_local(NULL);
+ }
+ EXPORT_SYMBOL(flush_cache_all_local);
  
- config ARCH_DISCONTIGMEM_ENABLE
- 	bool "Discontiguous memory support (EXPERIMENTAL)"
--	depends on EXPERIMENTAL
-+	depends on 64BIT && EXPERIMENTAL
- 	help
- 	  Say Y to support efficient handling of discontiguous physical memory,
- 	  for architectures which are either NUMA (Non-Uniform Memory Access)
- 	  or have huge holes in the physical address space for other reasons.
- 	  See <file:Documentation/vm/numa> for more.
- 
-+source "kernel/Kconfig.hz"
- source "mm/Kconfig"
- 
- config PREEMPT
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/Makefile CVS2_6_14_PA0/arch/parisc/Makefile
---- LINUS_2_6_14/arch/parisc/Makefile	2005-10-27 21:30:33.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/Makefile	2005-09-14 13:53:57.000000000 -0600
-@@ -20,7 +20,8 @@
- CHECKFLAGS	+= -D__hppa__=1
- 
- ifdef CONFIG_64BIT
--CROSS_COMPILE	:= hppa64-linux-
-+CROSS_COMPILE	:= $(shell if [ -x /usr/bin/hppa64-linux-gnu-gcc ]; then \
-+			echo hppa64-linux-gnu-; else echo hppa64-linux-; fi)
- UTS_MACHINE	:= parisc64
- CHECKFLAGS	+= -D__LP64__=1 -m64
- else
-@@ -34,6 +35,14 @@
- 
- OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
- 
-+GCC_VERSION     := $(call cc-version)
-+ifneq ($(shell if [ -z $(GCC_VERSION) ] ; then echo "bad"; fi ;),)
-+$(error Sorry, couldn't find ($(cc-version)).)
-+endif
-+ifneq ($(shell if [ $(GCC_VERSION) -lt 0303 ] ; then echo "bad"; fi ;),)
-+$(error Sorry, your compiler is too old ($(GCC_VERSION)).  GCC v3.3 or above is required.)
-+endif
-+
- cflags-y	:= -pipe
- 
- # These flags should be implied by an hppa-linux configuration, but they
-@@ -43,7 +52,7 @@
- # Currently we save and restore fpregs on all kernel entry/interruption paths.
- # If that gets optimized, we might need to disable the use of fpregs in the
- # kernel.
--#cflags-y	+= -mdisable-fpregs
-+cflags-y	+= -mdisable-fpregs
- 
- # Without this, "ld -r" results in .text sections that are too big
- # (> 0x40000) for branches to reach stubs.
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/configs/712_defconfig CVS2_6_14_PA0/arch/parisc/configs/712_defconfig
---- LINUS_2_6_14/arch/parisc/configs/712_defconfig	2005-10-27 21:30:33.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/configs/712_defconfig	2005-10-21 21:16:47.000000000 -0600
-@@ -1,12 +1,16 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.10-pa5
--# Wed Jan  5 13:20:32 2005
-+# Linux kernel version: 2.6.14-rc5-pa1
-+# Fri Oct 21 23:04:34 2005
- #
- CONFIG_PARISC=y
- CONFIG_MMU=y
- CONFIG_STACK_GROWSUP=y
- CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+CONFIG_GENERIC_CALIBRATE_DELAY=y
-+CONFIG_GENERIC_HARDIRQS=y
-+CONFIG_GENERIC_IRQ_PROBE=y
-+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
- 
- #
- # Code maturity level options
-@@ -15,35 +19,40 @@
- # CONFIG_CLEAN_COMPILE is not set
- CONFIG_BROKEN=y
- CONFIG_BROKEN_ON_SMP=y
-+CONFIG_INIT_ENV_ARG_LIMIT=32
- 
- #
- # General setup
- #
- CONFIG_LOCALVERSION=""
-+# CONFIG_LOCALVERSION_AUTO is not set
- CONFIG_SWAP=y
- CONFIG_SYSVIPC=y
- CONFIG_POSIX_MQUEUE=y
- # CONFIG_BSD_PROCESS_ACCT is not set
- CONFIG_SYSCTL=y
- # CONFIG_AUDIT is not set
--CONFIG_LOG_BUF_SHIFT=16
- CONFIG_HOTPLUG=y
- CONFIG_KOBJECT_UEVENT=y
- CONFIG_IKCONFIG=y
- CONFIG_IKCONFIG_PROC=y
-+CONFIG_INITRAMFS_SOURCE=""
- # CONFIG_EMBEDDED is not set
- CONFIG_KALLSYMS=y
- CONFIG_KALLSYMS_ALL=y
- # CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_PRINTK=y
-+CONFIG_BUG=y
-+CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
- CONFIG_EPOLL=y
--# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
- CONFIG_SHMEM=y
- CONFIG_CC_ALIGN_FUNCTIONS=0
- CONFIG_CC_ALIGN_LABELS=0
- CONFIG_CC_ALIGN_LOOPS=0
- CONFIG_CC_ALIGN_JUMPS=0
- # CONFIG_TINY_SHMEM is not set
-+CONFIG_BASE_SMALL=0
- 
- #
- # Loadable module support
-@@ -65,9 +74,18 @@
- # CONFIG_PA7300LC is not set
- # CONFIG_PA8X00 is not set
- CONFIG_PA11=y
--# CONFIG_64BIT is not set
- # CONFIG_SMP is not set
--# CONFIG_DISCONTIGMEM is not set
-+# CONFIG_HZ_100 is not set
-+CONFIG_HZ_250=y
-+# CONFIG_HZ_1000 is not set
-+CONFIG_HZ=250
-+CONFIG_SELECT_MEMORY_MODEL=y
-+CONFIG_FLATMEM_MANUAL=y
-+# CONFIG_DISCONTIGMEM_MANUAL is not set
-+# CONFIG_SPARSEMEM_MANUAL is not set
-+CONFIG_FLATMEM=y
-+CONFIG_FLAT_NODE_MEM_MAP=y
-+# CONFIG_SPARSEMEM_STATIC is not set
- # CONFIG_PREEMPT is not set
- # CONFIG_HPUX is not set
- 
-@@ -81,8 +99,6 @@
- # CONFIG_GSC_WAX is not set
- # CONFIG_EISA is not set
- # CONFIG_PCI is not set
--CONFIG_CHASSIS_LCD_LED=y
--# CONFIG_PDC_CHASSIS is not set
- 
- #
- # PCCARD (PCMCIA/CardBus) support
-@@ -90,12 +106,15 @@
- # CONFIG_PCCARD is not set
- 
- #
--# PC-card bridges
-+# PCI Hotplug Support
- #
- 
- #
--# PCI Hotplug Support
-+# PA-RISC specific drivers
- #
-+CONFIG_CHASSIS_LCD_LED=y
-+# CONFIG_PDC_CHASSIS is not set
-+CONFIG_PDC_STABLE=y
- 
- #
- # Executable file formats
-@@ -104,137 +123,7 @@
- CONFIG_BINFMT_MISC=m
- 
- #
--# Device Drivers
--#
--
--#
--# Generic Driver Options
--#
--# CONFIG_STANDALONE is not set
--# CONFIG_PREVENT_FIRMWARE_BUILD is not set
--CONFIG_FW_LOADER=y
--# CONFIG_DEBUG_DRIVER is not set
--
--#
--# Memory Technology Devices (MTD)
--#
--# CONFIG_MTD is not set
--
--#
--# Parallel port support
--#
--CONFIG_PARPORT=y
--CONFIG_PARPORT_PC=m
--CONFIG_PARPORT_PC_CML1=m
--# CONFIG_PARPORT_PC_FIFO is not set
--# CONFIG_PARPORT_PC_SUPERIO is not set
--CONFIG_PARPORT_GSC=y
--# CONFIG_PARPORT_OTHER is not set
--# CONFIG_PARPORT_1284 is not set
--
--#
--# Plug and Play support
--#
--
--#
--# Block devices
--#
--# CONFIG_BLK_DEV_FD is not set
--# CONFIG_PARIDE is not set
--CONFIG_BLK_DEV_LOOP=y
--CONFIG_BLK_DEV_CRYPTOLOOP=y
--# CONFIG_BLK_DEV_NBD is not set
--CONFIG_BLK_DEV_RAM=y
--CONFIG_BLK_DEV_RAM_COUNT=16
--CONFIG_BLK_DEV_RAM_SIZE=6144
--CONFIG_BLK_DEV_INITRD=y
--CONFIG_INITRAMFS_SOURCE=""
--# CONFIG_CDROM_PKTCDVD is not set
--
--#
--# IO Schedulers
--#
--CONFIG_IOSCHED_NOOP=y
--CONFIG_IOSCHED_AS=y
--CONFIG_IOSCHED_DEADLINE=y
--CONFIG_IOSCHED_CFQ=y
--
--#
--# ATA/ATAPI/MFM/RLL support
--#
--# CONFIG_IDE is not set
--
--#
--# SCSI device support
--#
--CONFIG_SCSI=y
--CONFIG_SCSI_PROC_FS=y
--
--#
--# SCSI support type (disk, tape, CD-ROM)
--#
--CONFIG_BLK_DEV_SD=y
--CONFIG_CHR_DEV_ST=y
--# CONFIG_CHR_DEV_OSST is not set
--CONFIG_BLK_DEV_SR=y
--# CONFIG_BLK_DEV_SR_VENDOR is not set
--CONFIG_CHR_DEV_SG=y
--
--#
--# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
--#
--# CONFIG_SCSI_MULTI_LUN is not set
--# CONFIG_SCSI_CONSTANTS is not set
--# CONFIG_SCSI_LOGGING is not set
--
--#
--# SCSI Transport Attributes
--#
--CONFIG_SCSI_SPI_ATTRS=y
--# CONFIG_SCSI_FC_ATTRS is not set
--
--#
--# SCSI low-level drivers
--#
--# CONFIG_SCSI_SATA is not set
--# CONFIG_SCSI_PPA is not set
--# CONFIG_SCSI_IMM is not set
--CONFIG_SCSI_LASI700=y
--CONFIG_53C700_MEM_MAPPED=y
--CONFIG_53C700_LE_ON_BE=y
--# CONFIG_SCSI_ZALON is not set
--CONFIG_SCSI_DEBUG=m
--
--#
--# Multi-device support (RAID and LVM)
--#
--CONFIG_MD=y
--CONFIG_BLK_DEV_MD=m
--CONFIG_MD_LINEAR=m
--CONFIG_MD_RAID0=m
--CONFIG_MD_RAID1=m
--# CONFIG_MD_RAID10 is not set
--# CONFIG_MD_RAID5 is not set
--# CONFIG_MD_RAID6 is not set
--# CONFIG_MD_MULTIPATH is not set
--# CONFIG_MD_FAULTY is not set
--# CONFIG_BLK_DEV_DM is not set
--
--#
--# Fusion MPT device support
--#
--
--#
--# IEEE 1394 (FireWire) support
--#
--# CONFIG_IEEE1394 is not set
--
--#
--# I2O device support
--#
--
--#
--# Networking support
-+# Networking
- #
- CONFIG_NET=y
- 
-@@ -243,12 +132,14 @@
- #
- CONFIG_PACKET=y
- CONFIG_PACKET_MMAP=y
--CONFIG_NETLINK_DEV=y
- CONFIG_UNIX=y
-+CONFIG_XFRM=y
-+CONFIG_XFRM_USER=m
- CONFIG_NET_KEY=m
- CONFIG_INET=y
- CONFIG_IP_MULTICAST=y
- # CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
- CONFIG_IP_PNP=y
- CONFIG_IP_PNP_DHCP=y
- CONFIG_IP_PNP_BOOTP=y
-@@ -262,8 +153,10 @@
- CONFIG_INET_ESP=m
- # CONFIG_INET_IPCOMP is not set
- CONFIG_INET_TUNNEL=m
--CONFIG_IP_TCPDIAG=y
--# CONFIG_IP_TCPDIAG_IPV6 is not set
-+CONFIG_INET_DIAG=m
-+CONFIG_INET_TCP_DIAG=m
-+# CONFIG_TCP_CONG_ADVANCED is not set
-+CONFIG_TCP_CONG_BIC=y
- 
- #
- # IP: Virtual Server Configuration
-@@ -272,6 +165,7 @@
- # CONFIG_IPV6 is not set
- CONFIG_NETFILTER=y
- # CONFIG_NETFILTER_DEBUG is not set
-+# CONFIG_NETFILTER_NETLINK is not set
- 
- #
- # IP: Netfilter Configuration
-@@ -279,11 +173,14 @@
- CONFIG_IP_NF_CONNTRACK=m
- # CONFIG_IP_NF_CT_ACCT is not set
- CONFIG_IP_NF_CONNTRACK_MARK=y
-+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
- CONFIG_IP_NF_CT_PROTO_SCTP=m
- CONFIG_IP_NF_FTP=m
- CONFIG_IP_NF_IRC=m
-+# CONFIG_IP_NF_NETBIOS_NS is not set
- CONFIG_IP_NF_TFTP=m
- CONFIG_IP_NF_AMANDA=m
-+# CONFIG_IP_NF_PPTP is not set
- CONFIG_IP_NF_QUEUE=m
- CONFIG_IP_NF_IPTABLES=m
- CONFIG_IP_NF_MATCH_LIMIT=m
-@@ -307,21 +204,23 @@
- # CONFIG_IP_NF_MATCH_ADDRTYPE is not set
- # CONFIG_IP_NF_MATCH_REALM is not set
- CONFIG_IP_NF_MATCH_SCTP=m
-+# CONFIG_IP_NF_MATCH_DCCP is not set
- CONFIG_IP_NF_MATCH_COMMENT=m
- CONFIG_IP_NF_MATCH_CONNMARK=m
- CONFIG_IP_NF_MATCH_HASHLIMIT=m
-+# CONFIG_IP_NF_MATCH_STRING is not set
- CONFIG_IP_NF_FILTER=m
- CONFIG_IP_NF_TARGET_REJECT=m
- CONFIG_IP_NF_TARGET_LOG=m
- CONFIG_IP_NF_TARGET_ULOG=m
- CONFIG_IP_NF_TARGET_TCPMSS=m
-+# CONFIG_IP_NF_TARGET_NFQUEUE is not set
- CONFIG_IP_NF_NAT=m
- CONFIG_IP_NF_NAT_NEEDED=y
- CONFIG_IP_NF_TARGET_MASQUERADE=m
- CONFIG_IP_NF_TARGET_REDIRECT=m
- CONFIG_IP_NF_TARGET_NETMAP=m
- CONFIG_IP_NF_TARGET_SAME=m
--# CONFIG_IP_NF_NAT_LOCAL is not set
- CONFIG_IP_NF_NAT_SNMP_BASIC=m
- CONFIG_IP_NF_NAT_IRC=m
- CONFIG_IP_NF_NAT_FTP=m
-@@ -333,6 +232,7 @@
- CONFIG_IP_NF_TARGET_DSCP=m
- CONFIG_IP_NF_TARGET_MARK=m
- CONFIG_IP_NF_TARGET_CLASSIFY=m
-+# CONFIG_IP_NF_TARGET_TTL is not set
- CONFIG_IP_NF_TARGET_CONNMARK=m
- CONFIG_IP_NF_TARGET_CLUSTERIP=m
- CONFIG_IP_NF_RAW=m
-@@ -340,10 +240,11 @@
- CONFIG_IP_NF_ARPTABLES=m
- CONFIG_IP_NF_ARPFILTER=m
- CONFIG_IP_NF_ARP_MANGLE=m
--# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
--# CONFIG_IP_NF_COMPAT_IPFWADM is not set
--CONFIG_XFRM=y
--CONFIG_XFRM_USER=m
-+
-+#
-+# DCCP Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_DCCP is not set
- 
- #
- # SCTP Configuration (EXPERIMENTAL)
-@@ -362,10 +263,6 @@
- # CONFIG_NET_DIVERT is not set
- # CONFIG_ECONET is not set
- # CONFIG_WAN_ROUTER is not set
--
--#
--# QoS and/or fair queueing
--#
- # CONFIG_NET_SCHED is not set
- # CONFIG_NET_CLS_ROUTE is not set
- 
-@@ -373,17 +270,162 @@
- # Network testing
- #
- CONFIG_NET_PKTGEN=m
--# CONFIG_NETPOLL is not set
--# CONFIG_NET_POLL_CONTROLLER is not set
- # CONFIG_HAMRADIO is not set
- # CONFIG_IRDA is not set
- # CONFIG_BT is not set
-+# CONFIG_IEEE80211 is not set
-+
-+#
-+# Device Drivers
-+#
-+
-+#
-+# Generic Driver Options
-+#
-+# CONFIG_STANDALONE is not set
-+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-+CONFIG_FW_LOADER=y
-+# CONFIG_DEBUG_DRIVER is not set
-+
-+#
-+# Connector - unified userspace <-> kernelspace linker
-+#
-+# CONFIG_CONNECTOR is not set
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+# CONFIG_MTD is not set
-+
-+#
-+# Parallel port support
-+#
-+CONFIG_PARPORT=y
-+CONFIG_PARPORT_PC=m
-+# CONFIG_PARPORT_PC_FIFO is not set
-+# CONFIG_PARPORT_PC_SUPERIO is not set
-+CONFIG_PARPORT_GSC=y
-+# CONFIG_PARPORT_1284 is not set
-+
-+#
-+# Plug and Play support
-+#
-+
-+#
-+# Block devices
-+#
-+# CONFIG_BLK_DEV_FD is not set
-+# CONFIG_PARIDE is not set
-+# CONFIG_BLK_DEV_COW_COMMON is not set
-+CONFIG_BLK_DEV_LOOP=y
-+CONFIG_BLK_DEV_CRYPTOLOOP=y
-+# CONFIG_BLK_DEV_NBD is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_COUNT=16
-+CONFIG_BLK_DEV_RAM_SIZE=6144
-+CONFIG_BLK_DEV_INITRD=y
-+# CONFIG_CDROM_PKTCDVD is not set
-+
-+#
-+# IO Schedulers
-+#
-+CONFIG_IOSCHED_NOOP=y
-+CONFIG_IOSCHED_AS=y
-+CONFIG_IOSCHED_DEADLINE=y
-+CONFIG_IOSCHED_CFQ=y
-+CONFIG_ATA_OVER_ETH=m
-+
-+#
-+# ATA/ATAPI/MFM/RLL support
-+#
-+# CONFIG_IDE is not set
-+
-+#
-+# SCSI device support
-+#
-+# CONFIG_RAID_ATTRS is not set
-+CONFIG_SCSI=y
-+CONFIG_SCSI_PROC_FS=y
-+
-+#
-+# SCSI support type (disk, tape, CD-ROM)
-+#
-+CONFIG_BLK_DEV_SD=y
-+CONFIG_CHR_DEV_ST=y
-+# CONFIG_CHR_DEV_OSST is not set
-+CONFIG_BLK_DEV_SR=y
-+# CONFIG_BLK_DEV_SR_VENDOR is not set
-+CONFIG_CHR_DEV_SG=y
-+# CONFIG_CHR_DEV_SCH is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+# CONFIG_SCSI_MULTI_LUN is not set
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+
-+#
-+# SCSI Transport Attributes
-+#
-+CONFIG_SCSI_SPI_ATTRS=y
-+# CONFIG_SCSI_FC_ATTRS is not set
-+CONFIG_SCSI_ISCSI_ATTRS=m
-+# CONFIG_SCSI_SAS_ATTRS is not set
-+
-+#
-+# SCSI low-level drivers
-+#
-+# CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_PPA is not set
-+# CONFIG_SCSI_IMM is not set
-+CONFIG_SCSI_LASI700=y
-+CONFIG_53C700_LE_ON_BE=y
-+# CONFIG_SCSI_ZALON is not set
-+CONFIG_SCSI_DEBUG=m
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+CONFIG_MD=y
-+CONFIG_BLK_DEV_MD=m
-+CONFIG_MD_LINEAR=m
-+CONFIG_MD_RAID0=m
-+CONFIG_MD_RAID1=m
-+# CONFIG_MD_RAID10 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_MD_RAID6 is not set
-+# CONFIG_MD_MULTIPATH is not set
-+# CONFIG_MD_FAULTY is not set
-+# CONFIG_BLK_DEV_DM is not set
-+
-+#
-+# Fusion MPT device support
-+#
-+# CONFIG_FUSION is not set
-+
-+#
-+# IEEE 1394 (FireWire) support
-+#
-+# CONFIG_IEEE1394 is not set
-+
-+#
-+# I2O device support
-+#
-+
-+#
-+# Network device support
-+#
- CONFIG_NETDEVICES=y
- CONFIG_DUMMY=m
- CONFIG_BONDING=m
- # CONFIG_EQUALIZER is not set
- CONFIG_TUN=m
--# CONFIG_ETHERTAP is not set
-+
-+#
-+# PHY device support
-+#
-+# CONFIG_PHYLIB is not set
- 
- #
- # Ethernet (10 or 100Mbit)
-@@ -391,6 +433,7 @@
- CONFIG_NET_ETHERNET=y
- CONFIG_MII=m
- CONFIG_LASI_82596=y
-+# CONFIG_NET_POCKET is not set
- 
- #
- # Ethernet (1000 Mbit)
-@@ -414,6 +457,7 @@
- #
- # CONFIG_STRIP is not set
- # CONFIG_ATMEL is not set
-+# CONFIG_HOSTAP is not set
- 
- #
- # Wan interfaces
-@@ -431,6 +475,8 @@
- # CONFIG_SLIP is not set
- # CONFIG_SHAPER is not set
- # CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
- 
- #
- # ISDN subsystem
-@@ -460,19 +506,6 @@
- # CONFIG_INPUT_EVBUG is not set
- 
- #
--# Input I/O drivers
--#
--# CONFIG_GAMEPORT is not set
--CONFIG_SOUND_GAMEPORT=y
--CONFIG_SERIO=y
--CONFIG_SERIO_SERPORT=y
--# CONFIG_SERIO_PARKBD is not set
--CONFIG_SERIO_GSCPS2=y
--CONFIG_HP_SDC=y
--CONFIG_HIL_MLC=y
--# CONFIG_SERIO_RAW is not set
--
--#
- # Input Device Drivers
- #
- CONFIG_INPUT_KEYBOARD=y
-@@ -483,6 +516,7 @@
- # CONFIG_KEYBOARD_LKKBD is not set
- # CONFIG_KEYBOARD_XTKBD is not set
- # CONFIG_KEYBOARD_NEWTON is not set
-+CONFIG_KEYBOARD_HIL_OLD=y
- # CONFIG_KEYBOARD_HIL is not set
- CONFIG_INPUT_MOUSE=y
- CONFIG_MOUSE_PS2=y
-@@ -494,6 +528,19 @@
- # CONFIG_INPUT_MISC is not set
- 
- #
-+# Hardware I/O ports
-+#
-+CONFIG_SERIO=y
-+CONFIG_SERIO_SERPORT=y
-+# CONFIG_SERIO_PARKBD is not set
-+CONFIG_SERIO_GSCPS2=y
-+CONFIG_HP_SDC=y
-+CONFIG_HIL_MLC=y
-+CONFIG_SERIO_LIBPS2=y
-+# CONFIG_SERIO_RAW is not set
-+# CONFIG_GAMEPORT is not set
-+
-+#
- # Character devices
- #
- CONFIG_VT=y
-@@ -511,7 +558,6 @@
- CONFIG_SERIAL_8250_MANY_PORTS=y
- CONFIG_SERIAL_8250_SHARE_IRQ=y
- # CONFIG_SERIAL_8250_DETECT_IRQ is not set
--# CONFIG_SERIAL_8250_MULTIPORT is not set
- # CONFIG_SERIAL_8250_RSA is not set
- 
- #
-@@ -546,12 +592,14 @@
- #
- # Ftape, the floppy tape device driver
- #
--# CONFIG_AGP is not set
--# CONFIG_DRM is not set
- CONFIG_RAW_DRIVER=y
- CONFIG_MAX_RAW_DEVS=256
- 
- #
-+# TPM devices
-+#
-+
-+#
- # I2C support
- #
- # CONFIG_I2C is not set
-@@ -562,10 +610,20 @@
- # CONFIG_W1 is not set
- 
- #
-+# Hardware Monitoring support
-+#
-+# CONFIG_HWMON is not set
-+# CONFIG_HWMON_VID is not set
-+
-+#
- # Misc devices
- #
- 
- #
-+# Multimedia Capabilities Port drivers
-+#
-+
-+#
- # Multimedia devices
- #
- # CONFIG_VIDEO_DEV is not set
-@@ -579,28 +637,36 @@
- # Graphics support
- #
- CONFIG_FB=y
-+CONFIG_FB_CFB_FILLRECT=y
-+CONFIG_FB_CFB_COPYAREA=y
-+CONFIG_FB_CFB_IMAGEBLIT=y
-+CONFIG_FB_SOFT_CURSOR=y
-+# CONFIG_FB_MACMODES is not set
- CONFIG_FB_MODE_HELPERS=y
- CONFIG_FB_TILEBLITTING=y
- CONFIG_FB_STI=y
-+# CONFIG_FB_S1D13XXX is not set
- # CONFIG_FB_VIRTUAL is not set
- 
- #
- # Console display driver support
- #
--CONFIG_STI_CONSOLE=y
-+CONFIG_DUMMY_CONSOLE=y
- CONFIG_DUMMY_CONSOLE_COLUMNS=128
- CONFIG_DUMMY_CONSOLE_ROWS=48
--CONFIG_DUMMY_CONSOLE=y
- CONFIG_FRAMEBUFFER_CONSOLE=y
-+CONFIG_STI_CONSOLE=y
- CONFIG_FONTS=y
- CONFIG_FONT_8x8=y
- CONFIG_FONT_8x16=y
- # CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_7x14 is not set
- # CONFIG_FONT_PEARL_8x8 is not set
- # CONFIG_FONT_ACORN_8x8 is not set
- # CONFIG_FONT_MINI_4x6 is not set
- # CONFIG_FONT_SUN8x16 is not set
- # CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_10x18 is not set
- 
- #
- # Logo configuration
-@@ -610,6 +676,7 @@
- # CONFIG_LOGO_LINUX_VGA16 is not set
- # CONFIG_LOGO_LINUX_CLUT224 is not set
- CONFIG_LOGO_PARISC_CLUT224=y
-+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
- 
- #
- # Sound
-@@ -657,10 +724,6 @@
- # CONFIG_USB_ARCH_HAS_OHCI is not set
- 
- #
--# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
--#
--
--#
- # USB Gadget Support
- #
- # CONFIG_USB_GADGET is not set
-@@ -671,10 +734,20 @@
- # CONFIG_MMC is not set
- 
- #
-+# InfiniBand support
-+#
-+# CONFIG_INFINIBAND is not set
-+
-+#
-+# SN Devices
-+#
-+
-+#
- # File systems
- #
- CONFIG_EXT2_FS=y
- # CONFIG_EXT2_FS_XATTR is not set
-+# CONFIG_EXT2_FS_XIP is not set
- CONFIG_EXT3_FS=y
- # CONFIG_EXT3_FS_XATTR is not set
- CONFIG_JBD=y
-@@ -682,20 +755,24 @@
- # CONFIG_REISERFS_FS is not set
- CONFIG_JFS_FS=m
- # CONFIG_JFS_POSIX_ACL is not set
-+# CONFIG_JFS_SECURITY is not set
- # CONFIG_JFS_DEBUG is not set
- # CONFIG_JFS_STATISTICS is not set
- CONFIG_FS_POSIX_ACL=y
- CONFIG_XFS_FS=m
--# CONFIG_XFS_RT is not set
-+CONFIG_XFS_EXPORT=y
- # CONFIG_XFS_QUOTA is not set
- # CONFIG_XFS_SECURITY is not set
- # CONFIG_XFS_POSIX_ACL is not set
-+# CONFIG_XFS_RT is not set
- # CONFIG_MINIX_FS is not set
- # CONFIG_ROMFS_FS is not set
-+CONFIG_INOTIFY=y
- # CONFIG_QUOTA is not set
- CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- CONFIG_AUTOFS4_FS=y
-+# CONFIG_FUSE_FS is not set
- 
- #
- # CD-ROM/DVD Filesystems
-@@ -722,14 +799,11 @@
- CONFIG_PROC_FS=y
- CONFIG_PROC_KCORE=y
- CONFIG_SYSFS=y
--# CONFIG_DEVFS_FS is not set
--# CONFIG_DEVPTS_FS_XATTR is not set
- CONFIG_TMPFS=y
--CONFIG_TMPFS_XATTR=y
--# CONFIG_TMPFS_SECURITY is not set
- # CONFIG_HUGETLBFS is not set
- # CONFIG_HUGETLB_PAGE is not set
- CONFIG_RAMFS=y
-+# CONFIG_RELAYFS_FS is not set
- 
- #
- # Miscellaneous filesystems
-@@ -754,16 +828,19 @@
- #
- CONFIG_NFS_FS=y
- CONFIG_NFS_V3=y
-+# CONFIG_NFS_V3_ACL is not set
- CONFIG_NFS_V4=y
- CONFIG_NFS_DIRECTIO=y
- CONFIG_NFSD=m
- CONFIG_NFSD_V3=y
-+# CONFIG_NFSD_V3_ACL is not set
- CONFIG_NFSD_V4=y
- CONFIG_NFSD_TCP=y
- CONFIG_ROOT_NFS=y
- CONFIG_LOCKD=y
- CONFIG_LOCKD_V4=y
- CONFIG_EXPORTFS=m
-+CONFIG_NFS_COMMON=y
- CONFIG_SUNRPC=y
- CONFIG_SUNRPC_GSS=y
- CONFIG_RPCSEC_GSS_KRB5=y
-@@ -778,6 +855,7 @@
- # CONFIG_NCP_FS is not set
- # CONFIG_CODA_FS is not set
- # CONFIG_AFS_FS is not set
-+# CONFIG_9P_FS is not set
- 
- #
- # Partition Types
-@@ -838,13 +916,19 @@
- #
- # Kernel hacking
- #
-+# CONFIG_PRINTK_TIME is not set
- CONFIG_DEBUG_KERNEL=y
- CONFIG_MAGIC_SYSRQ=y
-+CONFIG_LOG_BUF_SHIFT=16
-+CONFIG_DETECT_SOFTLOCKUP=y
- # CONFIG_SCHEDSTATS is not set
- # CONFIG_DEBUG_SLAB is not set
- # CONFIG_DEBUG_SPINLOCK is not set
-+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
- # CONFIG_DEBUG_KOBJECT is not set
- # CONFIG_DEBUG_INFO is not set
-+# CONFIG_DEBUG_IOREMAP is not set
-+# CONFIG_DEBUG_FS is not set
- 
- #
- # Security options
-@@ -865,6 +949,7 @@
- CONFIG_CRYPTO_SHA256=m
- CONFIG_CRYPTO_SHA512=m
- CONFIG_CRYPTO_WP512=m
-+CONFIG_CRYPTO_TGR192=m
- CONFIG_CRYPTO_DES=y
- CONFIG_CRYPTO_BLOWFISH=m
- CONFIG_CRYPTO_TWOFISH=m
-@@ -882,9 +967,14 @@
- CONFIG_CRYPTO_TEST=m
- 
- #
-+# Hardware crypto devices
-+#
-+
-+#
- # Library routines
- #
- CONFIG_CRC_CCITT=m
-+# CONFIG_CRC16 is not set
- CONFIG_CRC32=y
- CONFIG_LIBCRC32C=m
- CONFIG_ZLIB_INFLATE=m
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/configs/a500_defconfig CVS2_6_14_PA0/arch/parisc/configs/a500_defconfig
---- LINUS_2_6_14/arch/parisc/configs/a500_defconfig	2005-10-27 21:30:33.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/configs/a500_defconfig	2005-10-21 21:16:47.000000000 -0600
-@@ -1,7 +1,7 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.11-rc4-pa1
--# Wed Feb 16 11:32:49 2005
-+# Linux kernel version: 2.6.14-rc5-pa1
-+# Fri Oct 21 23:04:54 2005
- #
- CONFIG_PARISC=y
- CONFIG_MMU=y
-@@ -10,6 +10,7 @@
- CONFIG_GENERIC_CALIBRATE_DELAY=y
- CONFIG_GENERIC_HARDIRQS=y
- CONFIG_GENERIC_IRQ_PROBE=y
-+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
- 
- #
- # Code maturity level options
-@@ -19,26 +20,32 @@
- CONFIG_BROKEN=y
- CONFIG_BROKEN_ON_SMP=y
- CONFIG_LOCK_KERNEL=y
-+CONFIG_INIT_ENV_ARG_LIMIT=32
- 
- #
- # General setup
- #
- CONFIG_LOCALVERSION=""
-+# CONFIG_LOCALVERSION_AUTO is not set
- CONFIG_SWAP=y
- CONFIG_SYSVIPC=y
- CONFIG_POSIX_MQUEUE=y
- # CONFIG_BSD_PROCESS_ACCT is not set
- CONFIG_SYSCTL=y
- # CONFIG_AUDIT is not set
--CONFIG_LOG_BUF_SHIFT=16
- CONFIG_HOTPLUG=y
- CONFIG_KOBJECT_UEVENT=y
- CONFIG_IKCONFIG=y
- CONFIG_IKCONFIG_PROC=y
-+# CONFIG_CPUSETS is not set
-+CONFIG_INITRAMFS_SOURCE=""
- CONFIG_EMBEDDED=y
- CONFIG_KALLSYMS=y
- CONFIG_KALLSYMS_ALL=y
- # CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_PRINTK=y
-+CONFIG_BUG=y
-+CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
- CONFIG_EPOLL=y
- # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-@@ -48,6 +55,7 @@
- CONFIG_CC_ALIGN_LOOPS=0
- CONFIG_CC_ALIGN_JUMPS=0
- # CONFIG_TINY_SHMEM is not set
-+CONFIG_BASE_SMALL=0
- 
- #
- # Loadable module support
-@@ -74,7 +82,19 @@
- CONFIG_64BIT=y
- CONFIG_SMP=y
- CONFIG_HOTPLUG_CPU=y
-+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
-+# CONFIG_HZ_100 is not set
-+CONFIG_HZ_250=y
-+# CONFIG_HZ_1000 is not set
-+CONFIG_HZ=250
-+CONFIG_SELECT_MEMORY_MODEL=y
-+# CONFIG_FLATMEM_MANUAL is not set
-+CONFIG_DISCONTIGMEM_MANUAL=y
-+# CONFIG_SPARSEMEM_MANUAL is not set
- CONFIG_DISCONTIGMEM=y
-+CONFIG_FLAT_NODE_MEM_MAP=y
-+CONFIG_NEED_MULTIPLE_NODES=y
-+# CONFIG_SPARSEMEM_STATIC is not set
- # CONFIG_PREEMPT is not set
- CONFIG_COMPAT=y
- CONFIG_NR_CPUS=8
-@@ -85,7 +105,7 @@
- # CONFIG_GSC is not set
- CONFIG_PCI=y
- CONFIG_PCI_LEGACY_PROC=y
--CONFIG_PCI_NAMES=y
-+# CONFIG_PCI_DEBUG is not set
- CONFIG_PCI_LBA=y
- CONFIG_IOSAPIC=y
- CONFIG_IOMMU_SBA=y
-@@ -96,6 +116,8 @@
- CONFIG_PCCARD=m
- # CONFIG_PCMCIA_DEBUG is not set
- CONFIG_PCMCIA=m
-+# CONFIG_PCMCIA_LOAD_CIS is not set
-+CONFIG_PCMCIA_IOCTL=y
- CONFIG_CARDBUS=y
- 
- #
-@@ -104,7 +126,6 @@
- CONFIG_YENTA=m
- CONFIG_PD6729=m
- CONFIG_I82092=m
--CONFIG_TCIC=m
- CONFIG_PCCARD_NONSTATIC=m
- 
- #
-@@ -127,6 +148,203 @@
- # CONFIG_BINFMT_MISC is not set
- 
- #
-+# Networking
-+#
-+CONFIG_NET=y
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+CONFIG_UNIX=y
-+CONFIG_XFRM=y
-+CONFIG_XFRM_USER=m
-+CONFIG_NET_KEY=m
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+CONFIG_IP_PNP=y
-+CONFIG_IP_PNP_DHCP=y
-+CONFIG_IP_PNP_BOOTP=y
-+# CONFIG_IP_PNP_RARP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE is not set
-+# CONFIG_ARPD is not set
-+# CONFIG_SYN_COOKIES is not set
-+CONFIG_INET_AH=m
-+CONFIG_INET_ESP=m
-+# CONFIG_INET_IPCOMP is not set
-+CONFIG_INET_TUNNEL=m
-+CONFIG_INET_DIAG=y
-+CONFIG_INET_TCP_DIAG=y
-+# CONFIG_TCP_CONG_ADVANCED is not set
-+CONFIG_TCP_CONG_BIC=y
-+
-+#
-+# IP: Virtual Server Configuration
-+#
-+# CONFIG_IP_VS is not set
-+CONFIG_IPV6=m
-+# CONFIG_IPV6_PRIVACY is not set
-+CONFIG_INET6_AH=m
-+CONFIG_INET6_ESP=m
-+CONFIG_INET6_IPCOMP=m
-+CONFIG_INET6_TUNNEL=m
-+CONFIG_IPV6_TUNNEL=m
-+CONFIG_NETFILTER=y
-+# CONFIG_NETFILTER_DEBUG is not set
-+# CONFIG_NETFILTER_NETLINK is not set
-+
-+#
-+# IP: Netfilter Configuration
-+#
-+CONFIG_IP_NF_CONNTRACK=m
-+# CONFIG_IP_NF_CT_ACCT is not set
-+CONFIG_IP_NF_CONNTRACK_MARK=y
-+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-+CONFIG_IP_NF_CT_PROTO_SCTP=m
-+CONFIG_IP_NF_FTP=m
-+CONFIG_IP_NF_IRC=m
-+# CONFIG_IP_NF_NETBIOS_NS is not set
-+CONFIG_IP_NF_TFTP=m
-+CONFIG_IP_NF_AMANDA=m
-+# CONFIG_IP_NF_PPTP is not set
-+CONFIG_IP_NF_QUEUE=m
-+CONFIG_IP_NF_IPTABLES=m
-+CONFIG_IP_NF_MATCH_LIMIT=m
-+CONFIG_IP_NF_MATCH_IPRANGE=m
-+CONFIG_IP_NF_MATCH_MAC=m
-+CONFIG_IP_NF_MATCH_PKTTYPE=m
-+CONFIG_IP_NF_MATCH_MARK=m
-+CONFIG_IP_NF_MATCH_MULTIPORT=m
-+CONFIG_IP_NF_MATCH_TOS=m
-+CONFIG_IP_NF_MATCH_RECENT=m
-+CONFIG_IP_NF_MATCH_ECN=m
-+CONFIG_IP_NF_MATCH_DSCP=m
-+CONFIG_IP_NF_MATCH_AH_ESP=m
-+CONFIG_IP_NF_MATCH_LENGTH=m
-+CONFIG_IP_NF_MATCH_TTL=m
-+CONFIG_IP_NF_MATCH_TCPMSS=m
-+CONFIG_IP_NF_MATCH_HELPER=m
-+CONFIG_IP_NF_MATCH_STATE=m
-+CONFIG_IP_NF_MATCH_CONNTRACK=m
-+CONFIG_IP_NF_MATCH_OWNER=m
-+# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
-+# CONFIG_IP_NF_MATCH_REALM is not set
-+CONFIG_IP_NF_MATCH_SCTP=m
-+# CONFIG_IP_NF_MATCH_DCCP is not set
-+CONFIG_IP_NF_MATCH_COMMENT=m
-+CONFIG_IP_NF_MATCH_CONNMARK=m
-+CONFIG_IP_NF_MATCH_HASHLIMIT=m
-+# CONFIG_IP_NF_MATCH_STRING is not set
-+CONFIG_IP_NF_FILTER=m
-+CONFIG_IP_NF_TARGET_REJECT=m
-+CONFIG_IP_NF_TARGET_LOG=m
-+CONFIG_IP_NF_TARGET_ULOG=m
-+CONFIG_IP_NF_TARGET_TCPMSS=m
-+# CONFIG_IP_NF_TARGET_NFQUEUE is not set
-+CONFIG_IP_NF_NAT=m
-+CONFIG_IP_NF_NAT_NEEDED=y
-+CONFIG_IP_NF_TARGET_MASQUERADE=m
-+CONFIG_IP_NF_TARGET_REDIRECT=m
-+CONFIG_IP_NF_TARGET_NETMAP=m
-+CONFIG_IP_NF_TARGET_SAME=m
-+CONFIG_IP_NF_NAT_SNMP_BASIC=m
-+CONFIG_IP_NF_NAT_IRC=m
-+CONFIG_IP_NF_NAT_FTP=m
-+CONFIG_IP_NF_NAT_TFTP=m
-+CONFIG_IP_NF_NAT_AMANDA=m
-+CONFIG_IP_NF_MANGLE=m
-+CONFIG_IP_NF_TARGET_TOS=m
-+CONFIG_IP_NF_TARGET_ECN=m
-+CONFIG_IP_NF_TARGET_DSCP=m
-+CONFIG_IP_NF_TARGET_MARK=m
-+CONFIG_IP_NF_TARGET_CLASSIFY=m
-+# CONFIG_IP_NF_TARGET_TTL is not set
-+CONFIG_IP_NF_TARGET_CONNMARK=m
-+CONFIG_IP_NF_TARGET_CLUSTERIP=m
-+CONFIG_IP_NF_RAW=m
-+CONFIG_IP_NF_TARGET_NOTRACK=m
-+CONFIG_IP_NF_ARPTABLES=m
-+CONFIG_IP_NF_ARPFILTER=m
-+CONFIG_IP_NF_ARP_MANGLE=m
-+
-+#
-+# IPv6: Netfilter Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP6_NF_QUEUE is not set
-+CONFIG_IP6_NF_IPTABLES=m
-+# CONFIG_IP6_NF_MATCH_LIMIT is not set
-+CONFIG_IP6_NF_MATCH_MAC=m
-+CONFIG_IP6_NF_MATCH_RT=m
-+CONFIG_IP6_NF_MATCH_OPTS=m
-+CONFIG_IP6_NF_MATCH_FRAG=m
-+CONFIG_IP6_NF_MATCH_HL=m
-+# CONFIG_IP6_NF_MATCH_MULTIPORT is not set
-+# CONFIG_IP6_NF_MATCH_OWNER is not set
-+# CONFIG_IP6_NF_MATCH_MARK is not set
-+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-+# CONFIG_IP6_NF_MATCH_AHESP is not set
-+# CONFIG_IP6_NF_MATCH_LENGTH is not set
-+# CONFIG_IP6_NF_MATCH_EUI64 is not set
-+CONFIG_IP6_NF_FILTER=m
-+CONFIG_IP6_NF_TARGET_LOG=m
-+CONFIG_IP6_NF_TARGET_REJECT=m
-+# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
-+CONFIG_IP6_NF_MANGLE=m
-+# CONFIG_IP6_NF_TARGET_MARK is not set
-+# CONFIG_IP6_NF_TARGET_HL is not set
-+CONFIG_IP6_NF_RAW=m
-+
-+#
-+# DCCP Configuration (EXPERIMENTAL)
-+#
-+CONFIG_IP_DCCP=m
-+CONFIG_INET_DCCP_DIAG=m
-+
-+#
-+# DCCP CCIDs Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_DCCP_CCID3 is not set
-+
-+#
-+# DCCP Kernel Hacking
-+#
-+# CONFIG_IP_DCCP_DEBUG is not set
-+
-+#
-+# SCTP Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_SCTP is not set
-+# CONFIG_ATM is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_DECNET is not set
-+CONFIG_LLC=m
-+CONFIG_LLC2=m
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_SCHED is not set
-+# CONFIG_NET_CLS_ROUTE is not set
-+
-+#
-+# Network testing
-+#
-+CONFIG_NET_PKTGEN=m
-+# CONFIG_HAMRADIO is not set
-+# CONFIG_IRDA is not set
-+# CONFIG_BT is not set
-+# CONFIG_IEEE80211 is not set
-+
-+#
- # Device Drivers
- #
- 
-@@ -139,6 +357,11 @@
- # CONFIG_DEBUG_DRIVER is not set
- 
- #
-+# Connector - unified userspace <-> kernelspace linker
-+#
-+# CONFIG_CONNECTOR is not set
-+
-+#
- # Memory Technology Devices (MTD)
- #
- # CONFIG_MTD is not set
-@@ -169,7 +392,6 @@
- CONFIG_BLK_DEV_RAM_COUNT=16
- CONFIG_BLK_DEV_RAM_SIZE=6144
- CONFIG_BLK_DEV_INITRD=y
--CONFIG_INITRAMFS_SOURCE=""
- # CONFIG_CDROM_PKTCDVD is not set
- 
- #
-@@ -189,6 +411,7 @@
- #
- # SCSI device support
- #
-+CONFIG_RAID_ATTRS=m
- CONFIG_SCSI=y
- CONFIG_SCSI_PROC_FS=y
- 
-@@ -201,6 +424,7 @@
- CONFIG_BLK_DEV_SR=y
- # CONFIG_BLK_DEV_SR_VENDOR is not set
- CONFIG_CHR_DEV_SG=y
-+# CONFIG_CHR_DEV_SCH is not set
- 
- #
- # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-@@ -215,6 +439,7 @@
- CONFIG_SCSI_SPI_ATTRS=y
- CONFIG_SCSI_FC_ATTRS=m
- CONFIG_SCSI_ISCSI_ATTRS=m
-+CONFIG_SCSI_SAS_ATTRS=m
- 
- #
- # SCSI low-level drivers
-@@ -229,14 +454,12 @@
- # CONFIG_SCSI_ADVANSYS is not set
- # CONFIG_MEGARAID_NEWGEN is not set
- # CONFIG_MEGARAID_LEGACY is not set
-+# CONFIG_MEGARAID_SAS is not set
- # CONFIG_SCSI_SATA is not set
--# CONFIG_SCSI_BUSLOGIC is not set
- # CONFIG_SCSI_CPQFCTS is not set
- # CONFIG_SCSI_DMX3191D is not set
--# CONFIG_SCSI_EATA is not set
- # CONFIG_SCSI_EATA_PIO is not set
- # CONFIG_SCSI_FUTURE_DOMAIN is not set
--# CONFIG_SCSI_GDTH is not set
- # CONFIG_SCSI_IPS is not set
- # CONFIG_SCSI_INITIO is not set
- # CONFIG_SCSI_INIA100 is not set
-@@ -246,8 +469,6 @@
- CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
- # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
- # CONFIG_SCSI_IPR is not set
--# CONFIG_SCSI_PCI2000 is not set
--# CONFIG_SCSI_PCI2220I is not set
- # CONFIG_SCSI_QLOGIC_ISP is not set
- CONFIG_SCSI_QLOGIC_FC=m
- # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
-@@ -258,7 +479,9 @@
- # CONFIG_SCSI_QLA22XX is not set
- CONFIG_SCSI_QLA2300=m
- CONFIG_SCSI_QLA2322=m
--CONFIG_SCSI_QLA6312=m
-+# CONFIG_SCSI_QLA6312 is not set
-+# CONFIG_SCSI_QLA24XX is not set
-+# CONFIG_SCSI_LPFC is not set
- # CONFIG_SCSI_DC395x is not set
- # CONFIG_SCSI_DC390T is not set
- CONFIG_SCSI_DEBUG=m
-@@ -288,8 +511,11 @@
- #
- # Fusion MPT device support
- #
--CONFIG_FUSION=m
--CONFIG_FUSION_MAX_SGE=40
-+CONFIG_FUSION=y
-+CONFIG_FUSION_SPI=m
-+CONFIG_FUSION_FC=m
-+# CONFIG_FUSION_SAS is not set
-+CONFIG_FUSION_MAX_SGE=128
- CONFIG_FUSION_CTL=m
- 
- #
-@@ -303,153 +529,13 @@
- # CONFIG_I2O is not set
- 
- #
--# Networking support
--#
--CONFIG_NET=y
--
--#
--# Networking options
-+# Network device support
- #
--CONFIG_PACKET=y
--CONFIG_PACKET_MMAP=y
--CONFIG_NETLINK_DEV=y
--CONFIG_UNIX=y
--CONFIG_NET_KEY=m
--CONFIG_INET=y
--CONFIG_IP_MULTICAST=y
--# CONFIG_IP_ADVANCED_ROUTER is not set
--CONFIG_IP_PNP=y
--CONFIG_IP_PNP_DHCP=y
--CONFIG_IP_PNP_BOOTP=y
--# CONFIG_IP_PNP_RARP is not set
--# CONFIG_NET_IPIP is not set
--# CONFIG_NET_IPGRE is not set
--# CONFIG_IP_MROUTE is not set
--# CONFIG_ARPD is not set
--# CONFIG_SYN_COOKIES is not set
--CONFIG_INET_AH=m
--CONFIG_INET_ESP=m
--# CONFIG_INET_IPCOMP is not set
--CONFIG_INET_TUNNEL=m
--CONFIG_IP_TCPDIAG=y
--# CONFIG_IP_TCPDIAG_IPV6 is not set
--
--#
--# IP: Virtual Server Configuration
--#
--# CONFIG_IP_VS is not set
--# CONFIG_IPV6 is not set
--CONFIG_NETFILTER=y
--# CONFIG_NETFILTER_DEBUG is not set
--
--#
--# IP: Netfilter Configuration
--#
--CONFIG_IP_NF_CONNTRACK=m
--# CONFIG_IP_NF_CT_ACCT is not set
--CONFIG_IP_NF_CONNTRACK_MARK=y
--CONFIG_IP_NF_CT_PROTO_SCTP=m
--CONFIG_IP_NF_FTP=m
--CONFIG_IP_NF_IRC=m
--CONFIG_IP_NF_TFTP=m
--CONFIG_IP_NF_AMANDA=m
--CONFIG_IP_NF_QUEUE=m
--CONFIG_IP_NF_IPTABLES=m
--CONFIG_IP_NF_MATCH_LIMIT=m
--CONFIG_IP_NF_MATCH_IPRANGE=m
--CONFIG_IP_NF_MATCH_MAC=m
--CONFIG_IP_NF_MATCH_PKTTYPE=m
--CONFIG_IP_NF_MATCH_MARK=m
--CONFIG_IP_NF_MATCH_MULTIPORT=m
--CONFIG_IP_NF_MATCH_TOS=m
--CONFIG_IP_NF_MATCH_RECENT=m
--CONFIG_IP_NF_MATCH_ECN=m
--CONFIG_IP_NF_MATCH_DSCP=m
--CONFIG_IP_NF_MATCH_AH_ESP=m
--CONFIG_IP_NF_MATCH_LENGTH=m
--CONFIG_IP_NF_MATCH_TTL=m
--CONFIG_IP_NF_MATCH_TCPMSS=m
--CONFIG_IP_NF_MATCH_HELPER=m
--CONFIG_IP_NF_MATCH_STATE=m
--CONFIG_IP_NF_MATCH_CONNTRACK=m
--CONFIG_IP_NF_MATCH_OWNER=m
--# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
--# CONFIG_IP_NF_MATCH_REALM is not set
--CONFIG_IP_NF_MATCH_SCTP=m
--CONFIG_IP_NF_MATCH_COMMENT=m
--CONFIG_IP_NF_MATCH_CONNMARK=m
--CONFIG_IP_NF_MATCH_HASHLIMIT=m
--CONFIG_IP_NF_FILTER=m
--CONFIG_IP_NF_TARGET_REJECT=m
--CONFIG_IP_NF_TARGET_LOG=m
--CONFIG_IP_NF_TARGET_ULOG=m
--CONFIG_IP_NF_TARGET_TCPMSS=m
--CONFIG_IP_NF_NAT=m
--CONFIG_IP_NF_NAT_NEEDED=y
--CONFIG_IP_NF_TARGET_MASQUERADE=m
--CONFIG_IP_NF_TARGET_REDIRECT=m
--CONFIG_IP_NF_TARGET_NETMAP=m
--CONFIG_IP_NF_TARGET_SAME=m
--CONFIG_IP_NF_NAT_SNMP_BASIC=m
--CONFIG_IP_NF_NAT_IRC=m
--CONFIG_IP_NF_NAT_FTP=m
--CONFIG_IP_NF_NAT_TFTP=m
--CONFIG_IP_NF_NAT_AMANDA=m
--CONFIG_IP_NF_MANGLE=m
--CONFIG_IP_NF_TARGET_TOS=m
--CONFIG_IP_NF_TARGET_ECN=m
--CONFIG_IP_NF_TARGET_DSCP=m
--CONFIG_IP_NF_TARGET_MARK=m
--CONFIG_IP_NF_TARGET_CLASSIFY=m
--CONFIG_IP_NF_TARGET_CONNMARK=m
--CONFIG_IP_NF_TARGET_CLUSTERIP=m
--CONFIG_IP_NF_RAW=m
--CONFIG_IP_NF_TARGET_NOTRACK=m
--CONFIG_IP_NF_ARPTABLES=m
--CONFIG_IP_NF_ARPFILTER=m
--CONFIG_IP_NF_ARP_MANGLE=m
--CONFIG_XFRM=y
--CONFIG_XFRM_USER=m
--
--#
--# SCTP Configuration (EXPERIMENTAL)
--#
--# CONFIG_IP_SCTP is not set
--# CONFIG_ATM is not set
--# CONFIG_BRIDGE is not set
--# CONFIG_VLAN_8021Q is not set
--# CONFIG_DECNET is not set
--CONFIG_LLC=m
--CONFIG_LLC2=m
--# CONFIG_IPX is not set
--# CONFIG_ATALK is not set
--# CONFIG_X25 is not set
--# CONFIG_LAPB is not set
--# CONFIG_NET_DIVERT is not set
--# CONFIG_ECONET is not set
--# CONFIG_WAN_ROUTER is not set
--
--#
--# QoS and/or fair queueing
--#
--# CONFIG_NET_SCHED is not set
--# CONFIG_NET_CLS_ROUTE is not set
--
--#
--# Network testing
--#
--CONFIG_NET_PKTGEN=m
--# CONFIG_NETPOLL is not set
--# CONFIG_NET_POLL_CONTROLLER is not set
--# CONFIG_HAMRADIO is not set
--# CONFIG_IRDA is not set
--# CONFIG_BT is not set
- CONFIG_NETDEVICES=y
- CONFIG_DUMMY=m
- CONFIG_BONDING=m
- # CONFIG_EQUALIZER is not set
- CONFIG_TUN=m
--# CONFIG_ETHERTAP is not set
- 
- #
- # ARCnet devices
-@@ -457,12 +543,18 @@
- # CONFIG_ARCNET is not set
- 
- #
-+# PHY device support
-+#
-+# CONFIG_PHYLIB is not set
-+
-+#
- # Ethernet (10 or 100Mbit)
- #
- CONFIG_NET_ETHERNET=y
- CONFIG_MII=m
- # CONFIG_HAPPYMEAL is not set
- # CONFIG_SUNGEM is not set
-+# CONFIG_CASSINI is not set
- CONFIG_NET_VENDOR_3COM=y
- CONFIG_VORTEX=m
- CONFIG_TYPHOON=m
-@@ -479,6 +571,7 @@
- # CONFIG_DE4X5 is not set
- # CONFIG_WINBOND_840 is not set
- # CONFIG_DM9102 is not set
-+# CONFIG_ULI526X is not set
- CONFIG_PCMCIA_XIRCOM=m
- # CONFIG_PCMCIA_XIRTULIP is not set
- CONFIG_HP100=m
-@@ -489,48 +582,43 @@
- # CONFIG_B44 is not set
- # CONFIG_FORCEDETH is not set
- # CONFIG_DGRS is not set
--CONFIG_EEPRO100=m
-+# CONFIG_EEPRO100 is not set
- CONFIG_E100=m
--CONFIG_E100_NAPI=y
- # CONFIG_FEALNX is not set
--CONFIG_NATSEMI=m
-+# CONFIG_NATSEMI is not set
- # CONFIG_NE2K_PCI is not set
- # CONFIG_8139CP is not set
--CONFIG_8139TOO=m
--# CONFIG_8139TOO_PIO is not set
--# CONFIG_8139TOO_TUNE_TWISTER is not set
--# CONFIG_8139TOO_8129 is not set
--# CONFIG_8139_OLD_RX_RESET is not set
-+# CONFIG_8139TOO is not set
- # CONFIG_SIS900 is not set
--CONFIG_EPIC100=m
-+# CONFIG_EPIC100 is not set
- # CONFIG_SUNDANCE is not set
--CONFIG_VIA_RHINE=m
--CONFIG_VIA_RHINE_MMIO=y
-+# CONFIG_VIA_RHINE is not set
- 
- #
- # Ethernet (1000 Mbit)
- #
- CONFIG_ACENIC=m
- CONFIG_ACENIC_OMIT_TIGON_I=y
--CONFIG_DL2K=m
-+# CONFIG_DL2K is not set
- CONFIG_E1000=m
- CONFIG_E1000_NAPI=y
- # CONFIG_NS83820 is not set
- # CONFIG_HAMACHI is not set
- # CONFIG_YELLOWFIN is not set
- # CONFIG_R8169 is not set
-+# CONFIG_SIS190 is not set
-+# CONFIG_SKGE is not set
- # CONFIG_SK98LIN is not set
- # CONFIG_VIA_VELOCITY is not set
- CONFIG_TIGON3=m
-+# CONFIG_BNX2 is not set
- 
- #
- # Ethernet (10000 Mbit)
- #
--CONFIG_IXGB=m
--CONFIG_IXGB_NAPI=y
--CONFIG_S2IO=m
--CONFIG_S2IO_NAPI=y
--# CONFIG_2BUFF_MODE is not set
-+# CONFIG_CHELSIO_T1 is not set
-+# CONFIG_IXGB is not set
-+# CONFIG_S2IO is not set
- 
- #
- # Token Ring devices
-@@ -560,6 +648,7 @@
- CONFIG_HERMES=m
- CONFIG_PLX_HERMES=m
- CONFIG_TMD_HERMES=m
-+# CONFIG_NORTEL_HERMES is not set
- CONFIG_PCI_HERMES=m
- # CONFIG_ATMEL is not set
- 
-@@ -567,6 +656,7 @@
- # Wireless 802.11b Pcmcia/Cardbus cards support
- #
- CONFIG_PCMCIA_HERMES=m
-+# CONFIG_PCMCIA_SPECTRUM is not set
- CONFIG_AIRO_CS=m
- CONFIG_PCMCIA_WL3501=m
- 
-@@ -574,6 +664,7 @@
- # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
- #
- # CONFIG_PRISM54 is not set
-+# CONFIG_HOSTAP is not set
- CONFIG_NET_WIRELESS=y
- 
- #
-@@ -607,6 +698,8 @@
- # CONFIG_NET_FC is not set
- # CONFIG_SHAPER is not set
- # CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
- 
- #
- # ISDN subsystem
-@@ -633,13 +726,6 @@
- # CONFIG_INPUT_EVBUG is not set
- 
- #
--# Input I/O drivers
--#
--# CONFIG_GAMEPORT is not set
--CONFIG_SOUND_GAMEPORT=y
--# CONFIG_SERIO is not set
--
--#
- # Input Device Drivers
- #
- # CONFIG_INPUT_KEYBOARD is not set
-@@ -649,6 +735,12 @@
- # CONFIG_INPUT_MISC is not set
- 
- #
-+# Hardware I/O ports
-+#
-+# CONFIG_SERIO is not set
-+# CONFIG_GAMEPORT is not set
-+
-+#
- # Character devices
- #
- CONFIG_VT=y
-@@ -667,7 +759,6 @@
- CONFIG_SERIAL_8250_MANY_PORTS=y
- CONFIG_SERIAL_8250_SHARE_IRQ=y
- # CONFIG_SERIAL_8250_DETECT_IRQ is not set
--# CONFIG_SERIAL_8250_MULTIPORT is not set
- # CONFIG_SERIAL_8250_RSA is not set
- 
- #
-@@ -677,6 +768,7 @@
- CONFIG_PDC_CONSOLE=y
- CONFIG_SERIAL_CORE=y
- CONFIG_SERIAL_CORE_CONSOLE=y
-+# CONFIG_SERIAL_JSM is not set
- CONFIG_UNIX98_PTYS=y
- # CONFIG_LEGACY_PTYS is not set
- 
-@@ -708,6 +800,11 @@
- CONFIG_MAX_RAW_DEVS=256
- 
- #
-+# TPM devices
-+#
-+# CONFIG_TCG_TPM is not set
-+
-+#
- # I2C support
- #
- # CONFIG_I2C is not set
-@@ -718,10 +815,20 @@
- # CONFIG_W1 is not set
- 
- #
-+# Hardware Monitoring support
-+#
-+# CONFIG_HWMON is not set
-+# CONFIG_HWMON_VID is not set
-+
-+#
- # Misc devices
- #
- 
- #
-+# Multimedia Capabilities Port drivers
-+#
-+
-+#
- # Multimedia devices
- #
- # CONFIG_VIDEO_DEV is not set
-@@ -742,6 +849,7 @@
- CONFIG_DUMMY_CONSOLE=y
- CONFIG_DUMMY_CONSOLE_COLUMNS=160
- CONFIG_DUMMY_CONSOLE_ROWS=64
-+# CONFIG_STI_CONSOLE is not set
- 
- #
- # Sound
-@@ -751,13 +859,9 @@
- #
- # USB support
- #
--# CONFIG_USB is not set
- CONFIG_USB_ARCH_HAS_HCD=y
- CONFIG_USB_ARCH_HAS_OHCI=y
--
--#
--# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
--#
-+# CONFIG_USB is not set
- 
- #
- # USB Gadget Support
-@@ -772,17 +876,18 @@
- #
- # InfiniBand support
- #
--CONFIG_INFINIBAND=m
--CONFIG_INFINIBAND_MTHCA=m
--# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
--CONFIG_INFINIBAND_IPOIB=m
--# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
-+# CONFIG_INFINIBAND is not set
-+
-+#
-+# SN Devices
-+#
- 
- #
- # File systems
- #
- CONFIG_EXT2_FS=y
- # CONFIG_EXT2_FS_XATTR is not set
-+# CONFIG_EXT2_FS_XIP is not set
- CONFIG_EXT3_FS=y
- # CONFIG_EXT3_FS_XATTR is not set
- CONFIG_JBD=y
-@@ -794,22 +899,20 @@
- # CONFIG_JFS_DEBUG is not set
- # CONFIG_JFS_STATISTICS is not set
- CONFIG_FS_POSIX_ACL=y
--
--#
--# XFS support
--#
- CONFIG_XFS_FS=m
- CONFIG_XFS_EXPORT=y
--# CONFIG_XFS_RT is not set
- # CONFIG_XFS_QUOTA is not set
- # CONFIG_XFS_SECURITY is not set
- # CONFIG_XFS_POSIX_ACL is not set
-+# CONFIG_XFS_RT is not set
- # CONFIG_MINIX_FS is not set
- # CONFIG_ROMFS_FS is not set
-+CONFIG_INOTIFY=y
- # CONFIG_QUOTA is not set
- CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- CONFIG_AUTOFS4_FS=y
-+# CONFIG_FUSE_FS is not set
- 
- #
- # CD-ROM/DVD Filesystems
-@@ -836,13 +939,11 @@
- CONFIG_PROC_FS=y
- CONFIG_PROC_KCORE=y
- CONFIG_SYSFS=y
--# CONFIG_DEVFS_FS is not set
--# CONFIG_DEVPTS_FS_XATTR is not set
- CONFIG_TMPFS=y
--# CONFIG_TMPFS_XATTR is not set
- # CONFIG_HUGETLBFS is not set
- # CONFIG_HUGETLB_PAGE is not set
- CONFIG_RAMFS=y
-+# CONFIG_RELAYFS_FS is not set
- 
- #
- # Miscellaneous filesystems
-@@ -867,15 +968,18 @@
- #
- CONFIG_NFS_FS=m
- CONFIG_NFS_V3=y
-+# CONFIG_NFS_V3_ACL is not set
- CONFIG_NFS_V4=y
- CONFIG_NFS_DIRECTIO=y
- CONFIG_NFSD=m
- CONFIG_NFSD_V3=y
-+# CONFIG_NFSD_V3_ACL is not set
- CONFIG_NFSD_V4=y
- CONFIG_NFSD_TCP=y
- CONFIG_LOCKD=m
- CONFIG_LOCKD_V4=y
- CONFIG_EXPORTFS=m
-+CONFIG_NFS_COMMON=y
- CONFIG_SUNRPC=m
- CONFIG_SUNRPC_GSS=m
- CONFIG_RPCSEC_GSS_KRB5=m
-@@ -890,6 +994,7 @@
- # CONFIG_NCP_FS is not set
- # CONFIG_CODA_FS is not set
- # CONFIG_AFS_FS is not set
-+# CONFIG_9P_FS is not set
- 
- #
- # Partition Types
-@@ -906,15 +1011,15 @@
- # CONFIG_NLS_CODEPAGE_737 is not set
- # CONFIG_NLS_CODEPAGE_775 is not set
- CONFIG_NLS_CODEPAGE_850=m
--CONFIG_NLS_CODEPAGE_852=m
-+# CONFIG_NLS_CODEPAGE_852 is not set
- # CONFIG_NLS_CODEPAGE_855 is not set
- # CONFIG_NLS_CODEPAGE_857 is not set
- # CONFIG_NLS_CODEPAGE_860 is not set
- # CONFIG_NLS_CODEPAGE_861 is not set
- # CONFIG_NLS_CODEPAGE_862 is not set
--CONFIG_NLS_CODEPAGE_863=m
-+# CONFIG_NLS_CODEPAGE_863 is not set
- # CONFIG_NLS_CODEPAGE_864 is not set
--CONFIG_NLS_CODEPAGE_865=m
-+# CONFIG_NLS_CODEPAGE_865 is not set
- # CONFIG_NLS_CODEPAGE_866 is not set
- # CONFIG_NLS_CODEPAGE_869 is not set
- # CONFIG_NLS_CODEPAGE_936 is not set
-@@ -926,10 +1031,10 @@
- # CONFIG_NLS_CODEPAGE_1250 is not set
- # CONFIG_NLS_CODEPAGE_1251 is not set
- # CONFIG_NLS_ASCII is not set
--CONFIG_NLS_ISO8859_1=m
--CONFIG_NLS_ISO8859_2=m
--CONFIG_NLS_ISO8859_3=m
--CONFIG_NLS_ISO8859_4=m
-+# CONFIG_NLS_ISO8859_1 is not set
-+# CONFIG_NLS_ISO8859_2 is not set
-+# CONFIG_NLS_ISO8859_3 is not set
-+# CONFIG_NLS_ISO8859_4 is not set
- # CONFIG_NLS_ISO8859_5 is not set
- # CONFIG_NLS_ISO8859_6 is not set
- # CONFIG_NLS_ISO8859_7 is not set
-@@ -950,11 +1055,15 @@
- #
- # Kernel hacking
- #
-+# CONFIG_PRINTK_TIME is not set
- CONFIG_DEBUG_KERNEL=y
- CONFIG_MAGIC_SYSRQ=y
-+CONFIG_LOG_BUF_SHIFT=16
-+CONFIG_DETECT_SOFTLOCKUP=y
- # CONFIG_SCHEDSTATS is not set
- # CONFIG_DEBUG_SLAB is not set
- # CONFIG_DEBUG_SPINLOCK is not set
-+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
- # CONFIG_DEBUG_KOBJECT is not set
- # CONFIG_DEBUG_INFO is not set
- # CONFIG_DEBUG_IOREMAP is not set
-@@ -974,25 +1083,26 @@
- CONFIG_CRYPTO=y
- CONFIG_CRYPTO_HMAC=y
- CONFIG_CRYPTO_NULL=m
--CONFIG_CRYPTO_MD4=m
--CONFIG_CRYPTO_MD5=m
-+# CONFIG_CRYPTO_MD4 is not set
-+CONFIG_CRYPTO_MD5=y
- CONFIG_CRYPTO_SHA1=m
--CONFIG_CRYPTO_SHA256=m
--CONFIG_CRYPTO_SHA512=m
--CONFIG_CRYPTO_WP512=m
-+# CONFIG_CRYPTO_SHA256 is not set
-+# CONFIG_CRYPTO_SHA512 is not set
-+# CONFIG_CRYPTO_WP512 is not set
-+# CONFIG_CRYPTO_TGR192 is not set
- CONFIG_CRYPTO_DES=m
- CONFIG_CRYPTO_BLOWFISH=m
--CONFIG_CRYPTO_TWOFISH=m
--CONFIG_CRYPTO_SERPENT=m
--CONFIG_CRYPTO_AES=m
--CONFIG_CRYPTO_CAST5=m
--CONFIG_CRYPTO_CAST6=m
--CONFIG_CRYPTO_TEA=m
--CONFIG_CRYPTO_ARC4=m
--CONFIG_CRYPTO_KHAZAD=m
--CONFIG_CRYPTO_ANUBIS=m
-+# CONFIG_CRYPTO_TWOFISH is not set
-+# CONFIG_CRYPTO_SERPENT is not set
-+# CONFIG_CRYPTO_AES is not set
-+# CONFIG_CRYPTO_CAST5 is not set
-+# CONFIG_CRYPTO_CAST6 is not set
-+# CONFIG_CRYPTO_TEA is not set
-+# CONFIG_CRYPTO_ARC4 is not set
-+# CONFIG_CRYPTO_KHAZAD is not set
-+# CONFIG_CRYPTO_ANUBIS is not set
- CONFIG_CRYPTO_DEFLATE=m
--CONFIG_CRYPTO_MICHAEL_MIC=m
-+# CONFIG_CRYPTO_MICHAEL_MIC is not set
- CONFIG_CRYPTO_CRC32C=m
- CONFIG_CRYPTO_TEST=m
- 
-@@ -1004,6 +1114,7 @@
- # Library routines
- #
- CONFIG_CRC_CCITT=m
-+# CONFIG_CRC16 is not set
- CONFIG_CRC32=y
- CONFIG_LIBCRC32C=m
- CONFIG_ZLIB_INFLATE=m
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/configs/b180_defconfig CVS2_6_14_PA0/arch/parisc/configs/b180_defconfig
---- LINUS_2_6_14/arch/parisc/configs/b180_defconfig	2005-10-27 21:30:33.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/configs/b180_defconfig	2005-10-21 21:16:47.000000000 -0600
-@@ -1,12 +1,15 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.10-pa5
--# Wed Jan  5 13:35:54 2005
-+# Linux kernel version: 2.6.14-rc5-pa1
-+# Fri Oct 21 23:06:10 2005
- #
- CONFIG_PARISC=y
- CONFIG_MMU=y
- CONFIG_STACK_GROWSUP=y
- CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+CONFIG_GENERIC_CALIBRATE_DELAY=y
-+CONFIG_GENERIC_HARDIRQS=y
-+CONFIG_GENERIC_IRQ_PROBE=y
- 
- #
- # Code maturity level options
-@@ -14,33 +17,39 @@
- # CONFIG_EXPERIMENTAL is not set
- CONFIG_CLEAN_COMPILE=y
- CONFIG_BROKEN_ON_SMP=y
-+CONFIG_INIT_ENV_ARG_LIMIT=32
- 
- #
- # General setup
- #
- CONFIG_LOCALVERSION=""
-+# CONFIG_LOCALVERSION_AUTO is not set
- CONFIG_SWAP=y
- CONFIG_SYSVIPC=y
- # CONFIG_BSD_PROCESS_ACCT is not set
- CONFIG_SYSCTL=y
- # CONFIG_AUDIT is not set
--CONFIG_LOG_BUF_SHIFT=16
- # CONFIG_HOTPLUG is not set
- CONFIG_KOBJECT_UEVENT=y
--# CONFIG_IKCONFIG is not set
-+CONFIG_IKCONFIG=y
-+CONFIG_IKCONFIG_PROC=y
-+CONFIG_INITRAMFS_SOURCE=""
- # CONFIG_EMBEDDED is not set
- CONFIG_KALLSYMS=y
- # CONFIG_KALLSYMS_ALL is not set
- # CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_PRINTK=y
-+CONFIG_BUG=y
-+CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
- CONFIG_EPOLL=y
--# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
- CONFIG_SHMEM=y
- CONFIG_CC_ALIGN_FUNCTIONS=0
- CONFIG_CC_ALIGN_LABELS=0
- CONFIG_CC_ALIGN_LOOPS=0
- CONFIG_CC_ALIGN_JUMPS=0
- # CONFIG_TINY_SHMEM is not set
-+CONFIG_BASE_SMALL=0
- 
- #
- # Loadable module support
-@@ -60,8 +69,14 @@
- # CONFIG_PA7300LC is not set
- # CONFIG_PA8X00 is not set
- CONFIG_PA11=y
--# CONFIG_64BIT is not set
- # CONFIG_SMP is not set
-+# CONFIG_HZ_100 is not set
-+CONFIG_HZ_250=y
-+# CONFIG_HZ_1000 is not set
-+CONFIG_HZ=250
-+CONFIG_FLATMEM=y
-+CONFIG_FLAT_NODE_MEM_MAP=y
-+# CONFIG_SPARSEMEM_STATIC is not set
- # CONFIG_PREEMPT is not set
- # CONFIG_HPUX is not set
- 
-@@ -78,11 +93,25 @@
- CONFIG_ISA=y
- CONFIG_PCI=y
- CONFIG_PCI_LEGACY_PROC=y
--CONFIG_PCI_NAMES=y
-+# CONFIG_PCI_DEBUG is not set
- CONFIG_GSC_DINO=y
- # CONFIG_PCI_LBA is not set
-+
-+#
-+# PCCARD (PCMCIA/CardBus) support
-+#
-+# CONFIG_PCCARD is not set
-+
-+#
-+# PCI Hotplug Support
-+#
-+
-+#
-+# PA-RISC specific drivers
-+#
- CONFIG_CHASSIS_LCD_LED=y
- # CONFIG_PDC_CHASSIS is not set
-+CONFIG_PDC_STABLE=y
- 
- #
- # Executable file formats
-@@ -91,6 +120,64 @@
- # CONFIG_BINFMT_MISC is not set
- 
- #
-+# Networking
-+#
-+CONFIG_NET=y
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+CONFIG_UNIX=y
-+# CONFIG_NET_KEY is not set
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+CONFIG_IP_PNP=y
-+# CONFIG_IP_PNP_DHCP is not set
-+CONFIG_IP_PNP_BOOTP=y
-+# CONFIG_IP_PNP_RARP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE is not set
-+# CONFIG_SYN_COOKIES is not set
-+# CONFIG_INET_AH is not set
-+# CONFIG_INET_ESP is not set
-+# CONFIG_INET_IPCOMP is not set
-+# CONFIG_INET_TUNNEL is not set
-+CONFIG_INET_DIAG=y
-+CONFIG_INET_TCP_DIAG=y
-+# CONFIG_TCP_CONG_ADVANCED is not set
-+CONFIG_TCP_CONG_BIC=y
-+CONFIG_IPV6=y
-+# CONFIG_IPV6_PRIVACY is not set
-+# CONFIG_INET6_AH is not set
-+# CONFIG_INET6_ESP is not set
-+# CONFIG_INET6_IPCOMP is not set
-+# CONFIG_INET6_TUNNEL is not set
-+# CONFIG_IPV6_TUNNEL is not set
-+# CONFIG_NETFILTER is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_LLC2 is not set
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_NET_SCHED is not set
-+# CONFIG_NET_CLS_ROUTE is not set
-+
-+#
-+# Network testing
-+#
-+# CONFIG_NET_PKTGEN is not set
-+# CONFIG_HAMRADIO is not set
-+# CONFIG_IRDA is not set
-+# CONFIG_BT is not set
-+# CONFIG_IEEE80211 is not set
-+
-+#
- # Device Drivers
- #
- 
-@@ -99,9 +186,15 @@
- #
- CONFIG_STANDALONE=y
- # CONFIG_PREVENT_FIRMWARE_BUILD is not set
-+# CONFIG_FW_LOADER is not set
- # CONFIG_DEBUG_DRIVER is not set
- 
- #
-+# Connector - unified userspace <-> kernelspace linker
-+#
-+# CONFIG_CONNECTOR is not set
-+
-+#
- # Memory Technology Devices (MTD)
- #
- # CONFIG_MTD is not set
-@@ -111,10 +204,8 @@
- #
- CONFIG_PARPORT=y
- CONFIG_PARPORT_PC=y
--CONFIG_PARPORT_PC_CML1=y
- # CONFIG_PARPORT_SERIAL is not set
- CONFIG_PARPORT_GSC=y
--# CONFIG_PARPORT_OTHER is not set
- # CONFIG_PARPORT_1284 is not set
- 
- #
-@@ -125,19 +216,17 @@
- #
- # Block devices
- #
--# CONFIG_BLK_DEV_FD is not set
--# CONFIG_BLK_DEV_XD is not set
- # CONFIG_PARIDE is not set
- # CONFIG_BLK_CPQ_DA is not set
- # CONFIG_BLK_CPQ_CISS_DA is not set
- # CONFIG_BLK_DEV_DAC960 is not set
-+# CONFIG_BLK_DEV_COW_COMMON is not set
- CONFIG_BLK_DEV_LOOP=y
- CONFIG_BLK_DEV_CRYPTOLOOP=y
- # CONFIG_BLK_DEV_NBD is not set
- # CONFIG_BLK_DEV_SX8 is not set
- # CONFIG_BLK_DEV_RAM is not set
- CONFIG_BLK_DEV_RAM_COUNT=16
--CONFIG_INITRAMFS_SOURCE=""
- CONFIG_CDROM_PKTCDVD=m
- CONFIG_CDROM_PKTCDVD_BUFFERS=8
- # CONFIG_CDROM_PKTCDVD_WCACHE is not set
-@@ -149,6 +238,7 @@
- CONFIG_IOSCHED_AS=y
- CONFIG_IOSCHED_DEADLINE=y
- CONFIG_IOSCHED_CFQ=y
-+CONFIG_ATA_OVER_ETH=y
- 
- #
- # ATA/ATAPI/MFM/RLL support
-@@ -158,6 +248,7 @@
- #
- # SCSI device support
- #
-+# CONFIG_RAID_ATTRS is not set
- CONFIG_SCSI=y
- CONFIG_SCSI_PROC_FS=y
- 
-@@ -170,6 +261,7 @@
- CONFIG_BLK_DEV_SR=y
- # CONFIG_BLK_DEV_SR_VENDOR is not set
- CONFIG_CHR_DEV_SG=y
-+# CONFIG_CHR_DEV_SCH is not set
- 
- #
- # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-@@ -183,16 +275,16 @@
- #
- CONFIG_SCSI_SPI_ATTRS=y
- # CONFIG_SCSI_FC_ATTRS is not set
-+# CONFIG_SCSI_ISCSI_ATTRS is not set
-+# CONFIG_SCSI_SAS_ATTRS is not set
- 
- #
- # SCSI low-level drivers
- #
- # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
- # CONFIG_SCSI_3W_9XXX is not set
--# CONFIG_SCSI_7000FASST is not set
- # CONFIG_SCSI_ACARD is not set
- # CONFIG_SCSI_AHA152X is not set
--# CONFIG_SCSI_AHA1542 is not set
- # CONFIG_SCSI_AHA1740 is not set
- # CONFIG_SCSI_AACRAID is not set
- # CONFIG_SCSI_AIC7XXX is not set
-@@ -202,14 +294,11 @@
- # CONFIG_SCSI_IN2000 is not set
- # CONFIG_MEGARAID_NEWGEN is not set
- # CONFIG_MEGARAID_LEGACY is not set
-+# CONFIG_MEGARAID_SAS is not set
- # CONFIG_SCSI_SATA is not set
--# CONFIG_SCSI_BUSLOGIC is not set
- # CONFIG_SCSI_DMX3191D is not set
- # CONFIG_SCSI_DTC3280 is not set
--# CONFIG_SCSI_EATA is not set
--# CONFIG_SCSI_EATA_PIO is not set
- # CONFIG_SCSI_FUTURE_DOMAIN is not set
--# CONFIG_SCSI_GDTH is not set
- # CONFIG_SCSI_GENERIC_NCR5380 is not set
- # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
- # CONFIG_SCSI_IPS is not set
-@@ -219,7 +308,6 @@
- # CONFIG_SCSI_IMM is not set
- # CONFIG_SCSI_NCR53C406A is not set
- CONFIG_SCSI_LASI700=y
--CONFIG_53C700_MEM_MAPPED=y
- CONFIG_53C700_LE_ON_BE=y
- CONFIG_SCSI_SYM53C8XX_2=y
- CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
-@@ -231,7 +319,6 @@
- # CONFIG_SCSI_PAS16 is not set
- # CONFIG_SCSI_PSI240I is not set
- # CONFIG_SCSI_QLOGIC_FAS is not set
--# CONFIG_SCSI_QLOGIC_ISP is not set
- # CONFIG_SCSI_QLOGIC_FC is not set
- # CONFIG_SCSI_QLOGIC_1280 is not set
- CONFIG_SCSI_QLA2XXX=y
-@@ -240,12 +327,12 @@
- # CONFIG_SCSI_QLA2300 is not set
- # CONFIG_SCSI_QLA2322 is not set
- # CONFIG_SCSI_QLA6312 is not set
--# CONFIG_SCSI_QLA6322 is not set
-+# CONFIG_SCSI_QLA24XX is not set
-+# CONFIG_SCSI_LPFC is not set
- # CONFIG_SCSI_SIM710 is not set
- # CONFIG_SCSI_SYM53C416 is not set
- # CONFIG_SCSI_DC390T is not set
- # CONFIG_SCSI_T128 is not set
--# CONFIG_SCSI_U14_34F is not set
- # CONFIG_SCSI_NSP32 is not set
- # CONFIG_SCSI_DEBUG is not set
- 
-@@ -263,6 +350,7 @@
- CONFIG_MD_RAID0=y
- CONFIG_MD_RAID1=y
- CONFIG_MD_RAID5=y
-+CONFIG_MD_RAID6=y
- # CONFIG_MD_MULTIPATH is not set
- # CONFIG_MD_FAULTY is not set
- # CONFIG_BLK_DEV_DM is not set
-@@ -271,6 +359,9 @@
- # Fusion MPT device support
- #
- # CONFIG_FUSION is not set
-+# CONFIG_FUSION_SPI is not set
-+# CONFIG_FUSION_FC is not set
-+# CONFIG_FUSION_SAS is not set
- 
- #
- # IEEE 1394 (FireWire) support
-@@ -283,58 +374,8 @@
- # CONFIG_I2O is not set
- 
- #
--# Networking support
--#
--CONFIG_NET=y
--
--#
--# Networking options
--#
--CONFIG_PACKET=y
--CONFIG_PACKET_MMAP=y
--CONFIG_NETLINK_DEV=y
--CONFIG_UNIX=y
--# CONFIG_NET_KEY is not set
--CONFIG_INET=y
--CONFIG_IP_MULTICAST=y
--# CONFIG_IP_ADVANCED_ROUTER is not set
--CONFIG_IP_PNP=y
--# CONFIG_IP_PNP_DHCP is not set
--CONFIG_IP_PNP_BOOTP=y
--# CONFIG_IP_PNP_RARP is not set
--# CONFIG_NET_IPIP is not set
--# CONFIG_NET_IPGRE is not set
--# CONFIG_IP_MROUTE is not set
--# CONFIG_SYN_COOKIES is not set
--# CONFIG_INET_AH is not set
--# CONFIG_INET_ESP is not set
--# CONFIG_INET_IPCOMP is not set
--# CONFIG_INET_TUNNEL is not set
--CONFIG_IP_TCPDIAG=y
--# CONFIG_IP_TCPDIAG_IPV6 is not set
--# CONFIG_NETFILTER is not set
--# CONFIG_BRIDGE is not set
--# CONFIG_VLAN_8021Q is not set
--# CONFIG_DECNET is not set
--# CONFIG_LLC2 is not set
--# CONFIG_IPX is not set
--# CONFIG_ATALK is not set
--
--#
--# QoS and/or fair queueing
--#
--# CONFIG_NET_SCHED is not set
--# CONFIG_NET_CLS_ROUTE is not set
--
--#
--# Network testing
-+# Network device support
- #
--# CONFIG_NET_PKTGEN is not set
--# CONFIG_NETPOLL is not set
--# CONFIG_NET_POLL_CONTROLLER is not set
--# CONFIG_HAMRADIO is not set
--# CONFIG_IRDA is not set
--# CONFIG_BT is not set
- CONFIG_NETDEVICES=y
- # CONFIG_DUMMY is not set
- # CONFIG_BONDING is not set
-@@ -347,6 +388,11 @@
- # CONFIG_ARCNET is not set
- 
- #
-+# PHY device support
-+#
-+# CONFIG_PHYLIB is not set
-+
-+#
- # Ethernet (10 or 100Mbit)
- #
- CONFIG_NET_ETHERNET=y
-@@ -354,8 +400,8 @@
- # CONFIG_LASI_82596 is not set
- # CONFIG_HAPPYMEAL is not set
- # CONFIG_SUNGEM is not set
-+# CONFIG_CASSINI is not set
- # CONFIG_NET_VENDOR_3COM is not set
--# CONFIG_LANCE is not set
- # CONFIG_NET_VENDOR_SMC is not set
- # CONFIG_NET_VENDOR_RACAL is not set
- 
-@@ -369,6 +415,7 @@
- # CONFIG_DE4X5 is not set
- # CONFIG_WINBOND_840 is not set
- # CONFIG_DM9102 is not set
-+# CONFIG_ULI526X is not set
- # CONFIG_DEPCA is not set
- # CONFIG_HP100 is not set
- # CONFIG_NET_ISA is not set
-@@ -384,12 +431,15 @@
- # CONFIG_NS83820 is not set
- # CONFIG_HAMACHI is not set
- # CONFIG_R8169 is not set
-+# CONFIG_SIS190 is not set
- # CONFIG_SK98LIN is not set
- # CONFIG_TIGON3 is not set
-+# CONFIG_BNX2 is not set
- 
- #
- # Ethernet (10000 Mbit)
- #
-+# CONFIG_CHELSIO_T1 is not set
- # CONFIG_IXGB is not set
- # CONFIG_S2IO is not set
- 
-@@ -413,12 +463,12 @@
- #
- # Wireless 802.11b ISA/PCI cards support
- #
--# CONFIG_AIRO is not set
- # CONFIG_HERMES is not set
- 
- #
- # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
- #
-+# CONFIG_HOSTAP is not set
- CONFIG_NET_WIRELESS=y
- 
- #
-@@ -435,6 +485,8 @@
- # CONFIG_PPP_BSDCOMP is not set
- # CONFIG_SLIP is not set
- # CONFIG_NET_FC is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
- 
- #
- # ISDN subsystem
-@@ -464,23 +516,12 @@
- # CONFIG_INPUT_EVBUG is not set
- 
- #
--# Input I/O drivers
--#
--# CONFIG_GAMEPORT is not set
--CONFIG_SOUND_GAMEPORT=y
--CONFIG_SERIO=y
--# CONFIG_SERIO_SERPORT is not set
--# CONFIG_SERIO_PARKBD is not set
--CONFIG_SERIO_GSCPS2=y
--# CONFIG_HP_SDC is not set
--# CONFIG_SERIO_PCIPS2 is not set
--# CONFIG_SERIO_RAW is not set
--
--#
- # Input Device Drivers
- #
- CONFIG_INPUT_KEYBOARD=y
--# CONFIG_KEYBOARD_ATKBD is not set
-+CONFIG_KEYBOARD_ATKBD=y
-+CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y
-+# CONFIG_KEYBOARD_ATKBD_RDI_KEYCODES is not set
- # CONFIG_KEYBOARD_SUNKBD is not set
- # CONFIG_KEYBOARD_LKKBD is not set
- # CONFIG_KEYBOARD_XTKBD is not set
-@@ -488,7 +529,7 @@
- # CONFIG_KEYBOARD_HIL_OLD is not set
- # CONFIG_KEYBOARD_HIL is not set
- CONFIG_INPUT_MOUSE=y
--# CONFIG_MOUSE_PS2 is not set
-+CONFIG_MOUSE_PS2=y
- # CONFIG_MOUSE_SERIAL is not set
- # CONFIG_MOUSE_INPORT is not set
- # CONFIG_MOUSE_LOGIBM is not set
-@@ -502,6 +543,19 @@
- # CONFIG_HP_SDC_RTC is not set
- 
- #
-+# Hardware I/O ports
-+#
-+CONFIG_SERIO=y
-+# CONFIG_SERIO_SERPORT is not set
-+# CONFIG_SERIO_PARKBD is not set
-+CONFIG_SERIO_GSCPS2=y
-+# CONFIG_HP_SDC is not set
-+# CONFIG_SERIO_PCIPS2 is not set
-+CONFIG_SERIO_LIBPS2=y
-+# CONFIG_SERIO_RAW is not set
-+# CONFIG_GAMEPORT is not set
-+
-+#
- # Character devices
- #
- CONFIG_VT=y
-@@ -519,8 +573,11 @@
- CONFIG_SERIAL_8250_MANY_PORTS=y
- CONFIG_SERIAL_8250_SHARE_IRQ=y
- # CONFIG_SERIAL_8250_DETECT_IRQ is not set
--# CONFIG_SERIAL_8250_MULTIPORT is not set
- # CONFIG_SERIAL_8250_RSA is not set
-+# CONFIG_SERIAL_8250_FOURPORT is not set
-+# CONFIG_SERIAL_8250_ACCENT is not set
-+# CONFIG_SERIAL_8250_BOCA is not set
-+# CONFIG_SERIAL_8250_HUB6 is not set
- 
- #
- # Non-8250 serial port support
-@@ -529,6 +586,7 @@
- # CONFIG_PDC_CONSOLE is not set
- CONFIG_SERIAL_CORE=y
- CONFIG_SERIAL_CORE_CONSOLE=y
-+# CONFIG_SERIAL_JSM is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_LEGACY_PTYS=y
- CONFIG_LEGACY_PTY_COUNT=256
-@@ -555,11 +613,14 @@
- #
- # Ftape, the floppy tape device driver
- #
--# CONFIG_AGP is not set
- # CONFIG_DRM is not set
- # CONFIG_RAW_DRIVER is not set
- 
- #
-+# TPM devices
-+#
-+
-+#
- # I2C support
- #
- # CONFIG_I2C is not set
-@@ -570,10 +631,20 @@
- # CONFIG_W1 is not set
- 
- #
-+# Hardware Monitoring support
-+#
-+# CONFIG_HWMON is not set
-+# CONFIG_HWMON_VID is not set
-+
-+#
- # Misc devices
- #
- 
- #
-+# Multimedia Capabilities Port drivers
-+#
-+
-+#
- # Multimedia devices
- #
- # CONFIG_VIDEO_DEV is not set
-@@ -587,6 +658,11 @@
- # Graphics support
- #
- CONFIG_FB=y
-+CONFIG_FB_CFB_FILLRECT=y
-+CONFIG_FB_CFB_COPYAREA=y
-+CONFIG_FB_CFB_IMAGEBLIT=y
-+CONFIG_FB_SOFT_CURSOR=y
-+# CONFIG_FB_MACMODES is not set
- # CONFIG_FB_MODE_HELPERS is not set
- # CONFIG_FB_TILEBLITTING is not set
- # CONFIG_FB_CIRRUS is not set
-@@ -595,6 +671,7 @@
- # CONFIG_FB_ASILIANT is not set
- # CONFIG_FB_IMSTT is not set
- CONFIG_FB_STI=y
-+# CONFIG_FB_NVIDIA is not set
- # CONFIG_FB_RIVA is not set
- # CONFIG_FB_MATROX is not set
- # CONFIG_FB_RADEON_OLD is not set
-@@ -606,18 +683,19 @@
- # CONFIG_FB_KYRO is not set
- # CONFIG_FB_3DFX is not set
- # CONFIG_FB_VOODOO1 is not set
-+# CONFIG_FB_CYBLA is not set
- # CONFIG_FB_TRIDENT is not set
-+# CONFIG_FB_S1D13XXX is not set
- # CONFIG_FB_VIRTUAL is not set
- 
- #
- # Console display driver support
- #
--# CONFIG_MDA_CONSOLE is not set
--CONFIG_STI_CONSOLE=y
-+CONFIG_DUMMY_CONSOLE=y
- CONFIG_DUMMY_CONSOLE_COLUMNS=160
- CONFIG_DUMMY_CONSOLE_ROWS=64
--CONFIG_DUMMY_CONSOLE=y
- CONFIG_FRAMEBUFFER_CONSOLE=y
-+CONFIG_STI_CONSOLE=y
- # CONFIG_FONTS is not set
- CONFIG_FONT_8x8=y
- CONFIG_FONT_8x16=y
-@@ -630,6 +708,7 @@
- CONFIG_LOGO_LINUX_VGA16=y
- CONFIG_LOGO_LINUX_CLUT224=y
- CONFIG_LOGO_PARISC_CLUT224=y
-+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
- 
- #
- # Sound
-@@ -639,13 +718,9 @@
- #
- # USB support
- #
--# CONFIG_USB is not set
- CONFIG_USB_ARCH_HAS_HCD=y
- CONFIG_USB_ARCH_HAS_OHCI=y
--
--#
--# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
--#
-+# CONFIG_USB is not set
- 
- #
- # USB Gadget Support
-@@ -658,23 +733,36 @@
- # CONFIG_MMC is not set
- 
- #
-+# InfiniBand support
-+#
-+# CONFIG_INFINIBAND is not set
-+
-+#
-+# SN Devices
-+#
-+
-+#
- # File systems
- #
- CONFIG_EXT2_FS=y
- # CONFIG_EXT2_FS_XATTR is not set
-+# CONFIG_EXT2_FS_XIP is not set
- CONFIG_EXT3_FS=y
- # CONFIG_EXT3_FS_XATTR is not set
- CONFIG_JBD=y
- # CONFIG_JBD_DEBUG is not set
- # CONFIG_REISERFS_FS is not set
- # CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
- # CONFIG_XFS_FS is not set
- # CONFIG_MINIX_FS is not set
- # CONFIG_ROMFS_FS is not set
-+CONFIG_INOTIFY=y
- # CONFIG_QUOTA is not set
- CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- CONFIG_AUTOFS4_FS=y
-+# CONFIG_FUSE_FS is not set
- 
- #
- # CD-ROM/DVD Filesystems
-@@ -697,11 +785,10 @@
- CONFIG_PROC_FS=y
- CONFIG_PROC_KCORE=y
- CONFIG_SYSFS=y
--# CONFIG_DEVPTS_FS_XATTR is not set
- CONFIG_TMPFS=y
--# CONFIG_TMPFS_XATTR is not set
- # CONFIG_HUGETLB_PAGE is not set
- CONFIG_RAMFS=y
-+# CONFIG_RELAYFS_FS is not set
- 
- #
- # Miscellaneous filesystems
-@@ -719,15 +806,19 @@
- #
- CONFIG_NFS_FS=y
- CONFIG_NFS_V3=y
-+# CONFIG_NFS_V3_ACL is not set
- CONFIG_NFSD=y
- CONFIG_NFSD_V3=y
-+# CONFIG_NFSD_V3_ACL is not set
- CONFIG_NFSD_TCP=y
- CONFIG_ROOT_NFS=y
- CONFIG_LOCKD=y
- CONFIG_LOCKD_V4=y
- CONFIG_EXPORTFS=y
-+CONFIG_NFS_COMMON=y
- CONFIG_SUNRPC=y
--# CONFIG_SMB_FS is not set
-+CONFIG_SMB_FS=y
-+# CONFIG_SMB_NLS_DEFAULT is not set
- # CONFIG_CIFS is not set
- # CONFIG_NCP_FS is not set
- # CONFIG_CODA_FS is not set
-@@ -785,13 +876,19 @@
- #
- # Kernel hacking
- #
-+# CONFIG_PRINTK_TIME is not set
- CONFIG_DEBUG_KERNEL=y
- CONFIG_MAGIC_SYSRQ=y
-+CONFIG_LOG_BUF_SHIFT=16
-+CONFIG_DETECT_SOFTLOCKUP=y
- # CONFIG_SCHEDSTATS is not set
- # CONFIG_DEBUG_SLAB is not set
- # CONFIG_DEBUG_SPINLOCK is not set
-+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
- # CONFIG_DEBUG_KOBJECT is not set
- # CONFIG_DEBUG_INFO is not set
-+# CONFIG_DEBUG_IOREMAP is not set
-+# CONFIG_DEBUG_FS is not set
- 
- #
- # Security options
-@@ -815,6 +912,7 @@
- # CONFIG_CRYPTO_SHA256 is not set
- # CONFIG_CRYPTO_SHA512 is not set
- # CONFIG_CRYPTO_WP512 is not set
-+# CONFIG_CRYPTO_TGR192 is not set
- # CONFIG_CRYPTO_DES is not set
- # CONFIG_CRYPTO_BLOWFISH is not set
- # CONFIG_CRYPTO_TWOFISH is not set
-@@ -832,8 +930,13 @@
- # CONFIG_CRYPTO_TEST is not set
- 
- #
-+# Hardware crypto devices
-+#
-+
-+#
- # Library routines
- #
- # CONFIG_CRC_CCITT is not set
-+# CONFIG_CRC16 is not set
- CONFIG_CRC32=y
- # CONFIG_LIBCRC32C is not set
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/configs/c3000_defconfig CVS2_6_14_PA0/arch/parisc/configs/c3000_defconfig
---- LINUS_2_6_14/arch/parisc/configs/c3000_defconfig	2005-10-27 21:30:33.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/configs/c3000_defconfig	2005-10-21 21:16:47.000000000 -0600
-@@ -1,12 +1,16 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.10-pa5
--# Wed Jan  5 13:26:49 2005
-+# Linux kernel version: 2.6.14-rc5-pa1
-+# Fri Oct 21 23:06:31 2005
- #
- CONFIG_PARISC=y
- CONFIG_MMU=y
- CONFIG_STACK_GROWSUP=y
- CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+CONFIG_GENERIC_CALIBRATE_DELAY=y
-+CONFIG_GENERIC_HARDIRQS=y
-+CONFIG_GENERIC_IRQ_PROBE=y
-+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
- 
- #
- # Code maturity level options
-@@ -15,26 +19,31 @@
- # CONFIG_CLEAN_COMPILE is not set
- CONFIG_BROKEN=y
- CONFIG_BROKEN_ON_SMP=y
-+CONFIG_INIT_ENV_ARG_LIMIT=32
- 
- #
- # General setup
- #
- CONFIG_LOCALVERSION=""
-+# CONFIG_LOCALVERSION_AUTO is not set
- CONFIG_SWAP=y
- CONFIG_SYSVIPC=y
- # CONFIG_POSIX_MQUEUE is not set
- # CONFIG_BSD_PROCESS_ACCT is not set
- CONFIG_SYSCTL=y
- # CONFIG_AUDIT is not set
--CONFIG_LOG_BUF_SHIFT=16
- CONFIG_HOTPLUG=y
- CONFIG_KOBJECT_UEVENT=y
- CONFIG_IKCONFIG=y
- CONFIG_IKCONFIG_PROC=y
-+CONFIG_INITRAMFS_SOURCE=""
- CONFIG_EMBEDDED=y
- CONFIG_KALLSYMS=y
- CONFIG_KALLSYMS_ALL=y
- # CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_PRINTK=y
-+CONFIG_BUG=y
-+CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
- CONFIG_EPOLL=y
- # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-@@ -44,6 +53,7 @@
- CONFIG_CC_ALIGN_LOOPS=0
- CONFIG_CC_ALIGN_JUMPS=0
- # CONFIG_TINY_SHMEM is not set
-+CONFIG_BASE_SMALL=0
- 
- #
- # Loadable module support
-@@ -66,10 +76,19 @@
- CONFIG_PA8X00=y
- CONFIG_PA20=y
- CONFIG_PREFETCH=y
--# CONFIG_PARISC64 is not set
- # CONFIG_64BIT is not set
- # CONFIG_SMP is not set
--# CONFIG_DISCONTIGMEM is not set
-+# CONFIG_HZ_100 is not set
-+CONFIG_HZ_250=y
-+# CONFIG_HZ_1000 is not set
-+CONFIG_HZ=250
-+CONFIG_SELECT_MEMORY_MODEL=y
-+CONFIG_FLATMEM_MANUAL=y
-+# CONFIG_DISCONTIGMEM_MANUAL is not set
-+# CONFIG_SPARSEMEM_MANUAL is not set
-+CONFIG_FLATMEM=y
-+CONFIG_FLAT_NODE_MEM_MAP=y
-+# CONFIG_SPARSEMEM_STATIC is not set
- # CONFIG_PREEMPT is not set
- # CONFIG_HPUX is not set
- 
-@@ -79,13 +98,10 @@
- # CONFIG_GSC is not set
- CONFIG_PCI=y
- CONFIG_PCI_LEGACY_PROC=y
--CONFIG_PCI_NAMES=y
-+# CONFIG_PCI_DEBUG is not set
- CONFIG_PCI_LBA=y
- CONFIG_IOSAPIC=y
- CONFIG_IOMMU_SBA=y
--CONFIG_SUPERIO=y
--CONFIG_CHASSIS_LCD_LED=y
--# CONFIG_PDC_CHASSIS is not set
- 
- #
- # PCCARD (PCMCIA/CardBus) support
-@@ -93,13 +109,17 @@
- # CONFIG_PCCARD is not set
- 
- #
--# PC-card bridges
-+# PCI Hotplug Support
- #
-+# CONFIG_HOTPLUG_PCI is not set
- 
- #
--# PCI Hotplug Support
-+# PA-RISC specific drivers
- #
--# CONFIG_HOTPLUG_PCI is not set
-+CONFIG_SUPERIO=y
-+CONFIG_CHASSIS_LCD_LED=y
-+# CONFIG_PDC_CHASSIS is not set
-+CONFIG_PDC_STABLE=y
- 
- #
- # Executable file formats
-@@ -108,6 +128,186 @@
- # CONFIG_BINFMT_MISC is not set
- 
- #
-+# Networking
-+#
-+CONFIG_NET=y
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+CONFIG_UNIX=y
-+CONFIG_XFRM=y
-+CONFIG_XFRM_USER=m
-+CONFIG_NET_KEY=m
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+CONFIG_IP_PNP=y
-+# CONFIG_IP_PNP_DHCP is not set
-+CONFIG_IP_PNP_BOOTP=y
-+# CONFIG_IP_PNP_RARP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE is not set
-+# CONFIG_ARPD is not set
-+# CONFIG_SYN_COOKIES is not set
-+# CONFIG_INET_AH is not set
-+# CONFIG_INET_ESP is not set
-+# CONFIG_INET_IPCOMP is not set
-+# CONFIG_INET_TUNNEL is not set
-+# CONFIG_INET_DIAG is not set
-+# CONFIG_TCP_CONG_ADVANCED is not set
-+CONFIG_TCP_CONG_BIC=y
-+
-+#
-+# IP: Virtual Server Configuration
-+#
-+# CONFIG_IP_VS is not set
-+CONFIG_IPV6=m
-+# CONFIG_IPV6_PRIVACY is not set
-+# CONFIG_INET6_AH is not set
-+# CONFIG_INET6_ESP is not set
-+CONFIG_INET6_IPCOMP=m
-+CONFIG_INET6_TUNNEL=m
-+CONFIG_IPV6_TUNNEL=m
-+CONFIG_NETFILTER=y
-+CONFIG_NETFILTER_DEBUG=y
-+# CONFIG_NETFILTER_NETLINK is not set
-+
-+#
-+# IP: Netfilter Configuration
-+#
-+CONFIG_IP_NF_CONNTRACK=m
-+# CONFIG_IP_NF_CT_ACCT is not set
-+# CONFIG_IP_NF_CONNTRACK_MARK is not set
-+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-+# CONFIG_IP_NF_CT_PROTO_SCTP is not set
-+CONFIG_IP_NF_FTP=m
-+CONFIG_IP_NF_IRC=m
-+# CONFIG_IP_NF_NETBIOS_NS is not set
-+CONFIG_IP_NF_TFTP=m
-+CONFIG_IP_NF_AMANDA=m
-+# CONFIG_IP_NF_PPTP is not set
-+CONFIG_IP_NF_QUEUE=m
-+CONFIG_IP_NF_IPTABLES=m
-+CONFIG_IP_NF_MATCH_LIMIT=m
-+CONFIG_IP_NF_MATCH_IPRANGE=m
-+CONFIG_IP_NF_MATCH_MAC=m
-+CONFIG_IP_NF_MATCH_PKTTYPE=m
-+CONFIG_IP_NF_MATCH_MARK=m
-+CONFIG_IP_NF_MATCH_MULTIPORT=m
-+CONFIG_IP_NF_MATCH_TOS=m
-+CONFIG_IP_NF_MATCH_RECENT=m
-+CONFIG_IP_NF_MATCH_ECN=m
-+CONFIG_IP_NF_MATCH_DSCP=m
-+CONFIG_IP_NF_MATCH_AH_ESP=m
-+CONFIG_IP_NF_MATCH_LENGTH=m
-+CONFIG_IP_NF_MATCH_TTL=m
-+CONFIG_IP_NF_MATCH_TCPMSS=m
-+CONFIG_IP_NF_MATCH_HELPER=m
-+CONFIG_IP_NF_MATCH_STATE=m
-+CONFIG_IP_NF_MATCH_CONNTRACK=m
-+CONFIG_IP_NF_MATCH_OWNER=m
-+# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
-+# CONFIG_IP_NF_MATCH_REALM is not set
-+# CONFIG_IP_NF_MATCH_SCTP is not set
-+# CONFIG_IP_NF_MATCH_DCCP is not set
-+# CONFIG_IP_NF_MATCH_COMMENT is not set
-+# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
-+# CONFIG_IP_NF_MATCH_STRING is not set
-+CONFIG_IP_NF_FILTER=m
-+CONFIG_IP_NF_TARGET_REJECT=m
-+CONFIG_IP_NF_TARGET_LOG=m
-+CONFIG_IP_NF_TARGET_ULOG=m
-+CONFIG_IP_NF_TARGET_TCPMSS=m
-+# CONFIG_IP_NF_TARGET_NFQUEUE is not set
-+CONFIG_IP_NF_NAT=m
-+CONFIG_IP_NF_NAT_NEEDED=y
-+CONFIG_IP_NF_TARGET_MASQUERADE=m
-+CONFIG_IP_NF_TARGET_REDIRECT=m
-+CONFIG_IP_NF_TARGET_NETMAP=m
-+CONFIG_IP_NF_TARGET_SAME=m
-+CONFIG_IP_NF_NAT_SNMP_BASIC=m
-+CONFIG_IP_NF_NAT_IRC=m
-+CONFIG_IP_NF_NAT_FTP=m
-+CONFIG_IP_NF_NAT_TFTP=m
-+CONFIG_IP_NF_NAT_AMANDA=m
-+CONFIG_IP_NF_MANGLE=m
-+CONFIG_IP_NF_TARGET_TOS=m
-+CONFIG_IP_NF_TARGET_ECN=m
-+CONFIG_IP_NF_TARGET_DSCP=m
-+CONFIG_IP_NF_TARGET_MARK=m
-+CONFIG_IP_NF_TARGET_CLASSIFY=m
-+# CONFIG_IP_NF_TARGET_TTL is not set
-+# CONFIG_IP_NF_RAW is not set
-+CONFIG_IP_NF_ARPTABLES=m
-+CONFIG_IP_NF_ARPFILTER=m
-+CONFIG_IP_NF_ARP_MANGLE=m
-+
-+#
-+# IPv6: Netfilter Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP6_NF_QUEUE is not set
-+CONFIG_IP6_NF_IPTABLES=m
-+# CONFIG_IP6_NF_MATCH_LIMIT is not set
-+CONFIG_IP6_NF_MATCH_MAC=m
-+CONFIG_IP6_NF_MATCH_RT=m
-+# CONFIG_IP6_NF_MATCH_OPTS is not set
-+# CONFIG_IP6_NF_MATCH_FRAG is not set
-+# CONFIG_IP6_NF_MATCH_HL is not set
-+# CONFIG_IP6_NF_MATCH_MULTIPORT is not set
-+CONFIG_IP6_NF_MATCH_OWNER=m
-+# CONFIG_IP6_NF_MATCH_MARK is not set
-+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-+# CONFIG_IP6_NF_MATCH_AHESP is not set
-+CONFIG_IP6_NF_MATCH_LENGTH=m
-+# CONFIG_IP6_NF_MATCH_EUI64 is not set
-+CONFIG_IP6_NF_FILTER=m
-+CONFIG_IP6_NF_TARGET_LOG=m
-+CONFIG_IP6_NF_TARGET_REJECT=m
-+# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
-+CONFIG_IP6_NF_MANGLE=m
-+# CONFIG_IP6_NF_TARGET_MARK is not set
-+# CONFIG_IP6_NF_TARGET_HL is not set
-+# CONFIG_IP6_NF_RAW is not set
-+
-+#
-+# DCCP Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_DCCP is not set
-+
-+#
-+# SCTP Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_SCTP is not set
-+# CONFIG_ATM is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_LLC2 is not set
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_SCHED is not set
-+# CONFIG_NET_CLS_ROUTE is not set
-+
-+#
-+# Network testing
-+#
-+CONFIG_NET_PKTGEN=m
-+# CONFIG_HAMRADIO is not set
-+# CONFIG_IRDA is not set
-+# CONFIG_BT is not set
-+# CONFIG_IEEE80211 is not set
-+
-+#
- # Device Drivers
- #
- 
-@@ -120,6 +320,11 @@
- # CONFIG_DEBUG_DRIVER is not set
- 
- #
-+# Connector - unified userspace <-> kernelspace linker
-+#
-+# CONFIG_CONNECTOR is not set
-+
-+#
- # Memory Technology Devices (MTD)
- #
- # CONFIG_MTD is not set
-@@ -141,14 +346,14 @@
- # CONFIG_BLK_CPQ_CISS_DA is not set
- # CONFIG_BLK_DEV_DAC960 is not set
- CONFIG_BLK_DEV_UMEM=m
-+# CONFIG_BLK_DEV_COW_COMMON is not set
- CONFIG_BLK_DEV_LOOP=y
--# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-+CONFIG_BLK_DEV_CRYPTOLOOP=m
- # CONFIG_BLK_DEV_NBD is not set
- # CONFIG_BLK_DEV_SX8 is not set
- # CONFIG_BLK_DEV_UB is not set
- # CONFIG_BLK_DEV_RAM is not set
- CONFIG_BLK_DEV_RAM_COUNT=16
--CONFIG_INITRAMFS_SOURCE=""
- # CONFIG_CDROM_PKTCDVD is not set
- 
- #
-@@ -158,6 +363,7 @@
- CONFIG_IOSCHED_AS=y
- CONFIG_IOSCHED_DEADLINE=y
- CONFIG_IOSCHED_CFQ=y
-+# CONFIG_ATA_OVER_ETH is not set
- 
- #
- # ATA/ATAPI/MFM/RLL support
-@@ -201,6 +407,7 @@
- # CONFIG_BLK_DEV_HPT366 is not set
- # CONFIG_BLK_DEV_SC1200 is not set
- # CONFIG_BLK_DEV_PIIX is not set
-+# CONFIG_BLK_DEV_IT821X is not set
- CONFIG_BLK_DEV_NS87415=y
- # CONFIG_BLK_DEV_PDC202XX_OLD is not set
- # CONFIG_BLK_DEV_PDC202XX_NEW is not set
-@@ -218,6 +425,7 @@
- #
- # SCSI device support
- #
-+# CONFIG_RAID_ATTRS is not set
- CONFIG_SCSI=y
- CONFIG_SCSI_PROC_FS=y
- 
-@@ -230,6 +438,7 @@
- CONFIG_BLK_DEV_SR=y
- # CONFIG_BLK_DEV_SR_VENDOR is not set
- CONFIG_CHR_DEV_SG=y
-+# CONFIG_CHR_DEV_SCH is not set
- 
- #
- # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-@@ -242,7 +451,9 @@
- # SCSI Transport Attributes
- #
- CONFIG_SCSI_SPI_ATTRS=y
--CONFIG_SCSI_FC_ATTRS=m
-+# CONFIG_SCSI_FC_ATTRS is not set
-+CONFIG_SCSI_ISCSI_ATTRS=m
-+# CONFIG_SCSI_SAS_ATTRS is not set
- 
- #
- # SCSI low-level drivers
-@@ -258,25 +469,26 @@
- # CONFIG_SCSI_ADVANSYS is not set
- # CONFIG_MEGARAID_NEWGEN is not set
- # CONFIG_MEGARAID_LEGACY is not set
-+# CONFIG_MEGARAID_SAS is not set
- CONFIG_SCSI_SATA=y
- # CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- CONFIG_SCSI_ATA_PIIX=m
-+# CONFIG_SCSI_SATA_MV is not set
- # CONFIG_SCSI_SATA_NV is not set
- CONFIG_SCSI_SATA_PROMISE=m
-+# CONFIG_SCSI_SATA_QSTOR is not set
- # CONFIG_SCSI_SATA_SX4 is not set
- CONFIG_SCSI_SATA_SIL=m
- # CONFIG_SCSI_SATA_SIS is not set
- # CONFIG_SCSI_SATA_ULI is not set
- CONFIG_SCSI_SATA_VIA=m
- # CONFIG_SCSI_SATA_VITESSE is not set
--# CONFIG_SCSI_BUSLOGIC is not set
-+CONFIG_SCSI_SATA_INTEL_COMBINED=y
- # CONFIG_SCSI_CPQFCTS is not set
- # CONFIG_SCSI_DMX3191D is not set
--# CONFIG_SCSI_EATA is not set
- # CONFIG_SCSI_EATA_PIO is not set
- # CONFIG_SCSI_FUTURE_DOMAIN is not set
--# CONFIG_SCSI_GDTH is not set
- # CONFIG_SCSI_IPS is not set
- # CONFIG_SCSI_INITIO is not set
- # CONFIG_SCSI_INIA100 is not set
-@@ -286,20 +498,17 @@
- CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
- # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
- # CONFIG_SCSI_IPR is not set
--# CONFIG_SCSI_PCI2000 is not set
--# CONFIG_SCSI_PCI2220I is not set
- # CONFIG_SCSI_QLOGIC_ISP is not set
--CONFIG_SCSI_QLOGIC_FC=m
--# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
--CONFIG_SCSI_QLOGIC_1280=m
--# CONFIG_SCSI_QLOGIC_1280_1040 is not set
-+# CONFIG_SCSI_QLOGIC_FC is not set
-+# CONFIG_SCSI_QLOGIC_1280 is not set
- CONFIG_SCSI_QLA2XXX=y
- # CONFIG_SCSI_QLA21XX is not set
- # CONFIG_SCSI_QLA22XX is not set
--CONFIG_SCSI_QLA2300=m
--CONFIG_SCSI_QLA2322=m
--CONFIG_SCSI_QLA6312=m
--CONFIG_SCSI_QLA6322=m
-+# CONFIG_SCSI_QLA2300 is not set
-+# CONFIG_SCSI_QLA2322 is not set
-+# CONFIG_SCSI_QLA6312 is not set
-+# CONFIG_SCSI_QLA24XX is not set
-+# CONFIG_SCSI_LPFC is not set
- # CONFIG_SCSI_DC395x is not set
- # CONFIG_SCSI_DC390T is not set
- # CONFIG_SCSI_NSP32 is not set
-@@ -316,19 +525,24 @@
- # CONFIG_MD_RAID10 is not set
- # CONFIG_MD_RAID5 is not set
- # CONFIG_MD_RAID6 is not set
--CONFIG_MD_MULTIPATH=y
-+# CONFIG_MD_MULTIPATH is not set
- # CONFIG_MD_FAULTY is not set
--CONFIG_BLK_DEV_DM=y
--# CONFIG_DM_CRYPT is not set
--# CONFIG_DM_SNAPSHOT is not set
--# CONFIG_DM_MIRROR is not set
--# CONFIG_DM_ZERO is not set
-+CONFIG_BLK_DEV_DM=m
-+CONFIG_DM_CRYPT=m
-+CONFIG_DM_SNAPSHOT=m
-+CONFIG_DM_MIRROR=m
-+CONFIG_DM_ZERO=m
-+CONFIG_DM_MULTIPATH=m
-+# CONFIG_DM_MULTIPATH_EMC is not set
- 
- #
- # Fusion MPT device support
- #
--CONFIG_FUSION=m
--CONFIG_FUSION_MAX_SGE=40
-+CONFIG_FUSION=y
-+CONFIG_FUSION_SPI=m
-+# CONFIG_FUSION_FC is not set
-+# CONFIG_FUSION_SAS is not set
-+CONFIG_FUSION_MAX_SGE=128
- CONFIG_FUSION_CTL=m
- 
- #
-@@ -342,151 +556,13 @@
- # CONFIG_I2O is not set
- 
- #
--# Networking support
--#
--CONFIG_NET=y
--
--#
--# Networking options
-+# Network device support
- #
--CONFIG_PACKET=y
--CONFIG_PACKET_MMAP=y
--CONFIG_NETLINK_DEV=y
--CONFIG_UNIX=y
--CONFIG_NET_KEY=m
--CONFIG_INET=y
--CONFIG_IP_MULTICAST=y
--# CONFIG_IP_ADVANCED_ROUTER is not set
--CONFIG_IP_PNP=y
--# CONFIG_IP_PNP_DHCP is not set
--CONFIG_IP_PNP_BOOTP=y
--# CONFIG_IP_PNP_RARP is not set
--# CONFIG_NET_IPIP is not set
--# CONFIG_NET_IPGRE is not set
--# CONFIG_IP_MROUTE is not set
--# CONFIG_ARPD is not set
--# CONFIG_SYN_COOKIES is not set
--CONFIG_INET_AH=m
--CONFIG_INET_ESP=m
--# CONFIG_INET_IPCOMP is not set
--# CONFIG_INET_TUNNEL is not set
--CONFIG_IP_TCPDIAG=y
--# CONFIG_IP_TCPDIAG_IPV6 is not set
--
--#
--# IP: Virtual Server Configuration
--#
--# CONFIG_IP_VS is not set
--# CONFIG_IPV6 is not set
--CONFIG_NETFILTER=y
--CONFIG_NETFILTER_DEBUG=y
--
--#
--# IP: Netfilter Configuration
--#
--CONFIG_IP_NF_CONNTRACK=m
--# CONFIG_IP_NF_CT_ACCT is not set
--# CONFIG_IP_NF_CONNTRACK_MARK is not set
--# CONFIG_IP_NF_CT_PROTO_SCTP is not set
--CONFIG_IP_NF_FTP=m
--CONFIG_IP_NF_IRC=m
--CONFIG_IP_NF_TFTP=m
--CONFIG_IP_NF_AMANDA=m
--CONFIG_IP_NF_QUEUE=m
--CONFIG_IP_NF_IPTABLES=m
--CONFIG_IP_NF_MATCH_LIMIT=m
--CONFIG_IP_NF_MATCH_IPRANGE=m
--CONFIG_IP_NF_MATCH_MAC=m
--CONFIG_IP_NF_MATCH_PKTTYPE=m
--CONFIG_IP_NF_MATCH_MARK=m
--CONFIG_IP_NF_MATCH_MULTIPORT=m
--CONFIG_IP_NF_MATCH_TOS=m
--CONFIG_IP_NF_MATCH_RECENT=m
--CONFIG_IP_NF_MATCH_ECN=m
--CONFIG_IP_NF_MATCH_DSCP=m
--CONFIG_IP_NF_MATCH_AH_ESP=m
--CONFIG_IP_NF_MATCH_LENGTH=m
--CONFIG_IP_NF_MATCH_TTL=m
--CONFIG_IP_NF_MATCH_TCPMSS=m
--CONFIG_IP_NF_MATCH_HELPER=m
--CONFIG_IP_NF_MATCH_STATE=m
--CONFIG_IP_NF_MATCH_CONNTRACK=m
--CONFIG_IP_NF_MATCH_OWNER=m
--# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
--# CONFIG_IP_NF_MATCH_REALM is not set
--# CONFIG_IP_NF_MATCH_SCTP is not set
--# CONFIG_IP_NF_MATCH_COMMENT is not set
--# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
--CONFIG_IP_NF_FILTER=m
--CONFIG_IP_NF_TARGET_REJECT=m
--CONFIG_IP_NF_TARGET_LOG=m
--CONFIG_IP_NF_TARGET_ULOG=m
--CONFIG_IP_NF_TARGET_TCPMSS=m
--CONFIG_IP_NF_NAT=m
--CONFIG_IP_NF_NAT_NEEDED=y
--CONFIG_IP_NF_TARGET_MASQUERADE=m
--CONFIG_IP_NF_TARGET_REDIRECT=m
--CONFIG_IP_NF_TARGET_NETMAP=m
--CONFIG_IP_NF_TARGET_SAME=m
--CONFIG_IP_NF_NAT_SNMP_BASIC=m
--CONFIG_IP_NF_NAT_IRC=m
--CONFIG_IP_NF_NAT_FTP=m
--CONFIG_IP_NF_NAT_TFTP=m
--CONFIG_IP_NF_NAT_AMANDA=m
--CONFIG_IP_NF_MANGLE=m
--CONFIG_IP_NF_TARGET_TOS=m
--CONFIG_IP_NF_TARGET_ECN=m
--CONFIG_IP_NF_TARGET_DSCP=m
--CONFIG_IP_NF_TARGET_MARK=m
--CONFIG_IP_NF_TARGET_CLASSIFY=m
--# CONFIG_IP_NF_RAW is not set
--CONFIG_IP_NF_ARPTABLES=m
--CONFIG_IP_NF_ARPFILTER=m
--CONFIG_IP_NF_ARP_MANGLE=m
--CONFIG_IP_NF_COMPAT_IPCHAINS=m
--CONFIG_IP_NF_COMPAT_IPFWADM=m
--CONFIG_XFRM=y
--CONFIG_XFRM_USER=m
--
--#
--# SCTP Configuration (EXPERIMENTAL)
--#
--# CONFIG_IP_SCTP is not set
--# CONFIG_ATM is not set
--# CONFIG_BRIDGE is not set
--# CONFIG_VLAN_8021Q is not set
--# CONFIG_DECNET is not set
--CONFIG_LLC=m
--CONFIG_LLC2=m
--# CONFIG_IPX is not set
--# CONFIG_ATALK is not set
--# CONFIG_X25 is not set
--# CONFIG_LAPB is not set
--# CONFIG_NET_DIVERT is not set
--# CONFIG_ECONET is not set
--# CONFIG_WAN_ROUTER is not set
--
--#
--# QoS and/or fair queueing
--#
--# CONFIG_NET_SCHED is not set
--# CONFIG_NET_CLS_ROUTE is not set
--
--#
--# Network testing
--#
--# CONFIG_NET_PKTGEN is not set
--# CONFIG_NETPOLL is not set
--# CONFIG_NET_POLL_CONTROLLER is not set
--# CONFIG_HAMRADIO is not set
--# CONFIG_IRDA is not set
--# CONFIG_BT is not set
- CONFIG_NETDEVICES=y
- CONFIG_DUMMY=m
- CONFIG_BONDING=m
- # CONFIG_EQUALIZER is not set
- CONFIG_TUN=m
--# CONFIG_ETHERTAP is not set
- 
- #
- # ARCnet devices
-@@ -494,12 +570,18 @@
- # CONFIG_ARCNET is not set
- 
- #
-+# PHY device support
-+#
-+# CONFIG_PHYLIB is not set
-+
-+#
- # Ethernet (10 or 100Mbit)
- #
- CONFIG_NET_ETHERNET=y
- CONFIG_MII=m
--CONFIG_HAPPYMEAL=m
-+# CONFIG_HAPPYMEAL is not set
- # CONFIG_SUNGEM is not set
-+# CONFIG_CASSINI is not set
- # CONFIG_NET_VENDOR_3COM is not set
- 
- #
-@@ -514,28 +596,22 @@
- # CONFIG_DE4X5 is not set
- # CONFIG_WINBOND_840 is not set
- # CONFIG_DM9102 is not set
-+# CONFIG_ULI526X is not set
- # CONFIG_HP100 is not set
- CONFIG_NET_PCI=y
--CONFIG_PCNET32=m
-+# CONFIG_PCNET32 is not set
- # CONFIG_AMD8111_ETH is not set
--CONFIG_ADAPTEC_STARFIRE=m
--# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
--CONFIG_B44=m
-+# CONFIG_ADAPTEC_STARFIRE is not set
-+# CONFIG_B44 is not set
- # CONFIG_FORCEDETH is not set
- # CONFIG_DGRS is not set
--CONFIG_EEPRO100=m
--# CONFIG_EEPRO100_PIO is not set
-+# CONFIG_EEPRO100 is not set
- CONFIG_E100=m
--# CONFIG_E100_NAPI is not set
- # CONFIG_FEALNX is not set
--CONFIG_NATSEMI=m
-+# CONFIG_NATSEMI is not set
- # CONFIG_NE2K_PCI is not set
- # CONFIG_8139CP is not set
--CONFIG_8139TOO=m
--# CONFIG_8139TOO_PIO is not set
--# CONFIG_8139TOO_TUNE_TWISTER is not set
--# CONFIG_8139TOO_8129 is not set
--# CONFIG_8139_OLD_RX_RESET is not set
-+# CONFIG_8139TOO is not set
- # CONFIG_SIS900 is not set
- # CONFIG_EPIC100 is not set
- # CONFIG_SUNDANCE is not set
-@@ -554,15 +630,18 @@
- # CONFIG_HAMACHI is not set
- # CONFIG_YELLOWFIN is not set
- # CONFIG_R8169 is not set
-+# CONFIG_SIS190 is not set
-+# CONFIG_SKGE is not set
- # CONFIG_SK98LIN is not set
- # CONFIG_VIA_VELOCITY is not set
- CONFIG_TIGON3=m
-+# CONFIG_BNX2 is not set
- 
- #
- # Ethernet (10000 Mbit)
- #
--CONFIG_IXGB=y
--CONFIG_IXGB_NAPI=y
-+# CONFIG_CHELSIO_T1 is not set
-+# CONFIG_IXGB is not set
- # CONFIG_S2IO is not set
- 
- #
-@@ -593,6 +672,8 @@
- # CONFIG_NET_FC is not set
- # CONFIG_SHAPER is not set
- # CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
- 
- #
- # ISDN subsystem
-@@ -622,16 +703,6 @@
- # CONFIG_INPUT_EVBUG is not set
- 
- #
--# Input I/O drivers
--#
--# CONFIG_GAMEPORT is not set
--CONFIG_SOUND_GAMEPORT=y
--CONFIG_SERIO=m
--CONFIG_SERIO_SERPORT=m
--# CONFIG_SERIO_PCIPS2 is not set
--# CONFIG_SERIO_RAW is not set
--
--#
- # Input Device Drivers
- #
- CONFIG_INPUT_KEYBOARD=y
-@@ -649,6 +720,16 @@
- # CONFIG_INPUT_MISC is not set
- 
- #
-+# Hardware I/O ports
-+#
-+CONFIG_SERIO=m
-+CONFIG_SERIO_SERPORT=m
-+# CONFIG_SERIO_PCIPS2 is not set
-+CONFIG_SERIO_LIBPS2=m
-+# CONFIG_SERIO_RAW is not set
-+# CONFIG_GAMEPORT is not set
-+
-+#
- # Character devices
- #
- CONFIG_VT=y
-@@ -666,7 +747,6 @@
- CONFIG_SERIAL_8250_MANY_PORTS=y
- CONFIG_SERIAL_8250_SHARE_IRQ=y
- # CONFIG_SERIAL_8250_DETECT_IRQ is not set
--# CONFIG_SERIAL_8250_MULTIPORT is not set
- # CONFIG_SERIAL_8250_RSA is not set
- 
- #
-@@ -676,6 +756,7 @@
- # CONFIG_PDC_CONSOLE is not set
- CONFIG_SERIAL_CORE=y
- CONFIG_SERIAL_CORE_CONSOLE=y
-+# CONFIG_SERIAL_JSM is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_LEGACY_PTYS=y
- CONFIG_LEGACY_PTY_COUNT=256
-@@ -698,12 +779,16 @@
- #
- # Ftape, the floppy tape device driver
- #
--# CONFIG_AGP is not set
- # CONFIG_DRM is not set
- CONFIG_RAW_DRIVER=y
- CONFIG_MAX_RAW_DEVS=256
- 
- #
-+# TPM devices
-+#
-+# CONFIG_TCG_TPM is not set
-+
-+#
- # I2C support
- #
- # CONFIG_I2C is not set
-@@ -714,10 +799,20 @@
- # CONFIG_W1 is not set
- 
- #
-+# Hardware Monitoring support
-+#
-+# CONFIG_HWMON is not set
-+# CONFIG_HWMON_VID is not set
-+
-+#
- # Misc devices
- #
- 
- #
-+# Multimedia Capabilities Port drivers
-+#
-+
-+#
- # Multimedia devices
- #
- # CONFIG_VIDEO_DEV is not set
-@@ -731,6 +826,11 @@
- # Graphics support
- #
- CONFIG_FB=y
-+CONFIG_FB_CFB_FILLRECT=y
-+CONFIG_FB_CFB_COPYAREA=y
-+CONFIG_FB_CFB_IMAGEBLIT=y
-+CONFIG_FB_SOFT_CURSOR=y
-+# CONFIG_FB_MACMODES is not set
- # CONFIG_FB_MODE_HELPERS is not set
- # CONFIG_FB_TILEBLITTING is not set
- # CONFIG_FB_CIRRUS is not set
-@@ -739,6 +839,7 @@
- # CONFIG_FB_ASILIANT is not set
- # CONFIG_FB_IMSTT is not set
- CONFIG_FB_STI=y
-+# CONFIG_FB_NVIDIA is not set
- # CONFIG_FB_RIVA is not set
- # CONFIG_FB_MATROX is not set
- # CONFIG_FB_RADEON_OLD is not set
-@@ -751,18 +852,20 @@
- # CONFIG_FB_KYRO is not set
- # CONFIG_FB_3DFX is not set
- # CONFIG_FB_VOODOO1 is not set
-+# CONFIG_FB_CYBLA is not set
- # CONFIG_FB_TRIDENT is not set
- # CONFIG_FB_PM3 is not set
-+# CONFIG_FB_S1D13XXX is not set
- # CONFIG_FB_VIRTUAL is not set
- 
- #
- # Console display driver support
- #
--CONFIG_STI_CONSOLE=y
-+CONFIG_DUMMY_CONSOLE=y
- CONFIG_DUMMY_CONSOLE_COLUMNS=160
- CONFIG_DUMMY_CONSOLE_ROWS=64
--CONFIG_DUMMY_CONSOLE=y
- CONFIG_FRAMEBUFFER_CONSOLE=y
-+CONFIG_STI_CONSOLE=y
- # CONFIG_FONTS is not set
- CONFIG_FONT_8x8=y
- CONFIG_FONT_8x16=y
-@@ -775,6 +878,7 @@
- # CONFIG_LOGO_LINUX_VGA16 is not set
- # CONFIG_LOGO_LINUX_CLUT224 is not set
- CONFIG_LOGO_PARISC_CLUT224=y
-+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
- 
- #
- # Sound
-@@ -784,7 +888,78 @@
- #
- # Advanced Linux Sound Architecture
- #
--# CONFIG_SND is not set
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_SEQUENCER_OSS=y
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+
-+#
-+# Generic devices
-+#
-+# CONFIG_SND_DUMMY is not set
-+# CONFIG_SND_VIRMIDI is not set
-+# CONFIG_SND_MTPAV is not set
-+# CONFIG_SND_SERIAL_U16550 is not set
-+# CONFIG_SND_MPU401 is not set
-+CONFIG_SND_AC97_CODEC=y
-+CONFIG_SND_AC97_BUS=y
-+
-+#
-+# PCI devices
-+#
-+# CONFIG_SND_ALI5451 is not set
-+# CONFIG_SND_ATIIXP is not set
-+# CONFIG_SND_ATIIXP_MODEM is not set
-+# CONFIG_SND_AU8810 is not set
-+# CONFIG_SND_AU8820 is not set
-+# CONFIG_SND_AU8830 is not set
-+# CONFIG_SND_AZT3328 is not set
-+# CONFIG_SND_BT87X is not set
-+# CONFIG_SND_CS46XX is not set
-+# CONFIG_SND_CS4281 is not set
-+# CONFIG_SND_EMU10K1 is not set
-+# CONFIG_SND_EMU10K1X is not set
-+# CONFIG_SND_CA0106 is not set
-+# CONFIG_SND_KORG1212 is not set
-+# CONFIG_SND_MIXART is not set
-+# CONFIG_SND_NM256 is not set
-+# CONFIG_SND_RME32 is not set
-+# CONFIG_SND_RME96 is not set
-+# CONFIG_SND_RME9652 is not set
-+# CONFIG_SND_HDSP is not set
-+# CONFIG_SND_HDSPM is not set
-+# CONFIG_SND_TRIDENT is not set
-+# CONFIG_SND_YMFPCI is not set
-+CONFIG_SND_AD1889=y
-+# CONFIG_SND_AD1889_OPL3 is not set
-+# CONFIG_SND_CMIPCI is not set
-+# CONFIG_SND_ENS1370 is not set
-+# CONFIG_SND_ENS1371 is not set
-+# CONFIG_SND_ES1938 is not set
-+# CONFIG_SND_ES1968 is not set
-+# CONFIG_SND_MAESTRO3 is not set
-+# CONFIG_SND_FM801 is not set
-+# CONFIG_SND_ICE1712 is not set
-+# CONFIG_SND_ICE1724 is not set
-+# CONFIG_SND_INTEL8X0 is not set
-+# CONFIG_SND_INTEL8X0M is not set
-+# CONFIG_SND_SONICVIBES is not set
-+# CONFIG_SND_VIA82XX is not set
-+# CONFIG_SND_VIA82XX_MODEM is not set
-+# CONFIG_SND_VX222 is not set
-+# CONFIG_SND_HDA_INTEL is not set
-+
-+#
-+# USB devices
-+#
-+# CONFIG_SND_USB_AUDIO is not set
- 
- #
- # Open Sound System
-@@ -794,6 +969,8 @@
- #
- # USB support
- #
-+CONFIG_USB_ARCH_HAS_HCD=y
-+CONFIG_USB_ARCH_HAS_OHCI=y
- CONFIG_USB=y
- CONFIG_USB_DEBUG=y
- 
-@@ -804,23 +981,23 @@
- # CONFIG_USB_BANDWIDTH is not set
- # CONFIG_USB_DYNAMIC_MINORS is not set
- # CONFIG_USB_OTG is not set
--CONFIG_USB_ARCH_HAS_HCD=y
--CONFIG_USB_ARCH_HAS_OHCI=y
- 
- #
- # USB Host Controller Drivers
- #
- # CONFIG_USB_EHCI_HCD is not set
-+# CONFIG_USB_ISP116X_HCD is not set
- CONFIG_USB_OHCI_HCD=y
-+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
- # CONFIG_USB_UHCI_HCD is not set
- # CONFIG_USB_SL811_HCD is not set
- 
- #
- # USB Device Class drivers
- #
--# CONFIG_USB_AUDIO is not set
-+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
- # CONFIG_USB_BLUETOOTH_TTY is not set
--# CONFIG_USB_MIDI is not set
- # CONFIG_USB_ACM is not set
- CONFIG_USB_PRINTER=m
- 
-@@ -829,12 +1006,11 @@
- #
- CONFIG_USB_STORAGE=m
- # CONFIG_USB_STORAGE_DEBUG is not set
--# CONFIG_USB_STORAGE_RW_DETECT is not set
--CONFIG_USB_STORAGE_DATAFAB=y
--CONFIG_USB_STORAGE_FREECOM=y
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
- # CONFIG_USB_STORAGE_ISD200 is not set
- CONFIG_USB_STORAGE_DPCM=y
--CONFIG_USB_STORAGE_HP8200e=y
-+CONFIG_USB_STORAGE_USBAT=y
- CONFIG_USB_STORAGE_SDDR09=y
- CONFIG_USB_STORAGE_SDDR55=y
- CONFIG_USB_STORAGE_JUMPSHOT=y
-@@ -846,21 +1022,25 @@
- CONFIG_USB_HIDINPUT=y
- # CONFIG_HID_FF is not set
- CONFIG_USB_HIDDEV=y
--CONFIG_USB_AIPTEK=m
--CONFIG_USB_WACOM=m
--CONFIG_USB_KBTAB=m
-+# CONFIG_USB_AIPTEK is not set
-+# CONFIG_USB_WACOM is not set
-+# CONFIG_USB_ACECAD is not set
-+# CONFIG_USB_KBTAB is not set
- # CONFIG_USB_POWERMATE is not set
- # CONFIG_USB_MTOUCH is not set
-+# CONFIG_USB_ITMTOUCH is not set
- # CONFIG_USB_EGALAX is not set
-+# CONFIG_USB_YEALINK is not set
- # CONFIG_USB_XPAD is not set
- # CONFIG_USB_ATI_REMOTE is not set
-+# CONFIG_USB_KEYSPAN_REMOTE is not set
-+# CONFIG_USB_APPLETOUCH is not set
- 
- #
- # USB Imaging devices
- #
- CONFIG_USB_MDC800=m
- CONFIG_USB_MICROTEK=m
--CONFIG_USB_HPUSBSCSI=m
- 
- #
- # USB Multimedia devices
-@@ -879,6 +1059,7 @@
- # CONFIG_USB_PEGASUS is not set
- # CONFIG_USB_RTL8150 is not set
- # CONFIG_USB_USBNET is not set
-+# CONFIG_USB_MON is not set
- 
- #
- # USB port drivers
-@@ -894,7 +1075,6 @@
- #
- # CONFIG_USB_EMI62 is not set
- # CONFIG_USB_EMI26 is not set
--# CONFIG_USB_TIGL is not set
- # CONFIG_USB_AUERSWALD is not set
- # CONFIG_USB_RIO500 is not set
- CONFIG_USB_LEGOTOWER=m
-@@ -903,10 +1083,12 @@
- # CONFIG_USB_CYTHERM is not set
- # CONFIG_USB_PHIDGETKIT is not set
- # CONFIG_USB_PHIDGETSERVO is not set
-+# CONFIG_USB_IDMOUSE is not set
-+# CONFIG_USB_LD is not set
- # CONFIG_USB_TEST is not set
- 
- #
--# USB ATM/DSL drivers
-+# USB DSL modem support
- #
- 
- #
-@@ -920,27 +1102,41 @@
- # CONFIG_MMC is not set
- 
- #
-+# InfiniBand support
-+#
-+# CONFIG_INFINIBAND is not set
-+
-+#
-+# SN Devices
-+#
-+
-+#
- # File systems
- #
- CONFIG_EXT2_FS=y
- # CONFIG_EXT2_FS_XATTR is not set
-+# CONFIG_EXT2_FS_XIP is not set
- CONFIG_EXT3_FS=y
- # CONFIG_EXT3_FS_XATTR is not set
- CONFIG_JBD=y
- # CONFIG_JBD_DEBUG is not set
- # CONFIG_REISERFS_FS is not set
- # CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
- CONFIG_XFS_FS=m
--# CONFIG_XFS_RT is not set
-+CONFIG_XFS_EXPORT=y
- # CONFIG_XFS_QUOTA is not set
- # CONFIG_XFS_SECURITY is not set
- # CONFIG_XFS_POSIX_ACL is not set
-+# CONFIG_XFS_RT is not set
- # CONFIG_MINIX_FS is not set
- # CONFIG_ROMFS_FS is not set
-+CONFIG_INOTIFY=y
- # CONFIG_QUOTA is not set
- CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- CONFIG_AUTOFS4_FS=y
-+# CONFIG_FUSE_FS is not set
- 
- #
- # CD-ROM/DVD Filesystems
-@@ -966,13 +1162,11 @@
- CONFIG_PROC_FS=y
- CONFIG_PROC_KCORE=y
- CONFIG_SYSFS=y
--# CONFIG_DEVFS_FS is not set
--# CONFIG_DEVPTS_FS_XATTR is not set
- CONFIG_TMPFS=y
--# CONFIG_TMPFS_XATTR is not set
- # CONFIG_HUGETLBFS is not set
- # CONFIG_HUGETLB_PAGE is not set
- CONFIG_RAMFS=y
-+# CONFIG_RELAYFS_FS is not set
- 
- #
- # Miscellaneous filesystems
-@@ -996,16 +1190,19 @@
- #
- CONFIG_NFS_FS=y
- CONFIG_NFS_V3=y
-+# CONFIG_NFS_V3_ACL is not set
- # CONFIG_NFS_V4 is not set
- # CONFIG_NFS_DIRECTIO is not set
- CONFIG_NFSD=y
- CONFIG_NFSD_V3=y
-+# CONFIG_NFSD_V3_ACL is not set
- # CONFIG_NFSD_V4 is not set
- # CONFIG_NFSD_TCP is not set
- CONFIG_ROOT_NFS=y
- CONFIG_LOCKD=y
- CONFIG_LOCKD_V4=y
- CONFIG_EXPORTFS=y
-+CONFIG_NFS_COMMON=y
- CONFIG_SUNRPC=y
- # CONFIG_RPCSEC_GSS_KRB5 is not set
- # CONFIG_RPCSEC_GSS_SPKM3 is not set
-@@ -1014,6 +1211,7 @@
- # CONFIG_NCP_FS is not set
- # CONFIG_CODA_FS is not set
- # CONFIG_AFS_FS is not set
-+# CONFIG_9P_FS is not set
- 
- #
- # Partition Types
-@@ -1074,13 +1272,19 @@
- #
- # Kernel hacking
- #
-+# CONFIG_PRINTK_TIME is not set
- CONFIG_DEBUG_KERNEL=y
- CONFIG_MAGIC_SYSRQ=y
-+CONFIG_LOG_BUF_SHIFT=16
-+CONFIG_DETECT_SOFTLOCKUP=y
- # CONFIG_SCHEDSTATS is not set
- # CONFIG_DEBUG_SLAB is not set
- # CONFIG_DEBUG_SPINLOCK is not set
-+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
- # CONFIG_DEBUG_KOBJECT is not set
- # CONFIG_DEBUG_INFO is not set
-+# CONFIG_DEBUG_IOREMAP is not set
-+# CONFIG_DEBUG_FS is not set
- 
- #
- # Security options
-@@ -1092,21 +1296,22 @@
- # Cryptographic options
- #
- CONFIG_CRYPTO=y
--CONFIG_CRYPTO_HMAC=y
-+# CONFIG_CRYPTO_HMAC is not set
- CONFIG_CRYPTO_NULL=m
--CONFIG_CRYPTO_MD4=m
-+# CONFIG_CRYPTO_MD4 is not set
- CONFIG_CRYPTO_MD5=m
--CONFIG_CRYPTO_SHA1=m
--CONFIG_CRYPTO_SHA256=m
-+# CONFIG_CRYPTO_SHA1 is not set
-+# CONFIG_CRYPTO_SHA256 is not set
- # CONFIG_CRYPTO_SHA512 is not set
- # CONFIG_CRYPTO_WP512 is not set
-+# CONFIG_CRYPTO_TGR192 is not set
- CONFIG_CRYPTO_DES=m
- CONFIG_CRYPTO_BLOWFISH=m
--CONFIG_CRYPTO_TWOFISH=m
--CONFIG_CRYPTO_SERPENT=m
--CONFIG_CRYPTO_AES=m
--CONFIG_CRYPTO_CAST5=m
--CONFIG_CRYPTO_CAST6=m
-+# CONFIG_CRYPTO_TWOFISH is not set
-+# CONFIG_CRYPTO_SERPENT is not set
-+# CONFIG_CRYPTO_AES is not set
-+# CONFIG_CRYPTO_CAST5 is not set
-+# CONFIG_CRYPTO_CAST6 is not set
- # CONFIG_CRYPTO_TEA is not set
- # CONFIG_CRYPTO_ARC4 is not set
- # CONFIG_CRYPTO_KHAZAD is not set
-@@ -1117,9 +1322,14 @@
- CONFIG_CRYPTO_TEST=m
- 
- #
-+# Hardware crypto devices
-+#
-+
-+#
- # Library routines
- #
- CONFIG_CRC_CCITT=m
-+# CONFIG_CRC16 is not set
- CONFIG_CRC32=y
- CONFIG_LIBCRC32C=m
- CONFIG_ZLIB_INFLATE=m
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/defconfig CVS2_6_14_PA0/arch/parisc/defconfig
---- LINUS_2_6_14/arch/parisc/defconfig	2005-10-27 21:30:33.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/defconfig	2005-10-21 21:16:47.000000000 -0600
-@@ -1,38 +1,56 @@
- #
- # Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.14-rc5-pa1
-+# Fri Oct 21 23:01:33 2005
- #
- CONFIG_PARISC=y
- CONFIG_MMU=y
- CONFIG_STACK_GROWSUP=y
- CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+CONFIG_GENERIC_CALIBRATE_DELAY=y
-+CONFIG_GENERIC_HARDIRQS=y
-+CONFIG_GENERIC_IRQ_PROBE=y
- 
- #
- # Code maturity level options
- #
- CONFIG_EXPERIMENTAL=y
- CONFIG_CLEAN_COMPILE=y
--CONFIG_STANDALONE=y
- CONFIG_BROKEN_ON_SMP=y
-+CONFIG_INIT_ENV_ARG_LIMIT=32
- 
- #
- # General setup
- #
-+CONFIG_LOCALVERSION=""
-+# CONFIG_LOCALVERSION_AUTO is not set
- CONFIG_SWAP=y
- CONFIG_SYSVIPC=y
-+# CONFIG_POSIX_MQUEUE is not set
- # CONFIG_BSD_PROCESS_ACCT is not set
- CONFIG_SYSCTL=y
--CONFIG_LOG_BUF_SHIFT=15
-+# CONFIG_AUDIT is not set
- # CONFIG_HOTPLUG is not set
-+CONFIG_KOBJECT_UEVENT=y
- CONFIG_IKCONFIG=y
- CONFIG_IKCONFIG_PROC=y
-+CONFIG_INITRAMFS_SOURCE=""
- # CONFIG_EMBEDDED is not set
- CONFIG_KALLSYMS=y
-+# CONFIG_KALLSYMS_ALL is not set
-+# CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_PRINTK=y
-+CONFIG_BUG=y
-+CONFIG_BASE_FULL=y
- CONFIG_FUTEX=y
- CONFIG_EPOLL=y
--CONFIG_IOSCHED_NOOP=y
--CONFIG_IOSCHED_AS=y
--CONFIG_IOSCHED_DEADLINE=y
--# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-+CONFIG_SHMEM=y
-+CONFIG_CC_ALIGN_FUNCTIONS=0
-+CONFIG_CC_ALIGN_LABELS=0
-+CONFIG_CC_ALIGN_LOOPS=0
-+CONFIG_CC_ALIGN_JUMPS=0
-+# CONFIG_TINY_SHMEM is not set
-+CONFIG_BASE_SMALL=0
- 
- #
- # Loadable module support
-@@ -45,10 +63,21 @@
- CONFIG_PA7000=y
- # CONFIG_PA7100LC is not set
- # CONFIG_PA7200 is not set
-+# CONFIG_PA7300LC is not set
- # CONFIG_PA8X00 is not set
- CONFIG_PA11=y
--# CONFIG_64BIT is not set
- # CONFIG_SMP is not set
-+# CONFIG_HZ_100 is not set
-+CONFIG_HZ_250=y
-+# CONFIG_HZ_1000 is not set
-+CONFIG_HZ=250
-+CONFIG_SELECT_MEMORY_MODEL=y
-+CONFIG_FLATMEM_MANUAL=y
-+# CONFIG_DISCONTIGMEM_MANUAL is not set
-+# CONFIG_SPARSEMEM_MANUAL is not set
-+CONFIG_FLATMEM=y
-+CONFIG_FLAT_NODE_MEM_MAP=y
-+# CONFIG_SPARSEMEM_STATIC is not set
- # CONFIG_PREEMPT is not set
- # CONFIG_HPUX is not set
- 
-@@ -65,14 +94,29 @@
- # CONFIG_ISA is not set
- CONFIG_PCI=y
- CONFIG_PCI_LEGACY_PROC=y
--CONFIG_PCI_NAMES=y
-+# CONFIG_PCI_DEBUG is not set
- CONFIG_GSC_DINO=y
- CONFIG_PCI_LBA=y
- CONFIG_IOSAPIC=y
- CONFIG_IOMMU_SBA=y
-+
-+#
-+# PCCARD (PCMCIA/CardBus) support
-+#
-+# CONFIG_PCCARD is not set
-+
-+#
-+# PCI Hotplug Support
-+#
-+# CONFIG_HOTPLUG_PCI is not set
-+
-+#
-+# PA-RISC specific drivers
-+#
- CONFIG_SUPERIO=y
- CONFIG_CHASSIS_LCD_LED=y
- CONFIG_PDC_CHASSIS=y
-+CONFIG_PDC_STABLE=y
- 
- #
- # Executable file formats
-@@ -81,15 +125,97 @@
- # CONFIG_BINFMT_MISC is not set
- 
- #
-+# Networking
-+#
-+CONFIG_NET=y
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+CONFIG_UNIX=y
-+# CONFIG_NET_KEY is not set
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_FIB_HASH=y
-+CONFIG_IP_PNP=y
-+# CONFIG_IP_PNP_DHCP is not set
-+CONFIG_IP_PNP_BOOTP=y
-+# CONFIG_IP_PNP_RARP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_IP_MROUTE is not set
-+# CONFIG_ARPD is not set
-+# CONFIG_SYN_COOKIES is not set
-+# CONFIG_INET_AH is not set
-+# CONFIG_INET_ESP is not set
-+# CONFIG_INET_IPCOMP is not set
-+# CONFIG_INET_TUNNEL is not set
-+# CONFIG_INET_DIAG is not set
-+# CONFIG_TCP_CONG_ADVANCED is not set
-+CONFIG_TCP_CONG_BIC=y
-+CONFIG_IPV6=y
-+# CONFIG_IPV6_PRIVACY is not set
-+# CONFIG_INET6_AH is not set
-+# CONFIG_INET6_ESP is not set
-+# CONFIG_INET6_IPCOMP is not set
-+# CONFIG_INET6_TUNNEL is not set
-+# CONFIG_IPV6_TUNNEL is not set
-+# CONFIG_NETFILTER is not set
-+
-+#
-+# DCCP Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_DCCP is not set
-+
-+#
-+# SCTP Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_SCTP is not set
-+# CONFIG_ATM is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_LLC2 is not set
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_SCHED is not set
-+# CONFIG_NET_CLS_ROUTE is not set
-+
-+#
-+# Network testing
-+#
-+# CONFIG_NET_PKTGEN is not set
-+# CONFIG_HAMRADIO is not set
-+# CONFIG_IRDA is not set
-+# CONFIG_BT is not set
-+# CONFIG_IEEE80211 is not set
-+
-+#
- # Device Drivers
- #
- 
- #
- # Generic Driver Options
- #
-+CONFIG_STANDALONE=y
-+CONFIG_PREVENT_FIRMWARE_BUILD=y
-+# CONFIG_FW_LOADER is not set
- # CONFIG_DEBUG_DRIVER is not set
- 
- #
-+# Connector - unified userspace <-> kernelspace linker
-+#
-+# CONFIG_CONNECTOR is not set
-+
-+#
- # Memory Technology Devices (MTD)
- #
- # CONFIG_MTD is not set
-@@ -99,12 +225,10 @@
- #
- CONFIG_PARPORT=y
- CONFIG_PARPORT_PC=y
--CONFIG_PARPORT_PC_CML1=y
- # CONFIG_PARPORT_SERIAL is not set
- # CONFIG_PARPORT_PC_FIFO is not set
- # CONFIG_PARPORT_PC_SUPERIO is not set
- CONFIG_PARPORT_GSC=y
--# CONFIG_PARPORT_OTHER is not set
- # CONFIG_PARPORT_1284 is not set
- 
- #
-@@ -114,18 +238,31 @@
- #
- # Block devices
- #
--# CONFIG_BLK_DEV_FD is not set
- # CONFIG_PARIDE is not set
- # CONFIG_BLK_CPQ_DA is not set
- # CONFIG_BLK_CPQ_CISS_DA is not set
- # CONFIG_BLK_DEV_DAC960 is not set
- # CONFIG_BLK_DEV_UMEM is not set
-+# CONFIG_BLK_DEV_COW_COMMON is not set
- CONFIG_BLK_DEV_LOOP=y
- CONFIG_BLK_DEV_CRYPTOLOOP=y
- # CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_SX8 is not set
-+# CONFIG_BLK_DEV_UB is not set
- CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_COUNT=16
- CONFIG_BLK_DEV_RAM_SIZE=4096
- CONFIG_BLK_DEV_INITRD=y
-+# CONFIG_CDROM_PKTCDVD is not set
-+
-+#
-+# IO Schedulers
-+#
-+CONFIG_IOSCHED_NOOP=y
-+CONFIG_IOSCHED_AS=y
-+CONFIG_IOSCHED_DEADLINE=y
-+CONFIG_IOSCHED_CFQ=y
-+# CONFIG_ATA_OVER_ETH is not set
- 
- #
- # ATA/ATAPI/MFM/RLL support
-@@ -135,6 +272,7 @@
- #
- # SCSI device support
- #
-+# CONFIG_RAID_ATTRS is not set
- CONFIG_SCSI=y
- CONFIG_SCSI_PROC_FS=y
- 
-@@ -147,53 +285,59 @@
- CONFIG_BLK_DEV_SR=y
- # CONFIG_BLK_DEV_SR_VENDOR is not set
- CONFIG_CHR_DEV_SG=y
-+# CONFIG_CHR_DEV_SCH is not set
- 
- #
- # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
- #
- # CONFIG_SCSI_MULTI_LUN is not set
--# CONFIG_SCSI_REPORT_LUNS is not set
- # CONFIG_SCSI_CONSTANTS is not set
- # CONFIG_SCSI_LOGGING is not set
- 
- #
-+# SCSI Transport Attributes
-+#
-+CONFIG_SCSI_SPI_ATTRS=y
-+# CONFIG_SCSI_FC_ATTRS is not set
-+# CONFIG_SCSI_ISCSI_ATTRS is not set
-+# CONFIG_SCSI_SAS_ATTRS is not set
-+
-+#
- # SCSI low-level drivers
- #
- # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-+# CONFIG_SCSI_3W_9XXX is not set
- # CONFIG_SCSI_ACARD is not set
- # CONFIG_SCSI_AHA1740 is not set
- # CONFIG_SCSI_AACRAID is not set
- # CONFIG_SCSI_AIC7XXX is not set
- # CONFIG_SCSI_AIC7XXX_OLD is not set
- # CONFIG_SCSI_AIC79XX is not set
--# CONFIG_SCSI_ADVANSYS is not set
--# CONFIG_SCSI_MEGARAID is not set
-+# CONFIG_SCSI_DPT_I2O is not set
-+# CONFIG_MEGARAID_NEWGEN is not set
-+# CONFIG_MEGARAID_LEGACY is not set
-+# CONFIG_MEGARAID_SAS is not set
- # CONFIG_SCSI_SATA is not set
--# CONFIG_SCSI_BUSLOGIC is not set
--# CONFIG_SCSI_CPQFCTS is not set
- # CONFIG_SCSI_DMX3191D is not set
--# CONFIG_SCSI_EATA is not set
--# CONFIG_SCSI_EATA_PIO is not set
- # CONFIG_SCSI_FUTURE_DOMAIN is not set
--# CONFIG_SCSI_GDTH is not set
- # CONFIG_SCSI_IPS is not set
-+# CONFIG_SCSI_INITIO is not set
- # CONFIG_SCSI_INIA100 is not set
- # CONFIG_SCSI_PPA is not set
- # CONFIG_SCSI_IMM is not set
- CONFIG_SCSI_LASI700=y
--CONFIG_53C700_MEM_MAPPED=y
- CONFIG_53C700_LE_ON_BE=y
- CONFIG_SCSI_SYM53C8XX_2=y
- CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
- CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
- CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
- # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
-+# CONFIG_SCSI_IPR is not set
- CONFIG_SCSI_ZALON=y
- CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
- CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
- CONFIG_SCSI_NCR53C8XX_SYNC=20
- # CONFIG_SCSI_NCR53C8XX_PROFILE is not set
--# CONFIG_SCSI_QLOGIC_ISP is not set
- # CONFIG_SCSI_QLOGIC_FC is not set
- # CONFIG_SCSI_QLOGIC_1280 is not set
- CONFIG_SCSI_QLA2XXX=y
-@@ -202,7 +346,8 @@
- # CONFIG_SCSI_QLA2300 is not set
- # CONFIG_SCSI_QLA2322 is not set
- # CONFIG_SCSI_QLA6312 is not set
--# CONFIG_SCSI_QLA6322 is not set
-+# CONFIG_SCSI_QLA24XX is not set
-+# CONFIG_SCSI_LPFC is not set
- # CONFIG_SCSI_SIM710 is not set
- # CONFIG_SCSI_DC395x is not set
- # CONFIG_SCSI_DC390T is not set
-@@ -217,15 +362,20 @@
- CONFIG_MD_LINEAR=y
- CONFIG_MD_RAID0=y
- CONFIG_MD_RAID1=y
-+# CONFIG_MD_RAID10 is not set
- CONFIG_MD_RAID5=y
- # CONFIG_MD_RAID6 is not set
- # CONFIG_MD_MULTIPATH is not set
-+# CONFIG_MD_FAULTY is not set
- # CONFIG_BLK_DEV_DM is not set
- 
- #
- # Fusion MPT device support
- #
- # CONFIG_FUSION is not set
-+# CONFIG_FUSION_SPI is not set
-+# CONFIG_FUSION_FC is not set
-+# CONFIG_FUSION_SAS is not set
- 
- #
- # IEEE 1394 (FireWire) support
-@@ -238,80 +388,23 @@
- # CONFIG_I2O is not set
- 
- #
--# Macintosh device drivers
--#
--
--#
--# Networking support
--#
--CONFIG_NET=y
--
--#
--# Networking options
--#
--CONFIG_PACKET=y
--CONFIG_PACKET_MMAP=y
--CONFIG_NETLINK_DEV=y
--CONFIG_UNIX=y
--# CONFIG_NET_KEY is not set
--CONFIG_INET=y
--CONFIG_IP_MULTICAST=y
--# CONFIG_IP_ADVANCED_ROUTER is not set
--CONFIG_IP_PNP=y
--# CONFIG_IP_PNP_DHCP is not set
--CONFIG_IP_PNP_BOOTP=y
--# CONFIG_IP_PNP_RARP is not set
--# CONFIG_NET_IPIP is not set
--# CONFIG_NET_IPGRE is not set
--# CONFIG_IP_MROUTE is not set
--# CONFIG_ARPD is not set
--# CONFIG_INET_ECN is not set
--# CONFIG_SYN_COOKIES is not set
--# CONFIG_INET_AH is not set
--# CONFIG_INET_ESP is not set
--# CONFIG_INET_IPCOMP is not set
--# CONFIG_IPV6 is not set
--# CONFIG_DECNET is not set
--# CONFIG_BRIDGE is not set
--# CONFIG_NETFILTER is not set
--
--#
--# SCTP Configuration (EXPERIMENTAL)
--#
--CONFIG_IPV6_SCTP__=y
--# CONFIG_IP_SCTP is not set
--# CONFIG_ATM is not set
--# CONFIG_VLAN_8021Q is not set
--# CONFIG_LLC2 is not set
--# CONFIG_IPX is not set
--# CONFIG_ATALK is not set
--# CONFIG_X25 is not set
--# CONFIG_LAPB is not set
--# CONFIG_NET_DIVERT is not set
--# CONFIG_ECONET is not set
--# CONFIG_WAN_ROUTER is not set
--# CONFIG_NET_HW_FLOWCONTROL is not set
--
--#
--# QoS and/or fair queueing
--#
--# CONFIG_NET_SCHED is not set
--
--#
--# Network testing
-+# Network device support
- #
--# CONFIG_NET_PKTGEN is not set
- CONFIG_NETDEVICES=y
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
- 
- #
- # ARCnet devices
- #
- # CONFIG_ARCNET is not set
--# CONFIG_DUMMY is not set
--# CONFIG_BONDING is not set
--# CONFIG_EQUALIZER is not set
--# CONFIG_TUN is not set
--# CONFIG_ETHERTAP is not set
-+
-+#
-+# PHY device support
-+#
-+# CONFIG_PHYLIB is not set
- 
- #
- # Ethernet (10 or 100Mbit)
-@@ -321,6 +414,7 @@
- CONFIG_LASI_82596=y
- # CONFIG_HAPPYMEAL is not set
- # CONFIG_SUNGEM is not set
-+# CONFIG_CASSINI is not set
- # CONFIG_NET_VENDOR_3COM is not set
- # CONFIG_NET_VENDOR_SMC is not set
- 
-@@ -336,6 +430,7 @@
- # CONFIG_DE4X5 is not set
- # CONFIG_WINBOND_840 is not set
- # CONFIG_DM9102 is not set
-+# CONFIG_ULI526X is not set
- # CONFIG_DEPCA is not set
- # CONFIG_HP100 is not set
- CONFIG_NET_PCI=y
-@@ -361,30 +456,37 @@
- # CONFIG_SUNDANCE is not set
- # CONFIG_TLAN is not set
- # CONFIG_VIA_RHINE is not set
-+# CONFIG_NET_POCKET is not set
- 
- #
- # Ethernet (1000 Mbit)
- #
--# CONFIG_ACENIC is not set
--CONFIG_DL2K=y
-+CONFIG_ACENIC=y
-+# CONFIG_ACENIC_OMIT_TIGON_I is not set
-+# CONFIG_DL2K is not set
- # CONFIG_E1000 is not set
- # CONFIG_NS83820 is not set
- # CONFIG_HAMACHI is not set
- # CONFIG_YELLOWFIN is not set
- # CONFIG_R8169 is not set
- # CONFIG_SIS190 is not set
-+# CONFIG_SKGE is not set
- # CONFIG_SK98LIN is not set
--# CONFIG_TIGON3 is not set
-+# CONFIG_VIA_VELOCITY is not set
-+CONFIG_TIGON3=y
-+# CONFIG_BNX2 is not set
- 
- #
- # Ethernet (10000 Mbit)
- #
-+# CONFIG_CHELSIO_T1 is not set
- # CONFIG_IXGB is not set
--# CONFIG_FDDI is not set
--# CONFIG_HIPPI is not set
--# CONFIG_PLIP is not set
--# CONFIG_PPP is not set
--# CONFIG_SLIP is not set
-+# CONFIG_S2IO is not set
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
- 
- #
- # Wireless LAN (non-hamradio)
-@@ -399,38 +501,30 @@
- #
- # Wireless 802.11b ISA/PCI cards support
- #
--CONFIG_AIRO=y
- # CONFIG_HERMES is not set
- # CONFIG_ATMEL is not set
--CONFIG_NET_WIRELESS=y
- 
- #
--# Token Ring devices
-+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
- #
--# CONFIG_TR is not set
--# CONFIG_NET_FC is not set
--# CONFIG_RCPCI is not set
--# CONFIG_SHAPER is not set
-+# CONFIG_PRISM54 is not set
-+# CONFIG_HOSTAP is not set
-+CONFIG_NET_WIRELESS=y
- 
- #
- # Wan interfaces
- #
- # CONFIG_WAN is not set
--
--#
--# Amateur Radio support
--#
--# CONFIG_HAMRADIO is not set
--
--#
--# IrDA (infrared) support
--#
--# CONFIG_IRDA is not set
--
--#
--# Bluetooth support
--#
--# CONFIG_BT is not set
-+# CONFIG_FDDI is not set
-+# CONFIG_HIPPI is not set
-+# CONFIG_PLIP is not set
-+# CONFIG_PPP is not set
-+# CONFIG_SLIP is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_SHAPER is not set
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
- 
- #
- # ISDN subsystem
-@@ -460,51 +554,67 @@
- # CONFIG_INPUT_EVBUG is not set
- 
- #
--# Input I/O drivers
--#
--# CONFIG_GAMEPORT is not set
--CONFIG_SOUND_GAMEPORT=y
--CONFIG_SERIO=y
--# CONFIG_SERIO_SERPORT is not set
--# CONFIG_SERIO_PARKBD is not set
--CONFIG_SERIO_GSCPS2=y
--CONFIG_HP_SDC=y
--CONFIG_HIL_MLC=y
--# CONFIG_SERIO_PCIPS2 is not set
--
--#
- # Input Device Drivers
- #
- CONFIG_INPUT_KEYBOARD=y
- # CONFIG_KEYBOARD_ATKBD is not set
- # CONFIG_KEYBOARD_SUNKBD is not set
-+# CONFIG_KEYBOARD_LKKBD is not set
- # CONFIG_KEYBOARD_XTKBD is not set
- # CONFIG_KEYBOARD_NEWTON is not set
-+CONFIG_KEYBOARD_HIL_OLD=y
- CONFIG_KEYBOARD_HIL=y
- CONFIG_INPUT_MOUSE=y
- # CONFIG_MOUSE_PS2 is not set
- # CONFIG_MOUSE_SERIAL is not set
-+# CONFIG_MOUSE_VSXXXAA is not set
- # CONFIG_MOUSE_HIL is not set
- CONFIG_INPUT_JOYSTICK=y
-+# CONFIG_JOYSTICK_ANALOG is not set
-+# CONFIG_JOYSTICK_A3D is not set
-+# CONFIG_JOYSTICK_ADI is not set
-+# CONFIG_JOYSTICK_COBRA is not set
-+# CONFIG_JOYSTICK_GF2K is not set
-+# CONFIG_JOYSTICK_GRIP is not set
-+# CONFIG_JOYSTICK_GRIP_MP is not set
-+# CONFIG_JOYSTICK_GUILLEMOT is not set
-+# CONFIG_JOYSTICK_INTERACT is not set
-+# CONFIG_JOYSTICK_SIDEWINDER is not set
-+# CONFIG_JOYSTICK_TMDC is not set
- # CONFIG_JOYSTICK_IFORCE is not set
- # CONFIG_JOYSTICK_WARRIOR is not set
- # CONFIG_JOYSTICK_MAGELLAN is not set
- # CONFIG_JOYSTICK_SPACEORB is not set
- # CONFIG_JOYSTICK_SPACEBALL is not set
- # CONFIG_JOYSTICK_STINGER is not set
--# CONFIG_JOYSTICK_TWIDDLER is not set
-+# CONFIG_JOYSTICK_TWIDJOY is not set
- # CONFIG_JOYSTICK_DB9 is not set
- # CONFIG_JOYSTICK_GAMECON is not set
- # CONFIG_JOYSTICK_TURBOGRAFX is not set
--# CONFIG_INPUT_JOYDUMP is not set
-+# CONFIG_JOYSTICK_JOYDUMP is not set
- CONFIG_INPUT_TOUCHSCREEN=y
- # CONFIG_TOUCHSCREEN_GUNZE is not set
-+# CONFIG_TOUCHSCREEN_ELO is not set
-+# CONFIG_TOUCHSCREEN_MTOUCH is not set
-+# CONFIG_TOUCHSCREEN_MK712 is not set
- CONFIG_INPUT_MISC=y
--# CONFIG_INPUT_PCSPKR is not set
- # CONFIG_INPUT_UINPUT is not set
- CONFIG_HP_SDC_RTC=y
- 
- #
-+# Hardware I/O ports
-+#
-+CONFIG_SERIO=y
-+# CONFIG_SERIO_SERPORT is not set
-+# CONFIG_SERIO_PARKBD is not set
-+CONFIG_SERIO_GSCPS2=y
-+CONFIG_HP_SDC=y
-+CONFIG_HIL_MLC=y
-+# CONFIG_SERIO_PCIPS2 is not set
-+# CONFIG_SERIO_RAW is not set
-+# CONFIG_GAMEPORT is not set
-+
-+#
- # Character devices
- #
- CONFIG_VT=y
-@@ -522,16 +632,16 @@
- CONFIG_SERIAL_8250_MANY_PORTS=y
- CONFIG_SERIAL_8250_SHARE_IRQ=y
- # CONFIG_SERIAL_8250_DETECT_IRQ is not set
--# CONFIG_SERIAL_8250_MULTIPORT is not set
- # CONFIG_SERIAL_8250_RSA is not set
- 
- #
- # Non-8250 serial port support
- #
--# CONFIG_SERIAL_MUX is not set
--# CONFIG_PDC_CONSOLE is not set
-+CONFIG_SERIAL_MUX=y
-+CONFIG_SERIAL_MUX_CONSOLE=y
- CONFIG_SERIAL_CORE=y
- CONFIG_SERIAL_CORE_CONSOLE=y
-+# CONFIG_SERIAL_JSM is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_LEGACY_PTYS=y
- CONFIG_LEGACY_PTY_COUNT=256
-@@ -541,12 +651,6 @@
- # CONFIG_TIPAR is not set
- 
- #
--# Mice
--#
--# CONFIG_BUSMOUSE is not set
--# CONFIG_QIC02_TAPE is not set
--
--#
- # IPMI
- #
- # CONFIG_IPMI_HANDLER is not set
-@@ -555,7 +659,6 @@
- # Watchdog Cards
- #
- # CONFIG_WATCHDOG is not set
--# CONFIG_NVRAM is not set
- CONFIG_GEN_RTC=y
- # CONFIG_GEN_RTC_X is not set
- # CONFIG_DTLK is not set
-@@ -565,21 +668,40 @@
- #
- # Ftape, the floppy tape device driver
- #
--# CONFIG_FTAPE is not set
--# CONFIG_AGP is not set
- # CONFIG_DRM is not set
- # CONFIG_RAW_DRIVER is not set
- 
- #
-+# TPM devices
-+#
-+# CONFIG_TCG_TPM is not set
-+
-+#
- # I2C support
- #
- # CONFIG_I2C is not set
- 
- #
-+# Dallas's 1-wire bus
-+#
-+# CONFIG_W1 is not set
-+
-+#
-+# Hardware Monitoring support
-+#
-+CONFIG_HWMON=y
-+# CONFIG_HWMON_VID is not set
-+# CONFIG_HWMON_DEBUG_CHIP is not set
-+
-+#
- # Misc devices
- #
- 
- #
-+# Multimedia Capabilities Port drivers
-+#
-+
-+#
- # Multimedia devices
- #
- # CONFIG_VIDEO_DEV is not set
-@@ -593,34 +715,45 @@
- # Graphics support
- #
- CONFIG_FB=y
-+CONFIG_FB_CFB_FILLRECT=y
-+CONFIG_FB_CFB_COPYAREA=y
-+CONFIG_FB_CFB_IMAGEBLIT=y
-+CONFIG_FB_SOFT_CURSOR=y
-+# CONFIG_FB_MACMODES is not set
-+# CONFIG_FB_MODE_HELPERS is not set
-+# CONFIG_FB_TILEBLITTING is not set
-+# CONFIG_FB_CIRRUS is not set
- # CONFIG_FB_PM2 is not set
- # CONFIG_FB_CYBER2000 is not set
-+# CONFIG_FB_ASILIANT is not set
- # CONFIG_FB_IMSTT is not set
- CONFIG_FB_STI=y
-+# CONFIG_FB_NVIDIA is not set
- # CONFIG_FB_RIVA is not set
- # CONFIG_FB_MATROX is not set
- # CONFIG_FB_RADEON_OLD is not set
- # CONFIG_FB_RADEON is not set
- # CONFIG_FB_ATY128 is not set
- # CONFIG_FB_ATY is not set
-+# CONFIG_FB_SAVAGE is not set
- # CONFIG_FB_SIS is not set
- # CONFIG_FB_NEOMAGIC is not set
- # CONFIG_FB_KYRO is not set
- # CONFIG_FB_3DFX is not set
- # CONFIG_FB_VOODOO1 is not set
-+# CONFIG_FB_CYBLA is not set
- # CONFIG_FB_TRIDENT is not set
-+# CONFIG_FB_S1D13XXX is not set
- # CONFIG_FB_VIRTUAL is not set
- 
- #
- # Console display driver support
- #
--# CONFIG_MDA_CONSOLE is not set
--CONFIG_STI_CONSOLE=y
-+CONFIG_DUMMY_CONSOLE=y
- CONFIG_DUMMY_CONSOLE_COLUMNS=160
- CONFIG_DUMMY_CONSOLE_ROWS=64
--CONFIG_DUMMY_CONSOLE=y
- CONFIG_FRAMEBUFFER_CONSOLE=y
--CONFIG_PCI_CONSOLE=y
-+CONFIG_STI_CONSOLE=y
- # CONFIG_FONTS is not set
- CONFIG_FONT_8x8=y
- CONFIG_FONT_8x16=y
-@@ -629,6 +762,7 @@
- # Logo configuration
- #
- # CONFIG_LOGO is not set
-+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
- 
- #
- # Sound
-@@ -638,17 +772,94 @@
- #
- # Advanced Linux Sound Architecture
- #
--# CONFIG_SND is not set
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_SEQUENCER=y
-+# CONFIG_SND_SEQ_DUMMY is not set
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_SEQUENCER_OSS=y
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+
-+#
-+# Generic devices
-+#
-+# CONFIG_SND_DUMMY is not set
-+# CONFIG_SND_VIRMIDI is not set
-+# CONFIG_SND_MTPAV is not set
-+# CONFIG_SND_SERIAL_U16550 is not set
-+# CONFIG_SND_MPU401 is not set
-+CONFIG_SND_AC97_CODEC=y
-+CONFIG_SND_AC97_BUS=y
-+
-+#
-+# PCI devices
-+#
-+# CONFIG_SND_ALI5451 is not set
-+# CONFIG_SND_ATIIXP is not set
-+# CONFIG_SND_ATIIXP_MODEM is not set
-+# CONFIG_SND_AU8810 is not set
-+# CONFIG_SND_AU8820 is not set
-+# CONFIG_SND_AU8830 is not set
-+# CONFIG_SND_AZT3328 is not set
-+# CONFIG_SND_BT87X is not set
-+# CONFIG_SND_CS46XX is not set
-+# CONFIG_SND_CS4281 is not set
-+# CONFIG_SND_EMU10K1 is not set
-+# CONFIG_SND_EMU10K1X is not set
-+# CONFIG_SND_CA0106 is not set
-+# CONFIG_SND_KORG1212 is not set
-+# CONFIG_SND_MIXART is not set
-+# CONFIG_SND_NM256 is not set
-+# CONFIG_SND_RME32 is not set
-+# CONFIG_SND_RME96 is not set
-+# CONFIG_SND_RME9652 is not set
-+# CONFIG_SND_HDSP is not set
-+# CONFIG_SND_HDSPM is not set
-+# CONFIG_SND_TRIDENT is not set
-+# CONFIG_SND_YMFPCI is not set
-+CONFIG_SND_AD1889=y
-+# CONFIG_SND_AD1889_OPL3 is not set
-+# CONFIG_SND_CMIPCI is not set
-+# CONFIG_SND_ENS1370 is not set
-+# CONFIG_SND_ENS1371 is not set
-+# CONFIG_SND_ES1938 is not set
-+# CONFIG_SND_ES1968 is not set
-+# CONFIG_SND_MAESTRO3 is not set
-+# CONFIG_SND_FM801 is not set
-+# CONFIG_SND_ICE1712 is not set
-+# CONFIG_SND_ICE1724 is not set
-+# CONFIG_SND_INTEL8X0 is not set
-+# CONFIG_SND_INTEL8X0M is not set
-+# CONFIG_SND_SONICVIBES is not set
-+# CONFIG_SND_VIA82XX is not set
-+# CONFIG_SND_VIA82XX_MODEM is not set
-+# CONFIG_SND_VX222 is not set
-+# CONFIG_SND_HDA_INTEL is not set
-+
-+#
-+# USB devices
-+#
-+# CONFIG_SND_USB_AUDIO is not set
-+
-+#
-+# GSC devices
-+#
-+CONFIG_SND_HARMONY=y
- 
- #
- # Open Sound System
- #
- # CONFIG_SOUND_PRIME is not set
--# CONFIG_SOUND_HARMONY is not set
- 
- #
- # USB support
- #
-+CONFIG_USB_ARCH_HAS_HCD=y
-+CONFIG_USB_ARCH_HAS_OHCI=y
- CONFIG_USB=y
- CONFIG_USB_DEBUG=y
- 
-@@ -658,26 +869,36 @@
- # CONFIG_USB_DEVICEFS is not set
- # CONFIG_USB_BANDWIDTH is not set
- # CONFIG_USB_DYNAMIC_MINORS is not set
-+# CONFIG_USB_OTG is not set
- 
- #
- # USB Host Controller Drivers
- #
- CONFIG_USB_EHCI_HCD=y
-+# CONFIG_USB_EHCI_SPLIT_ISO is not set
-+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-+# CONFIG_USB_ISP116X_HCD is not set
- CONFIG_USB_OHCI_HCD=y
-+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
- # CONFIG_USB_UHCI_HCD is not set
-+# CONFIG_USB_SL811_HCD is not set
- 
- #
- # USB Device Class drivers
- #
--# CONFIG_USB_AUDIO is not set
-+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
- # CONFIG_USB_BLUETOOTH_TTY is not set
--# CONFIG_USB_MIDI is not set
- # CONFIG_USB_ACM is not set
- # CONFIG_USB_PRINTER is not set
-+
-+#
-+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
-+#
- # CONFIG_USB_STORAGE is not set
- 
- #
--# USB Human Interface Devices (HID)
-+# USB Input Devices
- #
- # CONFIG_USB_HID is not set
- 
-@@ -688,16 +909,23 @@
- # CONFIG_USB_MOUSE is not set
- # CONFIG_USB_AIPTEK is not set
- # CONFIG_USB_WACOM is not set
-+# CONFIG_USB_ACECAD is not set
- # CONFIG_USB_KBTAB is not set
- # CONFIG_USB_POWERMATE is not set
-+# CONFIG_USB_MTOUCH is not set
-+# CONFIG_USB_ITMTOUCH is not set
-+# CONFIG_USB_EGALAX is not set
-+# CONFIG_USB_YEALINK is not set
- # CONFIG_USB_XPAD is not set
-+# CONFIG_USB_ATI_REMOTE is not set
-+# CONFIG_USB_KEYSPAN_REMOTE is not set
-+# CONFIG_USB_APPLETOUCH is not set
- 
- #
- # USB Imaging devices
- #
- # CONFIG_USB_MDC800 is not set
- # CONFIG_USB_MICROTEK is not set
--# CONFIG_USB_HPUSBSCSI is not set
- 
- #
- # USB Multimedia devices
-@@ -709,13 +937,15 @@
- #
- 
- #
--# USB Network adaptors
-+# USB Network Adapters
- #
- # CONFIG_USB_CATC is not set
- # CONFIG_USB_KAWETH is not set
- # CONFIG_USB_PEGASUS is not set
- # CONFIG_USB_RTL8150 is not set
- # CONFIG_USB_USBNET is not set
-+# CONFIG_USB_ZD1201 is not set
-+CONFIG_USB_MON=y
- 
- #
- # USB port drivers
-@@ -732,12 +962,21 @@
- #
- # CONFIG_USB_EMI62 is not set
- # CONFIG_USB_EMI26 is not set
--# CONFIG_USB_TIGL is not set
- # CONFIG_USB_AUERSWALD is not set
- # CONFIG_USB_RIO500 is not set
- # CONFIG_USB_LEGOTOWER is not set
- # CONFIG_USB_LCD is not set
- # CONFIG_USB_LED is not set
-+# CONFIG_USB_CYTHERM is not set
-+# CONFIG_USB_PHIDGETKIT is not set
-+# CONFIG_USB_PHIDGETSERVO is not set
-+# CONFIG_USB_IDMOUSE is not set
-+# CONFIG_USB_SISUSBVGA is not set
-+# CONFIG_USB_LD is not set
-+
-+#
-+# USB DSL modem support
-+#
- 
- #
- # USB Gadget Support
-@@ -745,22 +984,41 @@
- # CONFIG_USB_GADGET is not set
- 
- #
-+# MMC/SD Card support
-+#
-+# CONFIG_MMC is not set
-+
-+#
-+# InfiniBand support
-+#
-+# CONFIG_INFINIBAND is not set
-+
-+#
-+# SN Devices
-+#
-+
-+#
- # File systems
- #
- CONFIG_EXT2_FS=y
- # CONFIG_EXT2_FS_XATTR is not set
-+# CONFIG_EXT2_FS_XIP is not set
- CONFIG_EXT3_FS=y
- # CONFIG_EXT3_FS_XATTR is not set
- CONFIG_JBD=y
- # CONFIG_JBD_DEBUG is not set
- # CONFIG_REISERFS_FS is not set
- # CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
- # CONFIG_XFS_FS is not set
- # CONFIG_MINIX_FS is not set
- # CONFIG_ROMFS_FS is not set
-+CONFIG_INOTIFY=y
- # CONFIG_QUOTA is not set
-+CONFIG_DNOTIFY=y
- # CONFIG_AUTOFS_FS is not set
- # CONFIG_AUTOFS4_FS is not set
-+# CONFIG_FUSE_FS is not set
- 
- #
- # CD-ROM/DVD Filesystems
-@@ -773,7 +1031,8 @@
- #
- # DOS/FAT/NT Filesystems
- #
--# CONFIG_FAT_FS is not set
-+# CONFIG_MSDOS_FS is not set
-+# CONFIG_VFAT_FS is not set
- # CONFIG_NTFS_FS is not set
- 
- #
-@@ -781,11 +1040,11 @@
- #
- CONFIG_PROC_FS=y
- CONFIG_PROC_KCORE=y
--# CONFIG_DEVFS_FS is not set
--# CONFIG_DEVPTS_FS_XATTR is not set
-+CONFIG_SYSFS=y
- CONFIG_TMPFS=y
- # CONFIG_HUGETLB_PAGE is not set
- CONFIG_RAMFS=y
-+# CONFIG_RELAYFS_FS is not set
- 
- #
- # Miscellaneous filesystems
-@@ -809,23 +1068,28 @@
- #
- CONFIG_NFS_FS=y
- CONFIG_NFS_V3=y
-+# CONFIG_NFS_V3_ACL is not set
- # CONFIG_NFS_V4 is not set
- # CONFIG_NFS_DIRECTIO is not set
- CONFIG_NFSD=y
- CONFIG_NFSD_V3=y
-+# CONFIG_NFSD_V3_ACL is not set
- # CONFIG_NFSD_V4 is not set
- CONFIG_NFSD_TCP=y
- CONFIG_ROOT_NFS=y
- CONFIG_LOCKD=y
- CONFIG_LOCKD_V4=y
- CONFIG_EXPORTFS=y
-+CONFIG_NFS_COMMON=y
- CONFIG_SUNRPC=y
--# CONFIG_SUNRPC_GSS is not set
-+# CONFIG_RPCSEC_GSS_KRB5 is not set
-+# CONFIG_RPCSEC_GSS_SPKM3 is not set
- # CONFIG_SMB_FS is not set
- # CONFIG_CIFS is not set
- # CONFIG_NCP_FS is not set
- # CONFIG_CODA_FS is not set
- # CONFIG_AFS_FS is not set
-+# CONFIG_9P_FS is not set
- 
- #
- # Partition Types
-@@ -861,6 +1125,7 @@
- # CONFIG_NLS_ISO8859_8 is not set
- # CONFIG_NLS_CODEPAGE_1250 is not set
- # CONFIG_NLS_CODEPAGE_1251 is not set
-+# CONFIG_NLS_ASCII is not set
- # CONFIG_NLS_ISO8859_1 is not set
- # CONFIG_NLS_ISO8859_2 is not set
- # CONFIG_NLS_ISO8859_3 is not set
-@@ -885,17 +1150,24 @@
- #
- # Kernel hacking
- #
-+# CONFIG_PRINTK_TIME is not set
- CONFIG_DEBUG_KERNEL=y
--# CONFIG_DEBUG_SLAB is not set
- CONFIG_MAGIC_SYSRQ=y
-+CONFIG_LOG_BUF_SHIFT=15
-+CONFIG_DETECT_SOFTLOCKUP=y
-+# CONFIG_SCHEDSTATS is not set
-+# CONFIG_DEBUG_SLAB is not set
- # CONFIG_DEBUG_SPINLOCK is not set
--# CONFIG_DEBUG_RWLOCK is not set
--CONFIG_FRAME_POINTER=y
-+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-+# CONFIG_DEBUG_KOBJECT is not set
- # CONFIG_DEBUG_INFO is not set
-+# CONFIG_DEBUG_IOREMAP is not set
-+# CONFIG_DEBUG_FS is not set
- 
- #
- # Security options
- #
-+# CONFIG_KEYS is not set
- # CONFIG_SECURITY is not set
- 
- #
-@@ -909,6 +1181,8 @@
- # CONFIG_CRYPTO_SHA1 is not set
- # CONFIG_CRYPTO_SHA256 is not set
- # CONFIG_CRYPTO_SHA512 is not set
-+# CONFIG_CRYPTO_WP512 is not set
-+# CONFIG_CRYPTO_TGR192 is not set
- # CONFIG_CRYPTO_DES is not set
- # CONFIG_CRYPTO_BLOWFISH is not set
- # CONFIG_CRYPTO_TWOFISH is not set
-@@ -916,11 +1190,23 @@
- # CONFIG_CRYPTO_AES is not set
- # CONFIG_CRYPTO_CAST5 is not set
- # CONFIG_CRYPTO_CAST6 is not set
-+# CONFIG_CRYPTO_TEA is not set
- # CONFIG_CRYPTO_ARC4 is not set
-+# CONFIG_CRYPTO_KHAZAD is not set
-+# CONFIG_CRYPTO_ANUBIS is not set
- # CONFIG_CRYPTO_DEFLATE is not set
-+# CONFIG_CRYPTO_MICHAEL_MIC is not set
-+# CONFIG_CRYPTO_CRC32C is not set
- # CONFIG_CRYPTO_TEST is not set
- 
- #
-+# Hardware crypto devices
-+#
-+
-+#
- # Library routines
- #
-+# CONFIG_CRC_CCITT is not set
-+# CONFIG_CRC16 is not set
- CONFIG_CRC32=y
-+# CONFIG_LIBCRC32C is not set
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/cache.c CVS2_6_14_PA0/arch/parisc/kernel/cache.c
---- LINUS_2_6_14/arch/parisc/kernel/cache.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/cache.c	2005-07-21 21:32:43.000000000 -0600
-@@ -27,6 +27,7 @@
- #include <asm/page.h>
- #include <asm/pgalloc.h>
- #include <asm/processor.h>
-+#include <asm/sections.h>
+@@ -332,7 +332,7 @@
+ }
+ 
+ #define FLUSH_THRESHOLD 0x80000 /* 0.5MB */
+-int parisc_cache_flush_threshold = FLUSH_THRESHOLD;
++int parisc_cache_flush_threshold __read_mostly = FLUSH_THRESHOLD;
  
- int split_tlb;
- int dcache_stride;
-@@ -207,6 +208,9 @@
- 
- 	/* "New and Improved" version from Jim Hull 
- 	 *	(1 << (cc_block-1)) * (cc_line << (4 + cnf.cc_shift))
-+	 * The following CAFL_STRIDE is an optimized version, see
-+	 * http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023625.html
-+	 * http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023671.html
- 	 */
- #define CAFL_STRIDE(cnf) (cnf.cc_line << (3 + cnf.cc_block + cnf.cc_shift))
- 	dcache_stride = CAFL_STRIDE(cache_info.dc_conf);
-@@ -339,17 +343,15 @@
  void parisc_setup_cache_timing(void)
  {
- 	unsigned long rangetime, alltime;
--	extern char _text;	/* start of kernel code, defined by linker */
--	extern char _end;	/* end of BSS, defined by linker */
- 	unsigned long size;
- 
- 	alltime = mfctl(16);
- 	flush_data_cache();
- 	alltime = mfctl(16) - alltime;
- 
--	size = (unsigned long)(&_end - _text);
-+	size = (unsigned long)(_end - _text);
- 	rangetime = mfctl(16);
--	flush_kernel_dcache_range((unsigned long)&_text, size);
-+	flush_kernel_dcache_range((unsigned long)_text, size);
- 	rangetime = mfctl(16) - rangetime;
- 
- 	printk(KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n",
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/drivers.c CVS2_6_14_PA0/arch/parisc/kernel/drivers.c
---- LINUS_2_6_14/arch/parisc/kernel/drivers.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/drivers.c	2005-09-11 20:36:49.000000000 -0600
-@@ -46,36 +46,51 @@
- 	.bus_id = "parisc",
- };
- 
--#define for_each_padev(padev) \
--	for (padev = next_dev(&root); padev != NULL; \
--			padev = next_dev(&padev->dev))
-+static inline int check_dev(struct device *dev)
-+{
-+	if (dev->bus == &parisc_bus_type) {
-+		struct parisc_device *pdev;
-+		pdev = to_parisc_device(dev);
-+		return pdev->id.hw_type != HPHW_FAULTY;
-+	}
-+	return 1;
-+}
-+
-+static struct device *
-+parse_tree_node(struct device *parent, int index, struct hardware_path *modpath);
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/drivers.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/drivers.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/drivers.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/drivers.c	2005-12-17 11:18:59.000000000 -0700
+@@ -39,7 +39,7 @@
+ #include <asm/parisc-device.h>
  
--#define check_dev(padev) \
--	(padev->id.hw_type != HPHW_FAULTY) ? padev : next_dev(&padev->dev)
-+struct recurse_struct {
-+	void * obj;
-+	int (*fn)(struct device *, void *);
-+};
-+
-+static int descend_children(struct device * dev, void * data)
-+{
-+	struct recurse_struct * recurse_data = (struct recurse_struct *)data;
-+
-+	if (recurse_data->fn(dev, recurse_data->obj))
-+		return 1;
-+	else
-+		return device_for_each_child(dev, recurse_data, descend_children);
-+}
+ /* See comments in include/asm-parisc/pci.h */
+-struct hppa_dma_ops *hppa_dma_ops;
++struct hppa_dma_ops *hppa_dma_ops __read_mostly;
+ EXPORT_SYMBOL(hppa_dma_ops);
+ 
+ static struct device root = {
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/firmware.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/firmware.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/firmware.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/firmware.c	2005-12-17 10:21:16.000000000 -0700
+@@ -80,7 +80,7 @@
+ 
+ /* Firmware needs to be initially set to narrow to determine the 
+  * actual firmware width. */
+-int parisc_narrow_firmware = 1;
++int parisc_narrow_firmware __read_mostly = 1;
+ #endif
+ 
+ /* On most currently-supported platforms, IODC I/O calls are 32-bit calls
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/inventory.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/inventory.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/inventory.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/inventory.c	2005-12-17 10:54:41.000000000 -0700
+@@ -38,7 +38,7 @@
+ */
+ #undef DEBUG_PAT
  
- /**
-- * next_dev - enumerates registered devices
-- * @dev: the previous device returned from next_dev
-+ *	for_each_padev - Iterate over all devices in the tree
-+ *	@fn:	Function to call for each device.
-+ *	@data:	Data to pass to the called function.
-  *
-- * next_dev does a depth-first search of the tree, returning parents
-- * before children.  Returns NULL when there are no more devices.
-+ *	This performs a depth-first traversal of the tree, calling the
-+ *	function passed for each node.  It calls the function for parents
-+ *	before children.
-  */
--static struct parisc_device *next_dev(struct device *dev)
--{
--	if (!list_empty(&dev->children)) {
--		dev = list_to_dev(dev->children.next);
--		return check_dev(to_parisc_device(dev));
--	}
+-int pdc_type = PDC_TYPE_ILLEGAL;
++int pdc_type __read_mostly = PDC_TYPE_ILLEGAL;
  
--	while (dev != &root) {
--		if (dev->node.next != &dev->parent->children) {
--			dev = list_to_dev(dev->node.next);
--			return to_parisc_device(dev);
--		}
--		dev = dev->parent;
--	}
--
--	return NULL;
-+static int for_each_padev(int (*fn)(struct device *, void *), void * data)
-+{
-+	struct recurse_struct recurse_data = {
-+		.obj	= data,
-+		.fn	= fn,
-+	};
-+	return device_for_each_child(&root, &recurse_data, descend_children);
- }
+ void __init setup_pdc(void)
+ {
+@@ -120,8 +120,8 @@
+ 	 * pdc info is bad in this case).
+ 	 */
  
- /**
-@@ -105,12 +120,6 @@
- 	return 0;
- }
+-	if (   ((start & (PAGE_SIZE - 1)) != 0)
+-	    || ((pages4k & ((1UL << PDC_PAGE_ADJ_SHIFT) - 1)) != 0) ) {
++	if (unlikely( ((start & (PAGE_SIZE - 1)) != 0)
++	    || ((pages4k & ((1UL << PDC_PAGE_ADJ_SHIFT) - 1)) != 0) )) {
+ 
+ 		panic("Memory range doesn't align with page size!\n");
+ 	}
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/pci-dma.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/pci-dma.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/pci-dma.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/pci-dma.c	2005-12-17 10:54:41.000000000 -0700
+@@ -33,10 +33,10 @@
+ #include <asm/uaccess.h>
+ #include <asm/tlbflush.h>	/* for purge_tlb_*() macros */
  
--static void claim_device(struct parisc_driver *driver, struct parisc_device *dev)
--{
--	dev->driver = driver;
--	request_mem_region(dev->hpa, 0x1000, driver->name);
--}
--
- static int parisc_driver_probe(struct device *dev)
- {
- 	int rc;
-@@ -119,8 +128,8 @@
+-static struct proc_dir_entry * proc_gsc_root = NULL;
++static struct proc_dir_entry * proc_gsc_root __read_mostly = NULL;
+ static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length);
+-static unsigned long pcxl_used_bytes = 0;
+-static unsigned long pcxl_used_pages = 0;
++static unsigned long pcxl_used_bytes __read_mostly = 0;
++static unsigned long pcxl_used_pages __read_mostly = 0;
+ 
+ extern unsigned long pcxl_dma_start; /* Start of pcxl dma mapping area */
+ static spinlock_t   pcxl_res_lock;
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/pdc_chassis.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/pdc_chassis.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/pdc_chassis.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/pdc_chassis.c	2005-12-17 11:18:59.000000000 -0700
+@@ -30,6 +30,7 @@
+ #include <linux/kernel.h>
+ #include <linux/reboot.h>
+ #include <linux/notifier.h>
++#include <linux/cache.h>
  
- 	rc = pa_drv->probe(pa_dev);
+ #include <asm/pdc_chassis.h>
+ #include <asm/processor.h>
+@@ -38,8 +39,8 @@
  
--	if(!rc)
--		claim_device(pa_drv, pa_dev);
-+	if (!rc)
-+		pa_dev->driver = pa_drv;
  
- 	return rc;
- }
-@@ -131,7 +140,6 @@
- 	struct parisc_driver *pa_drv = to_parisc_driver(dev->driver);
- 	if (pa_drv->remove)
- 		pa_drv->remove(pa_dev);
--	release_mem_region(pa_dev->hpa, 0x1000);
+ #ifdef CONFIG_PDC_CHASSIS
+-static int pdc_chassis_old = 0;	
+-static unsigned int pdc_chassis_enabled = 1;
++static int pdc_chassis_old __read_mostly = 0;	
++static unsigned int pdc_chassis_enabled __read_mostly = 1;
  
- 	return 0;
- }
-@@ -173,6 +181,24 @@
- }
- EXPORT_SYMBOL(register_parisc_driver);
  
-+
-+struct match_count {
-+	struct parisc_driver * driver;
-+	int count;
-+};
-+
-+static int match_and_count(struct device * dev, void * data)
-+{
-+	struct match_count * m = data;
-+	struct parisc_device * pdev = to_parisc_device(dev);
-+
-+	if (check_dev(dev)) {
-+		if (match_device(m->driver, pdev))
-+			m->count++;
-+	}
-+	return 0;
-+}
-+
  /**
-  * count_parisc_driver - count # of devices this driver would match
-  * @driver: the PA-RISC driver to try
-@@ -182,15 +208,14 @@
-  */
- int count_parisc_driver(struct parisc_driver *driver)
+@@ -132,7 +133,7 @@
  {
--	struct parisc_device *device;
--	int cnt = 0;
-+	struct match_count m = {
-+		.driver	= driver,
-+		.count	= 0,
-+	};
- 
--	for_each_padev(device) {
--		if (match_device(driver, device))
--			cnt++;
--	}
-+	for_each_padev(match_and_count, &m);
- 
--	return cnt;
-+	return m.count;
- }
- 
+ #ifdef CONFIG_PDC_CHASSIS
+ 	int handle = 0;
+-	if (pdc_chassis_enabled) {
++	if (likely(pdc_chassis_enabled)) {
+ 		DPRINTK(KERN_DEBUG "%s: parisc_pdc_chassis_init()\n", __FILE__);
+ 
+ 		/* Let see if we have something to handle... */
+@@ -142,7 +143,7 @@
+ 			printk(KERN_INFO "Enabling PDC_PAT chassis codes support.\n");
+ 			handle = 1;
+ 		}
+-		else if (pdc_chassis_old) {
++		else if (unlikely(pdc_chassis_old)) {
+ 			printk(KERN_INFO "Enabling old style chassis LED panel support.\n");
+ 			handle = 1;
+ 		}
+@@ -178,7 +179,7 @@
+ 	/* Maybe we should do that in an other way ? */
+ 	int retval = 0;
+ #ifdef CONFIG_PDC_CHASSIS
+-	if (pdc_chassis_enabled) {
++	if (likely(pdc_chassis_enabled)) {
  
-@@ -206,14 +231,34 @@
- }
- EXPORT_SYMBOL(unregister_parisc_driver);
+ 		DPRINTK(KERN_DEBUG "%s: pdc_chassis_send_status(%d)\n", __FILE__, message);
  
--static struct parisc_device *find_device_by_addr(unsigned long hpa)
-+struct find_data {
-+	unsigned long hpa;
-+	struct parisc_device * dev;
-+};
-+
-+static int find_device(struct device * dev, void * data)
- {
--	struct parisc_device *dev;
--	for_each_padev(dev) {
--		if (dev->hpa == hpa)
--			return dev;
-+	struct parisc_device * pdev = to_parisc_device(dev);
-+	struct find_data * d = (struct find_data*)data;
-+
-+	if (check_dev(dev)) {
-+		if (pdev->hpa.start == d->hpa) {
-+			d->dev = pdev;
-+			return 1;
-+		}
- 	}
--	return NULL;
-+	return 0;
-+}
-+
-+static struct parisc_device *find_device_by_addr(unsigned long hpa)
-+{
-+	struct find_data d = {
-+		.hpa	= hpa,
-+	};
-+	int ret;
-+
-+	ret = for_each_padev(find_device, &d);
-+	return ret ? d.dev : NULL;
- }
+@@ -214,7 +215,7 @@
+ 			}
+ 		} else retval = -1;
+ #else
+-		if (pdc_chassis_old) {
++		if (unlikely(pdc_chassis_old)) {
+ 			switch (message) {
+ 				case PDC_CHASSIS_DIRECT_BSTART:
+ 				case PDC_CHASSIS_DIRECT_BCOMPLETE:
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/perf.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/perf.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/perf.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/perf.c	2005-12-17 10:54:41.000000000 -0700
+@@ -66,10 +66,10 @@
+ 	uint8_t		write_control;
+ };
  
- /**
-@@ -387,6 +432,23 @@
- 	return dev;
- }
+-static int perf_processor_interface = UNKNOWN_INTF;
+-static int perf_enabled = 0;
++static int perf_processor_interface __read_mostly = UNKNOWN_INTF;
++static int perf_enabled __read_mostly = 0;
+ static spinlock_t perf_lock;
+-struct parisc_device *cpu_device = NULL;
++struct parisc_device *cpu_device __read_mostly = NULL;
+ 
+ /* RDRs to write for PCX-W */
+ static int perf_rdrs_W[] = 
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/process.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/process.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/process.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/process.c	2005-12-17 10:54:41.000000000 -0700
+@@ -54,7 +54,7 @@
+ #include <asm/uaccess.h>
+ #include <asm/unwind.h>
  
-+struct match_id_data {
-+	char id;
-+	struct parisc_device * dev;
-+};
-+
-+static int match_by_id(struct device * dev, void * data)
-+{
-+	struct parisc_device * pdev = to_parisc_device(dev);
-+	struct match_id_data * d = data;
-+
-+	if (pdev->hw_path == d->id) {
-+		d->dev = pdev;
-+		return 1;
-+	}
-+	return 0;
-+}
-+
- /**
-  * alloc_tree_node - returns a device entry in the iotree
-  * @parent: the parent node in the tree
-@@ -397,15 +459,13 @@
-  */
- static struct parisc_device * alloc_tree_node(struct device *parent, char id)
- {
--	struct device *dev;
--
--	list_for_each_entry(dev, &parent->children, node) {
--		struct parisc_device *padev = to_parisc_device(dev);
--		if (padev->hw_path == id)
--			return padev;
--	}
--
--	return create_tree_node(id, parent);
-+	struct match_id_data d = {
-+		.id = id,
-+	};
-+	if (device_for_each_child(parent, &d, match_by_id))
-+		return d.dev;
-+	else
-+		return create_tree_node(id, parent);
- }
+-static int hlt_counter;
++static int hlt_counter __read_mostly;
  
- static struct parisc_device *create_parisc_device(struct hardware_path *modpath)
-@@ -439,10 +499,8 @@
+ /*
+  * Power off function, if any
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/processor.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/processor.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/processor.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/processor.c	2005-12-17 10:21:16.000000000 -0700
+@@ -44,10 +44,10 @@
+ #include <asm/irq.h>		/* for struct irq_region */
+ #include <asm/parisc-device.h>
  
- 	dev = create_parisc_device(mod_path);
- 	if (dev->id.hw_type != HPHW_FAULTY) {
--		char p[64];
--		print_pa_hwpath(dev, p);
- 		printk("Two devices have hardware path %s.  Please file a bug with HP.\n"
--			"In the meantime, you could try rearranging your cards.\n", p);
-+			"In the meantime, you could try rearranging your cards.\n", parisc_pathname(dev));
- 		return NULL;
- 	}
+-struct system_cpuinfo_parisc boot_cpu_data;
++struct system_cpuinfo_parisc boot_cpu_data __read_mostly;
+ EXPORT_SYMBOL(boot_cpu_data);
  
-@@ -451,12 +509,27 @@
- 	dev->id.hversion_rev = iodc_data[1] & 0x0f;
- 	dev->id.sversion = ((iodc_data[4] & 0x0f) << 16) |
- 			(iodc_data[5] << 8) | iodc_data[6];
--	dev->hpa = hpa;
-+	dev->hpa.name = parisc_pathname(dev);
-+	dev->hpa.start = hpa;
-+	if (hpa == 0xf4000000 || hpa == 0xf6000000 ||
-+	    hpa == 0xf8000000 || hpa == 0xfa000000) {
-+		dev->hpa.end = hpa + 0x01ffffff;
-+	} else {
-+		dev->hpa.end = hpa + 0xfff;
-+	}
-+	dev->hpa.flags = IORESOURCE_MEM;
- 	name = parisc_hardware_description(&dev->id);
- 	if (name) {
- 		strlcpy(dev->name, name, sizeof(dev->name));
- 	}
+-struct cpuinfo_parisc cpu_data[NR_CPUS];
++struct cpuinfo_parisc cpu_data[NR_CPUS] __read_mostly;
  
-+	/* Silently fail things like mouse ports which are subsumed within
-+	 * the keyboard controller
-+	 */
-+	if ((hpa & 0xfff) == 0 && insert_resource(&iomem_resource, &dev->hpa))
-+		printk("Unable to claim HPA %lx for device %s\n",
-+				hpa, name);
-+
- 	return dev;
+ /*
+ **  	PARISC CPU driver - claim "device" and initialize CPU data structures.
+@@ -378,12 +378,12 @@
+ 	return 0;
  }
  
-@@ -555,6 +628,33 @@
- 	return (curr->hw_path == id);
- }
+-static struct parisc_device_id processor_tbl[] = {
++static struct parisc_device_id processor_tbl[] __read_mostly = {
+ 	{ HPHW_NPROC, HVERSION_REV_ANY_ID, HVERSION_ANY_ID, SVERSION_ANY_ID },
+ 	{ 0, }
+ };
  
-+struct parse_tree_data {
-+	int index;
-+	struct hardware_path * modpath;
-+	struct device * dev;
-+};
-+
-+static int check_parent(struct device * dev, void * data)
-+{
-+	struct parse_tree_data * d = data;
-+
-+	if (check_dev(dev)) {
-+		if (dev->bus == &parisc_bus_type) {
-+			if (match_parisc_device(dev, d->index, d->modpath))
-+				d->dev = dev;
-+		} else if (is_pci_dev(dev)) {
-+			if (match_pci_device(dev, d->index, d->modpath))
-+				d->dev = dev;
-+		} else if (dev->bus == NULL) {
-+			/* we are on a bus bridge */
-+			struct device *new = parse_tree_node(dev, d->index, d->modpath);
-+			if (new)
-+				d->dev = new;
-+		}
-+	}
-+	return d->dev != NULL;
-+}
-+
- /**
-  * parse_tree_node - returns a device entry in the iotree
-  * @parent: the parent node in the tree
-@@ -568,24 +668,18 @@
- static struct device *
- parse_tree_node(struct device *parent, int index, struct hardware_path *modpath)
- {
--	struct device *device;
--	 
--	list_for_each_entry(device, &parent->children, node) {
--		if (device->bus == &parisc_bus_type) {
--			if (match_parisc_device(device, index, modpath))
--				return device;
--		} else if (is_pci_dev(device)) {
--			if (match_pci_device(device, index, modpath))
--				return device;
--		} else if (device->bus == NULL) {
--			/* we are on a bus bridge */
--			struct device *new = parse_tree_node(device, index, modpath);
--			if (new)
--				return new;
--		}
--	}
-+	struct parse_tree_data d = {
-+		.index          = index,
-+		.modpath        = modpath,
-+	};
-+
-+	struct recurse_struct recurse_data = {
-+		.obj	= &d,
-+		.fn	= check_parent,
-+	};
+-static struct parisc_driver cpu_driver = {
++static struct parisc_driver cpu_driver __read_mostly = {
+ 	.name		= "CPU",
+ 	.id_table	= processor_tbl,
+ 	.probe		= processor_probe
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/setup.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/setup.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/setup.c	2005-12-27 13:25:34.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/setup.c	2005-12-17 10:54:41.000000000 -0700
+@@ -46,15 +46,15 @@
+ #include <asm/io.h>
+ #include <asm/setup.h>
  
--	return NULL;
-+	device_for_each_child(parent, &recurse_data, descend_children);
-+	return d.dev;
- }
+-char	command_line[COMMAND_LINE_SIZE];
++char	command_line[COMMAND_LINE_SIZE] __read_mostly;
  
- /**
-@@ -636,7 +730,7 @@
-         ((dev->id.hw_type == HPHW_IOA) || (dev->id.hw_type == HPHW_BCPORT))
+ /* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */
+-struct proc_dir_entry * proc_runway_root = NULL;
+-struct proc_dir_entry * proc_gsc_root = NULL;
+-struct proc_dir_entry * proc_mckinley_root = NULL;
++struct proc_dir_entry * proc_runway_root __read_mostly = NULL;
++struct proc_dir_entry * proc_gsc_root __read_mostly = NULL;
++struct proc_dir_entry * proc_mckinley_root __read_mostly = NULL;
+ 
+ #if !defined(CONFIG_PA20) && (defined(CONFIG_IOMMU_CCIO) || defined(CONFIG_IOMMU_SBA))
+-int parisc_bus_is_phys = 1;	/* Assume no IOMMU is present */
++int parisc_bus_is_phys __read_mostly = 1;	/* Assume no IOMMU is present */
+ EXPORT_SYMBOL(parisc_bus_is_phys);
+ #endif
+ 
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/smp.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/smp.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/smp.c	2005-12-27 13:25:35.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/smp.c	2005-12-17 10:54:41.000000000 -0700
+@@ -39,7 +39,7 @@
+ #include <asm/atomic.h>
+ #include <asm/current.h>
+ #include <asm/delay.h>
+-#include <asm/pgalloc.h>	/* for flush_tlb_all() proto/macro */
++#include <asm/tlbflush.h>
  
- #define IS_LOWER_PORT(dev) \
--        ((gsc_readl(dev->hpa + offsetof(struct bc_module, io_status)) \
-+        ((gsc_readl(dev->hpa.start + offsetof(struct bc_module, io_status)) \
-                 & BC_PORT_MASK) == BC_LOWER_PORT)
- 
- #define MAX_NATIVE_DEVICES 64
-@@ -645,8 +739,8 @@
- #define FLEX_MASK 	F_EXTEND(0xfffc0000)
- #define IO_IO_LOW	offsetof(struct bc_module, io_io_low)
- #define IO_IO_HIGH	offsetof(struct bc_module, io_io_high)
--#define READ_IO_IO_LOW(dev)  (unsigned long)(signed int)gsc_readl(dev->hpa + IO_IO_LOW)
--#define READ_IO_IO_HIGH(dev) (unsigned long)(signed int)gsc_readl(dev->hpa + IO_IO_HIGH)
-+#define READ_IO_IO_LOW(dev)  (unsigned long)(signed int)gsc_readl(dev->hpa.start + IO_IO_LOW)
-+#define READ_IO_IO_HIGH(dev) (unsigned long)(signed int)gsc_readl(dev->hpa.start + IO_IO_HIGH)
- 
- static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high,
-                             struct device *parent);
-@@ -655,10 +749,10 @@
- {
- 	unsigned long io_io_low, io_io_high;
+ #include <asm/io.h>
+ #include <asm/irq.h>		/* for CPU_IRQ_REGION and friends */
+@@ -58,9 +58,9 @@
  
--	if(!BUS_CONVERTER(dev) || IS_LOWER_PORT(dev))
-+	if (!BUS_CONVERTER(dev) || IS_LOWER_PORT(dev))
- 		return;
+ volatile struct task_struct *smp_init_current_idle_task;
  
--	if(dev->id.hw_type == HPHW_IOA) {
-+	if (dev->id.hw_type == HPHW_IOA) {
- 		io_io_low = (unsigned long)(signed int)(READ_IO_IO_LOW(dev) << 16);
- 		io_io_high = io_io_low + MAX_NATIVE_DEVICES * NATIVE_DEVICE_OFFSET;
- 	} else {
-@@ -731,7 +825,7 @@
+-static volatile int cpu_now_booting = 0;	/* track which CPU is booting */
++static volatile int cpu_now_booting __read_mostly = 0;	/* track which CPU is booting */
  
- 	print_pa_hwpath(dev, hw_path);
- 	printk(KERN_INFO "%d. %s at 0x%lx [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }",
--		++count, dev->name, dev->hpa, hw_path, dev->id.hw_type,
-+		++count, dev->name, dev->hpa.start, hw_path, dev->id.hw_type,
- 		dev->id.hversion_rev, dev->id.hversion, dev->id.sversion);
+-static int parisc_max_cpus = 1;
++static int parisc_max_cpus __read_mostly = 1;
  
- 	if (dev->num_addrs) {
-@@ -753,13 +847,20 @@
- 	get_device(&root);
- }
+ /* online cpus are ones that we've managed to bring up completely
+  * possible cpus are all valid cpu 
+@@ -71,8 +71,8 @@
+  * empty in the beginning.
+  */
  
-+
-+static int print_one_device(struct device * dev, void * data)
-+{
-+	struct parisc_device * pdev = to_parisc_device(dev);
-+
-+	if (check_dev(dev))
-+		print_parisc_device(pdev);
-+	return 0;
-+}
-+
- /**
-  * print_parisc_devices - Print out a list of devices found in this system
+-cpumask_t cpu_online_map = CPU_MASK_NONE;	/* Bitmap of online CPUs */
+-cpumask_t cpu_possible_map = CPU_MASK_ALL;	/* Bitmap of Present CPUs */
++cpumask_t cpu_online_map   __read_mostly = CPU_MASK_NONE;	/* Bitmap of online CPUs */
++cpumask_t cpu_possible_map __read_mostly = CPU_MASK_ALL;	/* Bitmap of Present CPUs */
+ 
+ EXPORT_SYMBOL(cpu_online_map);
+ EXPORT_SYMBOL(cpu_possible_map);
+@@ -406,12 +406,10 @@
+  * as we want to ensure all TLB's flushed before proceeding.
   */
- void print_parisc_devices(void)
+ 
+-extern void flush_tlb_all_local(void);
+-
+ void
+ smp_flush_tlb_all(void)
  {
--	struct parisc_device *dev;
--	for_each_padev(dev) {
--		print_parisc_device(dev);
--	}
-+	for_each_padev(print_one_device, NULL);
+-	on_each_cpu((void (*)(void *))flush_tlb_all_local, NULL, 1, 1);
++	on_each_cpu(flush_tlb_all_local, NULL, 1, 1);
  }
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/entry.S CVS2_6_14_PA0/arch/parisc/kernel/entry.S
---- LINUS_2_6_14/arch/parisc/kernel/entry.S	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/entry.S	2005-10-19 13:36:52.000000000 -0600
-@@ -30,14 +30,14 @@
-  *  - save registers to kernel stack and handle in assembly or C */
  
  
-+#include <asm/psw.h>
- #include <asm/assembly.h>	/* for LDREG/STREG defines */
- #include <asm/pgtable.h>
--#include <asm/psw.h>
- #include <asm/signal.h>
- #include <asm/unistd.h>
- #include <asm/thread_info.h>
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- #define CMPIB           cmpib,*
- #define CMPB            cmpb,*
- #define COND(x)		*x
-@@ -67,19 +67,22 @@
- 
- 	/* Switch to virtual mapping, trashing only %r1 */
- 	.macro  virt_map
--	rsm     PSW_SM_Q,%r0
--	tovirt_r1 %r29
--	mfsp	%sr7, %r1
--	or,=    %r0,%r1,%r0 /* Only save sr7 in sr3 if sr7 != 0 */
--	mtsp	%r1, %sr3
-+	/* pcxt_ssm_bug */
-+	rsm	PSW_SM_I, %r0	/* barrier for "Relied upon Translation */
- 	mtsp	%r0, %sr4
- 	mtsp	%r0, %sr5
-+	mfsp	%sr7, %r1
-+	or,=    %r0,%r1,%r0	/* Only save sr7 in sr3 if sr7 != 0 */
-+	mtsp	%r1, %sr3
-+	tovirt_r1 %r29
-+	load32	KERNEL_PSW, %r1
-+
-+	rsm     PSW_SM_QUIET,%r0	/* second "heavy weight" ctl op */
- 	mtsp	%r0, %sr6
- 	mtsp	%r0, %sr7
--	load32	KERNEL_PSW, %r1
--	mtctl	%r1, %cr22
- 	mtctl	%r0, %cr17	/* Clear IIASQ tail */
- 	mtctl	%r0, %cr17	/* Clear IIASQ head */
-+	mtctl	%r1, %ipsw
- 	load32	4f, %r1
- 	mtctl	%r1, %cr18	/* Set IIAOQ tail */
- 	ldo	4(%r1), %r1
-@@ -214,7 +217,7 @@
- 	va  = r8	/* virtual address for which the trap occured */
- 	spc = r24	/* space for which the trap occured */
- 
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
+@@ -487,7 +485,7 @@
+ #endif
  
- 	/*
- 	 * itlb miss interruption handler (parisc 1.1 - 32 bit)
-@@ -236,7 +239,7 @@
+ 	flush_cache_all_local(); /* start with known state */
+-	flush_tlb_all_local();
++	flush_tlb_all_local(NULL);
  
- 	.macro	itlb_20 code
- 	mfctl	%pcsq, spc
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	b       itlb_miss_20w
- #else
- 	b	itlb_miss_20
-@@ -246,7 +249,7 @@
- 	.align		32
- 	.endm
- 	
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
- 	/*
- 	 * naitlb miss interruption handler (parisc 1.1 - 32 bit)
- 	 *
-@@ -283,7 +286,7 @@
- 	.macro	naitlb_20 code
+ 	local_irq_enable();  /* Interrupts have been off until now */
  
- 	mfctl	%isr,spc
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	b       itlb_miss_20w
- #else
- 	b	itlb_miss_20
-@@ -296,7 +299,7 @@
- 	.align		32
- 	.endm
- 	
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
- 	/*
- 	 * dtlb miss interruption handler (parisc 1.1 - 32 bit)
- 	 */
-@@ -318,7 +321,7 @@
- 	.macro	dtlb_20 code
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/time.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/time.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/time.c	2005-12-27 13:25:35.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/time.c	2005-12-17 10:21:16.000000000 -0700
+@@ -36,8 +36,8 @@
+ /* xtime and wall_jiffies keep wall-clock time */
+ extern unsigned long wall_jiffies;
  
- 	mfctl	%isr, spc
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	b       dtlb_miss_20w
- #else
- 	b	dtlb_miss_20
-@@ -328,7 +331,7 @@
- 	.align		32
- 	.endm
- 	
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
- 	/* nadtlb miss interruption handler (parisc 1.1 - 32 bit) */
- 
- 	.macro	nadtlb_11 code
-@@ -346,7 +349,7 @@
- 	.macro	nadtlb_20 code
+-static long clocktick;	/* timer cycles per tick */
+-static long halftick;
++static long clocktick __read_mostly;	/* timer cycles per tick */
++static long halftick __read_mostly;
  
- 	mfctl	%isr,spc
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	b       nadtlb_miss_20w
- #else
- 	b       nadtlb_miss_20
-@@ -356,7 +359,7 @@
- 	.align		32
- 	.endm
- 	
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
- 	/*
- 	 * dirty bit trap interruption handler (parisc 1.1 - 32 bit)
- 	 */
-@@ -378,7 +381,7 @@
- 	.macro	dbit_20 code
+ #ifdef CONFIG_SMP
+ extern void smp_do_timer(struct pt_regs *regs);
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/topology.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/topology.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/topology.c	2005-12-27 13:25:35.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/topology.c	2005-12-17 11:18:59.000000000 -0700
+@@ -20,8 +20,9 @@
+ #include <linux/init.h>
+ #include <linux/smp.h>
+ #include <linux/cpu.h>
++#include <linux/cache.h>
+ 
+-static struct cpu cpu_devices[NR_CPUS];
++static struct cpu cpu_devices[NR_CPUS] __read_mostly;
+ 
+ static int __init topology_init(void)
+ {
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/unaligned.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/unaligned.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/unaligned.c	2005-12-27 13:25:35.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/unaligned.c	2005-12-17 10:21:16.000000000 -0700
+@@ -122,7 +122,7 @@
+ #define ERR_NOTHANDLED	-1
+ #define ERR_PAGEFAULT	-2
  
- 	mfctl	%isr,spc
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	b       dbit_trap_20w
- #else
- 	b	dbit_trap_20
-@@ -391,7 +394,7 @@
- 	/* The following are simple 32 vs 64 bit instruction
- 	 * abstractions for the macros */
- 	.macro		EXTR	reg1,start,length,reg2
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	extrd,u		\reg1,32+\start,\length,\reg2
- #else
- 	extrw,u		\reg1,\start,\length,\reg2
-@@ -399,7 +402,7 @@
- 	.endm
+-int unaligned_enabled = 1;
++int unaligned_enabled __read_mostly = 1;
  
- 	.macro		DEP	reg1,start,length,reg2
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	depd		\reg1,32+\start,\length,\reg2
- #else
- 	depw		\reg1,\start,\length,\reg2
-@@ -407,7 +410,7 @@
- 	.endm
+ void die_if_kernel (char *str, struct pt_regs *regs, long err);
  
- 	.macro		DEPI	val,start,length,reg
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	depdi		\val,32+\start,\length,\reg
- #else
- 	depwi		\val,\start,\length,\reg
-@@ -418,7 +421,7 @@
- 	 * fault.  We have to extract this and place it in the va,
- 	 * zeroing the corresponding bits in the space register */
- 	.macro		space_adjust	spc,va,tmp
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	extrd,u		\spc,63,SPACEID_SHIFT,\tmp
- 	depd		%r0,63,SPACEID_SHIFT,\spc
- 	depd		\tmp,31,SPACEID_SHIFT,\va
-@@ -476,7 +479,7 @@
- 	bb,>=,n		\pmd,_PxD_PRESENT_BIT,\fault
- 	DEP		%r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */
- 	copy		\pmd,%r9
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	shld		%r9,PxD_VALUE_SHIFT,\pmd
- #else
- 	shlw		%r9,PxD_VALUE_SHIFT,\pmd
-@@ -607,7 +610,7 @@
- 	.macro		do_alias	spc,tmp,tmp1,va,pte,prot,fault
- 	cmpib,COND(<>),n 0,\spc,\fault
- 	ldil		L%(TMPALIAS_MAP_START),\tmp
--#if defined(__LP64__) && (TMPALIAS_MAP_START >= 0x80000000)
-+#if defined(CONFIG_64BIT) && (TMPALIAS_MAP_START >= 0x80000000)
- 	/* on LP64, ldi will sign extend into the upper 32 bits,
- 	 * which is behaviour we don't want */
- 	depdi		0,31,32,\tmp
-@@ -621,7 +624,7 @@
- 	 * OK, it is in the temp alias region, check whether "from" or "to".
- 	 * Check "subtle" note in pacache.S re: r23/r26.
- 	 */
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	extrd,u,*=	\va,41,1,%r0
- #else
- 	extrw,u,=	\va,9,1,%r0
-@@ -688,7 +691,7 @@
- 	def		30
- 	def		31
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/unwind.c CVS2_6_15_RC7_PA0/arch/parisc/kernel/unwind.c
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/unwind.c	2005-12-27 13:25:35.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/unwind.c	2005-12-17 10:54:41.000000000 -0700
+@@ -35,7 +35,7 @@
+  * we can call unwind_init as early in the bootup process as 
+  * possible (before the slab allocator is initialized)
+  */
+-static struct unwind_table kernel_unwind_table;
++static struct unwind_table kernel_unwind_table __read_mostly;
+ static LIST_HEAD(unwind_tables);
+ 
+ static inline const struct unwind_table_entry *
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/kernel/vmlinux.lds.S CVS2_6_15_RC7_PA0/arch/parisc/kernel/vmlinux.lds.S
+--- LINUS_2_6_15_RC7/arch/parisc/kernel/vmlinux.lds.S	2005-12-27 13:25:35.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/kernel/vmlinux.lds.S	2005-12-19 08:10:07.000000000 -0700
+@@ -68,7 +68,7 @@
+   RODATA
+ 
+   /* writeable */
+-  . = ALIGN(4096);		/* Make sure this is paged aligned so
++  . = ALIGN(4096);		/* Make sure this is page aligned so
+   				   that we can properly leave these
+ 				   as writable */
+   data_start = .;
+@@ -105,6 +105,10 @@
+   . = ALIGN(16);
+   .data.lock_aligned : { *(.data.lock_aligned) }
+ 
++  /* rarely changed data like cpu maps */
++  . = ALIGN(16);
++  .data.read_mostly : { *(.data.read_mostly) }
++
+   _edata = .;			/* End of data section */
+ 
+   . = ALIGN(16384); 		/* init_task */
+@@ -194,14 +198,7 @@
+ #endif
+ 	}
  
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
+-  /* Stabs debugging sections.  */
+-  .stab 0 : { *(.stab) }
+-  .stabstr 0 : { *(.stabstr) }
+-  .stab.excl 0 : { *(.stab.excl) }
+-  .stab.exclstr 0 : { *(.stab.exclstr) }
+-  .stab.index 0 : { *(.stab.index) }
+-  .stab.indexstr 0 : { *(.stab.indexstr) }
+-  .comment 0 : { *(.comment) }
++  STABS_DEBUG
+   .note 0 : { *(.note) }	
+ 
+ }
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/mm/init.c CVS2_6_15_RC7_PA0/arch/parisc/mm/init.c
+--- LINUS_2_6_15_RC7/arch/parisc/mm/init.c	2005-12-27 13:25:35.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/mm/init.c	2005-12-17 11:04:12.000000000 -0700
+@@ -36,9 +36,9 @@
+ extern char __init_begin, __init_end;
+ 
+ #ifdef CONFIG_DISCONTIGMEM
+-struct node_map_data node_data[MAX_NUMNODES];
+-bootmem_data_t bmem_data[MAX_NUMNODES];
+-unsigned char pfnnid_map[PFNNID_MAP_MAX];
++struct node_map_data node_data[MAX_NUMNODES] __read_mostly;
++bootmem_data_t bmem_data[MAX_NUMNODES] __read_mostly;
++unsigned char pfnnid_map[PFNNID_MAP_MAX] __read_mostly;
+ #endif
+ 
+ static struct resource data_resource = {
+@@ -58,14 +58,14 @@
+ 	.flags	= IORESOURCE_BUSY | IORESOURCE_MEM,
+ };
  
- 	.export fault_vector_11
- 	
-@@ -761,7 +764,7 @@
+-static struct resource sysram_resources[MAX_PHYSMEM_RANGES];
++static struct resource sysram_resources[MAX_PHYSMEM_RANGES] __read_mostly;
  
- 	copy	%r30, %r1
- 	ldo	PT_SZ_ALGN(%r30),%r30
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* Yo, function pointers in wide mode are little structs... -PB */
- 	ldd	24(%r26), %r2
- 	STREG	%r2, PT_GR27(%r1)	/* Store childs %dp */
-@@ -777,7 +780,7 @@
- 	or	%r26, %r24, %r26      /* will have kernel mappings.	 */
- 	ldi	1, %r25			/* stack_start, signals kernel thread */
- 	stw	%r0, -52(%r30)	     	/* user_tid */
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29		/* Reference param save area */
- #endif
- 	BL	do_fork, %r2
-@@ -806,7 +809,7 @@
+ /* The following array is initialized from the firmware specific
+  * information retrieved in kernel/inventory.c.
+  */
  
- 	LDREG	TI_TASK-THREAD_SZ_ALGN(%r30), %r1
- 	LDREG	TASK_PT_GR25(%r1), %r26
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	LDREG	TASK_PT_GR27(%r1), %r27
- 	LDREG	TASK_PT_GR22(%r1), %r22
- #endif
-@@ -814,11 +817,16 @@
- 	ble	0(%sr7, %r1)
- 	copy	%r31, %r2
+-physmem_range_t pmem_ranges[MAX_PHYSMEM_RANGES];
+-int npmem_ranges;
++physmem_range_t pmem_ranges[MAX_PHYSMEM_RANGES] __read_mostly;
++int npmem_ranges __read_mostly;
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29		/* Reference param save area */
- 	loadgp				/* Thread could have been in a module */
- #endif
-+#ifndef CONFIG_64BIT
- 	b	sys_exit
-+#else
-+	load32	sys_exit, %r1
-+	bv	%r0(%r1)
-+#endif
- 	ldi	0, %r26
+ #ifdef __LP64__
+ #define MAX_MEM         (~0UL)
+@@ -73,7 +73,7 @@
+ #define MAX_MEM         (3584U*1024U*1024U)
+ #endif /* !__LP64__ */
  
- 	.import	sys_execve, code
-@@ -830,7 +838,7 @@
- 	STREG	%r26, PT_GR26(%r16)
- 	STREG	%r25, PT_GR25(%r16)
- 	STREG	%r24, PT_GR24(%r16)
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29		/* Reference param save area */
- #endif
- 	BL	sys_execve, %r2
-@@ -855,6 +863,7 @@
- _switch_to:
- 	STREG	 %r2, -RP_OFFSET(%r30)
- 
-+	callee_save_float
- 	callee_save
- 
- 	load32	_switch_to_ret, %r2
-@@ -871,6 +880,7 @@
- _switch_to_ret:
- 	mtctl	%r0, %cr0		/* Needed for single stepping */
- 	callee_rest
-+	callee_rest_float
- 
- 	LDREG	-RP_OFFSET(%r30), %r2
- 	bv	%r0(%r2)
-@@ -888,9 +898,6 @@
- 	 * this way, then we will need to copy %sr3 in to PT_SR[3..7], and
- 	 * adjust IASQ[0..1].
- 	 *
--	 * Note that the following code uses a "relied upon translation".
--	 * See the parisc ACD for details. The ssm is necessary due to a
--	 * PCXT bug.
- 	 */
+-static unsigned long mem_limit = MAX_MEM;
++static unsigned long mem_limit __read_mostly = MAX_MEM;
  
- 	.align 4096
-@@ -911,7 +918,7 @@
- 	STREG	%r19,PT_IAOQ1(%r16)
- 	LDREG   PT_PSW(%r16),%r19
- 	load32	USER_PSW_MASK,%r1
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	load32	USER_PSW_HI_MASK,%r20
- 	depd    %r20,31,32,%r1
- #endif
-@@ -955,7 +962,7 @@
- 	/* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) amount
- 	** irq_stat[] is defined using ____cacheline_aligned.
- 	*/
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	shld	%r1, 6, %r20
- #else
- 	shlw	%r1, 5, %r20
-@@ -963,9 +970,6 @@
- 	add     %r19,%r20,%r19	/* now have &irq_stat[smp_processor_id()] */
- #endif /* CONFIG_SMP */
- 
--	LDREG   IRQSTAT_SIRQ_PEND(%r19),%r20    /* hardirq.h: unsigned long */
--	cmpib,<>,n 0,%r20,intr_do_softirq /* forward */
--
- intr_check_resched:
- 
- 	/* check for reschedule */
-@@ -985,24 +989,19 @@
- 	rest_fp         %r1
- 	rest_general    %r29
- 
--	/* Create a "relied upon translation" PA 2.0 Arch. F-5 */
--	ssm		0,%r0
--	nop
--	nop
--	nop
--	nop
--	nop
--	nop
--	nop
-+	/* inverse of virt_map */
-+	pcxt_ssm_bug
-+	rsm             PSW_SM_QUIET,%r0	/* prepare for rfi */
- 	tophys_r1       %r29
--	rsm             (PSW_SM_Q|PSW_SM_P|PSW_SM_D|PSW_SM_I),%r0
- 
- 	/* Restore space id's and special cr's from PT_REGS
--	 * structure pointed to by r29 */
-+	 * structure pointed to by r29
-+	 */
- 	rest_specials	%r29
+ static void __init mem_limit_func(void)
+ {
+@@ -300,6 +300,13 @@
+ 			max_pfn = start_pfn + npages;
+ 	}
  
--	/* Important: Note that rest_stack restores r29
--	 * last (we are using it)! It also restores r1 and r30. */
-+	/* IMPORTANT: rest_stack restores r29 last (we are using it)!
-+	 * It also restores r1 and r30.
++	/* IOMMU is always used to access "high mem" on those boxes
++	 * that can support enough mem that a PCI device couldn't
++	 * directly DMA to any physical addresses.
++	 * ISA DMA support will need to revisit this.
 +	 */
- 	rest_stack
++	max_low_pfn = max_pfn;
++
+ 	if ((bootmap_pfn - bootmap_start_pfn) != bootmap_pages) {
+ 		printk(KERN_WARNING "WARNING! bootmap sizing is messed up!\n");
+ 		BUG();
+@@ -431,11 +438,11 @@
+ #define SET_MAP_OFFSET(x) ((void *)(((unsigned long)(x) + VM_MAP_OFFSET) \
+ 				     & ~(VM_MAP_OFFSET-1)))
  
- 	rfi
-@@ -1015,17 +1014,6 @@
- 	nop
- 	nop
- 
--	.import do_softirq,code
--intr_do_softirq:
--	bl      do_softirq,%r2
--#ifdef __LP64__
--	ldo	-16(%r30),%r29		/* Reference param save area */
--#else
--	nop
--#endif
--	b       intr_check_resched
--	nop
--
- 	.import schedule,code
- intr_do_resched:
- 	/* Only do reschedule if we are returning to user space */
-@@ -1036,12 +1024,17 @@
- 	CMPIB= 0,%r20,intr_restore /* backward */
- 	nop
+-void *vmalloc_start;
++void *vmalloc_start __read_mostly;
+ EXPORT_SYMBOL(vmalloc_start);
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29		/* Reference param save area */
+ #ifdef CONFIG_PA11
+-unsigned long pcxl_dma_start;
++unsigned long pcxl_dma_start __read_mostly;
  #endif
  
- 	ldil	L%intr_check_sig, %r2
-+#ifndef CONFIG_64BIT
- 	b	schedule
-+#else
-+	load32	schedule, %r20
-+	bv	%r0(%r20)
-+#endif
- 	ldo	R%intr_check_sig(%r2), %r2
- 
+ void __init mem_init(void)
+@@ -475,7 +482,7 @@
+ 	return 0;
+ }
  
-@@ -1064,7 +1057,7 @@
+-unsigned long *empty_zero_page;
++unsigned long *empty_zero_page __read_mostly;
  
- 	copy	%r0, %r24			/* unsigned long in_syscall */
- 	copy	%r16, %r25			/* struct pt_regs *regs */
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29			/* Reference param save area */
+ void show_mem(void)
+ {
+@@ -785,8 +792,6 @@
+ EXPORT_SYMBOL(map_hpux_gateway_page);
  #endif
  
-@@ -1088,7 +1081,7 @@
- 	mfctl	%cr31,%r1
- 	copy	%r30,%r17
- 	/* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	depdi	0,63,15,%r17
- #else
- 	depi	0,31,15,%r17
-@@ -1115,7 +1108,7 @@
+-extern void flush_tlb_all_local(void);
+-
+ void __init paging_init(void)
+ {
+ 	int i;
+@@ -795,7 +800,7 @@
+ 	pagetable_init();
+ 	gateway_init();
+ 	flush_cache_all_local(); /* start with known state */
+-	flush_tlb_all_local();
++	flush_tlb_all_local(NULL);
+ 
+ 	for (i = 0; i < npmem_ranges; i++) {
+ 		unsigned long zones_size[MAX_NR_ZONES] = { 0, 0, 0 };
+@@ -986,7 +991,7 @@
+ 	    do_recycle++;
+ 	}
+ 	spin_unlock(&sid_lock);
+-	on_each_cpu((void (*)(void *))flush_tlb_all_local, NULL, 1, 1);
++	on_each_cpu(flush_tlb_all_local, NULL, 1, 1);
+ 	if (do_recycle) {
+ 	    spin_lock(&sid_lock);
+ 	    recycle_sids(recycle_ndirty,recycle_dirty_array);
+@@ -998,7 +1003,7 @@
+ void flush_tlb_all(void)
+ {
+ 	spin_lock(&sid_lock);
+-	flush_tlb_all_local();
++	flush_tlb_all_local(NULL);
+ 	recycle_sids();
+ 	spin_unlock(&sid_lock);
+ }
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/parisc/mm/ioremap.c CVS2_6_15_RC7_PA0/arch/parisc/mm/ioremap.c
+--- LINUS_2_6_15_RC7/arch/parisc/mm/ioremap.c	2005-12-27 13:25:35.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/parisc/mm/ioremap.c	2005-12-23 18:30:19.000000000 -0700
+@@ -1,12 +1,9 @@
+ /*
+  * arch/parisc/mm/ioremap.c
+  *
+- * Re-map IO memory to kernel address space so that we can access it.
+- * This is needed for high PCI addresses that aren't mapped in the
+- * 640k-1MB IO memory area on PC's
+- *
+  * (C) Copyright 1995 1996 Linus Torvalds
+  * (C) Copyright 2001 Helge Deller <deller at gmx.de>
++ * (C) Copyright 2005 Kyle McMartin <kyle at parisc-linux.org>
+  */
  
- 	ldil	L%intr_return, %r2
+ #include <linux/vmalloc.h>
+@@ -14,81 +11,107 @@
+ #include <linux/module.h>
+ #include <asm/io.h>
+ #include <asm/pgalloc.h>
++#include <asm/tlbflush.h>
++#include <asm/cacheflush.h>
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29	/* Reference param save area */
- #endif
+-static inline void remap_area_pte(pte_t * pte, unsigned long address, unsigned long size,
+-	unsigned long phys_addr, unsigned long flags)
+-{
+-	unsigned long end;
++static inline void 
++remap_area_pte(pte_t *pte, unsigned long address, unsigned long size,
++	       unsigned long phys_addr, unsigned long flags)
++{
++	unsigned long end, pfn;
++	pgprot_t pgprot = __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY |
++				   _PAGE_ACCESSED | flags);
  
-@@ -1153,15 +1146,17 @@
- 
- 	CMPIB=,n        6,%r26,skip_save_ior
+ 	address &= ~PMD_MASK;
++
+ 	end = address + size;
+ 	if (end > PMD_SIZE)
+ 		end = PMD_SIZE;
+-	if (address >= end)
+-		BUG();
++
++	BUG_ON(address >= end);
++
++	pfn = phys_addr >> PAGE_SHIFT;
+ 	do {
+-		if (!pte_none(*pte)) {
+-			printk(KERN_ERR "remap_area_pte: page already exists\n");
+-			BUG();
+-		}
+-		set_pte(pte, mk_pte_phys(phys_addr, __pgprot(_PAGE_PRESENT | _PAGE_RW | 
+-					_PAGE_DIRTY | _PAGE_ACCESSED | flags)));
++		BUG_ON(!pte_none(*pte));
++
++		set_pte(pte, pfn_pte(pfn, pgprot));
++
+ 		address += PAGE_SIZE;
+-		phys_addr += PAGE_SIZE;
++		pfn++;
+ 		pte++;
+ 	} while (address && (address < end));
+ }
  
--	/* save_specials left ipsw value in r8 for us to test */
+-static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size,
+-	unsigned long phys_addr, unsigned long flags)
++static inline int 
++remap_area_pmd(pmd_t *pmd, unsigned long address, unsigned long size,
++	       unsigned long phys_addr, unsigned long flags)
+ {
+ 	unsigned long end;
  
- 	mfctl           %cr20, %r16 /* isr */
-+	nop		/* serialize mfctl on PA 2.0 to avoid 4 cycle penalty */
- 	mfctl           %cr21, %r17 /* ior */
+ 	address &= ~PGDIR_MASK;
++
+ 	end = address + size;
+ 	if (end > PGDIR_SIZE)
+ 		end = PGDIR_SIZE;
++
++	BUG_ON(address >= end);
++
+ 	phys_addr -= address;
+-	if (address >= end)
+-		BUG();
+ 	do {
+-		pte_t * pte = pte_alloc_kernel(pmd, address);
++		pte_t *pte = pte_alloc_kernel(pmd, address);
+ 		if (!pte)
+ 			return -ENOMEM;
+-		remap_area_pte(pte, address, end - address, address + phys_addr, flags);
++
++		remap_area_pte(pte, address, end - address, 
++			       address + phys_addr, flags);
++
+ 		address = (address + PMD_SIZE) & PMD_MASK;
+ 		pmd++;
+ 	} while (address && (address < end));
++
+ 	return 0;
+ }
  
--#ifdef __LP64__
+-#if (USE_HPPA_IOREMAP)
+-static int remap_area_pages(unsigned long address, unsigned long phys_addr,
+-				 unsigned long size, unsigned long flags)
++#if USE_HPPA_IOREMAP
++static int 
++remap_area_pages(unsigned long address, unsigned long phys_addr,
++		 unsigned long size, unsigned long flags)
+ {
+-	int error;
+-	pgd_t * dir;
++	pgd_t *dir;
++	int error = 0;
+ 	unsigned long end = address + size;
+ 
++	BUG_ON(address >= end);
++
+ 	phys_addr -= address;
+-	dir = pgd_offset(&init_mm, address);
++	dir = pgd_offset_k(address);
++
+ 	flush_cache_all();
+-	if (address >= end)
+-		BUG();
 +
-+#ifdef CONFIG_64BIT
- 	/*
- 	 * If the interrupted code was running with W bit off (32 bit),
- 	 * clear the b bits (bits 0 & 1) in the ior.
-+	 * save_specials left ipsw value in r8 for us to test.
- 	 */
- 	extrd,u,*<>     %r8,PSW_W_BIT,1,%r0
- 	depdi           0,1,2,%r17
-@@ -1192,7 +1187,7 @@
- 	loadgp
+ 	do {
++		pud_t *pud;
+ 		pmd_t *pmd;
+-		pmd = pmd_alloc(&init_mm, dir, address);
++
+ 		error = -ENOMEM;
++		pud = pud_alloc(&init_mm, dir, address);
++		if (!pud)
++			break;
++
++		pmd = pmd_alloc(&init_mm, pud, address);
+ 		if (!pmd)
+ 			break;
++
+ 		if (remap_area_pmd(pmd, address, end - address,
+-					 phys_addr + address, flags))
++				   phys_addr + address, flags))
+ 			break;
++
+ 		error = 0;
+ 		address = (address + PGDIR_SIZE) & PGDIR_MASK;
+ 		dir++;
+ 	} while (address && (address < end));
++
+ 	flush_tlb_all();
++
+ 	return error;
+ }
+ #endif /* USE_HPPA_IOREMAP */
+@@ -123,8 +146,7 @@
  
- 	copy		%r29, %r25	/* arg1 is pt_regs */
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo		-16(%r30),%r29	/* Reference param save area */
+ /*
+  * Remap an arbitrary physical address space into the kernel virtual
+- * address space. Needed when the kernel wants to access high addresses
+- * directly.
++ * address space.
+  *
+  * NOTE! We need to allow non-page-aligned mappings too: we will obviously
+  * have to convert them into an offset in a page-aligned mapping, but the
+@@ -148,8 +170,8 @@
  #endif
  
-@@ -1230,7 +1225,7 @@
- 	spc  = r24	/* space for which the trap occured */
- 	ptp = r25	/* page directory/page table pointer */
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 
- dtlb_miss_20w:
- 	space_adjust	spc,va,t0
-@@ -1487,10 +1482,10 @@
- 	add,l           %r1,%r24,%r1           /* doesn't affect c/b bits */
- 
- nadtlb_nullify:
--	mfctl           %cr22,%r8              /* Get ipsw */
-+	mfctl           %ipsw,%r8
- 	ldil            L%PSW_N,%r9
- 	or              %r8,%r9,%r8            /* Set PSW_N */
--	mtctl           %r8,%cr22
-+	mtctl           %r8,%ipsw
- 
- 	rfir
- 	nop
-@@ -1521,7 +1516,7 @@
- 	nop
- 
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- itlb_miss_20w:
+ #else
+-	void * addr;
+-	struct vm_struct * area;
++	void *addr;
++	struct vm_struct *area;
+ 	unsigned long offset, last_addr;
+ 
+ 	/* Don't allow wraparound or zero size */
+@@ -167,9 +189,11 @@
+ 		t_addr = __va(phys_addr);
+ 		t_end = t_addr + (size - 1);
+ 	   
+-		for(page = virt_to_page(t_addr); page <= virt_to_page(t_end); page++)
++		for (page = virt_to_page(t_addr); 
++		     page <= virt_to_page(t_end); page++) {
+ 			if(!PageReserved(page))
+ 				return NULL;
++		}
+ 	}
  
  	/*
-@@ -1588,7 +1583,7 @@
- 
+@@ -185,11 +209,13 @@
+ 	area = get_vm_area(size, VM_IOREMAP);
+ 	if (!area)
+ 		return NULL;
++
+ 	addr = area->addr;
+ 	if (remap_area_pages((unsigned long) addr, phys_addr, size, flags)) {
+ 		vfree(addr);
+ 		return NULL;
+ 	}
++
+ 	return (void __iomem *) (offset + (char *)addr);
  #endif
+ }
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/arch/x86_64/ia32/ia32_signal.c CVS2_6_15_RC7_PA0/arch/x86_64/ia32/ia32_signal.c
+--- LINUS_2_6_15_RC7/arch/x86_64/ia32/ia32_signal.c	2005-12-27 13:25:38.000000000 -0700
++++ CVS2_6_15_RC7_PA0/arch/x86_64/ia32/ia32_signal.c	2005-11-12 20:29:21.000000000 -0700
+@@ -23,6 +23,7 @@
+ #include <linux/stddef.h>
+ #include <linux/personality.h>
+ #include <linux/compat.h>
++#include <linux/compat_siginfo.h>
+ #include <asm/ucontext.h>
+ #include <asm/uaccess.h>
+ #include <asm/i387.h>
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/net/tulip/media.c CVS2_6_15_RC7_PA0/drivers/net/tulip/media.c
+--- LINUS_2_6_15_RC7/drivers/net/tulip/media.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/net/tulip/media.c	2005-09-14 06:56:25.000000000 -0600
+@@ -44,8 +44,10 @@
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 
- dbit_trap_20w:
- 	space_adjust	spc,va,t0
-@@ -1797,7 +1792,7 @@
+ /* MII transceiver control section.
+    Read and write the MII registers using software-generated serial
+-   MDIO protocol.  See the MII specifications or DP83840A data sheet
+-   for details. */
++   MDIO protocol.
++   See IEEE 802.3-2002.pdf (Section 2, Chapter "22.2.4 Management functions")
++   or DP83840A data sheet for more details.
++   */
  
- 	STREG	%r2,-RP_OFFSET(%r30)
- 	ldo	FRAME_SIZE(%r30),%r30
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29		/* Reference param save area */
- #endif
+ int tulip_mdio_read(struct net_device *dev, int phy_id, int location)
+ {
+@@ -261,24 +263,56 @@
+ 				u16 *reset_sequence = &((u16*)(p+3))[init_length];
+ 				int reset_length = p[2 + init_length*2];
+ 				misc_info = reset_sequence + reset_length;
+-				if (startup)
++				if (startup) {
++					int timeout = 10;	/* max 1 ms */
+ 					for (i = 0; i < reset_length; i++)
+ 						iowrite32(get_u16(&reset_sequence[i]) << 16, ioaddr + CSR15);
++				
++					/* flush posted writes */
++					ioread32(ioaddr + CSR15);
++
++					/* Sect 3.10.3 in DP83840A.pdf (p39) */
++					udelay(500);
++
++					/* Section 4.2 in DP83840A.pdf (p43) */
++					/* and IEEE 802.3 "22.2.4.1.1 Reset" */
++					while (timeout-- &&
++						(tulip_mdio_read (dev, phy_num, MII_BMCR) & BMCR_RESET))
++						udelay(100);
++				}
+ 				for (i = 0; i < init_length; i++)
+ 					iowrite32(get_u16(&init_sequence[i]) << 16, ioaddr + CSR15);
++
++				ioread32(ioaddr + CSR15);	/* flush posted writes */
+ 			} else {
+ 				u8 *init_sequence = p + 2;
+ 				u8 *reset_sequence = p + 3 + init_length;
+ 				int reset_length = p[2 + init_length];
+ 				misc_info = (u16*)(reset_sequence + reset_length);
+ 				if (startup) {
++					int timeout = 10;	/* max 1 ms */
+ 					iowrite32(mtable->csr12dir | 0x100, ioaddr + CSR12);
+ 					for (i = 0; i < reset_length; i++)
+ 						iowrite32(reset_sequence[i], ioaddr + CSR12);
++
++					/* flush posted writes */
++					ioread32(ioaddr + CSR12);
++
++					/* Sect 3.10.3 in DP83840A.pdf (p39) */
++					udelay(500);
++
++					/* Section 4.2 in DP83840A.pdf (p43) */
++					/* and IEEE 802.3 "22.2.4.1.1 Reset" */
++					while (timeout-- &&
++						(tulip_mdio_read (dev, phy_num, MII_BMCR) & BMCR_RESET))
++						udelay(100);
+ 				}
+ 				for (i = 0; i < init_length; i++)
+ 					iowrite32(init_sequence[i], ioaddr + CSR12);
++
++				ioread32(ioaddr + CSR12);	/* flush posted writes */
+ 			}
++
+ 			tmp_info = get_u16(&misc_info[1]);
+ 			if (tmp_info)
+ 				tp->advertising[phy_num] = tmp_info | 1;
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/net/tulip/tulip.h CVS2_6_15_RC7_PA0/drivers/net/tulip/tulip.h
+--- LINUS_2_6_15_RC7/drivers/net/tulip/tulip.h	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/net/tulip/tulip.h	2005-09-14 06:56:25.000000000 -0600
+@@ -474,8 +474,11 @@
+ 			udelay(10);
  
-@@ -1847,10 +1842,11 @@
+ 		if (!i)
+-			printk(KERN_DEBUG "%s: tulip_stop_rxtx() failed\n",
+-					pci_name(tp->pdev));
++			printk(KERN_DEBUG "%s: tulip_stop_rxtx() failed"
++					" (CSR5 0x%x CSR6 0x%x)\n",
++					pci_name(tp->pdev),
++					ioread32(ioaddr + CSR5),
++					ioread32(ioaddr + CSR6));
+ 	}
+ }
  
- 	STREG	%r2,-RP_OFFSET(%r30)
- 	ldo	FRAME_SIZE(%r30),%r30
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29		/* Reference param save area */
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/net/tulip/tulip_core.c CVS2_6_15_RC7_PA0/drivers/net/tulip/tulip_core.c
+--- LINUS_2_6_15_RC7/drivers/net/tulip/tulip_core.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/net/tulip/tulip_core.c	2005-11-11 21:07:59.000000000 -0700
+@@ -22,7 +22,7 @@
+ #else
+ #define DRV_VERSION	"1.1.13"
  #endif
+-#define DRV_RELDATE	"May 11, 2002"
++#define DRV_RELDATE	"December 15, 2004"
  
-+	/* WARNING - Clobbers r19 and r21, userspace must save these! */
- 	STREG	%r2,PT_GR19(%r1)	/* save for child */
- 	STREG	%r30,PT_GR21(%r1)
- 	BL	sys_clone,%r2
-@@ -1869,7 +1865,7 @@
  
- 	STREG	%r2,-RP_OFFSET(%r30)
- 	ldo	FRAME_SIZE(%r30),%r30
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29		/* Reference param save area */
- #endif
+ #include <linux/module.h>
+@@ -148,7 +148,7 @@
+ 	HAS_MII | HAS_MEDIA_TABLE | CSR12_IN_SROM | HAS_PCI_MWI, tulip_timer },
  
-@@ -1897,10 +1893,10 @@
+   /* DC21142, DC21143 */
+-  { "Digital DS21143 Tulip", 128, 0x0801fbff,
++  { "Digital DS21142/DS21143 Tulip", 128, 0x0801fbff,
+ 	HAS_MII | HAS_MEDIA_TABLE | ALWAYS_CHECK_MII | HAS_ACPI | HAS_NWAY
+ 	| HAS_INTR_MITIGATION | HAS_PCI_MWI, t21142_timer },
  
- 	STREG %r2,-RP_OFFSET(%r30)
- 	ldo FRAME_SIZE(%r30),%r30
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29		/* Reference param save area */
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/parisc/dino.c CVS2_6_15_RC7_PA0/drivers/parisc/dino.c
+--- LINUS_2_6_15_RC7/drivers/parisc/dino.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/parisc/dino.c	2005-12-14 00:49:15.000000000 -0700
+@@ -124,6 +124,7 @@
+ 
+ #define DINO_IRQS 11		/* bits 0-10 are architected */
+ #define DINO_IRR_MASK	0x5ff	/* only 10 bits are implemented */
++#define DINO_LOCAL_IRQS (DINO_IRQS+1)
+ 
+ #define DINO_MASK_IRQ(x)	(1<<(x))
+ 
+@@ -146,7 +147,7 @@
+ 	unsigned long		txn_addr; /* EIR addr to generate interrupt */ 
+ 	u32			txn_data; /* EIR data assign to each dino */ 
+ 	u32 			imr;	  /* IRQ's which are enabled */ 
+-	int			global_irq[12]; /* map IMR bit to global irq */
++	int			global_irq[DINO_LOCAL_IRQS]; /* map IMR bit to global irq */
+ #ifdef DINO_DEBUG
+ 	unsigned int		dino_irr0; /* save most recent IRQ line stat */
  #endif
--	bl \execve,%r2
-+	BL \execve,%r2
- 	copy %r1,%arg0
- 
- 	ldo -FRAME_SIZE(%r30),%r30
-@@ -1923,7 +1919,7 @@
- sys_execve_wrapper:
- 	execve_wrapper sys_execve
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	.export sys32_execve_wrapper
- 	.import sys32_execve
- 
-@@ -1937,7 +1933,7 @@
- 	ldo	TASK_REGS(%r26),%r26	/* get pt regs */
- 	/* Don't save regs, we are going to restore them from sigcontext. */
- 	STREG	%r2, -RP_OFFSET(%r30)
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	FRAME_SIZE(%r30), %r30
- 	BL	sys_rt_sigreturn,%r2
- 	ldo	-16(%r30),%r29		/* Reference param save area */
-@@ -1968,7 +1964,7 @@
- 	ldo	TASK_REGS(%r1),%r24	/* get pt regs */
- 	LDREG	TASK_PT_GR30(%r24),%r24
- 	STREG	%r2, -RP_OFFSET(%r30)
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	FRAME_SIZE(%r30), %r30
- 	b,l	do_sigaltstack,%r2
- 	ldo	-16(%r30),%r29		/* Reference param save area */
-@@ -1982,7 +1978,7 @@
- 	bv	%r0(%r2)
- 	nop
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	.export sys32_sigaltstack_wrapper
- sys32_sigaltstack_wrapper:
- 	/* Get the user stack pointer */
-@@ -2006,7 +2002,7 @@
- 	reg_save %r24
- 
- 	STREG	%r2, -RP_OFFSET(%r30)
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	FRAME_SIZE(%r30), %r30
- 	b,l	sys_rt_sigsuspend,%r2
- 	ldo	-16(%r30),%r29		/* Reference param save area */
-@@ -2079,7 +2075,7 @@
- 	ldw     TI_CPU-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r26 /* cpu # */
- 
- 	/* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) bits */
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	shld	%r26, 6, %r20
- #else
- 	shlw	%r26, 5, %r20
-@@ -2087,9 +2083,6 @@
- 	add     %r19,%r20,%r19	/* now have &irq_stat[smp_processor_id()] */
- #endif /* CONFIG_SMP */
+@@ -297,7 +298,7 @@
+ static void dino_disable_irq(unsigned int irq)
+ {
+ 	struct dino_device *dino_dev = irq_desc[irq].handler_data;
+-	int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq);
++	int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
  
--	LDREG   IRQSTAT_SIRQ_PEND(%r19),%r20    /* hardirq.h: unsigned long */
--	cmpib,<>,n 0,%r20,syscall_do_softirq /* forward */
--
- syscall_check_resched:
+ 	DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);
  
- 	/* check for reschedule */
-@@ -2144,7 +2137,7 @@
+@@ -309,7 +310,7 @@
+ static void dino_enable_irq(unsigned int irq)
+ {
+ 	struct dino_device *dino_dev = irq_desc[irq].handler_data;
+-	int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq);
++	int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
+ 	u32 tmp;
  
- 	depi	3,31,2,%r31			   /* ensure return to user mode. */
+ 	DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);
+@@ -435,6 +436,21 @@
+ 	dino_assign_irq(dino, irq, &dev->irq);
+ }
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* decide whether to reset the wide mode bit
- 	 *
- 	 * For a syscall, the W bit is stored in the lowest bit
-@@ -2227,20 +2220,10 @@
- 	b	intr_restore
- 	nop
- 
--	.import do_softirq,code
--syscall_do_softirq:
--	bl      do_softirq,%r2
--	nop
--	/* NOTE: We enable I-bit incase we schedule later,
--	 * and we might be going back to userspace if we were
--	 * traced. */
--	b       syscall_check_resched
--	ssm     PSW_SM_I, %r0  /* do_softirq returns with I bit off */
--
- 	.import schedule,code
- syscall_do_resched:
- 	BL	schedule,%r2
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29		/* Reference param save area */
- #else
- 	nop
-@@ -2260,7 +2243,7 @@
++
++/*
++ * Cirrus 6832 Cardbus reports wrong irq on RDI Tadpole PARISC Laptop (deller at gmx.de)
++ * (the irqs are off-by-one, not sure yet if this is a cirrus, dino-hardware or dino-driver problem...)
++ */
++static void __devinit quirk_cirrus_cardbus(struct pci_dev *dev)
++{
++	u8 new_irq = dev->irq - 1;
++	printk(KERN_INFO "PCI: Cirrus Cardbus IRQ fixup for %s, from %d to %d\n",
++			pci_name(dev), dev->irq, new_irq);
++	dev->irq = new_irq;
++}
++DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_CIRRUS, PCI_DEVICE_ID_CIRRUS_6832, quirk_cirrus_cardbus );
++
++
+ static void __init
+ dino_bios_init(void)
+ {
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/parisc/eisa.c CVS2_6_15_RC7_PA0/drivers/parisc/eisa.c
+--- LINUS_2_6_15_RC7/drivers/parisc/eisa.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/parisc/eisa.c	2005-12-19 06:48:41.000000000 -0700
+@@ -57,7 +57,7 @@
  
- 	ldi	1, %r24				/* unsigned long in_syscall */
+ static DEFINE_SPINLOCK(eisa_irq_lock);
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29			/* Reference param save area */
- #endif
- 	BL	do_signal,%r2
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/firmware.c CVS2_6_14_PA0/arch/parisc/kernel/firmware.c
---- LINUS_2_6_14/arch/parisc/kernel/firmware.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/firmware.c	2005-08-17 09:52:35.000000000 -0600
-@@ -83,15 +83,15 @@
- int parisc_narrow_firmware = 1;
- #endif
+-void __iomem *eisa_eeprom_addr;
++void __iomem *eisa_eeprom_addr __read_mostly;
  
--/* on all currently-supported platforms, IODC I/O calls are always
-- * 32-bit calls, and MEM_PDC calls are always the same width as the OS.
-- * This means Cxxx boxes can't run wide kernels right now. -PB
-- *
-- * CONFIG_PDC_NARROW has been added to allow 64-bit kernels to run on
-- * systems with 32-bit MEM_PDC calls. This will allow wide kernels to
-- * run on Cxxx boxes now. -RB
-- *
-- * Note that some PAT boxes may have 64-bit IODC I/O...
-+/* On most currently-supported platforms, IODC I/O calls are 32-bit calls
-+ * and MEM_PDC calls are always the same width as the OS.
-+ * Some PAT boxes may have 64-bit IODC I/O.
-+ *
-+ * Ryan Bradetich added the now obsolete CONFIG_PDC_NARROW to allow
-+ * 64-bit kernels to run on systems with 32-bit MEM_PDC calls.
-+ * This allowed wide kernels to run on Cxxx boxes.
-+ * We now detect 32-bit-only PDC and dynamically switch to 32-bit mode
-+ * when running a 64-bit kernel on such boxes (e.g. C200 or C360).
+ /* We can only have one EISA adapter in the system because neither
+  * implementation can be flexed.
+@@ -141,7 +141,7 @@
+  * in the furure. 
   */
- 
- #ifdef __LP64__
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/head.S CVS2_6_14_PA0/arch/parisc/kernel/head.S
---- LINUS_2_6_14/arch/parisc/kernel/head.S	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/head.S	2005-09-14 06:54:53.000000000 -0600
-@@ -12,7 +12,7 @@
-  * Initial Version 04-23-1999 by Helge Deller <deller at gmx.de>
+ /* irq 13,8,2,1,0 must be edge */
+-static unsigned int eisa_irq_level; /* default to edge triggered */
++static unsigned int eisa_irq_level __read_mostly; /* default to edge triggered */
+ 
+ 
+ /* called by free irq */
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/parisc/eisa_eeprom.c CVS2_6_15_RC7_PA0/drivers/parisc/eisa_eeprom.c
+--- LINUS_2_6_15_RC7/drivers/parisc/eisa_eeprom.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/parisc/eisa_eeprom.c	2005-12-23 19:04:41.000000000 -0700
+@@ -48,7 +48,7 @@
+ }
+ 
+ static ssize_t eisa_eeprom_read(struct file * file,
+-			      char *buf, size_t count, loff_t *ppos )
++			      char __user *buf, size_t count, loff_t *ppos )
+ {
+ 	unsigned char *tmp;
+ 	ssize_t ret;
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/parisc/lasi.c CVS2_6_15_RC7_PA0/drivers/parisc/lasi.c
+--- LINUS_2_6_15_RC7/drivers/parisc/lasi.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/parisc/lasi.c	2005-12-19 06:48:41.000000000 -0700
+@@ -150,7 +150,7 @@
+  * 
   */
  
--#include <linux/autoconf.h>	/* for CONFIG_SMP */
-+#include <linux/config.h>	/* for CONFIG_SMP */
+-static unsigned long lasi_power_off_hpa;
++static unsigned long lasi_power_off_hpa __read_mostly;
  
- #include <asm/asm-offsets.h>
- #include <asm/psw.h>
-@@ -36,10 +36,10 @@
- 	.align	4
- 	.import init_thread_union,data
- 	.import fault_vector_20,code    /* IVA parisc 2.0 32 bit */
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
-         .import fault_vector_11,code    /* IVA parisc 1.1 32 bit */
- 	.import	$global$		/* forward declaration */
--#endif /*!LP64*/
-+#endif /*!CONFIG_64BIT*/
- 	.export stext
- 	.export _stext,data		/* Kernel want it this way! */
- _stext:
-@@ -76,7 +76,7 @@
- 	mtctl		%r4,%cr24	/* Initialize kernel root pointer */
- 	mtctl		%r4,%cr25	/* Initialize user root pointer */
+ static void lasi_power_off(void)
+ {
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/parisc/lba_pci.c CVS2_6_15_RC7_PA0/drivers/parisc/lba_pci.c
+--- LINUS_2_6_15_RC7/drivers/parisc/lba_pci.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/parisc/lba_pci.c	2005-12-19 06:48:41.000000000 -0700
+@@ -167,7 +167,7 @@
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* Set pmd in pgd */
- 	load32		PA(pmd0),%r5
- 	shrd            %r5,PxD_VALUE_SHIFT,%r3	
-@@ -99,7 +99,7 @@
- 	stw		%r3,0(%r4)
- 	ldo		(ASM_PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3
- 	addib,>		-1,%r1,1b
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo             ASM_PMD_ENTRY_SIZE(%r4),%r4
+ /* non-postable I/O port space, densely packed */
+ #define LBA_PORT_BASE	(PCI_F_EXTEND | 0xfee00000UL)
+-static void __iomem *astro_iop_base;
++static void __iomem *astro_iop_base __read_mostly;
+ 
+ #define ELROY_HVERS	0x782
+ #define MERCURY_HVERS	0x783
+@@ -695,11 +695,71 @@
+ 		}
+ 	}
+ }
++
++
++/*
++ * truncate_pat_collision:  Deal with overlaps or outright collisions
++ *			between PAT PDC reported ranges.
++ *
++ *   Broken PA8800 firmware will report lmmio range that
++ *   overlaps with CPU HPA. Just truncate the lmmio range.
++ *
++ *   BEWARE: conflicts with this lmmio range may be an
++ *   elmmio range which is pointing down another rope.
++ *
++ *  FIXME: only deals with one collision per range...theoretically we
++ *  could have several. Supporting more than one collision will get messy.
++ */
++static unsigned long
++truncate_pat_collision(struct resource *root, struct resource *new)
++{
++	unsigned long start = new->start;
++	unsigned long end = new->end;
++	struct resource *tmp = root->child;
++
++	if (end <= start || start < root->start || !tmp)
++		return 0;
++
++	/* find first overlap */
++	while (tmp && tmp->end < start)
++		tmp = tmp->sibling;
++
++	/* no entries overlap */
++	if (!tmp)  return 0;
++
++	/* found one that starts behind the new one
++	** Don't need to do anything.
++	*/
++	if (tmp->start >= end) return 0;
++
++	if (tmp->start <= start) {
++		/* "front" of new one overlaps */
++		new->start = tmp->end + 1;
++
++		if (tmp->end >= end) {
++			/* AACCKK! totally overlaps! drop this range. */
++			return 1;
++		}
++	} 
++
++	if (tmp->end < end ) {
++		/* "end" of new one overlaps */
++		new->end = tmp->start - 1;
++	}
++
++	printk(KERN_WARNING "LBA: Truncating lmmio_space [%lx/%lx] "
++					"to [%lx,%lx]\n",
++			start, end,
++			new->start, new->end );
++
++	return 0;	/* truncation successful */
++}
++
  #else
- 	ldo             ASM_PGD_ENTRY_SIZE(%r4),%r4
-@@ -170,7 +170,7 @@
- 	stw		%r0,0x28(%r0)	/* MEM_RENDEZ_HI */
- #endif /*CONFIG_SMP*/
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	tophys_r1	%sp
- 
- 	/* Save the rfi target address */
-@@ -224,8 +224,6 @@
- 	mtctl	%r0,%cr12
- 	mtctl	%r0,%cr13
- 
--	/* Prepare to RFI! Man all the cannons! */
--
- 	/* Initialize the global data pointer */
- 	loadgp
- 
-@@ -235,7 +233,7 @@
- 	 * following short sequence of instructions can determine this
- 	 * (without being illegal on a PA1.1 machine).
- 	 */
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
- 	ldi		32,%r10
- 	mtctl		%r10,%cr11
- 	.level 2.0
-@@ -248,52 +246,22 @@
- 
- $is_pa20:
- 	.level		LEVEL /* restore 1.1 || 2.0w */
--#endif /*!LP64*/
-+#endif /*!CONFIG_64BIT*/
- 	load32		PA(fault_vector_20),%r10
- 
- $install_iva:
- 	mtctl		%r10,%cr14
+-#define lba_claim_dev_resources(dev)
++#define lba_claim_dev_resources(dev) do { } while (0)
++#define truncate_pat_collision(r,n)  (0)
+ #endif
  
--#ifdef __LP64__
--	b		aligned_rfi
-+	b		aligned_rfi  /* Prepare to RFI! Man all the cannons! */
- 	nop
- 
--	.align          256
-+	.align 128
- aligned_rfi:
--	ssm             0,0
--	nop             /* 1 */
--	nop             /* 2 */
--	nop             /* 3 */
--	nop             /* 4 */
--	nop             /* 5 */
--	nop             /* 6 */
--	nop             /* 7 */
--	nop             /* 8 */
--#endif
 -
--#ifdef __LP64__ /* move to psw.h? */
--#define		PSW_BITS	PSW_Q+PSW_I+PSW_D+PSW_P+PSW_R
--#else
--#define		PSW_BITS	PSW_SM_Q
--#endif
-+	pcxt_ssm_bug
+ /*
+ ** The algorithm is generic code.
+ ** But it needs to access local data structures to get the IRQ base.
+@@ -747,6 +807,9 @@
+ 			lba_dump_res(&ioport_resource, 2);
+ 			BUG();
+ 		}
++		/* advertize Host bridge resources to PCI bus */
++		bus->resource[0] = &(ldev->hba.io_space);
++		i = 1;
+ 
+ 		if (ldev->hba.elmmio_space.start) {
+ 			err = request_resource(&iomem_resource,
+@@ -760,23 +823,35 @@
+ 
+ 				/* lba_dump_res(&iomem_resource, 2); */
+ 				/* BUG(); */
+-			}
++			} else
++				bus->resource[i++] = &(ldev->hba.elmmio_space);
+ 		}
  
--$rfi:	
--	/* turn off troublesome PSW bits */
--	rsm		PSW_BITS,%r0
--
--	/* kernel PSW:
--	 *  - no interruptions except HPMC and TOC (which are handled by PDC)
--	 *  - Q bit set (IODC / PDC interruptions)
--	 *  - big-endian
--	 *  - virtually mapped
--	 */
--	load32		KERNEL_PSW,%r10
--	mtctl		%r10,%ipsw
-+	rsm		PSW_SM_QUIET,%r0	/* off troublesome PSW bits */
-+	/* Don't need NOPs, have 8 compliant insn before rfi */
- 
--	/* Set the space pointers for the post-RFI world
--	** Clear the two-level IIA Space Queue, effectively setting
--	** Kernel space.
--	*/
- 	mtctl		%r0,%cr17	/* Clear IIASQ tail */
- 	mtctl		%r0,%cr17	/* Clear IIASQ head */
- 
-@@ -301,8 +269,11 @@
- 	mtctl		%r11,%cr18	/* IIAOQ head */
- 	ldo		4(%r11),%r11
- 	mtctl		%r11,%cr18	/* IIAOQ tail */
+-		err = request_resource(&iomem_resource, &(ldev->hba.lmmio_space));
+-		if (err < 0) {
+-			/*   FIXME  overlaps with elmmio will fail here.
+-			 *   Need to prune (or disable) the distributed range.
+-			 *
+-			 *   BEWARE: conflicts with this lmmio range may be
+-			 *   elmmio range which is pointing down another rope.
+-			 */
+ 
+-			printk("FAILED: lba_fixup_bus() request for "
++		/*   Overlaps with elmmio can (and should) fail here.
++		 *   We will prune (or ignore) the distributed range.
++		 *
++		 *   FIXME: SBA code should register all elmmio ranges first.
++		 *      that would take care of elmmio ranges routed
++		 *	to a different rope (already discovered) from
++		 *	getting registered *after* LBA code has already
++		 *	registered it's distributed lmmio range.
++		 */
++		if (truncate_pat_collision(&iomem_resource,
++				       	&(ldev->hba.lmmio_space))) {
 +
-+	load32		KERNEL_PSW,%r10
-+	mtctl		%r10,%ipsw
- 	
--	/* Jump to hyperspace */
-+	/* Jump through hyperspace to Virt Mode */
- 	rfi
- 	nop
- 
-@@ -313,7 +284,7 @@
- 	.import smp_init_current_idle_task,data
- 	.import	smp_callin,code
- 
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
- smp_callin_rtn:
-         .proc
- 	.callinfo
-@@ -321,7 +292,7 @@
- 	nop
- 	nop
-         .procend
--#endif /*!LP64*/
-+#endif /*!CONFIG_64BIT*/
- 
- /***************************************************************************
- * smp_slave_stext is executed by all non-monarch Processors when the Monarch
-@@ -356,7 +327,7 @@
- 	mtctl		%r4,%cr24	/* Initialize kernel root pointer */
- 	mtctl		%r4,%cr25	/* Initialize user root pointer */
++			printk(KERN_WARNING "LBA: lmmio_space [%lx/%lx] duplicate!\n",
++					ldev->hba.lmmio_space.start,
++					ldev->hba.lmmio_space.end);
++		} else {
++			err = request_resource(&iomem_resource, &(ldev->hba.lmmio_space));
++			if (err < 0) {
++				printk(KERN_ERR "FAILED: lba_fixup_bus() request for "
+ 					"lmmio_space [%lx/%lx]\n",
+ 					ldev->hba.lmmio_space.start,
+ 					ldev->hba.lmmio_space.end);
+-			/* lba_dump_res(&iomem_resource, 2); */
++			} else
++				bus->resource[i++] = &(ldev->hba.lmmio_space);
+ 		}
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* Setup PDCE_PROC entry */
- 	copy            %arg0,%r3
- #else
-@@ -373,7 +344,7 @@
+ #ifdef CONFIG_64BIT
+@@ -791,18 +866,10 @@
+ 				lba_dump_res(&iomem_resource, 2);
+ 				BUG();
+ 			}
++			bus->resource[i++] = &(ldev->hba.gmmio_space);
+ 		}
+ #endif
  
- 	.procend
- #endif /* CONFIG_SMP */
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
- 	.data
- 
- 	.align	4
-@@ -383,4 +354,4 @@
- 	.size	$global$,4
- $global$:	
- 	.word 0
--#endif /*!LP64*/
-+#endif /*!CONFIG_64BIT*/
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/ioctl32.c CVS2_6_14_PA0/arch/parisc/kernel/ioctl32.c
---- LINUS_2_6_14/arch/parisc/kernel/ioctl32.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/ioctl32.c	2005-04-12 13:17:10.000000000 -0600
-@@ -104,12 +104,9 @@
+-		/* advertize Host bridge resources to PCI bus */
+-		bus->resource[0] = &(ldev->hba.io_space);
+-		bus->resource[1] = &(ldev->hba.lmmio_space);
+-		i=2;
+-		if (ldev->hba.elmmio_space.start)
+-			bus->resource[i++] = &(ldev->hba.elmmio_space);
+-		if (ldev->hba.gmmio_space.start)
+-			bus->resource[i++] = &(ldev->hba.gmmio_space);
+-			
  	}
  
- out:
--	if (kversion.name)
--		kfree(kversion.name);
--	if (kversion.date)
--		kfree(kversion.date);
--	if (kversion.desc)
--		kfree(kversion.desc);
-+	kfree(kversion.name);
-+	kfree(kversion.date);
-+	kfree(kversion.desc);
- 	return ret;
- }
+ 	list_for_each(ln, &bus->devices) {
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/parisc/led.c CVS2_6_15_RC7_PA0/drivers/parisc/led.c
+--- LINUS_2_6_15_RC7/drivers/parisc/led.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/parisc/led.c	2005-12-19 06:48:41.000000000 -0700
+@@ -3,7 +3,7 @@
+  *
+  *      (c) Copyright 2000 Red Hat Software
+  *      (c) Copyright 2000 Helge Deller <hdeller at redhat.com>
+- *      (c) Copyright 2001-2004 Helge Deller <deller at gmx.de>
++ *      (c) Copyright 2001-2005 Helge Deller <deller at gmx.de>
+  *      (c) Copyright 2001 Randolph Chung <tausq at debian.org>
+  *
+  *      This program is free software; you can redistribute it and/or modify
+@@ -56,13 +56,13 @@
+    relatively large amount of CPU time, some of the calculations can be 
+    turned off with the following variables (controlled via procfs) */
  
-@@ -166,9 +163,7 @@
- 			ret = -EFAULT;
- 	}
+-static int led_type = -1;
++static int led_type __read_mostly = -1;
+ static unsigned char lastleds;	/* LED state from most recent update */
+-static unsigned int led_heartbeat = 1;
+-static unsigned int led_diskio = 1;
+-static unsigned int led_lanrxtx = 1;
+-static char lcd_text[32];
+-static char lcd_text_default[32];
++static unsigned int led_heartbeat __read_mostly = 1;
++static unsigned int led_diskio    __read_mostly = 1;
++static unsigned int led_lanrxtx   __read_mostly = 1;
++static char lcd_text[32]          __read_mostly;
++static char lcd_text_default[32]  __read_mostly;
+ 
+ 
+ static struct workqueue_struct *led_wq;
+@@ -108,7 +108,7 @@
+ /* lcd_info is pre-initialized to the values needed to program KittyHawk LCD's 
+  * HP seems to have used Sharp/Hitachi HD44780 LCDs most of the time. */
+ static struct pdc_chassis_lcd_info_ret_block
+-lcd_info __attribute__((aligned(8))) =
++lcd_info __attribute__((aligned(8))) __read_mostly =
+ {
+ 	.model =		DISPLAY_MODEL_LCD,
+ 	.lcd_width =		16,
+@@ -144,7 +144,7 @@
+ device_initcall(start_task);
  
--	if (karg.unique != NULL)
--		kfree(karg.unique);
--
-+	kfree(karg.unique);
- 	return ret;
- }
+ /* ptr to LCD/LED-specific function */
+-static void (*led_func_ptr) (unsigned char);
++static void (*led_func_ptr) (unsigned char) __read_mostly;
  
-@@ -265,7 +260,6 @@
- 	}
+ #ifdef CONFIG_PROC_FS
+ static int led_proc_read(char *page, char **start, off_t off, int count, 
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/parisc/pdc_stable.c CVS2_6_15_RC7_PA0/drivers/parisc/pdc_stable.c
+--- LINUS_2_6_15_RC7/drivers/parisc/pdc_stable.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/parisc/pdc_stable.c	2005-12-19 06:48:41.000000000 -0700
+@@ -56,7 +56,7 @@
+ #include <asm/uaccess.h>
+ #include <asm/hardware.h>
  
- 	kfree(karg.list);
--
- 	return ret;
- }
+-#define PDCS_VERSION	"0.09"
++#define PDCS_VERSION	"0.10"
  
-@@ -305,7 +299,6 @@
+ #define PDCS_ADDR_PPRI	0x00
+ #define PDCS_ADDR_OSID	0x40
+@@ -70,7 +70,7 @@
+ MODULE_LICENSE("GPL");
+ MODULE_VERSION(PDCS_VERSION);
  
- out:
- 	kfree(karg.list);
--
- 	return ret;
- }
+-static unsigned long pdcs_size = 0;
++static unsigned long pdcs_size __read_mostly;
  
-@@ -494,15 +487,10 @@
+ /* This struct defines what we need to deal with a parisc pdc path entry */
+ struct pdcspath_entry {
+@@ -194,7 +194,8 @@
+ 		return -EIO;
  	}
+ 		
+-	entry->ready = 1;
++	/* kobject is already registered */
++	entry->ready = 2;
+ 	
+ 	DPRINTK("%s: device: 0x%p\n", __func__, entry->dev);
+ 	
+@@ -653,15 +654,21 @@
+ {
+ 	unsigned short i;
+ 	struct pdcspath_entry *entry;
++	int err;
+ 	
+ 	for (i = 0; (entry = pdcspath_entries[i]); i++) {
+ 		if (pdcspath_fetch(entry) < 0)
+ 			continue;
+ 
+-		kobject_set_name(&entry->kobj, "%s", entry->name);
++		if ((err = kobject_set_name(&entry->kobj, "%s", entry->name)))
++			return err;
+ 		kobj_set_kset_s(entry, paths_subsys);
+-		kobject_register(&entry->kobj);
+-
++		if ((err = kobject_register(&entry->kobj)))
++			return err;
++		
++		/* kobject is now registered */
++		entry->ready = 2;
++		
+ 		if (!entry->dev)
+ 			continue;
  
- out:
--	if (karg.send_indices)
--		kfree(karg.send_indices);
--	if (karg.send_sizes)
--		kfree(karg.send_sizes);
--	if (karg.request_indices)
--		kfree(karg.request_indices);
--	if (karg.request_sizes)
--		kfree(karg.request_sizes);
--
-+	kfree(karg.send_indices);
-+	kfree(karg.send_sizes);
-+	kfree(karg.request_indices);
-+	kfree(karg.request_sizes);
- 	return ret;
+@@ -675,14 +682,14 @@
+ /**
+  * pdcs_unregister_pathentries - Routine called when unregistering the module.
+  */
+-static inline void __exit
++static inline void
+ pdcs_unregister_pathentries(void)
+ {
+ 	unsigned short i;
+ 	struct pdcspath_entry *entry;
+ 	
+ 	for (i = 0; (entry = pdcspath_entries[i]); i++)
+-		if (entry->ready)
++		if (entry->ready >= 2)
+ 			kobject_unregister(&entry->kobj);	
+ }
+ 
+@@ -704,7 +711,7 @@
+ 
+ 	/* For now we'll register the pdc subsys within this driver */
+ 	if ((rc = firmware_register(&pdc_subsys)))
+-		return rc;
++		goto fail_firmreg;
+ 
+ 	/* Don't forget the info entry */
+ 	for (i = 0; (attr = pdcs_subsys_attrs[i]) && !error; i++)
+@@ -713,12 +720,25 @@
+ 	
+ 	/* register the paths subsys as a subsystem of pdc subsys */
+ 	kset_set_kset_s(&paths_subsys, pdc_subsys);
+-	subsystem_register(&paths_subsys);
++	if ((rc= subsystem_register(&paths_subsys)))
++		goto fail_subsysreg;
+ 
+ 	/* now we create all "files" for the paths subsys */
+-	pdcs_register_pathentries();
++	if ((rc = pdcs_register_pathentries()))
++		goto fail_pdcsreg;
++
++	return rc;
+ 	
+-	return 0;
++fail_pdcsreg:
++	pdcs_unregister_pathentries();
++	subsystem_unregister(&paths_subsys);
++	
++fail_subsysreg:
++	firmware_unregister(&pdc_subsys);
++	
++fail_firmreg:
++	printk(KERN_INFO "PDC Stable Storage bailing out\n");
++	return rc;
  }
  
-@@ -555,9 +543,7 @@
- 			ret = -EFAULT;
- 	}
+ static void __exit
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/parisc/power.c CVS2_6_15_RC7_PA0/drivers/parisc/power.c
+--- LINUS_2_6_15_RC7/drivers/parisc/power.c	2005-12-27 13:25:46.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/parisc/power.c	2005-12-19 06:48:41.000000000 -0700
+@@ -2,7 +2,7 @@
+  * linux/arch/parisc/kernel/power.c
+  * HP PARISC soft power switch support driver
+  *
+- * Copyright (c) 2001-2002 Helge Deller <deller at gmx.de>
++ * Copyright (c) 2001-2005 Helge Deller <deller at gmx.de>
+  * All rights reserved.
+  *
+  *
+@@ -102,7 +102,7 @@
  
--	if (karg.contexts)
--		kfree(karg.contexts);
--
-+	kfree(karg.contexts);
- 	return ret;
- }
+ static void poweroff(void)
+ {
+-	static int powering_off;
++	static int powering_off __read_mostly;
  
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/irq.c CVS2_6_14_PA0/arch/parisc/kernel/irq.c
---- LINUS_2_6_14/arch/parisc/kernel/irq.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/irq.c	2005-10-21 20:37:07.000000000 -0600
-@@ -30,6 +30,9 @@
- #include <linux/seq_file.h>
- #include <linux/spinlock.h>
- #include <linux/types.h>
-+#include <asm/io.h>
-+
-+#include <asm/smp.h>
+ 	if (powering_off)
+ 		return;
+@@ -113,7 +113,7 @@
  
- #undef PARISC_IRQ_CR16_COUNTS
  
-@@ -43,26 +46,34 @@
- */
- static volatile unsigned long cpu_eiem = 0;
+ /* local time-counter for shutdown */
+-static int shutdown_timer;
++static int shutdown_timer __read_mostly;
  
--static void cpu_set_eiem(void *info)
--{
--	set_eiem((unsigned long) info);
--}
--
--static inline void cpu_disable_irq(unsigned int irq)
-+static void cpu_disable_irq(unsigned int irq)
- {
- 	unsigned long eirr_bit = EIEM_MASK(irq);
+ /* check, give feedback and start shutdown after one second */
+ static void process_shutdown(void)
+@@ -139,7 +139,7 @@
+ DECLARE_TASKLET_DISABLED(power_tasklet, NULL, 0);
  
- 	cpu_eiem &= ~eirr_bit;
--        on_each_cpu(cpu_set_eiem, (void *) cpu_eiem, 1, 1);
-+	/* Do nothing on the other CPUs.  If they get this interrupt,
-+	 * The & cpu_eiem in the do_cpu_irq_mask() ensures they won't
-+	 * handle it, and the set_eiem() at the bottom will ensure it
-+	 * then gets disabled */
- }
+ /* soft power switch enabled/disabled */
+-int pwrsw_enabled = 1;
++int pwrsw_enabled __read_mostly = 1;
+ 
+ /*
+  * On gecko style machines (e.g. 712/xx and 715/xx) 
+@@ -149,7 +149,7 @@
+  */
+ static void gecko_tasklet_func(unsigned long unused)
+ {
+-	if (!pwrsw_enabled)
++	if (unlikely(!pwrsw_enabled))
+ 		return;
  
- static void cpu_enable_irq(unsigned int irq)
+ 	if (__getDIAG(25) & 0x80000000) {
+@@ -173,7 +173,7 @@
  {
- 	unsigned long eirr_bit = EIEM_MASK(irq);
+         unsigned long current_status;
+ 	
+-	if (!pwrsw_enabled)
++	if (unlikely(!pwrsw_enabled))
+ 		return;
+ 
+ 	current_status = gsc_readl(soft_power_reg);
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/parport/Kconfig CVS2_6_15_RC7_PA0/drivers/parport/Kconfig
+--- LINUS_2_6_15_RC7/drivers/parport/Kconfig	2005-12-27 13:25:47.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/parport/Kconfig	2005-12-07 14:28:17.000000000 -0700
+@@ -121,6 +121,7 @@
+ 	tristate
+ 	default GSC
+ 	depends on PARPORT
++	select PARPORT_NOT_PC
+ 
+ config PARPORT_SUNBPP
+ 	tristate "Sparc hardware (EXPERIMENTAL)"
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/pcmcia/Kconfig CVS2_6_15_RC7_PA0/drivers/pcmcia/Kconfig
+--- LINUS_2_6_15_RC7/drivers/pcmcia/Kconfig	2005-12-27 13:25:47.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/pcmcia/Kconfig	2005-12-11 10:56:12.000000000 -0700
+@@ -200,7 +200,7 @@
+ 
+ config PCMCIA_PROBE
+ 	bool
+-	default y if ISA && !ARCH_SA1100 && !ARCH_CLPS711X
++	default y if ISA && !ARCH_SA1100 && !ARCH_CLPS711XS && !PARISC
+ 
+ config M32R_PCC
+ 	bool "M32R PCMCIA I/F"
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/53c700.c CVS2_6_15_RC7_PA0/drivers/scsi/53c700.c
+--- LINUS_2_6_15_RC7/drivers/scsi/53c700.c	2005-12-27 13:25:48.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/53c700.c	2005-11-11 21:08:09.000000000 -0700
+@@ -302,6 +302,7 @@
+ 	__u8 *memory;
+ 	__u32 *script;
+ 	struct Scsi_Host *host;
++	const char *chipname;
+ 	static int banner = 0;
+ 	int j;
+ 
+@@ -402,11 +403,11 @@
+ 		printk(KERN_NOTICE "53c700: Version " NCR_700_VERSION " By James.Bottomley at HansenPartnership.com\n");
+ 		banner = 1;
+ 	}
++	chipname = hostdata->chip710 ? "53c710" : \
++		   (hostdata->fast ? "53c700-66" : "53c700");
+ 	printk(KERN_NOTICE "scsi%d: %s rev %d %s\n", host->host_no,
+-	       hostdata->chip710 ? "53c710" : 
+-	       (hostdata->fast ? "53c700-66" : "53c700"),
+-	       hostdata->rev, hostdata->differential ?
+-	       "(Differential)" : "");
++			chipname, hostdata->rev,
++			hostdata->differential ?  "(Differential)" : "");
+ 	/* reset the chip */
+ 	NCR_700_chip_reset(host);
+ 
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/Kconfig CVS2_6_15_RC7_PA0/drivers/scsi/Kconfig
+--- LINUS_2_6_15_RC7/drivers/scsi/Kconfig	2005-12-27 13:25:48.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/Kconfig	2005-12-12 09:35:31.000000000 -0700
+@@ -1066,7 +1066,7 @@
+ 	  memory using PCI DAC cycles.
+ 
+ config SCSI_SYM53C8XX_DEFAULT_TAGS
+-	int "default tagged command queue depth"
++	int "Default tagged command queue depth"
+ 	depends on SCSI_SYM53C8XX_2
+ 	default "16"
+ 	help
+@@ -1077,7 +1077,7 @@
+ 	  exceed CONFIG_SCSI_SYM53C8XX_MAX_TAGS.
+ 
+ config SCSI_SYM53C8XX_MAX_TAGS
+-	int "maximum number of queued commands"
++	int "Maximum number of queued commands"
+ 	depends on SCSI_SYM53C8XX_2
+ 	default "64"
+ 	help
+@@ -1086,13 +1086,14 @@
+ 	  possible. The driver supports up to 256 queued commands per device.
+ 	  This value is used as a compiled-in hard limit.
+ 
+-config SCSI_SYM53C8XX_IOMAPPED
+-	bool "use port IO"
++config SCSI_SYM53C8XX_MMIO
++	bool "Use memory mapped IO"
+ 	depends on SCSI_SYM53C8XX_2
++	default y
+ 	help
+-	  If you say Y here, the driver will use port IO to access
+-	  the card.  This is significantly slower then using memory
+-	  mapped IO.  Most people should answer N.
++	  Memory mapped IO is faster than Port IO.  Most people should
++	  answer Y here, but some machines may have problems.  If you have
++	  to answer N here, please report the problem to the maintainer.
+ 
+ config SCSI_IPR
+ 	tristate "IBM Power Linux RAID adapter support"
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/constants.c CVS2_6_15_RC7_PA0/drivers/scsi/constants.c
+--- LINUS_2_6_15_RC7/drivers/scsi/constants.c	2005-12-27 13:25:48.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/constants.c	2005-12-12 17:01:16.000000000 -0700
+@@ -114,8 +114,7 @@
+ 	{0xd, "Report supported task management functions"},
+ 	{0xe, "Report priority"},
+ };
+-#define MAINT_IN_SZ \
+-        (int)(sizeof(maint_in_arr) / sizeof(maint_in_arr[0]))
++#define MAINT_IN_SZ (int)ARRAY_SIZE(maint_in_arr)
+ 
+ static const struct value_name_pair maint_out_arr[] = {
+ 	{0x6, "Set device identifier"},
+@@ -123,34 +122,29 @@
+ 	{0xb, "Change aliases"},
+ 	{0xe, "Set priority"},
+ };
+-#define MAINT_OUT_SZ \
+-        (int)(sizeof(maint_out_arr) / sizeof(maint_out_arr[0]))
++#define MAINT_OUT_SZ (int)ARRAY_SIZE(maint_out_arr)
+ 
+ static const struct value_name_pair serv_in12_arr[] = {
+ 	{0x1, "Read media serial number"},
+ };
+-#define SERV_IN12_SZ  \
+-        (int)(sizeof(serv_in12_arr) / sizeof(serv_in12_arr[0]))
++#define SERV_IN12_SZ (int)ARRAY_SIZE(serv_in12_arr)
+ 
+ static const struct value_name_pair serv_out12_arr[] = {
+ 	{-1, "dummy entry"},
+ };
+-#define SERV_OUT12_SZ \
+-        (int)(sizeof(serv_out12_arr) / sizeof(serv_in12_arr[0]))
++#define SERV_OUT12_SZ (int)ARRAY_SIZE(serv_out12_arr)
+ 
+ static const struct value_name_pair serv_in16_arr[] = {
+ 	{0x10, "Read capacity(16)"},
+ 	{0x11, "Read long(16)"},
+ };
+-#define SERV_IN16_SZ  \
+-        (int)(sizeof(serv_in16_arr) / sizeof(serv_in16_arr[0]))
++#define SERV_IN16_SZ (int)ARRAY_SIZE(serv_in16_arr)
+ 
+ static const struct value_name_pair serv_out16_arr[] = {
+ 	{0x11, "Write long(16)"},
+ 	{0x1f, "Notify data transfer device(16)"},
+ };
+-#define SERV_OUT16_SZ \
+-        (int)(sizeof(serv_out16_arr) / sizeof(serv_in16_arr[0]))
++#define SERV_OUT16_SZ (int)ARRAY_SIZE(serv_out16_arr)
+ 
+ static const struct value_name_pair variable_length_arr[] = {
+ 	{0x1, "Rebuild(32)"},
+@@ -190,8 +184,7 @@
+ 	{0x8f7e, "Perform SCSI command (osd)"},
+ 	{0x8f7f, "Perform task management function (osd)"},
+ };
+-#define VARIABLE_LENGTH_SZ \
+-        (int)(sizeof(variable_length_arr) / sizeof(variable_length_arr[0]))
++#define VARIABLE_LENGTH_SZ (int)ARRAY_SIZE(variable_length_arr)
+ 
+ static const char * get_sa_name(const struct value_name_pair * arr,
+ 			        int arr_sz, int service_action)
+@@ -1287,19 +1280,20 @@
+ /* 0x0c */ "Bus device reset", "Abort Tag", "Clear Queue", 
+ /* 0x0f */ "Initiate Recovery", "Release Recovery"
+ };
+-#define NO_ONE_BYTE_MSGS (sizeof(one_byte_msgs)  / sizeof (const char *))
++#define NO_ONE_BYTE_MSGS ARRAY_SIZE(one_byte_msgs)
+ 
+ static const char *two_byte_msgs[] = {
+-/* 0x20 */ "Simple Queue Tag", "Head of Queue Tag", "Ordered Queue Tag"
++/* 0x20 */ "Simple Queue Tag", "Head of Queue Tag", "Ordered Queue Tag",
+ /* 0x23 */ "Ignore Wide Residue"
+ };
+-#define NO_TWO_BYTE_MSGS (sizeof(two_byte_msgs)  / sizeof (const char *))
++#define NO_TWO_BYTE_MSGS ARRAY_SIZE(two_byte_msgs)
+ 
+ static const char *extended_msgs[] = {
+ /* 0x00 */ "Modify Data Pointer", "Synchronous Data Transfer Request",
+-/* 0x02 */ "SCSI-I Extended Identify", "Wide Data Transfer Request"
++/* 0x02 */ "SCSI-I Extended Identify", "Wide Data Transfer Request",
++/* 0x04 */ "Parallel Protocol Request"
+ };
+-#define NO_EXTENDED_MSGS (sizeof(two_byte_msgs)  / sizeof (const char *))
++#define NO_EXTENDED_MSGS ARRAY_SIZE(extended_msgs)
+ 
+ 
+ int scsi_print_msg (const unsigned char *msg)
+@@ -1324,6 +1318,10 @@
+ 		case EXTENDED_WDTR:
+ 			printk("width = 2^%d bytes", msg[3]);
+ 			break;
++		case EXTENDED_PPR:
++			printk("period = %d ns, offset = %d, width = %d",
++				(int) msg[3] * 4, (int) msg[5], 1 << msg[6]);
++			break;
+ 		default:
+ 		for (i = 2; i < len; ++i) 
+ 			printk("%02x ", msg[i]);
+@@ -1401,7 +1399,7 @@
+ "DID_OK", "DID_NO_CONNECT", "DID_BUS_BUSY", "DID_TIME_OUT", "DID_BAD_TARGET", 
+ "DID_ABORT", "DID_PARITY", "DID_ERROR", "DID_RESET", "DID_BAD_INTR",
+ "DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY"};
+-#define NUM_HOSTBYTE_STRS (sizeof(hostbyte_table) / sizeof(const char *))
++#define NUM_HOSTBYTE_STRS ARRAY_SIZE(hostbyte_table)
+ 
+ void scsi_print_hostbyte(int scsiresult)
+ {
+@@ -1425,12 +1423,12 @@
+ static const char * driverbyte_table[]={
+ "DRIVER_OK", "DRIVER_BUSY", "DRIVER_SOFT",  "DRIVER_MEDIA", "DRIVER_ERROR", 
+ "DRIVER_INVALID", "DRIVER_TIMEOUT", "DRIVER_HARD", "DRIVER_SENSE"};
+-#define NUM_DRIVERBYTE_STRS (sizeof(driverbyte_table) / sizeof(const char *))
++#define NUM_DRIVERBYTE_STRS ARRAY_SIZE(driverbyte_table)
+ 
+ static const char * driversuggest_table[]={"SUGGEST_OK",
+ "SUGGEST_RETRY", "SUGGEST_ABORT", "SUGGEST_REMAP", "SUGGEST_DIE",
+ "SUGGEST_5", "SUGGEST_6", "SUGGEST_7", "SUGGEST_SENSE"};
+-#define NUM_SUGGEST_STRS (sizeof(driversuggest_table) / sizeof(const char *))
++#define NUM_SUGGEST_STRS ARRAY_SIZE(driversuggest_table)
+ 
+ void scsi_print_driverbyte(int scsiresult)
+ {
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/ncr53c8xx.c CVS2_6_15_RC7_PA0/drivers/scsi/ncr53c8xx.c
+--- LINUS_2_6_15_RC7/drivers/scsi/ncr53c8xx.c	2005-12-27 13:25:48.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/ncr53c8xx.c	2005-12-12 12:01:54.000000000 -0700
+@@ -69,6 +69,10 @@
+ **     Low PCI traffic for command handling when on-chip RAM is present.
+ **     Aggressive SCSI SCRIPTS optimizations.
+ **
++**  2005 by Matthew Wilcox and James Bottomley
++**     PCI-ectomy.  This driver now supports only the 720 chip (see the
++**     NCR_Q720 and zalon drivers for the bus probe logic).
++**
+ *******************************************************************************
+ */
+ 
+@@ -90,13 +94,6 @@
  
--	mtctl(eirr_bit, 23);	/* clear EIRR bit before unmasking */
- 	cpu_eiem |= eirr_bit;
--        on_each_cpu(cpu_set_eiem, (void *) cpu_eiem, 1, 1);
+ #define SCSI_NCR_DEBUG_FLAGS	(0)
+ 
+-/*==========================================================
+-**
+-**      Include files
+-**
+-**==========================================================
+-*/
+-
+ #include <linux/blkdev.h>
+ #include <linux/delay.h>
+ #include <linux/dma-mapping.h>
+@@ -121,6 +118,7 @@
+ 
+ #include <scsi/scsi.h>
+ #include <scsi/scsi_cmnd.h>
++#include <scsi/scsi_dbg.h>
+ #include <scsi/scsi_device.h>
+ #include <scsi/scsi_tcq.h>
+ #include <scsi/scsi_transport.h>
+@@ -128,10 +126,740 @@
+ 
+ #include "ncr53c8xx.h"
+ 
+-#define NAME53C			"ncr53c"
+ #define NAME53C8XX		"ncr53c8xx"
+ 
+-#include "sym53c8xx_comm.h"
++/*==========================================================
++**
++**	Debugging tags
++**
++**==========================================================
++*/
++
++#define DEBUG_ALLOC    (0x0001)
++#define DEBUG_PHASE    (0x0002)
++#define DEBUG_QUEUE    (0x0008)
++#define DEBUG_RESULT   (0x0010)
++#define DEBUG_POINTER  (0x0020)
++#define DEBUG_SCRIPT   (0x0040)
++#define DEBUG_TINY     (0x0080)
++#define DEBUG_TIMING   (0x0100)
++#define DEBUG_NEGO     (0x0200)
++#define DEBUG_TAGS     (0x0400)
++#define DEBUG_SCATTER  (0x0800)
++#define DEBUG_IC        (0x1000)
 +
-+	/* FIXME: while our interrupts aren't nested, we cannot reset
-+	 * the eiem mask if we're already in an interrupt.  Once we
-+	 * implement nested interrupts, this can go away
-+	 */
-+	if (!in_interrupt())
-+		set_eiem(cpu_eiem);
++/*
++**    Enable/Disable debug messages.
++**    Can be changed at runtime too.
++*/
++
++#ifdef SCSI_NCR_DEBUG_INFO_SUPPORT
++static int ncr_debug = SCSI_NCR_DEBUG_FLAGS;
++	#define DEBUG_FLAGS ncr_debug
++#else
++	#define DEBUG_FLAGS	SCSI_NCR_DEBUG_FLAGS
++#endif
 +
-+	/* This is just a simple NOP IPI.  But what it does is cause
-+	 * all the other CPUs to do a set_eiem(cpu_eiem) at the end
-+	 * of the interrupt handler */
-+	smp_send_all_nop();
- }
- 
- static unsigned int cpu_startup_irq(unsigned int irq)
-@@ -74,6 +85,35 @@
- void no_ack_irq(unsigned int irq) { }
- void no_end_irq(unsigned int irq) { }
- 
-+#ifdef CONFIG_SMP
-+int cpu_check_affinity(unsigned int irq, cpumask_t *dest)
++static inline struct list_head *ncr_list_pop(struct list_head *head)
 +{
-+	int cpu_dest;
++	if (!list_empty(head)) {
++		struct list_head *elem = head->next;
 +
-+	/* timer and ipi have to always be received on all CPUs */
-+	if (irq == TIMER_IRQ || irq == IPI_IRQ) {
-+		/* Bad linux design decision.  The mask has already
-+		 * been set; we must reset it */
-+		irq_affinity[irq] = CPU_MASK_ALL;
-+		return -EINVAL;
++		list_del(elem);
++		return elem;
 +	}
 +
-+	/* whatever mask they set, we just allow one CPU */
-+	cpu_dest = first_cpu(*dest);
-+	*dest = cpumask_of_cpu(cpu_dest);
++	return NULL;
++}
 +
-+	return 0;
++/*==========================================================
++**
++**	Simple power of two buddy-like allocator.
++**
++**	This simple code is not intended to be fast, but to 
++**	provide power of 2 aligned memory allocations.
++**	Since the SCRIPTS processor only supplies 8 bit 
++**	arithmetic, this allocator allows simple and fast 
++**	address calculations  from the SCRIPTS code.
++**	In addition, cache line alignment is guaranteed for 
++**	power of 2 cache line size.
++**	Enhanced in linux-2.3.44 to provide a memory pool 
++**	per pcidev to support dynamic dma mapping. (I would 
++**	have preferred a real bus astraction, btw).
++**
++**==========================================================
++*/
++
++#define MEMO_SHIFT	4	/* 16 bytes minimum memory chunk */
++#if PAGE_SIZE >= 8192
++#define MEMO_PAGE_ORDER	0	/* 1 PAGE  maximum */
++#else
++#define MEMO_PAGE_ORDER	1	/* 2 PAGES maximum */
++#endif
++#define MEMO_FREE_UNUSED	/* Free unused pages immediately */
++#define MEMO_WARN	1
++#define MEMO_GFP_FLAGS	GFP_ATOMIC
++#define MEMO_CLUSTER_SHIFT	(PAGE_SHIFT+MEMO_PAGE_ORDER)
++#define MEMO_CLUSTER_SIZE	(1UL << MEMO_CLUSTER_SHIFT)
++#define MEMO_CLUSTER_MASK	(MEMO_CLUSTER_SIZE-1)
++
++typedef u_long m_addr_t;	/* Enough bits to bit-hack addresses */
++typedef struct device *m_bush_t;	/* Something that addresses DMAable */
++
++typedef struct m_link {		/* Link between free memory chunks */
++	struct m_link *next;
++} m_link_s;
++
++typedef struct m_vtob {		/* Virtual to Bus address translation */
++	struct m_vtob *next;
++	m_addr_t vaddr;
++	m_addr_t baddr;
++} m_vtob_s;
++#define VTOB_HASH_SHIFT		5
++#define VTOB_HASH_SIZE		(1UL << VTOB_HASH_SHIFT)
++#define VTOB_HASH_MASK		(VTOB_HASH_SIZE-1)
++#define VTOB_HASH_CODE(m)	\
++	((((m_addr_t) (m)) >> MEMO_CLUSTER_SHIFT) & VTOB_HASH_MASK)
++
++typedef struct m_pool {		/* Memory pool of a given kind */
++	m_bush_t bush;
++	m_addr_t (*getp)(struct m_pool *);
++	void (*freep)(struct m_pool *, m_addr_t);
++	int nump;
++	m_vtob_s *(vtob[VTOB_HASH_SIZE]);
++	struct m_pool *next;
++	struct m_link h[PAGE_SHIFT-MEMO_SHIFT+MEMO_PAGE_ORDER+1];
++} m_pool_s;
++
++static void *___m_alloc(m_pool_s *mp, int size)
++{
++	int i = 0;
++	int s = (1 << MEMO_SHIFT);
++	int j;
++	m_addr_t a;
++	m_link_s *h = mp->h;
++
++	if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
++		return NULL;
++
++	while (size > s) {
++		s <<= 1;
++		++i;
++	}
++
++	j = i;
++	while (!h[j].next) {
++		if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
++			h[j].next = (m_link_s *)mp->getp(mp);
++			if (h[j].next)
++				h[j].next->next = NULL;
++			break;
++		}
++		++j;
++		s <<= 1;
++	}
++	a = (m_addr_t) h[j].next;
++	if (a) {
++		h[j].next = h[j].next->next;
++		while (j > i) {
++			j -= 1;
++			s >>= 1;
++			h[j].next = (m_link_s *) (a+s);
++			h[j].next->next = NULL;
++		}
++	}
++#ifdef DEBUG
++	printk("___m_alloc(%d) = %p\n", size, (void *) a);
++#endif
++	return (void *) a;
 +}
 +
-+static void cpu_set_affinity_irq(unsigned int irq, cpumask_t dest)
++static void ___m_free(m_pool_s *mp, void *ptr, int size)
 +{
-+	if (cpu_check_affinity(irq, &dest))
++	int i = 0;
++	int s = (1 << MEMO_SHIFT);
++	m_link_s *q;
++	m_addr_t a, b;
++	m_link_s *h = mp->h;
++
++#ifdef DEBUG
++	printk("___m_free(%p, %d)\n", ptr, size);
++#endif
++
++	if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
 +		return;
 +
-+	irq_affinity[irq] = dest;
++	while (size > s) {
++		s <<= 1;
++		++i;
++	}
++
++	a = (m_addr_t) ptr;
++
++	while (1) {
++#ifdef MEMO_FREE_UNUSED
++		if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
++			mp->freep(mp, a);
++			break;
++		}
++#endif
++		b = a ^ s;
++		q = &h[i];
++		while (q->next && q->next != (m_link_s *) b) {
++			q = q->next;
++		}
++		if (!q->next) {
++			((m_link_s *) a)->next = h[i].next;
++			h[i].next = (m_link_s *) a;
++			break;
++		}
++		q->next = q->next->next;
++		a = a & b;
++		s <<= 1;
++		++i;
++	}
++}
++
++static DEFINE_SPINLOCK(ncr53c8xx_lock);
++
++static void *__m_calloc2(m_pool_s *mp, int size, char *name, int uflags)
++{
++	void *p;
++
++	p = ___m_alloc(mp, size);
++
++	if (DEBUG_FLAGS & DEBUG_ALLOC)
++		printk ("new %-10s[%4d] @%p.\n", name, size, p);
++
++	if (p)
++		memset(p, 0, size);
++	else if (uflags & MEMO_WARN)
++		printk (NAME53C8XX ": failed to allocate %s[%d]\n", name, size);
++
++	return p;
++}
++
++#define __m_calloc(mp, s, n)	__m_calloc2(mp, s, n, MEMO_WARN)
++
++static void __m_free(m_pool_s *mp, void *ptr, int size, char *name)
++{
++	if (DEBUG_FLAGS & DEBUG_ALLOC)
++		printk ("freeing %-10s[%4d] @%p.\n", name, size, ptr);
++
++	___m_free(mp, ptr, size);
++
++}
++
++/*
++ * With pci bus iommu support, we use a default pool of unmapped memory 
++ * for memory we donnot need to DMA from/to and one pool per pcidev for 
++ * memory accessed by the PCI chip. `mp0' is the default not DMAable pool.
++ */
++
++static m_addr_t ___mp0_getp(m_pool_s *mp)
++{
++	m_addr_t m = __get_free_pages(MEMO_GFP_FLAGS, MEMO_PAGE_ORDER);
++	if (m)
++		++mp->nump;
++	return m;
++}
++
++static void ___mp0_freep(m_pool_s *mp, m_addr_t m)
++{
++	free_pages(m, MEMO_PAGE_ORDER);
++	--mp->nump;
++}
++
++static m_pool_s mp0 = {NULL, ___mp0_getp, ___mp0_freep};
++
++/*
++ * DMAable pools.
++ */
++
++/*
++ * With pci bus iommu support, we maintain one pool per pcidev and a 
++ * hashed reverse table for virtual to bus physical address translations.
++ */
++static m_addr_t ___dma_getp(m_pool_s *mp)
++{
++	m_addr_t vp;
++	m_vtob_s *vbp;
++
++	vbp = __m_calloc(&mp0, sizeof(*vbp), "VTOB");
++	if (vbp) {
++		dma_addr_t daddr;
++		vp = (m_addr_t) dma_alloc_coherent(mp->bush,
++						PAGE_SIZE<<MEMO_PAGE_ORDER,
++						&daddr, GFP_ATOMIC);
++		if (vp) {
++			int hc = VTOB_HASH_CODE(vp);
++			vbp->vaddr = vp;
++			vbp->baddr = daddr;
++			vbp->next = mp->vtob[hc];
++			mp->vtob[hc] = vbp;
++			++mp->nump;
++			return vp;
++		}
++	}
++	if (vbp)
++		__m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
++	return 0;
++}
++
++static void ___dma_freep(m_pool_s *mp, m_addr_t m)
++{
++	m_vtob_s **vbpp, *vbp;
++	int hc = VTOB_HASH_CODE(m);
++
++	vbpp = &mp->vtob[hc];
++	while (*vbpp && (*vbpp)->vaddr != m)
++		vbpp = &(*vbpp)->next;
++	if (*vbpp) {
++		vbp = *vbpp;
++		*vbpp = (*vbpp)->next;
++		dma_free_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER,
++				  (void *)vbp->vaddr, (dma_addr_t)vbp->baddr);
++		__m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
++		--mp->nump;
++	}
++}
++
++static inline m_pool_s *___get_dma_pool(m_bush_t bush)
++{
++	m_pool_s *mp;
++	for (mp = mp0.next; mp && mp->bush != bush; mp = mp->next);
++	return mp;
++}
++
++static m_pool_s *___cre_dma_pool(m_bush_t bush)
++{
++	m_pool_s *mp;
++	mp = __m_calloc(&mp0, sizeof(*mp), "MPOOL");
++	if (mp) {
++		memset(mp, 0, sizeof(*mp));
++		mp->bush = bush;
++		mp->getp = ___dma_getp;
++		mp->freep = ___dma_freep;
++		mp->next = mp0.next;
++		mp0.next = mp;
++	}
++	return mp;
++}
++
++static void ___del_dma_pool(m_pool_s *p)
++{
++	struct m_pool **pp = &mp0.next;
++
++	while (*pp && *pp != p)
++		pp = &(*pp)->next;
++	if (*pp) {
++		*pp = (*pp)->next;
++		__m_free(&mp0, p, sizeof(*p), "MPOOL");
++	}
++}
++
++static void *__m_calloc_dma(m_bush_t bush, int size, char *name)
++{
++	u_long flags;
++	struct m_pool *mp;
++	void *m = NULL;
++
++	spin_lock_irqsave(&ncr53c8xx_lock, flags);
++	mp = ___get_dma_pool(bush);
++	if (!mp)
++		mp = ___cre_dma_pool(bush);
++	if (mp)
++		m = __m_calloc(mp, size, name);
++	if (mp && !mp->nump)
++		___del_dma_pool(mp);
++	spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
++
++	return m;
++}
++
++static void __m_free_dma(m_bush_t bush, void *m, int size, char *name)
++{
++	u_long flags;
++	struct m_pool *mp;
++
++	spin_lock_irqsave(&ncr53c8xx_lock, flags);
++	mp = ___get_dma_pool(bush);
++	if (mp)
++		__m_free(mp, m, size, name);
++	if (mp && !mp->nump)
++		___del_dma_pool(mp);
++	spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
++}
++
++static m_addr_t __vtobus(m_bush_t bush, void *m)
++{
++	u_long flags;
++	m_pool_s *mp;
++	int hc = VTOB_HASH_CODE(m);
++	m_vtob_s *vp = NULL;
++	m_addr_t a = ((m_addr_t) m) & ~MEMO_CLUSTER_MASK;
++
++	spin_lock_irqsave(&ncr53c8xx_lock, flags);
++	mp = ___get_dma_pool(bush);
++	if (mp) {
++		vp = mp->vtob[hc];
++		while (vp && (m_addr_t) vp->vaddr != a)
++			vp = vp->next;
++	}
++	spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
++	return vp ? vp->baddr + (((m_addr_t) m) - a) : 0;
++}
++
++#define _m_calloc_dma(np, s, n)		__m_calloc_dma(np->dev, s, n)
++#define _m_free_dma(np, p, s, n)	__m_free_dma(np->dev, p, s, n)
++#define m_calloc_dma(s, n)		_m_calloc_dma(np, s, n)
++#define m_free_dma(p, s, n)		_m_free_dma(np, p, s, n)
++#define _vtobus(np, p)			__vtobus(np->dev, p)
++#define vtobus(p)			_vtobus(np, p)
++
++/*
++ *  Deal with DMA mapping/unmapping.
++ */
++
++/* To keep track of the dma mapping (sg/single) that has been set */
++#define __data_mapped	SCp.phase
++#define __data_mapping	SCp.have_data_in
++
++static void __unmap_scsi_data(struct device *dev, struct scsi_cmnd *cmd)
++{
++	switch(cmd->__data_mapped) {
++	case 2:
++		dma_unmap_sg(dev, cmd->buffer, cmd->use_sg,
++				cmd->sc_data_direction);
++		break;
++	case 1:
++		dma_unmap_single(dev, cmd->__data_mapping,
++				 cmd->request_bufflen,
++				 cmd->sc_data_direction);
++		break;
++	}
++	cmd->__data_mapped = 0;
++}
++
++static u_long __map_scsi_single_data(struct device *dev, struct scsi_cmnd *cmd)
++{
++	dma_addr_t mapping;
++
++	if (cmd->request_bufflen == 0)
++		return 0;
++
++	mapping = dma_map_single(dev, cmd->request_buffer,
++				 cmd->request_bufflen,
++				 cmd->sc_data_direction);
++	cmd->__data_mapped = 1;
++	cmd->__data_mapping = mapping;
++
++	return mapping;
++}
++
++static int __map_scsi_sg_data(struct device *dev, struct scsi_cmnd *cmd)
++{
++	int use_sg;
++
++	if (cmd->use_sg == 0)
++		return 0;
++
++	use_sg = dma_map_sg(dev, cmd->buffer, cmd->use_sg,
++			cmd->sc_data_direction);
++	cmd->__data_mapped = 2;
++	cmd->__data_mapping = use_sg;
++
++	return use_sg;
 +}
++
++#define unmap_scsi_data(np, cmd)	__unmap_scsi_data(np->dev, cmd)
++#define map_scsi_single_data(np, cmd)	__map_scsi_single_data(np->dev, cmd)
++#define map_scsi_sg_data(np, cmd)	__map_scsi_sg_data(np->dev, cmd)
++
++/*==========================================================
++**
++**	Driver setup.
++**
++**	This structure is initialized from linux config 
++**	options. It can be overridden at boot-up by the boot 
++**	command line.
++**
++**==========================================================
++*/
++static struct ncr_driver_setup
++	driver_setup			= SCSI_NCR_DRIVER_SETUP;
++
++#ifdef	SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
++static struct ncr_driver_setup
++	driver_safe_setup __initdata	= SCSI_NCR_DRIVER_SAFE_SETUP;
++#endif
++
++#define initverbose (driver_setup.verbose)
++#define bootverbose (np->verbose)
++
++
++/*===================================================================
++**
++**	Driver setup from the boot command line
++**
++**===================================================================
++*/
++
++#ifdef MODULE
++#define	ARG_SEP	' '
++#else
++#define	ARG_SEP	','
 +#endif
 +
- static struct hw_interrupt_type cpu_interrupt_type = {
- 	.typename	= "CPU",
- 	.startup	= cpu_startup_irq,
-@@ -82,7 +122,9 @@
- 	.disable	= cpu_disable_irq,
- 	.ack		= no_ack_irq,
- 	.end		= no_end_irq,
--//	.set_affinity	= cpu_set_affinity_irq,
-+#ifdef CONFIG_SMP
-+	.set_affinity	= cpu_set_affinity_irq,
++#define OPT_TAGS		1
++#define OPT_MASTER_PARITY	2
++#define OPT_SCSI_PARITY		3
++#define OPT_DISCONNECTION	4
++#define OPT_SPECIAL_FEATURES	5
++#define OPT_UNUSED_1		6
++#define OPT_FORCE_SYNC_NEGO	7
++#define OPT_REVERSE_PROBE	8
++#define OPT_DEFAULT_SYNC	9
++#define OPT_VERBOSE		10
++#define OPT_DEBUG		11
++#define OPT_BURST_MAX		12
++#define OPT_LED_PIN		13
++#define OPT_MAX_WIDE		14
++#define OPT_SETTLE_DELAY	15
++#define OPT_DIFF_SUPPORT	16
++#define OPT_IRQM		17
++#define OPT_PCI_FIX_UP		18
++#define OPT_BUS_CHECK		19
++#define OPT_OPTIMIZE		20
++#define OPT_RECOVERY		21
++#define OPT_SAFE_SETUP		22
++#define OPT_USE_NVRAM		23
++#define OPT_EXCLUDE		24
++#define OPT_HOST_ID		25
++
++#ifdef SCSI_NCR_IARB_SUPPORT
++#define OPT_IARB		26
++#endif
++
++static char setup_token[] __initdata = 
++	"tags:"   "mpar:"
++	"spar:"   "disc:"
++	"specf:"  "ultra:"
++	"fsn:"    "revprob:"
++	"sync:"   "verb:"
++	"debug:"  "burst:"
++	"led:"    "wide:"
++	"settle:" "diff:"
++	"irqm:"   "pcifix:"
++	"buschk:" "optim:"
++	"recovery:"
++	"safe:"   "nvram:"
++	"excl:"   "hostid:"
++#ifdef SCSI_NCR_IARB_SUPPORT
++	"iarb:"
 +#endif
- };
- 
- int show_interrupts(struct seq_file *p, void *v)
-@@ -219,6 +261,17 @@
- 	return -1;
- }
- 
++	;	/* DONNOT REMOVE THIS ';' */
 +
-+unsigned long txn_affinity_addr(unsigned int irq, int cpu)
-+{
-+#ifdef CONFIG_SMP
-+	irq_affinity[irq] = cpumask_of_cpu(cpu);
++#ifdef MODULE
++#define	ARG_SEP	' '
++#else
++#define	ARG_SEP	','
 +#endif
 +
-+	return cpu_data[cpu].txn_addr;
++static int __init get_setup_token(char *p)
++{
++	char *cur = setup_token;
++	char *pc;
++	int i = 0;
++
++	while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
++		++pc;
++		++i;
++		if (!strncmp(p, cur, pc - cur))
++			return i;
++		cur = pc;
++	}
++	return 0;
 +}
 +
 +
- unsigned long txn_alloc_addr(unsigned int virt_irq)
- {
- 	static int next_cpu = -1;
-@@ -233,7 +286,7 @@
- 	if (next_cpu >= NR_CPUS) 
- 		next_cpu = 0;	/* nothing else, assign monarch */
++static int __init sym53c8xx__setup(char *str)
++{
++#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
++	char *cur = str;
++	char *pc, *pv;
++	int i, val, c;
++	int xi = 0;
++
++	while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
++		char *pe;
++
++		val = 0;
++		pv = pc;
++		c = *++pv;
++
++		if	(c == 'n')
++			val = 0;
++		else if	(c == 'y')
++			val = 1;
++		else
++			val = (int) simple_strtoul(pv, &pe, 0);
++
++		switch (get_setup_token(cur)) {
++		case OPT_TAGS:
++			driver_setup.default_tags = val;
++			if (pe && *pe == '/') {
++				i = 0;
++				while (*pe && *pe != ARG_SEP && 
++					i < sizeof(driver_setup.tag_ctrl)-1) {
++					driver_setup.tag_ctrl[i++] = *pe++;
++				}
++				driver_setup.tag_ctrl[i] = '\0';
++			}
++			break;
++		case OPT_MASTER_PARITY:
++			driver_setup.master_parity = val;
++			break;
++		case OPT_SCSI_PARITY:
++			driver_setup.scsi_parity = val;
++			break;
++		case OPT_DISCONNECTION:
++			driver_setup.disconnection = val;
++			break;
++		case OPT_SPECIAL_FEATURES:
++			driver_setup.special_features = val;
++			break;
++		case OPT_FORCE_SYNC_NEGO:
++			driver_setup.force_sync_nego = val;
++			break;
++		case OPT_REVERSE_PROBE:
++			driver_setup.reverse_probe = val;
++			break;
++		case OPT_DEFAULT_SYNC:
++			driver_setup.default_sync = val;
++			break;
++		case OPT_VERBOSE:
++			driver_setup.verbose = val;
++			break;
++		case OPT_DEBUG:
++			driver_setup.debug = val;
++			break;
++		case OPT_BURST_MAX:
++			driver_setup.burst_max = val;
++			break;
++		case OPT_LED_PIN:
++			driver_setup.led_pin = val;
++			break;
++		case OPT_MAX_WIDE:
++			driver_setup.max_wide = val? 1:0;
++			break;
++		case OPT_SETTLE_DELAY:
++			driver_setup.settle_delay = val;
++			break;
++		case OPT_DIFF_SUPPORT:
++			driver_setup.diff_support = val;
++			break;
++		case OPT_IRQM:
++			driver_setup.irqm = val;
++			break;
++		case OPT_PCI_FIX_UP:
++			driver_setup.pci_fix_up	= val;
++			break;
++		case OPT_BUS_CHECK:
++			driver_setup.bus_check = val;
++			break;
++		case OPT_OPTIMIZE:
++			driver_setup.optimize = val;
++			break;
++		case OPT_RECOVERY:
++			driver_setup.recovery = val;
++			break;
++		case OPT_USE_NVRAM:
++			driver_setup.use_nvram = val;
++			break;
++		case OPT_SAFE_SETUP:
++			memcpy(&driver_setup, &driver_safe_setup,
++				sizeof(driver_setup));
++			break;
++		case OPT_EXCLUDE:
++			if (xi < SCSI_NCR_MAX_EXCLUDES)
++				driver_setup.excludes[xi++] = val;
++			break;
++		case OPT_HOST_ID:
++			driver_setup.host_id = val;
++			break;
++#ifdef SCSI_NCR_IARB_SUPPORT
++		case OPT_IARB:
++			driver_setup.iarb = val;
++			break;
++#endif
++		default:
++			printk("sym53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur);
++			break;
++		}
++
++		if ((cur = strchr(cur, ARG_SEP)) != NULL)
++			++cur;
++	}
++#endif /* SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT */
++	return 1;
++}
++
++/*===================================================================
++**
++**	Get device queue depth from boot command line.
++**
++**===================================================================
++*/
++#define DEF_DEPTH	(driver_setup.default_tags)
++#define ALL_TARGETS	-2
++#define NO_TARGET	-1
++#define ALL_LUNS	-2
++#define NO_LUN		-1
++
++static int device_queue_depth(int unit, int target, int lun)
++{
++	int c, h, t, u, v;
++	char *p = driver_setup.tag_ctrl;
++	char *ep;
++
++	h = -1;
++	t = NO_TARGET;
++	u = NO_LUN;
++	while ((c = *p++) != 0) {
++		v = simple_strtoul(p, &ep, 0);
++		switch(c) {
++		case '/':
++			++h;
++			t = ALL_TARGETS;
++			u = ALL_LUNS;
++			break;
++		case 't':
++			if (t != target)
++				t = (target == v) ? v : NO_TARGET;
++			u = ALL_LUNS;
++			break;
++		case 'u':
++			if (u != lun)
++				u = (lun == v) ? v : NO_LUN;
++			break;
++		case 'q':
++			if (h == unit &&
++				(t == ALL_TARGETS || t == target) &&
++				(u == ALL_LUNS    || u == lun))
++				return v;
++			break;
++		case '-':
++			t = ALL_TARGETS;
++			u = ALL_LUNS;
++			break;
++		default:
++			break;
++		}
++		p = ep;
++	}
++	return DEF_DEPTH;
++}
  
--	return cpu_data[next_cpu].txn_addr;
-+	return txn_affinity_addr(virt_irq, next_cpu);
- }
  
+ /*==========================================================
+@@ -1379,7 +2107,7 @@
+ 	*/
  
-@@ -250,10 +303,11 @@
- 	irq_enter();
+ 	/*
+-	**	The M_REJECT problem seems to be due to a selection 
++	**	The MESSAGE_REJECT problem seems to be due to a selection 
+ 	**	timing problem.
+ 	**	Wait immediately for the selection to complete. 
+ 	**	(2.5x behaves so)
+@@ -1430,7 +2158,7 @@
+ 	/*
+ 	**	Selection complete.
+ 	**	Send the IDENTIFY and SIMPLE_TAG messages
+-	**	(and the M_X_SYNC_REQ message)
++	**	(and the EXTENDED_SDTR message)
+ 	*/
+ 	SCR_MOVE_TBL ^ SCR_MSG_OUT,
+ 		offsetof (struct dsb, smsg),
+@@ -1459,7 +2187,7 @@
+ 	/*
+ 	**	Initialize the msgout buffer with a NOOP message.
+ 	*/
+-	SCR_LOAD_REG (scratcha, M_NOOP),
++	SCR_LOAD_REG (scratcha, NOP),
+ 		0,
+ 	SCR_COPY (1),
+ 		RADDR (scratcha),
+@@ -1611,21 +2339,21 @@
+ 	/*
+ 	**	Handle this message.
+ 	*/
+-	SCR_JUMP ^ IFTRUE (DATA (M_COMPLETE)),
++	SCR_JUMP ^ IFTRUE (DATA (COMMAND_COMPLETE)),
+ 		PADDR (complete),
+-	SCR_JUMP ^ IFTRUE (DATA (M_DISCONNECT)),
++	SCR_JUMP ^ IFTRUE (DATA (DISCONNECT)),
+ 		PADDR (disconnect),
+-	SCR_JUMP ^ IFTRUE (DATA (M_SAVE_DP)),
++	SCR_JUMP ^ IFTRUE (DATA (SAVE_POINTERS)),
+ 		PADDR (save_dp),
+-	SCR_JUMP ^ IFTRUE (DATA (M_RESTORE_DP)),
++	SCR_JUMP ^ IFTRUE (DATA (RESTORE_POINTERS)),
+ 		PADDR (restore_dp),
+-	SCR_JUMP ^ IFTRUE (DATA (M_EXTENDED)),
++	SCR_JUMP ^ IFTRUE (DATA (EXTENDED_MESSAGE)),
+ 		PADDRH (msg_extended),
+-	SCR_JUMP ^ IFTRUE (DATA (M_NOOP)),
++	SCR_JUMP ^ IFTRUE (DATA (NOP)),
+ 		PADDR (clrack),
+-	SCR_JUMP ^ IFTRUE (DATA (M_REJECT)),
++	SCR_JUMP ^ IFTRUE (DATA (MESSAGE_REJECT)),
+ 		PADDRH (msg_reject),
+-	SCR_JUMP ^ IFTRUE (DATA (M_IGN_RESIDUE)),
++	SCR_JUMP ^ IFTRUE (DATA (IGNORE_WIDE_RESIDUE)),
+ 		PADDRH (msg_ign_residue),
+ 	/*
+ 	**	Rest of the messages left as
+@@ -1640,7 +2368,7 @@
+ 	*/
+ 	SCR_INT,
+ 		SIR_REJECT_SENT,
+-	SCR_LOAD_REG (scratcha, M_REJECT),
++	SCR_LOAD_REG (scratcha, MESSAGE_REJECT),
+ 		0,
+ }/*-------------------------< SETMSG >----------------------*/,{
+ 	SCR_COPY (1),
+@@ -1832,7 +2560,7 @@
+ 	/*
+ 	**	If it was no ABORT message ...
+ 	*/
+-	SCR_JUMP ^ IFTRUE (DATA (M_ABORT)),
++	SCR_JUMP ^ IFTRUE (DATA (ABORT_TASK_SET)),
+ 		PADDRH (msg_out_abort),
+ 	/*
+ 	**	... wait for the next phase
+@@ -1844,7 +2572,7 @@
+ 	/*
+ 	**	... else clear the message ...
+ 	*/
+-	SCR_LOAD_REG (scratcha, M_NOOP),
++	SCR_LOAD_REG (scratcha, NOP),
+ 		0,
+ 	SCR_COPY (4),
+ 		RADDR (scratcha),
+@@ -2303,7 +3031,7 @@
+ 	*/
+ 	SCR_MOVE_ABS (1) ^ SCR_MSG_IN,
+ 		NADDR (msgin[2]),
+-	SCR_JUMP ^ IFTRUE (DATA (M_X_WIDE_REQ)),
++	SCR_JUMP ^ IFTRUE (DATA (EXTENDED_WDTR)),
+ 		PADDRH (msg_wdtr),
+ 	/*
+ 	**	unknown extended message
+@@ -2337,7 +3065,7 @@
  
+ }/*-------------------------< SEND_WDTR >----------------*/,{
  	/*
--	 * Only allow interrupt processing to be interrupted by the
--	 * timer tick
-+	 * Don't allow TIMER or IPI nested interrupts.
-+	 * Allowing any single interrupt to nest can lead to that CPU
-+	 * handling interrupts with all enabled interrupts unmasked.
- 	 */
--	set_eiem(EIEM_MASK(TIMER_IRQ));
-+	set_eiem(0UL);
+-	**	Send the M_X_WIDE_REQ
++	**	Send the EXTENDED_WDTR
+ 	*/
+ 	SCR_MOVE_ABS (4) ^ SCR_MSG_OUT,
+ 		NADDR (msgout),
+@@ -2357,7 +3085,7 @@
+ 	*/
+ 	SCR_MOVE_ABS (1) ^ SCR_MSG_IN,
+ 		NADDR (msgin[2]),
+-	SCR_JUMP ^ IFTRUE (DATA (M_X_SYNC_REQ)),
++	SCR_JUMP ^ IFTRUE (DATA (EXTENDED_SDTR)),
+ 		PADDRH (msg_sdtr),
+ 	/*
+ 	**	unknown extended message
+@@ -2392,7 +3120,7 @@
  
- 	/* 1) only process IRQs that are enabled/unmasked (cpu_eiem)
- 	 * 2) We loop here on EIRR contents in order to avoid
-@@ -267,23 +321,41 @@
- 		if (!eirr_val)
- 			break;
+ }/*-------------------------< SEND_SDTR >-------------*/,{
+ 	/*
+-	**	Send the M_X_SYNC_REQ
++	**	Send the EXTENDED_SDTR
+ 	*/
+ 	SCR_MOVE_ABS (5) ^ SCR_MSG_OUT,
+ 		NADDR (msgout),
+@@ -2470,10 +3198,10 @@
  
--		if (eirr_val & EIEM_MASK(TIMER_IRQ))
--			set_eiem(0);
+ }/*-------------------------< RESET >----------------------*/,{
+ 	/*
+-	**      Send a M_RESET message if bad IDENTIFY 
++	**      Send a TARGET_RESET message if bad IDENTIFY 
+ 	**	received on reselection.
+ 	*/
+-	SCR_LOAD_REG (scratcha, M_ABORT_TAG),
++	SCR_LOAD_REG (scratcha, ABORT_TASK),
+ 		0,
+ 	SCR_JUMP,
+ 		PADDRH (abort_resel),
+@@ -2481,7 +3209,7 @@
+ 	/*
+ 	**      Abort a wrong tag received on reselection.
+ 	*/
+-	SCR_LOAD_REG (scratcha, M_ABORT_TAG),
++	SCR_LOAD_REG (scratcha, ABORT_TASK),
+ 		0,
+ 	SCR_JUMP,
+ 		PADDRH (abort_resel),
+@@ -2489,7 +3217,7 @@
+ 	/*
+ 	**      Abort a reselection when no active CCB.
+ 	*/
+-	SCR_LOAD_REG (scratcha, M_ABORT),
++	SCR_LOAD_REG (scratcha, ABORT_TASK_SET),
+ 		0,
+ }/*-------------------------< ABORT_RESEL >----------------*/,{
+ 	SCR_COPY (1),
+@@ -2601,7 +3329,7 @@
+ 	**	Read the message, since we got it directly 
+ 	**	from the SCSI BUS data lines.
+ 	**	Signal problem to C code for logging the event.
+-	**	Send a M_ABORT to clear all pending tasks.
++	**	Send an ABORT_TASK_SET to clear all pending tasks.
+ 	*/
+ 	SCR_INT,
+ 		SIR_RESEL_BAD_LUN,
+@@ -2613,7 +3341,7 @@
+ 	/*
+ 	**	We donnot have a task for that I_T_L.
+ 	**	Signal problem to C code for logging the event.
+-	**	Send a M_ABORT message.
++	**	Send an ABORT_TASK_SET message.
+ 	*/
+ 	SCR_INT,
+ 		SIR_RESEL_BAD_I_T_L,
+@@ -2623,7 +3351,7 @@
+ 	/*
+ 	**	We donnot have a task that matches the tag.
+ 	**	Signal problem to C code for logging the event.
+-	**	Send a M_ABORTTAG message.
++	**	Send an ABORT_TASK message.
+ 	*/
+ 	SCR_INT,
+ 		SIR_RESEL_BAD_I_T_L_Q,
+@@ -2634,7 +3362,7 @@
+ 	**	We donnot know the target that reselected us.
+ 	**	Grab the first message if any (IDENTIFY).
+ 	**	Signal problem to C code for logging the event.
+-	**	M_RESET message.
++	**	TARGET_RESET message.
+ 	*/
+ 	SCR_INT,
+ 		SIR_RESEL_BAD_TARGET,
+@@ -2971,21 +3699,10 @@
+ 
+ static void ncr_print_msg(struct ccb *cp, char *label, u_char *msg)
+ {
+-	int i;
+ 	PRINT_ADDR(cp->cmd, "%s: ", label);
+ 
+-	printk ("%x",*msg);
+-	if (*msg == M_EXTENDED) {
+-		for (i = 1; i < 8; i++) {
+-			if (i - 1 > msg[1])
+-				break;
+-			printk ("-%x",msg[i]);
+-		}
+-	} else if ((*msg & 0xf0) == 0x20) {
+-		printk ("-%x",msg[1]);
+-	}
 -
- 		mtctl(eirr_val, 23); /* reset bits we are going to process */
- 
- 		/* Work our way from MSb to LSb...same order we alloc EIRs */
- 		for (irq = TIMER_IRQ; eirr_val && bit; bit>>=1, irq++) {
-+#ifdef CONFIG_SMP
-+			cpumask_t dest = irq_affinity[irq];
-+#endif
- 			if (!(bit & eirr_val))
- 				continue;
- 
- 			/* clear bit in mask - can exit loop sooner */
- 			eirr_val &= ~bit;
- 
-+#ifdef CONFIG_SMP
-+			/* FIXME: because generic set affinity mucks
-+			 * with the affinity before sending it to us
-+			 * we can get the situation where the affinity is
-+			 * wrong for our CPU type interrupts */
-+			if (irq != TIMER_IRQ && irq != IPI_IRQ &&
-+			    !cpu_isset(smp_processor_id(), dest)) {
-+				int cpu = first_cpu(dest);
-+
-+				printk(KERN_DEBUG "redirecting irq %d from CPU %d to %d\n",
-+				       irq, smp_processor_id(), cpu);
-+				gsc_writel(irq + CPU_IRQ_BASE,
-+					   cpu_data[cpu].hpa);
-+				continue;
-+			}
-+#endif
-+
- 			__do_IRQ(irq, regs);
- 		}
+-	printk(".\n");
++	scsi_print_msg(msg);
++	printk("\n");
+ }
+ 
+ /*==========================================================
+@@ -3388,16 +4105,16 @@
+ 
+ 	switch (nego) {
+ 	case NS_SYNC:
+-		msgptr[msglen++] = M_EXTENDED;
++		msgptr[msglen++] = EXTENDED_MESSAGE;
+ 		msgptr[msglen++] = 3;
+-		msgptr[msglen++] = M_X_SYNC_REQ;
++		msgptr[msglen++] = EXTENDED_SDTR;
+ 		msgptr[msglen++] = tp->maxoffs ? tp->minsync : 0;
+ 		msgptr[msglen++] = tp->maxoffs;
+ 		break;
+ 	case NS_WIDE:
+-		msgptr[msglen++] = M_EXTENDED;
++		msgptr[msglen++] = EXTENDED_MESSAGE;
+ 		msgptr[msglen++] = 2;
+-		msgptr[msglen++] = M_X_WIDE_REQ;
++		msgptr[msglen++] = EXTENDED_WDTR;
+ 		msgptr[msglen++] = tp->usrwide;
+ 		break;
  	}
--	set_eiem(cpu_eiem);
-+
-+	set_eiem(cpu_eiem);	/* restore original mask */
- 	irq_exit();
- }
- 
-@@ -291,12 +363,14 @@
- static struct irqaction timer_action = {
- 	.handler = timer_interrupt,
- 	.name = "timer",
-+	.flags = SA_INTERRUPT,
- };
- 
- #ifdef CONFIG_SMP
- static struct irqaction ipi_action = {
- 	.handler = ipi_interrupt,
- 	.name = "IPI",
-+	.flags = SA_INTERRUPT,
- };
- #endif
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/pacache.S CVS2_6_14_PA0/arch/parisc/kernel/pacache.S
---- LINUS_2_6_14/arch/parisc/kernel/pacache.S	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/pacache.S	2005-10-05 22:41:47.000000000 -0600
-@@ -26,7 +26,7 @@
-  *       can be used.
-  */
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- #define ADDIB	addib,*
- #define CMPB	cmpb,*
- #define ANDCM	andcm,*
-@@ -40,8 +40,10 @@
- 	.level	2.0
- #endif
- 
--#include <asm/assembly.h>
-+#include <linux/config.h>
-+
- #include <asm/psw.h>
-+#include <asm/assembly.h>
- #include <asm/pgtable.h>
- #include <asm/cache.h>
- 
-@@ -62,32 +64,23 @@
- 	 * to happen in real mode with all interruptions disabled.
- 	 */
- 
--	/*
--	 * Once again, we do the rfi dance ... some day we need examine
--	 * all of our uses of this type of code and see what can be
--	 * consolidated.
--	 */
--
--	rsm		PSW_SM_I, %r19		/* relied upon translation! PA 2.0 Arch. F-5 */
-+	/* pcxt_ssm_bug	- relied upon translation! PA 2.0 Arch. F-4 and F-5 */
-+	rsm	PSW_SM_I, %r19		/* save I-bit state */
-+	load32		PA(1f), %r1
- 	nop
- 	nop
- 	nop
- 	nop
- 	nop
--	nop
--	nop
--	
--	rsm		PSW_SM_Q, %r0		/* Turn off Q bit to load iia queue */
--	ldil		L%REAL_MODE_PSW, %r1
--	ldo		R%REAL_MODE_PSW(%r1), %r1
--	mtctl		%r1, %cr22
-+
-+	rsm		PSW_SM_Q, %r0		/* prep to load iia queue */
- 	mtctl		%r0, %cr17		/* Clear IIASQ tail */
- 	mtctl		%r0, %cr17		/* Clear IIASQ head */
--	ldil		L%PA(1f), %r1
--	ldo		R%PA(1f)(%r1), %r1
- 	mtctl		%r1, %cr18		/* IIAOQ head */
- 	ldo		4(%r1), %r1
- 	mtctl		%r1, %cr18		/* IIAOQ tail */
-+	load32		REAL_MODE_PSW, %r1
-+	mtctl           %r1, %ipsw
- 	rfi
- 	nop
- 
-@@ -178,29 +171,36 @@
- 	ADDIB>		-1, %r22, fdtoneloop	/* Outer loop count decr */
- 	add		%r21, %r20, %r20	/* increment space */
- 
--fdtdone:
- 
--	/* Switch back to virtual mode */
-+fdtdone:
-+	/*
-+	 * Switch back to virtual mode
-+	 */
-+	/* pcxt_ssm_bug */
-+	rsm		PSW_SM_I, %r0
-+	load32		2f, %r1
-+	nop
-+	nop
-+	nop
-+	nop
-+	nop
- 
--	rsm		PSW_SM_Q, %r0		/* clear Q bit to load iia queue */
--	ldil		L%KERNEL_PSW, %r1
--	ldo		R%KERNEL_PSW(%r1), %r1
--	or		%r1, %r19, %r1		/* Set I bit if set on entry */
--	mtctl		%r1, %cr22
-+	rsm		PSW_SM_Q, %r0		/* prep to load iia queue */
- 	mtctl		%r0, %cr17		/* Clear IIASQ tail */
- 	mtctl		%r0, %cr17		/* Clear IIASQ head */
--	ldil		L%(2f), %r1
--	ldo		R%(2f)(%r1), %r1
- 	mtctl		%r1, %cr18		/* IIAOQ head */
- 	ldo		4(%r1), %r1
- 	mtctl		%r1, %cr18		/* IIAOQ tail */
-+	load32		KERNEL_PSW, %r1
-+	or		%r1, %r19, %r1	/* I-bit to state on entry */
-+	mtctl		%r1, %ipsw	/* restore I-bit (entire PSW) */
- 	rfi
- 	nop
- 
- 2:      bv		%r0(%r2)
- 	nop
--	.exit
- 
-+	.exit
- 	.procend
- 
- 	.export flush_instruction_cache_local,code
-@@ -227,7 +227,7 @@
- 
- fimanyloop:					/* Loop if LOOP >= 2 */
- 	ADDIB>		-1, %r31, fimanyloop	/* Adjusted inner loop decr */
--	fice            0(%sr1, %arg0)
-+	fice            %r0(%sr1, %arg0)
- 	fice,m		%arg1(%sr1, %arg0)	/* Last fice and addr adjust */
- 	movb,tr		%arg3, %r31, fimanyloop	/* Re-init inner loop count */
- 	ADDIB<=,n	-1, %arg2, fisync	/* Outer loop decr */
-@@ -238,7 +238,7 @@
- 
- fisync:
- 	sync
--	mtsm		%r22
-+	mtsm		%r22			/* restore I-bit */
- 	bv		%r0(%r2)
- 	nop
- 	.exit
-@@ -269,7 +269,7 @@
- 
- fdmanyloop:					/* Loop if LOOP >= 2 */
- 	ADDIB>		-1, %r31, fdmanyloop	/* Adjusted inner loop decr */
--	fdce		0(%sr1, %arg0)
-+	fdce		%r0(%sr1, %arg0)
- 	fdce,m		%arg1(%sr1, %arg0)	/* Last fdce and addr adjust */
- 	movb,tr		%arg3, %r31, fdmanyloop	/* Re-init inner loop count */
- 	ADDIB<=,n	-1, %arg2, fdsync	/* Outer loop decr */
-@@ -281,7 +281,7 @@
- fdsync:
- 	syncdma
- 	sync
--	mtsm		%r22
-+	mtsm		%r22			/* restore I-bit */
- 	bv		%r0(%r2)
- 	nop
- 	.exit
-@@ -296,7 +296,7 @@
- 	.callinfo NO_CALLS
- 	.entry
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* PA8x00 CPUs can consume 2 loads or 1 store per cycle.
- 	 * Unroll the loop by hand and arrange insn appropriately.
- 	 * GCC probably can do this just as well.
-@@ -351,7 +351,11 @@
- 	std		%r22, 120(%r26)
- 	ldo		128(%r26), %r26
- 
--	ADDIB>		-1, %r1, 1b		/* bundle 10 */
-+	/* conditional branches nullify on forward taken branch, and on
-+	 * non-taken backward branch. Note that .+4 is a backwards branch.
-+	 * The ldd should only get executed if the branch is taken.
-+	 */
-+	ADDIB>,n	-1, %r1, 1b		/* bundle 10 */
- 	ldd		0(%r25), %r19		/* start next loads */
- 
- #else
-@@ -363,10 +367,10 @@
- 	 * the full 64 bit register values on interrupt, we can't
- 	 * use ldd/std on a 32 bit kernel.
- 	 */
-+	ldw		0(%r25), %r19
- 	ldi		64, %r1		/* PAGE_SIZE/64 == 64 */
- 
- 1:
--	ldw		0(%r25), %r19
- 	ldw		4(%r25), %r20
- 	ldw		8(%r25), %r21
- 	ldw		12(%r25), %r22
-@@ -396,11 +400,12 @@
- 	ldw		60(%r25), %r22
- 	stw		%r19, 48(%r26)
- 	stw		%r20, 52(%r26)
-+	ldo		64(%r25), %r25
- 	stw		%r21, 56(%r26)
- 	stw		%r22, 60(%r26)
- 	ldo		64(%r26), %r26
--	ADDIB>		-1, %r1, 1b
--	ldo		64(%r25), %r25
-+	ADDIB>,n	-1, %r1, 1b
-+	ldw		0(%r25), %r19
- #endif
- 	bv		%r0(%r2)
- 	nop
-@@ -456,7 +461,7 @@
- 	sub		%r25, %r1, %r23		/* move physical addr into non shadowed reg */
- 
- 	ldil		L%(TMPALIAS_MAP_START), %r28
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	extrd,u		%r26,56,32, %r26		/* convert phys addr to tlb insert format */
- 	extrd,u		%r23,56,32, %r23		/* convert phys addr to tlb insert format */
- 	depd		%r24,63,22, %r28		/* Form aliased virtual address 'to' */
-@@ -543,7 +548,7 @@
- 	tophys_r1	%r26
+@@ -3499,7 +4216,7 @@
+ 	**----------------------------------------------------
+ 	*/
  
- 	ldil		L%(TMPALIAS_MAP_START), %r28
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- #if (TMPALIAS_MAP_START >= 0x80000000)
- 	depdi		0, 31,32, %r28		/* clear any sign extension */
- #endif
-@@ -560,7 +565,7 @@
+-	idmsg = M_IDENTIFY | sdev->lun;
++	idmsg = IDENTIFY(0, sdev->lun);
  
- 	pdtlb		0(%r28)
+ 	if (cp ->tag != NO_TAG ||
+ 		(cp != np->ccb && np->disc && !(tp->usrflag & UF_NODISC)))
+@@ -3518,7 +4235,7 @@
+ 		*/
+ 		if (lp && time_after(jiffies, lp->tags_stime)) {
+ 			if (lp->tags_smap) {
+-				order = M_ORDERED_TAG;
++				order = ORDERED_QUEUE_TAG;
+ 				if ((DEBUG_FLAGS & DEBUG_TAGS)||bootverbose>2){ 
+ 					PRINT_ADDR(cmd,
+ 						"ordered tag forced.\n");
+@@ -3536,10 +4253,10 @@
+ 			case 0x08:  /* READ_SMALL (6) */
+ 			case 0x28:  /* READ_BIG  (10) */
+ 			case 0xa8:  /* READ_HUGE (12) */
+-				order = M_SIMPLE_TAG;
++				order = SIMPLE_QUEUE_TAG;
+ 				break;
+ 			default:
+-				order = M_ORDERED_TAG;
++				order = ORDERED_QUEUE_TAG;
+ 			}
+ 		}
+ 		msgptr[msglen++] = order;
+@@ -5508,9 +6225,9 @@
+ 	if (!(dbc & 0xc0000000))
+ 		phase = (dbc >> 24) & 7;
+ 	if (phase == 7)
+-		msg = M_PARITY;
++		msg = MSG_PARITY_ERROR;
+ 	else
+-		msg = M_ID_ERROR;
++		msg = INITIATOR_ERROR;
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldi		32, %r1			/* PAGE_SIZE/128 == 32 */
  
- 	/* PREFETCH (Write) has not (yet) been proven to help here */
-@@ -585,7 +590,7 @@
- 	ADDIB>		-1, %r1, 1b
- 	ldo		128(%r28), %r28
- 
--#else	/* ! __LP64 */
-+#else	/* ! CONFIG_64BIT */
- 
- 	ldi		64, %r1			/* PAGE_SIZE/64 == 64 */
- 
-@@ -608,7 +613,7 @@
- 	stw		%r0, 60(%r28)
- 	ADDIB>		-1, %r1, 1b
- 	ldo		64(%r28), %r28
--#endif	/* __LP64 */
-+#endif	/* CONFIG_64BIT */
- 
- 	bv		%r0(%r2)
- 	nop
-@@ -626,7 +631,7 @@
- 	ldil		L%dcache_stride, %r1
- 	ldw		R%dcache_stride(%r1), %r23
+ 	/*
+@@ -6074,6 +6791,8 @@
+ /*-----------------------------------------------------------------------------
+ **
+ **	Was Sie schon immer ueber transfermode negotiation wissen wollten ...
++**	("Everything you've always wanted to know about transfer mode
++**	  negotiation")
+ **
+ **	We try to negotiate sync and wide transfer only after
+ **	a successful inquire command. We look at byte 7 of the
+@@ -6175,8 +6894,8 @@
+ 			break;
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	depdi,z		1, 63-PAGE_SHIFT,1, %r25
- #else
- 	depwi,z		1, 31-PAGE_SHIFT,1, %r25
-@@ -670,7 +675,7 @@
- 	ldil		L%dcache_stride, %r1
- 	ldw		R%dcache_stride(%r1), %r23
+ 		}
+-		np->msgin [0] = M_NOOP;
+-		np->msgout[0] = M_NOOP;
++		np->msgin [0] = NOP;
++		np->msgout[0] = NOP;
+ 		cp->nego_status = 0;
+ 		break;
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	depdi,z		1,63-PAGE_SHIFT,1, %r25
- #else
- 	depwi,z		1,31-PAGE_SHIFT,1, %r25
-@@ -714,7 +719,7 @@
- 	ldil		L%dcache_stride, %r1
- 	ldw		R%dcache_stride(%r1), %r23
+@@ -6270,9 +6989,9 @@
+ 		spi_offset(starget) = ofs;
+ 		ncr_setsync(np, cp, scntl3, (fak<<5)|ofs);
+ 
+-		np->msgout[0] = M_EXTENDED;
++		np->msgout[0] = EXTENDED_MESSAGE;
+ 		np->msgout[1] = 3;
+-		np->msgout[2] = M_X_SYNC_REQ;
++		np->msgout[2] = EXTENDED_SDTR;
+ 		np->msgout[3] = per;
+ 		np->msgout[4] = ofs;
+ 
+@@ -6286,7 +7005,7 @@
+ 			OUTL_DSP (NCB_SCRIPT_PHYS (np, msg_bad));
+ 			return;
+ 		}
+-		np->msgin [0] = M_NOOP;
++		np->msgin [0] = NOP;
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	depdi,z		1, 63-PAGE_SHIFT,1, %r25
- #else
- 	depwi,z		1, 31-PAGE_SHIFT,1, %r25
-@@ -759,7 +764,7 @@
- 	ldil		L%dcache_stride, %r1
- 	ldw		R%dcache_stride(%r1), %r23
+ 		break;
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	depdi,z		1, 63-PAGE_SHIFT,1, %r25
- #else
- 	depwi,z		1, 31-PAGE_SHIFT,1, %r25
-@@ -807,7 +812,7 @@
- 	tophys_r1		%r26
+@@ -6362,12 +7081,12 @@
+ 		spi_width(starget) = wide;
+ 		ncr_setwide(np, cp, wide, 1);
+ 
+-		np->msgout[0] = M_EXTENDED;
++		np->msgout[0] = EXTENDED_MESSAGE;
+ 		np->msgout[1] = 2;
+-		np->msgout[2] = M_X_WIDE_REQ;
++		np->msgout[2] = EXTENDED_WDTR;
+ 		np->msgout[3] = wide;
+ 
+-		np->msgin [0] = M_NOOP;
++		np->msgin [0] = NOP;
+ 
+ 		cp->nego_status = NS_WIDE;
+ 
+@@ -6386,12 +7105,12 @@
+ 	case SIR_REJECT_RECEIVED:
+ 		/*-----------------------------------------------
+ 		**
+-		**	We received a M_REJECT message.
++		**	We received a MESSAGE_REJECT.
+ 		**
+ 		**-----------------------------------------------
+ 		*/
  
- 	ldil		L%(TMPALIAS_MAP_START), %r28
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	extrd,u		%r26, 56,32, %r26	/* convert phys addr to tlb insert format */
- 	depd		%r25, 63,22, %r28	/* Form aliased virtual address 'to' */
- 	depdi		0, 63,12, %r28		/* Clear any offset bits */
-@@ -824,7 +829,7 @@
- 	ldil		L%dcache_stride, %r1
- 	ldw		R%dcache_stride(%r1), %r23
+-		PRINT_ADDR(cp->cmd, "M_REJECT received (%x:%x).\n",
++		PRINT_ADDR(cp->cmd, "MESSAGE_REJECT received (%x:%x).\n",
+ 			(unsigned)scr_to_cpu(np->lastmsg), np->msgout[0]);
+ 		break;
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	depdi,z		1, 63-PAGE_SHIFT,1, %r29
- #else
- 	depwi,z		1, 31-PAGE_SHIFT,1, %r29
-@@ -935,7 +940,7 @@
- 	ldil		L%icache_stride, %r1
- 	ldw		R%icache_stride(%r1), %r23
+@@ -6403,7 +7122,7 @@
+ 		**-----------------------------------------------
+ 		*/
  
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	depdi,z		1, 63-PAGE_SHIFT,1, %r25
- #else
- 	depwi,z		1, 31-PAGE_SHIFT,1, %r25
-@@ -944,23 +949,23 @@
- 	sub		%r25, %r23, %r25
- 
- 
--1:      fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
--	fic,m		%r23(%r26)
-+1:      fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
-+	fic,m		%r23(%sr4, %r26)
- 	CMPB<<		%r26, %r25, 1b
--	fic,m		%r23(%r26)
-+	fic,m		%r23(%sr4, %r26)
- 
- 	sync
- 	bv		%r0(%r2)
-@@ -982,17 +987,18 @@
- 	ANDCM		%r26, %r21, %r26
- 
- 1:      CMPB<<,n	%r26, %r25, 1b
--	fic,m		%r23(%r26)
-+	fic,m		%r23(%sr4, %r26)
- 
- 	sync
- 	bv		%r0(%r2)
- 	nop
- 	.exit
--
- 	.procend
+-		ncr_print_msg(cp, "M_REJECT sent for", np->msgin);
++		ncr_print_msg(cp, "MESSAGE_REJECT sent for", np->msgin);
+ 		break;
  
--	.align	128
--
-+	/* align should cover use of rfi in disable_sr_hashing_asm and
-+	 * srdis_done.
-+	 */
-+	.align	256
- 	.export disable_sr_hashing_asm,code
+ /*--------------------------------------------------------------------
+@@ -6422,7 +7141,7 @@
+ 		**-----------------------------------------------
+ 		*/
  
- disable_sr_hashing_asm:
-@@ -1000,28 +1006,26 @@
- 	.callinfo NO_CALLS
- 	.entry
- 
--	/* Switch to real mode */
--
--	ssm		0, %r0			/* relied upon translation! */
--	nop
--	nop
-+	/*
-+	 * Switch to real mode
-+	 */
-+	/* pcxt_ssm_bug */
-+	rsm		PSW_SM_I, %r0
-+	load32		PA(1f), %r1
- 	nop
- 	nop
- 	nop
- 	nop
- 	nop
--	
--	rsm		(PSW_SM_Q|PSW_SM_I), %r0 /* disable Q&I to load the iia queue */
--	ldil		L%REAL_MODE_PSW, %r1
--	ldo		R%REAL_MODE_PSW(%r1), %r1
--	mtctl		%r1, %cr22
-+
-+	rsm		PSW_SM_Q, %r0		/* prep to load iia queue */
- 	mtctl		%r0, %cr17		/* Clear IIASQ tail */
- 	mtctl		%r0, %cr17		/* Clear IIASQ head */
--	ldil		L%PA(1f), %r1
--	ldo		R%PA(1f)(%r1), %r1
- 	mtctl		%r1, %cr18		/* IIAOQ head */
- 	ldo		4(%r1), %r1
- 	mtctl		%r1, %cr18		/* IIAOQ tail */
-+	load32		REAL_MODE_PSW, %r1
-+	mtctl		%r1, %ipsw
- 	rfi
- 	nop
- 
-@@ -1053,27 +1057,31 @@
- 
- srdis_pa20:
- 
--	/* Disable Space Register Hashing for PCXU,PCXU+,PCXW,PCXW+ */
-+	/* Disable Space Register Hashing for PCXU,PCXU+,PCXW,PCXW+,PCXW2 */
- 
- 	.word		0x144008bc		/* mfdiag %dr2, %r28 */
- 	depdi		0, 54,1, %r28		/* clear DIAG_SPHASH_ENAB (bit 54) */
- 	.word		0x145c1840		/* mtdiag %r28, %dr2 */
- 
--srdis_done:
- 
-+srdis_done:
- 	/* Switch back to virtual mode */
-+	rsm		PSW_SM_I, %r0		/* prep to load iia queue */
-+	load32 	   	2f, %r1
-+	nop
-+	nop
-+	nop
-+	nop
-+	nop
- 
--	rsm		PSW_SM_Q, %r0		/* clear Q bit to load iia queue */
--	ldil		L%KERNEL_PSW, %r1
--	ldo		R%KERNEL_PSW(%r1), %r1
--	mtctl		%r1, %cr22
-+	rsm		PSW_SM_Q, %r0		/* prep to load iia queue */
- 	mtctl		%r0, %cr17		/* Clear IIASQ tail */
- 	mtctl		%r0, %cr17		/* Clear IIASQ head */
--	ldil 	   	L%(2f), %r1
--	ldo     	R%(2f)(%r1), %r1
- 	mtctl		%r1, %cr18		/* IIAOQ head */
- 	ldo		4(%r1), %r1
- 	mtctl		%r1, %cr18		/* IIAOQ tail */
-+	load32		KERNEL_PSW, %r1
-+	mtctl		%r1, %ipsw
- 	rfi
- 	nop
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/pci-dma.c CVS2_6_14_PA0/arch/parisc/kernel/pci-dma.c
---- LINUS_2_6_14/arch/parisc/kernel/pci-dma.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/pci-dma.c	2005-08-20 18:20:11.000000000 -0600
-@@ -31,7 +31,7 @@
- #include <asm/page.h>	/* get_order */
- #include <asm/pgalloc.h>
- #include <asm/uaccess.h>
--
-+#include <asm/tlbflush.h>	/* for purge_tlb_*() macros */
+-		PRINT_ADDR(cp->cmd, "M_IGN_RESIDUE received, but not yet "
++		PRINT_ADDR(cp->cmd, "IGNORE_WIDE_RESIDUE received, but not yet "
+ 				"implemented.\n");
+ 		break;
+ #if 0
+@@ -6435,7 +7154,7 @@
+ 		**-----------------------------------------------
+ 		*/
  
- static struct proc_dir_entry * proc_gsc_root = NULL;
- static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length);
-@@ -333,18 +333,28 @@
- static int __init
- pcxl_dma_init(void)
- {
--    if (pcxl_dma_start == 0)
--	return 0;
-+	if (pcxl_dma_start == 0)
-+		return 0;
+-		PRINT_ADDR(cp->cmd, "M_DISCONNECT received, but datapointer "
++		PRINT_ADDR(cp->cmd, "DISCONNECT received, but datapointer "
+ 				"not saved: data=%x save=%x goal=%x.\n",
+ 			(unsigned) INL (nc_temp),
+ 			(unsigned) scr_to_cpu(np->header.savep),
+@@ -7141,7 +7860,7 @@
+ **==========================================================
+ **
+ **	Note: we have to return the correct value.
+-**	THERE IS NO SAVE DEFAULT VALUE.
++**	THERE IS NO SAFE DEFAULT VALUE.
+ **
+ **	Most NCR/SYMBIOS boards are delivered with a 40 Mhz clock.
+ **	53C860 and 53C875 rev. 1 support fast20 transfers but 
+@@ -7841,7 +8560,7 @@
+ 
+ 	/* use SIMPLE TAG messages by default */
+ #ifdef SCSI_NCR_ALWAYS_SIMPLE_TAG
+-	np->order = M_SIMPLE_TAG;
++	np->order = SIMPLE_QUEUE_TAG;
+ #endif
+ 
+ 	spin_unlock_irqrestore(&np->smp_lock, flags);
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/ncr53c8xx.h CVS2_6_15_RC7_PA0/drivers/scsi/ncr53c8xx.h
+--- LINUS_2_6_15_RC7/drivers/scsi/ncr53c8xx.h	2005-12-27 13:25:48.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/ncr53c8xx.h	2005-12-12 12:01:54.000000000 -0700
+@@ -36,6 +36,13 @@
+ **  And has been ported to NetBSD by
+ **          Charles M. Hannum           <mycroft at gnu.ai.mit.edu>
+ **
++**  Added support for MIPS big endian systems.
++**    Carsten Langgaard, carstenl at mips.com
++**    Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
++**
++**  Added support for HP PARISC big endian systems.
++**    Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
++**
+ *******************************************************************************
+ */
  
--    spin_lock_init(&pcxl_res_lock);
--    pcxl_res_size = PCXL_DMA_MAP_SIZE >> (PAGE_SHIFT + 3);
--    pcxl_res_hint = 0;
--    pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL,
-+	spin_lock_init(&pcxl_res_lock);
-+	pcxl_res_size = PCXL_DMA_MAP_SIZE >> (PAGE_SHIFT + 3);
-+	pcxl_res_hint = 0;
-+	pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL,
- 					    get_order(pcxl_res_size));
--    memset(pcxl_res_map, 0, pcxl_res_size);
--    proc_gsc_root = proc_mkdir("gsc", 0);
--    create_proc_info_entry("dino", 0, proc_gsc_root, pcxl_proc_info);
--    return 0;
-+	memset(pcxl_res_map, 0, pcxl_res_size);
-+	proc_gsc_root = proc_mkdir("gsc", 0);
-+	if (!proc_gsc_root)
-+    		printk(KERN_WARNING
-+			"pcxl_dma_init: Unable to create gsc /proc dir entry\n");
-+	else {
-+		struct proc_dir_entry* ent;
-+		ent = create_proc_info_entry("pcxl_dma", 0,
-+				proc_gsc_root, pcxl_proc_info);
-+		if (!ent)
-+			printk(KERN_WARNING
-+				"pci-dma.c: Unable to create pcxl_dma /proc entry.\n");
-+	}
-+	return 0;
- }
+@@ -44,7 +51,1225 @@
  
- __initcall(pcxl_dma_init);
-@@ -545,16 +555,16 @@
+ #include <scsi/scsi_host.h>
  
- static int pcxl_proc_info(char *buf, char **start, off_t offset, int len)
- {
-+#if 0
- 	u_long i = 0;
- 	unsigned long *res_ptr = (u_long *)pcxl_res_map;
--	unsigned long total_pages = pcxl_res_size << 3;        /* 8 bits per byte */
-+#endif
-+	unsigned long total_pages = pcxl_res_size << 3;   /* 8 bits per byte */
- 
--	sprintf(buf, "\nDMA Mapping Area size    : %d bytes (%d pages)\n",
--		PCXL_DMA_MAP_SIZE,
--		(pcxl_res_size << 3) ); /* 1 bit per page */
-+	sprintf(buf, "\nDMA Mapping Area size    : %d bytes (%ld pages)\n",
-+		PCXL_DMA_MAP_SIZE, total_pages);
- 	
--	sprintf(buf, "%sResource bitmap : %d bytes (%d pages)\n", 
--		buf, pcxl_res_size, pcxl_res_size << 3);   /* 8 bits per byte */
-+	sprintf(buf, "%sResource bitmap : %d bytes\n", buf, pcxl_res_size);
- 
- 	strcat(buf,  "     	  total:    free:    used:   % used:\n");
- 	sprintf(buf, "%sblocks  %8d %8ld %8ld %8ld%%\n", buf, pcxl_res_size,
-@@ -564,7 +574,8 @@
- 	sprintf(buf, "%spages   %8ld %8ld %8ld %8ld%%\n", buf, total_pages,
- 		total_pages - pcxl_used_pages, pcxl_used_pages,
- 		(pcxl_used_pages * 100 / total_pages));
--	
+-#include "sym53c8xx_defs.h"
++#include <linux/config.h>
 +
-+#if 0
- 	strcat(buf, "\nResource bitmap:");
- 
- 	for(; i < (pcxl_res_size / sizeof(u_long)); ++i, ++res_ptr) {
-@@ -572,6 +583,7 @@
- 		    strcat(buf,"\n   ");
- 		sprintf(buf, "%s %08lx", buf, *res_ptr);
- 	}
++/*
++**	If you want a driver as small as possible, donnot define the 
++**	following options.
++*/
++#define SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
++#define SCSI_NCR_DEBUG_INFO_SUPPORT
++
++/*
++**	To disable integrity checking, do not define the 
++**	following option.
++*/
++#ifdef	CONFIG_SCSI_NCR53C8XX_INTEGRITY_CHECK
++#	define SCSI_NCR_ENABLE_INTEGRITY_CHECK
 +#endif
- 	strcat(buf, "\n");
- 	return strlen(buf);
- }
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/pci.c CVS2_6_14_PA0/arch/parisc/kernel/pci.c
---- LINUS_2_6_14/arch/parisc/kernel/pci.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/pci.c	2005-08-10 10:33:32.000000000 -0600
-@@ -202,7 +202,8 @@
- pcibios_link_hba_resources( struct resource *hba_res, struct resource *r)
- {
- 	if (!r->parent) {
--		printk(KERN_EMERG "PCI: Tell willy he's wrong\n");
-+		printk(KERN_EMERG "PCI: resource not parented! [%lx-%lx]\n",
-+				r->start, r->end);
- 		r->parent = hba_res;
- 
- 		/* reverse link is harder *sigh*  */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/pdc_cons.c CVS2_6_14_PA0/arch/parisc/kernel/pdc_cons.c
---- LINUS_2_6_14/arch/parisc/kernel/pdc_cons.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/pdc_cons.c	2005-03-15 07:02:43.000000000 -0700
-@@ -41,7 +41,7 @@
- 
- /* Define EARLY_BOOTUP_DEBUG to debug kernel related boot problems. 
-  * On production kernels EARLY_BOOTUP_DEBUG should be undefined. */
--#undef EARLY_BOOTUP_DEBUG
-+#define EARLY_BOOTUP_DEBUG
- 
- 
- #include <linux/config.h>
-@@ -49,14 +49,8 @@
- #include <linux/console.h>
- #include <linux/string.h>
- #include <linux/init.h>
--#include <linux/delay.h>
--#include <linux/sched.h>
--#include <linux/interrupt.h>
- #include <linux/major.h>
- #include <linux/tty.h>
--#include <asm/page.h>
--#include <asm/types.h>
--#include <asm/system.h>
- #include <asm/pdc.h>		/* for iodc_call() proto and friends */
- 
- 
-@@ -96,7 +90,6 @@
- }
- 
- #if defined(CONFIG_PDC_CONSOLE)
--#define PDC_CONSOLE_DEVICE pdc_console_device
- static struct tty_driver * pdc_console_device (struct console *c, int *index)
- {
- 	extern struct tty_driver console_driver;
-@@ -104,22 +97,19 @@
- 	return &console_driver;
- }
- #else
--#define PDC_CONSOLE_DEVICE NULL
-+#define pdc_console_device NULL
- #endif
- 
- static struct console pdc_cons = {
- 	.name =		"ttyB",
- 	.write =	pdc_console_write,
--	.device =	PDC_CONSOLE_DEVICE,
-+	.device =	pdc_console_device,
- 	.setup =	pdc_console_setup,
--	.flags =	CON_BOOT|CON_PRINTBUFFER|CON_ENABLED,
-+	.flags =	CON_BOOT | CON_PRINTBUFFER | CON_ENABLED,
- 	.index =	-1,
- };
- 
- static int pdc_console_initialized;
--extern unsigned long con_start;	/* kernel/printk.c */
--extern unsigned long log_end;	/* kernel/printk.c */
--
- 
- static void pdc_console_init_force(void)
- {
-@@ -146,27 +136,11 @@
- }
- 
- 
--/* Unregister the pdc console with the printk console layer */
--void pdc_console_die(void)
--{
--	if (!pdc_console_initialized)
--		return;
--	--pdc_console_initialized;
--
--	printk(KERN_INFO "Switching from PDC console\n");
--
--	/* Don't repeat what we've already printed */
--	con_start = log_end;
--
--	unregister_console(&pdc_cons);
--}
--
--
- /*
-  * Used for emergencies. Currently only used if an HPMC occurs. If an
-  * HPMC occurs, it is possible that the current console may not be
-- * properly initialed after the PDC IO reset. This routine unregisters all
-- * of the current consoles, reinitializes the pdc console and
-+ * properly initialised after the PDC IO reset. This routine unregisters
-+ * all of the current consoles, reinitializes the pdc console and
-  * registers it.
-  */
- 
-@@ -177,13 +151,13 @@
- 	if (pdc_console_initialized)
- 		return;
- 
-+	/* If we've already seen the output, don't bother to print it again */
-+	if (console_drivers != NULL)
-+		pdc_cons.flags &= ~CON_PRINTBUFFER;
 +
- 	while ((console = console_drivers) != NULL)
- 		unregister_console(console_drivers);
- 
--	/* Don't repeat what we've already printed */
--	con_start = log_end;
--	
- 	/* force registering the pdc console */
- 	pdc_console_init_force();
- }
--
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/perf.c CVS2_6_14_PA0/arch/parisc/kernel/perf.c
---- LINUS_2_6_14/arch/parisc/kernel/perf.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/perf.c	2005-09-11 19:23:52.000000000 -0600
-@@ -746,7 +746,8 @@
- 	uint64_t *bptr;
- 	uint32_t dwords;
- 	uint32_t *intrigue_rdr;
--	uint64_t *intrigue_bitmask, tmp64, proc_hpa;
-+	uint64_t *intrigue_bitmask, tmp64;
-+	void __iomem *runway;
- 	struct rdr_tbl_ent *tentry;
- 	int i;
- 
-@@ -798,15 +799,16 @@
- 		return -1;
- 	}
- 
--	proc_hpa = cpu_device->hpa;
-+	runway = ioremap(cpu_device->hpa.start, 4096);
- 
- 	/* Merge intrigue bits into Runway STATUS 0 */
--	tmp64 = __raw_readq(proc_hpa + RUNWAY_STATUS) & 0xffecfffffffffffful;
--	__raw_writeq(tmp64 | (*memaddr++ & 0x0013000000000000ul), proc_hpa + RUNWAY_STATUS);
-+	tmp64 = __raw_readq(runway + RUNWAY_STATUS) & 0xffecfffffffffffful;
-+	__raw_writeq(tmp64 | (*memaddr++ & 0x0013000000000000ul), 
-+		     runway + RUNWAY_STATUS);
- 	
- 	/* Write RUNWAY DEBUG registers */
- 	for (i = 0; i < 8; i++) {
--		__raw_writeq(*memaddr++, proc_hpa + RUNWAY_DEBUG + i);
-+		__raw_writeq(*memaddr++, runway + RUNWAY_DEBUG);
- 	}
- 
- 	return 0; 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/process.c CVS2_6_14_PA0/arch/parisc/kernel/process.c
---- LINUS_2_6_14/arch/parisc/kernel/process.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/process.c	2005-09-14 06:54:53.000000000 -0600
-@@ -9,7 +9,7 @@
-  *    Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org>
-  *    Copyright (C) 2000 Philipp Rumpf <prumpf with tux.org>
-  *    Copyright (C) 2000 David Kennedy <dkennedy with linuxcare.com>
-- *    Copyright (C) 2000 Richard Hirst <rhirst with parisc-lixux.org>
-+ *    Copyright (C) 2000 Richard Hirst <rhirst with parisc-linux.org>
-  *    Copyright (C) 2000 Grant Grundler <grundler with parisc-linux.org>
-  *    Copyright (C) 2001 Alan Modra <amodra at parisc-linux.org>
-  *    Copyright (C) 2001-2002 Ryan Bradetich <rbrad at parisc-linux.org>
-@@ -245,7 +245,17 @@
- sys_clone(unsigned long clone_flags, unsigned long usp,
- 	  struct pt_regs *regs)
- {
--	int __user *user_tid = (int __user *)regs->gr[26];
-+  	/* Arugments from userspace are:
-+	   r26 = Clone flags.
-+	   r25 = Child stack.
-+	   r24 = parent_tidptr.
-+	   r23 = Is the TLS storage descriptor 
-+	   r22 = child_tidptr 
-+	   
-+	   However, these last 3 args are only examined
-+	   if the proper flags are set. */
-+	int __user *child_tidptr;
-+	int __user *parent_tidptr;
- 
- 	/* usp must be word aligned.  This also prevents users from
- 	 * passing in the value 1 (which is the signal for a special
-@@ -253,10 +263,20 @@
- 	usp = ALIGN(usp, 4);
- 
- 	/* A zero value for usp means use the current stack */
--	if(usp == 0)
--		usp = regs->gr[30];
-+	if (usp == 0)
-+	  usp = regs->gr[30];
- 
--	return do_fork(clone_flags, usp, regs, 0, user_tid, NULL);
-+	if (clone_flags & CLONE_PARENT_SETTID)
-+	  parent_tidptr = (int __user *)regs->gr[24];
-+	else
-+	  parent_tidptr = NULL;
-+	
-+	if (clone_flags & (CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID))
-+	  child_tidptr = (int __user *)regs->gr[22];
-+	else
-+	  child_tidptr = NULL;
++/* ---------------------------------------------------------------------
++** Take into account kernel configured parameters.
++** Most of these options can be overridden at startup by a command line.
++** ---------------------------------------------------------------------
++*/
 +
-+	return do_fork(clone_flags, usp, regs, 0, parent_tidptr, child_tidptr);
- }
- 
- int
-@@ -332,6 +352,10 @@
- 		} else {
- 			cregs->kpc = (unsigned long) &child_return;
- 		}
-+		/* Setup thread TLS area from the 4th parameter in clone */
-+		if (clone_flags & CLONE_SETTLS)
-+		  cregs->cr27 = pregs->gr[23];
-+	
- 	}
- 
- 	return 0;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/processor.c CVS2_6_14_PA0/arch/parisc/kernel/processor.c
---- LINUS_2_6_14/arch/parisc/kernel/processor.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/processor.c	2005-09-10 12:19:37.000000000 -0600
-@@ -92,7 +92,7 @@
- 	 * May get overwritten by PAT code.
- 	 */
- 	cpuid = boot_cpu_data.cpu_count;
--	txn_addr = dev->hpa;	/* for legacy PDC */
-+	txn_addr = dev->hpa.start;	/* for legacy PDC */
- 
- #ifdef __LP64__
- 	if (is_pdc_pat()) {
-@@ -122,7 +122,7 @@
-  * boot time (ie shutdown a CPU from an OS perspective).
-  */
- 		/* get the cpu number */
--		status = pdc_pat_cpu_get_number(&cpu_info, dev->hpa);
-+		status = pdc_pat_cpu_get_number(&cpu_info, dev->hpa.start);
- 
- 		BUG_ON(PDC_OK != status);
- 
-@@ -130,7 +130,7 @@
- 			printk(KERN_WARNING "IGNORING CPU at 0x%x,"
- 				" cpu_slot_id > NR_CPUS"
- 				" (%ld > %d)\n",
--				dev->hpa, cpu_info.cpu_num, NR_CPUS);
-+				dev->hpa.start, cpu_info.cpu_num, NR_CPUS);
- 			/* Ignore CPU since it will only crash */
- 			boot_cpu_data.cpu_count--;
- 			return 1;
-@@ -149,7 +149,7 @@
- 
- 	p->loops_per_jiffy = loops_per_jiffy;
- 	p->dev = dev;		/* Save IODC data in case we need it */
--	p->hpa = dev->hpa;	/* save CPU hpa */
-+	p->hpa = dev->hpa.start;	/* save CPU hpa */
- 	p->cpuid = cpuid;	/* save CPU id */
- 	p->txn_addr = txn_addr;	/* save CPU IRQ address */
- #ifdef CONFIG_SMP
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/real2.S CVS2_6_14_PA0/arch/parisc/kernel/real2.S
---- LINUS_2_6_14/arch/parisc/kernel/real2.S	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/real2.S	2005-05-12 23:25:09.000000000 -0600
-@@ -7,8 +7,10 @@
-  * Copyright (C) 2000 Hewlett Packard (Paul Bame bame at puffin.external.hp.com)
-  *
-  */
--#include <asm/assembly.h>
-+#include <linux/config.h>
++/*
++ * For Ultra2 and Ultra3 SCSI support option, use special features. 
++ *
++ * Value (default) means:
++ *	bit 0 : all features enabled, except:
++ *		bit 1 : PCI Write And Invalidate.
++ *		bit 2 : Data Phase Mismatch handling from SCRIPTS.
++ *
++ * Use boot options ncr53c8xx=specf:1 if you want all chip features to be 
++ * enabled by the driver.
++ */
++#define	SCSI_NCR_SETUP_SPECIAL_FEATURES		(3)
 +
- #include <asm/psw.h>
-+#include <asm/assembly.h>
- 
- 	.section	.bss
- 	.export real_stack
-@@ -20,7 +22,7 @@
- real64_stack:
- 	.block	8192
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- #  define REG_SZ 8
- #else
- #  define REG_SZ 4
-@@ -50,7 +52,7 @@
- 
- real32_call_asm:
- 	STREG	%rp, -RP_OFFSET(%sp)	/* save RP */
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	callee_save
- 	ldo	2*REG_SZ(%sp), %sp	/* room for a couple more saves */
- 	STREG	%r27, -1*REG_SZ(%sp)
-@@ -77,7 +79,7 @@
- 	b,l	save_control_regs,%r2		/* modifies r1, r2, r28 */
- 	nop
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	rsm	PSW_SM_W, %r0		/* go narrow */
- #endif
- 
-@@ -85,7 +87,7 @@
- 	bv	0(%r31)
- 	nop
- ric_ret:
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ssm	PSW_SM_W, %r0		/* go wide */
- #endif
- 	/* restore CRs before going virtual in case we page fault */
-@@ -97,7 +99,7 @@
- 
- 	tovirt_r1 %sp
- 	LDREG	-REG_SZ(%sp), %sp	/* restore SP */
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	LDREG	-1*REG_SZ(%sp), %r27
- 	LDREG	-2*REG_SZ(%sp), %r29
- 	ldo	-2*REG_SZ(%sp), %sp
-@@ -143,24 +145,21 @@
- /* rfi_virt2real() and rfi_real2virt() could perhaps be adapted for
-  * more general-purpose use by the several places which need RFIs
-  */
--	.align 128
- 	.text
-+	.align 128
- rfi_virt2real:
- 	/* switch to real mode... */
--	ssm		0,0		/* See "relied upon translation" */
--	nop				/* PA 2.0 Arch. F-5 */
--	nop
--	nop
-+	rsm		PSW_SM_I,%r0
-+	load32		PA(rfi_v2r_1), %r1
- 	nop
- 	nop
- 	nop
- 	nop
- 	nop
- 	
--	rsm             (PSW_SM_Q|PSW_SM_I),%r0  /* disable Q & I bits to load iia queue */
-+	rsm             PSW_SM_Q,%r0  /* disable Q & I bits to load iia queue */
- 	mtctl		%r0, %cr17	/* Clear IIASQ tail */
- 	mtctl		%r0, %cr17	/* Clear IIASQ head */
--	load32		PA(rfi_v2r_1), %r1
- 	mtctl		%r1, %cr18	/* IIAOQ head */
- 	ldo		4(%r1), %r1
- 	mtctl		%r1, %cr18	/* IIAOQ tail */
-@@ -184,10 +183,8 @@
- 	.text
- 	.align 128
- rfi_real2virt:
--	ssm		0,0		/* See "relied upon translation" */
--	nop				/* PA 2.0 Arch. F-5 */
--	nop
--	nop
-+	rsm		PSW_SM_I,%r0
-+	load32		(rfi_r2v_1), %r1
- 	nop
- 	nop
- 	nop
-@@ -197,7 +194,6 @@
- 	rsm             PSW_SM_Q,%r0    /* disable Q bit to load iia queue */
- 	mtctl		%r0, %cr17	/* Clear IIASQ tail */
- 	mtctl		%r0, %cr17	/* Clear IIASQ head */
--	load32		(rfi_r2v_1), %r1
- 	mtctl		%r1, %cr18	/* IIAOQ head */
- 	ldo		4(%r1), %r1
- 	mtctl		%r1, %cr18	/* IIAOQ tail */
-@@ -218,7 +214,7 @@
- 	bv	0(%r2)
- 	nop
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 
- /************************ 64-bit real-mode calls ***********************/
- /* This is only usable in wide kernels right now and will probably stay so */
-@@ -296,7 +292,7 @@
- 	**	comparing function pointers.
- 	*/
- __canonicalize_funcptr_for_compare:
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	bve (%r2)
- #else
- 	bv %r0(%r2)
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/signal.c CVS2_6_14_PA0/arch/parisc/kernel/signal.c
---- LINUS_2_6_14/arch/parisc/kernel/signal.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/signal.c	2005-10-09 09:54:23.000000000 -0600
-@@ -296,7 +296,6 @@
- 	struct rt_sigframe __user *frame;
- 	unsigned long rp, usp;
- 	unsigned long haddr, sigframe_size;
--	struct siginfo si;
- 	int err = 0;
- #ifdef __LP64__
- 	compat_int_t compat_val;
-@@ -490,15 +489,7 @@
- 
- give_sigsegv:
- 	DBG(1,"setup_rt_frame: sending SIGSEGV\n");
--	if (sig == SIGSEGV)
--		ka->sa.sa_handler = SIG_DFL;
--	si.si_signo = SIGSEGV;
--	si.si_errno = 0;
--	si.si_code = SI_KERNEL;
--	si.si_pid = current->pid;
--	si.si_uid = current->uid;
--	si.si_addr = frame;
--	force_sig_info(SIGSEGV, &si, current);
-+	force_sigsegv(sig, current);
- 	return 0;
- }
- 
-@@ -633,10 +624,14 @@
- 			put_user(0xe0008200, &usp[3]);
- 			put_user(0x34140000, &usp[4]);
- 
--			/* Stack is 64-byte aligned, and we only 
--			 * need to flush 1 cache line */
--			asm("fdc 0(%%sr3, %0)\n"
--			    "fic 0(%%sr3, %0)\n"
-+			/* Stack is 64-byte aligned, and we only need
-+			 * to flush 1 cache line.
-+			 * Flushing one cacheline is cheap.
-+			 * "sync" on bigger (> 4 way) boxes is not.
-+			 */
-+			asm("fdc %%r0(%%sr3, %0)\n"
-+			    "sync\n"
-+			    "fic %%r0(%%sr3, %0)\n"
- 			    "sync\n"
- 			    : : "r"(regs->gr[30]));
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/smp.c CVS2_6_14_PA0/arch/parisc/kernel/smp.c
---- LINUS_2_6_14/arch/parisc/kernel/smp.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/smp.c	2005-10-18 12:05:46.000000000 -0600
-@@ -18,7 +18,7 @@
- */
- #undef ENTRY_SYS_CPUS	/* syscall support for iCOD-like functionality */
- 
--#include <linux/autoconf.h>
-+#include <linux/config.h>
- 
- #include <linux/types.h>
- #include <linux/spinlock.h>
-@@ -181,12 +181,19 @@
- 		while (ops) {
- 			unsigned long which = ffz(~ops);
- 
-+			ops &= ~(1 << which);
-+
- 			switch (which) {
-+			case IPI_NOP:
-+#if (kDEBUG>=100)
-+				printk(KERN_DEBUG "CPU%d IPI_NOP\n",this_cpu);
-+#endif /* kDEBUG */
-+				break;
-+				
- 			case IPI_RESCHEDULE:
- #if (kDEBUG>=100)
- 				printk(KERN_DEBUG "CPU%d IPI_RESCHEDULE\n",this_cpu);
- #endif /* kDEBUG */
--				ops &= ~(1 << IPI_RESCHEDULE);
- 				/*
- 				 * Reschedule callback.  Everything to be
- 				 * done is done by the interrupt return path.
-@@ -197,7 +204,6 @@
- #if (kDEBUG>=100)
- 				printk(KERN_DEBUG "CPU%d IPI_CALL_FUNC\n",this_cpu);
- #endif /* kDEBUG */
--				ops &= ~(1 << IPI_CALL_FUNC);
- 				{
- 					volatile struct smp_call_struct *data;
- 					void (*func)(void *info);
-@@ -231,7 +237,6 @@
- #if (kDEBUG>=100)
- 				printk(KERN_DEBUG "CPU%d IPI_CPU_START\n",this_cpu);
- #endif /* kDEBUG */
--				ops &= ~(1 << IPI_CPU_START);
- #ifdef ENTRY_SYS_CPUS
- 				p->state = STATE_RUNNING;
- #endif
-@@ -241,7 +246,6 @@
- #if (kDEBUG>=100)
- 				printk(KERN_DEBUG "CPU%d IPI_CPU_STOP\n",this_cpu);
- #endif /* kDEBUG */
--				ops &= ~(1 << IPI_CPU_STOP);
- #ifdef ENTRY_SYS_CPUS
- #else
- 				halt_processor();
-@@ -252,13 +256,11 @@
- #if (kDEBUG>=100)
- 				printk(KERN_DEBUG "CPU%d is alive!\n",this_cpu);
- #endif /* kDEBUG */
--				ops &= ~(1 << IPI_CPU_TEST);
- 				break;
- 
- 			default:
- 				printk(KERN_CRIT "Unknown IPI num on CPU%d: %lu\n",
- 					this_cpu, which);
--				ops &= ~(1 << which);
- 				return IRQ_NONE;
- 			} /* Switch */
- 		} /* while (ops) */
-@@ -312,6 +314,12 @@
- void 
- smp_send_reschedule(int cpu) { send_IPI_single(cpu, IPI_RESCHEDULE); }
- 
-+void
-+smp_send_all_nop(void)
-+{
-+	send_IPI_allbutself(IPI_NOP);
-+}
++#define SCSI_NCR_MAX_SYNC			(80)
 +
- 
- /**
-  * Run a function on all other CPUs.
-@@ -338,6 +346,10 @@
- 
- 	/* Can deadlock when called with interrupts disabled */
- 	WARN_ON(irqs_disabled());
++/*
++ * Allow tags from 2 to 256, default 8
++ */
++#ifdef	CONFIG_SCSI_NCR53C8XX_MAX_TAGS
++#if	CONFIG_SCSI_NCR53C8XX_MAX_TAGS < 2
++#define SCSI_NCR_MAX_TAGS	(2)
++#elif	CONFIG_SCSI_NCR53C8XX_MAX_TAGS > 256
++#define SCSI_NCR_MAX_TAGS	(256)
++#else
++#define	SCSI_NCR_MAX_TAGS	CONFIG_SCSI_NCR53C8XX_MAX_TAGS
++#endif
++#else
++#define SCSI_NCR_MAX_TAGS	(8)
++#endif
 +
-+	/* can also deadlock if IPIs are disabled */
-+	WARN_ON((get_eiem() & (1UL<<(CPU_IRQ_MAX - IPI_IRQ))) == 0);
++/*
++ * Allow tagged command queuing support if configured with default number 
++ * of tags set to max (see above).
++ */
++#ifdef	CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
++#define	SCSI_NCR_SETUP_DEFAULT_TAGS	CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
++#elif	defined CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE
++#define	SCSI_NCR_SETUP_DEFAULT_TAGS	SCSI_NCR_MAX_TAGS
++#else
++#define	SCSI_NCR_SETUP_DEFAULT_TAGS	(0)
++#endif
 +
- 	
- 	data.func = func;
- 	data.info = info;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/syscall.S CVS2_6_14_PA0/arch/parisc/kernel/syscall.S
---- LINUS_2_6_14/arch/parisc/kernel/syscall.S	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/syscall.S	2005-09-14 14:58:36.000000000 -0600
-@@ -6,6 +6,7 @@
-  * thanks to Philipp Rumpf, Mike Shaver and various others
-  * sorry about the wall, puffin..
-  */
-+#include <linux/config.h> /* for CONFIG_SMP */
- 
- #include <asm/asm-offsets.h>
- #include <asm/unistd.h>
-@@ -22,15 +23,13 @@
- 	 */
- #define KILL_INSN	break	0,0
- 
--#include <linux/config.h> /* for CONFIG_SMP */
--
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	.level          2.0w
- #else
- 	.level		1.1
- #endif
- 
--#ifndef __LP64__
-+#ifndef CONFIG_64BIT
- 	.macro fixup_branch,lbl
- 	b	    \lbl
- 	.endm
-@@ -103,7 +102,7 @@
- 	mfsp    %sr7,%r1                        /* save user sr7 */
- 	mtsp    %r1,%sr3                        /* and store it in sr3 */
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* for now we can *always* set the W bit on entry to the syscall
- 	 * since we don't support wide userland processes.  We could
- 	 * also save the current SM other than in r0 and restore it on
-@@ -155,7 +154,7 @@
- 	STREG	%r19, TASK_PT_GR19(%r1)
- 
- 	LDREGM	-FRAME_SIZE(%r30), %r2		/* get users sp back */
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	extrd,u	%r2,63,1,%r19			/* W hidden in bottom bit */
- #if 0
- 	xor	%r19,%r2,%r2			/* clear bottom bit */
-@@ -165,7 +164,7 @@
- #endif
- 	STREG	%r2,  TASK_PT_GR30(%r1)		/* ... and save it */
- 	
--	STREG	%r20, TASK_PT_GR20(%r1)
-+	STREG	%r20, TASK_PT_GR20(%r1)		/* Syscall number */
- 	STREG	%r21, TASK_PT_GR21(%r1)
- 	STREG	%r22, TASK_PT_GR22(%r1)
- 	STREG	%r23, TASK_PT_GR23(%r1)		/* 4th argument */
-@@ -186,7 +185,7 @@
- 
- 	loadgp
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29			/* Reference param save area */
- 	copy	%r19,%r2			/* W bit back to r2 */
- #else
-@@ -205,7 +204,7 @@
- 	/* Note!  We cannot use the syscall table that is mapped
- 	nearby since the gateway page is mapped execute-only. */
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldil	L%sys_call_table, %r1
- 	or,=	%r2,%r2,%r2
- 	addil	L%(sys_call_table64-sys_call_table), %r1
-@@ -321,7 +320,7 @@
- 	LDREG   TASK_PT_GR25(%r1), %r25
- 	LDREG   TASK_PT_GR24(%r1), %r24
- 	LDREG   TASK_PT_GR23(%r1), %r23
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	LDREG   TASK_PT_GR22(%r1), %r22
- 	LDREG   TASK_PT_GR21(%r1), %r21
- 	ldo	-16(%r30),%r29			/* Reference param save area */
-@@ -350,7 +349,7 @@
- tracesys_exit:
- 	ldo     -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1      /* get task ptr */
- 	LDREG	TI_TASK(%r1), %r1
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29			/* Reference param save area */
- #endif
- 	bl	syscall_trace, %r2
-@@ -371,7 +370,7 @@
- tracesys_sigexit:
- 	ldo     -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1      /* get task ptr */
- 	LDREG	0(%r1), %r1
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	ldo	-16(%r30),%r29			/* Reference param save area */
- #endif
- 	bl	syscall_trace, %r2
-@@ -404,7 +403,7 @@
- 	gate	.+8, %r0
- 	depi	3, 31, 2, %r31	/* Ensure we return to userspace */
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* FIXME: If we are a 64-bit kernel just
- 	 *        turn this on unconditionally.
- 	 */
-@@ -440,7 +439,7 @@
- 	/* Fall through: Return to userspace */
- 
- lws_exit:
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* decide whether to reset the wide mode bit
- 	 *
- 	 * For a syscall, the W bit is stored in the lowest bit
-@@ -486,7 +485,7 @@
- 
- 	/* ELF64 Process entry path */
- lws_compare_and_swap64:
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	b,n	lws_compare_and_swap
- #else
- 	/* If we are not a 64-bit kernel, then we don't
-@@ -497,7 +496,7 @@
- 
- 	/* ELF32 Process entry path */
- lws_compare_and_swap32:
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* Clip all the input registers */
- 	depdi	0, 31, 32, %r26
- 	depdi	0, 31, 32, %r25
-@@ -528,6 +527,7 @@
- 		We *must* giveup this call and fail.
- 	*/
- 	ldw	4(%sr2,%r20), %r28			/* Load thread register */
-+	/* WARNING: If cr27 cycles to the same value we have problems */
- 	mfctl	%cr27, %r21				/* Get current thread register */
- 	cmpb,<>,n	%r21, %r28, cas_lock		/* Called recursive? */
- 	b	lws_exit				/* Return error! */
-@@ -608,7 +608,7 @@
- 	   the other for the store. Either return -EFAULT.
- 	   Each of the entries must be relocated. */
- 	.section __ex_table,"aw"
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* Pad the address calculation */
- 	.word	0,(2b - linux_gateway_page)
- 	.word	0,(3b - linux_gateway_page)
-@@ -619,7 +619,7 @@
- 	.previous
- 
- 	.section __ex_table,"aw"
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* Pad the address calculation */
- 	.word	0,(1b - linux_gateway_page)
- 	.word	0,(3b - linux_gateway_page)
-@@ -638,7 +638,7 @@
- 
- 	/* Relocate symbols assuming linux_gateway_page is mapped
- 	   to virtual address 0x0 */
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/* FIXME: The code will always be on the gateay page
- 		  and thus it will be on the first 4k, the
- 		  assembler seems to think that the final
-@@ -666,7 +666,7 @@
- sys_call_table:
- #include "syscall_table.S"
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	.align 4096
- 	.export sys_call_table64
- .Lsys_call_table64:
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/syscall_table.S CVS2_6_14_PA0/arch/parisc/kernel/syscall_table.S
---- LINUS_2_6_14/arch/parisc/kernel/syscall_table.S	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/syscall_table.S	2005-09-22 14:03:13.000000000 -0600
-@@ -35,7 +35,7 @@
- #undef ENTRY_UHOH
- #undef ENTRY_COMP
- #undef ENTRY_OURS
--#if defined(__LP64__) && !defined(SYSCALL_TABLE_64BIT)
-+#if defined(CONFIG_64BIT) && !defined(SYSCALL_TABLE_64BIT)
- /* Use ENTRY_SAME for 32-bit syscalls which are the same on wide and
-  * narrow palinux.  Use ENTRY_DIFF for those where a 32-bit specific
-  * implementation is required on wide palinux.  Use ENTRY_COMP where
-@@ -46,7 +46,7 @@
- #define ENTRY_UHOH(_name_) .dword sys32_##unimplemented
- #define ENTRY_OURS(_name_) .dword parisc_##_name_
- #define ENTRY_COMP(_name_) .dword compat_sys_##_name_
--#elif defined(__LP64__) && defined(SYSCALL_TABLE_64BIT)
-+#elif defined(CONFIG_64BIT) && defined(SYSCALL_TABLE_64BIT)
- #define ENTRY_SAME(_name_) .dword sys_##_name_
- #define ENTRY_DIFF(_name_) .dword sys_##_name_
- #define ENTRY_UHOH(_name_) .dword sys_##_name_
-@@ -368,5 +368,11 @@
- 	ENTRY_COMP(mbind)		/* 260 */
- 	ENTRY_COMP(get_mempolicy)
- 	ENTRY_COMP(set_mempolicy)
-+	ENTRY_SAME(ni_syscall)	/* 263: reserved for vserver */
-+	ENTRY_SAME(add_key)
-+	ENTRY_SAME(request_key)		/* 265 */
-+	ENTRY_SAME(keyctl)
-+	ENTRY_SAME(ioprio_set)
-+	ENTRY_SAME(ioprio_get)
- 	/* Nothing yet */
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/time.c CVS2_6_14_PA0/arch/parisc/kernel/time.c
---- LINUS_2_6_14/arch/parisc/kernel/time.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/time.c	2005-09-14 06:54:53.000000000 -0600
-@@ -89,14 +89,6 @@
- 		}
- 	}
-     
--#ifdef CONFIG_CHASSIS_LCD_LED
--	/* Only schedule the led tasklet on cpu 0, and only if it
--	 * is enabled.
--	 */
--	if (cpu == 0 && !atomic_read(&led_tasklet.count))
--		tasklet_schedule(&led_tasklet);
--#endif
--
- 	/* check soft power switch status */
- 	if (cpu == 0 && !atomic_read(&power_tasklet.count))
- 		tasklet_schedule(&power_tasklet);
-@@ -104,6 +96,24 @@
- 	return IRQ_HANDLED;
- }
- 
++/*
++ * Immediate arbitration
++ */
++#if defined(CONFIG_SCSI_NCR53C8XX_IARB)
++#define SCSI_NCR_IARB_SUPPORT
++#endif
 +
-+unsigned long profile_pc(struct pt_regs *regs)
-+{
-+	unsigned long pc = instruction_pointer(regs);
++/*
++ * Sync transfer frequency at startup.
++ * Allow from 5Mhz to 80Mhz default 20 Mhz.
++ */
++#ifndef	CONFIG_SCSI_NCR53C8XX_SYNC
++#define	CONFIG_SCSI_NCR53C8XX_SYNC	(20)
++#elif	CONFIG_SCSI_NCR53C8XX_SYNC > SCSI_NCR_MAX_SYNC
++#undef	CONFIG_SCSI_NCR53C8XX_SYNC
++#define	CONFIG_SCSI_NCR53C8XX_SYNC	SCSI_NCR_MAX_SYNC
++#endif
++
++#if	CONFIG_SCSI_NCR53C8XX_SYNC == 0
++#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(255)
++#elif	CONFIG_SCSI_NCR53C8XX_SYNC <= 5
++#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(50)
++#elif	CONFIG_SCSI_NCR53C8XX_SYNC <= 20
++#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(250/(CONFIG_SCSI_NCR53C8XX_SYNC))
++#elif	CONFIG_SCSI_NCR53C8XX_SYNC <= 33
++#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(11)
++#elif	CONFIG_SCSI_NCR53C8XX_SYNC <= 40
++#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(10)
++#else
++#define	SCSI_NCR_SETUP_DEFAULT_SYNC 	(9)
++#endif
 +
-+	if (regs->gr[0] & PSW_N)
-+		pc -= 4;
++/*
++ * Disallow disconnections at boot-up
++ */
++#ifdef CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT
++#define SCSI_NCR_SETUP_DISCONNECTION	(0)
++#else
++#define SCSI_NCR_SETUP_DISCONNECTION	(1)
++#endif
 +
-+#ifdef CONFIG_SMP
-+	if (in_lock_functions(pc))
-+		pc = regs->gr[2];
++/*
++ * Force synchronous negotiation for all targets
++ */
++#ifdef CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO
++#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO	(1)
++#else
++#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO	(0)
 +#endif
 +
-+	return pc;
-+}
-+EXPORT_SYMBOL(profile_pc);
++/*
++ * Disable master parity checking (flawed hardwares need that)
++ */
++#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK
++#define SCSI_NCR_SETUP_MASTER_PARITY	(0)
++#else
++#define SCSI_NCR_SETUP_MASTER_PARITY	(1)
++#endif
 +
++/*
++ * Disable scsi parity checking (flawed devices may need that)
++ */
++#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK
++#define SCSI_NCR_SETUP_SCSI_PARITY	(0)
++#else
++#define SCSI_NCR_SETUP_SCSI_PARITY	(1)
++#endif
 +
- /*** converted from ia64 ***/
- /*
-  * Return the number of micro-seconds that elapsed since the last
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/traps.c CVS2_6_14_PA0/arch/parisc/kernel/traps.c
---- LINUS_2_6_14/arch/parisc/kernel/traps.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/traps.c	2005-07-23 10:31:43.000000000 -0600
-@@ -74,7 +74,10 @@
- 	char *level;
- 	unsigned long cr30;
- 	unsigned long cr31;
--
-+	/* carlos says that gcc understands better memory in a struct,
-+	 * and it makes our life easier with fpregs -- T-Bone */
-+	struct { u32 sw[2]; } s;
-+	
- 	level = user_mode(regs) ? KERN_DEBUG : KERN_CRIT;
- 
- 	printk("%s\n", level); /* don't want to have that pretty register dump messed up */
-@@ -103,11 +106,33 @@
- 		printk("%s\n", buf);
- 	}
- 
--#if RIDICULOUSLY_VERBOSE
--	for (i = 0; i < 32; i += 2)
--		printk("%sFR%02d : %016lx  FR%2d : %016lx", level, i,
--				regs->fr[i], i+1, regs->fr[i+1]);
--#endif
-+	/* FR are 64bit everywhere. Need to use asm to get the content
-+	 * of fpsr/fper1, and we assume that we won't have a FP Identify
-+	 * in our way, otherwise we're screwed.
-+	 * The fldd is used to restore the T-bit if there was one, as the
-+	 * store clears it anyway.
-+	 * BTW, PA2.0 book says "thou shall not use fstw on FPSR/FPERs". */ 
-+	__asm__ (
-+		"fstd %%fr0,0(%1)	\n\t"
-+		"fldd 0(%1),%%fr0	\n\t"
-+		: "=m" (s) : "r" (&s) : "%r0"
-+		);
-+
-+	printk("%s\n", level);
-+	printk("%s      VZOUICununcqcqcqcqcqcrmunTDVZOUI\n", level);
-+	printbinary(buf, s.sw[0], 32);
-+	printk("%sFPSR: %s\n", level, buf);
-+	printk("%sFPER1: %08x\n", level, s.sw[1]);
-+
-+	/* here we'll print fr0 again, tho it'll be meaningless */
-+	for (i = 0; i < 32; i += 4) {
-+		int j;
-+		p = buf;
-+		p += sprintf(p, "%sfr%02d-%02d ", level, i, i + 3);
-+		for (j = 0; j < 4; j++)
-+			p += sprintf(p, " %016llx", (i+j) == 0 ? 0 : regs->fr[i+j]);
-+		printk("%s\n", buf);
-+	}
- 
- 	cr30 = mfctl(30);
- 	cr31 = mfctl(31);
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/kernel/unaligned.c CVS2_6_14_PA0/arch/parisc/kernel/unaligned.c
---- LINUS_2_6_14/arch/parisc/kernel/unaligned.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/kernel/unaligned.c	2005-09-14 15:00:31.000000000 -0600
-@@ -513,15 +513,18 @@
- 	register int flop=0;	/* true if this is a flop */
- 
- 	/* log a message with pacing */
--	if (user_mode(regs))
--	{
--		if (unaligned_count > 5 && jiffies - last_time > 5*HZ)
--		{
-+	if (user_mode(regs)) {
-+		if (current->thread.flags & PARISC_UAC_SIGBUS) {
-+			goto force_sigbus;
-+		}
++/*
++ * Settle time after reset at boot-up
++ */
++#define SCSI_NCR_SETUP_SETTLE_TIME	(2)
 +
-+		if (unaligned_count > 5 && jiffies - last_time > 5*HZ) {
- 			unaligned_count = 0;
- 			last_time = jiffies;
- 		}
--		if (++unaligned_count < 5)
--		{
++/*
++**	Bridge quirks work-around option defaulted to 1.
++*/
++#ifndef	SCSI_NCR_PCIQ_WORK_AROUND_OPT
++#define	SCSI_NCR_PCIQ_WORK_AROUND_OPT	1
++#endif
 +
-+		if (!(current->thread.flags & PARISC_UAC_NOPRINT) 
-+		    && ++unaligned_count < 5) {
- 			char buf[256];
- 			sprintf(buf, "%s(%d): unaligned access to 0x" RFMT " at ip=0x" RFMT "\n",
- 				current->comm, current->pid, regs->ior, regs->iaoq[0]);
-@@ -530,6 +533,7 @@
- 			show_regs(regs);
- #endif		
- 		}
++/*
++**	Work-around common bridge misbehaviour.
++**
++**	- Do not flush posted writes in the opposite 
++**	  direction on read.
++**	- May reorder DMA writes to memory.
++**
++**	This option should not affect performances 
++**	significantly, so it is the default.
++*/
++#if	SCSI_NCR_PCIQ_WORK_AROUND_OPT == 1
++#define	SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
++#define	SCSI_NCR_PCIQ_MAY_REORDER_WRITES
++#define	SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
 +
- 		if (!unaligned_enabled)
- 			goto force_sigbus;
- 	}
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/lib/fixup.S CVS2_6_14_PA0/arch/parisc/lib/fixup.S
---- LINUS_2_6_14/arch/parisc/lib/fixup.S	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/lib/fixup.S	2005-09-25 19:23:05.000000000 -0600
-@@ -35,7 +35,7 @@
- 	extrd,u \t2,63,32,\t2
- #endif
- 	/* t2 = &__per_cpu_offset[smp_processor_id()]; */
--	LDREG,s \t2(\t1),\t2 
-+	LDREGX \t2(\t1),\t2 
- 	addil LT%per_cpu__exception_data,%r27
- 	LDREG RT%per_cpu__exception_data(%r1),\t1
- 	/* t1 = &__get_cpu_var(exception_data) */
-@@ -53,6 +53,8 @@
- 	.endm
- #endif
- 
-+	.level LEVEL
++/*
++**	Same as option 1, but also deal with 
++**	misconfigured interrupts.
++**
++**	- Edge triggerred instead of level sensitive.
++**	- No interrupt line connected.
++**	- IRQ number misconfigured.
++**	
++**	If no interrupt is delivered, the driver will 
++**	catch the interrupt conditions 10 times per 
++**	second. No need to say that this option is 
++**	not recommended.
++*/
++#elif	SCSI_NCR_PCIQ_WORK_AROUND_OPT == 2
++#define	SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
++#define	SCSI_NCR_PCIQ_MAY_REORDER_WRITES
++#define	SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
++#define	SCSI_NCR_PCIQ_BROKEN_INTR
 +
- 	.text
- 	.section .fixup, "ax"
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/arch/parisc/lib/memcpy.c CVS2_6_14_PA0/arch/parisc/lib/memcpy.c
---- LINUS_2_6_14/arch/parisc/lib/memcpy.c	2005-10-27 21:30:34.000000000 -0600
-+++ CVS2_6_14_PA0/arch/parisc/lib/memcpy.c	2005-08-02 20:47:39.000000000 -0600
-@@ -339,6 +339,7 @@
- 	pds = (double *)pcs;
- 	pdd = (double *)pcd;
- 
-+#if 0
- 	/* Copy 8 doubles at a time */
- 	while (len >= 8*sizeof(double)) {
- 		register double r1, r2, r3, r4, r5, r6, r7, r8;
-@@ -366,6 +367,7 @@
- 		fstdma(d_space, r8, pdd, pmc_store_exc);
- 		len -= 8*sizeof(double);
- 	}
++/*
++**	Some bridge designers decided to flush 
++**	everything prior to deliver the interrupt.
++**	This option tries to deal with such a 
++**	behaviour.
++*/
++#elif	SCSI_NCR_PCIQ_WORK_AROUND_OPT == 3
++#define	SCSI_NCR_PCIQ_SYNC_ON_INTR
 +#endif
- 
- 	pws = (unsigned int *)pds;
- 	pwd = (unsigned int *)pdd;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/ide/Kconfig CVS2_6_14_PA0/drivers/ide/Kconfig
---- LINUS_2_6_14/drivers/ide/Kconfig	2005-10-27 21:30:36.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/ide/Kconfig	2005-08-28 20:41:00.000000000 -0600
-@@ -616,7 +616,7 @@
- 	tristate "NS87415 chipset support"
- 	help
- 	  This driver adds detection and support for the NS87415 chip
--	  (used in SPARC64, among others).
-+	  (used mainly on SPARC64 and PA-RISC machines).
- 
- 	  Please read the comments at the top of <file:drivers/ide/pci/ns87415.c>.
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/ide/ide-lib.c CVS2_6_14_PA0/drivers/ide/ide-lib.c
---- LINUS_2_6_14/drivers/ide/ide-lib.c	2005-10-27 21:30:36.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/ide/ide-lib.c	2005-10-16 17:22:26.000000000 -0600
-@@ -410,10 +410,10 @@
- {
- 	u64 addr = BLK_BOUNCE_HIGH;	/* dma64_addr_t */
- 
--	if (on && drive->media == ide_disk) {
--		if (!PCI_DMA_BUS_IS_PHYS)
--			addr = BLK_BOUNCE_ANY;
--		else if (HWIF(drive)->pci_dev)
-+	if (!PCI_DMA_BUS_IS_PHYS) {
-+		addr = BLK_BOUNCE_ANY;
-+	} else if (on && drive->media == ide_disk) {
-+		if (HWIF(drive)->pci_dev)
- 			addr = HWIF(drive)->pci_dev->dma_mask;
- 	}
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/input/keyboard/hil_kbd.c CVS2_6_14_PA0/drivers/input/keyboard/hil_kbd.c
---- LINUS_2_6_14/drivers/input/keyboard/hil_kbd.c	2005-10-27 21:30:37.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/input/keyboard/hil_kbd.c	2005-03-25 22:00:08.000000000 -0700
-@@ -204,7 +204,7 @@
- 	hil_packet packet;
- 	int idx;
- 
--	kbd = (struct hil_kbd *)serio->private;
-+	kbd = serio_get_drvdata(serio);
- 	if (kbd == NULL) {
- 		BUG();
- 		return IRQ_HANDLED;
-@@ -234,7 +234,7 @@
- {
- 	struct hil_kbd *kbd;
- 
--	kbd = (struct hil_kbd *)serio->private;
-+	kbd = serio_get_drvdata(serio);
- 	if (kbd == NULL) {
- 		BUG();
- 		return;
-@@ -245,20 +245,20 @@
- 	kfree(kbd);
- }
- 
--static void hil_kbd_connect(struct serio *serio, struct serio_driver *drv)
-+static int hil_kbd_connect(struct serio *serio, struct serio_driver *drv)
- {
- 	struct hil_kbd	*kbd;
- 	uint8_t		did, *idd;
- 	int		i;
- 	
--	if (serio->type != (SERIO_HIL_MLC | SERIO_HIL)) return;
--
--	if (!(kbd = kmalloc(sizeof(struct hil_kbd), GFP_KERNEL))) return;
-+	kbd = kmalloc(sizeof(*kbd), GFP_KERNEL);
-+	if (!kbd)
-+		return -ENOMEM;
- 	memset(kbd, 0, sizeof(struct hil_kbd));
- 
- 	if (serio_open(serio, drv)) goto bail0;
- 
--	serio->private = kbd;
-+	serio_set_drvdata(serio, kbd);
- 	kbd->serio = serio;
- 	kbd->dev.private = kbd;
- 
-@@ -342,19 +342,31 @@
- 	down(&(kbd->sem));
- 	up(&(kbd->sem));
- 
--	return;
-+	return 0;
-  bail1:
- 	serio_close(serio);
-  bail0:
- 	kfree(kbd);
-+	serio_set_drvdata(serio, NULL);
-+	return -EIO;
- }
- 
-+static struct serio_device_id hil_kbd_ids[] = {
-+	{
-+		.type = SERIO_HIL_MLC,
-+		.proto = SERIO_HIL,
-+		.id = SERIO_ANY,
-+		.extra = SERIO_ANY,
-+	},
-+	{ 0 }
-+};
- 
- struct serio_driver hil_kbd_serio_drv = {
- 	.driver		= {
- 		.name	= "hil_kbd",
- 	},
- 	.description	= "HP HIL keyboard driver",
-+	.id_table	= hil_kbd_ids,
- 	.connect 	= hil_kbd_connect,
- 	.disconnect 	= hil_kbd_disconnect,
- 	.interrupt 	= hil_kbd_interrupt
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/input/keyboard/hilkbd.c CVS2_6_14_PA0/drivers/input/keyboard/hilkbd.c
---- LINUS_2_6_14/drivers/input/keyboard/hilkbd.c	2005-10-27 21:30:37.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/input/keyboard/hilkbd.c	2005-09-14 07:17:49.000000000 -0600
-@@ -22,7 +22,7 @@
- #include <linux/errno.h>
- #include <linux/input.h>
- #include <linux/init.h>
--#include <linux/irq.h>
-+#include <linux/interrupt.h>
- #include <linux/hil.h>
- #include <linux/spinlock.h>
- 
-@@ -278,11 +278,11 @@
- hil_init_chip(struct parisc_device *dev)
- {
- 	if (!dev->irq) {
--		printk(KERN_WARNING "HIL: IRQ not found for HIL bus at 0x%08lx\n", dev->hpa);
-+		printk(KERN_WARNING "HIL: IRQ not found for HIL bus at 0x%08lx\n", dev->hpa.start);
- 		return -ENODEV;
- 	}
- 
--	hil_base = dev->hpa;
-+	hil_base = dev->hpa.start;
- 	hil_irq  = dev->irq;
- 	hil_dev.dev_id = dev;
- 	
-@@ -299,7 +299,7 @@
- MODULE_DEVICE_TABLE(parisc, hil_tbl);
- 
- static struct parisc_driver hil_driver = {
--	.name =		"HIL",
-+	.name =		"hil",
- 	.id_table =	hil_tbl,
- 	.probe =	hil_init_chip,
- };
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/input/mouse/hil_ptr.c CVS2_6_14_PA0/drivers/input/mouse/hil_ptr.c
---- LINUS_2_6_14/drivers/input/mouse/hil_ptr.c	2005-10-27 21:30:37.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/input/mouse/hil_ptr.c	2005-03-25 22:00:10.000000000 -0700
-@@ -196,7 +196,7 @@
- 	hil_packet packet;
- 	int idx;
- 
--	ptr = (struct hil_ptr *)serio->private;
-+	ptr = serio_get_drvdata(serio);
- 	if (ptr == NULL) {
- 		BUG();
- 		return IRQ_HANDLED;
-@@ -227,7 +227,7 @@
- {
- 	struct hil_ptr *ptr;
- 
--	ptr = (struct hil_ptr *)serio->private;
-+	ptr = serio_get_drvdata(serio);
- 	if (ptr == NULL) {
- 		BUG();
- 		return;
-@@ -238,21 +238,19 @@
- 	kfree(ptr);
- }
- 
--static void hil_ptr_connect(struct serio *serio, struct serio_driver *driver)
-+static int hil_ptr_connect(struct serio *serio, struct serio_driver *driver)
- {
- 	struct hil_ptr	*ptr;
- 	char		*txt;
- 	unsigned int	i, naxsets, btntype;
- 	uint8_t		did, *idd;
- 
--	if (serio->type != (SERIO_HIL_MLC | SERIO_HIL)) return;
--
--	if (!(ptr = kmalloc(sizeof(struct hil_ptr), GFP_KERNEL))) return;
-+	if (!(ptr = kmalloc(sizeof(struct hil_ptr), GFP_KERNEL))) return -ENOMEM;
- 	memset(ptr, 0, sizeof(struct hil_ptr));
- 
- 	if (serio_open(serio, driver)) goto bail0;
- 
--	serio->private = ptr;
-+	serio_set_drvdata(serio, ptr);
- 	ptr->serio = serio;
- 	ptr->dev.private = ptr;
- 
-@@ -380,23 +378,34 @@
- 		(btntype == BTN_MOUSE) ? "HIL mouse":"HIL tablet or touchpad",
- 		did);
- 
--	return;
-+	return 0;
-  bail1:
- 	serio_close(serio);
-  bail0:
- 	kfree(ptr);
--	return;
-+	serio_set_drvdata(serio, NULL);
-+	return -ENODEV;
- }
- 
-+static struct serio_device_id hil_ptr_ids[] = {
-+	{
-+		.type = SERIO_HIL_MLC,
-+		.proto = SERIO_HIL,
-+		.id = SERIO_ANY,
-+		.extra = SERIO_ANY,
-+	},
-+	{ 0 }
-+};
- 
- static struct serio_driver hil_ptr_serio_driver = {
- 	.driver		= {
- 		.name	= "hil_ptr",
- 	},
- 	.description	= "HP HIL mouse/tablet driver",
--	.connect =	hil_ptr_connect,
--	.disconnect =	hil_ptr_disconnect,
--	.interrupt =	hil_ptr_interrupt
-+	.id_table	= hil_ptr_ids,
-+	.connect	= hil_ptr_connect,
-+	.disconnect	= hil_ptr_disconnect,
-+	.interrupt	= hil_ptr_interrupt
- };
- 
- static int __init hil_ptr_init(void)
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/input/serio/gscps2.c CVS2_6_14_PA0/drivers/input/serio/gscps2.c
---- LINUS_2_6_14/drivers/input/serio/gscps2.c	2005-10-27 21:30:38.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/input/serio/gscps2.c	2005-09-14 07:17:52.000000000 -0600
-@@ -211,9 +211,6 @@
- 	writeb(0xff, addr+GSC_RESET);
- 	gscps2_flush(ps2port);
- 	spin_unlock_irqrestore(&ps2port->lock, flags);
--
--	/* enable it */
--	gscps2_enable(ps2port, ENABLE);
- }
- 
- static LIST_HEAD(ps2port_list);
-@@ -307,6 +304,9 @@
- 
- 	gscps2_reset(ps2port);
- 
-+	/* enable it */
-+	gscps2_enable(ps2port, ENABLE);
 +
- 	gscps2_interrupt(0, NULL, NULL);
- 
- 	return 0;
-@@ -331,7 +331,7 @@
- {
- 	struct gscps2port *ps2port;
- 	struct serio *serio;
--	unsigned long hpa = dev->hpa;
-+	unsigned long hpa = dev->hpa.start;
- 	int ret;
- 
- 	if (!dev->irq)
-@@ -370,8 +370,6 @@
- 	serio->port_data	= ps2port;
- 	serio->dev.parent	= &dev->dev;
- 
--	list_add_tail(&ps2port->node, &ps2port_list);
--
- 	ret = -EBUSY;
- 	if (request_irq(dev->irq, gscps2_interrupt, SA_SHIRQ, ps2port->port->name, ps2port))
- 		goto fail_miserably;
-@@ -396,15 +394,16 @@
- 
- 	serio_register_port(ps2port->port);
- 
-+	list_add_tail(&ps2port->node, &ps2port_list);
++/*
++**	Other parameters not configurable with "make config"
++**	Avoid to change these constants, unless you know what you are doing.
++*/
++
++#define SCSI_NCR_ALWAYS_SIMPLE_TAG
++#define SCSI_NCR_MAX_SCATTER	(127)
++#define SCSI_NCR_MAX_TARGET	(16)
 +
- 	return 0;
- 
- fail:
- 	free_irq(dev->irq, ps2port);
- 
- fail_miserably:
--	list_del(&ps2port->node);
- 	iounmap(ps2port->addr);
--	release_mem_region(dev->hpa, GSC_STATUS + 4);
-+	release_mem_region(dev->hpa.start, GSC_STATUS + 4);
- 
- fail_nomem:
- 	kfree(ps2port);
-@@ -444,7 +443,7 @@
- };
- 
- static struct parisc_driver parisc_ps2_driver = {
--	.name		= "GSC PS2",
-+	.name		= "gsc_ps2",
- 	.id_table	= gscps2_device_tbl,
- 	.probe		= gscps2_probe,
- 	.remove		= gscps2_remove,
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/input/serio/hil_mlc.c CVS2_6_14_PA0/drivers/input/serio/hil_mlc.c
---- LINUS_2_6_14/drivers/input/serio/hil_mlc.c	2005-10-27 21:30:38.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/input/serio/hil_mlc.c	2005-04-04 14:46:50.000000000 -0600
-@@ -801,7 +801,8 @@
- 	struct hil_mlc_serio_map *map;
- 	struct hil_mlc *mlc;
- 
--	if (serio->private != NULL) return -EBUSY;
-+	if (serio_get_drvdata(serio) != NULL)
-+		return -EBUSY;
- 
- 	map = serio->port_data;
- 	if (map == NULL) {
-@@ -832,11 +833,18 @@
- 		return;
- 	}
- 
--	serio->private = NULL;
-+	serio_set_drvdata(serio, NULL);
- 	serio->drv = NULL;
- 	/* TODO wake up interruptable */
- }
- 
-+static struct serio_device_id hil_mlc_serio_id = {
-+	.type = SERIO_HIL_MLC,
-+	.proto = SERIO_HIL,
-+	.extra = SERIO_ANY,
-+	.id = SERIO_ANY,
-+};
++/*
++**   Compute some desirable value for CAN_QUEUE 
++**   and CMD_PER_LUN.
++**   The driver will use lower values if these 
++**   ones appear to be too large.
++*/
++#define SCSI_NCR_CAN_QUEUE	(8*SCSI_NCR_MAX_TAGS + 2*SCSI_NCR_MAX_TARGET)
++#define SCSI_NCR_CMD_PER_LUN	(SCSI_NCR_MAX_TAGS)
 +
- int hil_mlc_register(hil_mlc *mlc) {
- 	int i;
-         unsigned long flags;
-@@ -867,7 +875,7 @@
- 		mlc_serio = kmalloc(sizeof(*mlc_serio), GFP_KERNEL);
- 		mlc->serio[i] = mlc_serio;
- 		memset(mlc_serio, 0, sizeof(*mlc_serio));
--		mlc_serio->type			= SERIO_HIL | SERIO_HIL_MLC;
-+		mlc_serio->id			= hil_mlc_serio_id;
- 		mlc_serio->write		= hil_mlc_serio_write;
- 		mlc_serio->open			= hil_mlc_serio_open;
- 		mlc_serio->close		= hil_mlc_serio_close;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/input/serio/hp_sdc.c CVS2_6_14_PA0/drivers/input/serio/hp_sdc.c
---- LINUS_2_6_14/drivers/input/serio/hp_sdc.c	2005-10-27 21:30:38.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/input/serio/hp_sdc.c	2005-09-14 07:17:52.000000000 -0600
-@@ -764,7 +764,7 @@
- static int __init hp_sdc_init_hppa(struct parisc_device *d);
- 
- static struct parisc_driver hp_sdc_driver = {
--	.name =		"HP SDC",
-+	.name =		"hp_sdc",
- 	.id_table =	hp_sdc_tbl,
- 	.probe =	hp_sdc_init_hppa,
- };
-@@ -875,9 +875,9 @@
- 	hp_sdc.dev		= d;
- 	hp_sdc.irq		= d->irq;
- 	hp_sdc.nmi		= d->aux_irq;
--	hp_sdc.base_io		= d->hpa;
--	hp_sdc.data_io		= d->hpa + 0x800;
--	hp_sdc.status_io	= d->hpa + 0x801;
-+	hp_sdc.base_io		= d->hpa.start;
-+	hp_sdc.data_io		= d->hpa.start + 0x800;
-+	hp_sdc.status_io	= d->hpa.start + 0x801;
- 
- 	return hp_sdc_init();
- }
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/isdn/hisax/Kconfig CVS2_6_14_PA0/drivers/isdn/hisax/Kconfig
---- LINUS_2_6_14/drivers/isdn/hisax/Kconfig	2005-10-27 21:30:38.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/isdn/hisax/Kconfig	2005-08-28 20:41:03.000000000 -0600
-@@ -110,7 +110,7 @@
- 
- config HISAX_TELESPCI
- 	bool "Teles PCI"
--	depends on PCI && (BROKEN || !(SPARC64 || PPC))
-+	depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K))
- 	help
- 	  This enables HiSax support for the Teles PCI.
- 	  See <file:Documentation/isdn/README.HiSax> on how to configure it.
-@@ -238,7 +238,7 @@
- 
- config HISAX_NETJET
- 	bool "NETjet card"
--	depends on PCI && (BROKEN || !(SPARC64 || PPC))
-+	depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K))
- 	help
- 	  This enables HiSax support for the NetJet from Traverse
- 	  Technologies.
-@@ -249,7 +249,7 @@
- 
- config HISAX_NETJET_U
- 	bool "NETspider U card"
--	depends on PCI && (BROKEN || !(SPARC64 || PPC))
-+	depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K))
- 	help
- 	  This enables HiSax support for the Netspider U interface ISDN card
- 	  from Traverse Technologies.
-@@ -317,7 +317,7 @@
- 
- config HISAX_HFC_PCI
- 	bool "HFC PCI-Bus cards"
--	depends on PCI && (BROKEN || !(SPARC64 || PPC))
-+	depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K))
- 	help
- 	  This enables HiSax support for the HFC-S PCI 2BDS0 based cards.
- 
-@@ -344,14 +344,14 @@
- 
- config HISAX_ENTERNOW_PCI
- 	bool "Formula-n enter:now PCI card"
--	depends on PCI && (BROKEN || !(SPARC64 || PPC))
-+	depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K))
- 	help
- 	  This enables HiSax support for the Formula-n enter:now PCI
- 	  ISDN card.
- 
- config HISAX_AMD7930
- 	bool "Am7930 (EXPERIMENTAL)"
--	depends on EXPERIMENTAL && (SPARC32 || SPARC64)
-+	depends on EXPERIMENTAL && SPARC
- 	help
- 	  This enables HiSax support for the AMD7930 chips on some SPARCs.
- 	  This code is not finished yet.
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/isdn/pcbit/Kconfig CVS2_6_14_PA0/drivers/isdn/pcbit/Kconfig
---- LINUS_2_6_14/drivers/isdn/pcbit/Kconfig	2005-10-27 21:30:38.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/isdn/pcbit/Kconfig	2005-03-07 08:07:30.000000000 -0700
-@@ -3,7 +3,7 @@
- #
- config ISDN_DRV_PCBIT
- 	tristate "PCBIT-D support"
--	depends on ISDN_I4L && ISA && (BROKEN || !PPC)
-+	depends on ISDN_I4L && ISA && (BROKEN || X86)
- 	help
- 	  This enables support for the PCBIT ISDN-card.  This card is
- 	  manufactured in Portugal by Octal.  For running this card,
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/net/lasi_82596.c CVS2_6_14_PA0/drivers/net/lasi_82596.c
---- LINUS_2_6_14/drivers/net/lasi_82596.c	2005-10-27 21:30:39.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/net/lasi_82596.c	2005-09-10 12:21:47.000000000 -0600
-@@ -415,6 +415,10 @@
- static int ticks_limit = 100;
- static int max_cmd_backlog = TX_RING_SIZE-1;
- 
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+static void i596_poll_controller(struct net_device *dev);
++#define SCSI_NCR_SG_TABLESIZE	(SCSI_NCR_MAX_SCATTER)
++#define SCSI_NCR_TIMER_INTERVAL	(HZ)
++
++#if 1 /* defined CONFIG_SCSI_MULTI_LUN */
++#define SCSI_NCR_MAX_LUN	(16)
++#else
++#define SCSI_NCR_MAX_LUN	(1)
 +#endif
 +
- 
- static inline void CA(struct net_device *dev)
- {
-@@ -636,11 +640,11 @@
- 
- 	disable_irq(dev->irq);	/* disable IRQs from LAN */
- 	DEB(DEB_INIT,
--		printk("RESET 82596 port: %p (with IRQ %d disabled)\n",
--		       (void*)(dev->base_addr + PA_I82596_RESET),
-+		printk("RESET 82596 port: %lx (with IRQ %d disabled)\n",
-+		       (dev->base_addr + PA_I82596_RESET),
- 		       dev->irq));
- 	
--	gsc_writel(0, (void*)(dev->base_addr + PA_I82596_RESET)); /* Hard Reset */
-+	gsc_writel(0, (dev->base_addr + PA_I82596_RESET)); /* Hard Reset */
- 	udelay(100);			/* Wait 100us - seems to help */
- 
- 	/* change the scp address */
-@@ -1209,6 +1213,9 @@
- 	dev->set_multicast_list = set_multicast_list;
- 	dev->tx_timeout = i596_tx_timeout;
- 	dev->watchdog_timeo = TX_TIMEOUT;
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+	dev->poll_controller = i596_poll_controller;
++/*
++ *  IO functions definition for big/little endian CPU support.
++ *  For now, the NCR is only supported in little endian addressing mode, 
++ */
++
++#ifdef	__BIG_ENDIAN
++
++#define	inw_l2b		inw
++#define	inl_l2b		inl
++#define	outw_b2l	outw
++#define	outl_b2l	outl
++
++#define	readb_raw	readb
++#define	writeb_raw	writeb
++
++#if defined(SCSI_NCR_BIG_ENDIAN)
++#define	readw_l2b	__raw_readw
++#define	readl_l2b	__raw_readl
++#define	writew_b2l	__raw_writew
++#define	writel_b2l	__raw_writel
++#define	readw_raw	__raw_readw
++#define	readl_raw	__raw_readl
++#define	writew_raw	__raw_writew
++#define	writel_raw	__raw_writel
++#else	/* Other big-endian */
++#define	readw_l2b	readw
++#define	readl_l2b	readl
++#define	writew_b2l	writew
++#define	writel_b2l	writel
++#define	readw_raw	readw
++#define	readl_raw	readl
++#define	writew_raw	writew
++#define	writel_raw	writel
++#endif
++
++#else	/* little endian */
++
++#define	inw_raw		inw
++#define	inl_raw		inl
++#define	outw_raw	outw
++#define	outl_raw	outl
++
++#define	readb_raw	readb
++#define	readw_raw	readw
++#define	readl_raw	readl
++#define	writeb_raw	writeb
++#define	writew_raw	writew
++#define	writel_raw	writel
++
++#endif
++
++#if !defined(__hppa__) && !defined(__mips__)
++#ifdef	SCSI_NCR_BIG_ENDIAN
++#error	"The NCR in BIG ENDIAN addressing mode is not (yet) supported"
 +#endif
- 
- 	dev->priv = (void *)(dev->mem_start);
- 
-@@ -1242,6 +1249,14 @@
- 	return 0;
- }
- 
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+static void i596_poll_controller(struct net_device *dev)
-+{
-+	disable_irq(dev->irq);
-+	i596_interrupt(dev->irq, dev, NULL);
-+	enable_irq(dev->irq);
-+}
 +#endif
- 
- static irqreturn_t i596_interrupt(int irq, void *dev_id, struct pt_regs *regs)
- {
-@@ -1528,17 +1543,18 @@
- 	
- 	if (!dev->irq) {
- 		printk(KERN_ERR "%s: IRQ not found for i82596 at 0x%lx\n",
--			__FILE__, dev->hpa);
-+			__FILE__, dev->hpa.start);
- 		return -ENODEV;
- 	}
- 
--	printk(KERN_INFO "Found i82596 at 0x%lx, IRQ %d\n", dev->hpa, dev->irq);
-+	printk(KERN_INFO "Found i82596 at 0x%lx, IRQ %d\n", dev->hpa.start,
-+			dev->irq);
- 
- 	netdevice = alloc_etherdev(0);
- 	if (!netdevice)
- 		return -ENOMEM;
- 
--	netdevice->base_addr = dev->hpa;
-+	netdevice->base_addr = dev->hpa.start;
- 	netdevice->irq = dev->irq;
- 
- 	retval = i82596_probe(netdevice, &dev->dev);
-@@ -1566,7 +1582,7 @@
- MODULE_DEVICE_TABLE(parisc, lan_tbl);
- 
- static struct parisc_driver lan_driver = {
--	.name		= "Apricot",
-+	.name		= "lasi_82596",
- 	.id_table	= lan_tbl,
- 	.probe		= lan_init_chip,
- };
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/net/tulip/media.c CVS2_6_14_PA0/drivers/net/tulip/media.c
---- LINUS_2_6_14/drivers/net/tulip/media.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/net/tulip/media.c	2005-09-14 06:56:25.000000000 -0600
-@@ -44,8 +44,10 @@
- 
- /* MII transceiver control section.
-    Read and write the MII registers using software-generated serial
--   MDIO protocol.  See the MII specifications or DP83840A data sheet
--   for details. */
-+   MDIO protocol.
-+   See IEEE 802.3-2002.pdf (Section 2, Chapter "22.2.4 Management functions")
-+   or DP83840A data sheet for more details.
-+   */
- 
- int tulip_mdio_read(struct net_device *dev, int phy_id, int location)
- {
-@@ -261,24 +263,56 @@
- 				u16 *reset_sequence = &((u16*)(p+3))[init_length];
- 				int reset_length = p[2 + init_length*2];
- 				misc_info = reset_sequence + reset_length;
--				if (startup)
-+				if (startup) {
-+					int timeout = 10;	/* max 1 ms */
- 					for (i = 0; i < reset_length; i++)
- 						iowrite32(get_u16(&reset_sequence[i]) << 16, ioaddr + CSR15);
-+				
-+					/* flush posted writes */
-+					ioread32(ioaddr + CSR15);
 +
-+					/* Sect 3.10.3 in DP83840A.pdf (p39) */
-+					udelay(500);
++#define MEMORY_BARRIER()	mb()
 +
-+					/* Section 4.2 in DP83840A.pdf (p43) */
-+					/* and IEEE 802.3 "22.2.4.1.1 Reset" */
-+					while (timeout-- &&
-+						(tulip_mdio_read (dev, phy_num, MII_BMCR) & BMCR_RESET))
-+						udelay(100);
-+				}
- 				for (i = 0; i < init_length; i++)
- 					iowrite32(get_u16(&init_sequence[i]) << 16, ioaddr + CSR15);
 +
-+				ioread32(ioaddr + CSR15);	/* flush posted writes */
- 			} else {
- 				u8 *init_sequence = p + 2;
- 				u8 *reset_sequence = p + 3 + init_length;
- 				int reset_length = p[2 + init_length];
- 				misc_info = (u16*)(reset_sequence + reset_length);
- 				if (startup) {
-+					int timeout = 10;	/* max 1 ms */
- 					iowrite32(mtable->csr12dir | 0x100, ioaddr + CSR12);
- 					for (i = 0; i < reset_length; i++)
- 						iowrite32(reset_sequence[i], ioaddr + CSR12);
++/*
++ *  If the NCR uses big endian addressing mode over the 
++ *  PCI, actual io register addresses for byte and word 
++ *  accesses must be changed according to lane routing.
++ *  Btw, ncr_offb() and ncr_offw() macros only apply to 
++ *  constants and so donnot generate bloated code.
++ */
 +
-+					/* flush posted writes */
-+					ioread32(ioaddr + CSR12);
++#if	defined(SCSI_NCR_BIG_ENDIAN)
 +
-+					/* Sect 3.10.3 in DP83840A.pdf (p39) */
-+					udelay(500);
++#define ncr_offb(o)	(((o)&~3)+((~((o)&3))&3))
++#define ncr_offw(o)	(((o)&~3)+((~((o)&3))&2))
 +
-+					/* Section 4.2 in DP83840A.pdf (p43) */
-+					/* and IEEE 802.3 "22.2.4.1.1 Reset" */
-+					while (timeout-- &&
-+						(tulip_mdio_read (dev, phy_num, MII_BMCR) & BMCR_RESET))
-+						udelay(100);
- 				}
- 				for (i = 0; i < init_length; i++)
- 					iowrite32(init_sequence[i], ioaddr + CSR12);
++#else
 +
-+				ioread32(ioaddr + CSR12);	/* flush posted writes */
- 			}
++#define ncr_offb(o)	(o)
++#define ncr_offw(o)	(o)
 +
- 			tmp_info = get_u16(&misc_info[1]);
- 			if (tmp_info)
- 				tp->advertising[phy_num] = tmp_info | 1;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/net/tulip/tulip.h CVS2_6_14_PA0/drivers/net/tulip/tulip.h
---- LINUS_2_6_14/drivers/net/tulip/tulip.h	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/net/tulip/tulip.h	2005-09-14 06:56:25.000000000 -0600
-@@ -474,8 +474,11 @@
- 			udelay(10);
- 
- 		if (!i)
--			printk(KERN_DEBUG "%s: tulip_stop_rxtx() failed\n",
--					pci_name(tp->pdev));
-+			printk(KERN_DEBUG "%s: tulip_stop_rxtx() failed"
-+					" (CSR5 0x%x CSR6 0x%x)\n",
-+					pci_name(tp->pdev),
-+					ioread32(ioaddr + CSR5),
-+					ioread32(ioaddr + CSR6));
- 	}
- }
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/net/tulip/tulip_core.c CVS2_6_14_PA0/drivers/net/tulip/tulip_core.c
---- LINUS_2_6_14/drivers/net/tulip/tulip_core.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/net/tulip/tulip_core.c	2005-09-14 06:56:25.000000000 -0600
-@@ -22,7 +22,7 @@
- #else
- #define DRV_VERSION	"1.1.13"
- #endif
--#define DRV_RELDATE	"May 11, 2002"
-+#define DRV_RELDATE	"December 15, 2004"
- 
- 
- #include <linux/module.h>
-@@ -148,7 +148,7 @@
- 	HAS_MII | HAS_MEDIA_TABLE | CSR12_IN_SROM | HAS_PCI_MWI, tulip_timer },
- 
-   /* DC21142, DC21143 */
--  { "Digital DS21143 Tulip", 128, 0x0801fbff,
-+  { "Digital DS21142/DS21143 Tulip", 128, 0x0801fbff,
- 	HAS_MII | HAS_MEDIA_TABLE | ALWAYS_CHECK_MII | HAS_ACPI | HAS_NWAY
- 	| HAS_INTR_MITIGATION | HAS_PCI_MWI, t21142_timer },
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/asp.c CVS2_6_14_PA0/drivers/parisc/asp.c
---- LINUS_2_6_14/drivers/parisc/asp.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/asp.c	2005-09-10 12:19:32.000000000 -0600
-@@ -77,12 +77,12 @@
- 	struct gsc_irq gsc_irq;
- 	int ret;
- 
--	asp.version = gsc_readb(dev->hpa + ASP_VER_OFFSET) & 0xf;
-+	asp.version = gsc_readb(dev->hpa.start + ASP_VER_OFFSET) & 0xf;
- 	asp.name = (asp.version == 1) ? "Asp" : "Cutoff";
- 	asp.hpa = ASP_INTERRUPT_ADDR;
- 
- 	printk(KERN_INFO "%s version %d at 0x%lx found.\n", 
--		asp.name, asp.version, dev->hpa);
-+		asp.name, asp.version, dev->hpa.start);
- 
- 	/* the IRQ ASP should use */
- 	ret = -EBUSY;
-@@ -126,7 +126,7 @@
- };
- 
- struct parisc_driver asp_driver = {
--	.name =		"Asp",
-+	.name =		"asp",
- 	.id_table =	asp_tbl,
- 	.probe =	asp_init_chip,
- };
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/ccio-dma.c CVS2_6_14_PA0/drivers/parisc/ccio-dma.c
---- LINUS_2_6_14/drivers/parisc/ccio-dma.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/ccio-dma.c	2005-10-14 00:02:08.000000000 -0600
-@@ -100,9 +100,9 @@
- #define DBG_RUN_SG(x...)
- #endif
- 
--#define CCIO_INLINE	/* inline */
--#define WRITE_U32(value, addr) gsc_writel(value, (u32 *)(addr))
--#define READ_U32(addr) gsc_readl((u32 *)(addr))
-+#define CCIO_INLINE	inline
-+#define WRITE_U32(value, addr) __raw_writel(value, addr)
-+#define READ_U32(addr) __raw_readl(addr)
- 
- #define U2_IOA_RUNWAY 0x580
- #define U2_BC_GSC     0x501
-@@ -115,28 +115,28 @@
- 
- struct ioa_registers {
-         /* Runway Supervisory Set */
--        volatile int32_t    unused1[12];
--        volatile uint32_t   io_command;             /* Offset 12 */
--        volatile uint32_t   io_status;              /* Offset 13 */
--        volatile uint32_t   io_control;             /* Offset 14 */
--        volatile int32_t    unused2[1];
-+        int32_t    unused1[12];
-+        uint32_t   io_command;             /* Offset 12 */
-+        uint32_t   io_status;              /* Offset 13 */
-+        uint32_t   io_control;             /* Offset 14 */
-+        int32_t    unused2[1];
- 
-         /* Runway Auxiliary Register Set */
--        volatile uint32_t   io_err_resp;            /* Offset  0 */
--        volatile uint32_t   io_err_info;            /* Offset  1 */
--        volatile uint32_t   io_err_req;             /* Offset  2 */
--        volatile uint32_t   io_err_resp_hi;         /* Offset  3 */
--        volatile uint32_t   io_tlb_entry_m;         /* Offset  4 */
--        volatile uint32_t   io_tlb_entry_l;         /* Offset  5 */
--        volatile uint32_t   unused3[1];
--        volatile uint32_t   io_pdir_base;           /* Offset  7 */
--        volatile uint32_t   io_io_low_hv;           /* Offset  8 */
--        volatile uint32_t   io_io_high_hv;          /* Offset  9 */
--        volatile uint32_t   unused4[1];
--        volatile uint32_t   io_chain_id_mask;       /* Offset 11 */
--        volatile uint32_t   unused5[2];
--        volatile uint32_t   io_io_low;              /* Offset 14 */
--        volatile uint32_t   io_io_high;             /* Offset 15 */
-+        uint32_t   io_err_resp;            /* Offset  0 */
-+        uint32_t   io_err_info;            /* Offset  1 */
-+        uint32_t   io_err_req;             /* Offset  2 */
-+        uint32_t   io_err_resp_hi;         /* Offset  3 */
-+        uint32_t   io_tlb_entry_m;         /* Offset  4 */
-+        uint32_t   io_tlb_entry_l;         /* Offset  5 */
-+        uint32_t   unused3[1];
-+        uint32_t   io_pdir_base;           /* Offset  7 */
-+        uint32_t   io_io_low_hv;           /* Offset  8 */
-+        uint32_t   io_io_high_hv;          /* Offset  9 */
-+        uint32_t   unused4[1];
-+        uint32_t   io_chain_id_mask;       /* Offset 11 */
-+        uint32_t   unused5[2];
-+        uint32_t   io_io_low;              /* Offset 14 */
-+        uint32_t   io_io_high;             /* Offset 15 */
- };
- 
- /*
-@@ -226,7 +226,7 @@
- */
- 
- struct ioc {
--	struct ioa_registers *ioc_hpa;  /* I/O MMU base address */
-+	struct ioa_registers __iomem *ioc_regs;  /* I/O MMU base address */
- 	u8  *res_map;	                /* resource map, bit == pdir entry */
- 	u64 *pdir_base;	                /* physical base address */
- 	u32 pdir_size; 			/* bytes, function of IOV Space size */
-@@ -595,7 +595,7 @@
- 	** Grab virtual index [0:11]
- 	** Deposit virt_idx bits into I/O PDIR word
- 	*/
--	asm volatile ("lci 0(%%sr1, %1), %0" : "=r" (ci) : "r" (vba));
-+	asm volatile ("lci %%r0(%%sr1, %1), %0" : "=r" (ci) : "r" (vba));
- 	asm volatile ("extru %1,19,12,%0" : "+r" (ci) : "r" (ci));
- 	asm volatile ("depw  %1,15,12,%0" : "+r" (pa) : "r" (ci));
- 
-@@ -613,7 +613,7 @@
- 	** the real mode coherence index generation of U2, the PDIR entry
- 	** must be flushed to memory to retain coherence."
- 	*/
--	asm volatile("fdc 0(%0)" : : "r" (pdir_ptr));
-+	asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr));
- 	asm volatile("sync");
- }
- 
-@@ -636,7 +636,7 @@
- 	byte_cnt += chain_size;
- 
- 	while(byte_cnt > chain_size) {
--		WRITE_U32(CMD_TLB_PURGE | iovp, &ioc->ioc_hpa->io_command);
-+		WRITE_U32(CMD_TLB_PURGE | iovp, &ioc->ioc_regs->io_command);
- 		iovp += chain_size;
- 		byte_cnt -= chain_size;
- 	}
-@@ -684,7 +684,7 @@
- 		** Hopefully someone figures out how to patch (NOP) the
- 		** FDC/SYNC out at boot time.
- 		*/
--		asm volatile("fdc 0(%0)" : : "r" (pdir_ptr[7]));
-+		asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr[7]));
- 
- 		iovp     += IOVP_SIZE;
- 		byte_cnt -= IOVP_SIZE;
-@@ -1251,7 +1251,7 @@
- static int ccio_probe(struct parisc_device *dev);
- 
- static struct parisc_driver ccio_driver = {
--	.name =		"U2:Uturn",
-+	.name =		"ccio",
- 	.id_table =	ccio_tbl,
- 	.probe =	ccio_probe,
- };
-@@ -1314,14 +1314,13 @@
- 
- 	ioc->pdir_size = (iova_space_size / IOVP_SIZE) * sizeof(u64);
- 
--	BUG_ON(ioc->pdir_size >= 4 * 1024 * 1024);   /* max pdir size < 4MB */
-+	BUG_ON(ioc->pdir_size > 8 * 1024 * 1024);   /* max pdir size <= 8MB */
- 
- 	/* Verify it's a power of two */
- 	BUG_ON((1 << get_order(ioc->pdir_size)) != (ioc->pdir_size >> PAGE_SHIFT));
- 
--	DBG_INIT("%s() hpa 0x%lx mem %luMB IOV %dMB (%d bits)\n",
--			__FUNCTION__,
--			ioc->ioc_hpa,
-+	DBG_INIT("%s() hpa 0x%p mem %luMB IOV %dMB (%d bits)\n",
-+			__FUNCTION__, ioc->ioc_regs,
- 			(unsigned long) num_physpages >> (20 - PAGE_SHIFT),
- 			iova_space_size>>20,
- 			iov_order + PAGE_SHIFT);
-@@ -1329,13 +1328,12 @@
- 	ioc->pdir_base = (u64 *)__get_free_pages(GFP_KERNEL, 
- 						 get_order(ioc->pdir_size));
- 	if(NULL == ioc->pdir_base) {
--		panic("%s:%s() could not allocate I/O Page Table\n", __FILE__,
--		      __FUNCTION__);
-+		panic("%s() could not allocate I/O Page Table\n", __FUNCTION__);
- 	}
- 	memset(ioc->pdir_base, 0, ioc->pdir_size);
- 
- 	BUG_ON((((unsigned long)ioc->pdir_base) & PAGE_MASK) != (unsigned long)ioc->pdir_base);
--	DBG_INIT(" base %p", ioc->pdir_base);
-+	DBG_INIT(" base %p\n", ioc->pdir_base);
- 
- 	/* resource map size dictated by pdir_size */
-  	ioc->res_size = (ioc->pdir_size / sizeof(u64)) >> 3;
-@@ -1344,8 +1342,7 @@
- 	ioc->res_map = (u8 *)__get_free_pages(GFP_KERNEL, 
- 					      get_order(ioc->res_size));
- 	if(NULL == ioc->res_map) {
--		panic("%s:%s() could not allocate resource map\n", __FILE__,
--		      __FUNCTION__);
-+		panic("%s() could not allocate resource map\n", __FUNCTION__);
- 	}
- 	memset(ioc->res_map, 0, ioc->res_size);
- 
-@@ -1366,44 +1363,58 @@
- 	** Initialize IOA hardware
- 	*/
- 	WRITE_U32(CCIO_CHAINID_MASK << ioc->chainid_shift, 
--		  &ioc->ioc_hpa->io_chain_id_mask);
-+		  &ioc->ioc_regs->io_chain_id_mask);
- 
- 	WRITE_U32(virt_to_phys(ioc->pdir_base), 
--		  &ioc->ioc_hpa->io_pdir_base);
-+		  &ioc->ioc_regs->io_pdir_base);
- 
- 	/*
- 	** Go to "Virtual Mode"
- 	*/
--	WRITE_U32(IOA_NORMAL_MODE, &ioc->ioc_hpa->io_control);
-+	WRITE_U32(IOA_NORMAL_MODE, &ioc->ioc_regs->io_control);
- 
- 	/*
- 	** Initialize all I/O TLB entries to 0 (Valid bit off).
- 	*/
--	WRITE_U32(0, &ioc->ioc_hpa->io_tlb_entry_m);
--	WRITE_U32(0, &ioc->ioc_hpa->io_tlb_entry_l);
-+	WRITE_U32(0, &ioc->ioc_regs->io_tlb_entry_m);
-+	WRITE_U32(0, &ioc->ioc_regs->io_tlb_entry_l);
- 
- 	for(i = 1 << CCIO_CHAINID_SHIFT; i ; i--) {
- 		WRITE_U32((CMD_TLB_DIRECT_WRITE | (i << ioc->chainid_shift)),
--			  &ioc->ioc_hpa->io_command);
-+			  &ioc->ioc_regs->io_command);
- 	}
- }
- 
- static void
--ccio_init_resource(struct resource *res, char *name, unsigned long ioaddr)
-+ccio_init_resource(struct resource *res, char *name, void __iomem *ioaddr)
- {
- 	int result;
- 
- 	res->parent = NULL;
- 	res->flags = IORESOURCE_MEM;
--	res->start = (unsigned long)(signed) __raw_readl(ioaddr) << 16;
--	res->end = (unsigned long)(signed) (__raw_readl(ioaddr + 4) << 16) - 1;
-+	/*
-+	 * bracing ((signed) ...) are required for 64bit kernel because
-+	 * we only want to sign extend the lower 16 bits of the register.
-+	 * The upper 16-bits of range registers are hardcoded to 0xffff.
-+	 */
-+	res->start = (unsigned long)((signed) READ_U32(ioaddr) << 16);
-+	res->end = (unsigned long)((signed) (READ_U32(ioaddr + 4) << 16) - 1);
- 	res->name = name;
-+	/*
-+	 * Check if this MMIO range is disable
-+	 */
- 	if (res->end + 1 == res->start)
- 		return;
--	result = request_resource(&iomem_resource, res);
++#endif
 +
-+	/* On some platforms (e.g. K-Class), we have already registered
-+	 * resources for devices reported by firmware. Some are children
-+	 * of ccio.
-+	 * "insert" ccio ranges in the mmio hierarchy (/proc/iomem).
-+	 */
-+	result = insert_resource(&iomem_resource, res);
- 	if (result < 0) {
--		printk(KERN_ERR "%s: failed to claim CCIO bus address space (%08lx,%08lx)\n", 
--		       __FILE__, res->start, res->end);
-+		printk(KERN_ERR "%s() failed to claim CCIO bus address space (%08lx,%08lx)\n", 
-+	 		__FUNCTION__, res->start, res->end);
- 	}
- }
- 
-@@ -1414,9 +1425,8 @@
- 
- 	sprintf(name, "GSC Bus [%d/]", ioc->hw_path);
- 
--	ccio_init_resource(res, name, (unsigned long)&ioc->ioc_hpa->io_io_low);
--	ccio_init_resource(res + 1, name,
--			(unsigned long)&ioc->ioc_hpa->io_io_low_hv);
-+	ccio_init_resource(res, name, &ioc->ioc_regs->io_io_low);
-+	ccio_init_resource(res + 1, name, &ioc->ioc_regs->io_io_low_hv);
- }
- 
- static int new_ioc_area(struct resource *res, unsigned long size,
-@@ -1427,7 +1437,12 @@
- 
- 	res->start = (max - size + 1) &~ (align - 1);
- 	res->end = res->start + size;
--	if (!request_resource(&iomem_resource, res))
-+	
-+	/* We might be trying to expand the MMIO range to include
-+	 * a child device that has already registered it's MMIO space.
-+	 * Use "insert" instead of request_resource().
-+	 */
-+	if (!insert_resource(&iomem_resource, res))
- 		return 0;
- 
- 	return new_ioc_area(res, size, min, max - size, align);
-@@ -1486,15 +1501,15 @@
- 
- 	if (!expand_ioc_area(parent, size, min, max, align)) {
- 		__raw_writel(((parent->start)>>16) | 0xffff0000,
--			     (unsigned long)&(ioc->ioc_hpa->io_io_low));
-+			     &ioc->ioc_regs->io_io_low);
- 		__raw_writel(((parent->end)>>16) | 0xffff0000,
--			     (unsigned long)&(ioc->ioc_hpa->io_io_high));
-+			     &ioc->ioc_regs->io_io_high);
- 	} else if (!expand_ioc_area(parent + 1, size, min, max, align)) {
- 		parent++;
- 		__raw_writel(((parent->start)>>16) | 0xffff0000,
--			     (unsigned long)&(ioc->ioc_hpa->io_io_low_hv));
-+			     &ioc->ioc_regs->io_io_low_hv);
- 		__raw_writel(((parent->end)>>16) | 0xffff0000,
--			     (unsigned long)&(ioc->ioc_hpa->io_io_high_hv));
-+			     &ioc->ioc_regs->io_io_high_hv);
- 	} else {
- 		return -EBUSY;
- 	}
-@@ -1521,7 +1536,12 @@
- 		return -EBUSY;
- 	}
- 
--	return request_resource(parent, res);
-+	/* "transparent" bus bridges need to register MMIO resources
-+	 * firmware assigned them. e.g. children of hppb.c (e.g. K-class)
-+	 * registered their resources in the PDC "bus walk" (See
-+	 * arch/parisc/kernel/inventory.c).
-+	 */
-+	return insert_resource(parent, res);
- }
- 
- /**
-@@ -1546,7 +1566,7 @@
- 
- 	ioc->name = dev->id.hversion == U2_IOA_RUNWAY ? "U2" : "UTurn";
- 
--	printk(KERN_INFO "Found %s at 0x%lx\n", ioc->name, dev->hpa);
-+	printk(KERN_INFO "Found %s at 0x%lx\n", ioc->name, dev->hpa.start);
- 
- 	for (i = 0; i < ioc_count; i++) {
- 		ioc_p = &(*ioc_p)->next;
-@@ -1554,7 +1574,7 @@
- 	*ioc_p = ioc;
- 
- 	ioc->hw_path = dev->hw_path;
--	ioc->ioc_hpa = (struct ioa_registers *)dev->hpa;
-+	ioc->ioc_regs = ioremap(dev->hpa.start, 4096);
- 	ccio_ioc_init(ioc);
- 	ccio_init_resources(ioc);
- 	hppa_dma_ops = &ccio_ops;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/ccio-rm-dma.c CVS2_6_14_PA0/drivers/parisc/ccio-rm-dma.c
---- LINUS_2_6_14/drivers/parisc/ccio-rm-dma.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/ccio-rm-dma.c	2005-09-10 12:19:32.000000000 -0600
-@@ -167,7 +167,7 @@
- {
- 	printk(KERN_INFO "%s found %s at 0x%lx\n", MODULE_NAME,
- 			dev->id.hversion == U2_BC_GSC ? "U2" : "UTurn",
--			dev->hpa);
-+			dev->hpa.start);
- 
- /*
- ** FIXME - should check U2 registers to verify it's really running
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/dino.c CVS2_6_14_PA0/drivers/parisc/dino.c
---- LINUS_2_6_14/drivers/parisc/dino.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/dino.c	2005-09-10 21:55:28.000000000 -0600
-@@ -178,6 +178,8 @@
- 	void __iomem *base_addr = d->hba.base_addr;
- 	unsigned long flags;
- 
-+	DBG("%s: %p, %d, %d, %d\n", __FUNCTION__, base_addr, devfn, where,
-+									size);
- 	spin_lock_irqsave(&d->dinosaur_pen, flags);
- 
- 	/* tell HW which CFG address */
-@@ -211,6 +213,8 @@
- 	void __iomem *base_addr = d->hba.base_addr;
- 	unsigned long flags;
- 
-+	DBG("%s: %p, %d, %d, %d\n", __FUNCTION__, base_addr, devfn, where,
-+									size);
- 	spin_lock_irqsave(&d->dinosaur_pen, flags);
- 
- 	/* avoid address stepping feature */
-@@ -295,7 +299,7 @@
- 	struct dino_device *dino_dev = irq_desc[irq].handler_data;
- 	int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq);
- 
--	DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, irq_dev, irq);
-+	DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);
- 
- 	/* Clear the matching bit in the IMR register */
- 	dino_dev->imr &= ~(DINO_MASK_IRQ(local_irq));
-@@ -308,7 +312,7 @@
- 	int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq);
- 	u32 tmp;
- 
--	DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, irq_dev, irq);
-+	DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);
- 
- 	/*
- 	** clear pending IRQ bits
-@@ -490,7 +494,7 @@
- 		if (res->start == F_EXTEND(0xf0000000UL | (i * _8MB)))
- 			break;
- 	}
--	DBG("DINO GSC WRITE i=%d, start=%lx, dino addr = %lx\n",
-+	DBG("DINO GSC WRITE i=%d, start=%lx, dino addr = %p\n",
- 	    i, res->start, base_addr + DINO_IO_ADDR_EN);
- 	__raw_writel(1 << i, base_addr + DINO_IO_ADDR_EN);
- }
-@@ -683,6 +687,14 @@
- dino_card_init(struct dino_device *dino_dev)
- {
- 	u32 brdg_feat = 0x00784e05;
-+	unsigned long status;
-+
-+	status = __raw_readl(dino_dev->hba.base_addr+DINO_IO_STATUS);
-+	if (status & 0x0000ff80) {
-+		__raw_writel(0x00000005,
-+				dino_dev->hba.base_addr+DINO_IO_COMMAND);
-+		udelay(1);
-+	}
- 
- 	__raw_writel(0x00000000, dino_dev->hba.base_addr+DINO_GMASK);
- 	__raw_writel(0x00000001, dino_dev->hba.base_addr+DINO_IO_FBB_EN);
-@@ -902,15 +914,15 @@
- ** If so, initialize the chip appropriately (card-mode vs bridge mode).
- ** Much of the initialization is common though.
- */
--static int __init
--dino_driver_callback(struct parisc_device *dev)
-+static int __init dino_probe(struct parisc_device *dev)
- {
- 	struct dino_device *dino_dev;	// Dino specific control struct
- 	const char *version = "unknown";
- 	char *name;
- 	int is_cujo = 0;
- 	struct pci_bus *bus;
--	
-+	unsigned long hpa = dev->hpa.start;
++/*
++ *  If the CPU and the NCR use same endian-ness addressing,
++ *  no byte reordering is needed for script patching.
++ *  Macro cpu_to_scr() is to be used for script patching.
++ *  Macro scr_to_cpu() is to be used for getting a DWORD 
++ *  from the script.
++ */
 +
- 	name = "Dino";
- 	if (is_card_dino(&dev->id)) {
- 		version = "3.x (card mode)";
-@@ -928,11 +940,11 @@
- 		}
- 	}
- 
--	printk("%s version %s found at 0x%lx\n", name, version, dev->hpa);
-+	printk("%s version %s found at 0x%lx\n", name, version, hpa);
- 
--	if (!request_mem_region(dev->hpa, PAGE_SIZE, name)) {
-+	if (!request_mem_region(hpa, PAGE_SIZE, name)) {
- 		printk(KERN_ERR "DINO: Hey! Someone took my MMIO space (0x%ld)!\n",
--			dev->hpa);
-+			hpa);
- 		return 1;
- 	}
- 
-@@ -940,12 +952,12 @@
- 	if (is_cujo && dev->id.hversion_rev == 1) {
- #ifdef CONFIG_IOMMU_CCIO
- 		printk(KERN_WARNING "Enabling Cujo 2.0 bug workaround\n");
--		if (dev->hpa == (unsigned long)CUJO_RAVEN_ADDR) {
-+		if (hpa == (unsigned long)CUJO_RAVEN_ADDR) {
- 			ccio_cujo20_fixup(dev, CUJO_RAVEN_BADPAGE);
--		} else if (dev->hpa == (unsigned long)CUJO_FIREHAWK_ADDR) {
-+		} else if (hpa == (unsigned long)CUJO_FIREHAWK_ADDR) {
- 			ccio_cujo20_fixup(dev, CUJO_FIREHAWK_BADPAGE);
- 		} else {
--			printk("Don't recognise Cujo at address 0x%lx, not enabling workaround\n", dev->hpa);
-+			printk("Don't recognise Cujo at address 0x%lx, not enabling workaround\n", hpa);
- 		}
- #endif
- 	} else if (!is_cujo && !is_card_dino(&dev->id) &&
-@@ -970,7 +982,7 @@
- 	memset(dino_dev, 0, sizeof(struct dino_device));
- 
- 	dino_dev->hba.dev = dev;
--	dino_dev->hba.base_addr = ioremap(dev->hpa, 4096); /* faster access */
-+	dino_dev->hba.base_addr = ioremap(hpa, 4096);
- 	dino_dev->hba.lmmio_space_offset = 0;	/* CPU addrs == bus addrs */
- 	spin_lock_init(&dino_dev->dinosaur_pen);
- 	dino_dev->hba.iommu = ccio_get_iommu(dev);
-@@ -1027,9 +1039,9 @@
- };
- 
- static struct parisc_driver dino_driver = {
--	.name =		"Dino",
-+	.name =		"dino",
- 	.id_table =	dino_tbl,
--	.probe =	dino_driver_callback,
-+	.probe =	dino_probe,
- };
- 
- /*
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/eisa.c CVS2_6_14_PA0/drivers/parisc/eisa.c
---- LINUS_2_6_14/drivers/parisc/eisa.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/eisa.c	2005-09-10 12:19:32.000000000 -0600
-@@ -315,7 +315,7 @@
- 	char *name = is_mongoose(dev) ? "Mongoose" : "Wax";
- 
- 	printk(KERN_INFO "%s EISA Adapter found at 0x%08lx\n", 
--		name, dev->hpa);
-+		name, dev->hpa.start);
- 
- 	eisa_dev.hba.dev = dev;
- 	eisa_dev.hba.iommu = ccio_get_iommu(dev);
-@@ -397,7 +397,7 @@
- MODULE_DEVICE_TABLE(parisc, eisa_tbl);
- 
- static struct parisc_driver eisa_driver = {
--	.name =		"EISA Bus Adapter",
-+	.name =		"eisa_ba",
- 	.id_table =	eisa_tbl,
- 	.probe =	eisa_probe,
- };
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/gsc.c CVS2_6_14_PA0/drivers/parisc/gsc.c
---- LINUS_2_6_14/drivers/parisc/gsc.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/gsc.c	2005-07-28 12:16:52.000000000 -0600
-@@ -183,12 +183,20 @@
- 	*irqp = irq;
- }
- 
-+static struct device *next_device(struct klist_iter *i)
-+{
-+	struct klist_node * n = klist_next(i);
-+	return n ? container_of(n, struct device, knode_parent) : NULL;
-+}
++#if	defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
 +
- void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl,
- 			void (*choose_irq)(struct parisc_device *, void *))
- {
- 	struct device *dev;
-+	struct klist_iter i;
- 
--	list_for_each_entry(dev, &parent->dev.children, node) {
-+	klist_iter_init(&parent->dev.klist_children, &i);
-+	while ((dev = next_device(&i))) {
- 		struct parisc_device *padev = to_parisc_device(dev);
- 
- 		/* work-around for 715/64 and others which have parent 
-@@ -197,6 +205,7 @@
- 			return gsc_fixup_irqs(padev, ctrl, choose_irq);
- 		choose_irq(padev, ctrl);
- 	}
-+	klist_iter_exit(&i);
- }
- 
- int gsc_common_setup(struct parisc_device *parent, struct gsc_asic *gsc_asic)
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/hppb.c CVS2_6_14_PA0/drivers/parisc/hppb.c
---- LINUS_2_6_14/drivers/parisc/hppb.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/hppb.c	2005-09-10 12:25:41.000000000 -0600
-@@ -68,14 +68,14 @@
- 		memset(card->next, '\0', sizeof(struct hppb_card));
- 		card = card->next;
- 	}
--        printk(KERN_INFO "Found GeckoBoa at 0x%lx\n", dev->hpa);
-+        printk(KERN_INFO "Found GeckoBoa at 0x%lx\n", dev->hpa.start);
- 
--	card->hpa = dev->hpa;
-+	card->hpa = dev->hpa.start;
- 	card->mmio_region.name = "HP-PB Bus";
- 	card->mmio_region.flags = IORESOURCE_MEM;
- 
--	card->mmio_region.start = __raw_readl(dev->hpa + IO_IO_LOW);
--	card->mmio_region.end = __raw_readl(dev->hpa + IO_IO_HIGH) - 1;
-+	card->mmio_region.start = gsc_readl(dev->hpa.start + IO_IO_LOW);
-+	card->mmio_region.end = gsc_readl(dev->hpa.start + IO_IO_HIGH) - 1;
- 
- 	status = ccio_request_resource(dev, &card->mmio_region);
- 	if(status < 0) {
-@@ -93,7 +93,7 @@
- };
- 
- static struct parisc_driver hppb_driver = {
--        .name =         "Gecko Boa",
-+        .name =         "gecko_boa",
-         .id_table =     hppb_tbl,
- 	.probe =        hppb_probe,
- };
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/iosapic.c CVS2_6_14_PA0/drivers/parisc/iosapic.c
---- LINUS_2_6_14/drivers/parisc/iosapic.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/iosapic.c	2005-10-19 13:55:31.000000000 -0600
-@@ -244,7 +244,7 @@
- 	 * 4-byte alignment on 32-bit kernels
- 	 */
- 	a = (unsigned long)kmalloc(sizeof(struct irt_entry) * num_entries + 8, GFP_KERNEL);
--	a = (a + 7) & ~7;
-+	a = (a + 7UL) & ~7UL;
- 	return (struct irt_entry *)a;
- }
- 
-@@ -700,6 +700,28 @@
- 	return 0;
- }
- 
-+#ifdef CONFIG_SMP
-+static void iosapic_set_affinity_irq(unsigned int irq, cpumask_t dest)
-+{
-+	struct vector_info *vi = iosapic_get_vector(irq);
-+	u32 d0, d1, dummy_d0;
-+	unsigned long flags;
++#define cpu_to_scr(dw)	cpu_to_le32(dw)
++#define scr_to_cpu(dw)	le32_to_cpu(dw)
 +
-+	if (cpu_check_affinity(irq, &dest))
-+		return;
++#elif	defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
 +
-+	vi->txn_addr = txn_affinity_addr(irq, first_cpu(dest));
++#define cpu_to_scr(dw)	cpu_to_be32(dw)
++#define scr_to_cpu(dw)	be32_to_cpu(dw)
 +
-+	spin_lock_irqsave(&iosapic_lock, flags);
-+	/* d1 contains the destination CPU, so only want to set that
-+	 * entry */
-+	iosapic_rd_irt_entry(vi, &d0, &d1);
-+	iosapic_set_irt_data(vi, &dummy_d0, &d1);
-+	iosapic_wr_irt_entry(vi, d0, d1);
-+	spin_unlock_irqrestore(&iosapic_lock, flags);
-+}
-+#endif
++#else
++
++#define cpu_to_scr(dw)	(dw)
++#define scr_to_cpu(dw)	(dw)
 +
- static struct hw_interrupt_type iosapic_interrupt_type = {
- 	.typename =	"IO-SAPIC-level",
- 	.startup =	iosapic_startup_irq,
-@@ -708,7 +730,9 @@
- 	.disable =	iosapic_disable_irq,
- 	.ack =		no_ack_irq,
- 	.end =		iosapic_end_irq,
--//	.set_affinity =	iosapic_set_affinity_irq,
-+#ifdef CONFIG_SMP
-+	.set_affinity =	iosapic_set_affinity_irq,
 +#endif
- };
- 
- int iosapic_fixup_irq(void *isi_obj, struct pci_dev *pcidev)
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/lasi.c CVS2_6_14_PA0/drivers/parisc/lasi.c
---- LINUS_2_6_14/drivers/parisc/lasi.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/lasi.c	2005-09-14 06:56:31.000000000 -0600
-@@ -175,7 +175,7 @@
- 		return -ENOMEM;
- 
- 	lasi->name = "Lasi";
--	lasi->hpa = dev->hpa;
-+	lasi->hpa = dev->hpa.start;
- 
- 	/* Check the 4-bit (yes, only 4) version register */
- 	lasi->version = gsc_readl(lasi->hpa + LASI_VER) & 0xf;
-@@ -233,7 +233,7 @@
- };
- 
- struct parisc_driver lasi_driver = {
--	.name =		"Lasi",
-+	.name =		"lasi",
- 	.id_table =	lasi_tbl,
- 	.probe =	lasi_init_chip,
- };
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/lba_pci.c CVS2_6_14_PA0/drivers/parisc/lba_pci.c
---- LINUS_2_6_14/drivers/parisc/lba_pci.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/lba_pci.c	2005-09-10 12:19:32.000000000 -0600
-@@ -1288,7 +1288,7 @@
- 		** Adjust "window" for this rope.
- 		*/
- 		rsize /= ROPES_PER_IOC;
--		r->start += (rsize + 1) * LBA_NUM(pa_dev->hpa);
-+		r->start += (rsize + 1) * LBA_NUM(pa_dev->hpa.start);
- 		r->end = r->start + rsize;
- 	} else {
- 		r->end = r->start = 0;	/* Not enabled. */
-@@ -1458,7 +1458,7 @@
- 	u32 func_class;
- 	void *tmp_obj;
- 	char *version;
--	void __iomem *addr = ioremap(dev->hpa, 4096);
-+	void __iomem *addr = ioremap(dev->hpa.start, 4096);
- 
- 	/* Read HW Rev First */
- 	func_class = READ_REG32(addr + LBA_FCLASS);
-@@ -1476,7 +1476,7 @@
- 		}
- 
- 		printk(KERN_INFO "%s version %s (0x%x) found at 0x%lx\n",
--			MODULE_NAME, version, func_class & 0xf, dev->hpa);
-+			MODULE_NAME, version, func_class & 0xf, dev->hpa.start);
- 
- 		if (func_class < 2) {
- 			printk(KERN_WARNING "Can't support LBA older than "
-@@ -1503,17 +1503,17 @@
-                  * but for the mask for func_class.
-                  */ 
- 		printk(KERN_INFO "%s version %s (0x%x) found at 0x%lx\n",
--			MODULE_NAME, version, func_class & 0xff, dev->hpa);
-+		       MODULE_NAME, version, func_class & 0xff, dev->hpa.start);
- 		cfg_ops = &mercury_cfg_ops;
- 	} else {
--		printk(KERN_ERR "Unknown LBA found at 0x%lx\n", dev->hpa);
-+		printk(KERN_ERR "Unknown LBA found at 0x%lx\n", dev->hpa.start);
- 		return -ENODEV;
- 	}
- 
- 	/*
- 	** Tell I/O SAPIC driver we have a IRQ handler/region.
- 	*/
--	tmp_obj = iosapic_register(dev->hpa + LBA_IOSAPIC_BASE);
-+	tmp_obj = iosapic_register(dev->hpa.start + LBA_IOSAPIC_BASE);
- 
- 	/* NOTE: PCI devices (e.g. 103c:1005 graphics card) which don't
- 	**	have an IRT entry will get NULL back from iosapic code.
-@@ -1635,7 +1635,7 @@
- */
- void lba_set_iregs(struct parisc_device *lba, u32 ibase, u32 imask)
- {
--	void __iomem * base_addr = ioremap(lba->hpa, 4096);
-+	void __iomem * base_addr = ioremap(lba->hpa.start, 4096);
- 
- 	imask <<= 2;	/* adjust for hints - 2 more bits */
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/led.c CVS2_6_14_PA0/drivers/parisc/led.c
---- LINUS_2_6_14/drivers/parisc/led.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/led.c	2005-10-20 08:43:10.000000000 -0600
-@@ -18,6 +18,9 @@
-  * Changes:
-  *      - Audit copy_from_user in led_proc_write.
-  *                                Daniele Bellucci <bellucda at tiscali.it>
-+ *	- Switch from using a tasklet to a work queue, so the led_LCD_driver
-+ *	  	can sleep.
-+ *	  			  David Pye <dmp at davidmpye.dyndns.org>
-  */
- 
- #include <linux/config.h>
-@@ -37,6 +40,7 @@
- #include <linux/proc_fs.h>
- #include <linux/ctype.h>
- #include <linux/blkdev.h>
-+#include <linux/workqueue.h>
- #include <linux/rcupdate.h>
- #include <asm/io.h>
- #include <asm/processor.h>
-@@ -47,25 +51,30 @@
- #include <asm/uaccess.h>
- 
- /* The control of the LEDs and LCDs on PARISC-machines have to be done 
--   completely in software. The necessary calculations are done in a tasklet
--   which is scheduled at every timer interrupt and since the calculations 
--   may consume relatively much CPU-time some of the calculations can be 
-+   completely in software. The necessary calculations are done in a work queue
-+   task which is scheduled regularly, and since the calculations may consume a 
-+   relatively large amount of CPU time, some of the calculations can be 
-    turned off with the following variables (controlled via procfs) */
- 
- static int led_type = -1;
--static int led_heartbeat = 1;
--static int led_diskio = 1;
--static int led_lanrxtx = 1;
-+static unsigned char lastleds;	/* LED state from most recent update */
-+static unsigned int led_heartbeat = 1;
-+static unsigned int led_diskio = 1;
-+static unsigned int led_lanrxtx = 1;
- static char lcd_text[32];
- static char lcd_text_default[32];
- 
 +
-+static struct workqueue_struct *led_wq;
-+static void led_work_func(void *);
-+static DECLARE_WORK(led_task, led_work_func, NULL);
++/*
++ *  Access to the controller chip.
++ *
++ *  If the CPU and the NCR use same endian-ness addressing,
++ *  no byte reordering is needed for accessing chip io 
++ *  registers. Functions suffixed by '_raw' are assumed 
++ *  to access the chip over the PCI without doing byte 
++ *  reordering. Functions suffixed by '_l2b' are 
++ *  assumed to perform little-endian to big-endian byte 
++ *  reordering, those suffixed by '_b2l' blah, blah,
++ *  blah, ...
++ */
 +
- #if 0
- #define DPRINTK(x)	printk x
- #else
- #define DPRINTK(x)
- #endif
- 
--
- struct lcd_block {
- 	unsigned char command;	/* stores the command byte      */
- 	unsigned char on;	/* value for turning LED on     */
-@@ -116,12 +125,27 @@
- #define LCD_DATA_REG	lcd_info.lcd_data_reg_addr	 
- #define LED_DATA_REG	lcd_info.lcd_cmd_reg_addr	/* LASI & ASP only */
- 
-+#define LED_HASLCD 1
-+#define LED_NOLCD  0
-+
-+/* The workqueue must be created at init-time */
-+static int start_task(void) 
-+{	
-+	/* Display the default text now */
-+	if (led_type == LED_HASLCD) lcd_print( lcd_text_default );
-+
-+	/* Create the work queue and queue the LED task */
-+	led_wq = create_singlethread_workqueue("led_wq");	
-+	queue_work(led_wq, &led_task);
++/*
++ *  MEMORY mapped IO input / output
++ */
 +
-+	return 0;
-+}
++#define INB_OFF(o)		readb_raw((char __iomem *)np->reg + ncr_offb(o))
++#define OUTB_OFF(o, val)	writeb_raw((val), (char __iomem *)np->reg + ncr_offb(o))
 +
-+device_initcall(start_task);
- 
- /* ptr to LCD/LED-specific function */
- static void (*led_func_ptr) (unsigned char);
- 
--#define LED_HASLCD 1
--#define LED_NOLCD  0
- #ifdef CONFIG_PROC_FS
- static int led_proc_read(char *page, char **start, off_t off, int count, 
- 	int *eof, void *data)
-@@ -286,52 +310,35 @@
- /*
-    ** 
-    ** led_LCD_driver()
--   ** 
--   ** The logic of the LCD driver is, that we write at every scheduled call
--   ** only to one of LCD_CMD_REG _or_ LCD_DATA_REG - registers.
--   ** That way we don't need to let this tasklet busywait for min_cmd_delay
--   ** milliseconds.
--   **
--   ** TODO: check the value of "min_cmd_delay" against the value of HZ.
-    **   
-  */
- static void led_LCD_driver(unsigned char leds)
- {
--	static int last_index;	/* 0:heartbeat, 1:disk, 2:lan_in, 3:lan_out */
--	static int last_was_cmd;/* 0: CMD was written last, 1: DATA was last */
--	struct lcd_block *block_ptr;
--	int value;
--
--	switch (last_index) {
--	    case 0:	block_ptr = &lcd_info.heartbeat;
--			value = leds & LED_HEARTBEAT;
--			break;
--	    case 1:	block_ptr = &lcd_info.disk_io;
--			value = leds & LED_DISK_IO;
--			break;					
--	    case 2:	block_ptr = &lcd_info.lan_rcv;
--			value = leds & LED_LAN_RCV;
--			break;					
--	    case 3:	block_ptr = &lcd_info.lan_tx;
--			value = leds & LED_LAN_TX;
--			break;
--	    default:	/* should never happen: */
--			return;
--	}
-+	static int i;
-+	static unsigned char mask[4] = { LED_HEARTBEAT, LED_DISK_IO,
-+		LED_LAN_RCV, LED_LAN_TX };
-+	
-+	static struct lcd_block * blockp[4] = {
-+		&lcd_info.heartbeat,
-+		&lcd_info.disk_io,
-+		&lcd_info.lan_rcv,
-+		&lcd_info.lan_tx
-+	};
- 
--	if (last_was_cmd) {
--	    /* write the value to the LCD data port */
--    	    gsc_writeb( value ? block_ptr->on : block_ptr->off, LCD_DATA_REG );
--	} else {
--	    /* write the command-byte to the LCD command register */
--    	    gsc_writeb( block_ptr->command, LCD_CMD_REG );
--	}    
--	
--	/* now update the vars for the next interrupt iteration */ 
--	if (++last_was_cmd == 2) { /* switch between cmd & data */
--	    last_was_cmd = 0;
--	    if (++last_index == 4) 
--		last_index = 0;	 /* switch back to heartbeat index */
-+	/* Convert min_cmd_delay to milliseconds */
-+	unsigned int msec_cmd_delay = 1 + (lcd_info.min_cmd_delay / 1000);
-+	
-+	for (i=0; i<4; ++i) 
-+	{
-+		if ((leds & mask[i]) != (lastleds & mask[i])) 
-+		{
-+			gsc_writeb( blockp[i]->command, LCD_CMD_REG );
-+			msleep(msec_cmd_delay);
-+			
-+			gsc_writeb( leds & mask[i] ? blockp[i]->on : 
-+					blockp[i]->off, LCD_DATA_REG );
-+			msleep(msec_cmd_delay);
-+		}
- 	}
- }
- 
-@@ -356,7 +363,7 @@
- 
- 	rx_total = tx_total = 0;
- 	
--	/* we are running as tasklet, so locking dev_base 
-+	/* we are running as a workqueue task, so locking dev_base 
- 	 * for reading should be OK */
- 	read_lock(&dev_base_lock);
- 	rcu_read_lock();
-@@ -405,7 +412,7 @@
- 	static unsigned long last_pgpgin, last_pgpgout;
- 	struct page_state pgstat;
- 	int changed;
--	
++#if	defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
 +
- 	get_full_page_state(&pgstat); /* get no of sectors in & out */
- 
- 	/* Just use a very simple calculation here. Do not care about overflow,
-@@ -413,86 +420,70 @@
- 	changed = (pgstat.pgpgin != last_pgpgin) || (pgstat.pgpgout != last_pgpgout);
- 	last_pgpgin  = pgstat.pgpgin;
- 	last_pgpgout = pgstat.pgpgout;
--	
++#define INW_OFF(o)		readw_l2b((char __iomem *)np->reg + ncr_offw(o))
++#define INL_OFF(o)		readl_l2b((char __iomem *)np->reg + (o))
 +
- 	return (changed ? LED_DISK_IO : 0);
- }
- 
- 
- 
- /*
--   ** led_tasklet_func()
-+   ** led_work_func()
-    ** 
--   ** is scheduled at every timer interrupt from time.c and
--   ** updates the chassis LCD/LED 
-+   ** manages when and which chassis LCD/LED gets updated
- 
-     TODO:
-     - display load average (older machines like 715/64 have 4 "free" LED's for that)
-     - optimizations
-  */
- 
--#define HEARTBEAT_LEN (HZ*6/100)
--#define HEARTBEAT_2ND_RANGE_START (HZ*22/100)
-+#define HEARTBEAT_LEN (HZ*10/100)
-+#define HEARTBEAT_2ND_RANGE_START (HZ*28/100)
- #define HEARTBEAT_2ND_RANGE_END   (HEARTBEAT_2ND_RANGE_START + HEARTBEAT_LEN)
- 
--#define NORMALIZED_COUNT(count) (count/(HZ/100))
-+#define LED_UPDATE_INTERVAL (1 + (HZ*19/1000))
- 
--static void led_tasklet_func(unsigned long unused)
-+static void led_work_func (void *unused)
- {
--	static unsigned char lastleds;
--	unsigned char currentleds; /* stores current value of the LEDs */
--	static unsigned long count; /* static incremented value, not wrapped */
-+	static unsigned long last_jiffies;
- 	static unsigned long count_HZ; /* counter in range 0..HZ */
-+	unsigned char currentleds = 0; /* stores current value of the LEDs */
- 
- 	/* exit if not initialized */
- 	if (!led_func_ptr)
- 	    return;
- 
--	/* increment the local counters */
--	++count;
--	if (++count_HZ == HZ)
-+	/* increment the heartbeat timekeeper */
-+	count_HZ += jiffies - last_jiffies;
-+	last_jiffies = jiffies;
-+	if (count_HZ >= HZ)
- 	    count_HZ = 0;
- 
--	currentleds = lastleds;
--
--	if (led_heartbeat)
--	{
--		/* flash heartbeat-LED like a real heart (2 x short then a long delay) */
--		if (count_HZ<HEARTBEAT_LEN || 
--		    (count_HZ>=HEARTBEAT_2ND_RANGE_START && count_HZ<HEARTBEAT_2ND_RANGE_END)) 
--		    currentleds |= LED_HEARTBEAT;
--		else
--		    currentleds &= ~LED_HEARTBEAT;
--	}
--
--	/* look for network activity and flash LEDs respectively */
--	if (led_lanrxtx && ((NORMALIZED_COUNT(count)+(8/2)) & 7) == 0)
-+	if (likely(led_heartbeat))
- 	{
--		currentleds &= ~(LED_LAN_RCV | LED_LAN_TX);
--		currentleds |= led_get_net_activity();
-+		/* flash heartbeat-LED like a real heart
-+		 * (2 x short then a long delay)
-+		 */
-+		if (count_HZ < HEARTBEAT_LEN || 
-+				(count_HZ >= HEARTBEAT_2ND_RANGE_START &&
-+				count_HZ < HEARTBEAT_2ND_RANGE_END)) 
-+			currentleds |= LED_HEARTBEAT;
- 	}
- 
--	/* avoid to calculate diskio-stats at same irq  as netio-stats */
--	if (led_diskio && (NORMALIZED_COUNT(count) & 7) == 0)
--	{
--		currentleds &= ~LED_DISK_IO;
--		currentleds |= led_get_diskio_activity();
--	}
-+	if (likely(led_lanrxtx))  currentleds |= led_get_net_activity();
-+	if (likely(led_diskio))   currentleds |= led_get_diskio_activity();
- 
- 	/* blink all LEDs twice a second if we got an Oops (HPMC) */
--	if (oops_in_progress) {
-+	if (unlikely(oops_in_progress)) 
- 		currentleds = (count_HZ<=(HZ/2)) ? 0 : 0xff;
--	}
--	
--	/* update the LCD/LEDs */
--	if (currentleds != lastleds) {
--	    led_func_ptr(currentleds);
--	    lastleds = currentleds;
--	}
--}
- 
--/* main led tasklet struct (scheduled from time.c) */
--DECLARE_TASKLET_DISABLED(led_tasklet, led_tasklet_func, 0);
-+	if (currentleds != lastleds)
-+	{
-+		led_func_ptr(currentleds);	/* Update the LCD/LEDs */
-+		lastleds = currentleds;
-+	}
- 
-+	queue_delayed_work(led_wq, &led_task, LED_UPDATE_INTERVAL);
-+}
- 
- /*
-    ** led_halt()
-@@ -522,9 +513,13 @@
- 	default:		return NOTIFY_DONE;
- 	}
- 	
--	/* completely stop the LED/LCD tasklet */
--	tasklet_disable(&led_tasklet);
--
-+	/* Cancel the work item and delete the queue */
-+	if (led_wq) {
-+		cancel_rearming_delayed_workqueue(led_wq, &led_task);
-+		destroy_workqueue(led_wq);
-+		led_wq = NULL;
-+	}
-+ 
- 	if (lcd_info.model == DISPLAY_MODEL_LCD)
- 		lcd_print(txt);
- 	else
-@@ -559,7 +554,6 @@
- 		printk(KERN_INFO "LCD display at %lx,%lx registered\n", 
- 			LCD_CMD_REG , LCD_DATA_REG);
- 		led_func_ptr = led_LCD_driver;
--		lcd_print( lcd_text_default );
- 		led_type = LED_HASLCD;
- 		break;
- 
-@@ -589,9 +583,11 @@
- 	initialized++;
- 	register_reboot_notifier(&led_notifier);
- 
--	/* start the led tasklet for the first time */
--	tasklet_enable(&led_tasklet);
--	
-+	/* Ensure the work is queued */
-+	if (led_wq) {
-+		queue_work(led_wq, &led_task);
-+	}
++#define OUTW_OFF(o, val)	writew_b2l((val), (char __iomem *)np->reg + ncr_offw(o))
++#define OUTL_OFF(o, val)	writel_b2l((val), (char __iomem *)np->reg + (o))
 +
- 	return 0;
- }
- 
-@@ -626,8 +622,8 @@
-    ** lcd_print()
-    ** 
-    ** Displays the given string on the LCD-Display of newer machines.
--   ** lcd_print() disables the timer-based led tasklet during its 
--   ** execution and enables it afterwards again.
-+   ** lcd_print() disables/enables the timer-based led work queue to
-+   ** avoid a race condition while writing the CMD/DATA register pair.
-    **
-  */
- int lcd_print( char *str )
-@@ -637,12 +633,13 @@
- 	if (!led_func_ptr || lcd_info.model != DISPLAY_MODEL_LCD)
- 	    return 0;
- 	
--	/* temporarily disable the led tasklet */
--	tasklet_disable(&led_tasklet);
-+	/* temporarily disable the led work task */
-+	if (led_wq)
-+		cancel_rearming_delayed_workqueue(led_wq, &led_task);
- 
- 	/* copy display string to buffer for procfs */
- 	strlcpy(lcd_text, str, sizeof(lcd_text));
--	
++#elif	defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
 +
- 	/* Set LCD Cursor to 1st character */
- 	gsc_writeb(lcd_info.reset_cmd1, LCD_CMD_REG);
- 	udelay(lcd_info.min_cmd_delay);
-@@ -656,8 +653,10 @@
- 	    udelay(lcd_info.min_cmd_delay);
- 	}
- 	
--	/* re-enable the led tasklet */
--	tasklet_enable(&led_tasklet);
-+	/* re-queue the work */
-+	if (led_wq) {
-+		queue_work(led_wq, &led_task);
-+	}
- 
- 	return lcd_info.lcd_width;
- }
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/pdc_stable.c CVS2_6_14_PA0/drivers/parisc/pdc_stable.c
---- LINUS_2_6_14/drivers/parisc/pdc_stable.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/pdc_stable.c	2005-07-31 23:19:54.000000000 -0600
-@@ -536,7 +536,7 @@
- 
- 	out += sprintf(out, "Memory tested: ");
- 	if ((result & 0x0F) < 0x0E)
--		out += sprintf(out, "%.3f MB", 0.256*(1<<(result & 0x0F)));
-+		out += sprintf(out, "%d kB", (1<<(result & 0x0F))*256);
- 	else
- 		out += sprintf(out, "All");
- 	out += sprintf(out, "\n");
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/sba_iommu.c CVS2_6_14_PA0/drivers/parisc/sba_iommu.c
---- LINUS_2_6_14/drivers/parisc/sba_iommu.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/sba_iommu.c	2005-10-14 00:02:08.000000000 -0600
-@@ -91,8 +91,8 @@
- #define DBG_RES(x...)
- #endif
- 
--#if defined(__LP64__) && !defined(CONFIG_PDC_NARROW)
--/* "low end" PA8800 machines use ZX1 chipset */
-+#if defined(CONFIG_64BIT)
-+/* "low end" PA8800 machines use ZX1 chipset: PAT PDC and only run 64-bit */
- #define ZX1_SUPPORT
- #endif
- 
-@@ -231,7 +231,7 @@
- 	spinlock_t	res_lock;
- 	unsigned int	res_bitshift;	/* from the LEFT! */
- 	unsigned int	res_size;	/* size of resource map in bytes */
--#if SBA_HINT_SUPPORT
-+#ifdef SBA_HINT_SUPPORT
- /* FIXME : DMA HINTs not used */
- 	unsigned long	hint_mask_pdir;	/* bits used for DMA hints */
- 	unsigned int	hint_shift_pdir;
-@@ -294,7 +294,7 @@
- /* Looks nice and keeps the compiler happy */
- #define SBA_DEV(d) ((struct sba_device *) (d))
- 
--#if SBA_AGP_SUPPORT
-+#ifdef SBA_AGP_SUPPORT
- static int reserve_sba_gart = 1;
- #endif
- 
-@@ -314,7 +314,7 @@
- #define WRITE_REG32(val, addr) __raw_writel(cpu_to_le32(val), addr)
- #define WRITE_REG64(val, addr) __raw_writeq(cpu_to_le64(val), addr)
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- #define READ_REG(addr)		READ_REG64(addr)
- #define WRITE_REG(value, addr)	WRITE_REG64(value, addr)
- #else
-@@ -324,7 +324,7 @@
- 
- #ifdef DEBUG_SBA_INIT
- 
--/* NOTE: When __LP64__ isn't defined, READ_REG64() is two 32-bit reads */
-+/* NOTE: When CONFIG_64BIT isn't defined, READ_REG64() is two 32-bit reads */
- 
- /**
-  * sba_dump_ranges - debugging only - print ranges assigned to this IOA
-@@ -364,7 +364,7 @@
- #else
- #define sba_dump_ranges(x)
- #define sba_dump_tlb(x)
--#endif
-+#endif	/* DEBUG_SBA_INIT */
- 
- 
- #ifdef ASSERT_PDIR_SANITY
-@@ -674,7 +674,7 @@
- *
- ***************************************************************/
- 
--#if SBA_HINT_SUPPORT
-+#ifdef SBA_HINT_SUPPORT
- #define SBA_DMA_HINT(ioc, val) ((val) << (ioc)->hint_shift_pdir)
- #endif
- 
-@@ -743,9 +743,8 @@
- 	 * (bit #61, big endian), we have to flush and sync every time
- 	 * IO-PDIR is changed in Ike/Astro.
- 	 */
--	if (ioc_needs_fdc) {
--		asm volatile("fdc 0(%%sr1,%0)\n\tsync" : : "r" (pdir_ptr));
--	}
-+	if (ioc_needs_fdc)
-+		asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr));
- }
- 
- 
-@@ -769,42 +768,57 @@
- sba_mark_invalid(struct ioc *ioc, dma_addr_t iova, size_t byte_cnt)
- {
- 	u32 iovp = (u32) SBA_IOVP(ioc,iova);
--
--	/* Even though this is a big-endian machine, the entries
--	** in the iopdir are little endian. That's why we clear the byte
--	** at +7 instead of at +0.
--	*/
--	int off = PDIR_INDEX(iovp)*sizeof(u64)+7;
-+	u64 *pdir_ptr = &ioc->pdir_base[PDIR_INDEX(iovp)];
- 
- #ifdef ASSERT_PDIR_SANITY
--	/* Assert first pdir entry is set */
--	if (0x80 != (((u8 *) ioc->pdir_base)[off])) {
-+	/* Assert first pdir entry is set.
-+	**
-+	** Even though this is a big-endian machine, the entries
-+	** in the iopdir are little endian. That's why we look at
-+	** the byte at +7 instead of at +0.
-+	*/
-+	if (0x80 != (((u8 *) pdir_ptr)[7])) {
- 		sba_dump_pdir_entry(ioc,"sba_mark_invalid()", PDIR_INDEX(iovp));
- 	}
- #endif
- 
--	if (byte_cnt <= IOVP_SIZE)
-+	if (byte_cnt > IOVP_SIZE)
- 	{
--		iovp |= IOVP_SHIFT;     /* set "size" field for PCOM */
-+#if 0
-+		unsigned long entries_per_cacheline = ioc_needs_fdc ?
-+				L1_CACHE_ALIGN(((unsigned long) pdir_ptr))
-+					- (unsigned long) pdir_ptr;
-+				: 262144;
-+#endif
- 
--		/*
--		** clear I/O PDIR entry "valid" bit
--		** Do NOT clear the rest - save it for debugging.
--		** We should only clear bits that have previously
--		** been enabled.
--		*/
--		((u8 *)(ioc->pdir_base))[off] = 0;
--	} else {
--		u32 t = get_order(byte_cnt) + PAGE_SHIFT;
-+		/* set "size" field for PCOM */
-+		iovp |= get_order(byte_cnt) + PAGE_SHIFT;
- 
--		iovp |= t;
- 		do {
- 			/* clear I/O Pdir entry "valid" bit first */
--			((u8 *)(ioc->pdir_base))[off] = 0;
--			off += sizeof(u64);
-+			((u8 *) pdir_ptr)[7] = 0;
-+			if (ioc_needs_fdc) {
-+				asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr));
-+#if 0
-+				entries_per_cacheline = L1_CACHE_SHIFT - 3;
++#define INW_OFF(o)		readw_b2l((char __iomem *)np->reg + ncr_offw(o))
++#define INL_OFF(o)		readl_b2l((char __iomem *)np->reg + (o))
++
++#define OUTW_OFF(o, val)	writew_l2b((val), (char __iomem *)np->reg + ncr_offw(o))
++#define OUTL_OFF(o, val)	writel_l2b((val), (char __iomem *)np->reg + (o))
++
++#else
++
++#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
++/* Only 8 or 32 bit transfers allowed */
++#define INW_OFF(o)		(readb((char __iomem *)np->reg + ncr_offw(o)) << 8 | readb((char __iomem *)np->reg + ncr_offw(o) + 1))
++#else
++#define INW_OFF(o)		readw_raw((char __iomem *)np->reg + ncr_offw(o))
 +#endif
-+			}
-+			pdir_ptr++;
- 			byte_cnt -= IOVP_SIZE;
--		} while (byte_cnt > 0);
--	}
-+		} while (byte_cnt > IOVP_SIZE);
-+	} else
-+		iovp |= IOVP_SHIFT;     /* set "size" field for PCOM */
++#define INL_OFF(o)		readl_raw((char __iomem *)np->reg + (o))
 +
-+	/*
-+	** clear I/O PDIR entry "valid" bit.
-+	** We have to R/M/W the cacheline regardless how much of the
-+	** pdir entry that we clobber.
-+	** The rest of the entry would be useful for debugging if we
-+	** could dump core on HPMC.
-+	*/
-+	((u8 *) pdir_ptr)[7] = 0;
-+	if (ioc_needs_fdc)
-+		asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr));
- 
- 	WRITE_REG( SBA_IOVA(ioc, iovp, 0, 0), ioc->ioc_hpa+IOC_PCOM);
- }
-@@ -819,18 +833,29 @@
- static int sba_dma_supported( struct device *dev, u64 mask)
- {
- 	struct ioc *ioc;
++#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
++/* Only 8 or 32 bit transfers allowed */
++#define OUTW_OFF(o, val)	do { writeb((char)((val) >> 8), (char __iomem *)np->reg + ncr_offw(o)); writeb((char)(val), (char __iomem *)np->reg + ncr_offw(o) + 1); } while (0)
++#else
++#define OUTW_OFF(o, val)	writew_raw((val), (char __iomem *)np->reg + ncr_offw(o))
++#endif
++#define OUTL_OFF(o, val)	writel_raw((val), (char __iomem *)np->reg + (o))
 +
- 	if (dev == NULL) {
- 		printk(KERN_ERR MODULE_NAME ": EISA/ISA/et al not supported\n");
- 		BUG();
- 		return(0);
- 	}
- 
--	ioc = GET_IOC(dev);
-+	/* Documentation/DMA-mapping.txt tells drivers to try 64-bit first,
-+	 * then fall back to 32-bit if that fails.
-+	 * We are just "encouraging" 32-bit DMA masks here since we can
-+	 * never allow IOMMU bypass unless we add special support for ZX1.
-+	 */
-+	if (mask > ~0U)
-+		return 0;
- 
--	/* check if mask is > than the largest IO Virt Address */
-+	ioc = GET_IOC(dev);
- 
--	return((int) (mask >= (ioc->ibase +
--				(ioc->pdir_size / sizeof(u64) * IOVP_SIZE) )));
-+	/*
-+	 * check if mask is >= than the current max IO Virt Address
-+	 * The max IO Virt address will *always* < 30 bits.
-+	 */
-+	return((int)(mask >= (ioc->ibase - 1 +
-+			(ioc->pdir_size / sizeof(u64) * IOVP_SIZE) )));
- }
- 
- 
-@@ -898,11 +923,17 @@
- 		size -= IOVP_SIZE;
- 		pdir_start++;
- 	}
--	/* form complete address */
++#endif
 +
-+	/* force FDC ops in io_pdir_entry() to be visible to IOMMU */
-+	if (ioc_needs_fdc)
-+		asm volatile("sync" : : );
++#define INB(r)		INB_OFF (offsetof(struct ncr_reg,r))
++#define INW(r)		INW_OFF (offsetof(struct ncr_reg,r))
++#define INL(r)		INL_OFF (offsetof(struct ncr_reg,r))
 +
- #ifdef ASSERT_PDIR_SANITY
- 	sba_check_pdir(ioc,"Check after sba_map_single()");
- #endif
- 	spin_unlock_irqrestore(&ioc->res_lock, flags);
++#define OUTB(r, val)	OUTB_OFF (offsetof(struct ncr_reg,r), (val))
++#define OUTW(r, val)	OUTW_OFF (offsetof(struct ncr_reg,r), (val))
++#define OUTL(r, val)	OUTL_OFF (offsetof(struct ncr_reg,r), (val))
 +
-+	/* form complete address */
- 	return SBA_IOVA(ioc, iovp, offset, DEFAULT_DMA_HINT_REG);
- }
- 
-@@ -958,12 +989,19 @@
- 			d--;
- 		}
- 		ioc->saved_cnt = 0;
++/*
++ *  Set bit field ON, OFF 
++ */
 +
- 		READ_REG(ioc->ioc_hpa+IOC_PCOM);	/* flush purges */
- 	}
- #else /* DELAYED_RESOURCE_CNT == 0 */
- 	sba_free_range(ioc, iova, size);
++#define OUTONB(r, m)	OUTB(r, INB(r) | (m))
++#define OUTOFFB(r, m)	OUTB(r, INB(r) & ~(m))
++#define OUTONW(r, m)	OUTW(r, INW(r) | (m))
++#define OUTOFFW(r, m)	OUTW(r, INW(r) & ~(m))
++#define OUTONL(r, m)	OUTL(r, INL(r) | (m))
++#define OUTOFFL(r, m)	OUTL(r, INL(r) & ~(m))
 +
-+	/* If fdc's were issued, force fdc's to be visible now */
-+	if (ioc_needs_fdc)
-+		asm volatile("sync" : : );
++/*
++ *  We normally want the chip to have a consistent view
++ *  of driver internal data structures when we restart it.
++ *  Thus these macros.
++ */
++#define OUTL_DSP(v)				\
++	do {					\
++		MEMORY_BARRIER();		\
++		OUTL (nc_dsp, (v));		\
++	} while (0)
++
++#define OUTONB_STD()				\
++	do {					\
++		MEMORY_BARRIER();		\
++		OUTONB (nc_dcntl, (STD|NOCOM));	\
++	} while (0)
 +
- 	READ_REG(ioc->ioc_hpa+IOC_PCOM);	/* flush purges */
- #endif /* DELAYED_RESOURCE_CNT == 0 */
 +
- 	spin_unlock_irqrestore(&ioc->res_lock, flags);
- 
- 	/* XXX REVISIT for 2.5 Linux - need syncdma for zero-copy support.
-@@ -1106,6 +1144,10 @@
- 	*/
- 	filled = iommu_fill_pdir(ioc, sglist, nents, 0, sba_io_pdir_entry);
- 
-+	/* force FDC ops in io_pdir_entry() to be visible to IOMMU */
-+	if (ioc_needs_fdc)
-+		asm volatile("sync" : : );
-+
- #ifdef ASSERT_PDIR_SANITY
- 	if (sba_check_pdir(ioc,"Check after sba_map_sg()"))
- 	{
-@@ -1234,8 +1276,10 @@
- 	unsigned long pdir_order = get_order(pdir_size);
- 
- 	pdir_base = __get_free_pages(GFP_KERNEL, pdir_order);
--	if (NULL == (void *) pdir_base)
--		panic("sba_ioc_init() could not allocate I/O Page Table\n");
-+	if (NULL == (void *) pdir_base)	{
-+		panic("%s() could not allocate I/O Page Table\n",
-+			__FUNCTION__);
-+	}
- 
- 	/* If this is not PA8700 (PCX-W2)
- 	**	OR newer than ver 2.2
-@@ -1322,19 +1366,29 @@
- 	return (void *) pdir_base;
- }
- 
-+static struct device *next_device(struct klist_iter *i)
-+{
-+        struct klist_node * n = klist_next(i);
-+        return n ? container_of(n, struct device, knode_parent) : NULL;
++/*
++**   NCR53C8XX devices features table.
++*/
++struct ncr_chip {
++	unsigned short	revision_id;
++	unsigned char	burst_max;	/* log-base-2 of max burst */
++	unsigned char	offset_max;
++	unsigned char	nr_divisor;
++	unsigned int	features;
++#define FE_LED0		(1<<0)
++#define FE_WIDE		(1<<1)    /* Wide data transfers */
++#define FE_ULTRA	(1<<2)	  /* Ultra speed 20Mtrans/sec */
++#define FE_DBLR		(1<<4)	  /* Clock doubler present */
++#define FE_QUAD		(1<<5)	  /* Clock quadrupler present */
++#define FE_ERL		(1<<6)    /* Enable read line */
++#define FE_CLSE		(1<<7)    /* Cache line size enable */
++#define FE_WRIE		(1<<8)    /* Write & Invalidate enable */
++#define FE_ERMP		(1<<9)    /* Enable read multiple */
++#define FE_BOF		(1<<10)   /* Burst opcode fetch */
++#define FE_DFS		(1<<11)   /* DMA fifo size */
++#define FE_PFEN		(1<<12)   /* Prefetch enable */
++#define FE_LDSTR	(1<<13)   /* Load/Store supported */
++#define FE_RAM		(1<<14)   /* On chip RAM present */
++#define FE_VARCLK	(1<<15)   /* SCSI clock may vary */
++#define FE_RAM8K	(1<<16)   /* On chip RAM sized 8Kb */
++#define FE_64BIT	(1<<17)   /* Have a 64-bit PCI interface */
++#define FE_IO256	(1<<18)   /* Requires full 256 bytes in PCI space */
++#define FE_NOPM		(1<<19)   /* Scripts handles phase mismatch */
++#define FE_LEDC		(1<<20)   /* Hardware control of LED */
++#define FE_DIFF		(1<<21)   /* Support Differential SCSI */
++#define FE_66MHZ 	(1<<23)   /* 66MHz PCI Support */
++#define FE_DAC	 	(1<<24)   /* Support DAC cycles (64 bit addressing) */
++#define FE_ISTAT1 	(1<<25)   /* Have ISTAT1, MBOX0, MBOX1 registers */
++#define FE_DAC_IN_USE	(1<<26)	  /* Platform does DAC cycles */
++#define FE_EHP		(1<<27)   /* 720: Even host parity */
++#define FE_MUX		(1<<28)   /* 720: Multiplexed bus */
++#define FE_EA		(1<<29)   /* 720: Enable Ack */
++
++#define FE_CACHE_SET	(FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP)
++#define FE_SCSI_SET	(FE_WIDE|FE_ULTRA|FE_DBLR|FE_QUAD|F_CLK80)
++#define FE_SPECIAL_SET	(FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM)
++};
++
++
++/*
++**	Driver setup structure.
++**
++**	This structure is initialized from linux config options.
++**	It can be overridden at boot-up by the boot command line.
++*/
++#define SCSI_NCR_MAX_EXCLUDES 8
++struct ncr_driver_setup {
++	u8	master_parity;
++	u8	scsi_parity;
++	u8	disconnection;
++	u8	special_features;
++	u8	force_sync_nego;
++	u8	reverse_probe;
++	u8	pci_fix_up;
++	u8	use_nvram;
++	u8	verbose;
++	u8	default_tags;
++	u16	default_sync;
++	u16	debug;
++	u8	burst_max;
++	u8	led_pin;
++	u8	max_wide;
++	u8	settle_delay;
++	u8	diff_support;
++	u8	irqm;
++	u8	bus_check;
++	u8	optimize;
++	u8	recovery;
++	u8	host_id;
++	u16	iarb;
++	u32	excludes[SCSI_NCR_MAX_EXCLUDES];
++	char	tag_ctrl[100];
++};
++
++/*
++**	Initial setup.
++**	Can be overriden at startup by a command line.
++*/
++#define SCSI_NCR_DRIVER_SETUP			\
++{						\
++	SCSI_NCR_SETUP_MASTER_PARITY,		\
++	SCSI_NCR_SETUP_SCSI_PARITY,		\
++	SCSI_NCR_SETUP_DISCONNECTION,		\
++	SCSI_NCR_SETUP_SPECIAL_FEATURES,	\
++	SCSI_NCR_SETUP_FORCE_SYNC_NEGO,		\
++	0,					\
++	0,					\
++	1,					\
++	0,					\
++	SCSI_NCR_SETUP_DEFAULT_TAGS,		\
++	SCSI_NCR_SETUP_DEFAULT_SYNC,		\
++	0x00,					\
++	7,					\
++	0,					\
++	1,					\
++	SCSI_NCR_SETUP_SETTLE_TIME,		\
++	0,					\
++	0,					\
++	1,					\
++	0,					\
++	0,					\
++	255,					\
++	0x00					\
 +}
 +
- /* setup Mercury or Elroy IBASE/IMASK registers. */
--static void setup_ibase_imask(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
-+static void 
-+setup_ibase_imask(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
- {
--        /* lba_set_iregs() is in drivers/parisc/lba_pci.c */
-+	/* lba_set_iregs() is in drivers/parisc/lba_pci.c */
-         extern void lba_set_iregs(struct parisc_device *, u32, u32);
- 	struct device *dev;
-+	struct klist_iter i;
- 
--	list_for_each_entry(dev, &sba->dev.children, node) {
-+	klist_iter_init(&sba->dev.klist_children, &i);
-+	while ((dev = next_device(&i))) {
- 		struct parisc_device *lba = to_parisc_device(dev);
--		int rope_num = (lba->hpa >> 13) & 0xf;
-+		int rope_num = (lba->hpa.start >> 13) & 0xf;
- 		if (rope_num >> 3 == ioc_num)
- 			lba_set_iregs(lba, ioc->ibase, ioc->imask);
- 	}
-+	klist_iter_exit(&i);
- }
- 
- static void
-@@ -1343,7 +1397,7 @@
- 	u32 iova_space_mask;
- 	u32 iova_space_size;
- 	int iov_order, tcnfg;
--#if SBA_AGP_SUPPORT
-+#ifdef SBA_AGP_SUPPORT
- 	int agp_found = 0;
- #endif
- 	/*
-@@ -1380,7 +1434,7 @@
- 	DBG_INIT("%s() pdir %p size %x\n",
- 			__FUNCTION__, ioc->pdir_base, ioc->pdir_size);
- 
--#if SBA_HINT_SUPPORT
-+#ifdef SBA_HINT_SUPPORT
- 	ioc->hint_shift_pdir = iov_order + PAGE_SHIFT;
- 	ioc->hint_mask_pdir = ~(0x3 << (iov_order + PAGE_SHIFT));
- 
-@@ -1404,7 +1458,7 @@
- 
- 	WRITE_REG(ioc->imask, ioc->ioc_hpa + IOC_IMASK);
- 
--#ifdef __LP64__
-+#ifdef CONFIG_64BIT
- 	/*
- 	** Setting the upper bits makes checking for bypass addresses
- 	** a little faster later on.
-@@ -1437,7 +1491,7 @@
- 	*/
- 	WRITE_REG(ioc->ibase | 31, ioc->ioc_hpa + IOC_PCOM);
- 
--#if SBA_AGP_SUPPORT
-+#ifdef SBA_AGP_SUPPORT
- 	/*
- 	** If an AGP device is present, only use half of the IOV space
- 	** for PCI DMA.  Unfortunately we can't know ahead of time
-@@ -1489,11 +1543,9 @@
- 	if (iova_space_size < (1 << (20 - PAGE_SHIFT))) {
- 		iova_space_size = 1 << (20 - PAGE_SHIFT);
- 	}
--#ifdef __LP64__
- 	else if (iova_space_size > (1 << (30 - PAGE_SHIFT))) {
- 		iova_space_size = 1 << (30 - PAGE_SHIFT);
- 	}
--#endif
- 
- 	/*
- 	** iova space must be log2() in size.
-@@ -1519,7 +1571,7 @@
- 	DBG_INIT("%s() pdir %p size %x\n",
- 			__FUNCTION__, ioc->pdir_base, pdir_size);
- 
--#if SBA_HINT_SUPPORT
-+#ifdef SBA_HINT_SUPPORT
- 	/* FIXME : DMA HINTs not used */
- 	ioc->hint_shift_pdir = iov_order + PAGE_SHIFT;
- 	ioc->hint_mask_pdir = ~(0x3 << (iov_order + PAGE_SHIFT));
-@@ -1590,7 +1642,7 @@
- 
- static void __iomem *ioc_remap(struct sba_device *sba_dev, int offset)
- {
--	return ioremap(sba_dev->dev->hpa + offset, SBA_FUNC_SIZE);
-+	return ioremap(sba_dev->dev->hpa.start + offset, SBA_FUNC_SIZE);
- }
- 
- static void sba_hw_init(struct sba_device *sba_dev)
-@@ -1968,7 +2020,7 @@
- 	u32 func_class;
- 	int i;
- 	char *version;
--	void __iomem *sba_addr = ioremap(dev->hpa, SBA_FUNC_SIZE);
-+	void __iomem *sba_addr = ioremap(dev->hpa.start, SBA_FUNC_SIZE);
- 
- 	sba_dump_ranges(sba_addr);
- 
-@@ -2010,7 +2062,7 @@
- 	}
- 
- 	printk(KERN_INFO "%s found %s at 0x%lx\n",
--		MODULE_NAME, version, dev->hpa);
-+		MODULE_NAME, version, dev->hpa.start);
- 
- 	sba_dev = kmalloc(sizeof(struct sba_device), GFP_KERNEL);
- 	if (!sba_dev) {
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/superio.c CVS2_6_14_PA0/drivers/parisc/superio.c
---- LINUS_2_6_14/drivers/parisc/superio.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/superio.c	2005-08-02 20:38:20.000000000 -0600
-@@ -11,6 +11,7 @@
-  * 	(C) Copyright 2000 Alex deVries <alex at onefishtwo.ca>
-  *      (C) Copyright 2001 John Marvin <jsm fc hp com>
-  *      (C) Copyright 2003 Grant Grundler <grundler parisc-linux org>
-+ *	(C) Copyright 2005 Kyle McMartin <kyle at parisc-linux.org>
-  *
-  *	This program is free software; you can redistribute it and/or
-  *	modify it under the terms of the GNU General Public License as
-@@ -405,6 +406,7 @@
-         
- 	serial[0].iobase = sio_dev.sp1_base;
- 	serial[0].irq = SP1_IRQ;
-+	spin_lock_init(&serial[0].lock);
- 
- 	retval = early_serial_setup(&serial[0]);
- 	if (retval < 0) {
-@@ -414,6 +416,7 @@
- 
- 	serial[1].iobase = sio_dev.sp2_base;
- 	serial[1].irq = SP2_IRQ;
-+	spin_lock_init(&serial[1].lock);
- 	retval = early_serial_setup(&serial[1]);
- 
- 	if (retval < 0)
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parisc/wax.c CVS2_6_14_PA0/drivers/parisc/wax.c
---- LINUS_2_6_14/drivers/parisc/wax.c	2005-10-27 21:30:40.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parisc/wax.c	2005-09-10 12:19:32.000000000 -0600
-@@ -81,7 +81,7 @@
- 		return -ENOMEM;
- 
- 	wax->name = "wax";
--	wax->hpa = dev->hpa;
-+	wax->hpa = dev->hpa.start;
- 
- 	wax->version = 0;   /* gsc_readb(wax->hpa+WAX_VER); */
- 	printk(KERN_INFO "%s at 0x%lx found.\n", wax->name, wax->hpa);
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/parport/parport_gsc.c CVS2_6_14_PA0/drivers/parport/parport_gsc.c
---- LINUS_2_6_14/drivers/parport/parport_gsc.c	2005-10-27 21:30:41.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/parport/parport_gsc.c	2005-09-10 12:19:34.000000000 -0600
-@@ -359,11 +359,12 @@
- 	unsigned long port;
- 
- 	if (!dev->irq) {
--		printk("IRQ not found for parallel device at 0x%lx\n", dev->hpa);
-+		printk(KERN_WARNING "IRQ not found for parallel device at 0x%lx\n",
-+			dev->hpa.start);
- 		return -ENODEV;
- 	}
- 
--	port = dev->hpa + PARPORT_GSC_OFFSET;
-+	port = dev->hpa.start + PARPORT_GSC_OFFSET;
- 	
- 	/* some older machines with ASP-chip don't support
- 	 * the enhanced parport modes.
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/pcmcia/Kconfig CVS2_6_14_PA0/drivers/pcmcia/Kconfig
---- LINUS_2_6_14/drivers/pcmcia/Kconfig	2005-10-27 21:30:41.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/pcmcia/Kconfig	2005-10-20 08:43:11.000000000 -0600
-@@ -190,7 +190,11 @@
- 
- config PCMCIA_PROBE
- 	bool
--	default y if ISA && !ARCH_SA1100 && !ARCH_CLPS711X
-+	default y if ISA && !ARCH_SA1100 && !ARCH_CLPS711X && !PARISC
++/*
++**	Boot fail safe setup.
++**	Override initial setup from boot command line:
++**	ncr53c8xx=safe:y
++*/
++#define SCSI_NCR_DRIVER_SAFE_SETUP		\
++{						\
++	0,					\
++	1,					\
++	0,					\
++	0,					\
++	0,					\
++	0,					\
++	0,					\
++	1,					\
++	2,					\
++	0,					\
++	255,					\
++	0x00,					\
++	255,					\
++	0,					\
++	0,					\
++	10,					\
++	1,					\
++	1,					\
++	1,					\
++	0,					\
++	0,					\
++	255					\
++}
 +
-+config PCMCIA_PROBE_MEM
-+	bool
-+	default y if !PARISC
- 
- config M32R_PCC
- 	bool "M32R PCMCIA I/F"
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/pcmcia/rsrc_nonstatic.c CVS2_6_14_PA0/drivers/pcmcia/rsrc_nonstatic.c
---- LINUS_2_6_14/drivers/pcmcia/rsrc_nonstatic.c	2005-10-27 21:30:41.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/pcmcia/rsrc_nonstatic.c	2005-10-20 08:43:11.000000000 -0600
-@@ -43,7 +43,11 @@
- 
- #define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0444)
- 
-+#ifdef CONFIG_PCMCIA_PROBE_MEM
- INT_MODULE_PARM(probe_mem,	1);		/* memory probe? */
++/**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************/
++
++/*-----------------------------------------------------------------
++**
++**	The ncr 53c810 register structure.
++**
++**-----------------------------------------------------------------
++*/
++
++struct ncr_reg {
++/*00*/  u8	nc_scntl0;    /* full arb., ena parity, par->ATN  */
++
++/*01*/  u8	nc_scntl1;    /* no reset                         */
++        #define   ISCON   0x10  /* connected to scsi		    */
++        #define   CRST    0x08  /* force reset                      */
++        #define   IARB    0x02  /* immediate arbitration            */
++
++/*02*/  u8	nc_scntl2;    /* no disconnect expected           */
++	#define   SDU     0x80  /* cmd: disconnect will raise error */
++	#define   CHM     0x40  /* sta: chained mode                */
++	#define   WSS     0x08  /* sta: wide scsi send           [W]*/
++	#define   WSR     0x01  /* sta: wide scsi received       [W]*/
++
++/*03*/  u8	nc_scntl3;    /* cnf system clock dependent       */
++	#define   EWS     0x08  /* cmd: enable wide scsi         [W]*/
++	#define   ULTRA   0x80  /* cmd: ULTRA enable                */
++				/* bits 0-2, 7 rsvd for C1010       */
++
++/*04*/  u8	nc_scid;	/* cnf host adapter scsi address    */
++	#define   RRE     0x40  /* r/w:e enable response to resel.  */
++	#define   SRE     0x20  /* r/w:e enable response to select  */
++
++/*05*/  u8	nc_sxfer;	/* ### Sync speed and count         */
++				/* bits 6-7 rsvd for C1010          */
++
++/*06*/  u8	nc_sdid;	/* ### Destination-ID               */
++
++/*07*/  u8	nc_gpreg;	/* ??? IO-Pins                      */
++
++/*08*/  u8	nc_sfbr;	/* ### First byte in phase          */
++
++/*09*/  u8	nc_socl;
++	#define   CREQ	  0x80	/* r/w: SCSI-REQ                    */
++	#define   CACK	  0x40	/* r/w: SCSI-ACK                    */
++	#define   CBSY	  0x20	/* r/w: SCSI-BSY                    */
++	#define   CSEL	  0x10	/* r/w: SCSI-SEL                    */
++	#define   CATN	  0x08	/* r/w: SCSI-ATN                    */
++	#define   CMSG	  0x04	/* r/w: SCSI-MSG                    */
++	#define   CC_D	  0x02	/* r/w: SCSI-C_D                    */
++	#define   CI_O	  0x01	/* r/w: SCSI-I_O                    */
++
++/*0a*/  u8	nc_ssid;
++
++/*0b*/  u8	nc_sbcl;
++
++/*0c*/  u8	nc_dstat;
++        #define   DFE     0x80  /* sta: dma fifo empty              */
++        #define   MDPE    0x40  /* int: master data parity error    */
++        #define   BF      0x20  /* int: script: bus fault           */
++        #define   ABRT    0x10  /* int: script: command aborted     */
++        #define   SSI     0x08  /* int: script: single step         */
++        #define   SIR     0x04  /* int: script: interrupt instruct. */
++        #define   IID     0x01  /* int: script: illegal instruct.   */
++
++/*0d*/  u8	nc_sstat0;
++        #define   ILF     0x80  /* sta: data in SIDL register lsb   */
++        #define   ORF     0x40  /* sta: data in SODR register lsb   */
++        #define   OLF     0x20  /* sta: data in SODL register lsb   */
++        #define   AIP     0x10  /* sta: arbitration in progress     */
++        #define   LOA     0x08  /* sta: arbitration lost            */
++        #define   WOA     0x04  /* sta: arbitration won             */
++        #define   IRST    0x02  /* sta: scsi reset signal           */
++        #define   SDP     0x01  /* sta: scsi parity signal          */
++
++/*0e*/  u8	nc_sstat1;
++	#define   FF3210  0xf0	/* sta: bytes in the scsi fifo      */
++
++/*0f*/  u8	nc_sstat2;
++        #define   ILF1    0x80  /* sta: data in SIDL register msb[W]*/
++        #define   ORF1    0x40  /* sta: data in SODR register msb[W]*/
++        #define   OLF1    0x20  /* sta: data in SODL register msb[W]*/
++        #define   DM      0x04  /* sta: DIFFSENS mismatch (895/6 only) */
++        #define   LDSC    0x02  /* sta: disconnect & reconnect      */
++
++/*10*/  u8	nc_dsa;	/* --> Base page                    */
++/*11*/  u8	nc_dsa1;
++/*12*/  u8	nc_dsa2;
++/*13*/  u8	nc_dsa3;
++
++/*14*/  u8	nc_istat;	/* --> Main Command and status      */
++        #define   CABRT   0x80  /* cmd: abort current operation     */
++        #define   SRST    0x40  /* mod: reset chip                  */
++        #define   SIGP    0x20  /* r/w: message from host to ncr    */
++        #define   SEM     0x10  /* r/w: message between host + ncr  */
++        #define   CON     0x08  /* sta: connected to scsi           */
++        #define   INTF    0x04  /* sta: int on the fly (reset by wr)*/
++        #define   SIP     0x02  /* sta: scsi-interrupt              */
++        #define   DIP     0x01  /* sta: host/script interrupt       */
++
++/*15*/  u8	nc_istat1;	/* 896 and later cores only */
++        #define   FLSH    0x04  /* sta: chip is flushing            */
++        #define   SRUN    0x02  /* sta: scripts are running         */
++        #define   SIRQD   0x01  /* r/w: disable INT pin             */
++
++/*16*/  u8	nc_mbox0;	/* 896 and later cores only */
++/*17*/  u8	nc_mbox1;	/* 896 and later cores only */
++
++/*18*/	u8	nc_ctest0;
++	#define   EHP     0x04	/* 720 even host parity             */
++/*19*/  u8	nc_ctest1;
++
++/*1a*/  u8	nc_ctest2;
++	#define   CSIGP   0x40
++				/* bits 0-2,7 rsvd for C1010        */
++
++/*1b*/  u8	nc_ctest3;
++	#define   FLF     0x08  /* cmd: flush dma fifo              */
++	#define   CLF	  0x04	/* cmd: clear dma fifo		    */
++	#define   FM      0x02  /* mod: fetch pin mode              */
++	#define   WRIE    0x01  /* mod: write and invalidate enable */
++				/* bits 4-7 rsvd for C1010          */
++
++/*1c*/  u32    nc_temp;	/* ### Temporary stack              */
++
++/*20*/	u8	nc_dfifo;
++/*21*/  u8	nc_ctest4;
++	#define   MUX     0x80  /* 720 host bus multiplex mode      */
++	#define   BDIS    0x80  /* mod: burst disable               */
++	#define   MPEE    0x08  /* mod: master parity error enable  */
++
++/*22*/  u8	nc_ctest5;
++	#define   DFS     0x20  /* mod: dma fifo size               */
++				/* bits 0-1, 3-7 rsvd for C1010          */
++/*23*/  u8	nc_ctest6;
++
++/*24*/  u32    nc_dbc;	/* ### Byte count and command       */
++/*28*/  u32    nc_dnad;	/* ### Next command register        */
++/*2c*/  u32    nc_dsp;	/* --> Script Pointer               */
++/*30*/  u32    nc_dsps;	/* --> Script pointer save/opcode#2 */
++
++/*34*/  u8	nc_scratcha;  /* Temporary register a            */
++/*35*/  u8	nc_scratcha1;
++/*36*/  u8	nc_scratcha2;
++/*37*/  u8	nc_scratcha3;
++
++/*38*/  u8	nc_dmode;
++	#define   BL_2    0x80  /* mod: burst length shift value +2 */
++	#define   BL_1    0x40  /* mod: burst length shift value +1 */
++	#define   ERL     0x08  /* mod: enable read line            */
++	#define   ERMP    0x04  /* mod: enable read multiple        */
++	#define   BOF     0x02  /* mod: burst op code fetch         */
++
++/*39*/  u8	nc_dien;
++/*3a*/  u8	nc_sbr;
++
++/*3b*/  u8	nc_dcntl;	/* --> Script execution control     */
++	#define   CLSE    0x80  /* mod: cache line size enable      */
++	#define   PFF     0x40  /* cmd: pre-fetch flush             */
++	#define   PFEN    0x20  /* mod: pre-fetch enable            */
++	#define   EA      0x20  /* mod: 720 enable-ack              */
++	#define   SSM     0x10  /* mod: single step mode            */
++	#define   IRQM    0x08  /* mod: irq mode (1 = totem pole !) */
++	#define   STD     0x04  /* cmd: start dma mode              */
++	#define   IRQD    0x02  /* mod: irq disable                 */
++ 	#define	  NOCOM   0x01	/* cmd: protect sfbr while reselect */
++				/* bits 0-1 rsvd for C1010          */
++
++/*3c*/  u32	nc_adder;
++
++/*40*/  u16	nc_sien;	/* -->: interrupt enable            */
++/*42*/  u16	nc_sist;	/* <--: interrupt status            */
++        #define   SBMC    0x1000/* sta: SCSI Bus Mode Change (895/6 only) */
++        #define   STO     0x0400/* sta: timeout (select)            */
++        #define   GEN     0x0200/* sta: timeout (general)           */
++        #define   HTH     0x0100/* sta: timeout (handshake)         */
++        #define   MA      0x80  /* sta: phase mismatch              */
++        #define   CMP     0x40  /* sta: arbitration complete        */
++        #define   SEL     0x20  /* sta: selected by another device  */
++        #define   RSL     0x10  /* sta: reselected by another device*/
++        #define   SGE     0x08  /* sta: gross error (over/underflow)*/
++        #define   UDC     0x04  /* sta: unexpected disconnect       */
++        #define   RST     0x02  /* sta: scsi bus reset detected     */
++        #define   PAR     0x01  /* sta: scsi parity error           */
++
++/*44*/  u8	nc_slpar;
++/*45*/  u8	nc_swide;
++/*46*/  u8	nc_macntl;
++/*47*/  u8	nc_gpcntl;
++/*48*/  u8	nc_stime0;    /* cmd: timeout for select&handshake*/
++/*49*/  u8	nc_stime1;    /* cmd: timeout user defined        */
++/*4a*/  u16   nc_respid;    /* sta: Reselect-IDs                */
++
++/*4c*/  u8	nc_stest0;
++
++/*4d*/  u8	nc_stest1;
++	#define   SCLK    0x80	/* Use the PCI clock as SCSI clock	*/
++	#define   DBLEN   0x08	/* clock doubler running		*/
++	#define   DBLSEL  0x04	/* clock doubler selected		*/
++  
++
++/*4e*/  u8	nc_stest2;
++	#define   ROF     0x40	/* reset scsi offset (after gross error!) */
++	#define   DIF     0x20  /* 720 SCSI differential mode             */
++	#define   EXT     0x02  /* extended filtering                     */
++
++/*4f*/  u8	nc_stest3;
++	#define   TE     0x80	/* c: tolerAnt enable */
++	#define   HSC    0x20	/* c: Halt SCSI Clock */
++	#define   CSF    0x02	/* c: clear scsi fifo */
++
++/*50*/  u16   nc_sidl;	/* Lowlevel: latched from scsi data */
++/*52*/  u8	nc_stest4;
++	#define   SMODE  0xc0	/* SCSI bus mode      (895/6 only) */
++	#define    SMODE_HVD 0x40	/* High Voltage Differential       */
++	#define    SMODE_SE  0x80	/* Single Ended                    */
++	#define    SMODE_LVD 0xc0	/* Low Voltage Differential        */
++	#define   LCKFRQ 0x20	/* Frequency Lock (895/6 only)     */
++				/* bits 0-5 rsvd for C1010          */
++
++/*53*/  u8	nc_53_;
++/*54*/  u16	nc_sodl;	/* Lowlevel: data out to scsi data  */
++/*56*/	u8	nc_ccntl0;	/* Chip Control 0 (896)             */
++	#define   ENPMJ  0x80	/* Enable Phase Mismatch Jump       */
++	#define   PMJCTL 0x40	/* Phase Mismatch Jump Control      */
++	#define   ENNDJ  0x20	/* Enable Non Data PM Jump          */
++	#define   DISFC  0x10	/* Disable Auto FIFO Clear          */
++	#define   DILS   0x02	/* Disable Internal Load/Store      */
++	#define   DPR    0x01	/* Disable Pipe Req                 */
++
++/*57*/	u8	nc_ccntl1;	/* Chip Control 1 (896)             */
++	#define   ZMOD   0x80	/* High Impedance Mode              */
++	#define	  DIC	 0x10	/* Disable Internal Cycles	    */
++	#define   DDAC   0x08	/* Disable Dual Address Cycle       */
++	#define   XTIMOD 0x04	/* 64-bit Table Ind. Indexing Mode  */
++	#define   EXTIBMV 0x02	/* Enable 64-bit Table Ind. BMOV    */
++	#define   EXDBMV 0x01	/* Enable 64-bit Direct BMOV        */
++
++/*58*/  u16	nc_sbdl;	/* Lowlevel: data from scsi data    */
++/*5a*/  u16	nc_5a_;
++
++/*5c*/  u8	nc_scr0;	/* Working register B               */
++/*5d*/  u8	nc_scr1;	/*                                  */
++/*5e*/  u8	nc_scr2;	/*                                  */
++/*5f*/  u8	nc_scr3;	/*                                  */
++
++/*60*/  u8	nc_scrx[64];	/* Working register C-R             */
++/*a0*/	u32	nc_mmrs;	/* Memory Move Read Selector        */
++/*a4*/	u32	nc_mmws;	/* Memory Move Write Selector       */
++/*a8*/	u32	nc_sfs;		/* Script Fetch Selector            */
++/*ac*/	u32	nc_drs;		/* DSA Relative Selector            */
++/*b0*/	u32	nc_sbms;	/* Static Block Move Selector       */
++/*b4*/	u32	nc_dbms;	/* Dynamic Block Move Selector      */
++/*b8*/	u32	nc_dnad64;	/* DMA Next Address 64              */
++/*bc*/	u16	nc_scntl4;	/* C1010 only                       */
++	#define   U3EN   0x80	/* Enable Ultra 3                   */
++	#define   AIPEN	 0x40   /* Allow check upper byte lanes     */
++	#define   XCLKH_DT 0x08 /* Extra clock of data hold on DT
++					transfer edge	            */
++	#define   XCLKH_ST 0x04 /* Extra clock of data hold on ST
++					transfer edge	            */
++
++/*be*/  u8	nc_aipcntl0;	/* Epat Control 1 C1010 only        */
++/*bf*/  u8	nc_aipcntl1;	/* AIP Control C1010_66 Only        */
++
++/*c0*/	u32	nc_pmjad1;	/* Phase Mismatch Jump Address 1    */
++/*c4*/	u32	nc_pmjad2;	/* Phase Mismatch Jump Address 2    */
++/*c8*/	u8	nc_rbc;		/* Remaining Byte Count             */
++/*c9*/	u8	nc_rbc1;	/*                                  */
++/*ca*/	u8	nc_rbc2;	/*                                  */
++/*cb*/	u8	nc_rbc3;	/*                                  */
++
++/*cc*/	u8	nc_ua;		/* Updated Address                  */
++/*cd*/	u8	nc_ua1;		/*                                  */
++/*ce*/	u8	nc_ua2;		/*                                  */
++/*cf*/	u8	nc_ua3;		/*                                  */
++/*d0*/	u32	nc_esa;		/* Entry Storage Address            */
++/*d4*/	u8	nc_ia;		/* Instruction Address              */
++/*d5*/	u8	nc_ia1;
++/*d6*/	u8	nc_ia2;
++/*d7*/	u8	nc_ia3;
++/*d8*/	u32	nc_sbc;		/* SCSI Byte Count (3 bytes only)   */
++/*dc*/	u32	nc_csbc;	/* Cumulative SCSI Byte Count       */
++
++				/* Following for C1010 only         */
++/*e0*/  u16	nc_crcpad;	/* CRC Value                        */
++/*e2*/  u8	nc_crccntl0;	/* CRC control register             */
++	#define   SNDCRC  0x10	/* Send CRC Request                 */
++/*e3*/  u8	nc_crccntl1;	/* CRC control register             */
++/*e4*/  u32	nc_crcdata;	/* CRC data register                */ 
++/*e8*/  u32	nc_e8_;		/* rsvd 			    */
++/*ec*/  u32	nc_ec_;		/* rsvd 			    */
++/*f0*/  u16	nc_dfbc;	/* DMA FIFO byte count              */ 
++
++};
++
++/*-----------------------------------------------------------
++**
++**	Utility macros for the script.
++**
++**-----------------------------------------------------------
++*/
++
++#define REGJ(p,r) (offsetof(struct ncr_reg, p ## r))
++#define REG(r) REGJ (nc_, r)
++
++typedef u32 ncrcmd;
++
++/*-----------------------------------------------------------
++**
++**	SCSI phases
++**
++**	DT phases illegal for ncr driver.
++**
++**-----------------------------------------------------------
++*/
++
++#define	SCR_DATA_OUT	0x00000000
++#define	SCR_DATA_IN	0x01000000
++#define	SCR_COMMAND	0x02000000
++#define	SCR_STATUS	0x03000000
++#define SCR_DT_DATA_OUT	0x04000000
++#define SCR_DT_DATA_IN	0x05000000
++#define SCR_MSG_OUT	0x06000000
++#define SCR_MSG_IN      0x07000000
++
++#define SCR_ILG_OUT	0x04000000
++#define SCR_ILG_IN	0x05000000
++
++/*-----------------------------------------------------------
++**
++**	Data transfer via SCSI.
++**
++**-----------------------------------------------------------
++**
++**	MOVE_ABS (LEN)
++**	<<start address>>
++**
++**	MOVE_IND (LEN)
++**	<<dnad_offset>>
++**
++**	MOVE_TBL
++**	<<dnad_offset>>
++**
++**-----------------------------------------------------------
++*/
++
++#define OPC_MOVE          0x08000000
++
++#define SCR_MOVE_ABS(l) ((0x00000000 | OPC_MOVE) | (l))
++#define SCR_MOVE_IND(l) ((0x20000000 | OPC_MOVE) | (l))
++#define SCR_MOVE_TBL     (0x10000000 | OPC_MOVE)
++
++#define SCR_CHMOV_ABS(l) ((0x00000000) | (l))
++#define SCR_CHMOV_IND(l) ((0x20000000) | (l))
++#define SCR_CHMOV_TBL     (0x10000000)
++
++struct scr_tblmove {
++        u32  size;
++        u32  addr;
++};
++
++/*-----------------------------------------------------------
++**
++**	Selection
++**
++**-----------------------------------------------------------
++**
++**	SEL_ABS | SCR_ID (0..15)    [ | REL_JMP]
++**	<<alternate_address>>
++**
++**	SEL_TBL | << dnad_offset>>  [ | REL_JMP]
++**	<<alternate_address>>
++**
++**-----------------------------------------------------------
++*/
++
++#define	SCR_SEL_ABS	0x40000000
++#define	SCR_SEL_ABS_ATN	0x41000000
++#define	SCR_SEL_TBL	0x42000000
++#define	SCR_SEL_TBL_ATN	0x43000000
++
++
++#ifdef SCSI_NCR_BIG_ENDIAN
++struct scr_tblsel {
++        u8	sel_scntl3;
++        u8	sel_id;
++        u8	sel_sxfer;
++        u8	sel_scntl4;	
++};
 +#else
-+INT_MODULE_PARM(probe_mem,	0);		/* memory probe? */
++struct scr_tblsel {
++        u8	sel_scntl4;	
++        u8	sel_sxfer;
++        u8	sel_id;
++        u8	sel_scntl3;
++};
 +#endif
- #ifdef CONFIG_PCMCIA_PROBE
- INT_MODULE_PARM(probe_io,	1);		/* IO port probe? */
- INT_MODULE_PARM(mem_limit,	0x10000);
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/53c700.c CVS2_6_14_PA0/drivers/scsi/53c700.c
---- LINUS_2_6_14/drivers/scsi/53c700.c	2005-10-27 21:30:42.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/53c700.c	2005-06-30 08:25:53.000000000 -0600
-@@ -301,6 +301,7 @@
- 	__u8 *memory;
- 	__u32 *script;
- 	struct Scsi_Host *host;
-+	const char *chipname;
- 	static int banner = 0;
- 	int j;
- 
-@@ -401,11 +402,11 @@
- 		printk(KERN_NOTICE "53c700: Version " NCR_700_VERSION " By James.Bottomley at HansenPartnership.com\n");
- 		banner = 1;
- 	}
-+	chipname = hostdata->chip710 ? "53c710" : \
-+		   (hostdata->fast ? "53c700-66" : "53c700");
- 	printk(KERN_NOTICE "scsi%d: %s rev %d %s\n", host->host_no,
--	       hostdata->chip710 ? "53c710" : 
--	       (hostdata->fast ? "53c700-66" : "53c700"),
--	       hostdata->rev, hostdata->differential ?
--	       "(Differential)" : "");
-+			chipname, hostdata->rev,
-+			hostdata->differential ?  "(Differential)" : "");
- 	/* reset the chip */
- 	NCR_700_chip_reset(host);
++
++#define SCR_JMP_REL     0x04000000
++#define SCR_ID(id)	(((u32)(id)) << 16)
++
++/*-----------------------------------------------------------
++**
++**	Waiting for Disconnect or Reselect
++**
++**-----------------------------------------------------------
++**
++**	WAIT_DISC
++**	dummy: <<alternate_address>>
++**
++**	WAIT_RESEL
++**	<<alternate_address>>
++**
++**-----------------------------------------------------------
++*/
++
++#define	SCR_WAIT_DISC	0x48000000
++#define SCR_WAIT_RESEL  0x50000000
++
++/*-----------------------------------------------------------
++**
++**	Bit Set / Reset
++**
++**-----------------------------------------------------------
++**
++**	SET (flags {|.. })
++**
++**	CLR (flags {|.. })
++**
++**-----------------------------------------------------------
++*/
++
++#define SCR_SET(f)     (0x58000000 | (f))
++#define SCR_CLR(f)     (0x60000000 | (f))
++
++#define	SCR_CARRY	0x00000400
++#define	SCR_TRG		0x00000200
++#define	SCR_ACK		0x00000040
++#define	SCR_ATN		0x00000008
++
++
++
++
++/*-----------------------------------------------------------
++**
++**	Memory to memory move
++**
++**-----------------------------------------------------------
++**
++**	COPY (bytecount)
++**	<< source_address >>
++**	<< destination_address >>
++**
++**	SCR_COPY   sets the NO FLUSH option by default.
++**	SCR_COPY_F does not set this option.
++**
++**	For chips which do not support this option,
++**	ncr_copy_and_bind() will remove this bit.
++**-----------------------------------------------------------
++*/
++
++#define SCR_NO_FLUSH 0x01000000
++
++#define SCR_COPY(n) (0xc0000000 | SCR_NO_FLUSH | (n))
++#define SCR_COPY_F(n) (0xc0000000 | (n))
++
++/*-----------------------------------------------------------
++**
++**	Register move and binary operations
++**
++**-----------------------------------------------------------
++**
++**	SFBR_REG (reg, op, data)        reg  = SFBR op data
++**	<< 0 >>
++**
++**	REG_SFBR (reg, op, data)        SFBR = reg op data
++**	<< 0 >>
++**
++**	REG_REG  (reg, op, data)        reg  = reg op data
++**	<< 0 >>
++**
++**-----------------------------------------------------------
++**	On 810A, 860, 825A, 875, 895 and 896 chips the content 
++**	of SFBR register can be used as data (SCR_SFBR_DATA).
++**	The 896 has additionnal IO registers starting at 
++**	offset 0x80. Bit 7 of register offset is stored in 
++**	bit 7 of the SCRIPTS instruction first DWORD.
++**-----------------------------------------------------------
++*/
++
++#define SCR_REG_OFS(ofs) ((((ofs) & 0x7f) << 16ul) + ((ofs) & 0x80)) 
++
++#define SCR_SFBR_REG(reg,op,data) \
++        (0x68000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
++
++#define SCR_REG_SFBR(reg,op,data) \
++        (0x70000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
++
++#define SCR_REG_REG(reg,op,data) \
++        (0x78000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
++
++
++#define      SCR_LOAD   0x00000000
++#define      SCR_SHL    0x01000000
++#define      SCR_OR     0x02000000
++#define      SCR_XOR    0x03000000
++#define      SCR_AND    0x04000000
++#define      SCR_SHR    0x05000000
++#define      SCR_ADD    0x06000000
++#define      SCR_ADDC   0x07000000
++
++#define      SCR_SFBR_DATA   (0x00800000>>8ul)	/* Use SFBR as data */
++
++/*-----------------------------------------------------------
++**
++**	FROM_REG (reg)		  SFBR = reg
++**	<< 0 >>
++**
++**	TO_REG	 (reg)		  reg  = SFBR
++**	<< 0 >>
++**
++**	LOAD_REG (reg, data)	  reg  = <data>
++**	<< 0 >>
++**
++**	LOAD_SFBR(data) 	  SFBR = <data>
++**	<< 0 >>
++**
++**-----------------------------------------------------------
++*/
++
++#define	SCR_FROM_REG(reg) \
++	SCR_REG_SFBR(reg,SCR_OR,0)
++
++#define	SCR_TO_REG(reg) \
++	SCR_SFBR_REG(reg,SCR_OR,0)
++
++#define	SCR_LOAD_REG(reg,data) \
++	SCR_REG_REG(reg,SCR_LOAD,data)
++
++#define SCR_LOAD_SFBR(data) \
++        (SCR_REG_SFBR (gpreg, SCR_LOAD, data))
++
++/*-----------------------------------------------------------
++**
++**	LOAD  from memory   to register.
++**	STORE from register to memory.
++**
++**	Only supported by 810A, 860, 825A, 875, 895 and 896.
++**
++**-----------------------------------------------------------
++**
++**	LOAD_ABS (LEN)
++**	<<start address>>
++**
++**	LOAD_REL (LEN)        (DSA relative)
++**	<<dsa_offset>>
++**
++**-----------------------------------------------------------
++*/
++
++#define SCR_REG_OFS2(ofs) (((ofs) & 0xff) << 16ul)
++#define SCR_NO_FLUSH2	0x02000000
++#define SCR_DSA_REL2	0x10000000
++
++#define SCR_LOAD_R(reg, how, n) \
++        (0xe1000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
++
++#define SCR_STORE_R(reg, how, n) \
++        (0xe0000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
++
++#define SCR_LOAD_ABS(reg, n)	SCR_LOAD_R(reg, SCR_NO_FLUSH2, n)
++#define SCR_LOAD_REL(reg, n)	SCR_LOAD_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2, n)
++#define SCR_LOAD_ABS_F(reg, n)	SCR_LOAD_R(reg, 0, n)
++#define SCR_LOAD_REL_F(reg, n)	SCR_LOAD_R(reg, SCR_DSA_REL2, n)
++
++#define SCR_STORE_ABS(reg, n)	SCR_STORE_R(reg, SCR_NO_FLUSH2, n)
++#define SCR_STORE_REL(reg, n)	SCR_STORE_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2,n)
++#define SCR_STORE_ABS_F(reg, n)	SCR_STORE_R(reg, 0, n)
++#define SCR_STORE_REL_F(reg, n)	SCR_STORE_R(reg, SCR_DSA_REL2, n)
++
++
++/*-----------------------------------------------------------
++**
++**	Waiting for Disconnect or Reselect
++**
++**-----------------------------------------------------------
++**
++**	JUMP            [ | IFTRUE/IFFALSE ( ... ) ]
++**	<<address>>
++**
++**	JUMPR           [ | IFTRUE/IFFALSE ( ... ) ]
++**	<<distance>>
++**
++**	CALL            [ | IFTRUE/IFFALSE ( ... ) ]
++**	<<address>>
++**
++**	CALLR           [ | IFTRUE/IFFALSE ( ... ) ]
++**	<<distance>>
++**
++**	RETURN          [ | IFTRUE/IFFALSE ( ... ) ]
++**	<<dummy>>
++**
++**	INT             [ | IFTRUE/IFFALSE ( ... ) ]
++**	<<ident>>
++**
++**	INT_FLY         [ | IFTRUE/IFFALSE ( ... ) ]
++**	<<ident>>
++**
++**	Conditions:
++**	     WHEN (phase)
++**	     IF   (phase)
++**	     CARRYSET
++**	     DATA (data, mask)
++**
++**-----------------------------------------------------------
++*/
++
++#define SCR_NO_OP       0x80000000
++#define SCR_JUMP        0x80080000
++#define SCR_JUMP64      0x80480000
++#define SCR_JUMPR       0x80880000
++#define SCR_CALL        0x88080000
++#define SCR_CALLR       0x88880000
++#define SCR_RETURN      0x90080000
++#define SCR_INT         0x98080000
++#define SCR_INT_FLY     0x98180000
++
++#define IFFALSE(arg)   (0x00080000 | (arg))
++#define IFTRUE(arg)    (0x00000000 | (arg))
++
++#define WHEN(phase)    (0x00030000 | (phase))
++#define IF(phase)      (0x00020000 | (phase))
++
++#define DATA(D)        (0x00040000 | ((D) & 0xff))
++#define MASK(D,M)      (0x00040000 | (((M ^ 0xff) & 0xff) << 8ul)|((D) & 0xff))
++
++#define CARRYSET       (0x00200000)
++
++/*-----------------------------------------------------------
++**
++**	SCSI  constants.
++**
++**-----------------------------------------------------------
++*/
++
++/*
++**	Status
++*/
++
++#define	S_GOOD		(0x00)
++#define	S_CHECK_COND	(0x02)
++#define	S_COND_MET	(0x04)
++#define	S_BUSY		(0x08)
++#define	S_INT		(0x10)
++#define	S_INT_COND_MET	(0x14)
++#define	S_CONFLICT	(0x18)
++#define	S_TERMINATED	(0x20)
++#define	S_QUEUE_FULL	(0x28)
++#define	S_ILLEGAL	(0xff)
++#define	S_SENSE		(0x80)
++
++/*
++ * End of ncrreg from FreeBSD
++ */
  
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/lasi700.c CVS2_6_14_PA0/drivers/scsi/lasi700.c
---- LINUS_2_6_14/drivers/scsi/lasi700.c	2005-10-27 21:30:42.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/lasi700.c	2005-09-10 12:19:41.000000000 -0600
-@@ -98,7 +98,7 @@
- static int __init
- lasi700_probe(struct parisc_device *dev)
- {
--	unsigned long base = dev->hpa + LASI_SCSI_CORE_OFFSET;
-+	unsigned long base = dev->hpa.start + LASI_SCSI_CORE_OFFSET;
- 	struct NCR_700_Host_Parameters *hostdata;
- 	struct Scsi_Host *host;
+ /*
+ 	Build a scatter/gather entry.
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_defs.h CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_defs.h
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_defs.h	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_defs.h	2005-12-12 09:00:09.000000000 -0700
+@@ -40,7 +40,7 @@
+ #ifndef SYM_DEFS_H
+ #define SYM_DEFS_H
  
-@@ -125,8 +125,6 @@
- 		hostdata->dmode_extra = DMODE_FC2;
- 	}
+-#define SYM_VERSION "2.2.1"
++#define SYM_VERSION "2.2.2"
+ #define SYM_DRIVER_NAME	"sym-" SYM_VERSION
  
--	NCR_700_set_mem_mapped(hostdata);
--
- 	host = NCR_700_detect(&lasi700_template, hostdata, &dev->dev);
- 	if (!host)
- 		goto out_kfree;
-@@ -168,7 +166,7 @@
- }
- 
- static struct parisc_driver lasi700_driver = {
--	.name =		"Lasi SCSI",
-+	.name =		"lasi_scsi",
- 	.id_table =	lasi700_ids,
- 	.probe =	lasi700_probe,
- 	.remove =	__devexit_p(lasi700_driver_remove),
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_fw.c CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_fw.c
---- LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_fw.c	2005-10-27 21:30:42.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_fw.c	2005-09-27 08:18:02.000000000 -0600
+ /*
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_fw.c CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_fw.c
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_fw.c	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_fw.c	2005-09-27 08:18:02.000000000 -0600
 @@ -37,11 +37,7 @@
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
@@ -10564,9 +4197,9 @@
  	SYM_GEN_B(struct SYM_FWB_SCR, start64)
  	SYM_GEN_B(struct SYM_FWB_SCR, pm_handle)
  };
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_fw.h CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_fw.h
---- LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_fw.h	2005-10-27 21:30:42.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_fw.h	2005-09-27 08:18:02.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_fw.h CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_fw.h
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_fw.h	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_fw.h	2005-09-27 08:18:02.000000000 -0600
 @@ -92,9 +92,6 @@
  };
  struct sym_fwb_ofs {
@@ -10587,9 +4220,9 @@
  	SYM_GEN_B(u32, start64);
  	SYM_GEN_B(u32, pm_handle);
  };
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_fw1.h CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_fw1.h
---- LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_fw1.h	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_fw1.h	2005-09-27 08:18:02.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_fw1.h CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_fw1.h
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_fw1.h	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_fw1.h	2005-09-27 08:18:02.000000000 -0600
 @@ -197,12 +197,6 @@
  	u32 bad_status		[  7];
  	u32 wsr_ma_helper	[  4];
@@ -10652,9 +4285,9 @@
  }/*-------------------------< ZERO >-----------------------------*/,{
  	SCR_DATA_ZERO,
  }/*-------------------------< SCRATCH >--------------------------*/,{
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_fw2.h CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_fw2.h
---- LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_fw2.h	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_fw2.h	2005-09-27 08:18:02.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_fw2.h CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_fw2.h
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_fw2.h	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_fw2.h	2005-09-27 08:18:02.000000000 -0600
 @@ -191,13 +191,6 @@
  	u32 pm_wsr_handle	[ 38];
  	u32 wsr_ma_helper	[  4];
@@ -10721,22 +4354,67 @@
  }/*-------------------------< ZERO >-----------------------------*/,{
  	SCR_DATA_ZERO,
  }/*-------------------------< SCRATCH >--------------------------*/,{
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_glue.c CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_glue.c
---- LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_glue.c	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_glue.c	2005-09-27 08:18:02.000000000 -0600
-@@ -514,9 +514,10 @@
-  */
- int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct sym_ccb *cp)
- {
--	int dir;
- 	struct sym_tcb *tp = &np->target[cp->target];
- 	struct sym_lcb *lp = sym_lp(tp, cp->lun);
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_glue.c CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_glue.c
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_glue.c	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_glue.c	2005-12-18 08:29:09.000000000 -0700
+@@ -134,45 +134,6 @@
+ 	}
+ }
+ 
+-/*
+- * We used to try to deal with 64-bit BARs here, but don't any more.
+- * There are many parts of this driver which would need to be modified
+- * to handle a 64-bit base address, including scripts.  I'm uncomfortable
+- * with making those changes when I have no way of testing it, so I'm
+- * just going to disable it.
+- *
+- * Note that some machines (eg HP rx8620 and Superdome) have bus addresses
+- * below 4GB and physical addresses above 4GB.  These will continue to work.
+- */
+-static int __devinit
+-pci_get_base_address(struct pci_dev *pdev, int index, unsigned long *basep)
+-{
+-	u32 tmp;
+-	unsigned long base;
+-#define PCI_BAR_OFFSET(index) (PCI_BASE_ADDRESS_0 + (index<<2))
+-
+-	pci_read_config_dword(pdev, PCI_BAR_OFFSET(index++), &tmp);
+-	base = tmp;
+-	if ((tmp & 0x7) == PCI_BASE_ADDRESS_MEM_TYPE_64) {
+-		pci_read_config_dword(pdev, PCI_BAR_OFFSET(index++), &tmp);
+-		if (tmp > 0) {
+-			dev_err(&pdev->dev,
+-				"BAR %d is 64-bit, disabling\n", index - 1);
+-			base = 0;
+-		}
+-	}
+-
+-	if ((base & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
+-		base &= PCI_BASE_ADDRESS_IO_MASK;
+-	} else {
+-		base &= PCI_BASE_ADDRESS_MEM_MASK;
+-	}
+-
+-	*basep = base;
+-	return index;
+-#undef PCI_BAR_OFFSET
+-}
+-
+ static struct scsi_transport_template *sym2_transport_template = NULL;
+ 
+ /*
+@@ -514,9 +475,8 @@
+  */
+ int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct sym_ccb *cp)
+ {
 +	u32 lastp, goalp;
-+	int dir;
+ 	int dir;
+-	struct sym_tcb *tp = &np->target[cp->target];
+-	struct sym_lcb *lp = sym_lp(tp, cp->lun);
  
  	/*
  	 *  Build the CDB.
-@@ -534,15 +535,47 @@
+@@ -534,15 +494,47 @@
  			sym_set_cam_status(cmd, DID_ERROR);
  			goto out_abort;
  		}
@@ -10754,8 +4432,7 @@
  	/*
 -	 *  Set data pointers.
 +	 *  Set the data pointer.
- 	 */
--	sym_setup_data_pointers(np, cp, dir);
++	 */
 +	switch (dir) {
 +	case DMA_BIDIRECTIONAL:
 +		printk("%s: got DMA_BIDIRECTIONAL command", sym_name(np));
@@ -10778,7 +4455,8 @@
 +
 +	/*
 +	 *  Set all pointers values needed by SCRIPTS.
-+	 */
+ 	 */
+-	sym_setup_data_pointers(np, cp, dir);
 +	cp->phys.head.lastp = cpu_to_scr(lastp);
 +	cp->phys.head.savep = cpu_to_scr(lastp);
 +	cp->startp	    = cp->phys.head.savep;
@@ -10786,7 +4464,7 @@
  
  	/*
  	 *  When `#ifed 1', the code below makes the driver 
-@@ -563,10 +596,7 @@
+@@ -563,10 +555,7 @@
  	/*
  	 *	activate this job.
  	 */
@@ -10794,11 +4472,134 @@
 -		sym_start_next_ccbs(np, lp, 2);
 -	else
 -		sym_put_start_queue(np, cp);
-+	sym_start_next_ccbs(np, lp, 2);
++	sym_put_start_queue(np, cp);
  	return 0;
  
  out_abort:
-@@ -981,15 +1011,13 @@
+@@ -721,7 +710,6 @@
+  *  What we will do regarding the involved SCSI command.
+  */
+ #define SYM_EH_DO_IGNORE	0
+-#define SYM_EH_DO_COMPLETE	1
+ #define SYM_EH_DO_WAIT		2
+ 
+ /*
+@@ -773,25 +761,18 @@
+ 
+ 	dev_warn(&cmd->device->sdev_gendev, "%s operation started.\n", opname);
+ 
++	spin_lock_irq(cmd->device->host->host_lock);
+ 	/* This one is queued in some place -> to wait for completion */
+ 	FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
+ 		struct sym_ccb *cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
+ 		if (cp->cmd == cmd) {
+ 			to_do = SYM_EH_DO_WAIT;
+-			goto prepare;
++			break;
+ 		}
+ 	}
+ 
+-prepare:
+-	/* Prepare stuff to either ignore, complete or wait for completion */
+-	switch(to_do) {
+-	default:
+-	case SYM_EH_DO_IGNORE:
+-		break;
+-	case SYM_EH_DO_WAIT:
++	if (to_do == SYM_EH_DO_WAIT) {
+ 		init_completion(&ep->done);
+-		/* fall through */
+-	case SYM_EH_DO_COMPLETE:
+ 		ep->old_done = cmd->scsi_done;
+ 		cmd->scsi_done = sym_eh_done;
+ 		SYM_UCMD_PTR(cmd)->eh_wait = ep;
+@@ -827,9 +808,6 @@
+ 	}
+ 
+ 	ep->to_do = to_do;
+-	/* Complete the command with locks held as required by the driver */
+-	if (to_do == SYM_EH_DO_COMPLETE)
+-		sym_xpt_done2(np, cmd, DID_ABORT);
+ 
+ 	/* Wait for completion with locks released, as required by kernel */
+ 	if (to_do == SYM_EH_DO_WAIT) {
+@@ -845,6 +823,7 @@
+ 		if (ep->timed_out)
+ 			sts = -2;
+ 	}
++	spin_unlock_irq(cmd->device->host->host_lock);
+ 	dev_warn(&cmd->device->sdev_gendev, "%s operation %s.\n", opname,
+ 			sts==0 ? "complete" :sts==-2 ? "timed-out" : "failed");
+ 	return sts ? SCSI_FAILED : SCSI_SUCCESS;
+@@ -856,46 +835,22 @@
+  */
+ static int sym53c8xx_eh_abort_handler(struct scsi_cmnd *cmd)
+ {
+-	int rc;
+-
+-	spin_lock_irq(cmd->device->host->host_lock);
+-	rc = sym_eh_handler(SYM_EH_ABORT, "ABORT", cmd);
+-	spin_unlock_irq(cmd->device->host->host_lock);
+-
+-	return rc;
++	return sym_eh_handler(SYM_EH_ABORT, "ABORT", cmd);
+ }
+ 
+ static int sym53c8xx_eh_device_reset_handler(struct scsi_cmnd *cmd)
+ {
+-	int rc;
+-
+-	spin_lock_irq(cmd->device->host->host_lock);
+-	rc = sym_eh_handler(SYM_EH_DEVICE_RESET, "DEVICE RESET", cmd);
+-	spin_unlock_irq(cmd->device->host->host_lock);
+-
+-	return rc;
++	return sym_eh_handler(SYM_EH_DEVICE_RESET, "DEVICE RESET", cmd);
+ }
+ 
+ static int sym53c8xx_eh_bus_reset_handler(struct scsi_cmnd *cmd)
+ {
+-	int rc;
+-
+-	spin_lock_irq(cmd->device->host->host_lock);
+-	rc = sym_eh_handler(SYM_EH_BUS_RESET, "BUS RESET", cmd);
+-	spin_unlock_irq(cmd->device->host->host_lock);
+-
+-	return rc;
++	return sym_eh_handler(SYM_EH_BUS_RESET, "BUS RESET", cmd);
+ }
+ 
+ static int sym53c8xx_eh_host_reset_handler(struct scsi_cmnd *cmd)
+ {
+-	int rc;
+-
+-	spin_lock_irq(cmd->device->host->host_lock);
+-	rc = sym_eh_handler(SYM_EH_HOST_RESET, "HOST RESET", cmd);
+-	spin_unlock_irq(cmd->device->host->host_lock);
+-
+-	return rc;
++	return sym_eh_handler(SYM_EH_HOST_RESET, "HOST RESET", cmd);
+ }
+ 
+ /*
+@@ -914,15 +869,12 @@
+ 	if (reqtags > lp->s.scdev_depth)
+ 		reqtags = lp->s.scdev_depth;
+ 
+-	lp->started_limit = reqtags ? reqtags : 2;
+-	lp->started_max   = 1;
+ 	lp->s.reqtags     = reqtags;
+ 
+ 	if (reqtags != oldtags) {
+ 		dev_info(&tp->starget->dev,
+ 		         "tagged command queuing %s, command queue depth %d.\n",
+-		          lp->s.reqtags ? "enabled" : "disabled",
+- 		          lp->started_limit);
++		          lp->s.reqtags ? "enabled" : "disabled", reqtags);
+ 	}
+ }
+ 
+@@ -981,15 +933,14 @@
  
  static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
  {
@@ -10814,21 +4615,41 @@
 -	np = sym_get_hcb(sdev->host);
 -	tp = &np->target[sdev->id];
 -
++	tp->starget = sdev->sdev_target;
  	/*
  	 * Fail the device init if the device is flagged NOSCAN at BOOT in
  	 * the NVRAM.  This may speed up boot and maintain coherency with
-@@ -1005,6 +1033,10 @@
+@@ -999,35 +950,41 @@
+ 	 * lun devices behave badly when asked for a non zero LUN.
+ 	 */
+ 
+-	if ((tp->usrflags & SYM_SCAN_BOOT_DISABLED) ||
+-	    ((tp->usrflags & SYM_SCAN_LUNS_DISABLED) && sdev->lun != 0)) {
++	if (tp->usrflags & SYM_SCAN_BOOT_DISABLED) {
+ 		tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED;
++		starget_printk(KERN_INFO, tp->starget,
++				"Scan at boot disabled in NVRAM\n");
  		return -ENXIO;
  	}
  
+-	tp->starget = sdev->sdev_target;
++	if (tp->usrflags & SYM_SCAN_LUNS_DISABLED) {
++		if (sdev->lun != 0)
++			return -ENXIO;
++		starget_printk(KERN_INFO, tp->starget,
++				"Multiple LUNs disabled in NVRAM\n");
++	}
++
 +	lp = sym_alloc_lcb(np, sdev->id, sdev->lun);
 +	if (!lp)
 +		return -ENOMEM;
 +
- 	tp->starget = sdev->sdev_target;
++	spi_min_period(tp->starget) = tp->usr_period;
++	spi_max_width(tp->starget) = tp->usr_width;
++
  	return 0;
  }
-@@ -1012,22 +1044,14 @@
+ 
  /*
   * Linux entry point for device queue sizing.
   */
@@ -10855,7 +4676,7 @@
  	 *  Get user flags.
  	 */
  	lp->curr_flags = lp->user_flags;
-@@ -1038,10 +1062,10 @@
+@@ -1038,10 +995,10 @@
  	 *  Use at least 2.
  	 *  Donnot use more than our maximum.
  	 */
@@ -10868,7 +4689,7 @@
  		reqtags = 0;
  #if 1 /* Avoid to locally queue commands for no good reasons */
  	if (reqtags > SYM_CONF_MAX_TAG)
-@@ -1050,19 +1074,30 @@
+@@ -1050,19 +1007,30 @@
  #else
  	depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2);
  #endif
@@ -10904,7 +4725,46 @@
  /*
   *  Linux entry point for info() function
   */
-@@ -1926,6 +1961,7 @@
+@@ -1497,7 +1465,7 @@
+ {
+ #if SYM_CONF_DMA_ADDRESSING_MODE > 0
+ #if   SYM_CONF_DMA_ADDRESSING_MODE == 1
+-#define	DMA_DAC_MASK	0x000000ffffffffffULL /* 40-bit */
++#define	DMA_DAC_MASK	DMA_40BIT_MASK
+ #elif SYM_CONF_DMA_ADDRESSING_MODE == 2
+ #define	DMA_DAC_MASK	DMA_64BIT_MASK
+ #endif
+@@ -1820,15 +1788,25 @@
+ static void __devinit
+ sym_init_device(struct pci_dev *pdev, struct sym_device *device)
+ {
+-	int i;
++	int i = 2;
++	struct pci_bus_region bus_addr;
+ 
+ 	device->host_id = SYM_SETUP_HOST_ID;
+ 	device->pdev = pdev;
+ 
+-	i = pci_get_base_address(pdev, 1, &device->mmio_base);
+-	pci_get_base_address(pdev, i, &device->ram_base);
++	pcibios_resource_to_bus(pdev, &bus_addr, &pdev->resource[1]);
++	device->mmio_base = bus_addr.start;
++
++	/*
++	 * If the BAR is 64-bit, resource 2 will be occupied by the
++	 * upper 32 bits
++	 */
++	if (!pdev->resource[i].flags)
++		i++;
++	pcibios_resource_to_bus(pdev, &bus_addr, &pdev->resource[i]);
++	device->ram_base = bus_addr.start;
+ 
+-#ifndef CONFIG_SCSI_SYM53C8XX_IOMAPPED
++#ifdef CONFIG_SCSI_SYM53C8XX_MMIO
+ 	if (device->mmio_base)
+ 		device->s.ioaddr = pci_iomap(pdev, 1,
+ 						pci_resource_len(pdev, 1));
+@@ -1926,6 +1904,7 @@
  	.queuecommand		= sym53c8xx_queue_command,
  	.slave_alloc		= sym53c8xx_slave_alloc,
  	.slave_configure	= sym53c8xx_slave_configure,
@@ -10912,17 +4772,19 @@
  	.eh_abort_handler	= sym53c8xx_eh_abort_handler,
  	.eh_device_reset_handler = sym53c8xx_eh_device_reset_handler,
  	.eh_bus_reset_handler	= sym53c8xx_eh_bus_reset_handler,
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_glue.h CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_glue.h
---- LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_glue.h	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_glue.h	2005-09-27 08:18:02.000000000 -0600
-@@ -68,7 +68,6 @@
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_glue.h CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_glue.h
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_glue.h	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_glue.h	2005-12-18 08:29:09.000000000 -0700
+@@ -68,8 +68,7 @@
   */
  #define	SYM_CONF_TIMER_INTERVAL		((HZ+1)/2)
  
 -#define SYM_OPT_HANDLE_DIR_UNKNOWN
- #define SYM_OPT_HANDLE_DEVICE_QUEUEING
+-#define SYM_OPT_HANDLE_DEVICE_QUEUEING
++#undef SYM_OPT_HANDLE_DEVICE_QUEUEING
  #define SYM_OPT_LIMIT_COMMAND_REORDERING
  
+ /*
 @@ -268,6 +267,5 @@
  void sym_xpt_async_sent_bdr(struct sym_hcb *np, int target);
  int  sym_setup_data_and_start (struct sym_hcb *np, struct scsi_cmnd *csio, struct sym_ccb *cp);
@@ -10930,19 +4792,172 @@
 -void sym_sniff_inquiry(struct sym_hcb *np, struct scsi_cmnd *cmd, int resid);
  
  #endif /* SYM_GLUE_H */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_hipd.c CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_hipd.c
---- LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_hipd.c	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_hipd.c	2005-09-27 08:18:02.000000000 -0600
-@@ -1519,7 +1519,7 @@
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_hipd.c CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_hipd.c
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_hipd.c	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_hipd.c	2005-12-18 08:29:09.000000000 -0700
+@@ -40,6 +40,7 @@
+ 
+ #include <linux/slab.h>
+ #include <asm/param.h>		/* for timeouts in units of HZ */
++#include <scsi/scsi_dbg.h>
+ 
+ #include "sym_glue.h"
+ #include "sym_nvram.h"
+@@ -70,32 +71,12 @@
+ 	printf (".\n");
+ }
+ 
+-/*
+- *  Print out the content of a SCSI message.
+- */
+-static int sym_show_msg (u_char * msg)
+-{
+-	u_char i;
+-	printf ("%x",*msg);
+-	if (*msg==M_EXTENDED) {
+-		for (i=1;i<8;i++) {
+-			if (i-1>msg[1]) break;
+-			printf ("-%x",msg[i]);
+-		}
+-		return (i+1);
+-	} else if ((*msg & 0xf0) == 0x20) {
+-		printf ("-%x",msg[1]);
+-		return (2);
+-	}
+-	return (1);
+-}
+-
+ static void sym_print_msg(struct sym_ccb *cp, char *label, u_char *msg)
+ {
+ 	sym_print_addr(cp->cmd, "%s: ", label);
+ 
+-	sym_show_msg(msg);
+-	printf(".\n");
++	scsi_print_msg(msg);
++	printf("\n");
+ }
+ 
+ static void sym_print_nego_msg(struct sym_hcb *np, int target, char *label, u_char *msg)
+@@ -103,8 +84,8 @@
+ 	struct sym_tcb *tp = &np->target[target];
+ 	dev_info(&tp->starget->dev, "%s: ", label);
+ 
+-	sym_show_msg(msg);
+-	printf(".\n");
++	scsi_print_msg(msg);
++	printf("\n");
+ }
+ 
+ /*
+@@ -635,29 +616,6 @@
+ 	}
+ }
+ 
+-
+-/*
+- * Print out the list of targets that have some flag disabled by user.
+- */
+-static void sym_print_targets_flag(struct sym_hcb *np, int mask, char *msg)
+-{
+-	int cnt;
+-	int i;
+-
+-	for (cnt = 0, i = 0 ; i < SYM_CONF_MAX_TARGET ; i++) {
+-		if (i == np->myaddr)
+-			continue;
+-		if (np->target[i].usrflags & mask) {
+-			if (!cnt++)
+-				printf("%s: %s disabled for targets",
+-					sym_name(np), msg);
+-			printf(" %d", i);
+-		}
+-	}
+-	if (cnt)
+-		printf(".\n");
+-}
+-
  /*
-  *  Insert a job into the start queue.
+  *  Save initial settings of some IO registers.
+  *  Assumed to have been set by BIOS.
+@@ -962,7 +920,7 @@
+ 		tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED);
+ 		tp->usrtags = SYM_SETUP_MAX_TAG;
+ 
+-		sym_nvram_setup_target(np, i, nvram);
++		sym_nvram_setup_target(tp, i, nvram);
+ 
+ 		if (!tp->usrtags)
+ 			tp->usrflags &= ~SYM_TAGS_ENABLED;
+@@ -1005,13 +963,6 @@
+ 			sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl,
+ 			np->rv_ctest3, np->rv_ctest4, np->rv_ctest5);
+ 	}
+-	/*
+-	 *  Let user be aware of targets that have some disable flags set.
+-	 */
+-	sym_print_targets_flag(np, SYM_SCAN_BOOT_DISABLED, "SCAN AT BOOT");
+-	if (sym_verbose)
+-		sym_print_targets_flag(np, SYM_SCAN_LUNS_DISABLED,
+-				       "SCAN FOR LUNS");
+ 
+ 	return 0;
+ }
+@@ -1021,8 +972,8 @@
+  *
+  *  Has to be called with interrupts disabled.
   */
--void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp)
-+static void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp)
+-#ifndef CONFIG_SCSI_SYM53C8XX_IOMAPPED
+-static int sym_regtest (struct sym_hcb *np)
++#ifdef CONFIG_SCSI_SYM53C8XX_MMIO
++static int sym_regtest(struct sym_hcb *np)
+ {
+ 	register volatile u32 data;
+ 	/*
+@@ -1040,20 +991,25 @@
+ #endif
+ 		printf ("CACHE TEST FAILED: reg dstat-sstat2 readback %x.\n",
+ 			(unsigned) data);
+-		return (0x10);
++		return 0x10;
+ 	}
+-	return (0);
++	return 0;
++}
++#else
++static inline int sym_regtest(struct sym_hcb *np)
++{
++	return 0;
+ }
+ #endif
+ 
+-static int sym_snooptest (struct sym_hcb *np)
++static int sym_snooptest(struct sym_hcb *np)
  {
- 	u_short	qidx;
+-	u32	sym_rd, sym_wr, sym_bk, host_rd, host_wr, pc, dstat;
+-	int	i, err=0;
+-#ifndef CONFIG_SCSI_SYM53C8XX_IOMAPPED
+-	err |= sym_regtest (np);
+-	if (err) return (err);
+-#endif
++	u32 sym_rd, sym_wr, sym_bk, host_rd, host_wr, pc, dstat;
++	int i, err;
++
++	err = sym_regtest(np);
++	if (err)
++		return err;
+ restart_test:
+ 	/*
+ 	 *  Enable Master Parity Checking as we intend 
+@@ -1142,7 +1098,7 @@
+ 		err |= 4;
+ 	}
+ 
+-	return (err);
++	return err;
+ }
  
-@@ -3650,7 +3650,7 @@
+ /*
+@@ -3654,7 +3610,7 @@
  	 *  If result is dp_sg = SYM_CONF_MAX_SG, then we are at the 
  	 *  end of the data.
  	 */
@@ -10951,7 +4966,7 @@
  	dp_sg = SYM_CONF_MAX_SG;
  	if (dp_scr != tmp)
  		dp_sg -= (tmp - 8 - (int)dp_scr) / (2*4);
-@@ -3757,7 +3757,7 @@
+@@ -3761,7 +3717,7 @@
  	 *  And our alchemy:) allows to easily calculate the data 
  	 *  script address we want to return for the next data phase.
  	 */
@@ -10960,7 +4975,7 @@
  	dp_ret = dp_ret - 8 - (SYM_CONF_MAX_SG - dp_sg) * (2*4);
  
  	/*
-@@ -3853,7 +3853,7 @@
+@@ -3857,7 +3813,7 @@
  	 *  If all data has been transferred,
  	 *  there is no residual.
  	 */
@@ -10969,7 +4984,7 @@
  		return resid;
  
  	/*
-@@ -4660,30 +4660,7 @@
+@@ -4664,30 +4620,7 @@
  		goto out;
  	cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
  
@@ -11001,7 +5016,27 @@
  		/*
  		 *  If we have been asked for a tagged command.
  		 */
-@@ -4836,12 +4813,6 @@
+@@ -4696,7 +4629,8 @@
+ 			 *  Debugging purpose.
+ 			 */
+ #ifndef SYM_OPT_HANDLE_DEVICE_QUEUEING
+-			assert(lp->busy_itl == 0);
++			if (lp->busy_itl != 0)
++				goto out_free;
+ #endif
+ 			/*
+ 			 *  Allocate resources for tags if not yet.
+@@ -4741,7 +4675,8 @@
+ 			 *  Debugging purpose.
+ 			 */
+ #ifndef SYM_OPT_HANDLE_DEVICE_QUEUEING
+-			assert(lp->busy_itl == 0 && lp->busy_itlq == 0);
++			if (lp->busy_itl != 0 || lp->busy_itlq != 0)
++				goto out_free;
+ #endif
+ 			/*
+ 			 *  Count this nexus for this LUN.
+@@ -4840,12 +4775,6 @@
  			lp->head.resel_sa =
  				cpu_to_scr(SCRIPTB_BA(np, resel_bad_lun));
  	}
@@ -11014,7 +5049,7 @@
  
  	/*
  	 *  We donnot queue more than 1 ccb per target 
-@@ -4993,20 +4964,7 @@
+@@ -4997,20 +4926,7 @@
  struct sym_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln)
  {
  	struct sym_tcb *tp = &np->target[tn];
@@ -11036,7 +5071,7 @@
  
  	/*
  	 *  Initialize the target control block if not yet.
-@@ -5078,13 +5036,7 @@
+@@ -5082,13 +4998,7 @@
  	lp->started_max   = SYM_CONF_MAX_TASK;
  	lp->started_limit = SYM_CONF_MAX_TASK;
  #endif
@@ -11051,7 +5086,7 @@
  fail:
  	return lp;
  }
-@@ -5099,12 +5051,6 @@
+@@ -5103,12 +5013,6 @@
  	int i;
  
  	/*
@@ -11064,7 +5099,7 @@
  	 *  Allocate the task table and and the tag allocation 
  	 *  circular buffer. We want both or none.
  	 */
-@@ -5477,8 +5423,7 @@
+@@ -5481,8 +5385,7 @@
  	/*
  	 *  Donnot start more than 1 command after an error.
  	 */
@@ -11074,7 +5109,7 @@
  #endif
  }
  
-@@ -5517,17 +5462,11 @@
+@@ -5521,17 +5424,11 @@
  	lp = sym_lp(tp, cp->lun);
  
  	/*
@@ -11093,7 +5128,7 @@
  		resid = sym_compute_residual(np, cp);
  
  	/*
-@@ -5547,15 +5486,6 @@
+@@ -5551,15 +5448,6 @@
  	 */
  	sym_set_cam_result_ok(cp, cmd, resid);
  
@@ -11109,7 +5144,7 @@
  #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
  	/*
  	 *  If max number of started ccbs had been reduced,
-@@ -5583,7 +5513,7 @@
+@@ -5587,7 +5475,7 @@
  	/*
  	 *  Requeue a couple of awaiting scsi commands.
  	 */
@@ -11118,7 +5153,7 @@
  		sym_start_next_ccbs(np, lp, 2);
  #endif
  	/*
-@@ -5826,8 +5756,7 @@
+@@ -5830,8 +5718,7 @@
  	SYM_QUEHEAD *qp;
  	struct sym_ccb *cp;
  	struct sym_tcb *tp;
@@ -11128,7 +5163,7 @@
  
  	if (np->scriptz0)
  		sym_mfree_dma(np->scriptz0, np->scriptz_sz, "SCRIPTZ0");
-@@ -5853,16 +5782,6 @@
+@@ -5857,16 +5744,6 @@
  
  	for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) {
  		tp = &np->target[target];
@@ -11145,10 +5180,10 @@
  #if SYM_CONF_MAX_LUN > 1
  		kfree(tp->lunmp);
  #endif 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_hipd.h CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_hipd.h
---- LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_hipd.h	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_hipd.h	2005-09-27 08:18:02.000000000 -0600
-@@ -46,12 +46,6 @@
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_hipd.h CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_hipd.h
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_hipd.h	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_hipd.h	2005-12-18 08:29:09.000000000 -0700
+@@ -48,12 +48,6 @@
   *  They may be defined in platform specific headers, if they 
   *  are useful.
   *
@@ -11161,7 +5196,7 @@
   *    SYM_OPT_HANDLE_DEVICE_QUEUEING
   *        When this option is set, the driver will use a queue per 
   *        device and handle QUEUE FULL status requeuing internally.
-@@ -62,7 +56,6 @@
+@@ -64,7 +58,6 @@
   *        (set for Linux)
   */
  #if 0
@@ -11169,7 +5204,7 @@
  #define SYM_OPT_HANDLE_DEVICE_QUEUEING
  #define SYM_OPT_LIMIT_COMMAND_REORDERING
  #endif
-@@ -414,19 +407,6 @@
+@@ -416,19 +409,6 @@
  	struct sym_lcb **lunmp;		/* Other LCBs [1..MAX_LUN]	*/
  #endif
  
@@ -11180,245 +5215,2374 @@
 -	 */
 -	u32	lun_map[(SYM_CONF_MAX_LUN+31)/32];
 -
--	/*
--	 *  Bitmap that tells about LUNs that haven't yet an LCB 
--	 *  allocated (not discovered or LCB allocation failed).
--	 */
--	u32	busy0_map[(SYM_CONF_MAX_LUN+31)/32];
+-	/*
+-	 *  Bitmap that tells about LUNs that haven't yet an LCB 
+-	 *  allocated (not discovered or LCB allocation failed).
+-	 */
+-	u32	busy0_map[(SYM_CONF_MAX_LUN+31)/32];
+-
+ #ifdef	SYM_HAVE_STCB
+ 	/*
+ 	 *  O/S specific data structure.
+@@ -454,8 +434,10 @@
+ 	 *  Other user settable limits and options.
+ 	 *  These limits are read from the NVRAM if present.
+ 	 */
+-	u_char	usrflags;
+-	u_short	usrtags;
++	unsigned char	usrflags;
++	unsigned char	usr_period;
++	unsigned char	usr_width;
++	unsigned short	usrtags;
+ 	struct scsi_target *starget;
+ };
+ 
+@@ -672,9 +654,6 @@
+ 	 */
+ 	u32	savep;		/* Jump address to saved data pointer	*/
+ 	u32	lastp;		/* SCRIPTS address at end of data	*/
+-#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
+-	u32	wlastp;
+-#endif
+ 
+ 	/*
+ 	 *  Status fields.
+@@ -804,9 +783,6 @@
+ 	SYM_QUEHEAD link_ccbq;	/* Link to free/busy CCB queue	*/
+ 	u32	startp;		/* Initial data pointer		*/
+ 	u32	goalp;		/* Expected last data pointer	*/
+-#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
+-	u32	wgoalp;
+-#endif
+ 	int	ext_sg;		/* Extreme data pointer, used	*/
+ 	int	ext_ofs;	/*  to calculate the residual.	*/
+ #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
+@@ -821,12 +797,6 @@
+ 
+ #define CCB_BA(cp,lbl)	cpu_to_scr(cp->ccb_ba + offsetof(struct sym_ccb, lbl))
+ 
+-#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
+-#define	sym_goalp(cp) ((cp->host_flags & HF_DATA_IN) ? cp->goalp : cp->wgoalp)
+-#else
+-#define	sym_goalp(cp) (cp->goalp)
+-#endif
+-
+ typedef struct device *m_pool_ident_t;
+ 
+ /*
+@@ -1077,9 +1047,10 @@
+ void sym_print_xerr(struct scsi_cmnd *cmd, int x_status);
+ int sym_reset_scsi_bus(struct sym_hcb *np, int enab_int);
+ struct sym_chip *sym_lookup_chip_table(u_short device_id, u_char revision);
+-void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp);
+ #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
+ void sym_start_next_ccbs(struct sym_hcb *np, struct sym_lcb *lp, int maxn);
++#else
++void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp);
+ #endif
+ void sym_start_up(struct sym_hcb *np, int reason);
+ void sym_interrupt(struct sym_hcb *np);
+@@ -1136,71 +1107,6 @@
+ #endif
+ 
+ /*
+- *  Set up data pointers used by SCRIPTS.
+- *  Called from O/S specific code.
+- */
+-static inline void sym_setup_data_pointers(struct sym_hcb *np,
+-		struct sym_ccb *cp, int dir)
+-{
+-	u32 lastp, goalp;
+-
+-	/*
+-	 *  No segments means no data.
+-	 */
+-	if (!cp->segments)
+-		dir = DMA_NONE;
+-
+-	/*
+-	 *  Set the data pointer.
+-	 */
+-	switch(dir) {
+-#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
+-	case DMA_BIDIRECTIONAL:
+-#endif
+-	case DMA_TO_DEVICE:
+-		goalp = SCRIPTA_BA(np, data_out2) + 8;
+-		lastp = goalp - 8 - (cp->segments * (2*4));
+-#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
+-		cp->wgoalp = cpu_to_scr(goalp);
+-		if (dir != DMA_BIDIRECTIONAL)
+-			break;
+-		cp->phys.head.wlastp = cpu_to_scr(lastp);
+-		/* fall through */
+-#else
+-		break;
+-#endif
+-	case DMA_FROM_DEVICE:
+-		cp->host_flags |= HF_DATA_IN;
+-		goalp = SCRIPTA_BA(np, data_in2) + 8;
+-		lastp = goalp - 8 - (cp->segments * (2*4));
+-		break;
+-	case DMA_NONE:
+-	default:
+-#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
+-		cp->host_flags |= HF_DATA_IN;
+-#endif
+-		lastp = goalp = SCRIPTB_BA(np, no_data);
+-		break;
+-	}
+-
+-	/*
+-	 *  Set all pointers values needed by SCRIPTS.
+-	 */
+-	cp->phys.head.lastp = cpu_to_scr(lastp);
+-	cp->phys.head.savep = cpu_to_scr(lastp);
+-	cp->startp	    = cp->phys.head.savep;
+-	cp->goalp	    = cpu_to_scr(goalp);
+-
+-#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
+-	/*
+-	 *  If direction is unknown, start at data_io.
+-	 */
+-	if (dir == DMA_BIDIRECTIONAL)
+-		cp->phys.head.savep = cpu_to_scr(SCRIPTB_BA(np, data_io));
+-#endif
+-}
+-
+-/*
+  *  MEMORY ALLOCATOR.
+  */
+ 
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_malloc.c CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_malloc.c
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_malloc.c	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_malloc.c	2005-09-27 06:03:22.000000000 -0600
+@@ -37,11 +37,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
+-#ifdef __FreeBSD__
+-#include <dev/sym/sym_glue.h>
+-#else
+ #include "sym_glue.h"
+-#endif
+ 
+ /*
+  *  Simple power of two buddy-like generic allocator.
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_nvram.c CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_nvram.c
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_nvram.c	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_nvram.c	2005-12-12 09:00:09.000000000 -0700
+@@ -92,29 +92,32 @@
+  *  Get target set-up from Symbios format NVRAM.
+  */
+ static void
+-sym_Symbios_setup_target(struct sym_hcb *np, int target, Symbios_nvram *nvram)
++sym_Symbios_setup_target(struct sym_tcb *tp, int target, Symbios_nvram *nvram)
+ {
+-	struct sym_tcb *tp = &np->target[target];
+ 	Symbios_target *tn = &nvram->target[target];
+ 
+-	tp->usrtags =
+-		(tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED)? SYM_SETUP_MAX_TAG : 0;
+-
++	if (!(tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED))
++		tp->usrtags = 0;
+ 	if (!(tn->flags & SYMBIOS_DISCONNECT_ENABLE))
+ 		tp->usrflags &= ~SYM_DISC_ENABLED;
+ 	if (!(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME))
+ 		tp->usrflags |= SYM_SCAN_BOOT_DISABLED;
+ 	if (!(tn->flags & SYMBIOS_SCAN_LUNS))
+ 		tp->usrflags |= SYM_SCAN_LUNS_DISABLED;
++	tp->usr_period = (tn->sync_period + 3) / 4;
++	tp->usr_width = (tn->bus_width == 0x8) ? 0 : 1;
+ }
+ 
++static const unsigned char Tekram_sync[16] = {
++	25, 31, 37, 43, 50, 62, 75, 125, 12, 15, 18, 21, 6, 7, 9, 10
++};
++
+ /*
+  *  Get target set-up from Tekram format NVRAM.
+  */
+ static void
+-sym_Tekram_setup_target(struct sym_hcb *np, int target, Tekram_nvram *nvram)
++sym_Tekram_setup_target(struct sym_tcb *tp, int target, Tekram_nvram *nvram)
+ {
+-	struct sym_tcb *tp = &np->target[target];
+ 	struct Tekram_target *tn = &nvram->target[target];
+ 
+ 	if (tn->flags & TEKRAM_TAGGED_COMMANDS) {
+@@ -124,22 +127,22 @@
+ 	if (tn->flags & TEKRAM_DISCONNECT_ENABLE)
+ 		tp->usrflags |= SYM_DISC_ENABLED;
+  
+-	/* If any device does not support parity, we will not use this option */
+-	if (!(tn->flags & TEKRAM_PARITY_CHECK))
+-		np->rv_scntl0  &= ~0x0a; /* SCSI parity checking disabled */
++	if (tn->flags & TEKRAM_SYNC_NEGO)
++		tp->usr_period = Tekram_sync[tn->sync_index & 0xf];
++	tp->usr_width = (tn->flags & TEKRAM_WIDE_NEGO) ? 1 : 0;
+ }
+ 
+ /*
+  *  Get target setup from NVRAM.
+  */
+-void sym_nvram_setup_target(struct sym_hcb *np, int target, struct sym_nvram *nvp)
++void sym_nvram_setup_target(struct sym_tcb *tp, int target, struct sym_nvram *nvp)
+ {
+ 	switch (nvp->type) {
+ 	case SYM_SYMBIOS_NVRAM:
+-		sym_Symbios_setup_target(np, target, &nvp->data.Symbios);
++		sym_Symbios_setup_target(tp, target, &nvp->data.Symbios);
+ 		break;
+ 	case SYM_TEKRAM_NVRAM:
+-		sym_Tekram_setup_target(np, target, &nvp->data.Tekram);
++		sym_Tekram_setup_target(tp, target, &nvp->data.Tekram);
+ 		break;
+ 	default:
+ 		break;
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_nvram.h CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_nvram.h
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_2/sym_nvram.h	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_2/sym_nvram.h	2005-12-12 09:00:09.000000000 -0700
+@@ -194,12 +194,12 @@
+ 
+ #if SYM_CONF_NVRAM_SUPPORT
+ void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram);
+-void sym_nvram_setup_target (struct sym_hcb *np, int target, struct sym_nvram *nvp);
++void sym_nvram_setup_target (struct sym_tcb *tp, int target, struct sym_nvram *nvp);
+ int sym_read_nvram (struct sym_device *np, struct sym_nvram *nvp);
+ char *sym_nvram_type(struct sym_nvram *nvp);
+ #else
+ static inline void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram) { }
+-static inline void sym_nvram_setup_target(struct sym_hcb *np, struct sym_nvram *nvram) { }
++static inline void sym_nvram_setup_target(struct sym_tcb *tp, struct sym_nvram *nvram) { }
+ static inline int sym_read_nvram(struct sym_device *np, struct sym_nvram *nvp)
+ {
+ 	nvp->type = 0;
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_comm.h CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_comm.h
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_comm.h	2005-12-27 13:25:48.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_comm.h	1969-12-31 17:00:00.000000000 -0700
+@@ -1,792 +0,0 @@
+-/******************************************************************************
+-**  High Performance device driver for the Symbios 53C896 controller.
+-**
+-**  Copyright (C) 1998-2001  Gerard Roudier <groudier at free.fr>
+-**
+-**  This driver also supports all the Symbios 53C8XX controller family, 
+-**  except 53C810 revisions < 16, 53C825 revisions < 16 and all 
+-**  revisions of 53C815 controllers.
+-**
+-**  This driver is based on the Linux port of the FreeBSD ncr driver.
+-** 
+-**  Copyright (C) 1994  Wolfgang Stanglmeier
+-**  
+-**-----------------------------------------------------------------------------
+-**  
+-**  This program is free software; you can redistribute it and/or modify
+-**  it under the terms of the GNU General Public License as published by
+-**  the Free Software Foundation; either version 2 of the License, or
+-**  (at your option) any later version.
+-**
+-**  This program is distributed in the hope that it will be useful,
+-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-**  GNU General Public License for more details.
+-**
+-**  You should have received a copy of the GNU General Public License
+-**  along with this program; if not, write to the Free Software
+-**  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+-**
+-**-----------------------------------------------------------------------------
+-**
+-**  The Linux port of the FreeBSD ncr driver has been achieved in 
+-**  november 1995 by:
+-**
+-**          Gerard Roudier              <groudier at free.fr>
+-**
+-**  Being given that this driver originates from the FreeBSD version, and
+-**  in order to keep synergy on both, any suggested enhancements and corrections
+-**  received on Linux are automatically a potential candidate for the FreeBSD 
+-**  version.
+-**
+-**  The original driver has been written for 386bsd and FreeBSD by
+-**          Wolfgang Stanglmeier        <wolf at cologne.de>
+-**          Stefan Esser                <se at mi.Uni-Koeln.de>
+-**
+-**-----------------------------------------------------------------------------
+-**
+-**  Major contributions:
+-**  --------------------
+-**
+-**  NVRAM detection and reading.
+-**    Copyright (C) 1997 Richard Waltham <dormouse at farsrobt.demon.co.uk>
+-**
+-*******************************************************************************
+-*/
+-
+-/*==========================================================
+-**
+-**	Debugging tags
+-**
+-**==========================================================
+-*/
+-
+-#define DEBUG_ALLOC    (0x0001)
+-#define DEBUG_PHASE    (0x0002)
+-#define DEBUG_QUEUE    (0x0008)
+-#define DEBUG_RESULT   (0x0010)
+-#define DEBUG_POINTER  (0x0020)
+-#define DEBUG_SCRIPT   (0x0040)
+-#define DEBUG_TINY     (0x0080)
+-#define DEBUG_TIMING   (0x0100)
+-#define DEBUG_NEGO     (0x0200)
+-#define DEBUG_TAGS     (0x0400)
+-#define DEBUG_SCATTER  (0x0800)
+-#define DEBUG_IC        (0x1000)
+-
+-/*
+-**    Enable/Disable debug messages.
+-**    Can be changed at runtime too.
+-*/
+-
+-#ifdef SCSI_NCR_DEBUG_INFO_SUPPORT
+-static int ncr_debug = SCSI_NCR_DEBUG_FLAGS;
+-	#define DEBUG_FLAGS ncr_debug
+-#else
+-	#define DEBUG_FLAGS	SCSI_NCR_DEBUG_FLAGS
+-#endif
+-
+-static inline struct list_head *ncr_list_pop(struct list_head *head)
+-{
+-	if (!list_empty(head)) {
+-		struct list_head *elem = head->next;
+-
+-		list_del(elem);
+-		return elem;
+-	}
+-
+-	return NULL;
+-}
+-
+-#ifdef __sparc__
+-#include <asm/irq.h>
+-#endif
+-
+-/*==========================================================
+-**
+-**	Simple power of two buddy-like allocator.
+-**
+-**	This simple code is not intended to be fast, but to 
+-**	provide power of 2 aligned memory allocations.
+-**	Since the SCRIPTS processor only supplies 8 bit 
+-**	arithmetic, this allocator allows simple and fast 
+-**	address calculations  from the SCRIPTS code.
+-**	In addition, cache line alignment is guaranteed for 
+-**	power of 2 cache line size.
+-**	Enhanced in linux-2.3.44 to provide a memory pool 
+-**	per pcidev to support dynamic dma mapping. (I would 
+-**	have preferred a real bus astraction, btw).
+-**
+-**==========================================================
+-*/
+-
+-#define MEMO_SHIFT	4	/* 16 bytes minimum memory chunk */
+-#if PAGE_SIZE >= 8192
+-#define MEMO_PAGE_ORDER	0	/* 1 PAGE  maximum */
+-#else
+-#define MEMO_PAGE_ORDER	1	/* 2 PAGES maximum */
+-#endif
+-#define MEMO_FREE_UNUSED	/* Free unused pages immediately */
+-#define MEMO_WARN	1
+-#define MEMO_GFP_FLAGS	GFP_ATOMIC
+-#define MEMO_CLUSTER_SHIFT	(PAGE_SHIFT+MEMO_PAGE_ORDER)
+-#define MEMO_CLUSTER_SIZE	(1UL << MEMO_CLUSTER_SHIFT)
+-#define MEMO_CLUSTER_MASK	(MEMO_CLUSTER_SIZE-1)
+-
+-typedef u_long m_addr_t;	/* Enough bits to bit-hack addresses */
+-typedef struct device *m_bush_t;	/* Something that addresses DMAable */
+-
+-typedef struct m_link {		/* Link between free memory chunks */
+-	struct m_link *next;
+-} m_link_s;
+-
+-typedef struct m_vtob {		/* Virtual to Bus address translation */
+-	struct m_vtob *next;
+-	m_addr_t vaddr;
+-	m_addr_t baddr;
+-} m_vtob_s;
+-#define VTOB_HASH_SHIFT		5
+-#define VTOB_HASH_SIZE		(1UL << VTOB_HASH_SHIFT)
+-#define VTOB_HASH_MASK		(VTOB_HASH_SIZE-1)
+-#define VTOB_HASH_CODE(m)	\
+-	((((m_addr_t) (m)) >> MEMO_CLUSTER_SHIFT) & VTOB_HASH_MASK)
+-
+-typedef struct m_pool {		/* Memory pool of a given kind */
+-	m_bush_t bush;
+-	m_addr_t (*getp)(struct m_pool *);
+-	void (*freep)(struct m_pool *, m_addr_t);
+-	int nump;
+-	m_vtob_s *(vtob[VTOB_HASH_SIZE]);
+-	struct m_pool *next;
+-	struct m_link h[PAGE_SHIFT-MEMO_SHIFT+MEMO_PAGE_ORDER+1];
+-} m_pool_s;
+-
+-static void *___m_alloc(m_pool_s *mp, int size)
+-{
+-	int i = 0;
+-	int s = (1 << MEMO_SHIFT);
+-	int j;
+-	m_addr_t a;
+-	m_link_s *h = mp->h;
+-
+-	if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
+-		return NULL;
+-
+-	while (size > s) {
+-		s <<= 1;
+-		++i;
+-	}
+-
+-	j = i;
+-	while (!h[j].next) {
+-		if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
+-			h[j].next = (m_link_s *)mp->getp(mp);
+-			if (h[j].next)
+-				h[j].next->next = NULL;
+-			break;
+-		}
+-		++j;
+-		s <<= 1;
+-	}
+-	a = (m_addr_t) h[j].next;
+-	if (a) {
+-		h[j].next = h[j].next->next;
+-		while (j > i) {
+-			j -= 1;
+-			s >>= 1;
+-			h[j].next = (m_link_s *) (a+s);
+-			h[j].next->next = NULL;
+-		}
+-	}
+-#ifdef DEBUG
+-	printk("___m_alloc(%d) = %p\n", size, (void *) a);
+-#endif
+-	return (void *) a;
+-}
+-
+-static void ___m_free(m_pool_s *mp, void *ptr, int size)
+-{
+-	int i = 0;
+-	int s = (1 << MEMO_SHIFT);
+-	m_link_s *q;
+-	m_addr_t a, b;
+-	m_link_s *h = mp->h;
+-
+-#ifdef DEBUG
+-	printk("___m_free(%p, %d)\n", ptr, size);
+-#endif
+-
+-	if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
+-		return;
+-
+-	while (size > s) {
+-		s <<= 1;
+-		++i;
+-	}
+-
+-	a = (m_addr_t) ptr;
+-
+-	while (1) {
+-#ifdef MEMO_FREE_UNUSED
+-		if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
+-			mp->freep(mp, a);
+-			break;
+-		}
+-#endif
+-		b = a ^ s;
+-		q = &h[i];
+-		while (q->next && q->next != (m_link_s *) b) {
+-			q = q->next;
+-		}
+-		if (!q->next) {
+-			((m_link_s *) a)->next = h[i].next;
+-			h[i].next = (m_link_s *) a;
+-			break;
+-		}
+-		q->next = q->next->next;
+-		a = a & b;
+-		s <<= 1;
+-		++i;
+-	}
+-}
+-
+-static DEFINE_SPINLOCK(ncr53c8xx_lock);
+-
+-static void *__m_calloc2(m_pool_s *mp, int size, char *name, int uflags)
+-{
+-	void *p;
+-
+-	p = ___m_alloc(mp, size);
+-
+-	if (DEBUG_FLAGS & DEBUG_ALLOC)
+-		printk ("new %-10s[%4d] @%p.\n", name, size, p);
+-
+-	if (p)
+-		memset(p, 0, size);
+-	else if (uflags & MEMO_WARN)
+-		printk (NAME53C8XX ": failed to allocate %s[%d]\n", name, size);
+-
+-	return p;
+-}
+-
+-#define __m_calloc(mp, s, n)	__m_calloc2(mp, s, n, MEMO_WARN)
+-
+-static void __m_free(m_pool_s *mp, void *ptr, int size, char *name)
+-{
+-	if (DEBUG_FLAGS & DEBUG_ALLOC)
+-		printk ("freeing %-10s[%4d] @%p.\n", name, size, ptr);
+-
+-	___m_free(mp, ptr, size);
+-
+-}
+-
+-/*
+- * With pci bus iommu support, we use a default pool of unmapped memory 
+- * for memory we donnot need to DMA from/to and one pool per pcidev for 
+- * memory accessed by the PCI chip. `mp0' is the default not DMAable pool.
+- */
+-
+-static m_addr_t ___mp0_getp(m_pool_s *mp)
+-{
+-	m_addr_t m = __get_free_pages(MEMO_GFP_FLAGS, MEMO_PAGE_ORDER);
+-	if (m)
+-		++mp->nump;
+-	return m;
+-}
+-
+-static void ___mp0_freep(m_pool_s *mp, m_addr_t m)
+-{
+-	free_pages(m, MEMO_PAGE_ORDER);
+-	--mp->nump;
+-}
+-
+-static m_pool_s mp0 = {NULL, ___mp0_getp, ___mp0_freep};
+-
+-/*
+- * DMAable pools.
+- */
+-
+-/*
+- * With pci bus iommu support, we maintain one pool per pcidev and a 
+- * hashed reverse table for virtual to bus physical address translations.
+- */
+-static m_addr_t ___dma_getp(m_pool_s *mp)
+-{
+-	m_addr_t vp;
+-	m_vtob_s *vbp;
+-
+-	vbp = __m_calloc(&mp0, sizeof(*vbp), "VTOB");
+-	if (vbp) {
+-		dma_addr_t daddr;
+-		vp = (m_addr_t) dma_alloc_coherent(mp->bush,
+-						PAGE_SIZE<<MEMO_PAGE_ORDER,
+-						&daddr, GFP_ATOMIC);
+-		if (vp) {
+-			int hc = VTOB_HASH_CODE(vp);
+-			vbp->vaddr = vp;
+-			vbp->baddr = daddr;
+-			vbp->next = mp->vtob[hc];
+-			mp->vtob[hc] = vbp;
+-			++mp->nump;
+-			return vp;
+-		}
+-	}
+-	if (vbp)
+-		__m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
+-	return 0;
+-}
+-
+-static void ___dma_freep(m_pool_s *mp, m_addr_t m)
+-{
+-	m_vtob_s **vbpp, *vbp;
+-	int hc = VTOB_HASH_CODE(m);
+-
+-	vbpp = &mp->vtob[hc];
+-	while (*vbpp && (*vbpp)->vaddr != m)
+-		vbpp = &(*vbpp)->next;
+-	if (*vbpp) {
+-		vbp = *vbpp;
+-		*vbpp = (*vbpp)->next;
+-		dma_free_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER,
+-				  (void *)vbp->vaddr, (dma_addr_t)vbp->baddr);
+-		__m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
+-		--mp->nump;
+-	}
+-}
+-
+-static inline m_pool_s *___get_dma_pool(m_bush_t bush)
+-{
+-	m_pool_s *mp;
+-	for (mp = mp0.next; mp && mp->bush != bush; mp = mp->next);
+-	return mp;
+-}
+-
+-static m_pool_s *___cre_dma_pool(m_bush_t bush)
+-{
+-	m_pool_s *mp;
+-	mp = __m_calloc(&mp0, sizeof(*mp), "MPOOL");
+-	if (mp) {
+-		memset(mp, 0, sizeof(*mp));
+-		mp->bush = bush;
+-		mp->getp = ___dma_getp;
+-		mp->freep = ___dma_freep;
+-		mp->next = mp0.next;
+-		mp0.next = mp;
+-	}
+-	return mp;
+-}
+-
+-static void ___del_dma_pool(m_pool_s *p)
+-{
+-	struct m_pool **pp = &mp0.next;
+-
+-	while (*pp && *pp != p)
+-		pp = &(*pp)->next;
+-	if (*pp) {
+-		*pp = (*pp)->next;
+-		__m_free(&mp0, p, sizeof(*p), "MPOOL");
+-	}
+-}
+-
+-static void *__m_calloc_dma(m_bush_t bush, int size, char *name)
+-{
+-	u_long flags;
+-	struct m_pool *mp;
+-	void *m = NULL;
+-
+-	spin_lock_irqsave(&ncr53c8xx_lock, flags);
+-	mp = ___get_dma_pool(bush);
+-	if (!mp)
+-		mp = ___cre_dma_pool(bush);
+-	if (mp)
+-		m = __m_calloc(mp, size, name);
+-	if (mp && !mp->nump)
+-		___del_dma_pool(mp);
+-	spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
+-
+-	return m;
+-}
+-
+-static void __m_free_dma(m_bush_t bush, void *m, int size, char *name)
+-{
+-	u_long flags;
+-	struct m_pool *mp;
+-
+-	spin_lock_irqsave(&ncr53c8xx_lock, flags);
+-	mp = ___get_dma_pool(bush);
+-	if (mp)
+-		__m_free(mp, m, size, name);
+-	if (mp && !mp->nump)
+-		___del_dma_pool(mp);
+-	spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
+-}
+-
+-static m_addr_t __vtobus(m_bush_t bush, void *m)
+-{
+-	u_long flags;
+-	m_pool_s *mp;
+-	int hc = VTOB_HASH_CODE(m);
+-	m_vtob_s *vp = NULL;
+-	m_addr_t a = ((m_addr_t) m) & ~MEMO_CLUSTER_MASK;
+-
+-	spin_lock_irqsave(&ncr53c8xx_lock, flags);
+-	mp = ___get_dma_pool(bush);
+-	if (mp) {
+-		vp = mp->vtob[hc];
+-		while (vp && (m_addr_t) vp->vaddr != a)
+-			vp = vp->next;
+-	}
+-	spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
+-	return vp ? vp->baddr + (((m_addr_t) m) - a) : 0;
+-}
+-
+-#define _m_calloc_dma(np, s, n)		__m_calloc_dma(np->dev, s, n)
+-#define _m_free_dma(np, p, s, n)	__m_free_dma(np->dev, p, s, n)
+-#define m_calloc_dma(s, n)		_m_calloc_dma(np, s, n)
+-#define m_free_dma(p, s, n)		_m_free_dma(np, p, s, n)
+-#define _vtobus(np, p)			__vtobus(np->dev, p)
+-#define vtobus(p)			_vtobus(np, p)
+-
+-/*
+- *  Deal with DMA mapping/unmapping.
+- */
+-
+-/* To keep track of the dma mapping (sg/single) that has been set */
+-#define __data_mapped	SCp.phase
+-#define __data_mapping	SCp.have_data_in
+-
+-static void __unmap_scsi_data(struct device *dev, struct scsi_cmnd *cmd)
+-{
+-	switch(cmd->__data_mapped) {
+-	case 2:
+-		dma_unmap_sg(dev, cmd->buffer, cmd->use_sg,
+-				cmd->sc_data_direction);
+-		break;
+-	case 1:
+-		dma_unmap_single(dev, cmd->__data_mapping,
+-				 cmd->request_bufflen,
+-				 cmd->sc_data_direction);
+-		break;
+-	}
+-	cmd->__data_mapped = 0;
+-}
+-
+-static u_long __map_scsi_single_data(struct device *dev, struct scsi_cmnd *cmd)
+-{
+-	dma_addr_t mapping;
+-
+-	if (cmd->request_bufflen == 0)
+-		return 0;
+-
+-	mapping = dma_map_single(dev, cmd->request_buffer,
+-				 cmd->request_bufflen,
+-				 cmd->sc_data_direction);
+-	cmd->__data_mapped = 1;
+-	cmd->__data_mapping = mapping;
+-
+-	return mapping;
+-}
+-
+-static int __map_scsi_sg_data(struct device *dev, struct scsi_cmnd *cmd)
+-{
+-	int use_sg;
+-
+-	if (cmd->use_sg == 0)
+-		return 0;
+-
+-	use_sg = dma_map_sg(dev, cmd->buffer, cmd->use_sg,
+-			cmd->sc_data_direction);
+-	cmd->__data_mapped = 2;
+-	cmd->__data_mapping = use_sg;
+-
+-	return use_sg;
+-}
+-
+-#define unmap_scsi_data(np, cmd)	__unmap_scsi_data(np->dev, cmd)
+-#define map_scsi_single_data(np, cmd)	__map_scsi_single_data(np->dev, cmd)
+-#define map_scsi_sg_data(np, cmd)	__map_scsi_sg_data(np->dev, cmd)
+-
+-/*==========================================================
+-**
+-**	Driver setup.
+-**
+-**	This structure is initialized from linux config 
+-**	options. It can be overridden at boot-up by the boot 
+-**	command line.
+-**
+-**==========================================================
+-*/
+-static struct ncr_driver_setup
+-	driver_setup			= SCSI_NCR_DRIVER_SETUP;
+-
+-#ifdef	SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
+-static struct ncr_driver_setup
+-	driver_safe_setup __initdata	= SCSI_NCR_DRIVER_SAFE_SETUP;
+-#endif
+-
+-#define initverbose (driver_setup.verbose)
+-#define bootverbose (np->verbose)
+-
+-
+-/*===================================================================
+-**
+-**	Driver setup from the boot command line
+-**
+-**===================================================================
+-*/
+-
+-#ifdef MODULE
+-#define	ARG_SEP	' '
+-#else
+-#define	ARG_SEP	','
+-#endif
+-
+-#define OPT_TAGS		1
+-#define OPT_MASTER_PARITY	2
+-#define OPT_SCSI_PARITY		3
+-#define OPT_DISCONNECTION	4
+-#define OPT_SPECIAL_FEATURES	5
+-#define OPT_UNUSED_1		6
+-#define OPT_FORCE_SYNC_NEGO	7
+-#define OPT_REVERSE_PROBE	8
+-#define OPT_DEFAULT_SYNC	9
+-#define OPT_VERBOSE		10
+-#define OPT_DEBUG		11
+-#define OPT_BURST_MAX		12
+-#define OPT_LED_PIN		13
+-#define OPT_MAX_WIDE		14
+-#define OPT_SETTLE_DELAY	15
+-#define OPT_DIFF_SUPPORT	16
+-#define OPT_IRQM		17
+-#define OPT_PCI_FIX_UP		18
+-#define OPT_BUS_CHECK		19
+-#define OPT_OPTIMIZE		20
+-#define OPT_RECOVERY		21
+-#define OPT_SAFE_SETUP		22
+-#define OPT_USE_NVRAM		23
+-#define OPT_EXCLUDE		24
+-#define OPT_HOST_ID		25
+-
+-#ifdef SCSI_NCR_IARB_SUPPORT
+-#define OPT_IARB		26
+-#endif
+-
+-static char setup_token[] __initdata = 
+-	"tags:"   "mpar:"
+-	"spar:"   "disc:"
+-	"specf:"  "ultra:"
+-	"fsn:"    "revprob:"
+-	"sync:"   "verb:"
+-	"debug:"  "burst:"
+-	"led:"    "wide:"
+-	"settle:" "diff:"
+-	"irqm:"   "pcifix:"
+-	"buschk:" "optim:"
+-	"recovery:"
+-	"safe:"   "nvram:"
+-	"excl:"   "hostid:"
+-#ifdef SCSI_NCR_IARB_SUPPORT
+-	"iarb:"
+-#endif
+-	;	/* DONNOT REMOVE THIS ';' */
+-
+-#ifdef MODULE
+-#define	ARG_SEP	' '
+-#else
+-#define	ARG_SEP	','
+-#endif
+-
+-static int __init get_setup_token(char *p)
+-{
+-	char *cur = setup_token;
+-	char *pc;
+-	int i = 0;
+-
+-	while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
+-		++pc;
+-		++i;
+-		if (!strncmp(p, cur, pc - cur))
+-			return i;
+-		cur = pc;
+-	}
+-	return 0;
+-}
+-
+-
+-static int __init sym53c8xx__setup(char *str)
+-{
+-#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
+-	char *cur = str;
+-	char *pc, *pv;
+-	int i, val, c;
+-	int xi = 0;
+-
+-	while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
+-		char *pe;
+-
+-		val = 0;
+-		pv = pc;
+-		c = *++pv;
+-
+-		if	(c == 'n')
+-			val = 0;
+-		else if	(c == 'y')
+-			val = 1;
+-		else
+-			val = (int) simple_strtoul(pv, &pe, 0);
+-
+-		switch (get_setup_token(cur)) {
+-		case OPT_TAGS:
+-			driver_setup.default_tags = val;
+-			if (pe && *pe == '/') {
+-				i = 0;
+-				while (*pe && *pe != ARG_SEP && 
+-					i < sizeof(driver_setup.tag_ctrl)-1) {
+-					driver_setup.tag_ctrl[i++] = *pe++;
+-				}
+-				driver_setup.tag_ctrl[i] = '\0';
+-			}
+-			break;
+-		case OPT_MASTER_PARITY:
+-			driver_setup.master_parity = val;
+-			break;
+-		case OPT_SCSI_PARITY:
+-			driver_setup.scsi_parity = val;
+-			break;
+-		case OPT_DISCONNECTION:
+-			driver_setup.disconnection = val;
+-			break;
+-		case OPT_SPECIAL_FEATURES:
+-			driver_setup.special_features = val;
+-			break;
+-		case OPT_FORCE_SYNC_NEGO:
+-			driver_setup.force_sync_nego = val;
+-			break;
+-		case OPT_REVERSE_PROBE:
+-			driver_setup.reverse_probe = val;
+-			break;
+-		case OPT_DEFAULT_SYNC:
+-			driver_setup.default_sync = val;
+-			break;
+-		case OPT_VERBOSE:
+-			driver_setup.verbose = val;
+-			break;
+-		case OPT_DEBUG:
+-			driver_setup.debug = val;
+-			break;
+-		case OPT_BURST_MAX:
+-			driver_setup.burst_max = val;
+-			break;
+-		case OPT_LED_PIN:
+-			driver_setup.led_pin = val;
+-			break;
+-		case OPT_MAX_WIDE:
+-			driver_setup.max_wide = val? 1:0;
+-			break;
+-		case OPT_SETTLE_DELAY:
+-			driver_setup.settle_delay = val;
+-			break;
+-		case OPT_DIFF_SUPPORT:
+-			driver_setup.diff_support = val;
+-			break;
+-		case OPT_IRQM:
+-			driver_setup.irqm = val;
+-			break;
+-		case OPT_PCI_FIX_UP:
+-			driver_setup.pci_fix_up	= val;
+-			break;
+-		case OPT_BUS_CHECK:
+-			driver_setup.bus_check = val;
+-			break;
+-		case OPT_OPTIMIZE:
+-			driver_setup.optimize = val;
+-			break;
+-		case OPT_RECOVERY:
+-			driver_setup.recovery = val;
+-			break;
+-		case OPT_USE_NVRAM:
+-			driver_setup.use_nvram = val;
+-			break;
+-		case OPT_SAFE_SETUP:
+-			memcpy(&driver_setup, &driver_safe_setup,
+-				sizeof(driver_setup));
+-			break;
+-		case OPT_EXCLUDE:
+-			if (xi < SCSI_NCR_MAX_EXCLUDES)
+-				driver_setup.excludes[xi++] = val;
+-			break;
+-		case OPT_HOST_ID:
+-			driver_setup.host_id = val;
+-			break;
+-#ifdef SCSI_NCR_IARB_SUPPORT
+-		case OPT_IARB:
+-			driver_setup.iarb = val;
+-			break;
+-#endif
+-		default:
+-			printk("sym53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur);
+-			break;
+-		}
+-
+-		if ((cur = strchr(cur, ARG_SEP)) != NULL)
+-			++cur;
+-	}
+-#endif /* SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT */
+-	return 1;
+-}
+-
+-/*===================================================================
+-**
+-**	Get device queue depth from boot command line.
+-**
+-**===================================================================
+-*/
+-#define DEF_DEPTH	(driver_setup.default_tags)
+-#define ALL_TARGETS	-2
+-#define NO_TARGET	-1
+-#define ALL_LUNS	-2
+-#define NO_LUN		-1
+-
+-static int device_queue_depth(int unit, int target, int lun)
+-{
+-	int c, h, t, u, v;
+-	char *p = driver_setup.tag_ctrl;
+-	char *ep;
+-
+-	h = -1;
+-	t = NO_TARGET;
+-	u = NO_LUN;
+-	while ((c = *p++) != 0) {
+-		v = simple_strtoul(p, &ep, 0);
+-		switch(c) {
+-		case '/':
+-			++h;
+-			t = ALL_TARGETS;
+-			u = ALL_LUNS;
+-			break;
+-		case 't':
+-			if (t != target)
+-				t = (target == v) ? v : NO_TARGET;
+-			u = ALL_LUNS;
+-			break;
+-		case 'u':
+-			if (u != lun)
+-				u = (lun == v) ? v : NO_LUN;
+-			break;
+-		case 'q':
+-			if (h == unit &&
+-				(t == ALL_TARGETS || t == target) &&
+-				(u == ALL_LUNS    || u == lun))
+-				return v;
+-			break;
+-		case '-':
+-			t = ALL_TARGETS;
+-			u = ALL_LUNS;
+-			break;
+-		default:
+-			break;
+-		}
+-		p = ep;
+-	}
+-	return DEF_DEPTH;
+-}
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_defs.h CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_defs.h
+--- LINUS_2_6_15_RC7/drivers/scsi/sym53c8xx_defs.h	2005-12-27 13:25:48.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/scsi/sym53c8xx_defs.h	1969-12-31 17:00:00.000000000 -0700
+@@ -1,1320 +0,0 @@
+-/******************************************************************************
+-**  High Performance device driver for the Symbios 53C896 controller.
+-**
+-**  Copyright (C) 1998-2001  Gerard Roudier <groudier at free.fr>
+-**
+-**  This driver also supports all the Symbios 53C8XX controller family, 
+-**  except 53C810 revisions < 16, 53C825 revisions < 16 and all 
+-**  revisions of 53C815 controllers.
+-**
+-**  This driver is based on the Linux port of the FreeBSD ncr driver.
+-** 
+-**  Copyright (C) 1994  Wolfgang Stanglmeier
+-**  
+-**-----------------------------------------------------------------------------
+-**  
+-**  This program is free software; you can redistribute it and/or modify
+-**  it under the terms of the GNU General Public License as published by
+-**  the Free Software Foundation; either version 2 of the License, or
+-**  (at your option) any later version.
+-**
+-**  This program is distributed in the hope that it will be useful,
+-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-**  GNU General Public License for more details.
+-**
+-**  You should have received a copy of the GNU General Public License
+-**  along with this program; if not, write to the Free Software
+-**  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+-**
+-**-----------------------------------------------------------------------------
+-**
+-**  The Linux port of the FreeBSD ncr driver has been achieved in 
+-**  november 1995 by:
+-**
+-**          Gerard Roudier              <groudier at free.fr>
+-**
+-**  Being given that this driver originates from the FreeBSD version, and
+-**  in order to keep synergy on both, any suggested enhancements and corrections
+-**  received on Linux are automatically a potential candidate for the FreeBSD 
+-**  version.
+-**
+-**  The original driver has been written for 386bsd and FreeBSD by
+-**          Wolfgang Stanglmeier        <wolf at cologne.de>
+-**          Stefan Esser                <se at mi.Uni-Koeln.de>
+-**
+-**-----------------------------------------------------------------------------
+-**
+-**  Major contributions:
+-**  --------------------
+-**
+-**  NVRAM detection and reading.
+-**    Copyright (C) 1997 Richard Waltham <dormouse at farsrobt.demon.co.uk>
+-**
+-**  Added support for MIPS big endian systems.
+-**    Carsten Langgaard, carstenl at mips.com
+-**    Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
+-**
+-**  Added support for HP PARISC big endian systems.
+-**    Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
+-**
+-*******************************************************************************
+-*/
+-
+-#ifndef SYM53C8XX_DEFS_H
+-#define SYM53C8XX_DEFS_H
+-
+-#include <linux/config.h>
+-
+-/*
+-**	If you want a driver as small as possible, donnot define the 
+-**	following options.
+-*/
+-#define SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
+-#define SCSI_NCR_DEBUG_INFO_SUPPORT
+-
+-/*
+-**	To disable integrity checking, do not define the 
+-**	following option.
+-*/
+-#ifdef	CONFIG_SCSI_NCR53C8XX_INTEGRITY_CHECK
+-#	define SCSI_NCR_ENABLE_INTEGRITY_CHECK
+-#endif
+-
+-/* ---------------------------------------------------------------------
+-** Take into account kernel configured parameters.
+-** Most of these options can be overridden at startup by a command line.
+-** ---------------------------------------------------------------------
+-*/
+-
+-/*
+- * For Ultra2 and Ultra3 SCSI support option, use special features. 
+- *
+- * Value (default) means:
+- *	bit 0 : all features enabled, except:
+- *		bit 1 : PCI Write And Invalidate.
+- *		bit 2 : Data Phase Mismatch handling from SCRIPTS.
+- *
+- * Use boot options ncr53c8xx=specf:1 if you want all chip features to be 
+- * enabled by the driver.
+- */
+-#define	SCSI_NCR_SETUP_SPECIAL_FEATURES		(3)
+-
+-#define SCSI_NCR_MAX_SYNC			(80)
+-
+-/*
+- * Allow tags from 2 to 256, default 8
+- */
+-#ifdef	CONFIG_SCSI_NCR53C8XX_MAX_TAGS
+-#if	CONFIG_SCSI_NCR53C8XX_MAX_TAGS < 2
+-#define SCSI_NCR_MAX_TAGS	(2)
+-#elif	CONFIG_SCSI_NCR53C8XX_MAX_TAGS > 256
+-#define SCSI_NCR_MAX_TAGS	(256)
+-#else
+-#define	SCSI_NCR_MAX_TAGS	CONFIG_SCSI_NCR53C8XX_MAX_TAGS
+-#endif
+-#else
+-#define SCSI_NCR_MAX_TAGS	(8)
+-#endif
+-
+-/*
+- * Allow tagged command queuing support if configured with default number 
+- * of tags set to max (see above).
+- */
+-#ifdef	CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
+-#define	SCSI_NCR_SETUP_DEFAULT_TAGS	CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
+-#elif	defined CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE
+-#define	SCSI_NCR_SETUP_DEFAULT_TAGS	SCSI_NCR_MAX_TAGS
+-#else
+-#define	SCSI_NCR_SETUP_DEFAULT_TAGS	(0)
+-#endif
+-
+-/*
+- * Immediate arbitration
+- */
+-#if defined(CONFIG_SCSI_NCR53C8XX_IARB)
+-#define SCSI_NCR_IARB_SUPPORT
+-#endif
+-
+-/*
+- * Sync transfer frequency at startup.
+- * Allow from 5Mhz to 80Mhz default 20 Mhz.
+- */
+-#ifndef	CONFIG_SCSI_NCR53C8XX_SYNC
+-#define	CONFIG_SCSI_NCR53C8XX_SYNC	(20)
+-#elif	CONFIG_SCSI_NCR53C8XX_SYNC > SCSI_NCR_MAX_SYNC
+-#undef	CONFIG_SCSI_NCR53C8XX_SYNC
+-#define	CONFIG_SCSI_NCR53C8XX_SYNC	SCSI_NCR_MAX_SYNC
+-#endif
+-
+-#if	CONFIG_SCSI_NCR53C8XX_SYNC == 0
+-#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(255)
+-#elif	CONFIG_SCSI_NCR53C8XX_SYNC <= 5
+-#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(50)
+-#elif	CONFIG_SCSI_NCR53C8XX_SYNC <= 20
+-#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(250/(CONFIG_SCSI_NCR53C8XX_SYNC))
+-#elif	CONFIG_SCSI_NCR53C8XX_SYNC <= 33
+-#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(11)
+-#elif	CONFIG_SCSI_NCR53C8XX_SYNC <= 40
+-#define	SCSI_NCR_SETUP_DEFAULT_SYNC	(10)
+-#else
+-#define	SCSI_NCR_SETUP_DEFAULT_SYNC 	(9)
+-#endif
+-
+-/*
+- * Disallow disconnections at boot-up
+- */
+-#ifdef CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT
+-#define SCSI_NCR_SETUP_DISCONNECTION	(0)
+-#else
+-#define SCSI_NCR_SETUP_DISCONNECTION	(1)
+-#endif
+-
+-/*
+- * Force synchronous negotiation for all targets
+- */
+-#ifdef CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO
+-#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO	(1)
+-#else
+-#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO	(0)
+-#endif
+-
+-/*
+- * Disable master parity checking (flawed hardwares need that)
+- */
+-#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK
+-#define SCSI_NCR_SETUP_MASTER_PARITY	(0)
+-#else
+-#define SCSI_NCR_SETUP_MASTER_PARITY	(1)
+-#endif
+-
+-/*
+- * Disable scsi parity checking (flawed devices may need that)
+- */
+-#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK
+-#define SCSI_NCR_SETUP_SCSI_PARITY	(0)
+-#else
+-#define SCSI_NCR_SETUP_SCSI_PARITY	(1)
+-#endif
 -
- #ifdef	SYM_HAVE_STCB
- 	/*
- 	 *  O/S specific data structure.
-@@ -670,9 +650,6 @@
- 	 */
- 	u32	savep;		/* Jump address to saved data pointer	*/
- 	u32	lastp;		/* SCRIPTS address at end of data	*/
--#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
--	u32	wlastp;
+-/*
+- * Settle time after reset at boot-up
+- */
+-#define SCSI_NCR_SETUP_SETTLE_TIME	(2)
+-
+-/*
+-**	Bridge quirks work-around option defaulted to 1.
+-*/
+-#ifndef	SCSI_NCR_PCIQ_WORK_AROUND_OPT
+-#define	SCSI_NCR_PCIQ_WORK_AROUND_OPT	1
 -#endif
- 
- 	/*
- 	 *  Status fields.
-@@ -802,9 +779,6 @@
- 	SYM_QUEHEAD link_ccbq;	/* Link to free/busy CCB queue	*/
- 	u32	startp;		/* Initial data pointer		*/
- 	u32	goalp;		/* Expected last data pointer	*/
--#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
--	u32	wgoalp;
+-
+-/*
+-**	Work-around common bridge misbehaviour.
+-**
+-**	- Do not flush posted writes in the opposite 
+-**	  direction on read.
+-**	- May reorder DMA writes to memory.
+-**
+-**	This option should not affect performances 
+-**	significantly, so it is the default.
+-*/
+-#if	SCSI_NCR_PCIQ_WORK_AROUND_OPT == 1
+-#define	SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
+-#define	SCSI_NCR_PCIQ_MAY_REORDER_WRITES
+-#define	SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
+-
+-/*
+-**	Same as option 1, but also deal with 
+-**	misconfigured interrupts.
+-**
+-**	- Edge triggerred instead of level sensitive.
+-**	- No interrupt line connected.
+-**	- IRQ number misconfigured.
+-**	
+-**	If no interrupt is delivered, the driver will 
+-**	catch the interrupt conditions 10 times per 
+-**	second. No need to say that this option is 
+-**	not recommended.
+-*/
+-#elif	SCSI_NCR_PCIQ_WORK_AROUND_OPT == 2
+-#define	SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
+-#define	SCSI_NCR_PCIQ_MAY_REORDER_WRITES
+-#define	SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
+-#define	SCSI_NCR_PCIQ_BROKEN_INTR
+-
+-/*
+-**	Some bridge designers decided to flush 
+-**	everything prior to deliver the interrupt.
+-**	This option tries to deal with such a 
+-**	behaviour.
+-*/
+-#elif	SCSI_NCR_PCIQ_WORK_AROUND_OPT == 3
+-#define	SCSI_NCR_PCIQ_SYNC_ON_INTR
 -#endif
- 	int	ext_sg;		/* Extreme data pointer, used	*/
- 	int	ext_ofs;	/*  to calculate the residual.	*/
- #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
-@@ -819,12 +793,6 @@
- 
- #define CCB_BA(cp,lbl)	cpu_to_scr(cp->ccb_ba + offsetof(struct sym_ccb, lbl))
- 
--#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
--#define	sym_goalp(cp) ((cp->host_flags & HF_DATA_IN) ? cp->goalp : cp->wgoalp)
+-
+-/*
+-**	Other parameters not configurable with "make config"
+-**	Avoid to change these constants, unless you know what you are doing.
+-*/
+-
+-#define SCSI_NCR_ALWAYS_SIMPLE_TAG
+-#define SCSI_NCR_MAX_SCATTER	(127)
+-#define SCSI_NCR_MAX_TARGET	(16)
+-
+-/*
+-**   Compute some desirable value for CAN_QUEUE 
+-**   and CMD_PER_LUN.
+-**   The driver will use lower values if these 
+-**   ones appear to be too large.
+-*/
+-#define SCSI_NCR_CAN_QUEUE	(8*SCSI_NCR_MAX_TAGS + 2*SCSI_NCR_MAX_TARGET)
+-#define SCSI_NCR_CMD_PER_LUN	(SCSI_NCR_MAX_TAGS)
+-
+-#define SCSI_NCR_SG_TABLESIZE	(SCSI_NCR_MAX_SCATTER)
+-#define SCSI_NCR_TIMER_INTERVAL	(HZ)
+-
+-#if 1 /* defined CONFIG_SCSI_MULTI_LUN */
+-#define SCSI_NCR_MAX_LUN	(16)
 -#else
--#define	sym_goalp(cp) (cp->goalp)
+-#define SCSI_NCR_MAX_LUN	(1)
 -#endif
 -
- typedef struct device *m_pool_ident_t;
- 
- /*
-@@ -1075,7 +1043,6 @@
- void sym_print_xerr(struct scsi_cmnd *cmd, int x_status);
- int sym_reset_scsi_bus(struct sym_hcb *np, int enab_int);
- struct sym_chip *sym_lookup_chip_table(u_short device_id, u_char revision);
--void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp);
- #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
- void sym_start_next_ccbs(struct sym_hcb *np, struct sym_lcb *lp, int maxn);
- #endif
-@@ -1134,71 +1101,6 @@
- #endif
- 
- /*
-- *  Set up data pointers used by SCRIPTS.
-- *  Called from O/S specific code.
+-/*
+- *  IO functions definition for big/little endian CPU support.
+- *  For now, the NCR is only supported in little endian addressing mode, 
 - */
--static inline void sym_setup_data_pointers(struct sym_hcb *np,
--		struct sym_ccb *cp, int dir)
--{
--	u32 lastp, goalp;
 -
--	/*
--	 *  No segments means no data.
--	 */
--	if (!cp->segments)
--		dir = DMA_NONE;
+-#ifdef	__BIG_ENDIAN
 -
--	/*
--	 *  Set the data pointer.
--	 */
--	switch(dir) {
--#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
--	case DMA_BIDIRECTIONAL:
+-#define	inw_l2b		inw
+-#define	inl_l2b		inl
+-#define	outw_b2l	outw
+-#define	outl_b2l	outl
+-
+-#define	readb_raw	readb
+-#define	writeb_raw	writeb
+-
+-#if defined(SCSI_NCR_BIG_ENDIAN)
+-#define	readw_l2b	__raw_readw
+-#define	readl_l2b	__raw_readl
+-#define	writew_b2l	__raw_writew
+-#define	writel_b2l	__raw_writel
+-#define	readw_raw	__raw_readw
+-#define	readl_raw	__raw_readl
+-#define	writew_raw	__raw_writew
+-#define	writel_raw	__raw_writel
+-#else	/* Other big-endian */
+-#define	readw_l2b	readw
+-#define	readl_l2b	readl
+-#define	writew_b2l	writew
+-#define	writel_b2l	writel
+-#define	readw_raw	readw
+-#define	readl_raw	readl
+-#define	writew_raw	writew
+-#define	writel_raw	writel
 -#endif
--	case DMA_TO_DEVICE:
--		goalp = SCRIPTA_BA(np, data_out2) + 8;
--		lastp = goalp - 8 - (cp->segments * (2*4));
--#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
--		cp->wgoalp = cpu_to_scr(goalp);
--		if (dir != DMA_BIDIRECTIONAL)
--			break;
--		cp->phys.head.wlastp = cpu_to_scr(lastp);
--		/* fall through */
+-
+-#else	/* little endian */
+-
+-#define	inw_raw		inw
+-#define	inl_raw		inl
+-#define	outw_raw	outw
+-#define	outl_raw	outl
+-
+-#define	readb_raw	readb
+-#define	readw_raw	readw
+-#define	readl_raw	readl
+-#define	writeb_raw	writeb
+-#define	writew_raw	writew
+-#define	writel_raw	writel
+-
+-#endif
+-
+-#if !defined(__hppa__) && !defined(__mips__)
+-#ifdef	SCSI_NCR_BIG_ENDIAN
+-#error	"The NCR in BIG ENDIAN addressing mode is not (yet) supported"
+-#endif
+-#endif
+-
+-#define MEMORY_BARRIER()	mb()
+-
+-
+-/*
+- *  If the NCR uses big endian addressing mode over the 
+- *  PCI, actual io register addresses for byte and word 
+- *  accesses must be changed according to lane routing.
+- *  Btw, ncr_offb() and ncr_offw() macros only apply to 
+- *  constants and so donnot generate bloated code.
+- */
+-
+-#if	defined(SCSI_NCR_BIG_ENDIAN)
+-
+-#define ncr_offb(o)	(((o)&~3)+((~((o)&3))&3))
+-#define ncr_offw(o)	(((o)&~3)+((~((o)&3))&2))
+-
 -#else
--		break;
+-
+-#define ncr_offb(o)	(o)
+-#define ncr_offw(o)	(o)
+-
 -#endif
--	case DMA_FROM_DEVICE:
--		cp->host_flags |= HF_DATA_IN;
--		goalp = SCRIPTA_BA(np, data_in2) + 8;
--		lastp = goalp - 8 - (cp->segments * (2*4));
--		break;
--	case DMA_NONE:
--	default:
--#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
--		cp->host_flags |= HF_DATA_IN;
+-
+-/*
+- *  If the CPU and the NCR use same endian-ness addressing,
+- *  no byte reordering is needed for script patching.
+- *  Macro cpu_to_scr() is to be used for script patching.
+- *  Macro scr_to_cpu() is to be used for getting a DWORD 
+- *  from the script.
+- */
+-
+-#if	defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
+-
+-#define cpu_to_scr(dw)	cpu_to_le32(dw)
+-#define scr_to_cpu(dw)	le32_to_cpu(dw)
+-
+-#elif	defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
+-
+-#define cpu_to_scr(dw)	cpu_to_be32(dw)
+-#define scr_to_cpu(dw)	be32_to_cpu(dw)
+-
+-#else
+-
+-#define cpu_to_scr(dw)	(dw)
+-#define scr_to_cpu(dw)	(dw)
+-
 -#endif
--		lastp = goalp = SCRIPTB_BA(np, no_data);
--		break;
--	}
 -
--	/*
--	 *  Set all pointers values needed by SCRIPTS.
--	 */
--	cp->phys.head.lastp = cpu_to_scr(lastp);
--	cp->phys.head.savep = cpu_to_scr(lastp);
--	cp->startp	    = cp->phys.head.savep;
--	cp->goalp	    = cpu_to_scr(goalp);
+-/*
+- *  Access to the controller chip.
+- *
+- *  If the CPU and the NCR use same endian-ness addressing,
+- *  no byte reordering is needed for accessing chip io 
+- *  registers. Functions suffixed by '_raw' are assumed 
+- *  to access the chip over the PCI without doing byte 
+- *  reordering. Functions suffixed by '_l2b' are 
+- *  assumed to perform little-endian to big-endian byte 
+- *  reordering, those suffixed by '_b2l' blah, blah,
+- *  blah, ...
+- */
 -
--#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
--	/*
--	 *  If direction is unknown, start at data_io.
--	 */
--	if (dir == DMA_BIDIRECTIONAL)
--		cp->phys.head.savep = cpu_to_scr(SCRIPTB_BA(np, data_io));
+-/*
+- *  MEMORY mapped IO input / output
+- */
+-
+-#define INB_OFF(o)		readb_raw((char __iomem *)np->reg + ncr_offb(o))
+-#define OUTB_OFF(o, val)	writeb_raw((val), (char __iomem *)np->reg + ncr_offb(o))
+-
+-#if	defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
+-
+-#define INW_OFF(o)		readw_l2b((char __iomem *)np->reg + ncr_offw(o))
+-#define INL_OFF(o)		readl_l2b((char __iomem *)np->reg + (o))
+-
+-#define OUTW_OFF(o, val)	writew_b2l((val), (char __iomem *)np->reg + ncr_offw(o))
+-#define OUTL_OFF(o, val)	writel_b2l((val), (char __iomem *)np->reg + (o))
+-
+-#elif	defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
+-
+-#define INW_OFF(o)		readw_b2l((char __iomem *)np->reg + ncr_offw(o))
+-#define INL_OFF(o)		readl_b2l((char __iomem *)np->reg + (o))
+-
+-#define OUTW_OFF(o, val)	writew_l2b((val), (char __iomem *)np->reg + ncr_offw(o))
+-#define OUTL_OFF(o, val)	writel_l2b((val), (char __iomem *)np->reg + (o))
+-
+-#else
+-
+-#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
+-/* Only 8 or 32 bit transfers allowed */
+-#define INW_OFF(o)		(readb((char __iomem *)np->reg + ncr_offw(o)) << 8 | readb((char __iomem *)np->reg + ncr_offw(o) + 1))
+-#else
+-#define INW_OFF(o)		readw_raw((char __iomem *)np->reg + ncr_offw(o))
+-#endif
+-#define INL_OFF(o)		readl_raw((char __iomem *)np->reg + (o))
+-
+-#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
+-/* Only 8 or 32 bit transfers allowed */
+-#define OUTW_OFF(o, val)	do { writeb((char)((val) >> 8), (char __iomem *)np->reg + ncr_offw(o)); writeb((char)(val), (char __iomem *)np->reg + ncr_offw(o) + 1); } while (0)
+-#else
+-#define OUTW_OFF(o, val)	writew_raw((val), (char __iomem *)np->reg + ncr_offw(o))
 -#endif
+-#define OUTL_OFF(o, val)	writel_raw((val), (char __iomem *)np->reg + (o))
+-
+-#endif
+-
+-#define INB(r)		INB_OFF (offsetof(struct ncr_reg,r))
+-#define INW(r)		INW_OFF (offsetof(struct ncr_reg,r))
+-#define INL(r)		INL_OFF (offsetof(struct ncr_reg,r))
+-
+-#define OUTB(r, val)	OUTB_OFF (offsetof(struct ncr_reg,r), (val))
+-#define OUTW(r, val)	OUTW_OFF (offsetof(struct ncr_reg,r), (val))
+-#define OUTL(r, val)	OUTL_OFF (offsetof(struct ncr_reg,r), (val))
+-
+-/*
+- *  Set bit field ON, OFF 
+- */
+-
+-#define OUTONB(r, m)	OUTB(r, INB(r) | (m))
+-#define OUTOFFB(r, m)	OUTB(r, INB(r) & ~(m))
+-#define OUTONW(r, m)	OUTW(r, INW(r) | (m))
+-#define OUTOFFW(r, m)	OUTW(r, INW(r) & ~(m))
+-#define OUTONL(r, m)	OUTL(r, INL(r) | (m))
+-#define OUTOFFL(r, m)	OUTL(r, INL(r) & ~(m))
+-
+-/*
+- *  We normally want the chip to have a consistent view
+- *  of driver internal data structures when we restart it.
+- *  Thus these macros.
+- */
+-#define OUTL_DSP(v)				\
+-	do {					\
+-		MEMORY_BARRIER();		\
+-		OUTL (nc_dsp, (v));		\
+-	} while (0)
+-
+-#define OUTONB_STD()				\
+-	do {					\
+-		MEMORY_BARRIER();		\
+-		OUTONB (nc_dcntl, (STD|NOCOM));	\
+-	} while (0)
+-
+-
+-/*
+-**   NCR53C8XX devices features table.
+-*/
+-struct ncr_chip {
+-	unsigned short	revision_id;
+-	unsigned char	burst_max;	/* log-base-2 of max burst */
+-	unsigned char	offset_max;
+-	unsigned char	nr_divisor;
+-	unsigned int	features;
+-#define FE_LED0		(1<<0)
+-#define FE_WIDE		(1<<1)    /* Wide data transfers */
+-#define FE_ULTRA	(1<<2)	  /* Ultra speed 20Mtrans/sec */
+-#define FE_DBLR		(1<<4)	  /* Clock doubler present */
+-#define FE_QUAD		(1<<5)	  /* Clock quadrupler present */
+-#define FE_ERL		(1<<6)    /* Enable read line */
+-#define FE_CLSE		(1<<7)    /* Cache line size enable */
+-#define FE_WRIE		(1<<8)    /* Write & Invalidate enable */
+-#define FE_ERMP		(1<<9)    /* Enable read multiple */
+-#define FE_BOF		(1<<10)   /* Burst opcode fetch */
+-#define FE_DFS		(1<<11)   /* DMA fifo size */
+-#define FE_PFEN		(1<<12)   /* Prefetch enable */
+-#define FE_LDSTR	(1<<13)   /* Load/Store supported */
+-#define FE_RAM		(1<<14)   /* On chip RAM present */
+-#define FE_VARCLK	(1<<15)   /* SCSI clock may vary */
+-#define FE_RAM8K	(1<<16)   /* On chip RAM sized 8Kb */
+-#define FE_64BIT	(1<<17)   /* Have a 64-bit PCI interface */
+-#define FE_IO256	(1<<18)   /* Requires full 256 bytes in PCI space */
+-#define FE_NOPM		(1<<19)   /* Scripts handles phase mismatch */
+-#define FE_LEDC		(1<<20)   /* Hardware control of LED */
+-#define FE_DIFF		(1<<21)   /* Support Differential SCSI */
+-#define FE_66MHZ 	(1<<23)   /* 66MHz PCI Support */
+-#define FE_DAC	 	(1<<24)   /* Support DAC cycles (64 bit addressing) */
+-#define FE_ISTAT1 	(1<<25)   /* Have ISTAT1, MBOX0, MBOX1 registers */
+-#define FE_DAC_IN_USE	(1<<26)	  /* Platform does DAC cycles */
+-#define FE_EHP		(1<<27)   /* 720: Even host parity */
+-#define FE_MUX		(1<<28)   /* 720: Multiplexed bus */
+-#define FE_EA		(1<<29)   /* 720: Enable Ack */
+-
+-#define FE_CACHE_SET	(FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP)
+-#define FE_SCSI_SET	(FE_WIDE|FE_ULTRA|FE_DBLR|FE_QUAD|F_CLK80)
+-#define FE_SPECIAL_SET	(FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM)
+-};
+-
+-
+-/*
+-**	Driver setup structure.
+-**
+-**	This structure is initialized from linux config options.
+-**	It can be overridden at boot-up by the boot command line.
+-*/
+-#define SCSI_NCR_MAX_EXCLUDES 8
+-struct ncr_driver_setup {
+-	u8	master_parity;
+-	u8	scsi_parity;
+-	u8	disconnection;
+-	u8	special_features;
+-	u8	force_sync_nego;
+-	u8	reverse_probe;
+-	u8	pci_fix_up;
+-	u8	use_nvram;
+-	u8	verbose;
+-	u8	default_tags;
+-	u16	default_sync;
+-	u16	debug;
+-	u8	burst_max;
+-	u8	led_pin;
+-	u8	max_wide;
+-	u8	settle_delay;
+-	u8	diff_support;
+-	u8	irqm;
+-	u8	bus_check;
+-	u8	optimize;
+-	u8	recovery;
+-	u8	host_id;
+-	u16	iarb;
+-	u32	excludes[SCSI_NCR_MAX_EXCLUDES];
+-	char	tag_ctrl[100];
+-};
+-
+-/*
+-**	Initial setup.
+-**	Can be overriden at startup by a command line.
+-*/
+-#define SCSI_NCR_DRIVER_SETUP			\
+-{						\
+-	SCSI_NCR_SETUP_MASTER_PARITY,		\
+-	SCSI_NCR_SETUP_SCSI_PARITY,		\
+-	SCSI_NCR_SETUP_DISCONNECTION,		\
+-	SCSI_NCR_SETUP_SPECIAL_FEATURES,	\
+-	SCSI_NCR_SETUP_FORCE_SYNC_NEGO,		\
+-	0,					\
+-	0,					\
+-	1,					\
+-	0,					\
+-	SCSI_NCR_SETUP_DEFAULT_TAGS,		\
+-	SCSI_NCR_SETUP_DEFAULT_SYNC,		\
+-	0x00,					\
+-	7,					\
+-	0,					\
+-	1,					\
+-	SCSI_NCR_SETUP_SETTLE_TIME,		\
+-	0,					\
+-	0,					\
+-	1,					\
+-	0,					\
+-	0,					\
+-	255,					\
+-	0x00					\
 -}
 -
 -/*
-  *  MEMORY ALLOCATOR.
-  */
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_malloc.c CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_malloc.c
---- LINUS_2_6_14/drivers/scsi/sym53c8xx_2/sym_malloc.c	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/sym53c8xx_2/sym_malloc.c	2005-09-27 06:03:22.000000000 -0600
-@@ -37,11 +37,7 @@
-  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-  */
- 
--#ifdef __FreeBSD__
--#include <dev/sym/sym_glue.h>
+-**	Boot fail safe setup.
+-**	Override initial setup from boot command line:
+-**	ncr53c8xx=safe:y
+-*/
+-#define SCSI_NCR_DRIVER_SAFE_SETUP		\
+-{						\
+-	0,					\
+-	1,					\
+-	0,					\
+-	0,					\
+-	0,					\
+-	0,					\
+-	0,					\
+-	1,					\
+-	2,					\
+-	0,					\
+-	255,					\
+-	0x00,					\
+-	255,					\
+-	0,					\
+-	0,					\
+-	10,					\
+-	1,					\
+-	1,					\
+-	1,					\
+-	0,					\
+-	0,					\
+-	255					\
+-}
+-
+-/**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************/
+-
+-/*-----------------------------------------------------------------
+-**
+-**	The ncr 53c810 register structure.
+-**
+-**-----------------------------------------------------------------
+-*/
+-
+-struct ncr_reg {
+-/*00*/  u8	nc_scntl0;    /* full arb., ena parity, par->ATN  */
+-
+-/*01*/  u8	nc_scntl1;    /* no reset                         */
+-        #define   ISCON   0x10  /* connected to scsi		    */
+-        #define   CRST    0x08  /* force reset                      */
+-        #define   IARB    0x02  /* immediate arbitration            */
+-
+-/*02*/  u8	nc_scntl2;    /* no disconnect expected           */
+-	#define   SDU     0x80  /* cmd: disconnect will raise error */
+-	#define   CHM     0x40  /* sta: chained mode                */
+-	#define   WSS     0x08  /* sta: wide scsi send           [W]*/
+-	#define   WSR     0x01  /* sta: wide scsi received       [W]*/
+-
+-/*03*/  u8	nc_scntl3;    /* cnf system clock dependent       */
+-	#define   EWS     0x08  /* cmd: enable wide scsi         [W]*/
+-	#define   ULTRA   0x80  /* cmd: ULTRA enable                */
+-				/* bits 0-2, 7 rsvd for C1010       */
+-
+-/*04*/  u8	nc_scid;	/* cnf host adapter scsi address    */
+-	#define   RRE     0x40  /* r/w:e enable response to resel.  */
+-	#define   SRE     0x20  /* r/w:e enable response to select  */
+-
+-/*05*/  u8	nc_sxfer;	/* ### Sync speed and count         */
+-				/* bits 6-7 rsvd for C1010          */
+-
+-/*06*/  u8	nc_sdid;	/* ### Destination-ID               */
+-
+-/*07*/  u8	nc_gpreg;	/* ??? IO-Pins                      */
+-
+-/*08*/  u8	nc_sfbr;	/* ### First byte in phase          */
+-
+-/*09*/  u8	nc_socl;
+-	#define   CREQ	  0x80	/* r/w: SCSI-REQ                    */
+-	#define   CACK	  0x40	/* r/w: SCSI-ACK                    */
+-	#define   CBSY	  0x20	/* r/w: SCSI-BSY                    */
+-	#define   CSEL	  0x10	/* r/w: SCSI-SEL                    */
+-	#define   CATN	  0x08	/* r/w: SCSI-ATN                    */
+-	#define   CMSG	  0x04	/* r/w: SCSI-MSG                    */
+-	#define   CC_D	  0x02	/* r/w: SCSI-C_D                    */
+-	#define   CI_O	  0x01	/* r/w: SCSI-I_O                    */
+-
+-/*0a*/  u8	nc_ssid;
+-
+-/*0b*/  u8	nc_sbcl;
+-
+-/*0c*/  u8	nc_dstat;
+-        #define   DFE     0x80  /* sta: dma fifo empty              */
+-        #define   MDPE    0x40  /* int: master data parity error    */
+-        #define   BF      0x20  /* int: script: bus fault           */
+-        #define   ABRT    0x10  /* int: script: command aborted     */
+-        #define   SSI     0x08  /* int: script: single step         */
+-        #define   SIR     0x04  /* int: script: interrupt instruct. */
+-        #define   IID     0x01  /* int: script: illegal instruct.   */
+-
+-/*0d*/  u8	nc_sstat0;
+-        #define   ILF     0x80  /* sta: data in SIDL register lsb   */
+-        #define   ORF     0x40  /* sta: data in SODR register lsb   */
+-        #define   OLF     0x20  /* sta: data in SODL register lsb   */
+-        #define   AIP     0x10  /* sta: arbitration in progress     */
+-        #define   LOA     0x08  /* sta: arbitration lost            */
+-        #define   WOA     0x04  /* sta: arbitration won             */
+-        #define   IRST    0x02  /* sta: scsi reset signal           */
+-        #define   SDP     0x01  /* sta: scsi parity signal          */
+-
+-/*0e*/  u8	nc_sstat1;
+-	#define   FF3210  0xf0	/* sta: bytes in the scsi fifo      */
+-
+-/*0f*/  u8	nc_sstat2;
+-        #define   ILF1    0x80  /* sta: data in SIDL register msb[W]*/
+-        #define   ORF1    0x40  /* sta: data in SODR register msb[W]*/
+-        #define   OLF1    0x20  /* sta: data in SODL register msb[W]*/
+-        #define   DM      0x04  /* sta: DIFFSENS mismatch (895/6 only) */
+-        #define   LDSC    0x02  /* sta: disconnect & reconnect      */
+-
+-/*10*/  u8	nc_dsa;	/* --> Base page                    */
+-/*11*/  u8	nc_dsa1;
+-/*12*/  u8	nc_dsa2;
+-/*13*/  u8	nc_dsa3;
+-
+-/*14*/  u8	nc_istat;	/* --> Main Command and status      */
+-        #define   CABRT   0x80  /* cmd: abort current operation     */
+-        #define   SRST    0x40  /* mod: reset chip                  */
+-        #define   SIGP    0x20  /* r/w: message from host to ncr    */
+-        #define   SEM     0x10  /* r/w: message between host + ncr  */
+-        #define   CON     0x08  /* sta: connected to scsi           */
+-        #define   INTF    0x04  /* sta: int on the fly (reset by wr)*/
+-        #define   SIP     0x02  /* sta: scsi-interrupt              */
+-        #define   DIP     0x01  /* sta: host/script interrupt       */
+-
+-/*15*/  u8	nc_istat1;	/* 896 and later cores only */
+-        #define   FLSH    0x04  /* sta: chip is flushing            */
+-        #define   SRUN    0x02  /* sta: scripts are running         */
+-        #define   SIRQD   0x01  /* r/w: disable INT pin             */
+-
+-/*16*/  u8	nc_mbox0;	/* 896 and later cores only */
+-/*17*/  u8	nc_mbox1;	/* 896 and later cores only */
+-
+-/*18*/	u8	nc_ctest0;
+-	#define   EHP     0x04	/* 720 even host parity             */
+-/*19*/  u8	nc_ctest1;
+-
+-/*1a*/  u8	nc_ctest2;
+-	#define   CSIGP   0x40
+-				/* bits 0-2,7 rsvd for C1010        */
+-
+-/*1b*/  u8	nc_ctest3;
+-	#define   FLF     0x08  /* cmd: flush dma fifo              */
+-	#define   CLF	  0x04	/* cmd: clear dma fifo		    */
+-	#define   FM      0x02  /* mod: fetch pin mode              */
+-	#define   WRIE    0x01  /* mod: write and invalidate enable */
+-				/* bits 4-7 rsvd for C1010          */
+-
+-/*1c*/  u32    nc_temp;	/* ### Temporary stack              */
+-
+-/*20*/	u8	nc_dfifo;
+-/*21*/  u8	nc_ctest4;
+-	#define   MUX     0x80  /* 720 host bus multiplex mode      */
+-	#define   BDIS    0x80  /* mod: burst disable               */
+-	#define   MPEE    0x08  /* mod: master parity error enable  */
+-
+-/*22*/  u8	nc_ctest5;
+-	#define   DFS     0x20  /* mod: dma fifo size               */
+-				/* bits 0-1, 3-7 rsvd for C1010          */
+-/*23*/  u8	nc_ctest6;
+-
+-/*24*/  u32    nc_dbc;	/* ### Byte count and command       */
+-/*28*/  u32    nc_dnad;	/* ### Next command register        */
+-/*2c*/  u32    nc_dsp;	/* --> Script Pointer               */
+-/*30*/  u32    nc_dsps;	/* --> Script pointer save/opcode#2 */
+-
+-/*34*/  u8	nc_scratcha;  /* Temporary register a            */
+-/*35*/  u8	nc_scratcha1;
+-/*36*/  u8	nc_scratcha2;
+-/*37*/  u8	nc_scratcha3;
+-
+-/*38*/  u8	nc_dmode;
+-	#define   BL_2    0x80  /* mod: burst length shift value +2 */
+-	#define   BL_1    0x40  /* mod: burst length shift value +1 */
+-	#define   ERL     0x08  /* mod: enable read line            */
+-	#define   ERMP    0x04  /* mod: enable read multiple        */
+-	#define   BOF     0x02  /* mod: burst op code fetch         */
+-
+-/*39*/  u8	nc_dien;
+-/*3a*/  u8	nc_sbr;
+-
+-/*3b*/  u8	nc_dcntl;	/* --> Script execution control     */
+-	#define   CLSE    0x80  /* mod: cache line size enable      */
+-	#define   PFF     0x40  /* cmd: pre-fetch flush             */
+-	#define   PFEN    0x20  /* mod: pre-fetch enable            */
+-	#define   EA      0x20  /* mod: 720 enable-ack              */
+-	#define   SSM     0x10  /* mod: single step mode            */
+-	#define   IRQM    0x08  /* mod: irq mode (1 = totem pole !) */
+-	#define   STD     0x04  /* cmd: start dma mode              */
+-	#define   IRQD    0x02  /* mod: irq disable                 */
+- 	#define	  NOCOM   0x01	/* cmd: protect sfbr while reselect */
+-				/* bits 0-1 rsvd for C1010          */
+-
+-/*3c*/  u32	nc_adder;
+-
+-/*40*/  u16	nc_sien;	/* -->: interrupt enable            */
+-/*42*/  u16	nc_sist;	/* <--: interrupt status            */
+-        #define   SBMC    0x1000/* sta: SCSI Bus Mode Change (895/6 only) */
+-        #define   STO     0x0400/* sta: timeout (select)            */
+-        #define   GEN     0x0200/* sta: timeout (general)           */
+-        #define   HTH     0x0100/* sta: timeout (handshake)         */
+-        #define   MA      0x80  /* sta: phase mismatch              */
+-        #define   CMP     0x40  /* sta: arbitration complete        */
+-        #define   SEL     0x20  /* sta: selected by another device  */
+-        #define   RSL     0x10  /* sta: reselected by another device*/
+-        #define   SGE     0x08  /* sta: gross error (over/underflow)*/
+-        #define   UDC     0x04  /* sta: unexpected disconnect       */
+-        #define   RST     0x02  /* sta: scsi bus reset detected     */
+-        #define   PAR     0x01  /* sta: scsi parity error           */
+-
+-/*44*/  u8	nc_slpar;
+-/*45*/  u8	nc_swide;
+-/*46*/  u8	nc_macntl;
+-/*47*/  u8	nc_gpcntl;
+-/*48*/  u8	nc_stime0;    /* cmd: timeout for select&handshake*/
+-/*49*/  u8	nc_stime1;    /* cmd: timeout user defined        */
+-/*4a*/  u16   nc_respid;    /* sta: Reselect-IDs                */
+-
+-/*4c*/  u8	nc_stest0;
+-
+-/*4d*/  u8	nc_stest1;
+-	#define   SCLK    0x80	/* Use the PCI clock as SCSI clock	*/
+-	#define   DBLEN   0x08	/* clock doubler running		*/
+-	#define   DBLSEL  0x04	/* clock doubler selected		*/
+-  
+-
+-/*4e*/  u8	nc_stest2;
+-	#define   ROF     0x40	/* reset scsi offset (after gross error!) */
+-	#define   DIF     0x20  /* 720 SCSI differential mode             */
+-	#define   EXT     0x02  /* extended filtering                     */
+-
+-/*4f*/  u8	nc_stest3;
+-	#define   TE     0x80	/* c: tolerAnt enable */
+-	#define   HSC    0x20	/* c: Halt SCSI Clock */
+-	#define   CSF    0x02	/* c: clear scsi fifo */
+-
+-/*50*/  u16   nc_sidl;	/* Lowlevel: latched from scsi data */
+-/*52*/  u8	nc_stest4;
+-	#define   SMODE  0xc0	/* SCSI bus mode      (895/6 only) */
+-	#define    SMODE_HVD 0x40	/* High Voltage Differential       */
+-	#define    SMODE_SE  0x80	/* Single Ended                    */
+-	#define    SMODE_LVD 0xc0	/* Low Voltage Differential        */
+-	#define   LCKFRQ 0x20	/* Frequency Lock (895/6 only)     */
+-				/* bits 0-5 rsvd for C1010          */
+-
+-/*53*/  u8	nc_53_;
+-/*54*/  u16	nc_sodl;	/* Lowlevel: data out to scsi data  */
+-/*56*/	u8	nc_ccntl0;	/* Chip Control 0 (896)             */
+-	#define   ENPMJ  0x80	/* Enable Phase Mismatch Jump       */
+-	#define   PMJCTL 0x40	/* Phase Mismatch Jump Control      */
+-	#define   ENNDJ  0x20	/* Enable Non Data PM Jump          */
+-	#define   DISFC  0x10	/* Disable Auto FIFO Clear          */
+-	#define   DILS   0x02	/* Disable Internal Load/Store      */
+-	#define   DPR    0x01	/* Disable Pipe Req                 */
+-
+-/*57*/	u8	nc_ccntl1;	/* Chip Control 1 (896)             */
+-	#define   ZMOD   0x80	/* High Impedance Mode              */
+-	#define	  DIC	 0x10	/* Disable Internal Cycles	    */
+-	#define   DDAC   0x08	/* Disable Dual Address Cycle       */
+-	#define   XTIMOD 0x04	/* 64-bit Table Ind. Indexing Mode  */
+-	#define   EXTIBMV 0x02	/* Enable 64-bit Table Ind. BMOV    */
+-	#define   EXDBMV 0x01	/* Enable 64-bit Direct BMOV        */
+-
+-/*58*/  u16	nc_sbdl;	/* Lowlevel: data from scsi data    */
+-/*5a*/  u16	nc_5a_;
+-
+-/*5c*/  u8	nc_scr0;	/* Working register B               */
+-/*5d*/  u8	nc_scr1;	/*                                  */
+-/*5e*/  u8	nc_scr2;	/*                                  */
+-/*5f*/  u8	nc_scr3;	/*                                  */
+-
+-/*60*/  u8	nc_scrx[64];	/* Working register C-R             */
+-/*a0*/	u32	nc_mmrs;	/* Memory Move Read Selector        */
+-/*a4*/	u32	nc_mmws;	/* Memory Move Write Selector       */
+-/*a8*/	u32	nc_sfs;		/* Script Fetch Selector            */
+-/*ac*/	u32	nc_drs;		/* DSA Relative Selector            */
+-/*b0*/	u32	nc_sbms;	/* Static Block Move Selector       */
+-/*b4*/	u32	nc_dbms;	/* Dynamic Block Move Selector      */
+-/*b8*/	u32	nc_dnad64;	/* DMA Next Address 64              */
+-/*bc*/	u16	nc_scntl4;	/* C1010 only                       */
+-	#define   U3EN   0x80	/* Enable Ultra 3                   */
+-	#define   AIPEN	 0x40   /* Allow check upper byte lanes     */
+-	#define   XCLKH_DT 0x08 /* Extra clock of data hold on DT
+-					transfer edge	            */
+-	#define   XCLKH_ST 0x04 /* Extra clock of data hold on ST
+-					transfer edge	            */
+-
+-/*be*/  u8	nc_aipcntl0;	/* Epat Control 1 C1010 only        */
+-/*bf*/  u8	nc_aipcntl1;	/* AIP Control C1010_66 Only        */
+-
+-/*c0*/	u32	nc_pmjad1;	/* Phase Mismatch Jump Address 1    */
+-/*c4*/	u32	nc_pmjad2;	/* Phase Mismatch Jump Address 2    */
+-/*c8*/	u8	nc_rbc;		/* Remaining Byte Count             */
+-/*c9*/	u8	nc_rbc1;	/*                                  */
+-/*ca*/	u8	nc_rbc2;	/*                                  */
+-/*cb*/	u8	nc_rbc3;	/*                                  */
+-
+-/*cc*/	u8	nc_ua;		/* Updated Address                  */
+-/*cd*/	u8	nc_ua1;		/*                                  */
+-/*ce*/	u8	nc_ua2;		/*                                  */
+-/*cf*/	u8	nc_ua3;		/*                                  */
+-/*d0*/	u32	nc_esa;		/* Entry Storage Address            */
+-/*d4*/	u8	nc_ia;		/* Instruction Address              */
+-/*d5*/	u8	nc_ia1;
+-/*d6*/	u8	nc_ia2;
+-/*d7*/	u8	nc_ia3;
+-/*d8*/	u32	nc_sbc;		/* SCSI Byte Count (3 bytes only)   */
+-/*dc*/	u32	nc_csbc;	/* Cumulative SCSI Byte Count       */
+-
+-				/* Following for C1010 only         */
+-/*e0*/  u16	nc_crcpad;	/* CRC Value                        */
+-/*e2*/  u8	nc_crccntl0;	/* CRC control register             */
+-	#define   SNDCRC  0x10	/* Send CRC Request                 */
+-/*e3*/  u8	nc_crccntl1;	/* CRC control register             */
+-/*e4*/  u32	nc_crcdata;	/* CRC data register                */ 
+-/*e8*/  u32	nc_e8_;		/* rsvd 			    */
+-/*ec*/  u32	nc_ec_;		/* rsvd 			    */
+-/*f0*/  u16	nc_dfbc;	/* DMA FIFO byte count              */ 
+-
+-};
+-
+-/*-----------------------------------------------------------
+-**
+-**	Utility macros for the script.
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-#define REGJ(p,r) (offsetof(struct ncr_reg, p ## r))
+-#define REG(r) REGJ (nc_, r)
+-
+-typedef u32 ncrcmd;
+-
+-/*-----------------------------------------------------------
+-**
+-**	SCSI phases
+-**
+-**	DT phases illegal for ncr driver.
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-#define	SCR_DATA_OUT	0x00000000
+-#define	SCR_DATA_IN	0x01000000
+-#define	SCR_COMMAND	0x02000000
+-#define	SCR_STATUS	0x03000000
+-#define SCR_DT_DATA_OUT	0x04000000
+-#define SCR_DT_DATA_IN	0x05000000
+-#define SCR_MSG_OUT	0x06000000
+-#define SCR_MSG_IN      0x07000000
+-
+-#define SCR_ILG_OUT	0x04000000
+-#define SCR_ILG_IN	0x05000000
+-
+-/*-----------------------------------------------------------
+-**
+-**	Data transfer via SCSI.
+-**
+-**-----------------------------------------------------------
+-**
+-**	MOVE_ABS (LEN)
+-**	<<start address>>
+-**
+-**	MOVE_IND (LEN)
+-**	<<dnad_offset>>
+-**
+-**	MOVE_TBL
+-**	<<dnad_offset>>
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-#define OPC_MOVE          0x08000000
+-
+-#define SCR_MOVE_ABS(l) ((0x00000000 | OPC_MOVE) | (l))
+-#define SCR_MOVE_IND(l) ((0x20000000 | OPC_MOVE) | (l))
+-#define SCR_MOVE_TBL     (0x10000000 | OPC_MOVE)
+-
+-#define SCR_CHMOV_ABS(l) ((0x00000000) | (l))
+-#define SCR_CHMOV_IND(l) ((0x20000000) | (l))
+-#define SCR_CHMOV_TBL     (0x10000000)
+-
+-struct scr_tblmove {
+-        u32  size;
+-        u32  addr;
+-};
+-
+-/*-----------------------------------------------------------
+-**
+-**	Selection
+-**
+-**-----------------------------------------------------------
+-**
+-**	SEL_ABS | SCR_ID (0..15)    [ | REL_JMP]
+-**	<<alternate_address>>
+-**
+-**	SEL_TBL | << dnad_offset>>  [ | REL_JMP]
+-**	<<alternate_address>>
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-#define	SCR_SEL_ABS	0x40000000
+-#define	SCR_SEL_ABS_ATN	0x41000000
+-#define	SCR_SEL_TBL	0x42000000
+-#define	SCR_SEL_TBL_ATN	0x43000000
+-
+-
+-#ifdef SCSI_NCR_BIG_ENDIAN
+-struct scr_tblsel {
+-        u8	sel_scntl3;
+-        u8	sel_id;
+-        u8	sel_sxfer;
+-        u8	sel_scntl4;	
+-};
 -#else
- #include "sym_glue.h"
+-struct scr_tblsel {
+-        u8	sel_scntl4;	
+-        u8	sel_sxfer;
+-        u8	sel_id;
+-        u8	sel_scntl3;
+-};
 -#endif
- 
- /*
-  *  Simple power of two buddy-like generic allocator.
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/scsi/zalon.c CVS2_6_14_PA0/drivers/scsi/zalon.c
---- LINUS_2_6_14/drivers/scsi/zalon.c	2005-10-27 21:30:42.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/scsi/zalon.c	2005-09-10 12:19:41.000000000 -0600
-@@ -88,7 +88,7 @@
- 	struct gsc_irq gsc_irq;
- 	u32 zalon_vers;
- 	int error = -ENODEV;
--	void __iomem *zalon = ioremap(dev->hpa, 4096);
-+	void __iomem *zalon = ioremap(dev->hpa.start, 4096);
- 	void __iomem *io_port = zalon + GSC_SCSI_ZALON_OFFSET;
- 	static int unit = 0;
- 	struct Scsi_Host *host;
-@@ -127,7 +127,7 @@
- 	device.chip		= zalon720_chip;
- 	device.host_id		= 7;
- 	device.dev		= &dev->dev;
--	device.slot.base	= dev->hpa + GSC_SCSI_ZALON_OFFSET;
-+	device.slot.base	= dev->hpa.start + GSC_SCSI_ZALON_OFFSET;
- 	device.slot.base_v	= io_port;
- 	device.slot.irq		= dev->irq;
- 	device.differential	= 2;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/serial/8250_gsc.c CVS2_6_14_PA0/drivers/serial/8250_gsc.c
---- LINUS_2_6_14/drivers/serial/8250_gsc.c	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/serial/8250_gsc.c	2005-09-10 12:26:14.000000000 -0600
-@@ -29,7 +29,6 @@
- static int __init 
- serial_init_chip(struct parisc_device *dev)
- {
--	static int serial_line_nr;
- 	struct uart_port port;
- 	unsigned long address;
- 	int err;
-@@ -42,12 +41,13 @@
- 		 */
- 		if (parisc_parent(dev)->id.hw_type != HPHW_IOA) {
- 			printk(KERN_INFO "Serial: device 0x%lx not configured.\n"
--				"Enable support for Wax, Lasi, Asp or Dino.\n", dev->hpa);
-+				"Enable support for Wax, Lasi, Asp or Dino.\n",
-+				dev->hpa.start);
- 		}
- 		return -ENODEV;
- 	}
- 
--	address = dev->hpa;
-+	address = dev->hpa.start;
- 	if (dev->id.sversion != 0x8d) {
- 		address += 0x800;
- 	}
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/serial/mux.c CVS2_6_14_PA0/drivers/serial/mux.c
---- LINUS_2_6_14/drivers/serial/mux.c	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/serial/mux.c	2005-09-14 06:56:44.000000000 -0600
-@@ -27,6 +27,7 @@
- #include <linux/delay.h> /* for udelay */
- #include <linux/device.h>
- #include <asm/io.h>
-+#include <asm/irq.h>
- #include <asm/parisc-device.h>
- 
- #ifdef CONFIG_MAGIC_SYSRQ
-@@ -444,7 +445,7 @@
- 	unsigned long bytecnt;
- 	struct uart_port *port;
- 
--	status = pdc_iodc_read(&bytecnt, dev->hpa, 0, iodc_data, 32);
-+	status = pdc_iodc_read(&bytecnt, dev->hpa.start, 0, iodc_data, 32);
- 	if(status != PDC_OK) {
- 		printk(KERN_ERR "Serial mux: Unable to read IODC.\n");
- 		return 1;
-@@ -469,16 +470,18 @@
- 	for(i = 0; i < ports; ++i, ++port_cnt) {
- 		port = &mux_ports[port_cnt];
- 		port->iobase	= 0;
--		port->mapbase	= dev->hpa + MUX_OFFSET + (i * MUX_LINE_OFFSET);
-+		port->mapbase	= dev->hpa.start + MUX_OFFSET +
-+						(i * MUX_LINE_OFFSET);
- 		port->membase	= ioremap(port->mapbase, MUX_LINE_OFFSET);
- 		port->iotype	= SERIAL_IO_MEM;
- 		port->type	= PORT_MUX;
--		port->irq	= SERIAL_IRQ_NONE;
-+		port->irq	= NO_IRQ;
- 		port->uartclk	= 0;
- 		port->fifosize	= MUX_FIFO_SIZE;
- 		port->ops	= &mux_pops;
- 		port->flags	= UPF_BOOT_AUTOCONF;
- 		port->line	= port_cnt;
-+		spin_lock_init(&port->lock);
- 		status = uart_add_one_port(&mux_driver, port);
- 		BUG_ON(status);
- 	}
-@@ -497,7 +500,7 @@
- MODULE_DEVICE_TABLE(parisc, mux_tbl);
- 
- static struct parisc_driver serial_mux_driver = {
--	.name =		"Serial MUX",
-+	.name =		"serial_mux",
- 	.id_table =	mux_tbl,
- 	.probe =	mux_probe,
- };
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/serial/serial_core.c CVS2_6_14_PA0/drivers/serial/serial_core.c
---- LINUS_2_6_14/drivers/serial/serial_core.c	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/serial/serial_core.c	2005-09-14 06:56:44.000000000 -0600
-@@ -1948,6 +1948,7 @@
+-
+-#define SCR_JMP_REL     0x04000000
+-#define SCR_ID(id)	(((u32)(id)) << 16)
+-
+-/*-----------------------------------------------------------
+-**
+-**	Waiting for Disconnect or Reselect
+-**
+-**-----------------------------------------------------------
+-**
+-**	WAIT_DISC
+-**	dummy: <<alternate_address>>
+-**
+-**	WAIT_RESEL
+-**	<<alternate_address>>
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-#define	SCR_WAIT_DISC	0x48000000
+-#define SCR_WAIT_RESEL  0x50000000
+-
+-/*-----------------------------------------------------------
+-**
+-**	Bit Set / Reset
+-**
+-**-----------------------------------------------------------
+-**
+-**	SET (flags {|.. })
+-**
+-**	CLR (flags {|.. })
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-#define SCR_SET(f)     (0x58000000 | (f))
+-#define SCR_CLR(f)     (0x60000000 | (f))
+-
+-#define	SCR_CARRY	0x00000400
+-#define	SCR_TRG		0x00000200
+-#define	SCR_ACK		0x00000040
+-#define	SCR_ATN		0x00000008
+-
+-
+-
+-
+-/*-----------------------------------------------------------
+-**
+-**	Memory to memory move
+-**
+-**-----------------------------------------------------------
+-**
+-**	COPY (bytecount)
+-**	<< source_address >>
+-**	<< destination_address >>
+-**
+-**	SCR_COPY   sets the NO FLUSH option by default.
+-**	SCR_COPY_F does not set this option.
+-**
+-**	For chips which do not support this option,
+-**	ncr_copy_and_bind() will remove this bit.
+-**-----------------------------------------------------------
+-*/
+-
+-#define SCR_NO_FLUSH 0x01000000
+-
+-#define SCR_COPY(n) (0xc0000000 | SCR_NO_FLUSH | (n))
+-#define SCR_COPY_F(n) (0xc0000000 | (n))
+-
+-/*-----------------------------------------------------------
+-**
+-**	Register move and binary operations
+-**
+-**-----------------------------------------------------------
+-**
+-**	SFBR_REG (reg, op, data)        reg  = SFBR op data
+-**	<< 0 >>
+-**
+-**	REG_SFBR (reg, op, data)        SFBR = reg op data
+-**	<< 0 >>
+-**
+-**	REG_REG  (reg, op, data)        reg  = reg op data
+-**	<< 0 >>
+-**
+-**-----------------------------------------------------------
+-**	On 810A, 860, 825A, 875, 895 and 896 chips the content 
+-**	of SFBR register can be used as data (SCR_SFBR_DATA).
+-**	The 896 has additionnal IO registers starting at 
+-**	offset 0x80. Bit 7 of register offset is stored in 
+-**	bit 7 of the SCRIPTS instruction first DWORD.
+-**-----------------------------------------------------------
+-*/
+-
+-#define SCR_REG_OFS(ofs) ((((ofs) & 0x7f) << 16ul) + ((ofs) & 0x80)) 
+-
+-#define SCR_SFBR_REG(reg,op,data) \
+-        (0x68000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
+-
+-#define SCR_REG_SFBR(reg,op,data) \
+-        (0x70000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
+-
+-#define SCR_REG_REG(reg,op,data) \
+-        (0x78000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
+-
+-
+-#define      SCR_LOAD   0x00000000
+-#define      SCR_SHL    0x01000000
+-#define      SCR_OR     0x02000000
+-#define      SCR_XOR    0x03000000
+-#define      SCR_AND    0x04000000
+-#define      SCR_SHR    0x05000000
+-#define      SCR_ADD    0x06000000
+-#define      SCR_ADDC   0x07000000
+-
+-#define      SCR_SFBR_DATA   (0x00800000>>8ul)	/* Use SFBR as data */
+-
+-/*-----------------------------------------------------------
+-**
+-**	FROM_REG (reg)		  SFBR = reg
+-**	<< 0 >>
+-**
+-**	TO_REG	 (reg)		  reg  = SFBR
+-**	<< 0 >>
+-**
+-**	LOAD_REG (reg, data)	  reg  = <data>
+-**	<< 0 >>
+-**
+-**	LOAD_SFBR(data) 	  SFBR = <data>
+-**	<< 0 >>
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-#define	SCR_FROM_REG(reg) \
+-	SCR_REG_SFBR(reg,SCR_OR,0)
+-
+-#define	SCR_TO_REG(reg) \
+-	SCR_SFBR_REG(reg,SCR_OR,0)
+-
+-#define	SCR_LOAD_REG(reg,data) \
+-	SCR_REG_REG(reg,SCR_LOAD,data)
+-
+-#define SCR_LOAD_SFBR(data) \
+-        (SCR_REG_SFBR (gpreg, SCR_LOAD, data))
+-
+-/*-----------------------------------------------------------
+-**
+-**	LOAD  from memory   to register.
+-**	STORE from register to memory.
+-**
+-**	Only supported by 810A, 860, 825A, 875, 895 and 896.
+-**
+-**-----------------------------------------------------------
+-**
+-**	LOAD_ABS (LEN)
+-**	<<start address>>
+-**
+-**	LOAD_REL (LEN)        (DSA relative)
+-**	<<dsa_offset>>
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-#define SCR_REG_OFS2(ofs) (((ofs) & 0xff) << 16ul)
+-#define SCR_NO_FLUSH2	0x02000000
+-#define SCR_DSA_REL2	0x10000000
+-
+-#define SCR_LOAD_R(reg, how, n) \
+-        (0xe1000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
+-
+-#define SCR_STORE_R(reg, how, n) \
+-        (0xe0000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
+-
+-#define SCR_LOAD_ABS(reg, n)	SCR_LOAD_R(reg, SCR_NO_FLUSH2, n)
+-#define SCR_LOAD_REL(reg, n)	SCR_LOAD_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2, n)
+-#define SCR_LOAD_ABS_F(reg, n)	SCR_LOAD_R(reg, 0, n)
+-#define SCR_LOAD_REL_F(reg, n)	SCR_LOAD_R(reg, SCR_DSA_REL2, n)
+-
+-#define SCR_STORE_ABS(reg, n)	SCR_STORE_R(reg, SCR_NO_FLUSH2, n)
+-#define SCR_STORE_REL(reg, n)	SCR_STORE_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2,n)
+-#define SCR_STORE_ABS_F(reg, n)	SCR_STORE_R(reg, 0, n)
+-#define SCR_STORE_REL_F(reg, n)	SCR_STORE_R(reg, SCR_DSA_REL2, n)
+-
+-
+-/*-----------------------------------------------------------
+-**
+-**	Waiting for Disconnect or Reselect
+-**
+-**-----------------------------------------------------------
+-**
+-**	JUMP            [ | IFTRUE/IFFALSE ( ... ) ]
+-**	<<address>>
+-**
+-**	JUMPR           [ | IFTRUE/IFFALSE ( ... ) ]
+-**	<<distance>>
+-**
+-**	CALL            [ | IFTRUE/IFFALSE ( ... ) ]
+-**	<<address>>
+-**
+-**	CALLR           [ | IFTRUE/IFFALSE ( ... ) ]
+-**	<<distance>>
+-**
+-**	RETURN          [ | IFTRUE/IFFALSE ( ... ) ]
+-**	<<dummy>>
+-**
+-**	INT             [ | IFTRUE/IFFALSE ( ... ) ]
+-**	<<ident>>
+-**
+-**	INT_FLY         [ | IFTRUE/IFFALSE ( ... ) ]
+-**	<<ident>>
+-**
+-**	Conditions:
+-**	     WHEN (phase)
+-**	     IF   (phase)
+-**	     CARRYSET
+-**	     DATA (data, mask)
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-#define SCR_NO_OP       0x80000000
+-#define SCR_JUMP        0x80080000
+-#define SCR_JUMP64      0x80480000
+-#define SCR_JUMPR       0x80880000
+-#define SCR_CALL        0x88080000
+-#define SCR_CALLR       0x88880000
+-#define SCR_RETURN      0x90080000
+-#define SCR_INT         0x98080000
+-#define SCR_INT_FLY     0x98180000
+-
+-#define IFFALSE(arg)   (0x00080000 | (arg))
+-#define IFTRUE(arg)    (0x00000000 | (arg))
+-
+-#define WHEN(phase)    (0x00030000 | (phase))
+-#define IF(phase)      (0x00020000 | (phase))
+-
+-#define DATA(D)        (0x00040000 | ((D) & 0xff))
+-#define MASK(D,M)      (0x00040000 | (((M ^ 0xff) & 0xff) << 8ul)|((D) & 0xff))
+-
+-#define CARRYSET       (0x00200000)
+-
+-/*-----------------------------------------------------------
+-**
+-**	SCSI  constants.
+-**
+-**-----------------------------------------------------------
+-*/
+-
+-/*
+-**	Messages
+-*/
+-
+-#define	M_COMPLETE	COMMAND_COMPLETE
+-#define	M_EXTENDED	EXTENDED_MESSAGE
+-#define	M_SAVE_DP	SAVE_POINTERS
+-#define	M_RESTORE_DP	RESTORE_POINTERS
+-#define	M_DISCONNECT	DISCONNECT
+-#define	M_ID_ERROR	INITIATOR_ERROR
+-#define	M_ABORT		ABORT_TASK_SET
+-#define	M_REJECT	MESSAGE_REJECT
+-#define	M_NOOP		NOP
+-#define	M_PARITY	MSG_PARITY_ERROR
+-#define	M_LCOMPLETE	LINKED_CMD_COMPLETE
+-#define	M_FCOMPLETE	LINKED_FLG_CMD_COMPLETE
+-#define	M_RESET		TARGET_RESET
+-#define	M_ABORT_TAG	ABORT_TASK
+-#define	M_CLEAR_QUEUE	CLEAR_TASK_SET
+-#define	M_INIT_REC	INITIATE_RECOVERY
+-#define	M_REL_REC	RELEASE_RECOVERY
+-#define	M_TERMINATE	(0x11)
+-#define	M_SIMPLE_TAG	SIMPLE_QUEUE_TAG
+-#define	M_HEAD_TAG	HEAD_OF_QUEUE_TAG
+-#define	M_ORDERED_TAG	ORDERED_QUEUE_TAG
+-#define	M_IGN_RESIDUE	IGNORE_WIDE_RESIDUE
+-#define	M_IDENTIFY   	(0x80)
+-
+-#define	M_X_MODIFY_DP	EXTENDED_MODIFY_DATA_POINTER
+-#define	M_X_SYNC_REQ	EXTENDED_SDTR
+-#define	M_X_WIDE_REQ	EXTENDED_WDTR
+-#define	M_X_PPR_REQ	EXTENDED_PPR
+-
+-/*
+-**	Status
+-*/
+-
+-#define	S_GOOD		(0x00)
+-#define	S_CHECK_COND	(0x02)
+-#define	S_COND_MET	(0x04)
+-#define	S_BUSY		(0x08)
+-#define	S_INT		(0x10)
+-#define	S_INT_COND_MET	(0x14)
+-#define	S_CONFLICT	(0x18)
+-#define	S_TERMINATED	(0x20)
+-#define	S_QUEUE_FULL	(0x28)
+-#define	S_ILLEGAL	(0xff)
+-#define	S_SENSE		(0x80)
+-
+-/*
+- * End of ncrreg from FreeBSD
+- */
+-
+-#endif /* defined SYM53C8XX_DEFS_H */
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/serial/serial_core.c CVS2_6_15_RC7_PA0/drivers/serial/serial_core.c
+--- LINUS_2_6_15_RC7/drivers/serial/serial_core.c	2005-12-27 13:25:49.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/serial/serial_core.c	2005-11-29 11:03:08.000000000 -0700
+@@ -1961,6 +1961,7 @@
  uart_report_port(struct uart_driver *drv, struct uart_port *port)
  {
  	char address[64];
@@ -11426,12 +7590,11 @@
  
  	switch (port->iotype) {
  	case UPIO_PORT:
-@@ -1968,8 +1969,17 @@
+@@ -1982,10 +1983,19 @@
  		break;
  	}
  
--	printk(KERN_INFO "%s%d at %s (irq = %d) is a %s\n",
--	       drv->dev_name, port->line, address, port->irq, uart_type(port));
+-	printk(KERN_INFO "%s%s%s%d at %s (irq = %d) is a %s\n",
 +#ifndef NO_IRQ
 +#define NO_IRQ (-1)
 +#endif
@@ -11441,14 +7604,17 @@
 +		snprintf(irq, sizeof(irq), "irq = %d", port->irq);
 +	}
 +
-+	printk(KERN_INFO "%s%d at %s (%s) is a %s\n",
++	printk(KERN_INFO "%s%s%s%d at %s (%s) is a %s\n",
+ 	       port->dev ? port->dev->bus_id : "",
+ 	       port->dev ? ": " : "",
+-	       drv->dev_name, port->line, address, port->irq, uart_type(port));
 +	       drv->dev_name, port->line, address, irq, uart_type(port));
  }
  
  static void
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/usb/input/hid-core.c CVS2_6_14_PA0/drivers/usb/input/hid-core.c
---- LINUS_2_6_14/drivers/usb/input/hid-core.c	2005-10-27 21:30:43.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/usb/input/hid-core.c	2005-10-20 08:43:18.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/usb/input/hid-core.c CVS2_6_15_RC7_PA0/drivers/usb/input/hid-core.c
+--- LINUS_2_6_15_RC7/drivers/usb/input/hid-core.c	2005-12-27 13:25:50.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/usb/input/hid-core.c	2005-12-19 05:42:37.000000000 -0700
 @@ -760,21 +760,31 @@
  }
  
@@ -11483,310 +7649,171 @@
 +	offset &= 8 - 1;
 +	x = get_unaligned((u32 *)report);
 +	x &= cpu_to_le32(~((((__u32) 1 << n) - 1) << offset));
-+	x |= cpu_to_le32(value << offset);
-+	put_unaligned(x,(u32 *)report);
- }
- 
- /*
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/video/console/Kconfig CVS2_6_14_PA0/drivers/video/console/Kconfig
---- LINUS_2_6_14/drivers/video/console/Kconfig	2005-10-27 21:30:44.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/video/console/Kconfig	2005-09-14 06:56:57.000000000 -0600
-@@ -110,7 +110,7 @@
- 
- config FONTS
- 	bool "Select compiled-in fonts"
--	depends on FRAMEBUFFER_CONSOLE
-+	depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
- 	help
- 	  Say Y here if you would like to use fonts other than the default
- 	  your frame buffer console usually use.
-@@ -123,7 +123,7 @@
- 
- config FONT_8x8
- 	bool "VGA 8x8 font" if FONTS
--	depends on FRAMEBUFFER_CONSOLE
-+	depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
- 	default y if !SPARC32 && !SPARC64 && !FONTS
- 	help
- 	  This is the "high resolution" font for the VGA frame buffer (the one
-@@ -137,7 +137,7 @@
- 
- config FONT_8x16
- 	bool "VGA 8x16 font" if FONTS
--	depends on FRAMEBUFFER_CONSOLE || SGI_NEWPORT_CONSOLE=y || USB_SISUSBVGA_CON
-+	depends on FRAMEBUFFER_CONSOLE || SGI_NEWPORT_CONSOLE=y || STI_CONSOLE || USB_SISUSBVGA_CON 
- 	default y if !SPARC32 && !SPARC64 && !FONTS
- 	help
- 	  This is the "high resolution" font for the VGA frame buffer (the one
-@@ -147,7 +147,7 @@
- 
- config FONT_6x11
- 	bool "Mac console 6x11 font (not supported by all drivers)" if FONTS
--	depends on FRAMEBUFFER_CONSOLE
-+	depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
- 	default y if !SPARC32 && !SPARC64 && !FONTS && MAC
- 	help
- 	  Small console font with Macintosh-style high-half glyphs.  Some Mac
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/drivers/video/console/sticore.c CVS2_6_14_PA0/drivers/video/console/sticore.c
---- LINUS_2_6_14/drivers/video/console/sticore.c	2005-10-27 21:30:44.000000000 -0600
-+++ CVS2_6_14_PA0/drivers/video/console/sticore.c	2005-09-10 12:30:10.000000000 -0600
-@@ -511,12 +511,12 @@
- 	struct sti_cooked_font *cooked_font;
- 	
- 	if (!fbfont_name || !strlen(fbfont_name))
--	    return NULL;
-+		return NULL;
- 	fbfont = find_font(fbfont_name);
- 	if (!fbfont)
--	    fbfont = get_default_font(1024,768);
-+		fbfont = get_default_font(1024,768);
- 	if (!fbfont)
--	    return NULL;
-+		return NULL;
- 
- 	DPRINTK((KERN_DEBUG "selected %dx%d fb-font %s\n",
- 			fbfont->width, fbfont->height, fbfont->name));
-@@ -527,7 +527,7 @@
- 
- 	nf = kmalloc(size, GFP_KERNEL);
- 	if (!nf)
--	    return NULL;
-+		return NULL;
- 	memset(nf, 0, size);
- 
- 	nf->first_char = 0;
-@@ -546,8 +546,8 @@
- 
- 	cooked_font = kmalloc(sizeof(*cooked_font), GFP_KERNEL);
- 	if (!cooked_font) {
--	    kfree(nf);
--	    return NULL;
-+		kfree(nf);
-+		return NULL;
- 	}
- 	
- 	cooked_font->raw = nf;
-@@ -595,7 +595,7 @@
- static void __init 
- sti_dump_rom(struct sti_rom *rom)
- {
--        printk(KERN_INFO "    id %04x-%04x, conforms to spec rev. %d.%02x\n",
-+	printk(KERN_INFO "    id %04x-%04x, conforms to spec rev. %d.%02x\n",
- 		rom->graphics_id[0], 
- 		rom->graphics_id[1],
- 		rom->revno[0] >> 4, 
-@@ -651,15 +651,16 @@
- 	struct sti_cooked_font *font;
- 	int i = 0;
- 	
--	for(font = rom->font_start; font; font = font->next_font, i++) {
--	    if((font->raw->width == width) && (font->raw->height == height))
-+	for (font = rom->font_start; font; font = font->next_font, i++) {
-+		if ((font->raw->width == width) &&
-+		    (font->raw->height == height))
- 			return i;
- 	}
- 	return 0;
- }
- 
--#define BMODE_RELOCATE(offset)        offset = (offset) / 4;
--#define BMODE_LAST_ADDR_OFFS          0x50
-+#define BMODE_RELOCATE(offset)		offset = (offset) / 4;
-+#define BMODE_LAST_ADDR_OFFS		0x50
- 
- static void * __init
- sti_bmode_font_raw(struct sti_cooked_font *f)
-@@ -700,35 +701,35 @@
- {
- 	struct sti_rom *raw;
- 	u32 size;
--        struct sti_rom_font *raw_font, *font_start;
--    
-+	struct sti_rom_font *raw_font, *font_start;
-+
- 	sti_bmode_rom_copy(address + BMODE_LAST_ADDR_OFFS, sizeof(size), &size);
--    
--        size = (size+3) / 4;
-+
-+	size = (size+3) / 4;
- 	raw = kmalloc(size, GFP_KERNEL);
- 	if (raw) {
--	    sti_bmode_rom_copy(address, size, raw);
--	    memmove (&raw->res004, &raw->type[0], 0x3c);
--    	    raw->type[3] = raw->res004;
--
--	    BMODE_RELOCATE (raw->region_list);
--	    BMODE_RELOCATE (raw->font_start);
--
--	    BMODE_RELOCATE (raw->init_graph);
--	    BMODE_RELOCATE (raw->state_mgmt);
--	    BMODE_RELOCATE (raw->font_unpmv);
--	    BMODE_RELOCATE (raw->block_move);
--	    BMODE_RELOCATE (raw->inq_conf);
-+		sti_bmode_rom_copy(address, size, raw);
-+		memmove (&raw->res004, &raw->type[0], 0x3c);
-+		raw->type[3] = raw->res004;
-+
-+		BMODE_RELOCATE (raw->region_list);
-+		BMODE_RELOCATE (raw->font_start);
-+
-+		BMODE_RELOCATE (raw->init_graph);
-+		BMODE_RELOCATE (raw->state_mgmt);
-+		BMODE_RELOCATE (raw->font_unpmv);
-+		BMODE_RELOCATE (raw->block_move);
-+		BMODE_RELOCATE (raw->inq_conf);
- 
--	    raw_font = ((void *)raw) + raw->font_start;
--	    font_start = raw_font;
-+		raw_font = ((void *)raw) + raw->font_start;
-+		font_start = raw_font;
- 		
--	    while (raw_font->next_font) {
--		    BMODE_RELOCATE (raw_font->next_font);
--		    raw_font = ((void *)font_start) + raw_font->next_font;
--	    }
-+		while (raw_font->next_font) {
-+			BMODE_RELOCATE (raw_font->next_font);
-+			raw_font = ((void *)font_start) + raw_font->next_font;
-+		}
- 	}
--        return raw;
-+	return raw;
++	x |= cpu_to_le32(value << offset);
++	put_unaligned(x,(u32 *)report);
  }
  
- struct sti_rom * __init
-@@ -736,15 +737,15 @@
- {
- 	struct sti_rom *raw;
- 	unsigned long size;
--    
+ /*
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/drivers/video/stifb.c CVS2_6_15_RC7_PA0/drivers/video/stifb.c
+--- LINUS_2_6_15_RC7/drivers/video/stifb.c	2005-12-27 13:25:50.000000000 -0700
++++ CVS2_6_15_RC7_PA0/drivers/video/stifb.c	2005-12-19 08:32:13.000000000 -0700
+@@ -3,7 +3,7 @@
+  * Low level Frame buffer driver for HP workstations with 
+  * STI (standard text interface) video firmware.
+  *
+- * Copyright (C) 2001-2004 Helge Deller <deller at gmx.de>
++ * Copyright (C) 2001-2005 Helge Deller <deller at gmx.de>
+  * Portions Copyright (C) 2001 Thomas Bogendoerfer <tsbogend at alpha.franken.de>
+  * 
+  * Based on:
+@@ -73,16 +73,13 @@
+ #include "sticore.h"
+ 
+ /* REGION_BASE(fb_info, index) returns the virtual address for region <index> */
+-#ifdef __LP64__
+-  #define REGION_BASE(fb_info, index) \
+-	(fb_info->sti->glob_cfg->region_ptrs[index] | 0xffffffff00000000)
+-#else
+-  #define REGION_BASE(fb_info, index) \
+-	fb_info->sti->glob_cfg->region_ptrs[index]
+-#endif
++#define REGION_BASE(fb_info, index) \
++	F_EXTEND(fb_info->sti->glob_cfg->region_ptrs[index])
+ 
+ #define NGLEDEVDEPROM_CRT_REGION 1
+ 
++#define NR_PALETTE 256
 +
- 	/* read the ROM size directly from the struct in ROM */ 
- 	size = gsc_readl(address + offsetof(struct sti_rom,last_addr));
+ typedef struct {
+ 	__s32	video_config_reg;
+ 	__s32	misc_video_start;
+@@ -112,7 +109,7 @@
+ 	ngle_rom_t ngle_rom;
+ 	struct sti_struct *sti;
+ 	int deviceSpecificConfig;
+-	u32 pseudo_palette[256];
++	u32 pseudo_palette[16];
+ };
  
- 	raw = kmalloc(size, GFP_KERNEL);
--	if(raw)
--	        sti_rom_copy(address, size, raw);
-+	if (raw)
-+		sti_rom_copy(address, size, raw);
+ static int __initdata stifb_bpp_pref[MAX_STI_ROMS];
+@@ -352,10 +349,10 @@
+ #define IS_888_DEVICE(fb) \
+ 	(!(IS_24_DEVICE(fb)))
+ 
+-#define GET_FIFO_SLOTS(fb, cnt, numslots)			\
+-{	while (cnt < numslots) 					\
++#define GET_FIFO_SLOTS(fb, cnt, numslots)	\
++{	while (cnt < numslots) 			\
+ 		cnt = READ_WORD(fb, REG_34);	\
+-	cnt -= numslots;					\
++	cnt -= numslots;			\
+ }
+ 
+ #define	    IndexedDcd	0	/* Pixel data is indexed (pseudo) color */
+@@ -995,7 +992,7 @@
+ 	struct stifb_info *fb = (struct stifb_info *) info;
+ 	u32 color;
  
--        return raw;
-+	return raw;
- }
+-	if (regno >= 256)  /* no. of hw registers */
++	if (regno >= NR_PALETTE)
+ 		return 1;
  
- int __init
-@@ -757,14 +758,14 @@
- 	if (!cooked)
- 		goto out_err;
+ 	red   >>= 8;
+@@ -1005,8 +1002,8 @@
+ 	DEBUG_OFF();
  
--        if (wordmode)
--                raw = sti_get_wmode_rom (address);
--        else
--	        raw = sti_get_bmode_rom (address);
--
--        if (!raw)
--	        goto out_err;
--    
-+	if (wordmode)
-+		raw = sti_get_wmode_rom (address);
-+	else
-+		raw = sti_get_bmode_rom (address);
-+
-+	if (!raw)
-+		goto out_err;
+ 	START_IMAGE_COLORMAP_ACCESS(fb);
+-	
+-	if (fb->info.var.grayscale) {
 +
- 	if (!sti_cook_fonts(cooked, raw)) {
- 		printk(KERN_ERR "No font found for STI at %08lx\n", address);
- 		goto out_err;
-@@ -787,7 +788,7 @@
- 	sti->font_width = sti->font->raw->width;
- 	sti->font_height = sti->font->raw->height;
- 	if (!wordmode)
--	        sti->font->raw = sti_bmode_font_raw(sti->font);
-+		sti->font->raw = sti_bmode_font_raw(sti->font);
- 
- 	sti->sti_mem_request = raw->sti_mem_req;
- 	sti->graphics_id[0] = raw->graphics_id[0];
-@@ -811,16 +812,16 @@
- 	u32 sig;
- 
- 	if (num_sti_roms >= MAX_STI_ROMS) {
--	    printk(KERN_WARNING "maximum number of STI ROMS reached !\n");
--	    return NULL;
-+		printk(KERN_WARNING "maximum number of STI ROMS reached !\n");
-+		return NULL;
++	if (unlikely(fb->info.var.grayscale)) {
+ 		/* gray = 0.30*R + 0.59*G + 0.11*B */
+ 		color = ((red * 77) +
+ 			 (green * 151) +
+@@ -1017,17 +1014,17 @@
+ 			 (blue));
  	}
- 	
- 	sti = kmalloc(sizeof(*sti), GFP_KERNEL);
- 	if (!sti) {
--	    printk(KERN_ERR "Not enough memory !\n");
--	    return NULL;
-+		printk(KERN_ERR "Not enough memory !\n");
-+		return NULL;
+ 
+-	if (info->var.bits_per_pixel == 32) {
+-		((u32 *)(info->pseudo_palette))[regno] =
+-			(red   << info->var.red.offset)   |
+-			(green << info->var.green.offset) |
+-			(blue  << info->var.blue.offset);
+-	} else {
+-		((u32 *)(info->pseudo_palette))[regno] = regno;
++	if (fb->info.fix.visual == FB_VISUAL_DIRECTCOLOR) {
++		struct fb_var_screeninfo *var = &fb->info.var;
++		if (regno < 16)
++			((u32 *)fb->info.pseudo_palette)[regno] =
++				regno << var->red.offset |
++				regno << var->green.offset |
++				regno << var->blue.offset;
  	}
--		    
-+
- 	memset(sti, 0, sizeof(*sti));
- 	spin_lock_init(&sti->lock);
  
-@@ -932,28 +933,21 @@
-  */
- static int __init sticore_pa_init(struct parisc_device *dev)
- {
--	unsigned long rom = 0;
- 	char pa_path[21];
- 	struct sti_struct *sti = NULL;
--	
--	if(dev->num_addrs) {
--		rom = dev->addr[0];
--	}
--	if (!rom) {
--		rom = dev->hpa;
--		DPRINTK((KERN_DEBUG "Trying STI ROM at %08lx, hpa at %08lx\n", rom, dev->hpa));
--		sti = sti_try_rom_generic(rom, dev->hpa, NULL);
--		rom = PAGE0->proc_sti;
--	}
--	if (!sti) {
--		DPRINTK((KERN_DEBUG "Trying STI ROM at %08lx, hpa at %08lx\n", rom, dev->hpa));
--		sti = sti_try_rom_generic(rom, dev->hpa, NULL);
--	}
-+	int hpa = dev->hpa.start;
-+
-+	if (dev->num_addrs && dev->addr[0])
-+		sti = sti_try_rom_generic(dev->addr[0], hpa, NULL);
-+	if (!sti)
-+		sti = sti_try_rom_generic(hpa, hpa, NULL);
-+	if (!sti)
-+		sti = sti_try_rom_generic(PAGE0->proc_sti, hpa, NULL);
- 	if (!sti)
- 		return 1;
+ 	WRITE_IMAGE_COLOR(fb, regno, color);
 -	
 +
- 	print_pa_hwpath(dev, pa_path);
--	sticore_check_for_default_sti (sti, pa_path);
-+	sticore_check_for_default_sti(sti, pa_path);
- 	return 0;
- }
+ 	if (fb->id == S9000_ID_HCRX) {
+ 		NgleLutBltCtl lutBltCtl;
  
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/fs/ioctl.c CVS2_6_14_PA0/fs/ioctl.c
---- LINUS_2_6_14/fs/ioctl.c	2005-10-27 21:30:44.000000000 -0600
-+++ CVS2_6_14_PA0/fs/ioctl.c	2005-03-14 06:24:36.000000000 -0700
-@@ -71,7 +71,11 @@
- 				return -EBADF;
- 			return put_user(inode->i_sb->s_blocksize, p);
- 		case FIONREAD:
--			return put_user(i_size_read(inode) - filp->f_pos, p);
-+		{
-+			int sz;
-+			sz = i_size_read(inode) - filp->f_pos;
-+			return put_user(sz, p);
-+		}
- 	}
- 
- 	return do_ioctl(filp, cmd, arg);
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-generic/compat_signal.h CVS2_6_14_PA0/include/asm-generic/compat_signal.h
---- LINUS_2_6_14/include/asm-generic/compat_signal.h	1969-12-31 17:00:00.000000000 -0700
-+++ CVS2_6_14_PA0/include/asm-generic/compat_signal.h	2004-01-27 22:12:47.000000000 -0700
+@@ -1066,9 +1063,9 @@
+ 	case S9000_ID_HCRX:
+ 		HYPER_ENABLE_DISABLE_DISPLAY(fb, enable);
+ 		break;
+-	case S9000_ID_A1659A:;	/* fall through */
+-	case S9000_ID_TIMBER:;
+-	case CRX24_OVERLAY_PLANES:;
++	case S9000_ID_A1659A:	/* fall through */
++	case S9000_ID_TIMBER:
++	case CRX24_OVERLAY_PLANES:
+ 	default:
+ 		ENABLE_DISABLE_DISPLAY(fb, enable);
+ 		break;
+@@ -1250,12 +1247,10 @@
+ 		memset(&fb->ngle_rom, 0, sizeof(fb->ngle_rom));
+ 		if ((fb->sti->regions_phys[0] & 0xfc000000) ==
+ 		    (fb->sti->regions_phys[2] & 0xfc000000))
+-			sti_rom_address = fb->sti->regions_phys[0];
++			sti_rom_address = F_EXTEND(fb->sti->regions_phys[0]);
+ 		else
+-			sti_rom_address = fb->sti->regions_phys[1];
+-#ifdef __LP64__
+-	        sti_rom_address |= 0xffffffff00000000;
+-#endif
++			sti_rom_address = F_EXTEND(fb->sti->regions_phys[1]);
++
+ 		fb->deviceSpecificConfig = gsc_readl(sti_rom_address);
+ 		if (IS_24_DEVICE(fb)) {
+ 			if (bpp_pref == 8 || bpp_pref == 32)
+@@ -1315,7 +1310,7 @@
+ 		break;
+ 	    case 32:
+ 		fix->type = FB_TYPE_PACKED_PIXELS;
+-		fix->visual = FB_VISUAL_TRUECOLOR;
++		fix->visual = FB_VISUAL_DIRECTCOLOR;
+ 		var->red.length = var->green.length = var->blue.length = var->transp.length = 8;
+ 		var->blue.offset = 0;
+ 		var->green.offset = 8;
+@@ -1337,7 +1332,7 @@
+ 	info->pseudo_palette = &fb->pseudo_palette;
+ 
+ 	/* This has to been done !!! */
+-	fb_alloc_cmap(&info->cmap, 256, 0);
++	fb_alloc_cmap(&info->cmap, NR_PALETTE, 0);
+ 	stifb_init_display(fb);
+ 
+ 	if (!request_mem_region(fix->smem_start, fix->smem_len, "stifb fb")) {
+@@ -1488,7 +1483,3 @@
+ MODULE_AUTHOR("Helge Deller <deller at gmx.de>, Thomas Bogendoerfer <tsbogend at alpha.franken.de>");
+ MODULE_DESCRIPTION("Framebuffer driver for HP's NGLE series graphics cards in HP PARISC machines");
+ MODULE_LICENSE("GPL v2");
+-
+-MODULE_PARM(bpp, "i");
+-MODULE_PARM_DESC(mem, "Bits per pixel (default: 8)");
+-
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-generic/compat_signal.h CVS2_6_15_RC7_PA0/include/asm-generic/compat_signal.h
+--- LINUS_2_6_15_RC7/include/asm-generic/compat_signal.h	1969-12-31 17:00:00.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-generic/compat_signal.h	2004-01-27 22:12:47.000000000 -0700
 @@ -0,0 +1,25 @@
 +#ifndef _ASM_GENERIC_COMPAT_SIGNAL_H
 +#define _ASM_GENERIC_COMPAT_SIGNAL_H
@@ -11813,9 +7840,9 @@
 +
 +#endif /* !__ASSEMBLY__ */
 +#endif /* !_ASM_GENERIC_COMPAT_SIGNAL_H */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-ia64/compat.h CVS2_6_14_PA0/include/asm-ia64/compat.h
---- LINUS_2_6_14/include/asm-ia64/compat.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-ia64/compat.h	2005-09-14 06:57:31.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-ia64/compat.h CVS2_6_15_RC7_PA0/include/asm-ia64/compat.h
+--- LINUS_2_6_15_RC7/include/asm-ia64/compat.h	2005-12-27 13:25:53.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-ia64/compat.h	2005-09-14 06:57:31.000000000 -0600
 @@ -15,6 +15,9 @@
  typedef s32		compat_pid_t;
  typedef u16		__compat_uid_t;
@@ -11826,1143 +7853,122 @@
  typedef u32		__compat_uid32_t;
  typedef u32		__compat_gid32_t;
  typedef u16		compat_mode_t;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/assembly.h CVS2_6_14_PA0/include/asm-parisc/assembly.h
---- LINUS_2_6_14/include/asm-parisc/assembly.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/assembly.h	2005-09-25 19:23:05.000000000 -0600
-@@ -21,7 +21,9 @@
- #ifndef _PARISC_ASSEMBLY_H
- #define _PARISC_ASSEMBLY_H
- 
--#ifdef __LP64__
-+#define CALLEE_FLOAT_FRAME_SIZE	80
-+
-+#ifdef CONFIG_64BIT
- #define LDREG	ldd
- #define STREG	std
- #define LDREGX  ldd,s
-@@ -30,8 +32,8 @@
- #define SHRREG  shrd
- #define RP_OFFSET	16
- #define FRAME_SIZE	128
--#define CALLEE_SAVE_FRAME_SIZE	144
--#else
-+#define CALLEE_REG_FRAME_SIZE	144
-+#else	/* CONFIG_64BIT */
- #define LDREG	ldw
- #define STREG	stw
- #define LDREGX  ldwx,s
-@@ -40,9 +42,11 @@
- #define SHRREG  shr
- #define RP_OFFSET	20
- #define FRAME_SIZE	64
--#define CALLEE_SAVE_FRAME_SIZE	128
-+#define CALLEE_REG_FRAME_SIZE	128
- #endif
- 
-+#define CALLEE_SAVE_FRAME_SIZE (CALLEE_REG_FRAME_SIZE + CALLEE_FLOAT_FRAME_SIZE)
-+
- #ifdef CONFIG_PA20
- #define BL		b,l
- # ifdef CONFIG_64BIT
-@@ -300,9 +304,35 @@
- 	fldd,mb	-8(\regs),       %fr0
- 	.endm
- 
-+	.macro	callee_save_float
-+	fstd,ma	 %fr12,	8(%r30)
-+	fstd,ma	 %fr13,	8(%r30)
-+	fstd,ma	 %fr14,	8(%r30)
-+	fstd,ma	 %fr15,	8(%r30)
-+	fstd,ma	 %fr16,	8(%r30)
-+	fstd,ma	 %fr17,	8(%r30)
-+	fstd,ma	 %fr18,	8(%r30)
-+	fstd,ma	 %fr19,	8(%r30)
-+	fstd,ma	 %fr20,	8(%r30)
-+	fstd,ma	 %fr21,	8(%r30)
-+	.endm
-+
-+	.macro	callee_rest_float
-+	fldd,mb	-8(%r30),   %fr21
-+	fldd,mb	-8(%r30),   %fr20
-+	fldd,mb	-8(%r30),   %fr19
-+	fldd,mb	-8(%r30),   %fr18
-+	fldd,mb	-8(%r30),   %fr17
-+	fldd,mb	-8(%r30),   %fr16
-+	fldd,mb	-8(%r30),   %fr15
-+	fldd,mb	-8(%r30),   %fr14
-+	fldd,mb	-8(%r30),   %fr13
-+	fldd,mb	-8(%r30),   %fr12
-+	.endm
-+
- #ifdef __LP64__
- 	.macro	callee_save
--	std,ma	  %r3,	CALLEE_SAVE_FRAME_SIZE(%r30)
-+	std,ma	  %r3,	 CALLEE_REG_FRAME_SIZE(%r30)
- 	mfctl	  %cr27, %r3
- 	std	  %r4,	-136(%r30)
- 	std	  %r5,	-128(%r30)
-@@ -340,13 +370,13 @@
- 	ldd	-128(%r30),    %r5
- 	ldd	-136(%r30),    %r4
- 	mtctl	%r3, %cr27
--	ldd,mb	-CALLEE_SAVE_FRAME_SIZE(%r30),    %r3
-+	ldd,mb	-CALLEE_REG_FRAME_SIZE(%r30),    %r3
- 	.endm
- 
- #else /* ! __LP64__ */
- 
- 	.macro	callee_save
--	stw,ma	 %r3,	CALLEE_SAVE_FRAME_SIZE(%r30)
-+	stw,ma	 %r3,	CALLEE_REG_FRAME_SIZE(%r30)
- 	mfctl	 %cr27, %r3
- 	stw	 %r4,	-124(%r30)
- 	stw	 %r5,	-120(%r30)
-@@ -384,7 +414,7 @@
- 	ldw	-120(%r30),   %r5
- 	ldw	-124(%r30),   %r4
- 	mtctl	%r3, %cr27
--	ldw,mb	-CALLEE_SAVE_FRAME_SIZE(%r30),   %r3
-+	ldw,mb	-CALLEE_REG_FRAME_SIZE(%r30),   %r3
- 	.endm
- #endif /* ! __LP64__ */
- 
-@@ -450,5 +480,30 @@
- 	REST_CR	(%cr22, PT_PSW	(\regs))
- 	.endm
- 
-+
-+	/* First step to create a "relied upon translation"
-+	 * See PA 2.0 Arch. page F-4 and F-5.
-+	 *
-+	 * The ssm was originally necessary due to a "PCxT bug".
-+	 * But someone decided it needed to be added to the architecture
-+	 * and this "feature" went into rev3 of PA-RISC 1.1 Arch Manual.
-+	 * It's been carried forward into PA 2.0 Arch as well. :^(
-+	 *
-+	 * "ssm 0,%r0" is a NOP with side effects (prefetch barrier).
-+	 * rsm/ssm prevents the ifetch unit from speculatively fetching
-+	 * instructions past this line in the code stream.
-+	 * PA 2.0 processor will single step all insn in the same QUAD (4 insn).
-+	 */
-+	.macro	pcxt_ssm_bug
-+	rsm	PSW_SM_I,%r0
-+	nop	/* 1 */
-+	nop	/* 2 */
-+	nop	/* 3 */
-+	nop	/* 4 */
-+	nop	/* 5 */
-+	nop	/* 6 */
-+	nop	/* 7 */
-+	.endm
-+
- #endif /* __ASSEMBLY__ */
- #endif
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/bitops.h CVS2_6_14_PA0/include/asm-parisc/bitops.h
---- LINUS_2_6_14/include/asm-parisc/bitops.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/bitops.h	2005-09-14 07:22:22.000000000 -0600
-@@ -2,7 +2,7 @@
- #define _PARISC_BITOPS_H
- 
- #include <linux/compiler.h>
--#include <asm/spinlock.h>
-+#include <asm/types.h>		/* for BITS_PER_LONG/SHIFT_PER_LONG */
- #include <asm/byteorder.h>
- #include <asm/atomic.h>
- 
-@@ -12,193 +12,157 @@
-  * to include/asm-i386/bitops.h or kerneldoc
-  */
- 
--#ifdef __LP64__
--#   define SHIFT_PER_LONG 6
--#ifndef BITS_PER_LONG
--#   define BITS_PER_LONG 64
--#endif
--#else
--#   define SHIFT_PER_LONG 5
--#ifndef BITS_PER_LONG
--#   define BITS_PER_LONG 32
--#endif
--#endif
--
--#define CHOP_SHIFTCOUNT(x) ((x) & (BITS_PER_LONG - 1))
-+#define CHOP_SHIFTCOUNT(x) (((unsigned long) (x)) & (BITS_PER_LONG - 1))
- 
- 
- #define smp_mb__before_clear_bit()      smp_mb()
- #define smp_mb__after_clear_bit()       smp_mb()
- 
--static __inline__ void set_bit(int nr, volatile unsigned long * address)
-+/* See http://marc.theaimsgroup.com/?t=108826637900003 for discussion
-+ * on use of volatile and __*_bit() (set/clear/change):
-+ *	*_bit() want use of volatile.
-+ *	__*_bit() are "relaxed" and don't use spinlock or volatile.
-+ */
-+
-+static __inline__ void set_bit(int nr, volatile unsigned long * addr)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
-+	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
- 	unsigned long flags;
- 
- 	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
- 	_atomic_spin_lock_irqsave(addr, flags);
- 	*addr |= mask;
- 	_atomic_spin_unlock_irqrestore(addr, flags);
- }
- 
--static __inline__ void __set_bit(int nr, volatile unsigned long * address)
-+static __inline__ void __set_bit(unsigned long nr, volatile unsigned long * addr)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
-+	unsigned long *m = (unsigned long *) addr + (nr >> SHIFT_PER_LONG);
- 
--	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
--	*addr |= mask;
-+	*m |= 1UL << CHOP_SHIFTCOUNT(nr);
- }
- 
--static __inline__ void clear_bit(int nr, volatile unsigned long * address)
-+static __inline__ void clear_bit(int nr, volatile unsigned long * addr)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
-+	unsigned long mask = ~(1UL << CHOP_SHIFTCOUNT(nr));
- 	unsigned long flags;
- 
- 	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
- 	_atomic_spin_lock_irqsave(addr, flags);
--	*addr &= ~mask;
-+	*addr &= mask;
- 	_atomic_spin_unlock_irqrestore(addr, flags);
- }
- 
--static __inline__ void __clear_bit(unsigned long nr, volatile unsigned long * address)
-+static __inline__ void __clear_bit(unsigned long nr, volatile unsigned long * addr)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
-+	unsigned long *m = (unsigned long *) addr + (nr >> SHIFT_PER_LONG);
- 
--	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
--	*addr &= ~mask;
-+	*m &= ~(1UL << CHOP_SHIFTCOUNT(nr));
- }
- 
--static __inline__ void change_bit(int nr, volatile unsigned long * address)
-+static __inline__ void change_bit(int nr, volatile unsigned long * addr)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
-+	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
- 	unsigned long flags;
- 
- 	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
- 	_atomic_spin_lock_irqsave(addr, flags);
- 	*addr ^= mask;
- 	_atomic_spin_unlock_irqrestore(addr, flags);
- }
- 
--static __inline__ void __change_bit(int nr, volatile unsigned long * address)
-+static __inline__ void __change_bit(unsigned long nr, volatile unsigned long * addr)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
-+	unsigned long *m = (unsigned long *) addr + (nr >> SHIFT_PER_LONG);
- 
--	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
--	*addr ^= mask;
-+	*m ^= 1UL << CHOP_SHIFTCOUNT(nr);
- }
- 
--static __inline__ int test_and_set_bit(int nr, volatile unsigned long * address)
-+static __inline__ int test_and_set_bit(int nr, volatile unsigned long * addr)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
--	int oldbit;
-+	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-+	unsigned long oldbit;
- 	unsigned long flags;
- 
- 	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
- 	_atomic_spin_lock_irqsave(addr, flags);
--	oldbit = (*addr & mask) ? 1 : 0;
--	*addr |= mask;
-+	oldbit = *addr;
-+	*addr = oldbit | mask;
- 	_atomic_spin_unlock_irqrestore(addr, flags);
- 
--	return oldbit;
-+	return (oldbit & mask) ? 1 : 0;
- }
- 
- static __inline__ int __test_and_set_bit(int nr, volatile unsigned long * address)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
--	int oldbit;
-+	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-+	unsigned long oldbit;
-+	unsigned long *addr = (unsigned long *)address + (nr >> SHIFT_PER_LONG);
- 
--	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
--	oldbit = (*addr & mask) ? 1 : 0;
--	*addr |= mask;
-+	oldbit = *addr;
-+	*addr = oldbit | mask;
- 
--	return oldbit;
-+	return (oldbit & mask) ? 1 : 0;
- }
- 
--static __inline__ int test_and_clear_bit(int nr, volatile unsigned long * address)
-+static __inline__ int test_and_clear_bit(int nr, volatile unsigned long * addr)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
--	int oldbit;
-+	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-+	unsigned long oldbit;
- 	unsigned long flags;
- 
- 	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
- 	_atomic_spin_lock_irqsave(addr, flags);
--	oldbit = (*addr & mask) ? 1 : 0;
--	*addr &= ~mask;
-+	oldbit = *addr;
-+	*addr = oldbit & ~mask;
- 	_atomic_spin_unlock_irqrestore(addr, flags);
- 
--	return oldbit;
-+	return (oldbit & mask) ? 1 : 0;
- }
- 
- static __inline__ int __test_and_clear_bit(int nr, volatile unsigned long * address)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
--	int oldbit;
-+	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-+	unsigned long *addr = (unsigned long *)address + (nr >> SHIFT_PER_LONG);
-+	unsigned long oldbit;
- 
--	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
--	oldbit = (*addr & mask) ? 1 : 0;
--	*addr &= ~mask;
-+	oldbit = *addr;
-+	*addr = oldbit & ~mask;
- 
--	return oldbit;
-+	return (oldbit & mask) ? 1 : 0;
- }
- 
--static __inline__ int test_and_change_bit(int nr, volatile unsigned long * address)
-+static __inline__ int test_and_change_bit(int nr, volatile unsigned long * addr)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
--	int oldbit;
-+	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-+	unsigned long oldbit;
- 	unsigned long flags;
- 
- 	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
- 	_atomic_spin_lock_irqsave(addr, flags);
--	oldbit = (*addr & mask) ? 1 : 0;
--	*addr ^= mask;
-+	oldbit = *addr;
-+	*addr = oldbit ^ mask;
- 	_atomic_spin_unlock_irqrestore(addr, flags);
- 
--	return oldbit;
-+	return (oldbit & mask) ? 1 : 0;
- }
- 
- static __inline__ int __test_and_change_bit(int nr, volatile unsigned long * address)
- {
--	unsigned long mask;
--	unsigned long *addr = (unsigned long *) address;
--	int oldbit;
-+	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-+	unsigned long *addr = (unsigned long *)address + (nr >> SHIFT_PER_LONG);
-+	unsigned long oldbit;
- 
--	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
--	oldbit = (*addr & mask) ? 1 : 0;
--	*addr ^= mask;
-+	oldbit = *addr;
-+	*addr = oldbit ^ mask;
- 
--	return oldbit;
-+	return (oldbit & mask) ? 1 : 0;
- }
- 
- static __inline__ int test_bit(int nr, const volatile unsigned long *address)
- {
--	unsigned long mask;
--	const unsigned long *addr = (const unsigned long *)address;
--	
--	addr += (nr >> SHIFT_PER_LONG);
--	mask = 1L << CHOP_SHIFTCOUNT(nr);
-+	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-+	const unsigned long *addr = (const unsigned long *)address + (nr >> SHIFT_PER_LONG);
- 	
- 	return !!(*addr & mask);
- }
-@@ -229,7 +193,7 @@
- 	unsigned long ret;
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-parisc/cache.h CVS2_6_15_RC7_PA0/include/asm-parisc/cache.h
+--- LINUS_2_6_15_RC7/include/asm-parisc/cache.h	2005-12-27 13:25:54.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-parisc/cache.h	2005-12-16 06:02:55.000000000 -0700
+@@ -30,14 +30,14 @@
+ #define SMP_CACHE_BYTES L1_CACHE_BYTES
+ #define L1_CACHE_SHIFT_MAX 5	/* largest L1 which this arch supports */
  
- 	__asm__(
--#if BITS_PER_LONG > 32
-+#ifdef __LP64__
- 		" ldi       63,%1\n"
- 		" extrd,u,*<>  %0,63,32,%%r0\n"
- 		" extrd,u,*TR  %0,31,32,%0\n"	/* move top 32-bits down */
-@@ -304,14 +268,7 @@
-  * hweightN: returns the hamming weight (i.e. the number
-  * of bits set) of a N-bit word
-  */
--#define hweight64(x)						\
--({								\
--	unsigned long __x = (x);				\
--	unsigned int __w;					\
--	__w = generic_hweight32((unsigned int) __x);		\
--	__w += generic_hweight32((unsigned int) (__x>>32));	\
--	__w;							\
--})
-+#define hweight64(x) generic_hweight64(x)
- #define hweight32(x) generic_hweight32(x)
- #define hweight16(x) generic_hweight16(x)
- #define hweight8(x) generic_hweight8(x)
-@@ -324,7 +281,13 @@
-  */
- static inline int sched_find_first_bit(const unsigned long *b)
- {
--#ifndef __LP64__
-+#ifdef __LP64__
-+	if (unlikely(b[0]))
-+		return __ffs(b[0]);
-+	if (unlikely(b[1]))
-+		return __ffs(b[1]) + 64;
-+	return __ffs(b[2]) + 128;
-+#else
- 	if (unlikely(b[0]))
- 		return __ffs(b[0]);
- 	if (unlikely(b[1]))
-@@ -334,14 +297,6 @@
- 	if (b[3])
- 		return __ffs(b[3]) + 96;
- 	return __ffs(b[4]) + 128;
--#else
--	if (unlikely(b[0]))
--		return __ffs(b[0]);
--	if (unlikely(((unsigned int)b[1])))
--		return __ffs(b[1]) + 64;
--	if (b[1] >> 32)
--		return __ffs(b[1] >> 32) + 96;
--	return __ffs(b[2]) + 128;
+-extern void flush_data_cache_local(void);  /* flushes local data-cache only */
+-extern void flush_instruction_cache_local(void); /* flushes local code-cache only */
++extern void flush_data_cache_local(void *);  /* flushes local data-cache only */
++extern void flush_instruction_cache_local(void *); /* flushes local code-cache only */
+ #ifdef CONFIG_SMP
+ extern void flush_data_cache(void); /* flushes data-cache only (all processors) */
+ extern void flush_instruction_cache(void); /* flushes i-cache only (all processors) */
+ #else
+-#define flush_data_cache flush_data_cache_local
+-#define flush_instruction_cache flush_instruction_cache_local
++#define flush_data_cache() flush_data_cache_local(NULL)
++#define flush_instruction_cache() flush_instruction_cache_local(NULL)
  #endif
- }
- 
-@@ -391,7 +346,7 @@
- 
- static __inline__ unsigned long find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset)
- {
--	const unsigned long *p = addr + (offset >> 6);
-+	const unsigned long *p = addr + (offset >> SHIFT_PER_LONG);
- 	unsigned long result = offset & ~(BITS_PER_LONG-1);
- 	unsigned long tmp;
- 
-@@ -445,71 +400,90 @@
-  * test_and_{set,clear}_bit guarantee atomicity without
-  * disabling interrupts.
-  */
--#ifdef __LP64__
--#define ext2_set_bit(nr, addr)		__test_and_set_bit((nr) ^ 0x38, (unsigned long *)addr)
--#define ext2_set_bit_atomic(l,nr,addr)  test_and_set_bit((nr) ^ 0x38, (unsigned long *)addr)
--#define ext2_clear_bit(nr, addr)	__test_and_clear_bit((nr) ^ 0x38, (unsigned long *)addr)
--#define ext2_clear_bit_atomic(l,nr,addr) test_and_clear_bit((nr) ^ 0x38, (unsigned long *)addr)
--#else
--#define ext2_set_bit(nr, addr)		__test_and_set_bit((nr) ^ 0x18, (unsigned long *)addr)
--#define ext2_set_bit_atomic(l,nr,addr)  test_and_set_bit((nr) ^ 0x18, (unsigned long *)addr)
--#define ext2_clear_bit(nr, addr)	__test_and_clear_bit((nr) ^ 0x18, (unsigned long *)addr)
--#define ext2_clear_bit_atomic(l,nr,addr) test_and_clear_bit((nr) ^ 0x18, (unsigned long *)addr)
--#endif
- 
--#endif	/* __KERNEL__ */
-+/* '3' is bits per byte */
-+#define LE_BYTE_ADDR ((sizeof(unsigned long) - 1) << 3)
- 
--static __inline__ int ext2_test_bit(int nr, __const__ void * addr)
--{
--	__const__ unsigned char	*ADDR = (__const__ unsigned char *) addr;
-+#define ext2_test_bit(nr, addr) \
-+			test_bit((nr)	^ LE_BYTE_ADDR, (unsigned long *)addr)
-+#define ext2_set_bit(nr, addr)	\
-+		__test_and_set_bit((nr) ^ LE_BYTE_ADDR, (unsigned long *)addr)
-+#define ext2_clear_bit(nr, addr) \
-+		__test_and_clear_bit((nr) ^ LE_BYTE_ADDR, (unsigned long *)addr)
-+
-+#define ext2_set_bit_atomic(l,nr,addr) \
-+		test_and_set_bit((nr)   ^ LE_BYTE_ADDR, (unsigned long *)addr)
-+#define ext2_clear_bit_atomic(l,nr,addr) \
-+		test_and_clear_bit( (nr) ^ LE_BYTE_ADDR, (unsigned long *)addr)
- 
--	return (ADDR[nr >> 3] >> (nr & 7)) & 1;
--}
-+#endif	/* __KERNEL__ */
- 
--/*
-- * This implementation of ext2_find_{first,next}_zero_bit was stolen from
-- * Linus' asm-alpha/bitops.h and modified for a big-endian machine.
-- */
- 
- #define ext2_find_first_zero_bit(addr, size) \
--        ext2_find_next_zero_bit((addr), (size), 0)
-+	ext2_find_next_zero_bit((addr), (size), 0)
-+
-+/* include/linux/byteorder does not support "unsigned long" type */
-+static inline unsigned long ext2_swabp(unsigned long * x)
-+{
-+#ifdef __LP64__
-+	return (unsigned long) __swab64p((u64 *) x);
-+#else
-+	return (unsigned long) __swab32p((u32 *) x);
-+#endif
-+}
-+
-+/* include/linux/byteorder doesn't support "unsigned long" type */
-+static inline unsigned long ext2_swab(unsigned long y)
-+{
-+#ifdef __LP64__
-+	return (unsigned long) __swab64((u64) y);
-+#else
-+	return (unsigned long) __swab32((u32) y);
-+#endif
-+}
- 
--extern __inline__ unsigned long ext2_find_next_zero_bit(void *addr,
--	unsigned long size, unsigned long offset)
-+static __inline__ unsigned long ext2_find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
- {
--	unsigned int *p = ((unsigned int *) addr) + (offset >> 5);
--	unsigned int result = offset & ~31UL;
--	unsigned int tmp;
-+	unsigned long *p = (unsigned long *) addr + (offset >> SHIFT_PER_LONG);
-+	unsigned long result = offset & ~(BITS_PER_LONG - 1);
-+	unsigned long tmp;
- 
- 	if (offset >= size)
- 		return size;
- 	size -= result;
--	offset &= 31UL;
-+	offset &= (BITS_PER_LONG - 1UL);
- 	if (offset) {
--		tmp = cpu_to_le32p(p++);
--		tmp |= ~0UL >> (32-offset);
--		if (size < 32)
-+		tmp = ext2_swabp(p++);
-+		tmp |= (~0UL >> (BITS_PER_LONG - offset));
-+		if (size < BITS_PER_LONG)
- 			goto found_first;
--		if (tmp != ~0U)
-+		if (~tmp)
- 			goto found_middle;
--		size -= 32;
--		result += 32;
-+		size -= BITS_PER_LONG;
-+		result += BITS_PER_LONG;
- 	}
--	while (size >= 32) {
--		if ((tmp = cpu_to_le32p(p++)) != ~0U)
--			goto found_middle;
--		result += 32;
--		size -= 32;
-+
-+	while (size & ~(BITS_PER_LONG - 1)) {
-+		if (~(tmp = *(p++)))
-+			goto found_middle_swap;
-+		result += BITS_PER_LONG;
-+		size -= BITS_PER_LONG;
- 	}
- 	if (!size)
- 		return result;
--	tmp = cpu_to_le32p(p);
-+	tmp = ext2_swabp(p);
- found_first:
--	tmp |= ~0U << size;
-+	tmp |= ~0UL << size;
-+	if (tmp == ~0UL)	/* Are any bits zero? */
-+		return result + size; /* Nope. Skip ffz */
- found_middle:
- 	return result + ffz(tmp);
-+
-+found_middle_swap:
-+	return result + ffz(ext2_swab(tmp));
- }
- 
-+
- /* Bitmap functions for the minix filesystem.  */
- #define minix_test_and_set_bit(nr,addr) ext2_set_bit(nr,addr)
- #define minix_set_bit(nr,addr) ((void)ext2_set_bit(nr,addr))
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/errno.h CVS2_6_14_PA0/include/asm-parisc/errno.h
---- LINUS_2_6_14/include/asm-parisc/errno.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/errno.h	2005-05-08 20:00:54.000000000 -0600
-@@ -114,6 +114,7 @@
- 
- #define ENOTSUP		252	/* Function not implemented (POSIX.4 / HPUX) */
- #define ECANCELLED	253	/* aio request was canceled before complete (POSIX.4 / HPUX) */
-+#define ECANCELED	ECANCELLED	/* SuSv3 and Solaris wants one 'L' */
- 
- /* for robust mutexes */
- #define EOWNERDEAD	254	/* Owner died */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/grfioctl.h CVS2_6_14_PA0/include/asm-parisc/grfioctl.h
---- LINUS_2_6_14/include/asm-parisc/grfioctl.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/grfioctl.h	2005-07-31 16:24:55.000000000 -0600
-@@ -69,6 +69,8 @@
- #define CRT_ID_TVRX		S9000_ID_98765	/* TVRX (gto/falcon) */
- #define CRT_ID_ARTIST		S9000_ID_ARTIST	/* Artist */
- #define CRT_ID_SUMMIT		0x2FC1066B      /* Summit FX2, FX4, FX6 ... */
-+#define CRT_ID_LEGO		0x35ACDA30	/* Lego FX5, FX10 ... */
-+#define CRT_ID_PINNACLE		0x35ACDA16	/* Pinnacle FXe */ 
- 
- /* structure for ioctl(GCDESCRIBE) */
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/irq.h CVS2_6_14_PA0/include/asm-parisc/irq.h
---- LINUS_2_6_14/include/asm-parisc/irq.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/irq.h	2005-10-19 13:55:33.000000000 -0600
-@@ -8,6 +8,7 @@
- #define _ASM_PARISC_IRQ_H
- 
- #include <linux/config.h>
-+#include <linux/cpumask.h>
- #include <asm/types.h>
  
- #define NO_IRQ		(-1)
-@@ -49,10 +50,10 @@
- extern int txn_claim_irq(int);
- extern unsigned int txn_alloc_data(unsigned int);
- extern unsigned long txn_alloc_addr(unsigned int);
-+extern unsigned long txn_affinity_addr(unsigned int irq, int cpu);
- 
- extern int cpu_claim_irq(unsigned int irq, struct hw_interrupt_type *, void *);
--
--extern int cpu_claim_irq(unsigned int irq, struct hw_interrupt_type *, void *);
-+extern int cpu_check_affinity(unsigned int irq, cpumask_t *dest);
- 
- /* soft power switch support (power.c) */
- extern struct tasklet_struct power_tasklet;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/led.h CVS2_6_14_PA0/include/asm-parisc/led.h
---- LINUS_2_6_14/include/asm-parisc/led.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/led.h	2005-03-27 23:50:20.000000000 -0700
-@@ -23,9 +23,6 @@
- 
- #define LED_CMD_REG_NONE 0		/* NULL == no addr for the cmd register */
- 
--/* led tasklet struct */
--extern struct tasklet_struct led_tasklet;
--
- /* register_led_driver() */
- int __init register_led_driver(int model, unsigned long cmd_reg, unsigned long data_reg);
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/parisc-device.h CVS2_6_14_PA0/include/asm-parisc/parisc-device.h
---- LINUS_2_6_14/include/asm-parisc/parisc-device.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/parisc-device.h	2005-09-10 12:12:02.000000000 -0600
-@@ -1,7 +1,7 @@
- #include <linux/device.h>
- 
- struct parisc_device {
--	unsigned long   hpa;		/* Hard Physical Address */
-+	struct resource hpa;		/* Hard Physical Address */
- 	struct parisc_device_id id;
- 	struct parisc_driver *driver;	/* Driver for this device */
- 	char		name[80];	/* The hardware description */
-@@ -39,6 +39,11 @@
- #define to_parisc_driver(d)	container_of(d, struct parisc_driver, drv)
- #define parisc_parent(d)	to_parisc_device(d->dev.parent)
+ extern void parisc_cache_init(void);	/* initializes cache-flushing */
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-parisc/io.h CVS2_6_15_RC7_PA0/include/asm-parisc/io.h
+--- LINUS_2_6_15_RC7/include/asm-parisc/io.h	2005-12-27 13:25:54.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-parisc/io.h	2005-12-23 19:01:55.000000000 -0700
+@@ -41,7 +41,7 @@
+ #define __raw_check_addr(addr)					\
+ 	if (((unsigned long)addr >> NYBBLE_SHIFT) != 0xe)	\
+ 		__raw_bad_addr(addr);			\
+-	addr = (void *)((unsigned long)addr | (0xfUL << NYBBLE_SHIFT));
++	addr = (void __iomem *)((unsigned long)addr | (0xfUL << NYBBLE_SHIFT));
+ #else
+ #define gsc_check_addr(addr)
+ #define __raw_check_addr(addr)
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-parisc/page.h CVS2_6_15_RC7_PA0/include/asm-parisc/page.h
+--- LINUS_2_6_15_RC7/include/asm-parisc/page.h	2005-12-27 13:25:54.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-parisc/page.h	2005-12-12 14:28:25.000000000 -0700
+@@ -135,6 +135,13 @@
+ #define pfn_valid(pfn)		((pfn) < max_mapnr)
+ #endif /* CONFIG_DISCONTIGMEM */
+ 
++#ifdef CONFIG_HUGETLB_PAGE
++#define HPAGE_SHIFT		22	/* 4MB (is this fixed?) */
++#define HPAGE_SIZE      	((1UL) << HPAGE_SHIFT)
++#define HPAGE_MASK		(~(HPAGE_SIZE - 1))
++#define HUGETLB_PAGE_ORDER	(HPAGE_SHIFT - PAGE_SHIFT)
++#endif
++
+ #define virt_addr_valid(kaddr)	pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
+ 
+ #define page_to_phys(page)	(page_to_pfn(page) << PAGE_SHIFT)
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-parisc/pci.h CVS2_6_15_RC7_PA0/include/asm-parisc/pci.h
+--- LINUS_2_6_15_RC7/include/asm-parisc/pci.h	2005-12-27 13:25:54.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-parisc/pci.h	2005-12-15 12:34:46.000000000 -0700
+@@ -84,11 +84,17 @@
+ /*
+ ** Convert between PCI (IO_VIEW) addresses and processor (PA_VIEW) addresses.
+ ** See pcibios.c for more conversions used by Generic PCI code.
++**
++** Platform characteristics/firmware guarantee that
++**	(1) PA_VIEW - IO_VIEW = lmmio_offset for both LMMIO and ELMMIO
++**	(2) PA_VIEW == IO_VIEW for GMMIO
+ */
+ #define PCI_BUS_ADDR(hba,a)	(PCI_IS_LMMIO(hba,a)	\
+ 		?  ((a) - hba->lmmio_space_offset)	/* mangle LMMIO */ \
+ 		: (a))					/* GMMIO */
+-#define PCI_HOST_ADDR(hba,a)	((a) + hba->lmmio_space_offset)
++#define PCI_HOST_ADDR(hba,a)	(((a) & PCI_F_EXTEND) == 0 \
++		? (a) + hba->lmmio_space_offset \
++		: (a))
+ 
+ #else	/* !CONFIG_64BIT */
+ 
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-parisc/processor.h CVS2_6_15_RC7_PA0/include/asm-parisc/processor.h
+--- LINUS_2_6_15_RC7/include/asm-parisc/processor.h	2005-12-27 13:25:54.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-parisc/processor.h	2005-12-23 19:03:24.000000000 -0700
+@@ -144,16 +144,16 @@
+         })
  
-+static inline char *parisc_pathname(struct parisc_device *d)
-+{
-+	return d->dev.bus_id;
-+}
-+
- static inline void
- parisc_set_drvdata(struct parisc_device *d, void *p)
- {
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/pci.h CVS2_6_14_PA0/include/asm-parisc/pci.h
---- LINUS_2_6_14/include/asm-parisc/pci.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/pci.h	2005-09-14 07:21:28.000000000 -0600
-@@ -69,7 +69,7 @@
- #define PCI_PORT_HBA(a)		((a) >> HBA_PORT_SPACE_BITS)
- #define PCI_PORT_ADDR(a)	((a) & (HBA_PORT_SPACE_SIZE - 1))
- 
--#if CONFIG_64BIT
-+#ifdef CONFIG_64BIT
- #define PCI_F_EXTEND		0xffffffff00000000UL
- #define PCI_IS_LMMIO(hba,a)	pci_is_lmmio(hba,a)
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/pgtable.h CVS2_6_14_PA0/include/asm-parisc/pgtable.h
---- LINUS_2_6_14/include/asm-parisc/pgtable.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/pgtable.h	2005-09-23 21:43:51.000000000 -0600
-@@ -501,6 +501,8 @@
- #define io_remap_pfn_range(vma, vaddr, pfn, size, prot)		\
- 		remap_pfn_range(vma, vaddr, pfn, size, prot)
- 
-+#define pgprot_noncached(prot) __pgprot(pgprot_val(prot) | _PAGE_NO_CACHE)
-+
- #define MK_IOSPACE_PFN(space, pfn)	(pfn)
- #define GET_IOSPACE(pfn)		0
- #define GET_PFN(pfn)			(pfn)
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/processor.h CVS2_6_14_PA0/include/asm-parisc/processor.h
---- LINUS_2_6_14/include/asm-parisc/processor.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/processor.h	2005-09-14 06:57:40.000000000 -0600
-@@ -122,8 +122,27 @@
- }; 
- 
- /* Thread struct flags. */
-+#define PARISC_UAC_NOPRINT	(1UL << 0)	/* see prctl and unaligned.c */
-+#define PARISC_UAC_SIGBUS	(1UL << 1)
- #define PARISC_KERNEL_DEATH	(1UL << 31)	/* see die_if_kernel()... */
- 
-+#define PARISC_UAC_SHIFT	0
-+#define PARISC_UAC_MASK		(PARISC_UAC_NOPRINT|PARISC_UAC_SIGBUS)
-+
-+#define SET_UNALIGN_CTL(task,value)                                       \
-+        ({                                                                \
-+        (task)->thread.flags = (((task)->thread.flags & ~PARISC_UAC_MASK) \
-+                                | (((value) << PARISC_UAC_SHIFT) &        \
-+                                   PARISC_UAC_MASK));                     \
-+        0;                                                                \
-+        })
-+
-+#define GET_UNALIGN_CTL(task,addr)                                        \
-+        ({                                                                \
-+        put_user(((task)->thread.flags & PARISC_UAC_MASK)                 \
-+                 >> PARISC_UAC_SHIFT, (int __user *) (addr));             \
-+        })
-+
  #define INIT_THREAD { \
- 	regs:	{	gr: { 0, }, \
- 			fr: { 0, }, \
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/psw.h CVS2_6_14_PA0/include/asm-parisc/psw.h
---- LINUS_2_6_14/include/asm-parisc/psw.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/psw.h	2005-05-12 22:39:05.000000000 -0600
-@@ -1,4 +1,7 @@
- #ifndef _PARISC_PSW_H
-+
-+#include <linux/config.h>
-+
- #define	PSW_I	0x00000001
- #define	PSW_D	0x00000002
- #define	PSW_P	0x00000004
-@@ -9,6 +12,16 @@
- #define	PSW_G	0x00000040	/* PA1.x only */
- #define PSW_O	0x00000080	/* PA2.0 only */
- 
-+/* ssm/rsm instructions number PSW_W and PSW_E differently */
-+#define PSW_SM_I	PSW_I	/* Enable External Interrupts */
-+#define PSW_SM_D	PSW_D
-+#define PSW_SM_P	PSW_P
-+#define PSW_SM_Q	PSW_Q	/* Enable Interrupt State Collection */
-+#define PSW_SM_R	PSW_R	/* Enable Recover Counter Trap */
-+#define PSW_SM_W	0x200	/* PA2.0 only : Enable Wide Mode */
-+
-+#define PSW_SM_QUIET	PSW_SM_R+PSW_SM_Q+PSW_SM_P+PSW_SM_D+PSW_SM_I
-+
- #define PSW_CB	0x0000ff00
- 
- #define	PSW_M	0x00010000
-@@ -30,33 +43,21 @@
- #define	PSW_Z	0x40000000	/* PA1.x only */
- #define	PSW_Y	0x80000000	/* PA1.x only */
- 
--#ifdef __LP64__
--#define PSW_HI_CB 0x000000ff    /* PA2.0 only */
-+#ifdef CONFIG_64BIT
-+#  define PSW_HI_CB 0x000000ff    /* PA2.0 only */
- #endif
- 
--/* PSW bits to be used with ssm/rsm */
--#define PSW_SM_I        0x1
--#define PSW_SM_D        0x2
--#define PSW_SM_P        0x4
--#define PSW_SM_Q        0x8
--#define PSW_SM_R        0x10
--#define PSW_SM_F        0x20
--#define PSW_SM_G        0x40
--#define PSW_SM_O        0x80
--#define PSW_SM_E        0x100
--#define PSW_SM_W        0x200
--
--#ifdef __LP64__
--#  define USER_PSW      (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I)
--#  define KERNEL_PSW    (PSW_W | PSW_C | PSW_Q | PSW_P | PSW_D)
--#  define REAL_MODE_PSW (PSW_W | PSW_Q)
--#  define USER_PSW_MASK (PSW_W | PSW_T | PSW_N | PSW_X | PSW_B | PSW_V | PSW_CB)
--#  define USER_PSW_HI_MASK (PSW_HI_CB)
--#else
--#  define USER_PSW      (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I)
--#  define KERNEL_PSW    (PSW_C | PSW_Q | PSW_P | PSW_D)
--#  define REAL_MODE_PSW (PSW_Q)
--#  define USER_PSW_MASK (PSW_T | PSW_N | PSW_X | PSW_B | PSW_V | PSW_CB)
-+#ifdef CONFIG_64BIT
-+#  define USER_PSW_HI_MASK	PSW_HI_CB
-+#  define WIDE_PSW		PSW_W
-+#else 
-+#  define WIDE_PSW		0
- #endif
- 
-+/* Used when setting up for rfi */
-+#define KERNEL_PSW    (WIDE_PSW | PSW_C | PSW_Q | PSW_P | PSW_D)
-+#define REAL_MODE_PSW (WIDE_PSW | PSW_Q)
-+#define USER_PSW_MASK (WIDE_PSW | PSW_T | PSW_N | PSW_X | PSW_B | PSW_V | PSW_CB)
-+#define USER_PSW      (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I)
-+
- #endif
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/ptrace.h CVS2_6_14_PA0/include/asm-parisc/ptrace.h
---- LINUS_2_6_14/include/asm-parisc/ptrace.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/ptrace.h	2005-03-31 08:27:13.000000000 -0700
-@@ -49,7 +49,7 @@
- #define user_mode(regs)			(((regs)->iaoq[0] & 3) ? 1 : 0)
- #define user_space(regs)		(((regs)->iasq[1] != 0) ? 1 : 0)
- #define instruction_pointer(regs)	((regs)->iaoq[0] & ~3)
--#define profile_pc(regs) instruction_pointer(regs)
-+unsigned long profile_pc(struct pt_regs *);
- extern void show_regs(struct pt_regs *);
- #endif
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/smp.h CVS2_6_14_PA0/include/asm-parisc/smp.h
---- LINUS_2_6_14/include/asm-parisc/smp.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/smp.h	2005-10-18 18:30:05.000000000 -0600
-@@ -29,6 +29,7 @@
- #define cpu_logical_map(cpu)	(cpu)
- 
- extern void smp_send_reschedule(int cpu);
-+extern void smp_send_all_nop(void);
- 
- #endif /* !ASSEMBLY */
- 
-@@ -53,7 +54,11 @@
- 
- #define raw_smp_processor_id()	(current_thread_info()->cpu)
- 
--#endif /* CONFIG_SMP */
-+#else /* CONFIG_SMP */
-+
-+static inline void smp_send_all_nop(void) { return; }
-+
-+#endif
- 
- #define NO_PROC_ID		0xFF		/* No processor magic marker */
- #define ANY_PROC_ID		0xFF		/* Any processor magic marker */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/spinlock.h CVS2_6_14_PA0/include/asm-parisc/spinlock.h
---- LINUS_2_6_14/include/asm-parisc/spinlock.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/spinlock.h	2005-10-20 10:07:04.000000000 -0600
-@@ -5,29 +5,31 @@
- #include <asm/processor.h>
- #include <asm/spinlock_types.h>
- 
--/* Note that PA-RISC has to use `1' to mean unlocked and `0' to mean locked
-- * since it only has load-and-zero. Moreover, at least on some PA processors,
-- * the semaphore address has to be 16-byte aligned.
-- */
--
- static inline int __raw_spin_is_locked(raw_spinlock_t *x)
- {
- 	volatile unsigned int *a = __ldcw_align(x);
- 	return *a == 0;
- }
- 
--#define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock)
-+#define __raw_spin_lock(lock) __raw_spin_lock_flags(lock, 0)
- #define __raw_spin_unlock_wait(x) \
- 		do { cpu_relax(); } while (__raw_spin_is_locked(x))
- 
--static inline void __raw_spin_lock(raw_spinlock_t *x)
-+static inline void __raw_spin_lock_flags(raw_spinlock_t *x,
-+					 unsigned long flags)
- {
- 	volatile unsigned int *a;
- 
- 	mb();
- 	a = __ldcw_align(x);
- 	while (__ldcw(a) == 0)
--		while (*a == 0);
-+		while (*a == 0)
-+			if (flags & PSW_SM_I) {
-+				local_irq_enable();
-+				cpu_relax();
-+				local_irq_disable();
-+			} else
-+				cpu_relax();
- 	mb();
- }
- 
-@@ -65,26 +67,20 @@
- 
- static  __inline__ void __raw_read_lock(raw_rwlock_t *rw)
- {
--	unsigned long flags;
--	local_irq_save(flags);
- 	__raw_spin_lock(&rw->lock);
- 
- 	rw->counter++;
- 
- 	__raw_spin_unlock(&rw->lock);
--	local_irq_restore(flags);
- }
- 
- static  __inline__ void __raw_read_unlock(raw_rwlock_t *rw)
- {
--	unsigned long flags;
--	local_irq_save(flags);
- 	__raw_spin_lock(&rw->lock);
- 
- 	rw->counter--;
- 
- 	__raw_spin_unlock(&rw->lock);
--	local_irq_restore(flags);
- }
- 
- /* write_lock is less trivial.  We optimistically grab the lock and check
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/spinlock_types.h CVS2_6_14_PA0/include/asm-parisc/spinlock_types.h
---- LINUS_2_6_14/include/asm-parisc/spinlock_types.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/spinlock_types.h	2005-09-27 09:22:08.000000000 -0600
-@@ -6,11 +6,15 @@
- #endif
- 
- typedef struct {
-+#ifdef CONFIG_PA20
-+	volatile unsigned int slock;
-+# define __RAW_SPIN_LOCK_UNLOCKED { 1 }
-+#else
- 	volatile unsigned int lock[4];
-+# define __RAW_SPIN_LOCK_UNLOCKED	{ { 1, 1, 1, 1 } }
-+#endif
- } raw_spinlock_t;
- 
--#define __RAW_SPIN_LOCK_UNLOCKED	{ { 1, 1, 1, 1 } }
--
- typedef struct {
- 	raw_spinlock_t lock;
- 	volatile int counter;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/system.h CVS2_6_14_PA0/include/asm-parisc/system.h
---- LINUS_2_6_14/include/asm-parisc/system.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/system.h	2005-09-14 06:57:40.000000000 -0600
-@@ -138,13 +138,7 @@
- #define set_wmb(var, value)		do { var = value; wmb(); } while (0)
- 
- 
--/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.  */
--#define __ldcw(a) ({ \
--	unsigned __ret; \
--	__asm__ __volatile__("ldcw 0(%1),%0" : "=r" (__ret) : "r" (a)); \
--	__ret; \
--})
--
-+#ifndef CONFIG_PA20
- /* Because kmalloc only guarantees 8-byte alignment for kmalloc'd data,
-    and GCC only guarantees 8-byte alignment for stack locals, we can't
-    be assured of 16-byte alignment for atomic lock data even if we
-@@ -152,37 +146,41 @@
-    we use a struct containing an array of four ints for the atomic lock
-    type and dynamically select the 16-byte aligned int from the array
-    for the semaphore.  */
-+
- #define __PA_LDCW_ALIGNMENT 16
- #define __ldcw_align(a) ({ \
-   unsigned long __ret = (unsigned long) &(a)->lock[0];        		\
-   __ret = (__ret + __PA_LDCW_ALIGNMENT - 1) & ~(__PA_LDCW_ALIGNMENT - 1); \
-   (volatile unsigned int *) __ret;                                      \
- })
-+#define LDCW	"ldcw"
- 
--#ifdef CONFIG_SMP
--# define __lock_aligned __attribute__((__section__(".data.lock_aligned")))
--#endif
-+#else /*CONFIG_PA20*/
-+/* From: "Jim Hull" <jim.hull of hp.com>
-+   I've attached a summary of the change, but basically, for PA 2.0, as
-+   long as the ",CO" (coherent operation) completer is specified, then the
-+   16-byte alignment requirement for ldcw and ldcd is relaxed, and instead
-+   they only require "natural" alignment (4-byte for ldcw, 8-byte for
-+   ldcd). */
-+
-+#define __PA_LDCW_ALIGNMENT 4
-+#define __ldcw_align(a) ((volatile unsigned int *)a)
-+#define LDCW	"ldcw,co"
- 
--#define KERNEL_START (0x10100000 - 0x1000)
-+#endif /*!CONFIG_PA20*/
- 
--/* This is for the serialisation of PxTLB broadcasts.  At least on the
-- * N class systems, only one PxTLB inter processor broadcast can be
-- * active at any one time on the Merced bus.  This tlb purge
-- * synchronisation is fairly lightweight and harmless so we activate
-- * it on all SMP systems not just the N class. */
--#ifdef CONFIG_SMP
--extern spinlock_t pa_tlb_lock;
--
--#define purge_tlb_start(x) spin_lock(&pa_tlb_lock)
--#define purge_tlb_end(x) spin_unlock(&pa_tlb_lock)
--
--#else
--
--#define purge_tlb_start(x) do { } while(0)
--#define purge_tlb_end(x) do { } while (0)
-+/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.  */
-+#define __ldcw(a) ({ \
-+	unsigned __ret; \
-+	__asm__ __volatile__(LDCW " 0(%1),%0" : "=r" (__ret) : "r" (a)); \
-+	__ret; \
-+})
- 
-+#ifdef CONFIG_SMP
-+# define __lock_aligned __attribute__((__section__(".data.lock_aligned")))
- #endif
+-	regs:	{	gr: { 0, }, \
+-			fr: { 0, }, \
+-			sr: { 0, }, \
+-			iasq: { 0, }, \
+-			iaoq: { 0, }, \
+-			cr27: 0, \
++	.regs = {	.gr	= { 0, }, \
++			.fr	= { 0, }, \
++			.sr	= { 0, }, \
++			.iasq	= { 0, }, \
++			.iaoq	= { 0, }, \
++			.cr27	= 0, \
+ 		}, \
+-	task_size:      DEFAULT_TASK_SIZE, \
+-	map_base:       DEFAULT_MAP_BASE, \
+-	flags:          0 \
++	.task_size	= DEFAULT_TASK_SIZE, \
++	.map_base	= DEFAULT_MAP_BASE, \
++	.flags		= 0 \
+ 	}
  
-+#define KERNEL_START (0x10100000 - 0x1000)
- #define arch_align_stack(x) (x)
+ /*
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-parisc/tlbflush.h CVS2_6_15_RC7_PA0/include/asm-parisc/tlbflush.h
+--- LINUS_2_6_15_RC7/include/asm-parisc/tlbflush.h	2005-12-27 13:25:54.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-parisc/tlbflush.h	2005-12-15 11:12:46.000000000 -0700
+@@ -22,6 +22,7 @@
+ #define purge_tlb_end(x) spin_unlock(&pa_tlb_lock)
  
- #endif
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/tlbflush.h CVS2_6_14_PA0/include/asm-parisc/tlbflush.h
---- LINUS_2_6_14/include/asm-parisc/tlbflush.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/tlbflush.h	2005-06-04 01:11:25.000000000 -0600
-@@ -7,6 +7,26 @@
- #include <linux/mm.h>
- #include <asm/mmu_context.h>
- 
-+
-+/* This is for the serialisation of PxTLB broadcasts.  At least on the
-+ * N class systems, only one PxTLB inter processor broadcast can be
-+ * active at any one time on the Merced bus.  This tlb purge
-+ * synchronisation is fairly lightweight and harmless so we activate
-+ * it on all SMP systems not just the N class. */
-+#ifdef CONFIG_SMP
-+extern spinlock_t pa_tlb_lock;
-+
-+#define purge_tlb_start(x) spin_lock(&pa_tlb_lock)
-+#define purge_tlb_end(x) spin_unlock(&pa_tlb_lock)
-+
-+#else
-+
-+#define purge_tlb_start(x) do { } while(0)
-+#define purge_tlb_end(x) do { } while (0)
-+
-+#endif
-+
-+
  extern void flush_tlb_all(void);
++extern void flush_tlb_all_local(void *);
  
  /*
-@@ -64,29 +84,26 @@
- {
- 	unsigned long npages;
- 
--	
- 	npages = ((end - (start & PAGE_MASK)) + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
--	if (npages >= 512)  /* XXX arbitrary, should be tuned */
-+	if (npages >= 512)  /* 2MB of space: arbitrary, should be tuned */
- 		flush_tlb_all();
- 	else {
- 
- 		mtsp(vma->vm_mm->context,1);
-+		purge_tlb_start();
- 		if (split_tlb) {
--			purge_tlb_start();
- 			while (npages--) {
- 				pdtlb(start);
- 				pitlb(start);
- 				start += PAGE_SIZE;
- 			}
--			purge_tlb_end();
- 		} else {
--			purge_tlb_start();
- 			while (npages--) {
- 				pdtlb(start);
- 				start += PAGE_SIZE;
- 			}
--			purge_tlb_end();
- 		}
-+		purge_tlb_end();
- 	}
- }
- 
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/types.h CVS2_6_14_PA0/include/asm-parisc/types.h
---- LINUS_2_6_14/include/asm-parisc/types.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/types.h	2005-09-14 06:57:40.000000000 -0600
-@@ -33,8 +33,10 @@
- 
- #ifdef __LP64__
- #define BITS_PER_LONG 64
-+#define SHIFT_PER_LONG 6
- #else
- #define BITS_PER_LONG 32
-+#define SHIFT_PER_LONG 5
- #endif
- 
- #ifndef __ASSEMBLY__
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-parisc/unistd.h CVS2_6_14_PA0/include/asm-parisc/unistd.h
---- LINUS_2_6_14/include/asm-parisc/unistd.h	2005-10-27 21:30:46.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-parisc/unistd.h	2005-09-21 22:26:33.000000000 -0600
-@@ -687,8 +687,8 @@
- #define __NR_shmget             (__NR_Linux + 194)
- #define __NR_shmctl             (__NR_Linux + 195)
- 
--#define __NR_getpmsg            (__NR_Linux + 196)      /* some people actually want streams */
--#define __NR_putpmsg            (__NR_Linux + 197)      /* some people actually want streams */
-+#define __NR_getpmsg		(__NR_Linux + 196) /* Somebody *wants* streams? */
-+#define __NR_putpmsg		(__NR_Linux + 197)
- 
- #define __NR_lstat64            (__NR_Linux + 198)
- #define __NR_truncate64         (__NR_Linux + 199)
-@@ -755,8 +755,14 @@
- #define __NR_mbind		(__NR_Linux + 260)
- #define __NR_get_mempolicy	(__NR_Linux + 261)
- #define __NR_set_mempolicy	(__NR_Linux + 262)
-+#define __NR_vserver		(__NR_Linux + 263)
-+#define __NR_add_key		(__NR_Linux + 264)
-+#define __NR_request_key	(__NR_Linux + 265)
-+#define __NR_keyctl		(__NR_Linux + 266)
-+#define __NR_ioprio_set		(__NR_Linux + 267)
-+#define __NR_ioprio_get		(__NR_Linux + 268)
- 
--#define __NR_Linux_syscalls     263
-+#define __NR_Linux_syscalls     269
- 
- #define HPUX_GATEWAY_ADDR       0xC0000004
- #define LINUX_GATEWAY_ADDR      0x100
-@@ -807,10 +813,10 @@
- #define K_INLINE_SYSCALL(name, nr, args...)	({			\
- 	long __sys_res;							\
- 	{								\
--		register unsigned long __res asm("r28");		\
-+		register unsigned long __res __asm__("r28");		\
- 		K_LOAD_ARGS_##nr(args)					\
- 		/* FIXME: HACK stw/ldw r19 around syscall */		\
--		asm volatile(						\
-+		__asm__ volatile(					\
- 			K_STW_ASM_PIC					\
- 			"	ble  0x100(%%sr2, %%r0)\n"		\
- 			"	ldi %1, %%r20\n"			\
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-s390/compat.h CVS2_6_14_PA0/include/asm-s390/compat.h
---- LINUS_2_6_14/include/asm-s390/compat.h	2005-10-27 21:30:47.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-s390/compat.h	2005-09-14 06:57:44.000000000 -0600
+  * flush_tlb_mm()
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-s390/compat.h CVS2_6_15_RC7_PA0/include/asm-s390/compat.h
+--- LINUS_2_6_15_RC7/include/asm-s390/compat.h	2005-12-27 13:25:54.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-s390/compat.h	2005-09-14 06:57:44.000000000 -0600
 @@ -15,6 +15,9 @@
  typedef s32		compat_pid_t;
  typedef u16		__compat_uid_t;
@@ -12973,22 +7979,117 @@
  typedef u32		__compat_uid32_t;
  typedef u32		__compat_gid32_t;
  typedef u16		compat_mode_t;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/asm-sparc64/compat.h CVS2_6_14_PA0/include/asm-sparc64/compat.h
---- LINUS_2_6_14/include/asm-sparc64/compat.h	2005-10-27 21:30:47.000000000 -0600
-+++ CVS2_6_14_PA0/include/asm-sparc64/compat.h	2005-09-14 06:57:45.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-sparc64/compat.h CVS2_6_15_RC7_PA0/include/asm-sparc64/compat.h
+--- LINUS_2_6_15_RC7/include/asm-sparc64/compat.h	2005-12-27 13:25:54.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-sparc64/compat.h	2005-09-14 06:57:45.000000000 -0600
 @@ -14,6 +14,9 @@
  typedef s32		compat_pid_t;
  typedef u16		__compat_uid_t;
  typedef u16		__compat_gid_t;
-+/* Define for use in the compat_siginfo_t */
++/* Define for use in the compat_siginfo_t */
++#undef __ARCH_SI_COMPAT_UID_T
++#define __ARCH_SI_COMPAT_UID_T compat_uint_t
+ typedef u32		__compat_uid32_t;
+ typedef u32		__compat_gid32_t;
+ typedef u16		compat_mode_t;
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-x86_64/compat.h CVS2_6_15_RC7_PA0/include/asm-x86_64/compat.h
+--- LINUS_2_6_15_RC7/include/asm-x86_64/compat.h	2005-12-27 13:25:55.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-x86_64/compat.h	2005-11-12 20:29:21.000000000 -0700
+@@ -16,6 +16,9 @@
+ typedef s32		compat_pid_t;
+ typedef u16		__compat_uid_t;
+ typedef u16		__compat_gid_t;
++/* Define for use in compat_siginfo_t */
 +#undef __ARCH_SI_COMPAT_UID_T
-+#define __ARCH_SI_COMPAT_UID_T compat_uint_t
++#define __ARCH_SI_COMPAT_UID_T __compat_uid32_t
  typedef u32		__compat_uid32_t;
  typedef u32		__compat_gid32_t;
  typedef u16		compat_mode_t;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/linux/compat.h CVS2_6_14_PA0/include/linux/compat.h
---- LINUS_2_6_14/include/linux/compat.h	2005-10-27 21:30:48.000000000 -0600
-+++ CVS2_6_14_PA0/include/linux/compat.h	2005-09-14 06:57:49.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/asm-x86_64/ia32.h CVS2_6_15_RC7_PA0/include/asm-x86_64/ia32.h
+--- LINUS_2_6_15_RC7/include/asm-x86_64/ia32.h	2005-12-27 13:25:55.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/asm-x86_64/ia32.h	2005-11-19 22:09:34.000000000 -0700
+@@ -6,6 +6,7 @@
+ #ifdef CONFIG_IA32_EMULATION
+ 
+ #include <linux/compat.h>
++#include <linux/compat_siginfo.h>
+ 
+ /*
+  * 32 bit structures for IA32 support.
+@@ -78,58 +79,6 @@
+ 	unsigned long long	st_ino;
+ } __attribute__((packed));
+ 
+-typedef struct compat_siginfo{
+-	int si_signo;
+-	int si_errno;
+-	int si_code;
+-
+-	union {
+-		int _pad[((128/sizeof(int)) - 3)];
+-
+-		/* kill() */
+-		struct {
+-			unsigned int _pid;	/* sender's pid */
+-			unsigned int _uid;	/* sender's uid */
+-		} _kill;
+-
+-		/* POSIX.1b timers */
+-		struct {
+-			compat_timer_t _tid;	/* timer id */
+-			int _overrun;		/* overrun count */
+-			compat_sigval_t _sigval;	/* same as below */
+-			int _sys_private;	/* not to be passed to user */
+-			int _overrun_incr;	/* amount to add to overrun */
+-		} _timer;
+-
+-		/* POSIX.1b signals */
+-		struct {
+-			unsigned int _pid;	/* sender's pid */
+-			unsigned int _uid;	/* sender's uid */
+-			compat_sigval_t _sigval;
+-		} _rt;
+-
+-		/* SIGCHLD */
+-		struct {
+-			unsigned int _pid;	/* which child */
+-			unsigned int _uid;	/* sender's uid */
+-			int _status;		/* exit code */
+-			compat_clock_t _utime;
+-			compat_clock_t _stime;
+-		} _sigchld;
+-
+-		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
+-		struct {
+-			unsigned int _addr;	/* faulting insn/memory ref. */
+-		} _sigfault;
+-
+-		/* SIGPOLL */
+-		struct {
+-			int _band;	/* POLL_IN, POLL_OUT, POLL_MSG */
+-			int _fd;
+-		} _sigpoll;
+-	} _sifields;
+-} compat_siginfo_t;
+-
+ struct sigframe32
+ {
+         u32 pretcode;
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/linux/cache.h CVS2_6_15_RC7_PA0/include/linux/cache.h
+--- LINUS_2_6_15_RC7/include/linux/cache.h	2005-12-27 13:25:55.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/linux/cache.h	2005-12-19 05:42:41.000000000 -0700
+@@ -13,7 +13,7 @@
+ #define SMP_CACHE_BYTES L1_CACHE_BYTES
+ #endif
+ 
+-#if defined(CONFIG_X86) || defined(CONFIG_SPARC64) || defined(CONFIG_IA64)
++#if defined(CONFIG_X86) || defined(CONFIG_SPARC64) || defined(CONFIG_IA64) || defined(CONFIG_PARISC)
+ #define __read_mostly __attribute__((__section__(".data.read_mostly")))
+ #else
+ #define __read_mostly
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/linux/compat.h CVS2_6_15_RC7_PA0/include/linux/compat.h
+--- LINUS_2_6_15_RC7/include/linux/compat.h	2005-12-27 13:25:55.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/linux/compat.h	2005-09-14 06:57:49.000000000 -0600
 @@ -6,10 +6,16 @@
   */
  #include <linux/config.h>
@@ -13059,9 +8160,9 @@
  
  #endif /* CONFIG_COMPAT */
  #endif /* _LINUX_COMPAT_H */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/linux/compat_siginfo.h CVS2_6_14_PA0/include/linux/compat_siginfo.h
---- LINUS_2_6_14/include/linux/compat_siginfo.h	1969-12-31 17:00:00.000000000 -0700
-+++ CVS2_6_14_PA0/include/linux/compat_siginfo.h	2005-08-02 08:33:30.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/linux/compat_siginfo.h CVS2_6_15_RC7_PA0/include/linux/compat_siginfo.h
+--- LINUS_2_6_15_RC7/include/linux/compat_siginfo.h	1969-12-31 17:00:00.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/linux/compat_siginfo.h	2005-08-02 08:33:30.000000000 -0600
 @@ -0,0 +1,182 @@
 +#ifndef _ASM_GENERIC_COMPAT_SIGINFO_H
 +#define _ASM_GENERIC_COMPAT_SIGINFO_H
@@ -13245,996 +8346,10 @@
 +#endif /* CONFIG_COMPAT */
 +#endif /* _ASM_GENERIC_COMPAT_SIGINFO_H */
 +
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/linux/hil.h CVS2_6_14_PA0/include/linux/hil.h
---- LINUS_2_6_14/include/linux/hil.h	1969-12-31 17:00:00.000000000 -0700
-+++ CVS2_6_14_PA0/include/linux/hil.h	2004-10-31 14:05:59.000000000 -0700
-@@ -0,0 +1,483 @@
-+#ifndef _HIL_H_
-+#define _HIL_H_
-+
-+/*
-+ * Hewlett Packard Human Interface Loop (HP-HIL) Protocol -- header.
-+ *
-+ * Copyright (c) 2001 Brian S. Julin
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions, and the following disclaimer,
-+ *    without modification.
-+ * 2. The name of the author may not be used to endorse or promote products
-+ *    derived from this software without specific prior written permission.
-+ *
-+ * Alternatively, this software may be distributed under the terms of the
-+ * GNU General Public License ("GPL").
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 OR OTHERWISE) ARISING IN ANY WAY
-+ *
-+ * References:
-+ * HP-HIL Technical Reference Manual.  Hewlett Packard Product No. 45918A
-+ *
-+ * A note of thanks to HP for providing and shipping reference materials
-+ * free of charge to help in the development of HIL support for Linux.
-+ *
-+ */
-+
-+#include <asm/types.h>
-+
-+/* Physical constants relevant to raw loop/device timing. 
-+ */ 
-+
-+#define HIL_CLOCK		8MHZ
-+#define HIL_EK1_CLOCK		30HZ
-+#define HIL_EK2_CLOCK		60HZ
-+
-+#define HIL_TIMEOUT_DEV         5	/* ms */
-+#define HIL_TIMEOUT_DEVS	10	/* ms */
-+#define HIL_TIMEOUT_NORESP	10	/* ms */
-+#define HIL_TIMEOUT_DEVS_DATA	16	/* ms */
-+#define HIL_TIMEOUT_SELFTEST	200	/* ms */
-+
-+
-+/* Actual wire line coding.  These will only be useful if someone is 
-+ * implementing a software MLC to run HIL devices on a non-parisc machine.
-+ */
-+
-+#define HIL_WIRE_PACKET_LEN	15
-+enum hil_wire_bitpos {
-+	HIL_WIRE_START		= 0,
-+	HIL_WIRE_ADDR2,
-+	HIL_WIRE_ADDR1,
-+	HIL_WIRE_ADDR0,
-+	HIL_WIRE_COMMAND,
-+	HIL_WIRE_DATA7,
-+	HIL_WIRE_DATA6,
-+	HIL_WIRE_DATA5,
-+	HIL_WIRE_DATA4,
-+	HIL_WIRE_DATA3,
-+	HIL_WIRE_DATA2,
-+	HIL_WIRE_DATA1,
-+	HIL_WIRE_DATA0,
-+	HIL_WIRE_PARITY,
-+	HIL_WIRE_STOP
-+};
-+
-+/* HP documentation uses these bit positions to refer to commands;
-+ * we will call these "packets".
-+ */
-+enum hil_pkt_bitpos {
-+	HIL_PKT_CMD		= 0x00000800,
-+	HIL_PKT_ADDR2		= 0x00000400,
-+	HIL_PKT_ADDR1		= 0x00000200,
-+	HIL_PKT_ADDR0		= 0x00000100,
-+	HIL_PKT_ADDR_MASK	= 0x00000700,
-+	HIL_PKT_ADDR_SHIFT	= 8,
-+	HIL_PKT_DATA7		= 0x00000080,
-+	HIL_PKT_DATA6		= 0x00000040,
-+	HIL_PKT_DATA5		= 0x00000020,
-+	HIL_PKT_DATA4		= 0x00000010,
-+	HIL_PKT_DATA3		= 0x00000008,
-+	HIL_PKT_DATA2		= 0x00000004,
-+	HIL_PKT_DATA1		= 0x00000002,
-+	HIL_PKT_DATA0		= 0x00000001,
-+	HIL_PKT_DATA_MASK	= 0x000000FF,
-+	HIL_PKT_DATA_SHIFT	= 0
-+};
-+
-+/* The HIL MLC also has several error/status/control bits.  We extend the 
-+ * "packet" to include these when direct access to the MLC is available,
-+ * or emulate them in cases where they are not available. 
-+ *
-+ * This way the device driver knows that the underlying MLC driver
-+ * has had to deal with loop errors.
-+ */
-+enum hil_error_bitpos {
-+	HIL_ERR_OB	= 0x00000800, /* MLC is busy sending an auto-poll, 
-+					 or we have filled up the output 
-+					 buffer and must wait. */
-+	HIL_ERR_INT	= 0x00010000, /* A normal interrupt has occurred. */
-+	HIL_ERR_NMI	= 0x00020000, /* An NMI has occurred. */
-+	HIL_ERR_LERR	= 0x00040000, /* A poll didn't come back. */
-+	HIL_ERR_PERR	= 0x01000000, /* There was a Parity Error. */
-+	HIL_ERR_FERR	= 0x02000000, /* There was a Framing Error. */
-+	HIL_ERR_FOF	= 0x04000000  /* Input FIFO Overflowed. */
-+};
-+
-+enum hil_control_bitpos {
-+	HIL_CTRL_TEST	= 0x00010000,
-+	HIL_CTRL_IPF	= 0x00040000,
-+	HIL_CTRL_APE	= 0x02000000
-+};
-+
-+/* Bits 30,31 are unused, we use them to control write behavior. */
-+#define HIL_DO_ALTER_CTRL  0x40000000 /* Write MSW of packet to control 
-+                                          before writing LSW to loop */
-+#define HIL_CTRL_ONLY      0xc0000000 /* *Only* alter the control registers */
-+
-+/* This gives us a 32-bit "packet" 
-+ */
-+typedef u32 hil_packet;
-+
-+
-+/* HIL Loop commands 
-+ */
-+enum hil_command {
-+	HIL_CMD_IFC	= 0x00,	/* Interface Clear */
-+	HIL_CMD_EPT	= 0x01,	/* Enter Pass-Thru Mode */
-+	HIL_CMD_ELB	= 0x02,	/* Enter Loop-Back Mode */
-+	HIL_CMD_IDD	= 0x03,	/* Identify and Describe */
-+	HIL_CMD_DSR	= 0x04,	/* Device Soft Reset */
-+	HIL_CMD_PST	= 0x05,	/* Perform Self Test */
-+	HIL_CMD_RRG	= 0x06,	/* Read Register */
-+	HIL_CMD_WRG	= 0x07,	/* Write Register */
-+	HIL_CMD_ACF	= 0x08,	/* Auto Configure */
-+	HIL_CMDID_ACF	= 0x07,	/* Auto Configure bits with incremented ID */
-+	HIL_CMD_POL	= 0x10,	/* Poll */
-+	HIL_CMDCT_POL	= 0x0f,	/* Poll command bits with item count  */
-+	HIL_CMD_RPL	= 0x20,	/* RePoll */
-+	HIL_CMDCT_RPL	= 0x0f,	/* RePoll command bits with item count */
-+	HIL_CMD_RNM	= 0x30,	/* Report Name */
-+	HIL_CMD_RST	= 0x31,	/* Report Status */
-+	HIL_CMD_EXD	= 0x32,	/* Extended Describe */
-+	HIL_CMD_RSC	= 0x33,	/* Report Security Code */
-+
-+	/* 0x34 to 0x3c reserved for future use  */
-+
-+	HIL_CMD_DKA	= 0x3d,	/* Disable Keyswitch Autorepeat */
-+	HIL_CMD_EK1	= 0x3e,	/* Enable Keyswitch Autorepeat 1 */
-+	HIL_CMD_EK2	= 0x3f,	/* Enable Keyswitch Autorepeat 2 */
-+	HIL_CMD_PR1	= 0x40,	/* Prompt1 */  
-+	HIL_CMD_PR2	= 0x41,	/* Prompt2 */
-+	HIL_CMD_PR3	= 0x42,	/* Prompt3 */
-+	HIL_CMD_PR4	= 0x43,	/* Prompt4 */
-+	HIL_CMD_PR5	= 0x44,	/* Prompt5 */
-+	HIL_CMD_PR6	= 0x45,	/* Prompt6 */
-+	HIL_CMD_PR7	= 0x46,	/* Prompt7 */
-+	HIL_CMD_PRM	= 0x47,	/* Prompt (General Purpose) */
-+	HIL_CMD_AK1	= 0x48,	/* Acknowlege1 */  
-+	HIL_CMD_AK2	= 0x49,	/* Acknowlege2 */
-+	HIL_CMD_AK3	= 0x4a,	/* Acknowlege3 */
-+	HIL_CMD_AK4	= 0x4b,	/* Acknowlege4 */
-+	HIL_CMD_AK5	= 0x4c,	/* Acknowlege5 */
-+	HIL_CMD_AK6	= 0x4d,	/* Acknowlege6 */
-+	HIL_CMD_AK7	= 0x4e,	/* Acknowlege7 */
-+	HIL_CMD_ACK	= 0x4f,	/* Acknowlege (General Purpose) */
-+
-+	/* 0x50 to 0x78 reserved for future use  */
-+	/* 0x80 to 0xEF device-specific commands */
-+	/* 0xf0 to 0xf9 reserved for future use  */
-+
-+	HIL_CMD_RIO	= 0xfa,	/* Register I/O Error */
-+	HIL_CMD_SHR	= 0xfb,	/* System Hard Reset */
-+	HIL_CMD_TER	= 0xfc,	/* Transmission Error */
-+	HIL_CMD_CAE	= 0xfd,	/* Configuration Address Error */
-+	HIL_CMD_DHR	= 0xfe,	/* Device Hard Reset */
-+
-+	/* 0xff is prohibited from use. */
-+};
-+
-+
-+/* 
-+ * Response "records" to HIL commands
-+ */
-+
-+/* Device ID byte 
-+ */
-+#define HIL_IDD_DID_TYPE_MASK		0xe0	/* Primary type bits */
-+#define HIL_IDD_DID_TYPE_KB_INTEGRAL	0xa0	/* Integral keyboard */
-+#define HIL_IDD_DID_TYPE_KB_ITF		0xc0	/* ITD keyboard */
-+#define HIL_IDD_DID_TYPE_KB_RSVD	0xe0	/* Reserved keyboard type */
-+#define HIL_IDD_DID_TYPE_KB_LANG_MASK	0x1f	/* Keyboard locale bits */
-+#define HIL_IDD_DID_KBLANG_USE_ESD	0x00	/* Use ESD Locale instead */
-+#define HIL_IDD_DID_TYPE_ABS		0x80    /* Absolute Positioners */
-+#define HIL_IDD_DID_ABS_RSVD1_MASK	0xf8	/* Reserved */
-+#define HIL_IDD_DID_ABS_RSVD1		0x98
-+#define HIL_IDD_DID_ABS_TABLET_MASK	0xf8	/* Tablets and digitizers */
-+#define HIL_IDD_DID_ABS_TABLET		0x90
-+#define HIL_IDD_DID_ABS_TSCREEN_MASK	0xfc	/* Touch screens */
-+#define HIL_IDD_DID_ABS_TSCREEN		0x8c
-+#define HIL_IDD_DID_ABS_RSVD2_MASK	0xfc	/* Reserved */
-+#define HIL_IDD_DID_ABS_RSVD2		0x88
-+#define HIL_IDD_DID_ABS_RSVD3_MASK	0xfc	/* Reserved */
-+#define HIL_IDD_DID_ABS_RSVD3		0x80
-+#define HIL_IDD_DID_TYPE_REL		0x60    /* Relative Positioners */
-+#define HIL_IDD_DID_REL_RSVD1_MASK	0xf0	/* Reserved */
-+#define HIL_IDD_DID_REL_RSVD1		0x70
-+#define HIL_IDD_DID_REL_RSVD2_MASK	0xfc	/* Reserved */
-+#define HIL_IDD_DID_REL_RSVD2		0x6c
-+#define HIL_IDD_DID_REL_MOUSE_MASK	0xfc	/* Mouse */
-+#define HIL_IDD_DID_REL_MOUSE		0x68
-+#define HIL_IDD_DID_REL_QUAD_MASK	0xf8	/* Other Quadrature Devices */
-+#define HIL_IDD_DID_REL_QUAD		0x60
-+#define HIL_IDD_DID_TYPE_CHAR		0x40    /* Character Entry */
-+#define HIL_IDD_DID_CHAR_BARCODE_MASK	0xfc	/* Barcode Reader */
-+#define HIL_IDD_DID_CHAR_BARCODE	0x5c
-+#define HIL_IDD_DID_CHAR_RSVD1_MASK	0xfc	/* Reserved */
-+#define HIL_IDD_DID_CHAR_RSVD1		0x58
-+#define HIL_IDD_DID_CHAR_RSVD2_MASK	0xf8	/* Reserved */
-+#define HIL_IDD_DID_CHAR_RSVD2		0x50
-+#define HIL_IDD_DID_CHAR_RSVD3_MASK	0xf0	/* Reserved */
-+#define HIL_IDD_DID_CHAR_RSVD3		0x40
-+#define HIL_IDD_DID_TYPE_OTHER		0x20    /* Miscellaneous */
-+#define HIL_IDD_DID_OTHER_RSVD1_MASK	0xf0	/* Reserved */
-+#define HIL_IDD_DID_OTHER_RSVD1		0x30
-+#define HIL_IDD_DID_OTHER_BARCODE_MASK	0xfc	/* Tone Generator */
-+#define HIL_IDD_DID_OTHER_BARCODE	0x2c
-+#define HIL_IDD_DID_OTHER_RSVD2_MASK	0xfc	/* Reserved */
-+#define HIL_IDD_DID_OTHER_RSVD2		0x28
-+#define HIL_IDD_DID_OTHER_RSVD3_MASK	0xf8	/* Reserved */
-+#define HIL_IDD_DID_OTHER_RSVD3		0x20
-+#define HIL_IDD_DID_TYPE_KEYPAD		0x00	/* Vectra Keyboard */
-+
-+/* IDD record header 
-+ */
-+#define HIL_IDD_HEADER_AXSET_MASK	0x03    /* Number of axis in a set */
-+#define HIL_IDD_HEADER_RSC		0x04	/* Supports RSC command */
-+#define HIL_IDD_HEADER_EXD		0x08	/* Supports EXD command */
-+#define HIL_IDD_HEADER_IOD		0x10	/* IOD byte to follow */
-+#define HIL_IDD_HEADER_16BIT		0x20	/* 16 (vs. 8) bit resolution */
-+#define HIL_IDD_HEADER_ABS		0x40	/* Reports Absolute Position */
-+#define HIL_IDD_HEADER_2X_AXIS		0x80	/* Two sets of 1-3 axis */
-+
-+/* I/O Descriptor
-+ */
-+#define HIL_IDD_IOD_NBUTTON_MASK	0x07	/* Number of buttons */
-+#define HIL_IDD_IOD_PROXIMITY		0x08	/* Proximity in/out events */
-+#define HIL_IDD_IOD_PROMPT_MASK		0x70	/* Number of prompts/acks */
-+#define HIL_IDD_IOD_PROMPT_SHIFT	4
-+#define HIL_IDD_IOD_PROMPT		0x80	/* Generic prompt/ack */
-+
-+#define HIL_IDD_NUM_AXES_PER_SET(header_packet) \
-+((header_packet) & HIL_IDD_HEADER_AXSET_MASK)
-+
-+#define HIL_IDD_NUM_AXSETS(header_packet) \
-+(2 - !((header_packet) & HIL_IDD_HEADER_2X_AXIS))
-+
-+#define HIL_IDD_LEN(header_packet) \
-+((4 - !(header_packet & HIL_IDD_HEADER_IOD) -			\
-+  2 * !(HIL_IDD_NUM_AXES_PER_SET(header_packet))) +		\
-+  2 * HIL_IDD_NUM_AXES_PER_SET(header_packet) *			\
-+ !!((header_packet) & HIL_IDD_HEADER_ABS))
-+
-+/* The following HIL_IDD_* macros assume you have an array of 
-+ * packets and/or unpacked 8-bit data in the order that they 
-+ * were received.
-+ */
-+
-+#define HIL_IDD_AXIS_COUNTS_PER_M(header_ptr) \
-+(!(HIL_IDD_NUM_AXSETS(*(header_ptr))) ? -1 :			\
-+(((*(header_ptr + 1) & HIL_PKT_DATA_MASK) +			\
-+  ((*(header_ptr + 2) & HIL_PKT_DATA_MASK)) << 8)		\
-+* ((*(header_ptr) & HIL_IDD_HEADER_16BIT) ? 100 : 1)))
-+
-+#define HIL_IDD_AXIS_MAX(header_ptr, __axnum) \
-+((!(*(header_ptr) & HIL_IDD_HEADER_ABS) ||			\
-+  (HIL_IDD_NUM_AXES_PER_SET(*(header_ptr)) <= __axnum)) ? 0 :	\
-+ ((HIL_PKT_DATA_MASK & *((header_ptr) + 3 + 2 * __axnum)) +	\
-+  ((HIL_PKT_DATA_MASK & *((header_ptr) + 4 + 2 * __axnum)) << 8)))
-+
-+#define HIL_IDD_IOD(header_ptr) \
-+(*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1))
-+
-+#define HIL_IDD_HAS_GEN_PROMPT(header_ptr) \
-+((*header_ptr & HIL_IDD_HEADER_IOD) &&				\
-+ (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT))
-+
-+#define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr) \
-+((*header_ptr & HIL_IDD_HEADER_IOD) &&				\
-+ (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIMITY))
-+
-+#define HIL_IDD_NUM_BUTTONS(header_ptr) \
-+((*header_ptr & HIL_IDD_HEADER_IOD) ?				\
-+ (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTON_MASK) : 0)
-+
-+#define HIL_IDD_NUM_PROMPTS(header_ptr) \
-+((*header_ptr & HIL_IDD_HEADER_IOD) ?				\
-+ ((HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NPROMPT_MASK)		\
-+  >> HIL_IDD_IOD_PROMPT_SHIFT) : 0)
-+
-+/* The response to HIL EXD commands -- the "extended describe record" */
-+#define	HIL_EXD_HEADER_WRG		0x03	/* Supports type2 WRG */
-+#define HIL_EXD_HEADER_WRG_TYPE1	0x01	/* Supports type1 WRG */
-+#define	HIL_EXD_HEADER_WRG_TYPE2	0x02	/* Supports type2 WRG */
-+#define	HIL_EXD_HEADER_RRG		0x04	/* Supports RRG command */
-+#define	HIL_EXD_HEADER_RNM		0x10	/* Supports RNM command */
-+#define HIL_EXD_HEADER_RST		0x20	/* Supports RST command */
-+#define HIL_EXD_HEADER_LOCALE		0x40	/* Contains locale code */
-+
-+#define HIL_EXD_NUM_RRG(header_ptr) \
-+((*header_ptr & HIL_EXD_HEADER_RRG) ? \
-+ (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0)
-+
-+#define HIL_EXD_NUM_WWG(header_ptr) \
-+((*header_ptr & HIL_EXD_HEADER_WRG) ?				\
-+ (*(header_ptr + 2 - !(*header_ptr & HIL_EXD_HEADER_RRG)) &	\
-+    HIL_PKT_DATA_MASK) : 0)
-+
-+#define HIL_EXD_LEN(header_ptr) \
-+(!!(*header_ptr & HIL_EXD_HEADER_RRG) +				\
-+ !!(*header_ptr & HIL_EXD_HEADER_WRG) +				\
-+ !!(*header_ptr & HIL_EXD_HEADER_LOCALE) +			\
-+ 2 * !!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) + 1)
-+
-+#define HIL_EXD_LOCALE(header_ptr) \
-+(!(*header_ptr & HIL_EXD_HEADER_LOCALE) ? -1 :			\
-+ (*(header_ptr + HIL_EXD_LEN(header_ptr) - 1) & HIL_PKT_DATA_MASK))
-+
-+#define HIL_EXD_WRG_TYPE2_LEN(header_ptr) \
-+(!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) ? -1	:			\
-+ (*(header_ptr + HIL_EXD_LEN(header_ptr) - 2 -                  	\
-+    !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) +	\
-+ ((*(header_ptr + HIL_EXD_LEN(header_ptr) - 1 -				\
-+     !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) << 8))
-+
-+/* Device locale codes. */ 
-+
-+/* Last defined locale code.  Everything above this is "Reserved",
-+   and note that this same table applies to the Device ID Byte where 
-+   keyboards may have a nationality code which is only 5 bits. */
-+#define HIL_LOCALE_MAX 0x1f
-+
-+/* Map to hopefully useful strings.  I was trying to make these look
-+   like locale.aliases strings do; maybe that isn't the right table to
-+   emulate.  In either case, I didn't have much to work on. */
-+#define HIL_LOCALE_MAP \
-+"",			/* 0x00 Reserved */		\
-+"",			/* 0x01 Reserved */		\
-+"",			/* 0x02 Reserved */		\
-+"swiss.french",		/* 0x03 Swiss/French */		\
-+"portuguese",		/* 0x04 Portuguese */		\
-+"arabic",		/* 0x05 Arabic */		\
-+"hebrew",		/* 0x06 Hebrew */		\
-+"english.canadian",	/* 0x07 Canadian English */	\
-+"turkish",		/* 0x08 Turkish */		\
-+"greek",		/* 0x09 Greek */		\
-+"thai",			/* 0x0a Thai (Thailand) */	\
-+"italian",		/* 0x0b Italian */		\
-+"korean",		/* 0x0c Hangul (Korea) */	\
-+"dutch",		/* 0x0d Dutch */		\
-+"swedish",		/* 0x0e Swedish */		\
-+"german",		/* 0x0f German */		\
-+"chinese",		/* 0x10 Chinese-PRC */		\
-+"chinese",		/* 0x11 Chinese-ROC */		\
-+"swiss.french",		/* 0x12 Swiss/French II */	\
-+"spanish",		/* 0x13 Spanish */		\
-+"swiss.german",		/* 0x14 Swiss/German II */	\
-+"flemish",		/* 0x15 Belgian (Flemish) */	\
-+"finnish",		/* 0x16 Finnish	*/		\
-+"english.uk",		/* 0x17 United Kingdom */	\
-+"french.canadian",	/* 0x18 French/Canadian */	\
-+"swiss.german",		/* 0x19 Swiss/German */		\
-+"norwegian",		/* 0x1a Norwegian */		\
-+"french",		/* 0x1b French */		\
-+"danish",		/* 0x1c Danish */		\
-+"japanese",		/* 0x1d Katakana */		\
-+"spanish",		/* 0x1e Latin American/Spanish*/\
-+"english.us"		/* 0x1f United States */	\
-+
-+
-+/* HIL keycodes */
-+#define HIL_KEYCODES_SET1_TBLSIZE 128
-+#define HIL_KEYCODES_SET1 	\
-+   KEY_5,		KEY_RESERVED,	KEY_RIGHTALT,	KEY_LEFTALT,	\
-+   KEY_RIGHTSHIFT,	KEY_LEFTSHIFT,	KEY_LEFTCTRL,	KEY_SYSRQ,	\
-+   KEY_KP4,		KEY_KP8,	KEY_KP5,	KEY_KP9,	\
-+   KEY_KP6,		KEY_KP7,	KEY_KPCOMMA,	KEY_KPENTER,	\
-+   KEY_KP1,		KEY_KPSLASH,	KEY_KP2,	KEY_KPPLUS,	\
-+   KEY_KP3,		KEY_KPASTERISK,	KEY_KP0,	KEY_KPMINUS,	\
-+   KEY_B,		KEY_V,		KEY_C,		KEY_X,		\
-+   KEY_Z,		KEY_RESERVED,	KEY_RESERVED,   KEY_ESC,	\
-+   KEY_6,		KEY_F10,	KEY_3,		KEY_F11,	\
-+   KEY_KPDOT,		KEY_F9,		KEY_TAB /*KP*/,	KEY_F12,	\
-+   KEY_H,		KEY_G,		KEY_F,		KEY_D,		\
-+   KEY_S,		KEY_A,		KEY_RESERVED,	KEY_CAPSLOCK,	\
-+   KEY_U,		KEY_Y,		KEY_T,		KEY_R,		\
-+   KEY_E,		KEY_W,		KEY_Q,		KEY_TAB,	\
-+   KEY_7,		KEY_6,		KEY_5,		KEY_4,		\
-+   KEY_3,		KEY_2,		KEY_1,		KEY_GRAVE,	\
-+   KEY_F13,		KEY_F14,	KEY_F15,	KEY_F16,	\
-+   KEY_F17,		KEY_F18,	KEY_F19,	KEY_F20,	\
-+   KEY_MENU,		KEY_F4,		KEY_F3,		KEY_F2,		\
-+   KEY_F1,		KEY_VOLUMEUP,	KEY_STOP,	KEY_SENDFILE,	\
-+   KEY_SYSRQ,		KEY_F5,		KEY_F6,		KEY_F7,		\
-+   KEY_F8,		KEY_VOLUMEDOWN,	KEY_DEL_EOL,	KEY_DEL_EOS,	\
-+   KEY_8,		KEY_9,		KEY_0,		KEY_MINUS,	\
-+   KEY_EQUAL,		KEY_BACKSPACE,	KEY_INS_LINE,	KEY_DEL_LINE,	\
-+   KEY_I,		KEY_O,		KEY_P,		KEY_LEFTBRACE,	\
-+   KEY_RIGHTBRACE,	KEY_BACKSLASH,	KEY_INSERT,	KEY_DELETE,	\
-+   KEY_J,		KEY_K,		KEY_L,		KEY_SEMICOLON,	\
-+   KEY_APOSTROPHE,	KEY_ENTER,	KEY_HOME,	KEY_PAGEUP,	\
-+   KEY_M,		KEY_COMMA,	KEY_DOT,	KEY_SLASH,	\
-+   KEY_BACKSLASH,	KEY_SELECT,	KEY_102ND,	KEY_PAGEDOWN,	\
-+   KEY_N,		KEY_SPACE,	KEY_NEXT,	KEY_RESERVED,	\
-+   KEY_LEFT,		KEY_DOWN,	KEY_UP,		KEY_RIGHT
-+
-+
-+#define HIL_KEYCODES_SET3_TBLSIZE 128
-+#define HIL_KEYCODES_SET3 	\
-+  KEY_RESERVED,	KEY_ESC,	KEY_1,		KEY_2,			\
-+  KEY_3,	KEY_4,		KEY_5,		KEY_6,			\
-+  KEY_7,	KEY_8,		KEY_9,		KEY_0,			\
-+  KEY_MINUS,	KEY_EQUAL,	KEY_BACKSPACE,	KEY_TAB,		\
-+  KEY_Q,	KEY_W,		KEY_E,		KEY_R,			\
-+  KEY_T,	KEY_Y,		KEY_U,		KEY_I,			\
-+  KEY_O,	KEY_P,		KEY_LEFTBRACE,	KEY_RIGHTBRACE,		\
-+  KEY_ENTER,	KEY_LEFTCTRL,	KEY_A,		KEY_S,			\
-+  KEY_D,	KEY_F,		KEY_G,		KEY_H,			\
-+  KEY_J,	KEY_K,		KEY_L,		KEY_SEMICOLON,		\
-+  KEY_APOSTROPHE,KEY_GRAVE,	KEY_LEFTSHIFT,	KEY_BACKSLASH,		\
-+  KEY_Z,	KEY_X,		KEY_C,		KEY_V,			\
-+  KEY_B,	KEY_N,		KEY_M,		KEY_COMMA,		\
-+  KEY_DOT,	KEY_SLASH,	KEY_RIGHTSHIFT,	KEY_KPASTERISK,		\
-+  KEY_LEFTALT,	KEY_SPACE,	KEY_CAPSLOCK,	KEY_F1,			\
-+  KEY_F2,	KEY_F3,		KEY_F4,		KEY_F5,			\
-+  KEY_F6,	KEY_F7,		KEY_F8,		KEY_F9,			\
-+  KEY_F10,	KEY_NUMLOCK,	KEY_SCROLLLOCK,	KEY_KP7,		\
-+  KEY_KP8,	KEY_KP9,	KEY_KPMINUS,	KEY_KP4,		\
-+  KEY_KP5,	KEY_KP6,	KEY_KPPLUS,	KEY_KP1,		\
-+  KEY_KP2,	KEY_KP3,	KEY_KP0,	KEY_KPDOT,		\
-+  KEY_SYSRQ,	KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,		\
-+  KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,		\
-+  KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,		\
-+  KEY_UP,	KEY_LEFT,	KEY_DOWN,	KEY_RIGHT,		\
-+  KEY_HOME,	KEY_PAGEUP,	KEY_END,	KEY_PAGEDOWN,		\
-+  KEY_INSERT,	KEY_DELETE,	KEY_102ND,	KEY_RESERVED,		\
-+  KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,		\
-+  KEY_F1,	KEY_F2,		KEY_F3,		KEY_F4,			\
-+  KEY_F5,	KEY_F6,		KEY_F7,		KEY_F8,			\
-+  KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,		\
-+  KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED,	KEY_RESERVED
-+
-+
-+/* Response to POL command, the "poll record header" */
-+
-+#define HIL_POL_NUM_AXES_MASK	0x03	/* Number of axis reported */
-+#define HIL_POL_CTS		0x04	/* Device ready to receive data */
-+#define HIL_POL_STATUS_PENDING	0x08	/* Device has status to report */
-+#define HIL_POL_CHARTYPE_MASK	0x70	/* Type of character data to follow */
-+#define HIL_POL_CHARTYPE_NONE	0x00	/* No character data to follow */
-+#define HIL_POL_CHARTYPE_RSVD1	0x10	/* Reserved Set 1 */
-+#define HIL_POL_CHARTYPE_ASCII	0x20	/* U.S. ASCII */
-+#define HIL_POL_CHARTYPE_BINARY	0x30	/* Binary data */
-+#define HIL_POL_CHARTYPE_SET1	0x40	/* Keycode Set 1 */
-+#define HIL_POL_CHARTYPE_RSVD2	0x50	/* Reserved Set 2 */
-+#define HIL_POL_CHARTYPE_SET2	0x60	/* Keycode Set 2 */
-+#define HIL_POL_CHARTYPE_SET3	0x70	/* Keycode Set 3 */
-+#define HIL_POL_AXIS_ALT	0x80	/* Data is from axis set 2 */
-+
-+
-+#endif /* _HIL_H_ */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/linux/hil_mlc.h CVS2_6_14_PA0/include/linux/hil_mlc.h
---- LINUS_2_6_14/include/linux/hil_mlc.h	1969-12-31 17:00:00.000000000 -0700
-+++ CVS2_6_14_PA0/include/linux/hil_mlc.h	2004-10-30 13:51:51.000000000 -0600
-@@ -0,0 +1,168 @@
-+/*
-+ * HP Human Interface Loop Master Link Controller driver.
-+ *
-+ * Copyright (c) 2001 Brian S. Julin
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions, and the following disclaimer,
-+ *    without modification.
-+ * 2. The name of the author may not be used to endorse or promote products
-+ *    derived from this software without specific prior written permission.
-+ *
-+ * Alternatively, this software may be distributed under the terms of the
-+ * GNU General Public License ("GPL").
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 OR OTHERWISE) ARISING IN ANY WAY
-+ *
-+ * References:
-+ * HP-HIL Technical Reference Manual.  Hewlett Packard Product No. 45918A
-+ *
-+ */
-+
-+#include <linux/hil.h>
-+#include <linux/time.h>
-+#include <linux/interrupt.h>
-+#include <asm/semaphore.h>
-+#include <linux/serio.h>
-+#include <linux/list.h>
-+
-+typedef struct hil_mlc hil_mlc;
-+
-+/* The HIL has a complicated state engine.
-+ * We define the structure of nodes in the state engine here.
-+ */
-+enum hilse_act {
-+  	/* HILSE_OUT prepares to receive input if the next node
-+	 * is an IN or EXPECT, and then sends the given packet.
-+	 */
-+	HILSE_OUT = 0,
-+
-+  	/* HILSE_CTS checks if the loop is busy. */
-+	HILSE_CTS,
-+
-+	/* HILSE_OUT_LAST sends the given command packet to 
-+	 * the last configured/running device on the loop.
-+	 */
-+	HILSE_OUT_LAST,
-+
-+	/* HILSE_OUT_DISC sends the given command packet to
-+	 * the next device past the last configured/running one.
-+	 */
-+	HILSE_OUT_DISC,
-+
-+	/* HILSE_FUNC runs a callback function with given arguments.
-+	 * a positive return value causes the "ugly" branch to be taken.
-+	 */
-+	HILSE_FUNC,
-+
-+  	/* HILSE_IN simply expects any non-errored packet to arrive 
-+	 * within arg usecs.
-+	 */
-+	HILSE_IN		= 0x100,
-+
-+  	/* HILSE_EXPECT expects a particular packet to arrive 
-+	 * within arg usecs, any other packet is considered an error.
-+	 */
-+	HILSE_EXPECT,
-+
-+  	/* HILSE_EXPECT_LAST as above but dev field should be last 
-+	 * discovered/operational device.
-+	 */
-+	HILSE_EXPECT_LAST,
-+
-+  	/* HILSE_EXPECT_LAST as above but dev field should be first 
-+	 * undiscovered/inoperational device.
-+	 */
-+	HILSE_EXPECT_DISC
-+};
-+
-+typedef int	(hilse_func) (hil_mlc *mlc, int arg);
-+struct hilse_node {
-+	enum hilse_act		act;	/* How to process this node         */
-+	union {
-+		hilse_func	*func;	/* Function to call if HILSE_FUNC   */
-+		hil_packet	packet;	/* Packet to send or to compare     */
-+	} object;
-+	int			arg;	/* Timeout in usec or parm for func */
-+	int			good;	/* Node to jump to on success       */
-+	int			bad;	/* Node to jump to on error         */
-+	int			ugly;	/* Node to jump to on timeout       */
-+};
-+
-+/* Methods for back-end drivers, e.g. hp_sdc_mlc */
-+typedef int	(hil_mlc_cts) (hil_mlc *mlc);
-+typedef void	(hil_mlc_out) (hil_mlc *mlc);
-+typedef int	(hil_mlc_in)  (hil_mlc *mlc, suseconds_t timeout);
-+
-+struct hil_mlc_devinfo {
-+	uint8_t	idd[16];	/* Device ID Byte and Describe Record */
-+	uint8_t	rsc[16];	/* Security Code Header and Record */
-+	uint8_t	exd[16];	/* Extended Describe Record */
-+	uint8_t	rnm[16];	/* Device name as returned by RNM command */
-+};
-+
-+struct hil_mlc_serio_map {
-+	hil_mlc *mlc;
-+	int di_revmap;
-+	int didx;
-+};
-+
-+/* How many (possibly old/detached) devices the we try to keep track of */
-+#define HIL_MLC_DEVMEM 16
-+
-+struct hil_mlc {
-+	struct list_head	list;	/* hil_mlc is organized as linked list */
-+
-+	rwlock_t		lock;
-+
-+	void *priv; /* Data specific to a particular type of MLC */
-+
-+	int 			seidx;	/* Current node in state engine */
-+	int			istarted, ostarted;
-+
-+	hil_mlc_cts		*cts;
-+	struct semaphore	csem;   /* Raised when loop idle */
-+
-+	hil_mlc_out		*out;
-+	struct semaphore	osem;   /* Raised when outpacket dispatched */
-+	hil_packet		opacket;
-+
-+	hil_mlc_in		*in;
-+	struct semaphore	isem;   /* Raised when a packet arrives */
-+	hil_packet		ipacket[16];
-+	hil_packet		imatch;
-+	int			icount;
-+	struct timeval		instart;
-+	suseconds_t		intimeout;
-+
-+	int			ddi;	/* Last operational device id */
-+	int			lcv;	/* LCV to throttle loops */
-+	struct timeval		lcv_tv; /* Time loop was started */
-+
-+	int			di_map[7]; /* Maps below items to live devs */
-+	struct hil_mlc_devinfo	di[HIL_MLC_DEVMEM];
-+	struct serio		*serio[HIL_MLC_DEVMEM];
-+	struct hil_mlc_serio_map serio_map[HIL_MLC_DEVMEM];
-+	hil_packet		serio_opacket[HIL_MLC_DEVMEM];
-+	int			serio_oidx[HIL_MLC_DEVMEM];
-+	struct hil_mlc_devinfo	di_scratch; /* Temporary area */
-+
-+	int			opercnt;
-+
-+	struct tasklet_struct	*tasklet;
-+};
-+
-+int hil_mlc_register(hil_mlc *mlc);
-+int hil_mlc_unregister(hil_mlc *mlc);
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/linux/hp_sdc.h CVS2_6_14_PA0/include/linux/hp_sdc.h
---- LINUS_2_6_14/include/linux/hp_sdc.h	1969-12-31 17:00:00.000000000 -0700
-+++ CVS2_6_14_PA0/include/linux/hp_sdc.h	2004-07-11 16:03:48.000000000 -0600
-@@ -0,0 +1,300 @@
-+/*
-+ * HP i8042 System Device Controller -- header
-+ *
-+ * Copyright (c) 2001 Brian S. Julin
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions, and the following disclaimer,
-+ *    without modification.
-+ * 2. The name of the author may not be used to endorse or promote products
-+ *    derived from this software without specific prior written permission.
-+ *
-+ * Alternatively, this software may be distributed under the terms of the
-+ * GNU General Public License ("GPL").
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 OR OTHERWISE) ARISING IN ANY WAY
-+ *
-+ * References:
-+ * 
-+ * HP-HIL Technical Reference Manual.  Hewlett Packard Product No. 45918A
-+ *
-+ * System Device Controller Microprocessor Firmware Theory of Operation
-+ * 	for Part Number 1820-4784 Revision B.  Dwg No. A-1820-4784-2
-+ *
-+ */
-+
-+#ifndef _LINUX_HP_SDC_H
-+#define _LINUX_HP_SDC_H
-+
-+#include <linux/interrupt.h>
-+#include <linux/types.h>
-+#include <linux/time.h>
-+#include <linux/timer.h>
-+#if defined(__hppa__)
-+#include <asm/hardware.h>
-+#endif
-+
-+
-+/* No 4X status reads take longer than this (in usec).
-+ */
-+#define HP_SDC_MAX_REG_DELAY 20000
-+
-+typedef void (hp_sdc_irqhook) (int irq, void *dev_id, 
-+			       uint8_t status, uint8_t data);
-+
-+int hp_sdc_request_timer_irq(hp_sdc_irqhook *callback);
-+int hp_sdc_request_hil_irq(hp_sdc_irqhook *callback);
-+int hp_sdc_request_cooked_irq(hp_sdc_irqhook *callback);
-+int hp_sdc_release_timer_irq(hp_sdc_irqhook *callback);
-+int hp_sdc_release_hil_irq(hp_sdc_irqhook *callback);
-+int hp_sdc_release_cooked_irq(hp_sdc_irqhook *callback);
-+
-+typedef struct {
-+	int actidx;	/* Start of act.  Acts are atomic WRT I/O to SDC */
-+	int idx;	/* Index within the act */
-+	int endidx;	/* transaction is over and done if idx == endidx */
-+	uint8_t *seq;	/* commands/data for the transaction */
-+	union {
-+	  hp_sdc_irqhook   *irqhook;	/* Callback, isr or tasklet context */
-+	  struct semaphore *semaphore;	/* Semaphore to sleep on. */
-+	} act;
-+} hp_sdc_transaction;
-+int hp_sdc_enqueue_transaction(hp_sdc_transaction *this);
-+int hp_sdc_dequeue_transaction(hp_sdc_transaction *this);
-+
-+/* The HP_SDC_ACT* values are peculiar to this driver.
-+ * Nuance: never HP_SDC_ACT_DATAIN | HP_SDC_ACT_DEALLOC, use another
-+ * act to perform the dealloc.
-+ */
-+#define HP_SDC_ACT_PRECMD	0x01		/* Send a command first */
-+#define HP_SDC_ACT_DATAREG	0x02		/* Set data registers */
-+#define HP_SDC_ACT_DATAOUT	0x04		/* Send data bytes */
-+#define HP_SDC_ACT_POSTCMD      0x08            /* Send command after */
-+#define HP_SDC_ACT_DATAIN	0x10		/* Collect data after */
-+#define HP_SDC_ACT_DURING	0x1f
-+#define HP_SDC_ACT_SEMAPHORE    0x20            /* Raise semaphore after */
-+#define HP_SDC_ACT_CALLBACK	0x40		/* Pass data to IRQ handler */
-+#define HP_SDC_ACT_DEALLOC	0x80		/* Destroy transaction after */
-+#define HP_SDC_ACT_AFTER	0xe0
-+#define HP_SDC_ACT_DEAD		0x60		/* Act timed out. */
-+
-+/* Rest of the flags are straightforward representation of the SDC interface */
-+#define HP_SDC_STATUS_IBF	0x02	/* Input buffer full */
-+
-+#define HP_SDC_STATUS_IRQMASK	0xf0	/* Bits containing "level 1" irq */
-+#define HP_SDC_STATUS_PERIODIC  0x10    /* Periodic 10ms timer */
-+#define HP_SDC_STATUS_USERTIMER 0x20    /* "Special purpose" timer */
-+#define HP_SDC_STATUS_TIMER     0x30    /* Both PERIODIC and USERTIMER */
-+#define HP_SDC_STATUS_REG	0x40	/* Data from an i8042 register */
-+#define HP_SDC_STATUS_HILCMD    0x50	/* Command from HIL MLC */
-+#define HP_SDC_STATUS_HILDATA   0x60	/* Data from HIL MLC */
-+#define HP_SDC_STATUS_PUP	0x70	/* Sucessful power-up self test */
-+#define HP_SDC_STATUS_KCOOKED	0x80	/* Key from cooked kbd */
-+#define HP_SDC_STATUS_KRPG	0xc0	/* Key from Repeat Gen */
-+#define HP_SDC_STATUS_KMOD_SUP	0x10	/* Shift key is up */
-+#define HP_SDC_STATUS_KMOD_CUP	0x20	/* Control key is up */
-+
-+#define HP_SDC_NMISTATUS_FHS	0x40	/* NMI is a fast handshake irq */
-+
-+/* Internal i8042 registers (there are more, but they are not too useful). */
-+
-+#define HP_SDC_USE		0x02	/* Resource usage (including OB bit) */
-+#define HP_SDC_IM		0x04	/* Interrupt mask */
-+#define HP_SDC_CFG		0x11	/* Configuration register */
-+#define HP_SDC_KBLANGUAGE	0x12	/* Keyboard language */
-+
-+#define HP_SDC_D0		0x70	/* General purpose data buffer 0 */
-+#define HP_SDC_D1		0x71	/* General purpose data buffer 1 */
-+#define HP_SDC_D2		0x72	/* General purpose data buffer 2 */
-+#define HP_SDC_D3		0x73	/* General purpose data buffer 3 */
-+#define HP_SDC_VT1		0x74	/* Timer for voice 1 */
-+#define HP_SDC_VT2		0x75	/* Timer for voice 2 */
-+#define HP_SDC_VT3		0x76	/* Timer for voice 3 */
-+#define HP_SDC_VT4		0x77	/* Timer for voice 4 */
-+#define HP_SDC_KBN		0x78	/* Which HIL devs are Nimitz */
-+#define HP_SDC_KBC		0x79	/* Which HIL devs are cooked kbds */
-+#define HP_SDC_LPS		0x7a	/* i8042's view of HIL status */
-+#define HP_SDC_LPC		0x7b	/* i8042's view of HIL "control" */
-+#define HP_SDC_RSV  		0x7c	/* Reserved "for testing" */
-+#define HP_SDC_LPR		0x7d    /* i8042 count of HIL reconfigs */
-+#define HP_SDC_XTD		0x7e    /* "Extended Configuration" register */
-+#define HP_SDC_STR		0x7f    /* i8042 self-test result */
-+
-+/* Bitfields for above registers */
-+#define HP_SDC_USE_LOOP		0x04	/* Command is currently on the loop. */
-+
-+#define HP_SDC_IM_MASK          0x1f    /* these bits not part of cmd/status */
-+#define HP_SDC_IM_FH		0x10	/* Mask the fast handshake irq */
-+#define HP_SDC_IM_PT		0x08	/* Mask the periodic timer irq */
-+#define HP_SDC_IM_TIMERS	0x04	/* Mask the MT/DT/CT irq */
-+#define HP_SDC_IM_RESET		0x02	/* Mask the reset key irq */
-+#define HP_SDC_IM_HIL		0x01	/* Mask the HIL MLC irq */
-+
-+#define HP_SDC_CFG_ROLLOVER	0x08	/* WTF is "N-key rollover"? */
-+#define HP_SDC_CFG_KBD		0x10	/* There is a keyboard */
-+#define HP_SDC_CFG_NEW		0x20	/* Supports/uses HIL MLC */
-+#define HP_SDC_CFG_KBD_OLD	0x03	/* keyboard code for non-HIL */
-+#define HP_SDC_CFG_KBD_NEW	0x07	/* keyboard code from HIL autoconfig */
-+#define HP_SDC_CFG_REV		0x40	/* Code revision bit */
-+#define HP_SDC_CFG_IDPROM	0x80	/* IDPROM present in kbd (not HIL) */
-+
-+#define HP_SDC_LPS_NDEV		0x07	/* # devices autoconfigured on HIL */
-+#define HP_SDC_LPS_ACSUCC	0x08	/* loop autoconfigured successfully */
-+#define HP_SDC_LPS_ACFAIL	0x80	/* last loop autoconfigure failed */
-+
-+#define HP_SDC_LPC_APE_IPF	0x01	/* HIL MLC APE/IPF (autopoll) set */
-+#define HP_SDC_LPC_ARCONERR	0x02	/* i8042 autoreconfigs loop on err */
-+#define HP_SDC_LPC_ARCQUIET	0x03	/* i8042 doesn't report autoreconfigs*/
-+#define HP_SDC_LPC_COOK		0x10	/* i8042 cooks devices in _KBN */
-+#define HP_SDC_LPC_RC		0x80	/* causes autoreconfig */
-+
-+#define HP_SDC_XTD_REV		0x07	/* contains revision code */
-+#define HP_SDC_XTD_REV_STRINGS(val, str) \
-+switch (val) {						\
-+	case 0x1: str = "1820-3712"; break;		\
-+	case 0x2: str = "1820-4379"; break;		\
-+	case 0x3: str = "1820-4784"; break;		\
-+	default: str = "unknown";			\
-+};
-+#define HP_SDC_XTD_BEEPER	0x08	/* TI SN76494 beeper available */
-+#define HP_SDC_XTD_BBRTC	0x20	/* OKI MSM-58321 BBRTC present */
-+
-+#define HP_SDC_CMD_LOAD_RT	0x31	/* Load real time (from 8042) */
-+#define HP_SDC_CMD_LOAD_FHS	0x36	/* Load the fast handshake timer */
-+#define HP_SDC_CMD_LOAD_MT	0x38	/* Load the match timer */
-+#define HP_SDC_CMD_LOAD_DT	0x3B	/* Load the delay timer */
-+#define HP_SDC_CMD_LOAD_CT	0x3E	/* Load the cycle timer */
-+
-+#define HP_SDC_CMD_SET_IM	0x40    /* 010xxxxx == set irq mask */
-+
-+/* The documents provided do not explicitly state that all registers betweem 
-+ * 0x01 and 0x1f inclusive can be read by sending their register index as a 
-+ * command, but this is implied and appears to be the case.
-+ */
-+#define HP_SDC_CMD_READ_RAM	0x00	/* Load from i8042 RAM (autoinc) */
-+#define HP_SDC_CMD_READ_USE	0x02	/* Undocumented! Load from usage reg */
-+#define HP_SDC_CMD_READ_IM	0x04	/* Load current interrupt mask */
-+#define HP_SDC_CMD_READ_KCC	0x11	/* Load primary kbd config code */
-+#define HP_SDC_CMD_READ_KLC	0x12	/* Load primary kbd language code */
-+#define HP_SDC_CMD_READ_T1	0x13	/* Load timer output buffer byte 1 */
-+#define HP_SDC_CMD_READ_T2	0x14	/* Load timer output buffer byte 1 */
-+#define HP_SDC_CMD_READ_T3	0x15	/* Load timer output buffer byte 1 */
-+#define HP_SDC_CMD_READ_T4	0x16	/* Load timer output buffer byte 1 */
-+#define HP_SDC_CMD_READ_T5	0x17	/* Load timer output buffer byte 1 */
-+#define HP_SDC_CMD_READ_D0	0xf0	/* Load from i8042 RAM location 0x70 */
-+#define HP_SDC_CMD_READ_D1	0xf1	/* Load from i8042 RAM location 0x71 */
-+#define HP_SDC_CMD_READ_D2	0xf2	/* Load from i8042 RAM location 0x72 */
-+#define HP_SDC_CMD_READ_D3	0xf3	/* Load from i8042 RAM location 0x73 */
-+#define HP_SDC_CMD_READ_VT1	0xf4	/* Load from i8042 RAM location 0x74 */
-+#define HP_SDC_CMD_READ_VT2	0xf5	/* Load from i8042 RAM location 0x75 */
-+#define HP_SDC_CMD_READ_VT3	0xf6	/* Load from i8042 RAM location 0x76 */
-+#define HP_SDC_CMD_READ_VT4	0xf7	/* Load from i8042 RAM location 0x77 */
-+#define HP_SDC_CMD_READ_KBN	0xf8	/* Load from i8042 RAM location 0x78 */
-+#define HP_SDC_CMD_READ_KBC	0xf9	/* Load from i8042 RAM location 0x79 */
-+#define HP_SDC_CMD_READ_LPS	0xfa	/* Load from i8042 RAM location 0x7a */
-+#define HP_SDC_CMD_READ_LPC	0xfb	/* Load from i8042 RAM location 0x7b */
-+#define HP_SDC_CMD_READ_RSV	0xfc	/* Load from i8042 RAM location 0x7c */
-+#define HP_SDC_CMD_READ_LPR	0xfd	/* Load from i8042 RAM location 0x7d */
-+#define HP_SDC_CMD_READ_XTD	0xfe	/* Load from i8042 RAM location 0x7e */
-+#define HP_SDC_CMD_READ_STR	0xff	/* Load from i8042 RAM location 0x7f */
-+
-+#define HP_SDC_CMD_SET_ARD	0xA0	/* Set emulated autorepeat delay */
-+#define HP_SDC_CMD_SET_ARR	0xA2	/* Set emulated autorepeat rate */
-+#define HP_SDC_CMD_SET_BELL	0xA3	/* Set voice 3 params for "beep" cmd */
-+#define HP_SDC_CMD_SET_RPGR	0xA6	/* Set "RPG" irq rate (doesn't work) */
-+#define HP_SDC_CMD_SET_RTMS	0xAD	/* Set the RTC time (milliseconds) */
-+#define HP_SDC_CMD_SET_RTD	0xAF	/* Set the RTC time (days) */
-+#define HP_SDC_CMD_SET_FHS	0xB2	/* Set fast handshake timer */
-+#define HP_SDC_CMD_SET_MT	0xB4	/* Set match timer */
-+#define HP_SDC_CMD_SET_DT	0xB7	/* Set delay timer */
-+#define HP_SDC_CMD_SET_CT	0xBA	/* Set cycle timer */
-+#define HP_SDC_CMD_SET_RAMP	0xC1	/* Reset READ_RAM autoinc counter */
-+#define HP_SDC_CMD_SET_D0	0xe0	/* Load to i8042 RAM location 0x70 */
-+#define HP_SDC_CMD_SET_D1	0xe1	/* Load to i8042 RAM location 0x71 */
-+#define HP_SDC_CMD_SET_D2	0xe2	/* Load to i8042 RAM location 0x72 */
-+#define HP_SDC_CMD_SET_D3	0xe3	/* Load to i8042 RAM location 0x73 */
-+#define HP_SDC_CMD_SET_VT1	0xe4	/* Load to i8042 RAM location 0x74 */
-+#define HP_SDC_CMD_SET_VT2	0xe5	/* Load to i8042 RAM location 0x75 */
-+#define HP_SDC_CMD_SET_VT3	0xe6	/* Load to i8042 RAM location 0x76 */
-+#define HP_SDC_CMD_SET_VT4	0xe7	/* Load to i8042 RAM location 0x77 */
-+#define HP_SDC_CMD_SET_KBN	0xe8	/* Load to i8042 RAM location 0x78 */
-+#define HP_SDC_CMD_SET_KBC	0xe9	/* Load to i8042 RAM location 0x79 */
-+#define HP_SDC_CMD_SET_LPS	0xea	/* Load to i8042 RAM location 0x7a */
-+#define HP_SDC_CMD_SET_LPC	0xeb	/* Load to i8042 RAM location 0x7b */
-+#define HP_SDC_CMD_SET_RSV	0xec	/* Load to i8042 RAM location 0x7c */
-+#define HP_SDC_CMD_SET_LPR	0xed	/* Load to i8042 RAM location 0x7d */
-+#define HP_SDC_CMD_SET_XTD	0xee	/* Load to i8042 RAM location 0x7e */
-+#define HP_SDC_CMD_SET_STR	0xef	/* Load to i8042 RAM location 0x7f */
-+
-+#define HP_SDC_CMD_DO_RTCW	0xc2	/* i8042 RAM 0x70 --> RTC */
-+#define HP_SDC_CMD_DO_RTCR	0xc3	/* RTC[0x70 0:3] --> irq/status/data */
-+#define HP_SDC_CMD_DO_BEEP	0xc4	/* i8042 RAM 0x70-74  --> beeper,VT3 */
-+#define HP_SDC_CMD_DO_HIL	0xc5	/* i8042 RAM 0x70-73 --> 
-+					   HIL MLC R0,R1 i8042 HIL watchdog */
-+
-+/* Values used to (de)mangle input/output to/from the HIL MLC */
-+#define HP_SDC_DATA		0x40	/* Data from an 8042 register */
-+#define HP_SDC_HIL_CMD		0x50	/* Data from HIL MLC R1/8042 */
-+#define HP_SDC_HIL_R1MASK	0x0f	/* Contents of HIL MLC R1 0:3 */
-+#define HP_SDC_HIL_AUTO		0x10	/* Set if POL results from i8042 */   
-+#define HP_SDC_HIL_ISERR	0x80	/* Has meaning as in next 4 values */
-+#define HP_SDC_HIL_RC_DONE	0x80	/* i8042 auto-configured loop */
-+#define HP_SDC_HIL_ERR		0x81	/* HIL MLC R2 had a bit set */
-+#define HP_SDC_HIL_TO		0x82	/* i8042 HIL watchdog expired */
-+#define HP_SDC_HIL_RC		0x84	/* i8042 is auto-configuring loop */
-+#define HP_SDC_HIL_DAT		0x60	/* Data from HIL MLC R0 */
-+
-+
-+typedef struct {
-+	rwlock_t	ibf_lock;
-+	rwlock_t	lock;		/* user/tasklet lock */
-+	rwlock_t	rtq_lock;	/* isr/tasklet lock */
-+	rwlock_t	hook_lock;	/* isr/user lock for handler add/del */
-+
-+	unsigned int	irq, nmi;	/* Our IRQ lines */
-+	unsigned long	base_io, status_io, data_io; /* Our IO ports */
-+
-+	uint8_t		im;		/* Interrupt mask */
-+	int		set_im; 	/* Interrupt mask needs to be set. */
-+
-+	int		ibf;		/* Last known status of IBF flag */
-+	uint8_t		wi;		/* current i8042 write index */
-+	uint8_t		r7[4];          /* current i8042[0x70 - 0x74] values */
-+	uint8_t		r11, r7e;	/* Values from version/revision regs */
-+
-+	hp_sdc_irqhook	*timer, *reg, *hil, *pup, *cooked;
-+
-+#define HP_SDC_QUEUE_LEN 16
-+	hp_sdc_transaction *tq[HP_SDC_QUEUE_LEN]; /* All pending read/writes */
-+
-+	int		rcurr, rqty;	/* Current read transact in process */
-+	struct timeval	rtv;		/* Time when current read started */
-+	int		wcurr;		/* Current write transact in process */
-+
-+	int		dev_err;	/* carries status from registration */
-+#if defined(__hppa__)
-+	struct parisc_device	*dev;
-+#elif defined(__mc68000__)
-+	void		*dev;
-+#else
-+#error No support for device registration on this arch yet.
-+#endif
-+
-+	struct timer_list kicker;	/* Keeps below task alive */
-+	struct tasklet_struct	task;
-+
-+} hp_i8042_sdc;
-+
-+#endif /* _LINUX_HP_SDC_H */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/linux/input.h CVS2_6_14_PA0/include/linux/input.h
---- LINUS_2_6_14/include/linux/input.h	2005-10-27 21:30:48.000000000 -0600
-+++ CVS2_6_14_PA0/include/linux/input.h	2005-09-14 06:57:49.000000000 -0600
-@@ -644,6 +644,7 @@
- #define BUS_ADB			0x17
- #define BUS_I2C			0x18
- #define BUS_HOST		0x19
-+#define BUS_GSC			0x1A
- 
- /*
-  * Values describing the status of an effect
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/linux/serio.h CVS2_6_14_PA0/include/linux/serio.h
---- LINUS_2_6_14/include/linux/serio.h	2005-10-27 21:30:48.000000000 -0600
-+++ CVS2_6_14_PA0/include/linux/serio.h	2005-06-30 08:26:28.000000000 -0600
-@@ -185,7 +185,7 @@
- #define SERIO_8042_XL	0x06
- 
- /*
-- * Serio types
-+ * Serio protos
-  */
- #define SERIO_UNKNOWN	0x00
- #define SERIO_MSC	0x01
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/linux/signal.h CVS2_6_14_PA0/include/linux/signal.h
---- LINUS_2_6_14/include/linux/signal.h	2005-10-27 21:30:48.000000000 -0600
-+++ CVS2_6_14_PA0/include/linux/signal.h	2005-06-17 21:32:55.000000000 -0600
-@@ -234,6 +234,9 @@
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/linux/signal.h CVS2_6_15_RC7_PA0/include/linux/signal.h
+--- LINUS_2_6_15_RC7/include/linux/signal.h	2005-12-27 13:25:55.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/linux/signal.h	2005-11-11 21:09:17.000000000 -0700
+@@ -233,6 +233,9 @@
  struct pt_regs;
  extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie);
  
@@ -14244,9 +8359,9 @@
  #endif /* __KERNEL__ */
  
  #endif /* _LINUX_SIGNAL_H */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/include/sound/opl3.h CVS2_6_14_PA0/include/sound/opl3.h
---- LINUS_2_6_14/include/sound/opl3.h	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/include/sound/opl3.h	2005-09-13 18:31:04.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/include/sound/opl3.h CVS2_6_15_RC7_PA0/include/sound/opl3.h
+--- LINUS_2_6_15_RC7/include/sound/opl3.h	2005-12-27 13:25:56.000000000 -0700
++++ CVS2_6_15_RC7_PA0/include/sound/opl3.h	2005-09-13 18:31:04.000000000 -0600
 @@ -261,10 +261,11 @@
  } snd_opl3_voice_t;
  
@@ -14271,9 +8386,9 @@
  int snd_opl3_create(snd_card_t * card,
  		    unsigned long l_port, unsigned long r_port,
  		    unsigned short hardware,
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/ipc/compat_mq.c CVS2_6_14_PA0/ipc/compat_mq.c
---- LINUS_2_6_14/ipc/compat_mq.c	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/ipc/compat_mq.c	2005-03-18 06:17:54.000000000 -0700
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/ipc/compat_mq.c CVS2_6_15_RC7_PA0/ipc/compat_mq.c
+--- LINUS_2_6_15_RC7/ipc/compat_mq.c	2005-12-27 13:25:57.000000000 -0700
++++ CVS2_6_15_RC7_PA0/ipc/compat_mq.c	2005-03-18 06:17:54.000000000 -0700
 @@ -7,6 +7,7 @@
   */
  
@@ -14282,9 +8397,9 @@
  #include <linux/fs.h>
  #include <linux/kernel.h>
  #include <linux/mqueue.h>
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/kernel/Makefile CVS2_6_14_PA0/kernel/Makefile
---- LINUS_2_6_14/kernel/Makefile	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/kernel/Makefile	2005-09-14 06:57:58.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/kernel/Makefile CVS2_6_15_RC7_PA0/kernel/Makefile
+--- LINUS_2_6_15_RC7/kernel/Makefile	2005-12-27 13:25:57.000000000 -0700
++++ CVS2_6_15_RC7_PA0/kernel/Makefile	2005-11-11 21:09:26.000000000 -0700
 @@ -19,7 +19,7 @@
  obj-$(CONFIG_PM) += power/
  obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
@@ -14293,10 +8408,10 @@
 +obj-$(CONFIG_COMPAT) += compat.o compat_signal.o
  obj-$(CONFIG_CPUSETS) += cpuset.o
  obj-$(CONFIG_IKCONFIG) += configs.o
- obj-$(CONFIG_IKCONFIG_PROC) += configs.o
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/kernel/compat.c CVS2_6_14_PA0/kernel/compat.c
---- LINUS_2_6_14/kernel/compat.c	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/kernel/compat.c	2005-09-14 06:57:58.000000000 -0600
+ obj-$(CONFIG_STOP_MACHINE) += stop_machine.o
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/kernel/compat.c CVS2_6_15_RC7_PA0/kernel/compat.c
+--- LINUS_2_6_15_RC7/kernel/compat.c	2005-12-27 13:25:57.000000000 -0700
++++ CVS2_6_15_RC7_PA0/kernel/compat.c	2005-09-14 06:57:58.000000000 -0600
 @@ -13,6 +13,7 @@
  
  #include <linux/linkage.h>
@@ -14372,9 +8487,9 @@
  				ret = -EFAULT;
  		}
  	}else {
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/kernel/compat_signal.c CVS2_6_14_PA0/kernel/compat_signal.c
---- LINUS_2_6_14/kernel/compat_signal.c	1969-12-31 17:00:00.000000000 -0700
-+++ CVS2_6_14_PA0/kernel/compat_signal.c	2005-08-02 10:22:04.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/kernel/compat_signal.c CVS2_6_15_RC7_PA0/kernel/compat_signal.c
+--- LINUS_2_6_15_RC7/kernel/compat_signal.c	1969-12-31 17:00:00.000000000 -0700
++++ CVS2_6_15_RC7_PA0/kernel/compat_signal.c	2005-08-02 10:22:04.000000000 -0600
 @@ -0,0 +1,280 @@
 +/*
 + *  Copyright (C) 2003 Carlos O'Donell
@@ -14656,35 +8771,10 @@
 +}
 +#endif
 +
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/kernel/irq/manage.c CVS2_6_14_PA0/kernel/irq/manage.c
---- LINUS_2_6_14/kernel/irq/manage.c	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/kernel/irq/manage.c	2005-10-19 16:15:39.000000000 -0600
-@@ -35,6 +35,9 @@
- {
- 	struct irq_desc *desc = irq_desc + irq;
- 
-+	if (irq >= NR_IRQS)
-+		return;
-+
- 	while (desc->status & IRQ_INPROGRESS)
- 		cpu_relax();
- }
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/kernel/posix-cpu-timers.c CVS2_6_14_PA0/kernel/posix-cpu-timers.c
---- LINUS_2_6_14/kernel/posix-cpu-timers.c	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/kernel/posix-cpu-timers.c	2005-10-27 21:38:45.000000000 -0600
-@@ -1283,8 +1283,6 @@
- 	LIST_HEAD(firing);
- 	struct k_itimer *timer, *next;
- 
--	BUG_ON(!irqs_disabled());
--
- #define UNEXPIRED(clock) \
- 		(cputime_eq(tsk->it_##clock##_expires, cputime_zero) || \
- 		 cputime_lt(clock##_ticks(tsk), tsk->it_##clock##_expires))
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/kernel/ptrace.c CVS2_6_14_PA0/kernel/ptrace.c
---- LINUS_2_6_14/kernel/ptrace.c	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/kernel/ptrace.c	2005-09-14 06:57:58.000000000 -0600
-@@ -359,7 +359,7 @@
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/kernel/ptrace.c CVS2_6_15_RC7_PA0/kernel/ptrace.c
+--- LINUS_2_6_15_RC7/kernel/ptrace.c	2005-12-27 13:25:57.000000000 -0700
++++ CVS2_6_15_RC7_PA0/kernel/ptrace.c	2005-12-04 00:25:16.000000000 -0700
+@@ -363,7 +363,7 @@
  	siginfo_t newinfo;
  	int error = -ESRCH;
  
@@ -14693,9 +8783,9 @@
  		return -EFAULT;
  
  	read_lock(&tasklist_lock);
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/kernel/resource.c CVS2_6_14_PA0/kernel/resource.c
---- LINUS_2_6_14/kernel/resource.c	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/kernel/resource.c	2005-09-14 06:57:58.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/kernel/resource.c CVS2_6_15_RC7_PA0/kernel/resource.c
+--- LINUS_2_6_15_RC7/kernel/resource.c	2005-12-27 13:25:57.000000000 -0700
++++ CVS2_6_15_RC7_PA0/kernel/resource.c	2005-09-14 06:57:58.000000000 -0600
 @@ -181,6 +181,8 @@
  {
  	struct resource *tmp, **p;
@@ -14705,9 +8795,9 @@
  	p = &old->parent->child;
  	for (;;) {
  		tmp = *p;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/kernel/signal.c CVS2_6_14_PA0/kernel/signal.c
---- LINUS_2_6_14/kernel/signal.c	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/kernel/signal.c	2005-10-27 21:38:45.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/kernel/signal.c CVS2_6_15_RC7_PA0/kernel/signal.c
+--- LINUS_2_6_15_RC7/kernel/signal.c	2005-12-27 13:25:57.000000000 -0700
++++ CVS2_6_15_RC7_PA0/kernel/signal.c	2005-11-19 22:09:36.000000000 -0700
 @@ -22,6 +22,7 @@
  #include <linux/security.h>
  #include <linux/syscalls.h>
@@ -14716,7 +8806,7 @@
  #include <linux/posix-timers.h>
  #include <linux/signal.h>
  #include <linux/audit.h>
-@@ -2127,17 +2128,35 @@
+@@ -2095,17 +2096,35 @@
  	return do_sigpending(set, sigsetsize);
  }
  
@@ -14752,7 +8842,7 @@
  	/*
  	 * If you change siginfo_t structure, please be sure
  	 * this code is fixed accordingly.
-@@ -2374,7 +2393,7 @@
+@@ -2321,7 +2340,7 @@
  {
  	siginfo_t info;
  
@@ -14761,21 +8851,10 @@
  		return -EFAULT;
  
  	/* Not even root can pretend to send signals from the kernel.
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/kernel/sys.c CVS2_6_14_PA0/kernel/sys.c
---- LINUS_2_6_14/kernel/sys.c	2005-10-27 21:30:49.000000000 -0600
-+++ CVS2_6_14_PA0/kernel/sys.c	2005-10-20 08:43:41.000000000 -0600
-@@ -32,6 +32,7 @@
- #include <linux/compat.h>
- #include <linux/syscalls.h>
- 
-+#include <asm/processor.h>
- #include <asm/uaccess.h>
- #include <asm/io.h>
- #include <asm/unistd.h>
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/mm/shmem.c CVS2_6_14_PA0/mm/shmem.c
---- LINUS_2_6_14/mm/shmem.c	2005-10-27 21:30:50.000000000 -0600
-+++ CVS2_6_14_PA0/mm/shmem.c	2005-10-20 08:43:42.000000000 -0600
-@@ -459,7 +459,7 @@
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/mm/shmem.c CVS2_6_15_RC7_PA0/mm/shmem.c
+--- LINUS_2_6_15_RC7/mm/shmem.c	2005-12-27 13:25:58.000000000 -0700
++++ CVS2_6_15_RC7_PA0/mm/shmem.c	2005-11-11 21:09:28.000000000 -0700
+@@ -457,7 +457,7 @@
  	} while (next);
  }
  
@@ -14784,9 +8863,9 @@
  {
  	struct shmem_inode_info *info = SHMEM_I(inode);
  	unsigned long idx;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/sound/drivers/opl3/opl3_lib.c CVS2_6_14_PA0/sound/drivers/opl3/opl3_lib.c
---- LINUS_2_6_14/sound/drivers/opl3/opl3_lib.c	2005-10-27 21:30:53.000000000 -0600
-+++ CVS2_6_14_PA0/sound/drivers/opl3/opl3_lib.c	2005-09-23 21:44:05.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/sound/drivers/opl3/opl3_lib.c CVS2_6_15_RC7_PA0/sound/drivers/opl3/opl3_lib.c
+--- LINUS_2_6_15_RC7/sound/drivers/opl3/opl3_lib.c	2005-12-27 13:26:01.000000000 -0700
++++ CVS2_6_15_RC7_PA0/sound/drivers/opl3/opl3_lib.c	2005-11-11 23:00:07.000000000 -0700
 @@ -40,7 +40,7 @@
  static void snd_opl2_command(opl3_t * opl3, unsigned short cmd, unsigned char val)
  {
@@ -14866,10 +8945,10 @@
  #if 0
  	snd_printk("AdLib IRQ status = 0x%x\n", status);
  #endif
-@@ -333,6 +333,10 @@
- 		release_resource(opl3->res_r_port);
- 		kfree_nocheck(opl3->res_r_port);
- 	}
+@@ -327,6 +327,10 @@
+ 		opl3->private_free(opl3);
+ 	release_and_free_resource(opl3->res_l_port);
+ 	release_and_free_resource(opl3->res_r_port);
 +	if (opl3->unmap_on_free) {
 +		iounmap(opl3->l_port);
 +		iounmap(opl3->r_port);
@@ -14877,7 +8956,7 @@
  	kfree(opl3);
  	return 0;
  }
-@@ -397,12 +401,14 @@
+@@ -391,12 +395,14 @@
  	return 0;
  }
  
@@ -14898,7 +8977,7 @@
  {
  	opl3_t *opl3;
  	int err;
-@@ -410,21 +416,11 @@
+@@ -404,21 +410,11 @@
  	*ropl3 = NULL;
  	if ((err = snd_opl3_new(card, hardware, &opl3)) < 0)
  		return err;
@@ -14923,7 +9002,7 @@
  
  	switch (opl3->hardware) {
  	/* some hardware doesn't support timers */
-@@ -455,6 +451,67 @@
+@@ -449,6 +445,61 @@
  	return 0;
  }
  
@@ -14973,14 +9052,8 @@
 +	return snd_opl3_create_main(card, l_mapped, r_mapped, 1, res_l_port, res_r_port, hardware, ropl3);
 +
 +fail:
-+	if (res_l_port) {
-+		release_resource(res_l_port);
-+		kfree_nocheck(res_l_port);
-+	}
-+	if (res_r_port) {
-+		release_resource(res_r_port);
-+		kfree_nocheck(res_r_port);
-+	}
++	release_and_free_resource(res_l_port);
++	release_and_free_resource(res_r_port);
 +	if (l_mapped)
 +		iounmap(l_mapped);
 +	if (r_mapped)
@@ -14991,7 +9064,7 @@
  int snd_opl3_timer_new(opl3_t * opl3, int timer1_dev, int timer2_dev)
  {
  	int err;
-@@ -534,6 +591,7 @@
+@@ -528,6 +579,7 @@
  EXPORT_SYMBOL(snd_opl3_new);
  EXPORT_SYMBOL(snd_opl3_init);
  EXPORT_SYMBOL(snd_opl3_create);
@@ -14999,9 +9072,9 @@
  EXPORT_SYMBOL(snd_opl3_timer_new);
  EXPORT_SYMBOL(snd_opl3_hwdep_new);
  
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/sound/oss/ad1889.c CVS2_6_14_PA0/sound/oss/ad1889.c
---- LINUS_2_6_14/sound/oss/ad1889.c	2005-10-27 21:30:53.000000000 -0600
-+++ CVS2_6_14_PA0/sound/oss/ad1889.c	2005-06-30 08:26:47.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/sound/oss/ad1889.c CVS2_6_15_RC7_PA0/sound/oss/ad1889.c
+--- LINUS_2_6_15_RC7/sound/oss/ad1889.c	2005-12-27 13:26:02.000000000 -0700
++++ CVS2_6_15_RC7_PA0/sound/oss/ad1889.c	2005-06-30 08:26:47.000000000 -0600
 @@ -74,7 +74,7 @@
  
  	DBG("Setting WAV rate to %d\n", rate);
@@ -15393,9 +9466,9 @@
  	if (!dev->regbase) {
  		printk(KERN_ERR DEVNAME ": unable to remap iomem\n");
  		goto out2;
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/sound/oss/ad1889.h CVS2_6_14_PA0/sound/oss/ad1889.h
---- LINUS_2_6_14/sound/oss/ad1889.h	2005-10-27 21:30:53.000000000 -0600
-+++ CVS2_6_14_PA0/sound/oss/ad1889.h	2005-03-01 16:00:56.000000000 -0700
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/sound/oss/ad1889.h CVS2_6_15_RC7_PA0/sound/oss/ad1889.h
+--- LINUS_2_6_15_RC7/sound/oss/ad1889.h	2005-12-27 13:26:02.000000000 -0700
++++ CVS2_6_15_RC7_PA0/sound/oss/ad1889.h	2005-03-01 16:00:56.000000000 -0700
 @@ -1,57 +1,58 @@
  #ifndef _AD1889_H_
  #define _AD1889_H_
@@ -15515,9 +9588,9 @@
  
  #define AD_WAV_STATE	0
  #define AD_ADC_STATE	1
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/sound/oss/harmony.c CVS2_6_14_PA0/sound/oss/harmony.c
---- LINUS_2_6_14/sound/oss/harmony.c	2005-10-27 21:30:53.000000000 -0600
-+++ CVS2_6_14_PA0/sound/oss/harmony.c	2005-09-13 11:30:53.000000000 -0600
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/sound/oss/harmony.c CVS2_6_15_RC7_PA0/sound/oss/harmony.c
+--- LINUS_2_6_15_RC7/sound/oss/harmony.c	2005-12-27 13:26:02.000000000 -0700
++++ CVS2_6_15_RC7_PA0/sound/oss/harmony.c	2005-12-19 13:43:22.000000000 -0700
 @@ -1236,7 +1236,7 @@
  	}
  
@@ -15527,272 +9600,19 @@
  	harmony.dev = dev;
  
  	/* Grab the ID and revision from the device */
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/sound/parisc/harmony.c CVS2_6_14_PA0/sound/parisc/harmony.c
---- LINUS_2_6_14/sound/parisc/harmony.c	2005-10-27 21:30:54.000000000 -0600
-+++ CVS2_6_14_PA0/sound/parisc/harmony.c	2005-09-23 21:44:09.000000000 -0600
-@@ -197,7 +197,7 @@
- 	spin_unlock(&h->lock);
- 
- 	if (dstatus & HARMONY_DSTATUS_PN) {
--		if (h->psubs) {
-+		if (h->psubs && h->st.playing) {
- 			spin_lock(&h->lock);
- 			h->pbuf.buf += h->pbuf.count; /* PAGE_SIZE */
- 			h->pbuf.buf %= h->pbuf.size; /* MAX_BUFS*PAGE_SIZE */
-@@ -216,7 +216,7 @@
- 	}
- 
- 	if (dstatus & HARMONY_DSTATUS_RN) {
--		if (h->csubs) {
-+		if (h->csubs && h->st.capturing) {
- 			spin_lock(&h->lock);
- 			h->cbuf.buf += h->cbuf.count;
- 			h->cbuf.buf %= h->cbuf.size;
-@@ -316,6 +316,7 @@
- 	case SNDRV_PCM_TRIGGER_STOP:
- 		h->st.playing = 0;
- 		harmony_mute(h);
-+		harmony_write(h, HARMONY_PNXTADD, h->sdma.addr);
- 		harmony_disable_interrupts(h);
- 		break;
- 	case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-@@ -351,8 +352,9 @@
- 		break;
-         case SNDRV_PCM_TRIGGER_STOP:
- 		h->st.capturing = 0;
--                harmony_mute(h);
--                harmony_disable_interrupts(h);
-+		harmony_mute(h);
-+		harmony_write(h, HARMONY_RNXTADD, h->gdma.addr);
-+		harmony_disable_interrupts(h);
- 		break;
-         case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-         case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-@@ -408,7 +410,8 @@
- 	
- 	h->pbuf.size = snd_pcm_lib_buffer_bytes(ss);
- 	h->pbuf.count = snd_pcm_lib_period_bytes(ss);
--	h->pbuf.buf = 0;
-+	if (h->pbuf.buf >= h->pbuf.size)
-+		h->pbuf.buf = 0;
- 	h->st.playing = 0;
- 
- 	h->st.rate = snd_harmony_rate_bits(rt->rate);
-@@ -437,7 +440,8 @@
- 
-         h->cbuf.size = snd_pcm_lib_buffer_bytes(ss);
-         h->cbuf.count = snd_pcm_lib_period_bytes(ss);
--        h->cbuf.buf = 0;
-+	if (h->cbuf.buf >= h->cbuf.size)
-+	        h->cbuf.buf = 0;
- 	h->st.capturing = 0;
- 
-         h->st.rate = snd_harmony_rate_bits(rt->rate);
-@@ -712,13 +716,14 @@
- 
- 	left = (h->st.gain >> shift_left) & mask;
- 	right = (h->st.gain >> shift_right) & mask;
--
- 	if (invert) {
- 		left = mask - left;
- 		right = mask - right;
- 	}
-+	
- 	ucontrol->value.integer.value[0] = left;
--	ucontrol->value.integer.value[1] = right;
-+	if (shift_left != shift_right)
-+		ucontrol->value.integer.value[1] = right;
- 
- 	spin_unlock_irqrestore(&h->mixer_lock, flags);
- 
-@@ -738,22 +743,82 @@
- 	int old_gain = h->st.gain;
- 	unsigned long flags;
- 	
-+	spin_lock_irqsave(&h->mixer_lock, flags);
-+
- 	left = ucontrol->value.integer.value[0] & mask;
--	right = ucontrol->value.integer.value[1] & mask;
--	if (invert) {
-+	if (invert)
- 		left = mask - left;
--		right = mask - right;
-+	h->st.gain &= ~( (mask << shift_left ) );
-+ 	h->st.gain |= (left << shift_left);
-+
-+	if (shift_left != shift_right) {
-+		right = ucontrol->value.integer.value[1] & mask;
-+		if (invert)
-+			right = mask - right;
-+		h->st.gain &= ~( (mask << shift_right) );
-+		h->st.gain |= (right << shift_right);
- 	}
-+
-+	snd_harmony_set_new_gain(h);
-+
-+	spin_unlock_irqrestore(&h->mixer_lock, flags);
-+	
-+	return h->st.gain != old_gain;
-+}
-+
-+static int 
-+snd_harmony_captureroute_info(snd_kcontrol_t *kc, 
-+			      snd_ctl_elem_info_t *uinfo)
-+{
-+	static char *texts[2] = { "Line", "Mic" };
-+	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-+	uinfo->count = 1;
-+	uinfo->value.enumerated.items = 2;
-+	if (uinfo->value.enumerated.item > 1)
-+		uinfo->value.enumerated.item = 1;
-+	strcpy(uinfo->value.enumerated.name,
-+	       texts[uinfo->value.enumerated.item]);
-+	return 0;
-+}
-+
-+static int 
-+snd_harmony_captureroute_get(snd_kcontrol_t *kc, 
-+			     snd_ctl_elem_value_t *ucontrol)
-+{
-+	harmony_t *h = snd_kcontrol_chip(kc);
-+	int value;
-+	unsigned long flags;
- 	
- 	spin_lock_irqsave(&h->mixer_lock, flags);
- 
--	h->st.gain &= ~( (mask << shift_right) | (mask << shift_left) );
-- 	h->st.gain |=  ( (left << shift_left) | (right << shift_right) );
-+	value = (h->st.gain >> HARMONY_GAIN_IS_SHIFT) & 1;
-+	ucontrol->value.enumerated.item[0] = value;
-+
-+	spin_unlock_irqrestore(&h->mixer_lock, flags);
-+
-+	return 0;
-+}  
-+
-+static int 
-+snd_harmony_captureroute_put(snd_kcontrol_t *kc, 
-+			     snd_ctl_elem_value_t *ucontrol)
-+{
-+	harmony_t *h = snd_kcontrol_chip(kc);
-+	int value;
-+	int old_gain = h->st.gain;
-+	unsigned long flags;
-+	
-+	spin_lock_irqsave(&h->mixer_lock, flags);
-+
-+	value = ucontrol->value.enumerated.item[0] & 1;
-+	h->st.gain &= ~HARMONY_GAIN_IS_MASK;
-+ 	h->st.gain |= value << HARMONY_GAIN_IS_SHIFT;
-+
- 	snd_harmony_set_new_gain(h);
+@@ -1250,7 +1250,7 @@
  
- 	spin_unlock_irqrestore(&h->mixer_lock, flags);
+ 	printk(KERN_INFO "Lasi Harmony Audio driver " HARMONY_VERSION ", "
+ 			"h/w id %i, rev. %i at 0x%lx, IRQ %i\n",
+-			id, rev, dev->hpa, harmony.dev->irq);
++			id, rev, dev->hpa.start, harmony.dev->irq);
  	
--	return (old_gain - h->st.gain);
-+	return h->st.gain != old_gain;
- }
- 
- #define HARMONY_CONTROLS (sizeof(snd_harmony_controls)/ \
-@@ -767,10 +832,25 @@
-                    ((mask) << 16) | ((invert) << 24)) }
- 
- static snd_kcontrol_new_t snd_harmony_controls[] = {
--	HARMONY_VOLUME("Playback Volume", HARMONY_GAIN_LO_SHIFT, 
-+	HARMONY_VOLUME("Master Playback Volume", HARMONY_GAIN_LO_SHIFT, 
- 		       HARMONY_GAIN_RO_SHIFT, HARMONY_GAIN_OUT, 1),
- 	HARMONY_VOLUME("Capture Volume", HARMONY_GAIN_LI_SHIFT,
- 		       HARMONY_GAIN_RI_SHIFT, HARMONY_GAIN_IN, 0),
-+	HARMONY_VOLUME("Monitor Volume", HARMONY_GAIN_MA_SHIFT,
-+		       HARMONY_GAIN_MA_SHIFT, HARMONY_GAIN_MA, 1),
-+	{
-+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
-+		.name = "Input Route",
-+		.info = snd_harmony_captureroute_info,
-+		.get = snd_harmony_captureroute_get,
-+		.put = snd_harmony_captureroute_put
-+	},
-+	HARMONY_VOLUME("Internal Speaker Switch", HARMONY_GAIN_SE_SHIFT,
-+		       HARMONY_GAIN_SE_SHIFT, 1, 0),
-+	HARMONY_VOLUME("Line-Out Switch", HARMONY_GAIN_LE_SHIFT,
-+		       HARMONY_GAIN_LE_SHIFT, 1, 0),
-+	HARMONY_VOLUME("Headphones Switch", HARMONY_GAIN_HE_SHIFT,
-+		       HARMONY_GAIN_HE_SHIFT, 1, 0),
- };
- 
- static void __init 
-@@ -852,14 +932,14 @@
- 	memset(&h->pbuf, 0, sizeof(h->pbuf));
- 	memset(&h->cbuf, 0, sizeof(h->cbuf));
- 
--	h->hpa = padev->hpa;
-+	h->hpa = padev->hpa.start;
- 	h->card = card;
- 	h->dev = padev;
- 	h->irq = padev->irq;
--	h->iobase = ioremap_nocache(padev->hpa, HARMONY_SIZE);
-+	h->iobase = ioremap_nocache(padev->hpa.start, HARMONY_SIZE);
- 	if (h->iobase == NULL) {
- 		printk(KERN_ERR PFX "unable to remap hpa 0x%lx\n",
--		       padev->hpa);
-+		       padev->hpa.start);
- 		err = -EBUSY;
- 		goto free_and_ret;
- 	}
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/sound/parisc/harmony.h CVS2_6_14_PA0/sound/parisc/harmony.h
---- LINUS_2_6_14/sound/parisc/harmony.h	2005-10-27 21:30:54.000000000 -0600
-+++ CVS2_6_14_PA0/sound/parisc/harmony.h	2005-05-31 15:45:55.000000000 -0600
-@@ -61,7 +61,7 @@
- #define HARMONY_SIZE       64
- 
- #define BUF_SIZE     PAGE_SIZE
--#define MAX_BUFS     10
-+#define MAX_BUFS     16
- #define MAX_BUF_SIZE (MAX_BUFS * BUF_SIZE)
- 
- #define PLAYBACK_BUFS    MAX_BUFS
-@@ -101,28 +101,31 @@
- #define HARMONY_SS_MONO         0x00000000
- #define HARMONY_SS_STEREO       0x00000001
- 
--#define HARMONY_GAIN_SILENCE    0x00F00FFF
--#define HARMONY_GAIN_DEFAULT    0x0FF00000
-+#define HARMONY_GAIN_SILENCE    0x01F00FFF
-+#define HARMONY_GAIN_DEFAULT    0x01F00FFF
- 
--#define HARMONY_GAIN_HE_SHIFT   27
-+#define HARMONY_GAIN_HE_SHIFT   27 /* headphones enabled */
- #define HARMONY_GAIN_HE_MASK    (1 << HARMONY_GAIN_HE_SHIFT)
--#define HARMONY_GAIN_LE_SHIFT   26
-+#define HARMONY_GAIN_LE_SHIFT   26 /* line-out enabled */
- #define HARMONY_GAIN_LE_MASK    (1 << HARMONY_GAIN_LE_SHIFT)
--#define HARMONY_GAIN_SE_SHIFT   25
-+#define HARMONY_GAIN_SE_SHIFT   25 /* internal-speaker enabled */
- #define HARMONY_GAIN_SE_MASK    (1 << HARMONY_GAIN_SE_SHIFT)
--#define HARMONY_GAIN_IS_SHIFT   24
-+#define HARMONY_GAIN_IS_SHIFT   24 /* input select - 0 for line, 1 for mic */
- #define HARMONY_GAIN_IS_MASK    (1 << HARMONY_GAIN_IS_SHIFT)
- 
-+/* monitor attenuation */
- #define HARMONY_GAIN_MA         0x0f
- #define HARMONY_GAIN_MA_SHIFT   20
- #define HARMONY_GAIN_MA_MASK    (HARMONY_GAIN_MA << HARMONY_GAIN_MA_SHIFT)
- 
-+/* input gain */
- #define HARMONY_GAIN_IN         0x0f
- #define HARMONY_GAIN_LI_SHIFT   16
- #define HARMONY_GAIN_LI_MASK    (HARMONY_GAIN_IN << HARMONY_GAIN_LI_SHIFT)
- #define HARMONY_GAIN_RI_SHIFT   12
- #define HARMONY_GAIN_RI_MASK    (HARMONY_GAIN_IN << HARMONY_GAIN_RI_SHIFT)
- 
-+/* output gain (master volume) */
- #define HARMONY_GAIN_OUT        0x3f
- #define HARMONY_GAIN_LO_SHIFT   6
- #define HARMONY_GAIN_LO_MASK    (HARMONY_GAIN_OUT << HARMONY_GAIN_LO_SHIFT)
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/sound/pci/Kconfig CVS2_6_14_PA0/sound/pci/Kconfig
---- LINUS_2_6_14/sound/pci/Kconfig	2005-10-27 21:30:54.000000000 -0600
-+++ CVS2_6_14_PA0/sound/pci/Kconfig	2005-09-29 21:29:18.000000000 -0600
-@@ -328,6 +328,14 @@
+ 	/* Make sure the control bit isn't set, although I don't think it 
+ 	   ever is. */
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/sound/pci/Kconfig CVS2_6_15_RC7_PA0/sound/pci/Kconfig
+--- LINUS_2_6_15_RC7/sound/pci/Kconfig	2005-12-27 13:26:03.000000000 -0700
++++ CVS2_6_15_RC7_PA0/sound/pci/Kconfig	2005-11-11 21:09:48.000000000 -0700
+@@ -321,6 +321,14 @@
  	  To compile this as a module, choose M here: the module
  	  will be called snd-ad1889.
  
@@ -15807,10 +9627,10 @@
  config SND_ALS4000
  	tristate "Avance Logic ALS4000"
  	depends on SND && ISA_DMA_API
-diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_14/sound/pci/ad1889.c CVS2_6_14_PA0/sound/pci/ad1889.c
---- LINUS_2_6_14/sound/pci/ad1889.c	2005-10-27 21:30:54.000000000 -0600
-+++ CVS2_6_14_PA0/sound/pci/ad1889.c	2005-08-31 21:28:22.000000000 -0600
-@@ -45,16 +45,21 @@
+diff -urN --exclude-from=/var/www/download/linux-2.6/autobuild/build-tools/dontdiff LINUS_2_6_15_RC7/sound/pci/ad1889.c CVS2_6_15_RC7_PA0/sound/pci/ad1889.c
+--- LINUS_2_6_15_RC7/sound/pci/ad1889.c	2005-12-27 13:26:03.000000000 -0700
++++ CVS2_6_15_RC7_PA0/sound/pci/ad1889.c	2005-11-11 21:09:48.000000000 -0700
+@@ -45,6 +45,10 @@
  #include <sound/initval.h>
  #include <sound/ac97_codec.h>
  
@@ -15821,11 +9641,7 @@
  #include <asm/io.h>
  
  #include "ad1889.h"
- #include "ac97/ac97_id.h"
- 
--#define	AD1889_DRVVER	"$Revision: 1.3 $"
-+#define	AD1889_DRVVER	"$Revision: 1.31 $"
- 
+@@ -55,6 +59,7 @@
  MODULE_AUTHOR("Kyle McMartin <kyle at parisc-linux.org>, Thibaut Varene <t-bone at parisc-linux.org>");
  MODULE_DESCRIPTION("Analog Devices AD1889 ALSA sound driver");
  MODULE_LICENSE("GPL");
@@ -15916,15 +9732,6 @@
  	pci_release_regions(chip->pci);
  	pci_disable_device(chip->pci);
  
-@@ -928,7 +953,7 @@
- 	}
- 
- 	/* allocate chip specific data with zero-filled memory */
--	if ((chip = kzalloc(sizeof(*chip), GFP_KERNEL)) == NULL) {
-+	if ((chip = kcalloc(1, sizeof(*chip), GFP_KERNEL)) == NULL) {
- 		pci_disable_device(pci);
- 		return -ENOMEM;
- 	}
 @@ -954,6 +979,17 @@
  
  	spin_lock_init(&chip->lock);	/* only now can we call ad1889_free */
@@ -15943,7 +9750,7 @@
  	if (request_irq(pci->irq, snd_ad1889_interrupt,
  			SA_INTERRUPT|SA_SHIRQ, card->driver, (void*)chip)) {
  		printk(KERN_ERR PFX "cannot obtain IRQ %d\n", pci->irq);
-@@ -1030,6 +1066,22 @@
+@@ -1029,6 +1065,22 @@
  	if (err < 0)
  		goto free_and_ret;
  	
@@ -15966,11 +9773,3 @@
  	err = snd_ad1889_pcm_init(chip, 0, NULL);
  	if (err < 0)
  		goto free_and_ret;
-@@ -1068,7 +1120,6 @@
- 
- static struct pci_driver ad1889_pci = {
- 	.name = "AD1889 Audio",
--	.owner = THIS_MODULE,
- 	.id_table = snd_ad1889_ids,
- 	.probe = snd_ad1889_probe,
- 	.remove = __devexit_p(snd_ad1889_remove),

Modified: people/waldi/linux-2.6/debian/patches-debian/drivers-scsi-megaraid_splitup.patch
==============================================================================
--- people/waldi/linux-2.6/debian/patches-debian/drivers-scsi-megaraid_splitup.patch	(original)
+++ people/waldi/linux-2.6/debian/patches-debian/drivers-scsi-megaraid_splitup.patch	Mon Jan  2 19:32:22 2006
@@ -1,25 +1,30 @@
-# From Fabio M. Di Nitto <fabbione at ubuntu.com>
-# Date 27th May 2005
-# Source Ubuntu kernel-team baz-archive
-#        http://people.u.c/~lamont/Archives/kernel-team@ubuntu.com--2005/
-#        kernel-debian--pre1,2--2.6.11.93
-#
-# * The megaraid legacy driver is around only to support AMI megaraid 1 and 2.
-#   All the other controllers are supported (according to the code) by the
-#   new megaraid driver:
-#   - Add patch drivers-scsi-megaraid_spiltup.dpatch:
-#     . Split PCI ID's properly between the 2 drivers.
-#     . Allow compilation of both drivers at the same time.
-#     . Update Kconfig.megaraid to reflect the new changes in the help.
-#     . Rename a few things in the old megaraid driver to avoid possible
-#       conflicts with the new drivers (NOTE: there might be more that needs
-#       to be changed given that now the 2 modules can be loaded at the same
-#       time).
+# drivers-scsi-megaraid_splitup.patch by Frederik Schüler <fs at debian.org>
+# Patch author: Ben Collins <bcollins at ubuntu.com>
+# Upstream status: not submitted
+# Description: Support megaraid legacy and megraid newgen, side-by-side
+# Source: ubuntu-2.6 git
+# diff from ca0e9390e01be69893d78bf9576d63ec85a6965e to 03bba4e0c091909e36520f2e617e51e87e50f8cd 
+# diff from e82633eb19c4b390846a6eecd72204b696448954 to 8378e9887b6cf0b99e28a3b71c585bd1279932f7
 
-diff -urNad linux-source-2.6.12-2.6.11.90/drivers/scsi/megaraid/Kconfig.megaraid /usr/src/dpatchtemp/dpep.eRg2wK/linux-source-2.6.12-2.6.11.90/drivers/scsi/megaraid/Kconfig.megaraid
---- linux-source-2.6.12-2.6.11.90/drivers/scsi/megaraid/Kconfig.megaraid	2005-03-02 08:37:49.000000000 +0100
-+++ /usr/src/dpatchtemp/dpep.eRg2wK/linux-source-2.6.12-2.6.11.90/drivers/scsi/megaraid/Kconfig.megaraid	2005-04-19 08:28:09.521239400 +0200
-@@ -64,15 +64,11 @@
+diff --git a/drivers/scsi/megaraid/Kconfig.megaraid b/drivers/scsi/megaraid/Kconfig.megaraid
+index 7363e12..d71a230 100644
+--- a/drivers/scsi/megaraid/Kconfig.megaraid
++++ b/drivers/scsi/megaraid/Kconfig.megaraid
+@@ -1,12 +1,6 @@
+-config MEGARAID_NEWGEN
+-	bool "LSI Logic New Generation RAID Device Drivers"
+-	depends on PCI && SCSI
+-	help
+-	LSI Logic RAID Device Drivers
+-
+ config MEGARAID_MM
+ 	tristate "LSI Logic Management Module (New Driver)"
+-	depends on PCI && SCSI && MEGARAID_NEWGEN
++	depends on PCI && SCSI
+ 	help
+ 	Management Module provides ioctl, sysfs support for LSI Logic
+ 	RAID controllers.
+@@ -64,18 +58,15 @@ config MEGARAID_MAILBOX
  	To compile this driver as a module, choose M here: the
  	module will be called megaraid_mbox
  
@@ -31,15 +36,33 @@
 -	This driver supports the LSI MegaRAID 418, 428, 438, 466, 762, 490
 -	and 467 SCSI host adapters. This driver also support the all U320
 -	RAID controllers
-+	This driver supports the AMI MEGARAID 1 and 2.
++	This driver supports the AMI MEGARAID 1 and 2, and the HP NETRAID
++	1 and 2
  
  	To compile this driver as a module, choose M here: the
  	module will be called megaraid
 -endif
-diff -urNad linux-source-2.6.12-2.6.11.90/drivers/scsi/megaraid.c /usr/src/dpatchtemp/dpep.eRg2wK/linux-source-2.6.12-2.6.11.90/drivers/scsi/megaraid.c
---- linux-source-2.6.12-2.6.11.90/drivers/scsi/megaraid.c	2005-03-02 08:37:30.000000000 +0100
-+++ /usr/src/dpatchtemp/dpep.eRg2wK/linux-source-2.6.12-2.6.11.90/drivers/scsi/megaraid.c	2005-04-19 08:35:13.889725584 +0200
-@@ -4565,7 +4565,7 @@
+ 
+ config MEGARAID_SAS
+ 	tristate "LSI Logic MegaRAID SAS RAID Module"
+diff --git a/drivers/scsi/megaraid.h b/drivers/scsi/megaraid.h
+index 4facf55..59cdd2a 100644
+--- a/drivers/scsi/megaraid.h
++++ b/drivers/scsi/megaraid.h
+@@ -84,6 +84,10 @@
+ #define LSI_SUBSYS_VID			0x1000
+ #define INTEL_SUBSYS_VID		0x8086
+ 
++/* Sub-System Device IDs */
++#define HP_NETRAID1M_SUBSYS_DID		0x60E7
++#define HP_NETRAID2M_SUBSYS_DID		0x60E8
++
+ #define HBA_SIGNATURE	      		0x3344
+ #define HBA_SIGNATURE_471	  	0xCCCC
+ #define HBA_SIGNATURE_64BIT		0x0299
+--- a/drivers/scsi/megaraid.c
++++ b/drivers/scsi/megaraid.c
+@@ -4570,7 +4570,7 @@
  };
  
  static int __devinit
@@ -48,35 +71,43 @@
  {
  	struct Scsi_Host *host;
  	adapter_t *adapter;
-@@ -5033,35 +5033,23 @@
+@@ -5036,36 +5036,28 @@
+ 	__megaraid_shutdown(adapter);
  }
  
- static struct pci_device_id megaraid_pci_tbl[] = {
+-static struct pci_device_id megaraid_pci_tbl[] = {
 -	{PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_DISCOVERY,
 -		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 -	{PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_PERC4_DI,
 -		PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT},
 -	{PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_PERC4_QC_VERDE,
 -		PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT},
++static struct pci_device_id megaraid_legacy_pci_tbl[] = {
  	{PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID,
  		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
  	{PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2,
  		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
--	{PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
+ 	{PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
 -		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 -	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3,
 -		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 -	{PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_AMI_MEGARAID3,
 -		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++		HP_SUBSYS_VID, HP_NETRAID1M_SUBSYS_DID, 0, 0, 0},
++	{PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
++		HP_SUBSYS_VID, HP_NETRAID2M_SUBSYS_DID, 0, 0, 0},
  	{0,}
  };
- MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl);
+-MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl);
++MODULE_DEVICE_TABLE(pci, megaraid_legacy_pci_tbl);
  
- static struct pci_driver megaraid_pci_driver = {
+-static struct pci_driver megaraid_pci_driver = {
 -	.name		= "megaraid",
-+	.name		= "megaraidlegacy",
- 	.id_table	= megaraid_pci_tbl,
+-	.id_table	= megaraid_pci_tbl,
 -	.probe		= megaraid_probe_one,
++static struct pci_driver megaraid_legacy_pci_driver = {
++	.name		= "megaraidlegacy",
++	.id_table	= megaraid_legacy_pci_tbl,
 +	.probe		= megaraid_legacy_probe_one,
  	.remove		= __devexit_p(megaraid_remove_one),
  	.shutdown	= megaraid_shutdown,
@@ -87,7 +118,16 @@
  {
  	int error;
  
-@@ -5102,7 +5090,7 @@
+@@ -5081,7 +5073,7 @@
+ 				"megaraid: failed to create megaraid root\n");
+ 	}
+ #endif
+-	error = pci_module_init(&megaraid_pci_driver);
++	error = pci_module_init(&megaraid_legacy_pci_driver);
+ 	if (error) {
+ #ifdef CONFIG_PROC_FS
+ 		remove_proc_entry("megaraid", &proc_root);
+@@ -5104,21 +5096,21 @@
  	return 0;
  }
  
@@ -96,7 +136,14 @@
  {
  	/*
  	 * Unregister the character device interface to the driver.
-@@ -5116,7 +5104,7 @@
+ 	 */
+ 	unregister_chrdev(major, "megadev");
+ 
+-	pci_unregister_driver(&megaraid_pci_driver);
++	pci_unregister_driver(&megaraid_legacy_pci_driver);
+ 
+ #ifdef CONFIG_PROC_FS
+ 	remove_proc_entry("megaraid", &proc_root);
  #endif
  }
  

Modified: people/waldi/linux-2.6/debian/patches-debian/powerpc-apus.patch
==============================================================================
--- people/waldi/linux-2.6/debian/patches-debian/powerpc-apus.patch	(original)
+++ people/waldi/linux-2.6/debian/patches-debian/powerpc-apus.patch	Mon Jan  2 19:32:22 2006
@@ -10,9 +10,9 @@
 # i will not apply by default.
 #
 
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/Kconfig linux-apus-2.6/arch/ppc/Kconfig
---- linux-2.6.14/arch/ppc/Kconfig	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/Kconfig	2005-11-17 14:15:32.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/Kconfig linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/Kconfig
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/Kconfig	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/Kconfig	2005-12-29 09:27:43.000000000 +0000
 @@ -537,7 +537,6 @@
  
  config APUS
@@ -21,10 +21,10 @@
  	help
  	  Select APUS if configuring for a PowerUP Amiga.
  	  More information is available at:
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/Makefile linux-apus-2.6/arch/ppc/Makefile
---- linux-2.6.14/arch/ppc/Makefile	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/Makefile	2005-11-17 14:15:32.000000000 +0000
-@@ -55,9 +55,12 @@
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/Makefile linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/Makefile
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/Makefile	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/Makefile	2005-12-29 09:29:44.000000000 +0000
+@@ -59,9 +59,12 @@
  head-$(CONFIG_44x)		:= arch/ppc/kernel/head_44x.o
  head-$(CONFIG_FSL_BOOKE)	:= arch/ppc/kernel/head_fsl_booke.o
  
@@ -32,12 +32,12 @@
 +head-y				+= arch/ppc/kernel/entry.o
  head-$(CONFIG_6xx)		+= arch/ppc/kernel/idle_6xx.o
  head-$(CONFIG_POWER4)		+= arch/ppc/kernel/idle_power4.o
- head-$(CONFIG_PPC_FPU)		+= arch/ppc/kernel/fpu.o
+ head-$(CONFIG_PPC_FPU)		+= arch/powerpc/kernel/fpu.o
 +head-y				+= arch/ppc/kernel/head_end.o
  
- core-y				+= arch/ppc/kernel/ arch/ppc/platforms/ \
- 				   arch/ppc/mm/ arch/ppc/lib/ arch/ppc/syslib/
-@@ -77,7 +80,9 @@
+ core-y				+= arch/ppc/kernel/ arch/powerpc/kernel/ \
+ 				   arch/ppc/platforms/ \
+@@ -84,7 +87,9 @@
  
  .PHONY: $(BOOT_TARGETS)
  
@@ -47,9 +47,9 @@
  
  CPPFLAGS_vmlinux.lds	:= -Upowerpc
  
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/amiga/Makefile linux-apus-2.6/arch/ppc/amiga/Makefile
---- linux-2.6.14/arch/ppc/amiga/Makefile	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/amiga/Makefile	2004-07-03 17:53:51.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/Makefile linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/Makefile
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/Makefile	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/Makefile	2005-12-29 09:27:43.000000000 +0000
 @@ -1,8 +1,8 @@
  #
 -# Makefile for Linux arch/m68k/amiga source directory
@@ -62,9 +62,9 @@
 +	   amisound.o chipram.o amiga_ksyms.o
  
  obj-$(CONFIG_AMIGA_PCMCIA) += pcmcia.o
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/amiga/amiints.c linux-apus-2.6/arch/ppc/amiga/amiints.c
---- linux-2.6.14/arch/ppc/amiga/amiints.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/amiga/amiints.c	2004-02-04 21:21:34.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/amiints.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/amiints.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/amiints.c	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/amiints.c	2005-12-29 09:27:43.000000000 +0000
 @@ -67,9 +67,10 @@
  
  static short ami_ablecount[AMI_IRQS];
@@ -138,9 +138,9 @@
  }
  
  #ifdef CONFIG_APUS
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/amiga/bootinfo.c linux-apus-2.6/arch/ppc/amiga/bootinfo.c
---- linux-2.6.14/arch/ppc/amiga/bootinfo.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/amiga/bootinfo.c	2005-11-17 14:15:32.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/bootinfo.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/bootinfo.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/bootinfo.c	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/bootinfo.c	2005-12-29 09:27:44.000000000 +0000
 @@ -13,8 +13,9 @@
  
  #include <asm/setup.h>
@@ -177,9 +177,9 @@
  	}
  	if (unknown)
  	    printk("parse_bootinfo: unknown tag 0x%04x ignored\n",
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/amiga/cia.c linux-apus-2.6/arch/ppc/amiga/cia.c
---- linux-2.6.14/arch/ppc/amiga/cia.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/amiga/cia.c	2004-02-04 21:21:34.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/cia.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/cia.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/cia.c	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/cia.c	2005-12-29 09:27:44.000000000 +0000
 @@ -134,7 +134,7 @@
  	return cia_able_irq_private(base, mask);
  }
@@ -197,9 +197,9 @@
  }
  
  void __init cia_init_IRQ(struct ciabase *base)
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/amiga/config.c linux-apus-2.6/arch/ppc/amiga/config.c
---- linux-2.6.14/arch/ppc/amiga/config.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/amiga/config.c	2005-07-30 18:52:47.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/config.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/config.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/config.c	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/config.c	2005-12-29 09:27:44.000000000 +0000
 @@ -20,11 +20,12 @@
  #include <linux/mm.h>
  #include <linux/kd.h>
@@ -687,9 +687,9 @@
  
  	return(len);
  }
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/amiga/time.c linux-apus-2.6/arch/ppc/amiga/time.c
---- linux-2.6.14/arch/ppc/amiga/time.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/amiga/time.c	1970-01-01 00:00:00.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/time.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/time.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/amiga/time.c	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/amiga/time.c	1970-01-01 00:00:00.000000000 +0000
 @@ -1,58 +0,0 @@
 -#include <linux/config.h> /* CONFIG_HEARTBEAT */
 -#include <linux/errno.h>
@@ -749,9 +749,9 @@
 -	/* should be made smarter */
 -	ppc_md.heartbeat_count = 1;
 -}
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/configs/apus_defconfig linux-apus-2.6/arch/ppc/configs/apus_defconfig
---- linux-2.6.14/arch/ppc/configs/apus_defconfig	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/configs/apus_defconfig	2005-11-17 14:15:32.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/configs/apus_defconfig linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/configs/apus_defconfig
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/configs/apus_defconfig	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/configs/apus_defconfig	2005-12-29 09:27:44.000000000 +0000
 @@ -1,103 +1,139 @@
  #
  # Automatically generated make config: don't edit
@@ -2227,25 +2227,24 @@
 +#
 +# Hardware crypto devices
 +#
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/kernel/Makefile linux-apus-2.6/arch/ppc/kernel/Makefile
---- linux-2.6.14/arch/ppc/kernel/Makefile	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/kernel/Makefile	2005-09-23 13:41:21.000000000 +0000
-@@ -9,10 +9,11 @@
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/Makefile linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/Makefile
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/Makefile	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/Makefile	2005-12-29 09:30:41.000000000 +0000
+@@ -10,9 +10,10 @@
  extra-$(CONFIG_8xx)		:= head_8xx.o
  extra-$(CONFIG_6xx)		+= idle_6xx.o
  extra-$(CONFIG_POWER4)		+= idle_power4.o
 +extra-y				+= entry.o head_end.o
- extra-$(CONFIG_PPC_FPU)		+= fpu.o
  extra-y				+= vmlinux.lds
  
--obj-y				:= entry.o traps.o irq.o idle.o time.o misc.o \
-+obj-y				:= traps.o irq.o idle.o time.o misc.o \
- 					process.o signal.o ptrace.o align.o \
- 					semaphore.o syscalls.o setup.o \
- 					cputable.o ppc_htab.o perfmon.o
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/kernel/head.S linux-apus-2.6/arch/ppc/kernel/head.S
---- linux-2.6.14/arch/ppc/kernel/head.S	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/kernel/head.S	2005-11-17 14:15:32.000000000 +0000
+-obj-y				:= entry.o traps.o idle.o time.o misc.o \
++obj-y				:= traps.o idle.o time.o misc.o \
+ 					process.o \
+ 					setup.o \
+ 					ppc_htab.o
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/head.S linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/head.S
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/head.S	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/head.S	2005-12-29 09:27:44.000000000 +0000
 @@ -353,6 +353,28 @@
  #if defined(CONFIG_GEMINI) && defined(CONFIG_SMP)
  	. = 0x100
@@ -2273,7 +2272,7 @@
 +	mtlr	r4
 +	blrl
  #else
- 	EXCEPTION(0x100, Reset, UnknownException, EXC_XFER_STD)
+ 	EXCEPTION(0x100, Reset, unknown_exception, EXC_XFER_STD)
  #endif
 @@ -408,7 +430,15 @@
  	bne	1f			/* if not, try to put a PTE */
@@ -2307,7 +2306,7 @@
  1:	mr	r4,r12
  	mr	r5,r9
  	EXC_XFER_EE_LITE(0x400, handle_page_fault)
-@@ -1199,19 +1237,6 @@
+@@ -1193,19 +1231,6 @@
  	bl	machine_init
  	bl	MMU_init
  
@@ -2327,7 +2326,7 @@
  /*
   * Go back to running unmapped so we can load up new values
   * for SDR1 (hash table pointer) and the segment registers
-@@ -1229,6 +1254,22 @@
+@@ -1223,6 +1248,22 @@
  /* Load up the kernel context */
  2:	bl	load_up_mmu
  
@@ -2350,7 +2349,7 @@
  #ifdef CONFIG_BDI_SWITCH
  	/* Add helper information for the Abatron bdiGDB debugger.
  	 * We do this here because we know the mmu is disabled, and
-@@ -1409,6 +1450,17 @@
+@@ -1403,6 +1444,17 @@
  	mtspr	SPRN_DBAT0U,r11		/* bit in upper BAT register */
  	mtspr	SPRN_IBAT0L,r8
  	mtspr	SPRN_IBAT0U,r11
@@ -2368,16 +2367,16 @@
  	isync
  	blr
  
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/kernel/head_end.S linux-apus-2.6/arch/ppc/kernel/head_end.S
---- linux-2.6.14/arch/ppc/kernel/head_end.S	1970-01-01 00:00:00.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/kernel/head_end.S	2005-09-23 13:41:21.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/head_end.S linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/head_end.S
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/head_end.S	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/head_end.S	2005-12-29 09:27:44.000000000 +0000
 @@ -0,0 +1,2 @@
 +	.global __head_end
 +__head_end:
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/kernel/misc.S linux-apus-2.6/arch/ppc/kernel/misc.S
---- linux-2.6.14/arch/ppc/kernel/misc.S	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/kernel/misc.S	2005-11-17 14:15:32.000000000 +0000
-@@ -1377,7 +1377,11 @@
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/misc.S linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/misc.S
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/misc.S	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/misc.S	2005-12-29 09:27:44.000000000 +0000
+@@ -1325,7 +1325,11 @@
  	.long sys_fstat64
  	.long sys_pciconfig_read
  	.long sys_pciconfig_write
@@ -2389,9 +2388,9 @@
  	.long sys_ni_syscall		/* 201 - reserved - MacOnLinux - new */
  	.long sys_getdents64
  	.long sys_pivot_root
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/kernel/ppc_ksyms.c linux-apus-2.6/arch/ppc/kernel/ppc_ksyms.c
---- linux-2.6.14/arch/ppc/kernel/ppc_ksyms.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/kernel/ppc_ksyms.c	2005-11-17 14:15:32.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/ppc_ksyms.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/ppc_ksyms.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/ppc_ksyms.c	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/ppc_ksyms.c	2005-12-29 09:27:44.000000000 +0000
 @@ -65,8 +65,6 @@
  long long __ashldi3(long long, int);
  long long __lshrdi3(long long, int);
@@ -2401,7 +2400,7 @@
  EXPORT_SYMBOL(clear_pages);
  EXPORT_SYMBOL(clear_user_page);
  EXPORT_SYMBOL(do_signal);
-@@ -142,7 +140,6 @@
+@@ -146,7 +144,6 @@
  EXPORT_SYMBOL(_insl_ns);
  EXPORT_SYMBOL(_outsl_ns);
  EXPORT_SYMBOL(iopa);
@@ -2409,10 +2408,10 @@
  EXPORT_SYMBOL(ioremap);
  #ifdef CONFIG_44x
  EXPORT_SYMBOL(ioremap64);
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/kernel/setup.c linux-apus-2.6/arch/ppc/kernel/setup.c
---- linux-2.6.14/arch/ppc/kernel/setup.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/kernel/setup.c	2005-11-17 14:15:32.000000000 +0000
-@@ -546,6 +546,7 @@
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/setup.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/setup.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/setup.c	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/setup.c	2005-12-29 09:27:44.000000000 +0000
+@@ -566,6 +566,7 @@
  #endif /* CONFIG_SERIAL_CORE_CONSOLE */
  #endif /* CONFIG_PPC_MULTIPLATFORM */
  
@@ -2420,7 +2419,7 @@
  struct bi_record *find_bootinfo(void)
  {
  	struct bi_record *rec;
-@@ -592,6 +593,7 @@
+@@ -624,6 +625,7 @@
  		rec = (struct bi_record *)((ulong)rec + rec->size);
  	}
  }
@@ -2428,10 +2427,10 @@
  
  /*
   * Find out what kind of machine we're on and save any data we need
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/kernel/time.c linux-apus-2.6/arch/ppc/kernel/time.c
---- linux-2.6.14/arch/ppc/kernel/time.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/kernel/time.c	2005-11-17 14:15:32.000000000 +0000
-@@ -152,6 +152,7 @@
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/time.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/time.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/kernel/time.c	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/kernel/time.c	2005-12-29 09:27:44.000000000 +0000
+@@ -156,6 +156,7 @@
  		tb_last_stamp = jiffy_stamp;
  		do_timer(regs);
  
@@ -2439,7 +2438,7 @@
  		/*
  		 * update the rtc when needed, this should be performed on the
  		 * right fraction of a second. Half or full second ?
-@@ -178,6 +179,7 @@
+@@ -182,6 +183,7 @@
  				/* Try again one minute later */
  				last_rtc_update += 60;
  		}
@@ -2447,9 +2446,9 @@
  		write_sequnlock(&xtime_lock);
  	}
  	if ( !disarm_decr[smp_processor_id()] )
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/mm/Makefile linux-apus-2.6/arch/ppc/mm/Makefile
---- linux-2.6.14/arch/ppc/mm/Makefile	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/mm/Makefile	2004-09-25 21:09:43.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/mm/Makefile linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/mm/Makefile
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/mm/Makefile	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/mm/Makefile	2005-12-29 09:27:44.000000000 +0000
 @@ -5,7 +5,8 @@
  obj-y				:= fault.o init.o mem_pieces.o \
  					mmu_context.o pgtable.o
@@ -2460,9 +2459,9 @@
  obj-$(CONFIG_40x)		+= 4xx_mmu.o
  obj-$(CONFIG_44x)		+= 44x_mmu.o
  obj-$(CONFIG_FSL_BOOKE)		+= fsl_booke_mmu.o
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/mm/init.c linux-apus-2.6/arch/ppc/mm/init.c
---- linux-2.6.14/arch/ppc/mm/init.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/mm/init.c	2005-11-17 14:15:32.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/mm/init.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/mm/init.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/mm/init.c	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/mm/init.c	2005-12-29 09:27:44.000000000 +0000
 @@ -61,9 +61,6 @@
  unsigned long total_memory;
  unsigned long total_lowmem;
@@ -2473,9 +2472,9 @@
  int mem_init_done;
  int init_bootmem_done;
  int boot_mapsize;
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/mm/pgtable.c linux-apus-2.6/arch/ppc/mm/pgtable.c
---- linux-2.6.14/arch/ppc/mm/pgtable.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/mm/pgtable.c	2005-09-18 13:03:35.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/mm/pgtable.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/mm/pgtable.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/mm/pgtable.c	2005-12-25 12:11:25.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/mm/pgtable.c	2005-12-29 09:27:45.000000000 +0000
 @@ -190,8 +190,8 @@
  	 * Don't allow anybody to remap normal RAM that we're using.
  	 * mem_init() sets high_memory so only do the check after that.
@@ -2487,7 +2486,7 @@
  		printk("__ioremap(): phys addr "PHYS_FMT" is RAM lr %p\n", p,
  		       __builtin_return_address(0));
  		return NULL;
-@@ -429,42 +429,3 @@
+@@ -427,42 +427,3 @@
  
  	return(pa);
  }
@@ -2530,9 +2529,9 @@
 -	return ret;
 -}
 -
-diff -Nur -x.gitignore -xCVS linux-2.6.14/arch/ppc/platforms/apus_setup.c linux-apus-2.6/arch/ppc/platforms/apus_setup.c
---- linux-2.6.14/arch/ppc/platforms/apus_setup.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/arch/ppc/platforms/apus_setup.c	2005-11-17 14:15:32.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/platforms/apus_setup.c linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/platforms/apus_setup.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/arch/ppc/platforms/apus_setup.c	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/platforms/apus_setup.c	2005-12-29 09:27:45.000000000 +0000
 @@ -17,11 +17,14 @@
  #include <linux/kernel.h>
  #include <linux/sched.h>
@@ -2983,9 +2982,9 @@
  	ppc_memoffset = PAGE_OFFSET - PPC_MEMSTART;
  	total = memory[0].size;
  
-diff -Nur -x.gitignore -xCVS linux-2.6.14/drivers/block/amiflop.c linux-apus-2.6/drivers/block/amiflop.c
---- linux-2.6.14/drivers/block/amiflop.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/drivers/block/amiflop.c	2005-07-30 23:06:43.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/drivers/block/amiflop.c linux-2.6-2.6.14+2.6.15-rc7/drivers/block/amiflop.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/drivers/block/amiflop.c	2005-12-25 12:11:26.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/drivers/block/amiflop.c	2005-12-29 09:27:45.000000000 +0000
 @@ -59,6 +59,7 @@
  #include <linux/hdreg.h>
  #include <linux/delay.h>
@@ -2994,9 +2993,27 @@
  #include <linux/amifdreg.h>
  #include <linux/amifd.h>
  #include <linux/buffer_head.h>
-diff -Nur -x.gitignore -xCVS linux-2.6.14/include/asm-m68k/bootinfo.h linux-apus-2.6/include/asm-m68k/bootinfo.h
---- linux-2.6.14/include/asm-m68k/bootinfo.h	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/include/asm-m68k/bootinfo.h	2005-07-30 20:49:24.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/drivers/video/console/fonts.c linux-2.6-2.6.14+2.6.15-rc7/drivers/video/console/fonts.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/drivers/video/console/fonts.c	2005-11-20 13:51:30.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/drivers/video/console/fonts.c	2005-12-29 09:27:45.000000000 +0000
+@@ -118,7 +118,13 @@
+     for(i=0; i<num_fonts; i++) {
+ 	f = fonts[i];
+ 	c = f->pref;
+-#if defined(__mc68000__) || defined(CONFIG_APUS)
++#if defined(CONFIG_APUS)
++#ifdef CONFIG_FONT_PEARL_8x8
++	if (f->idx == PEARL8x8_IDX)
++	    c = 100;
++#endif
++#endif
++#if defined(__mc68000__)
+ #ifdef CONFIG_FONT_PEARL_8x8
+ 	if (MACH_IS_AMIGA && f->idx == PEARL8x8_IDX)
+ 	    c = 100;
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-m68k/bootinfo.h linux-2.6-2.6.14+2.6.15-rc7/include/asm-m68k/bootinfo.h
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-m68k/bootinfo.h	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/include/asm-m68k/bootinfo.h	2005-12-29 09:27:45.000000000 +0000
 @@ -81,6 +81,8 @@
  #define BI_AMIGA_ECLOCK		0x8005	/* EClock frequency (u_long) */
  #define BI_AMIGA_CHIPSET	0x8006	/* native chipset present (u_long) */
@@ -3006,9 +3023,9 @@
  
      /*
       *  Atari-specific tags
-diff -Nur -x.gitignore -xCVS linux-2.6.14/include/asm-ppc/amigahw.h linux-apus-2.6/include/asm-ppc/amigahw.h
---- linux-2.6.14/include/asm-ppc/amigahw.h	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/include/asm-ppc/amigahw.h	2005-11-17 14:17:12.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/amigahw.h linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/amigahw.h
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/amigahw.h	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/amigahw.h	2005-12-29 09:27:45.000000000 +0000
 @@ -1,6 +1,6 @@
 -#ifdef __KERNEL__
  #ifndef __ASMPPC_AMIGAHW_H
@@ -3048,9 +3065,9 @@
 -#endif /* __ASMPPC_AMIGAHW_H */
  #endif /* __KERNEL__ */
 +#endif /* __ASMPPC_AMIGAHW_H */
-diff -Nur -x.gitignore -xCVS linux-2.6.14/include/asm-ppc/bootinfo.h linux-apus-2.6/include/asm-ppc/bootinfo.h
---- linux-2.6.14/include/asm-ppc/bootinfo.h	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/include/asm-ppc/bootinfo.h	2004-02-21 21:42:00.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/bootinfo.h linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/bootinfo.h
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/bootinfo.h	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/bootinfo.h	2005-12-29 09:27:45.000000000 +0000
 @@ -36,7 +36,6 @@
  extern void bootinfo_init(struct bi_record *rec);
  extern void bootinfo_append(unsigned long tag, unsigned long size, void * data);
@@ -3067,26 +3084,9 @@
  
  #endif /* _PPC_BOOTINFO_H */
  #endif /* __KERNEL__ */
-diff -Nur -x.gitignore -xCVS linux-2.6.14/include/asm-ppc/current.h linux-apus-2.6/include/asm-ppc/current.h
---- linux-2.6.14/include/asm-ppc/current.h	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/include/asm-ppc/current.h	2004-02-04 21:21:36.000000000 +0000
-@@ -1,11 +1,11 @@
--#ifdef __KERNEL__
- #ifndef _PPC_CURRENT_H
- #define _PPC_CURRENT_H
-+#ifdef __KERNEL__
- 
- /*
-  * We keep `current' in r2 for speed.
-  */
- register struct task_struct *current asm ("r2");
- 
--#endif /* !(_PPC_CURRENT_H) */
- #endif /* __KERNEL__ */
-+#endif /* !(_PPC_CURRENT_H) */
-diff -Nur -x.gitignore -xCVS linux-2.6.14/include/asm-ppc/io.h linux-apus-2.6/include/asm-ppc/io.h
---- linux-2.6.14/include/asm-ppc/io.h	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/include/asm-ppc/io.h	2005-11-17 14:17:13.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/io.h linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/io.h
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/io.h	2005-12-25 12:11:28.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/io.h	2005-12-29 09:27:45.000000000 +0000
 @@ -1,6 +1,6 @@
 -#ifdef __KERNEL__
  #ifndef _PPC_IO_H
@@ -3095,7 +3095,7 @@
  
  #include <linux/config.h>
  #include <linux/string.h>
-@@ -294,10 +294,10 @@
+@@ -297,10 +297,10 @@
  __do_out_asm(outb, "stbx")
  #ifdef CONFIG_APUS
  __do_in_asm(inb, "lbzx")
@@ -3110,7 +3110,7 @@
  #elif defined (CONFIG_8260_PCI9)
  /* in asm cannot be defined if PCI9 workaround is used */
  #define inb(port)		in_8((port)+___IO_BASE)
-@@ -377,12 +377,19 @@
+@@ -380,12 +380,19 @@
  extern void __iomem *ioremap64(unsigned long long address, unsigned long size);
  #endif
  #define ioremap_nocache(addr, size)	ioremap((addr), (size))
@@ -3130,7 +3130,7 @@
  /*
   * The PCI bus is inherently Little-Endian.  The PowerPC is being
   * run Big-Endian.  Thus all values which cross the [PCI] barrier
-@@ -392,24 +399,16 @@
+@@ -395,24 +402,16 @@
   */
  extern inline unsigned long virt_to_bus(volatile void * address)
  {
@@ -3157,7 +3157,7 @@
  }
  
  /*
-@@ -418,20 +417,12 @@
+@@ -421,20 +420,12 @@
   */
  extern inline unsigned long virt_to_phys(volatile void * address)
  {
@@ -3180,7 +3180,7 @@
  }
  
  /*
-@@ -546,8 +537,6 @@
+@@ -539,8 +530,6 @@
  extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
  extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
  
@@ -3189,14 +3189,14 @@
  #ifdef CONFIG_8260_PCI9
  #include <asm/mpc8260_pci9.h>
  #endif
-@@ -564,3 +553,4 @@
+@@ -574,3 +563,4 @@
  #define xlate_dev_kmem_ptr(p)	p
  
  #endif /* __KERNEL__ */
 +#endif /* _PPC_IO_H */
-diff -Nur -x.gitignore -xCVS linux-2.6.14/include/asm-ppc/machdep.h linux-apus-2.6/include/asm-ppc/machdep.h
---- linux-2.6.14/include/asm-ppc/machdep.h	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/include/asm-ppc/machdep.h	2005-09-18 13:03:36.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/machdep.h linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/machdep.h
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/machdep.h	2005-12-25 12:11:28.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/machdep.h	2005-12-29 09:27:45.000000000 +0000
 @@ -9,10 +9,6 @@
  #include <asm/setup.h>
  #include <asm/page.h>
@@ -3208,10 +3208,10 @@
  struct pt_regs;
  struct pci_bus;	
  struct pci_dev;
-diff -Nur -x.gitignore -xCVS linux-2.6.14/include/asm-ppc/pgtable.h linux-apus-2.6/include/asm-ppc/pgtable.h
---- linux-2.6.14/include/asm-ppc/pgtable.h	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/include/asm-ppc/pgtable.h	2005-11-17 14:17:13.000000000 +0000
-@@ -723,7 +723,7 @@
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/pgtable.h linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/pgtable.h
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/pgtable.h	2005-12-25 12:11:28.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/pgtable.h	2005-12-29 09:27:45.000000000 +0000
+@@ -724,7 +724,7 @@
  #define pmd_page_kernel(pmd)	\
  	((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
  #define pmd_page(pmd)		\
@@ -3220,9 +3220,9 @@
  #else
  #define pmd_page_kernel(pmd)	\
  	((unsigned long) (pmd_val(pmd) & PAGE_MASK))
-diff -Nur -x.gitignore -xCVS linux-2.6.14/include/asm-ppc/zorro.h linux-apus-2.6/include/asm-ppc/zorro.h
---- linux-2.6.14/include/asm-ppc/zorro.h	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/include/asm-ppc/zorro.h	2005-08-03 23:48:26.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/zorro.h linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/zorro.h
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/include/asm-ppc/zorro.h	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/include/asm-ppc/zorro.h	2005-12-29 09:27:45.000000000 +0000
 @@ -3,13 +3,50 @@
  
  #include <asm/io.h>
@@ -3289,9 +3289,9 @@
  
  extern void *__ioremap(unsigned long address, unsigned long size,
                         unsigned long flags);
-diff -Nur -x.gitignore -xCVS linux-2.6.14/include/video/vga.h linux-apus-2.6/include/video/vga.h
---- linux-2.6.14/include/video/vga.h	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/include/video/vga.h	2005-07-30 18:52:54.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/include/video/vga.h linux-2.6-2.6.14+2.6.15-rc7/include/video/vga.h
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/include/video/vga.h	2005-10-28 00:02:08.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/include/video/vga.h	2005-12-29 09:27:45.000000000 +0000
 @@ -28,6 +28,7 @@
   * Ugh, we don't have PCI space, so map readb() and friends to use Zorro space
   * for MMIO accesses. This should make cirrusfb work again on Amiga
@@ -3318,9 +3318,9 @@
  #define writew		z_writew
  #endif
  #include <asm/byteorder.h>
-diff -Nur -x.gitignore -xCVS linux-2.6.14/sound/oss/dmasound/dmasound_paula.c linux-apus-2.6/sound/oss/dmasound/dmasound_paula.c
---- linux-2.6.14/sound/oss/dmasound/dmasound_paula.c	2005-10-28 00:02:08.000000000 +0000
-+++ linux-apus-2.6/sound/oss/dmasound/dmasound_paula.c	2005-09-24 21:15:20.000000000 +0000
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/sound/oss/dmasound/dmasound_paula.c linux-2.6-2.6.14+2.6.15-rc7/sound/oss/dmasound/dmasound_paula.c
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/sound/oss/dmasound/dmasound_paula.c	2005-12-25 12:11:33.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/sound/oss/dmasound/dmasound_paula.c	2005-12-29 09:27:45.000000000 +0000
 @@ -244,6 +244,7 @@
  			u_char frame[], ssize_t *frameUsed,		\
  			ssize_t frameLeft)				\
@@ -3353,21 +3353,57 @@
  				return -EFAULT;				\
  			data = convsample(data);			\
  			*righth++ = data>>8;				\
-diff -Nur -x.gitignore -xCVS linux-2.6.14/drivers/video/console/fonts.c linux-apus-2.6/drivers/video/console/fonts.c
---- linux-2.6.14/drivers/video/console/fonts.c	2005-11-24 11:38:51.000000000 +0000
-+++ linux-apus-2.6/drivers/video/console/fonts.c	2005-11-24 11:40:02.000000000 +0000
-@@ -118,7 +118,13 @@
-     for(i=0; i<num_fonts; i++) {
- 	f = fonts[i];
- 	c = f->pref;
--#if defined(__mc68000__) || defined(CONFIG_APUS)
-+#if defined(CONFIG_APUS)
-+#ifdef CONFIG_FONT_PEARL_8x8
-+	if (f->idx == PEARL8x8_IDX)
-+	    c = 100;
-+#endif
-+#endif
-+#if defined(__mc68000__)
- #ifdef CONFIG_FONT_PEARL_8x8
- 	if (MACH_IS_AMIGA && f->idx == PEARL8x8_IDX)
- 	    c = 100;
+diff -Nur linux-2.6-2.6.14+2.6.15-rc7.orig/sven linux-2.6-2.6.14+2.6.15-rc7/sven
+--- linux-2.6-2.6.14+2.6.15-rc7.orig/sven	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/sven	2005-12-29 09:31:10.000000000 +0000
+@@ -0,0 +1,50 @@
++patching file arch/ppc/Kconfig
++patching file arch/ppc/amiga/Makefile
++patching file arch/ppc/amiga/amiints.c
++patching file arch/ppc/amiga/bootinfo.c
++patching file arch/ppc/amiga/cia.c
++patching file arch/ppc/amiga/config.c
++patching file arch/ppc/amiga/time.c
++patching file arch/ppc/configs/apus_defconfig
++patching file arch/ppc/kernel/Makefile
++Hunk #1 succeeded at 353 with fuzz 2.
++Hunk #4 succeeded at 1231 (offset -6 lines).
++Hunk #5 succeeded at 1248 (offset -6 lines).
++Hunk #6 succeeded at 1444 (offset -6 lines).
++patching file arch/ppc/kernel/head_end.S
++patching file arch/ppc/kernel/misc.S
++Hunk #1 succeeded at 1325 (offset -52 lines).
++patching file arch/ppc/kernel/ppc_ksyms.c
++Hunk #2 succeeded at 144 (offset 4 lines).
++patching file arch/ppc/kernel/setup.c
++Hunk #1 succeeded at 566 (offset 20 lines).
++Hunk #2 succeeded at 625 (offset 32 lines).
++patching file arch/ppc/kernel/time.c
++Hunk #1 succeeded at 156 (offset 4 lines).
++Hunk #2 succeeded at 183 (offset 4 lines).
++patching file arch/ppc/mm/Makefile
++patching file arch/ppc/mm/init.c
++patching file arch/ppc/mm/pgtable.c
++Hunk #2 succeeded at 427 (offset -2 lines).
++patching file arch/ppc/platforms/apus_setup.c
++patching file drivers/block/amiflop.c
++patching file include/asm-m68k/bootinfo.h
++patching file include/asm-ppc/amigahw.h
++patching file include/asm-ppc/bootinfo.h
++patching file include/asm-powerpc/current.h
++Hunk #1 FAILED at 1.
++1 out of 1 hunk FAILED -- saving rejects to file include/asm-powerpc/current.h.rej
++patching file include/asm-ppc/io.h
++Hunk #2 succeeded at 297 (offset 3 lines).
++Hunk #3 succeeded at 380 (offset 3 lines).
++Hunk #4 succeeded at 402 (offset 3 lines).
++Hunk #5 succeeded at 420 (offset 3 lines).
++Hunk #6 succeeded at 530 (offset -7 lines).
++Hunk #7 succeeded at 563 (offset 10 lines).
++patching file include/asm-ppc/machdep.h
++patching file include/asm-ppc/pgtable.h
++Hunk #1 succeeded at 724 (offset 1 line).
++patching file include/asm-ppc/zorro.h
++patching file include/video/vga.h
++patching file sound/oss/dmasound/dmasound_paula.c
++patching file drivers/video/console/fonts.c

Modified: people/waldi/linux-2.6/debian/patches-debian/powerpc-build-links.patch
==============================================================================
--- people/waldi/linux-2.6/debian/patches-debian/powerpc-build-links.patch	(original)
+++ people/waldi/linux-2.6/debian/patches-debian/powerpc-build-links.patch	Mon Jan  2 19:32:22 2006
@@ -10,15 +10,3 @@
  
  # Use the file '.tmp_gas_check' for binutils tests, as gas won't output
  # to stdout and these checks are run even on install targets.
-diff -urN ../orig/linux-2.6-2.6.13+2.6.14-rc5/arch/ppc64/Makefile linux-2.6-2.6.13+2.6.14-rc5/arch/ppc64/Makefile
---- ../orig/linux-2.6-2.6.13+2.6.14-rc5/arch/ppc64/Makefile	2005-10-22 18:17:48.000000000 +0000
-+++ linux-2.6-2.6.13+2.6.14-rc5/arch/ppc64/Makefile	2005-10-23 13:28:34.000000000 +0000
-@@ -123,7 +123,7 @@
- include/asm: arch/$(ARCH)/include/asm
- arch/$(ARCH)/include/asm:
- 	$(Q)if [ ! -d arch/$(ARCH)/include ]; then mkdir -p arch/$(ARCH)/include; fi
--	$(Q)ln -fsn $(srctree)/include/asm-powerpc arch/$(ARCH)/include/asm
-+	$(Q)ln -fsn $(if $(KBUILD_SRC),$(KBUILD_SRC),../../..)/include/asm-powerpc arch/$(ARCH)/include/asm
- 
- define archhelp
-   echo  '  zImage.vmode        - Compressed kernel image (arch/$(ARCH)/boot/zImage.vmode)'

Modified: people/waldi/linux-2.6/debian/patches-debian/powerpc-mv643xx-hotplug-support.patch
==============================================================================
--- people/waldi/linux-2.6/debian/patches-debian/powerpc-mv643xx-hotplug-support.patch	(original)
+++ people/waldi/linux-2.6/debian/patches-debian/powerpc-mv643xx-hotplug-support.patch	Mon Jan  2 19:32:22 2006
@@ -5,31 +5,31 @@
 # cleanup in order to not break embedded arches using this controller, but
 # should not be a worry for debian.
 #
---- linux-2.6.14-rc1/drivers/net/mv643xx_eth.c	2005-09-14 08:15:11.000065096 +0200
-+++ linux-2.6.14-rc1_nico/drivers/net/mv643xx_eth.c	2005-09-15 12:57:50.646269250 +0200
-@@ -1533,6 +1533,9 @@
- 	printk(KERN_NOTICE "%s: RX NAPI Enabled \n", dev->name);
- #endif
+--- linux/drivers/net/mv643xx_eth.c.orig	2006-01-01 17:22:07.000000000 +0000
++++ linux/drivers/net/mv643xx_eth.c	2006-01-01 17:23:56.000000000 +0000
+@@ -41,6 +41,8 @@
+ #include <linux/ethtool.h>
+ #include <linux/platform_device.h>
  
-+	if (mp->tx_sram_size > 0)
-+		printk(KERN_NOTICE "%s: Using SRAM\n", dev->name);
++#include <linux/pci.h>
 +
- 	return 0;
- 
- out:
-@@ -1640,6 +1643,15 @@
+ #include <asm/io.h>
+ #include <asm/types.h>
+ #include <asm/pgtable.h>
+@@ -1635,6 +1637,15 @@
  		" and Dale Farnsworth");
  MODULE_DESCRIPTION("Ethernet driver for Marvell MV643XX");
  
-+#include <linux/pci.h>
-+
 +static struct pci_device_id pci_marvell_mv64360[] = {
-+		{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_MV64360) },
-+		{ }
-+	};
++	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_MV64360) },
++	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_MV64460) },
++	{ }
++};
 +
 +MODULE_DEVICE_TABLE(pci, pci_marvell_mv64360);
 +
++
  /*
   * The second part is the low level driver of the gigE ethernet ports.
   */
+

Added: people/waldi/linux-2.6/debian/patches-debian/powerpc-mv643xx-spinlock-fix-support.patch
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/patches-debian/powerpc-mv643xx-spinlock-fix-support.patch	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,66 @@
+Date: Wed, 28 Dec 2005 15:40:01 -0700
+To: netdev at vger.kernel.org
+Subject: [PATCH 4/4] mv643xx: Don't call request_irq with a held lock
+Message-ID: <20051228224001.GD5742 at xyzzy.farnsworth.org>
+References: <20051228223449.GA5742 at xyzzy.farnsworth.org>
+
+From: Dale Farnsworth <dale at farnsworth.org>
+
+We can't call request_irq() while holding a spin lock.
+
+Signed-off-by: Dale Farnsworth <dale at farnsworth.org>
+
+Index: linux-2.6-mv643xx_enet/drivers/net/mv643xx_eth.c
+===================================================================
+--- linux-2.6-mv643xx_enet.orig/drivers/net/mv643xx_eth.c
++++ linux-2.6-mv643xx_enet/drivers/net/mv643xx_eth.c
+@@ -655,34 +655,24 @@ static int mv643xx_eth_open(struct net_d
+ 	unsigned int port_num = mp->port_num;
+ 	int err;
+ 
+-	spin_lock_irq(&mp->lock);
+-
+ 	err = request_irq(dev->irq, mv643xx_eth_int_handler,
+ 			SA_SHIRQ | SA_SAMPLE_RANDOM, dev->name, dev);
+-
+ 	if (err) {
+ 		printk(KERN_ERR "Can not assign IRQ number to MV643XX_eth%d\n",
+ 								port_num);
+-		err = -EAGAIN;
+-		goto out;
++		return -EAGAIN;
+ 	}
+ 
++	spin_lock_irq(&mp->lock);
++
+ 	if (mv643xx_eth_real_open(dev)) {
+ 		printk("%s: Error opening interface\n", dev->name);
++		free_irq(dev->irq, dev);
+ 		err = -EBUSY;
+-		goto out_free;
+ 	}
+ 
+ 	spin_unlock_irq(&mp->lock);
+ 
+-	return 0;
+-
+-out_free:
+-	free_irq(dev->irq, dev);
+-
+-out:
+-	spin_unlock_irq(&mp->lock);
+-
+ 	return err;
+ }
+ 
+
+_______________________________________________
+Linuxppc-dev mailing list
+Linuxppc-dev at ozlabs.org
+https://ozlabs.org/mailman/listinfo/linuxppc-dev
+---------------------------------------------------------------------------------------
+Wanadoo vous informe que cet  e-mail a ete controle par l'anti-virus mail. 
+Aucun virus connu a ce jour par nos services n'a ete detecte.
+
+
+

Added: people/waldi/linux-2.6/debian/patches-debian/powerpc-prep-utah-ide-interrupt.patch
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/patches-debian/powerpc-prep-utah-ide-interrupt.patch	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,16 @@
+# 
+# Description: Reenables IDE interrupt on Motorola Powerstack II (Utah)
+# Patch author: Sven Luther <luther at debian.org>
+# Closes: #345424: linux-source-2.6.14: Missing IDE IRQ for PReP Utah (PowerstackII Pro4000)
+#
+--- linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/platforms/prep_pci.c.orig	2005-12-31 14:51:16.000000000 +0000
++++ linux-2.6-2.6.14+2.6.15-rc7/arch/ppc/platforms/prep_pci.c	2005-12-31 14:58:23.000000000 +0000
+@@ -46,7 +46,7 @@
+ static char Utah_pci_IRQ_map[23] =
+ {
+         0,   /* Slot 0  - unused */
+-        0,   /* Slot 1  - unused */
++        4,   /* Slot 1  - IDE - SL82C105 */
+         5,   /* Slot 2  - SCSI - NCR825A  */
+         0,   /* Slot 3  - unused */
+         3,   /* Slot 4  - Ethernet - DEC2114x */

Added: people/waldi/linux-2.6/debian/patches-debian/series/2.6.14+2.6.15-rc7-0experimental.1
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/patches-debian/series/2.6.14+2.6.15-rc7-0experimental.1	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,22 @@
++ fbdev-radeon-noaccel.patch
++ fs-asfs-2.patch
++ ia64-irq-affinity-upfix.patch
++ modular-ide-pnp.patch
++ powerpc-mkvmlinuz-support.patch
++ powerpc-serial.patch
+#+ remove-references-to-removed-drivers.patch
++ sparc64-hme-lockup.patch
+#+ tty-locking-fixes9.patch
++ version.patch
++ powerpc-apus.patch
+#+ s390-uaccess-const.patch
++ powerpc-build-links.patch
++ m68k-bvme.patch
++ m68k-mvme147.patch
++ m68k-mvme16x.patch
++ m68k-spinlock.patch
++ sparc64-atyfb-xl-gr-final.patch
++ powerpc-arch-default-powerpc.patch
++ drivers-scsi-megaraid_splitup.patch
++ powerpc-mv643xx-spinlock-fix-support.patch
++ powerpc-prep-utah-ide-interrupt.patch

Added: people/waldi/linux-2.6/debian/patches-debian/series/2.6.14+2.6.15-rc7-0experimental.2
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/patches-debian/series/2.6.14+2.6.15-rc7-0experimental.2	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,2 @@
++ powerpc-mv643xx-hotplug-support.patch
+

Added: people/waldi/linux-2.6/debian/patches-debian/sparc64-atyfb-xl-gr-final.patch
==============================================================================
--- (empty file)
+++ people/waldi/linux-2.6/debian/patches-debian/sparc64-atyfb-xl-gr-final.patch	Mon Jan  2 19:32:22 2006
@@ -0,0 +1,12 @@
+diff -aur a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c
+--- a/drivers/video/aty/atyfb_base.c	2005-10-27 17:02:08.000000000 -0700
++++ b/drivers/video/aty/atyfb_base.c	2005-11-09 19:56:18.000000000 -0800
+@@ -404,7 +404,7 @@
+ 	{ PCI_CHIP_MACH64GM, "3D RAGE XL (Mach64 GM, AGP)", 230, 83, 63, ATI_CHIP_264XL },
+ 	{ PCI_CHIP_MACH64GN, "3D RAGE XL (Mach64 GN, AGP)", 230, 83, 63, ATI_CHIP_264XL },
+ 	{ PCI_CHIP_MACH64GO, "3D RAGE XL (Mach64 GO, PCI-66/BGA)", 230, 83, 63, ATI_CHIP_264XL },
+-	{ PCI_CHIP_MACH64GR, "3D RAGE XL (Mach64 GR, PCI-33MHz)", 230, 83, 63, ATI_CHIP_264XL },
++	{ PCI_CHIP_MACH64GR, "3D RAGE XL (Mach64 GR, PCI-33MHz)", 235, 83, 63, ATI_CHIP_264XL | M64F_SDRAM_MAGIC_PLL },
+ 	{ PCI_CHIP_MACH64GL, "3D RAGE XL (Mach64 GL, PCI)", 230, 83, 63, ATI_CHIP_264XL },
+ 	{ PCI_CHIP_MACH64GS, "3D RAGE XL (Mach64 GS, PCI)", 230, 83, 63, ATI_CHIP_264XL },
+ 

Modified: people/waldi/linux-2.6/debian/rules.real
==============================================================================
--- people/waldi/linux-2.6/debian/rules.real	(original)
+++ people/waldi/linux-2.6/debian/rules.real	Mon Jan  2 19:32:22 2006
@@ -85,14 +85,7 @@
 endif
 $(BUILD_DIR)/config.$(ARCH)-$(SUBARCH)-$(FLAVOUR): $(basedir)/config.$(FLAVOUR) $(config_common)
 	@echo "Generating configuration file $@:"
-	rm -f '$@'
-	for i in $(config_common); do	\
-	  if [ -f "$${i}" ]; then	\
-	    cat "$${i}" >> '$@';	\
-	  fi;				\
-	done
-#	Flavour config file must be present
-	cat '$(basedir)/config.$(FLAVOUR)' >> '$@'
+	ocaml debian/bin/kconfig.ml -ba -b "$(basedir)" -a "$(ARCH)" -s "$(SUBARCH)" -f "$(FLAVOUR)" > '$@'
 
 $(BUILD_DIR)/linux-source-$(UPSTREAM_VERSION).tar.bz2: SOURCE_DIR=$(BUILD_DIR)/source
 $(BUILD_DIR)/linux-source-$(UPSTREAM_VERSION).tar.bz2: DIR = $(BUILD_DIR)/linux-source-$(UPSTREAM_VERSION)

Modified: people/waldi/linux-2.6/debian/templates/control.extra.in
==============================================================================
--- people/waldi/linux-2.6/debian/templates/control.extra.in	(original)
+++ people/waldi/linux-2.6/debian/templates/control.extra.in	Mon Jan  2 19:32:22 2006
@@ -16,13 +16,13 @@
 Description: Linux kernel 2.6 image on Alpha SMP machines - transition package
  This package is for transition only.
 
-Package: kernel-image-2.6-386
+Package: kernel-image-2.6-486
 X-Version-Overwrite-Epoch: 1
 Architecture: i386
 Section: base
 Priority: extra
-Depends: linux-image-2.6-386
-Description: Linux kernel 2.6.12 image on 386-class machines - transition package
+Depends: linux-image-2.6-486
+Description: Linux kernel 2.6 image on 486-class machines - transition package
  This package is for transition only.
 
 Package: kernel-image-2.6-686

Modified: people/waldi/linux-2.6/debian/templates/control.source.in
==============================================================================
--- people/waldi/linux-2.6/debian/templates/control.source.in	(original)
+++ people/waldi/linux-2.6/debian/templates/control.source.in	Mon Jan  2 19:32:22 2006
@@ -2,7 +2,7 @@
 Section: devel
 Priority: optional
 Maintainer: Debian Kernel Team <debian-kernel at lists.debian.org>
-Uploaders: Andres Salomon <dilinger at debian.org>, Bastian Blank <waldi at debian.org>, Simon Horman <horms at debian.org>, Sven Luther <luther at debian.org>, Jonas Smedegaard <dr at jones.dk>, Norbert Tretkowski <nobse at debian.org>
+Uploaders: Andres Salomon <dilinger at debian.org>, Bastian Blank <waldi at debian.org>, Simon Horman <horms at debian.org>, Sven Luther <luther at debian.org>, Jonas Smedegaard <dr at jones.dk>, Norbert Tretkowski <nobse at debian.org>, Frederik Schüler <fs at debian.org>
 Standards-Version: 3.6.1.0
-Build-Depends: gcc (>= 4:4.0) [!m68k], gcc-3.3 [m68k], binutils-hppa64 [hppa], gcc-4.0-hppa64 [hppa], debhelper (>= 4.1.0), module-init-tools, dpkg-dev (>= 1.10.23), debianutils (>= 1.6), bzip2, sparc-utils [sparc], kernel-package (>= 9.008.3)
+Build-Depends: gcc (>= 4:4.0) [!m68k], gcc-3.3 [m68k], binutils-hppa64 [hppa], gcc-4.0-hppa64 [hppa], debhelper (>= 4.1.0), module-init-tools, dpkg-dev (>= 1.10.23), debianutils (>= 1.6), bzip2, sparc-utils [sparc], kernel-package (>= 10.029), ocaml-interp
 Build-Depends-Indep: docbook-utils, gs, transfig, xmlto, dh-kpatches (>= 0.99.3)



More information about the Kernel-svn-changes mailing list