r4301 - in people/waldi/linux-2.6: . debian debian/arch/powerpc debian/patches-arch debian/patches-debian

Bastian Blank waldi at costa.debian.org
Mon Oct 3 20:24:28 UTC 2005


Author: waldi
Date: 2005-10-03 20:24:25 +0000 (Mon, 03 Oct 2005)
New Revision: 4301

Removed:
   people/waldi/linux-2.6/debian/arch/powerpc/noconfig.apus
Modified:
   people/waldi/linux-2.6/
   people/waldi/linux-2.6/debian/README.Debian
   people/waldi/linux-2.6/debian/arch/powerpc/config.apus
   people/waldi/linux-2.6/debian/arch/powerpc/defines
   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/powerpc-apus-todo.patch
   people/waldi/linux-2.6/debian/patches-debian/powerpc-apus.patch
Log:
Merge /dists/trunk/linux-2.6.



Property changes on: people/waldi/linux-2.6
___________________________________________________________________
Name: svk:merge
   - 510b9475-24dd-0310-9b6c-e0eefe99d49f:/dists/trunk/linux-2.6:4266
   + 510b9475-24dd-0310-9b6c-e0eefe99d49f:/dists/trunk/linux-2.6:4298

Modified: people/waldi/linux-2.6/debian/README.Debian
===================================================================
--- people/waldi/linux-2.6/debian/README.Debian	2005-10-03 20:23:02 UTC (rev 4300)
+++ people/waldi/linux-2.6/debian/README.Debian	2005-10-03 20:24:25 UTC (rev 4301)
@@ -8,6 +8,13 @@
 contains a description and mentions the author.  The patches can be found
 at http://svn.debian.org/wsvn/kernel/tags/kernel/source/.
 
+Config Files
+------------
+The .config files used to build the various linux-image files are dynamically
+generated during the linux-2.6 package build.  See the source package for
+details.  Each linux-image-* package provides the complete .config file that
+was used to generate it.  This file is installed in /boot.
+
 Rebuilding Adaptec AIC7xxx/79xx firmware
 ----------------------------------------
 You can rebuild the firmware for the Adaptec AIC7xxx/79xx SCSI Adapters. To

Modified: people/waldi/linux-2.6/debian/arch/powerpc/config.apus
===================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/config.apus	2005-10-03 20:23:02 UTC (rev 4300)
+++ people/waldi/linux-2.6/debian/arch/powerpc/config.apus	2005-10-03 20:24:25 UTC (rev 4301)
@@ -73,6 +73,7 @@
 # CONFIG_POWER4 is not set
 # CONFIG_8xx is not set
 # CONFIG_E500 is not set
+# CONFIG_E200 is not set
 CONFIG_PPC_FPU=y
 # CONFIG_ALTIVEC is not set
 # CONFIG_TAU is not set
@@ -207,7 +208,7 @@
 #
 # CONFIG_BLK_DEV_FD is not set
 CONFIG_AMIGA_FLOPPY=y
-CONFIG_AMIGA_Z2RAM=m
+# CONFIG_AMIGA_Z2RAM is not set
 # CONFIG_PARIDE is not set
 # CONFIG_BLK_CPQ_DA is not set
 # CONFIG_BLK_CPQ_CISS_DA is not set

Modified: people/waldi/linux-2.6/debian/arch/powerpc/defines
===================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/defines	2005-10-03 20:23:02 UTC (rev 4300)
+++ people/waldi/linux-2.6/debian/arch/powerpc/defines	2005-10-03 20:24:25 UTC (rev 4301)
@@ -8,6 +8,9 @@
 kernel-arch: ppc
 kpkg-subarch: powerpc
 
+[apus]
+kpkg-subarch: apus
+
 [powerpc]
 depends: mkvmlinuz (>= 13)
 

Deleted: people/waldi/linux-2.6/debian/arch/powerpc/noconfig.apus
===================================================================
--- people/waldi/linux-2.6/debian/arch/powerpc/noconfig.apus	2005-10-03 20:23:02 UTC (rev 4300)
+++ people/waldi/linux-2.6/debian/arch/powerpc/noconfig.apus	2005-10-03 20:24:25 UTC (rev 4301)
@@ -1,1082 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.12
-# Sun Jul 31 18:13:08 2005
-#
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_HAVE_DEC_LOCK=y
-CONFIG_PPC=y
-CONFIG_PPC32=y
-CONFIG_GENERIC_NVRAM=y
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_HOTPLUG is not set
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-# 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_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
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Processor
-#
-CONFIG_6xx=y
-# CONFIG_40x is not set
-# CONFIG_44x is not set
-# CONFIG_POWER3 is not set
-# CONFIG_POWER4 is not set
-# CONFIG_8xx is not set
-# CONFIG_E500 is not set
-CONFIG_PPC_FPU=y
-# CONFIG_ALTIVEC is not set
-# CONFIG_TAU is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_PM is not set
-CONFIG_PPC_STD_MMU=y
-
-#
-# Platform options
-#
-# CONFIG_PPC_MULTIPLATFORM is not set
-CONFIG_APUS=y
-# CONFIG_KATANA is not set
-# CONFIG_WILLOW is not set
-# CONFIG_CPCI690 is not set
-# CONFIG_PCORE is not set
-# CONFIG_POWERPMC250 is not set
-# CONFIG_CHESTNUT is not set
-# CONFIG_SPRUCE is not set
-# CONFIG_HDPU is not set
-# CONFIG_EV64260 is not set
-# CONFIG_LOPEC is not set
-# CONFIG_MCPN765 is not set
-# CONFIG_MVME5100 is not set
-# CONFIG_PPLUS is not set
-# CONFIG_PRPMC750 is not set
-# CONFIG_PRPMC800 is not set
-# CONFIG_SANDPOINT is not set
-# CONFIG_RADSTONE_PPC7D is not set
-# CONFIG_ADIR is not set
-# CONFIG_K2 is not set
-# CONFIG_PAL4 is not set
-# CONFIG_GEMINI is not set
-# CONFIG_EST8260 is not set
-# CONFIG_SBC82xx is not set
-# CONFIG_SBS8260 is not set
-# CONFIG_RPX8260 is not set
-# CONFIG_TQM8260 is not set
-# CONFIG_ADS8272 is not set
-# CONFIG_PQ2FADS is not set
-# CONFIG_LITE5200 is not set
-# CONFIG_MPC834x_SYS is not set
-# CONFIG_SMP is not set
-# CONFIG_HIGHMEM is not set
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=m
-# CONFIG_CMDLINE_BOOL is not set
-CONFIG_AMIGA=y
-CONFIG_ZORRO=y
-CONFIG_ABSTRACT_CONSOLE=y
-CONFIG_APUS_FAST_EXCEPT=y
-CONFIG_AMIGA_PCMCIA=y
-CONFIG_AMIGA_BUILTIN_SERIAL=y
-CONFIG_GVPIOEXT=m
-CONFIG_GVPIOEXT_LP=m
-CONFIG_GVPIOEXT_PLIP=m
-CONFIG_MULTIFACE_III_TTY=m
-CONFIG_A2232=m
-CONFIG_WHIPPET_SERIAL=m
-CONFIG_APNE=y
-CONFIG_SERIAL_CONSOLE=y
-CONFIG_HEARTBEAT=y
-CONFIG_PROC_HARDWARE=y
-CONFIG_ZORRO_NAMES=y
-CONFIG_ISA_DMA_API=y
-
-#
-# Bus options
-#
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_PERMEDIA=y
-CONFIG_PCI_LEGACY_PROC=y
-CONFIG_PCI_NAMES=y
-# CONFIG_PCI_DEBUG is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Advanced setup
-#
-# CONFIG_ADVANCED_OPTIONS is not set
-
-#
-# Default settings for advanced configuration options are used
-#
-CONFIG_HIGHMEM_START=0xfe000000
-CONFIG_LOWMEM_SIZE=0x30000000
-CONFIG_KERNEL_START=0xc0000000
-CONFIG_TASK_SIZE=0x80000000
-CONFIG_BOOT_LOAD=0x00800000
-
-#
-# 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
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-# CONFIG_PARPORT_PC is not set
-CONFIG_PARPORT_NOT_PC=y
-CONFIG_PARPORT_AMIGA=m
-# CONFIG_PARPORT_MFC3 is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-CONFIG_AMIGA_FLOPPY=y
-CONFIG_AMIGA_Z2RAM=m
-# 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 is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-CONFIG_BLK_DEV_RAM=m
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_LBD is not set
-# 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
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_BLK_DEV_IDEFLOPPY=y
-CONFIG_BLK_DEV_IDESCSI=m
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_BLK_DEV_IDEPCI is not set
-# CONFIG_IDE_ARM is not set
-CONFIG_BLK_DEV_GAYLE=y
-CONFIG_BLK_DEV_IDEDOUBLER=y
-CONFIG_BLK_DEV_BUDDHA=y
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD 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=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_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_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_DPT_I2O is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_EATA 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_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR 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 is not set
-# CONFIG_SCSI_QLA2322 is not set
-# CONFIG_SCSI_QLA6312 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
-# CONFIG_SCSI_DEBUG is not set
-CONFIG_A3000_SCSI=y
-CONFIG_A2091_SCSI=y
-CONFIG_GVP11_SCSI=y
-CONFIG_CYBERSTORM_SCSI=y
-CONFIG_CYBERSTORMII_SCSI=y
-CONFIG_BLZ2060_SCSI=y
-CONFIG_BLZ1230_SCSI=y
-CONFIG_FASTLANE_SCSI=y
-CONFIG_OKTAGON_SCSI=y
-
-#
-# 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=m
-CONFIG_MD_RAID5=m
-# CONFIG_MD_RAID6 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_MD_FAULTY is not set
-CONFIG_BLK_DEV_DM=m
-# 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_DM_MULTIPATH is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Macintosh device drivers
-#
-
-#
-# Networking support
-#
-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 is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# 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
-
-#
-# 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 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 is not set
-CONFIG_IP_NF_MATCH_MAC=m
-# CONFIG_IP_NF_MATCH_PKTTYPE is not set
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_DSCP is not set
-# CONFIG_IP_NF_MATCH_AH_ESP is not set
-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 is not set
-# CONFIG_IP_NF_TARGET_SAME is not set
-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 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 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
-
-#
-# 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 is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_MII is not set
-CONFIG_ARIADNE=y
-CONFIG_A2065=y
-CONFIG_HYDRA=y
-CONFIG_ZORRO8390=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_PCI is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC 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_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PLIP=m
-CONFIG_PPP=y
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=y
-CONFIG_PPP_SYNC_TTY=y
-CONFIG_PPP_DEFLATE=y
-CONFIG_PPP_BSDCOMP=y
-CONFIG_PPPOE=y
-CONFIG_SLIP=y
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_JOYDEV=m
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_EVBUG=m
-
-#
-# 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_AMIGA=y
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-CONFIG_MOUSE_AMIGA=m
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_TIPAR is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# 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
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# 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
-
-#
-# Misc devices
-#
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# 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=y
-CONFIG_FB_AMIGA=y
-CONFIG_FB_AMIGA_OCS=y
-CONFIG_FB_AMIGA_ECS=y
-CONFIG_FB_AMIGA_AGA=y
-CONFIG_FB_FM2=y
-# CONFIG_FB_CT65550 is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-# 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_TRIDENT is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_FONT_PEARL_8x8=y
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_DMASOUND_PAULA is not set
-CONFIG_DMASOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-# CONFIG_SND is not set
-
-#
-# Open Sound System
-#
-CONFIG_SOUND_PRIME=m
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-CONFIG_SOUND_OSS=m
-CONFIG_SOUND_TRACEINIT=y
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_AD1889 is not set
-# CONFIG_SOUND_SGALAXY is not set
-# CONFIG_SOUND_ADLIB is not set
-# CONFIG_SOUND_ACI_MIXER is not set
-# CONFIG_SOUND_CS4232 is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-CONFIG_SOUND_VMIDI=m
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_NM256 is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_AWE32_SYNTH is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_YMFPCI is not set
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-# CONFIG_SOUND_ALI5455 is not set
-# CONFIG_SOUND_FORTE is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_AD1980 is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB is not set
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-
-#
-# XFS support
-#
-# CONFIG_XFS_FS is not set
-CONFIG_MINIX_FS=y
-CONFIG_ROMFS_FS=m
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-CONFIG_AUTOFS_FS=m
-CONFIG_AUTOFS4_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-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_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-CONFIG_AFFS_FS=y
-CONFIG_HFS_FS=y
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_CRAMFS=m
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-CONFIG_CODA_FS=m
-# CONFIG_CODA_FS_OLD_API is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-CONFIG_AMIGA_PARTITION=y
-CONFIG_ATARI_PARTITION=y
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-CONFIG_SOLARIS_X86_PARTITION=y
-CONFIG_UNIXWARE_DISKLABEL=y
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_LOG_BUF_SHIFT=14
-# 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_FS is not set
-# CONFIG_XMON is not set
-# CONFIG_BDI_SWITCH is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Hardware crypto devices
-#

Modified: people/waldi/linux-2.6/debian/changelog
===================================================================
--- people/waldi/linux-2.6/debian/changelog	2005-10-03 20:23:02 UTC (rev 4300)
+++ people/waldi/linux-2.6/debian/changelog	2005-10-03 20:24:25 UTC (rev 4301)
@@ -84,8 +84,16 @@
     a part which is safe to apply, and one which needs checking, and is thus
     not applied yet.
 
- -- Sven Luther <luther at debian.org>  Fri, 23 Sep 2005 21:05:59 +0200
+  [ Kyle McMartin ]
+  * [hppa] Update hppa.diff to 2.6.13-pa4.
+  * [hppa] Add space register fix to pacache.S to hppa.diff.
 
+  [ dann frazier ]
+  * Add a note to README.Debian that explains where users can find the .config
+    files used to generate the linux-image packages.  Closes: #316809
+
+ -- dann frazier <dannf at debian.org>  Tue, 27 Sep 2005 22:57:24 -0600
+
 linux-2.6 (2.6.12-6) unstable; urgency=high
 
   [ Andres Salomon, Bastian Blank ]

Modified: people/waldi/linux-2.6/debian/patches-arch/hppa.diff
===================================================================
--- people/waldi/linux-2.6/debian/patches-arch/hppa.diff	2005-10-03 20:23:02 UTC (rev 4300)
+++ people/waldi/linux-2.6/debian/patches-arch/hppa.diff	2005-10-03 20:24:25 UTC (rev 4301)
@@ -1,7 +1,6 @@
-Index: linux-2.6-2.6.12/CREDITS
-===================================================================
---- linux-2.6-2.6.12.orig/CREDITS	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/CREDITS	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/CREDITS linux-2.6.13/CREDITS
+--- linux-2.6.13.org/CREDITS	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/CREDITS	2005-09-25 12:34:39.000000000 -0400
 @@ -611,8 +611,7 @@
  N: Randolph Chung
  E: tausq at debian.org
@@ -12,10 +11,9 @@
  
  N: Juan Jose Ciarlante
  W: http://juanjox.kernelnotes.org/
-Index: linux-2.6-2.6.12/Documentation/parisc/todo
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6-2.6.12/Documentation/parisc/todo	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/Documentation/parisc/todo linux-2.6.13/Documentation/parisc/todo
+--- linux-2.6.13.org/Documentation/parisc/todo	1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.13/Documentation/parisc/todo	2005-09-25 12:34:39.000000000 -0400
 @@ -0,0 +1,82 @@
 +Status 2005-03-07 :
 +-------------------
@@ -99,28 +97,28 @@
 + - 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)
-Index: linux-2.6-2.6.12/MAINTAINERS
-===================================================================
---- linux-2.6-2.6.12.orig/MAINTAINERS	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/MAINTAINERS	2005-08-09 17:53:35.000000000 -0400
-@@ -191,6 +191,13 @@
+diff -Nur linux-2.6.13.org/MAINTAINERS linux-2.6.13/MAINTAINERS
+--- linux-2.6.13.org/MAINTAINERS	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/MAINTAINERS	2005-09-25 12:34:39.000000000 -0400
+@@ -191,6 +191,15 @@
  W:	http://linux.thorsten-knabe.de
  S:	Maintained
  
 +AD1889 SOUND DRIVER
 +P:	Kyle McMartin
 +M:	kyle at parisc-linux.org
-+W:	http://www.parisc-linux.org/~kyle/ad1889/
++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
-Index: linux-2.6-2.6.12/arch/ia64/ia32/ia32_signal.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/ia64/ia32/ia32_signal.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/ia64/ia32/ia32_signal.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/ia64/ia32/ia32_signal.c linux-2.6.13/arch/ia64/ia32/ia32_signal.c
+--- linux-2.6.13.org/arch/ia64/ia32/ia32_signal.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/ia64/ia32/ia32_signal.c	2005-09-25 12:34:39.000000000 -0400
 @@ -24,6 +24,7 @@
  #include <linux/unistd.h>
  #include <linux/wait.h>
@@ -129,10 +127,9 @@
  
  #include <asm/intrinsics.h>
  #include <asm/uaccess.h>
-Index: linux-2.6-2.6.12/arch/ia64/ia32/ia32priv.h
-===================================================================
---- linux-2.6-2.6.12.orig/arch/ia64/ia32/ia32priv.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/ia64/ia32/ia32priv.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/ia64/ia32/ia32priv.h linux-2.6.13/arch/ia64/ia32/ia32priv.h
+--- linux-2.6.13.org/arch/ia64/ia32/ia32priv.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/ia64/ia32/ia32priv.h	2005-09-25 12:34:39.000000000 -0400
 @@ -225,58 +225,6 @@
  	unsigned int	st_ino_hi;
  };
@@ -153,7 +150,7 @@
 -
 -		/* POSIX.1b timers */
 -		struct {
--			timer_t _tid;		/* timer id */
+-			compat_timer_t _tid;		/* timer id */
 -			int _overrun;		/* overrun count */
 -			char _pad[sizeof(unsigned int) - sizeof(int)];
 -			compat_sigval_t _sigval;	/* same as below */
@@ -192,29 +189,47 @@
  struct old_linux32_dirent {
  	u32	d_ino;
  	u32	d_offset;
-Index: linux-2.6-2.6.12/arch/parisc/Kconfig
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/Kconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/Kconfig	2005-08-09 17:53:35.000000000 -0400
-@@ -150,7 +150,7 @@
+diff -Nur linux-2.6.13.org/arch/parisc/Kconfig linux-2.6.13/arch/parisc/Kconfig
+--- linux-2.6.13.org/arch/parisc/Kconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/Kconfig	2005-09-25 12:34:39.000000000 -0400
+@@ -33,7 +33,7 @@
+ 	default y
  
- config DISCONTIGMEM
+ config GENERIC_ISA_DMA
+-	bool
++	def_bool n
+ 
+ config GENERIC_HARDIRQS
+ 	def_bool y
+@@ -46,8 +46,7 @@
+ 	bool
+ 
+ config ISA_DMA_API
+-	bool
+-	default y
++	def_bool n
+ 
+ source "init/Kconfig"
+ 
+@@ -150,7 +149,7 @@
+ 
+ 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)
-Index: linux-2.6-2.6.12/arch/parisc/Makefile
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/Makefile	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/Makefile	2005-08-09 17:53:47.000000000 -0400
-@@ -20,13 +20,13 @@
+diff -Nur linux-2.6.13.org/arch/parisc/Makefile linux-2.6.13/arch/parisc/Makefile
+--- linux-2.6.13.org/arch/parisc/Makefile	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/Makefile	2005-09-25 12:34:39.000000000 -0400
+@@ -20,13 +20,14 @@
  CHECKFLAGS	+= -D__hppa__=1
  
  ifdef CONFIG_64BIT
 -CROSS_COMPILE	:= hppa64-linux-
-+CROSS_COMPILE	:= hppa64-linux-gnu-
++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
@@ -225,11 +240,14 @@
  endif
  endif
  
-@@ -34,6 +34,11 @@
+@@ -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
@@ -237,7 +255,7 @@
  cflags-y	:= -pipe
  
  # These flags should be implied by an hppa-linux configuration, but they
-@@ -43,7 +48,7 @@
+@@ -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.
@@ -246,10 +264,9 @@
  
  # Without this, "ld -r" results in .text sections that are too big
  # (> 0x40000) for branches to reach stubs.
-Index: linux-2.6-2.6.12/arch/parisc/configs/712_defconfig
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/configs/712_defconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/configs/712_defconfig	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/configs/712_defconfig linux-2.6.13/arch/parisc/configs/712_defconfig
+--- linux-2.6.13.org/arch/parisc/configs/712_defconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/configs/712_defconfig	2005-09-25 12:34:39.000000000 -0400
 @@ -1,12 +1,16 @@
  #
  # Automatically generated make config: don't edit
@@ -599,10 +616,9 @@
  # Library routines
  #
  CONFIG_CRC_CCITT=m
-Index: linux-2.6-2.6.12/arch/parisc/configs/a500_defconfig
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/configs/a500_defconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/configs/a500_defconfig	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/configs/a500_defconfig linux-2.6.13/arch/parisc/configs/a500_defconfig
+--- linux-2.6.13.org/arch/parisc/configs/a500_defconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/configs/a500_defconfig	2005-09-25 12:34:39.000000000 -0400
 @@ -1,7 +1,7 @@
  #
  # Automatically generated make config: don't edit
@@ -794,10 +810,9 @@
  CONFIG_CRYPTO_DES=m
  CONFIG_CRYPTO_BLOWFISH=m
  CONFIG_CRYPTO_TWOFISH=m
-Index: linux-2.6-2.6.12/arch/parisc/configs/b180_defconfig
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/configs/b180_defconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/configs/b180_defconfig	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/configs/b180_defconfig linux-2.6.13/arch/parisc/configs/b180_defconfig
+--- linux-2.6.13.org/arch/parisc/configs/b180_defconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/configs/b180_defconfig	2005-09-25 12:34:39.000000000 -0400
 @@ -1,12 +1,16 @@
  #
  # Automatically generated make config: don't edit
@@ -1213,17 +1228,16 @@
  # Library routines
  #
  # CONFIG_CRC_CCITT is not set
-Index: linux-2.6-2.6.12/arch/parisc/configs/c3000_defconfig
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/configs/c3000_defconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/configs/c3000_defconfig	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/configs/c3000_defconfig linux-2.6.13/arch/parisc/configs/c3000_defconfig
+--- linux-2.6.13.org/arch/parisc/configs/c3000_defconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/configs/c3000_defconfig	2005-09-25 12:34:39.000000000 -0400
 @@ -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.12-rc4-pa2
-+# Wed May 11 23:06:15 2005
++# Linux kernel version: 2.6.12-pa2
++# Sat Jun 25 03:10:57 2005
  #
  CONFIG_PARISC=y
  CONFIG_MMU=y
@@ -1401,7 +1415,15 @@
  # CONFIG_FEALNX is not set
  CONFIG_NATSEMI=m
  # CONFIG_NE2K_PCI is not set
-@@ -622,16 +630,6 @@
+@@ -557,6 +565,7 @@
+ # CONFIG_SK98LIN is not set
+ # CONFIG_VIA_VELOCITY is not set
+ CONFIG_TIGON3=m
++# CONFIG_BNX2 is not set
+ 
+ #
+ # Ethernet (10000 Mbit)
+@@ -622,16 +631,6 @@
  # CONFIG_INPUT_EVBUG is not set
  
  #
@@ -1418,7 +1440,7 @@
  # Input Device Drivers
  #
  CONFIG_INPUT_KEYBOARD=y
-@@ -649,6 +647,17 @@
+@@ -649,6 +648,16 @@
  # CONFIG_INPUT_MISC is not set
  
  #
@@ -1430,7 +1452,6 @@
 +CONFIG_SERIO_LIBPS2=m
 +# CONFIG_SERIO_RAW is not set
 +# CONFIG_GAMEPORT is not set
-+CONFIG_SOUND_GAMEPORT=y
 +
 +#
  # Character devices
@@ -1510,8 +1531,87 @@
  
  #
  # Sound
-@@ -794,6 +816,8 @@
+@@ -784,7 +806,77 @@
  #
+ # 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
++
++#
++# PCI devices
++#
++CONFIG_SND_AC97_CODEC=y
++# CONFIG_SND_ALI5451 is not set
++CONFIG_SND_AD1889=y
++# CONFIG_SND_AD1889_OPL3 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_TRIDENT is not set
++# CONFIG_SND_YMFPCI is not set
++# CONFIG_SND_ALS4000 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 +886,8 @@
+ #
  # USB support
  #
 +CONFIG_USB_ARCH_HAS_HCD=y
@@ -1519,7 +1619,7 @@
  CONFIG_USB=y
  CONFIG_USB_DEBUG=y
  
-@@ -804,14 +828,14 @@
+@@ -804,14 +898,14 @@
  # CONFIG_USB_BANDWIDTH is not set
  # CONFIG_USB_DYNAMIC_MINORS is not set
  # CONFIG_USB_OTG is not set
@@ -1536,7 +1636,7 @@
  # CONFIG_USB_UHCI_HCD is not set
  # CONFIG_USB_SL811_HCD is not set
  
-@@ -829,12 +853,11 @@
+@@ -829,12 +923,11 @@
  #
  CONFIG_USB_STORAGE=m
  # CONFIG_USB_STORAGE_DEBUG is not set
@@ -1550,7 +1650,7 @@
  CONFIG_USB_STORAGE_SDDR09=y
  CONFIG_USB_STORAGE_SDDR55=y
  CONFIG_USB_STORAGE_JUMPSHOT=y
-@@ -860,7 +883,6 @@
+@@ -860,7 +953,6 @@
  #
  CONFIG_USB_MDC800=m
  CONFIG_USB_MICROTEK=m
@@ -1558,7 +1658,7 @@
  
  #
  # USB Multimedia devices
-@@ -879,6 +901,7 @@
+@@ -879,6 +971,7 @@
  # CONFIG_USB_PEGASUS is not set
  # CONFIG_USB_RTL8150 is not set
  # CONFIG_USB_USBNET is not set
@@ -1566,7 +1666,7 @@
  
  #
  # USB port drivers
-@@ -894,7 +917,6 @@
+@@ -894,7 +987,6 @@
  #
  # CONFIG_USB_EMI62 is not set
  # CONFIG_USB_EMI26 is not set
@@ -1574,7 +1674,7 @@
  # CONFIG_USB_AUERSWALD is not set
  # CONFIG_USB_RIO500 is not set
  CONFIG_USB_LEGOTOWER=m
-@@ -903,6 +925,7 @@
+@@ -903,6 +995,7 @@
  # CONFIG_USB_CYTHERM is not set
  # CONFIG_USB_PHIDGETKIT is not set
  # CONFIG_USB_PHIDGETSERVO is not set
@@ -1582,7 +1682,7 @@
  # CONFIG_USB_TEST is not set
  
  #
-@@ -920,6 +943,15 @@
+@@ -920,6 +1013,15 @@
  # CONFIG_MMC is not set
  
  #
@@ -1598,7 +1698,7 @@
  # File systems
  #
  CONFIG_EXT2_FS=y
-@@ -930,7 +962,12 @@
+@@ -930,7 +1032,12 @@
  # CONFIG_JBD_DEBUG is not set
  # CONFIG_REISERFS_FS is not set
  # CONFIG_JFS_FS is not set
@@ -1611,7 +1711,7 @@
  # CONFIG_XFS_RT is not set
  # CONFIG_XFS_QUOTA is not set
  # CONFIG_XFS_SECURITY is not set
-@@ -1074,13 +1111,18 @@
+@@ -1074,13 +1181,18 @@
  #
  # Kernel hacking
  #
@@ -1630,7 +1730,7 @@
  
  #
  # Security options
-@@ -1100,6 +1142,7 @@
+@@ -1100,6 +1212,7 @@
  CONFIG_CRYPTO_SHA256=m
  # CONFIG_CRYPTO_SHA512 is not set
  # CONFIG_CRYPTO_WP512 is not set
@@ -1638,7 +1738,7 @@
  CONFIG_CRYPTO_DES=m
  CONFIG_CRYPTO_BLOWFISH=m
  CONFIG_CRYPTO_TWOFISH=m
-@@ -1117,6 +1160,10 @@
+@@ -1117,6 +1230,10 @@
  CONFIG_CRYPTO_TEST=m
  
  #
@@ -1649,10 +1749,1557 @@
  # Library routines
  #
  CONFIG_CRC_CCITT=m
-Index: linux-2.6-2.6.12/arch/parisc/kernel/entry.S
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/entry.S	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/entry.S	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/defconfig linux-2.6.13/arch/parisc/defconfig
+--- linux-2.6.13.org/arch/parisc/defconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/defconfig	2005-09-25 12:34:39.000000000 -0400
+@@ -1,38 +1,56 @@
+ #
+ # Automatically generated make config: don't edit
++# Linux kernel version: 2.6.13-pa4
++# Tue Sep 13 12:07:51 2005
+ #
+ CONFIG_PARISC=y
+ CONFIG_MMU=y
+ CONFIG_STACK_GROWSUP=y
+ CONFIG_RWSEM_GENERIC_SPINLOCK=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++# CONFIG_GENERIC_ISA_DMA is not set
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_GENERIC_IRQ_PROBE=y
++# CONFIG_ISA_DMA_API is not set
+ 
+ #
+ # 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_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_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,16 @@
+ 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_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_PREEMPT is not set
+ # CONFIG_HPUX is not set
+ 
+@@ -66,13 +90,29 @@
+ 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,12 +121,84 @@
+ # 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_IP_TCPDIAG=y
++CONFIG_IP_TCPDIAG_IPV6=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
++
++#
++# 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
++
++#
+ # 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
+ 
+ #
+@@ -99,12 +211,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
+ 
+ #
+@@ -120,12 +230,27 @@
+ # 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_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
++# CONFIG_ATA_OVER_ETH is not set
+ 
+ #
+ # ATA/ATAPI/MFM/RLL support
+@@ -147,53 +272,57 @@
+ 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
++
++#
+ # 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_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 +331,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 +347,19 @@
+ 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
+ 
+ #
+ # IEEE 1394 (FireWire) support
+@@ -238,80 +372,18 @@
+ # CONFIG_I2O is not set
+ 
+ #
+-# Macintosh device drivers
+-#
+-
+-#
+-# Networking support
++# Network device 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
+-#
+-# 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
+ 
+ #
+ # Ethernet (10 or 100Mbit)
+@@ -365,26 +437,30 @@
+ #
+ # 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_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 +475,29 @@
+ #
+ # 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_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 +527,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 +605,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 +624,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 +632,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,15 +641,30 @@
+ #
+ # 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
++# CONFIG_I2C_SENSOR is not set
++
++#
++# Dallas's 1-wire bus
++#
++# CONFIG_W1 is not set
++
++#
++# Hardware Monitoring support
++#
++CONFIG_HWMON=y
++# CONFIG_HWMON_DEBUG_CHIP is not set
+ 
+ #
+ # Misc devices
+@@ -593,34 +684,44 @@
+ # 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_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 +730,7 @@
+ # Logo configuration
+ #
+ # CONFIG_LOGO is not set
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+ 
+ #
+ # Sound
+@@ -638,17 +740,93 @@
+ #
+ # 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
++
++#
++# PCI devices
++#
++CONFIG_SND_AC97_CODEC=y
++# CONFIG_SND_ALI5451 is not set
++CONFIG_SND_AD1889=y
++# CONFIG_SND_AD1889_OPL3 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_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,13 +836,20 @@
+ # 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
+@@ -674,10 +859,14 @@
+ # 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 +877,21 @@
+ # 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_XPAD is not set
++# CONFIG_USB_ATI_REMOTE is not set
++# CONFIG_USB_KEYSPAN_REMOTE 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 +903,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 +928,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,20 +950,42 @@
+ # 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
++
++#
++# XFS support
++#
+ # 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
+ 
+@@ -773,7 +1000,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,9 +1009,10 @@
+ #
+ CONFIG_PROC_FS=y
+ CONFIG_PROC_KCORE=y
+-# CONFIG_DEVFS_FS is not set
++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
+ 
+@@ -809,18 +1038,22 @@
+ #
+ 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
+@@ -861,6 +1094,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 +1119,23 @@
+ #
+ # 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_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 +1149,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 +1158,22 @@
+ # 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_CRC32=y
++# CONFIG_LIBCRC32C is not set
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/cache.c linux-2.6.13/arch/parisc/kernel/cache.c
+--- linux-2.6.13.org/arch/parisc/kernel/cache.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/cache.c	2005-09-25 12:34:39.000000000 -0400
+@@ -27,6 +27,7 @@
+ #include <asm/page.h>
+ #include <asm/pgalloc.h>
+ #include <asm/processor.h>
++#include <asm/sections.h>
+ 
+ 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 -Nur linux-2.6.13.org/arch/parisc/kernel/drivers.c linux-2.6.13/arch/parisc/kernel/drivers.c
+--- linux-2.6.13.org/arch/parisc/kernel/drivers.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/drivers.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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);
+ 
+-#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);
++}
+ 
+ /**
+- * 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));
+-	}
+ 
+-	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);
+ }
+ 
+ /**
+@@ -105,12 +120,6 @@
+ 	return 0;
+ }
+ 
+-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 @@
+ 
+ 	rc = pa_drv->probe(pa_dev);
+ 
+-	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);
+ 
+ 	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)
+ {
+-	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;
+ }
+ 
+ 
+@@ -206,14 +231,34 @@
+ }
+ EXPORT_SYMBOL(unregister_parisc_driver);
+ 
+-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;
+ }
+ 
+ /**
+@@ -387,6 +432,23 @@
+ 	return dev;
+ }
+ 
++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 struct parisc_device *create_parisc_device(struct hardware_path *modpath)
+@@ -439,10 +499,8 @@
+ 
+ 	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;
+ 	}
+ 
+@@ -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));
+ 	}
+ 
++	/* 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;
+ }
+ 
+@@ -555,6 +628,33 @@
+ 	return (curr->hw_path == id);
+ }
+ 
++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,
++	};
+ 
+-	return NULL;
++	device_for_each_child(parent, &recurse_data, descend_children);
++	return d.dev;
+ }
+ 
+ /**
+@@ -636,7 +730,7 @@
+         ((dev->id.hw_type == HPHW_IOA) || (dev->id.hw_type == HPHW_BCPORT))
+ 
+ #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;
+ 
+-	if(!BUS_CONVERTER(dev) || IS_LOWER_PORT(dev))
++	if (!BUS_CONVERTER(dev) || IS_LOWER_PORT(dev))
+ 		return;
+ 
+-	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 @@
+ 
+ 	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);
+ 
+ 	if (dev->num_addrs) {
+@@ -753,13 +847,20 @@
+ 	get_device(&root);
+ }
+ 
++
++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
+  */
+ void print_parisc_devices(void)
+ {
+-	struct parisc_device *dev;
+-	for_each_padev(dev) {
+-		print_parisc_device(dev);
+-	}
++	for_each_padev(print_one_device, NULL);
+ }
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/entry.S linux-2.6.13/arch/parisc/kernel/entry.S
+--- linux-2.6.13.org/arch/parisc/kernel/entry.S	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/entry.S	2005-09-25 12:34:39.000000000 -0400
 @@ -30,14 +30,14 @@
   *  - save registers to kernel stack and handle in assembly or C */
  
@@ -1916,7 +3563,23 @@
  	ldo	-16(%r30),%r29		/* Reference param save area */
  #endif
  	BL	sys_execve, %r2
-@@ -888,9 +896,6 @@
+@@ -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].
  	 *
@@ -1926,7 +3589,7 @@
  	 */
  
  	.align 4096
-@@ -911,7 +916,7 @@
+@@ -911,7 +918,7 @@
  	STREG	%r19,PT_IAOQ1(%r16)
  	LDREG   PT_PSW(%r16),%r19
  	load32	USER_PSW_MASK,%r1
@@ -1935,7 +3598,7 @@
  	load32	USER_PSW_HI_MASK,%r20
  	depd    %r20,31,32,%r1
  #endif
-@@ -955,7 +960,7 @@
+@@ -955,7 +962,7 @@
  	/* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) amount
  	** irq_stat[] is defined using ____cacheline_aligned.
  	*/
@@ -1944,7 +3607,7 @@
  	shld	%r1, 6, %r20
  #else
  	shlw	%r1, 5, %r20
-@@ -985,24 +990,19 @@
+@@ -985,24 +992,19 @@
  	rest_fp         %r1
  	rest_general    %r29
  
@@ -1977,7 +3640,7 @@
  	rest_stack
  
  	rfi
-@@ -1017,8 +1017,8 @@
+@@ -1017,8 +1019,8 @@
  
  	.import do_softirq,code
  intr_do_softirq:
@@ -1988,7 +3651,7 @@
  	ldo	-16(%r30),%r29		/* Reference param save area */
  #else
  	nop
-@@ -1036,12 +1036,17 @@
+@@ -1036,12 +1038,17 @@
  	CMPIB= 0,%r20,intr_restore /* backward */
  	nop
  
@@ -2007,7 +3670,7 @@
  	ldo	R%intr_check_sig(%r2), %r2
  
  
-@@ -1064,7 +1069,7 @@
+@@ -1064,7 +1071,7 @@
  
  	copy	%r0, %r24			/* unsigned long in_syscall */
  	copy	%r16, %r25			/* struct pt_regs *regs */
@@ -2016,7 +3679,7 @@
  	ldo	-16(%r30),%r29			/* Reference param save area */
  #endif
  
-@@ -1088,7 +1093,7 @@
+@@ -1088,7 +1095,7 @@
  	mfctl	%cr31,%r1
  	copy	%r30,%r17
  	/* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/
@@ -2025,7 +3688,7 @@
  	depdi	0,63,15,%r17
  #else
  	depi	0,31,15,%r17
-@@ -1115,7 +1120,7 @@
+@@ -1115,7 +1122,7 @@
  
  	ldil	L%intr_return, %r2
  
@@ -2034,7 +3697,7 @@
  	ldo	-16(%r30),%r29	/* Reference param save area */
  #endif
  
-@@ -1153,15 +1158,17 @@
+@@ -1153,15 +1160,17 @@
  
  	CMPIB=,n        6,%r26,skip_save_ior
  
@@ -2054,7 +3717,7 @@
  	 */
  	extrd,u,*<>     %r8,PSW_W_BIT,1,%r0
  	depdi           0,1,2,%r17
-@@ -1192,7 +1199,7 @@
+@@ -1192,7 +1201,7 @@
  	loadgp
  
  	copy		%r29, %r25	/* arg1 is pt_regs */
@@ -2063,7 +3726,7 @@
  	ldo		-16(%r30),%r29	/* Reference param save area */
  #endif
  
-@@ -1230,7 +1237,7 @@
+@@ -1230,7 +1239,7 @@
  	spc  = r24	/* space for which the trap occured */
  	ptp = r25	/* page directory/page table pointer */
  
@@ -2072,7 +3735,7 @@
  
  dtlb_miss_20w:
  	space_adjust	spc,va,t0
-@@ -1487,10 +1494,10 @@
+@@ -1487,10 +1496,10 @@
  	add,l           %r1,%r24,%r1           /* doesn't affect c/b bits */
  
  nadtlb_nullify:
@@ -2085,7 +3748,7 @@
  
  	rfir
  	nop
-@@ -1521,7 +1528,7 @@
+@@ -1521,7 +1530,7 @@
  	nop
  
  
@@ -2094,7 +3757,7 @@
  itlb_miss_20w:
  
  	/*
-@@ -1588,7 +1595,7 @@
+@@ -1588,7 +1597,7 @@
  
  #endif
  
@@ -2103,7 +3766,7 @@
  
  dbit_trap_20w:
  	space_adjust	spc,va,t0
-@@ -1797,7 +1804,7 @@
+@@ -1797,7 +1806,7 @@
  
  	STREG	%r2,-RP_OFFSET(%r30)
  	ldo	FRAME_SIZE(%r30),%r30
@@ -2112,7 +3775,7 @@
  	ldo	-16(%r30),%r29		/* Reference param save area */
  #endif
  
-@@ -1847,7 +1854,7 @@
+@@ -1847,10 +1856,11 @@
  
  	STREG	%r2,-RP_OFFSET(%r30)
  	ldo	FRAME_SIZE(%r30),%r30
@@ -2121,7 +3784,11 @@
  	ldo	-16(%r30),%r29		/* Reference param save area */
  #endif
  
-@@ -1869,7 +1876,7 @@
++	/* 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 +1879,7 @@
  
  	STREG	%r2,-RP_OFFSET(%r30)
  	ldo	FRAME_SIZE(%r30),%r30
@@ -2130,7 +3797,7 @@
  	ldo	-16(%r30),%r29		/* Reference param save area */
  #endif
  
-@@ -1897,10 +1904,10 @@
+@@ -1897,10 +1907,10 @@
  
  	STREG %r2,-RP_OFFSET(%r30)
  	ldo FRAME_SIZE(%r30),%r30
@@ -2143,7 +3810,7 @@
  	copy %r1,%arg0
  
  	ldo -FRAME_SIZE(%r30),%r30
-@@ -1923,7 +1930,7 @@
+@@ -1923,7 +1933,7 @@
  sys_execve_wrapper:
  	execve_wrapper sys_execve
  
@@ -2152,7 +3819,7 @@
  	.export sys32_execve_wrapper
  	.import sys32_execve
  
-@@ -1937,7 +1944,7 @@
+@@ -1937,7 +1947,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)
@@ -2161,7 +3828,7 @@
  	ldo	FRAME_SIZE(%r30), %r30
  	BL	sys_rt_sigreturn,%r2
  	ldo	-16(%r30),%r29		/* Reference param save area */
-@@ -1968,7 +1975,7 @@
+@@ -1968,7 +1978,7 @@
  	ldo	TASK_REGS(%r1),%r24	/* get pt regs */
  	LDREG	TASK_PT_GR30(%r24),%r24
  	STREG	%r2, -RP_OFFSET(%r30)
@@ -2170,7 +3837,7 @@
  	ldo	FRAME_SIZE(%r30), %r30
  	b,l	do_sigaltstack,%r2
  	ldo	-16(%r30),%r29		/* Reference param save area */
-@@ -1982,7 +1989,7 @@
+@@ -1982,7 +1992,7 @@
  	bv	%r0(%r2)
  	nop
  
@@ -2179,7 +3846,7 @@
  	.export sys32_sigaltstack_wrapper
  sys32_sigaltstack_wrapper:
  	/* Get the user stack pointer */
-@@ -2006,7 +2013,7 @@
+@@ -2006,7 +2016,7 @@
  	reg_save %r24
  
  	STREG	%r2, -RP_OFFSET(%r30)
@@ -2188,7 +3855,7 @@
  	ldo	FRAME_SIZE(%r30), %r30
  	b,l	sys_rt_sigsuspend,%r2
  	ldo	-16(%r30),%r29		/* Reference param save area */
-@@ -2079,7 +2086,7 @@
+@@ -2079,7 +2089,7 @@
  	ldw     TI_CPU-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r26 /* cpu # */
  
  	/* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) bits */
@@ -2197,7 +3864,7 @@
  	shld	%r26, 6, %r20
  #else
  	shlw	%r26, 5, %r20
-@@ -2144,7 +2151,7 @@
+@@ -2144,7 +2154,7 @@
  
  	depi	3,31,2,%r31			   /* ensure return to user mode. */
  
@@ -2206,7 +3873,7 @@
  	/* decide whether to reset the wide mode bit
  	 *
  	 * For a syscall, the W bit is stored in the lowest bit
-@@ -2229,7 +2236,7 @@
+@@ -2229,7 +2239,7 @@
  
  	.import do_softirq,code
  syscall_do_softirq:
@@ -2215,7 +3882,7 @@
  	nop
  	/* NOTE: We enable I-bit incase we schedule later,
  	 * and we might be going back to userspace if we were
-@@ -2240,7 +2247,7 @@
+@@ -2240,7 +2250,7 @@
  	.import schedule,code
  syscall_do_resched:
  	BL	schedule,%r2
@@ -2224,7 +3891,7 @@
  	ldo	-16(%r30),%r29		/* Reference param save area */
  #else
  	nop
-@@ -2260,7 +2267,7 @@
+@@ -2260,7 +2270,7 @@
  
  	ldi	1, %r24				/* unsigned long in_syscall */
  
@@ -2233,10 +3900,37 @@
  	ldo	-16(%r30),%r29			/* Reference param save area */
  #endif
  	BL	do_signal,%r2
-Index: linux-2.6-2.6.12/arch/parisc/kernel/head.S
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/head.S	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/head.S	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/firmware.c linux-2.6.13/arch/parisc/kernel/firmware.c
+--- linux-2.6.13.org/arch/parisc/kernel/firmware.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/firmware.c	2005-09-25 12:34:39.000000000 -0400
+@@ -83,15 +83,15 @@
+ int parisc_narrow_firmware = 1;
+ #endif
+ 
+-/* 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).
+  */
+ 
+ #ifdef __LP64__
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/head.S linux-2.6.13/arch/parisc/kernel/head.S
+--- linux-2.6.13.org/arch/parisc/kernel/head.S	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/head.S	2005-09-25 12:34:39.000000000 -0400
 @@ -12,7 +12,7 @@
   * Initial Version 04-23-1999 by Helge Deller <deller at gmx.de>
   */
@@ -2418,10 +4112,9 @@
  	.word 0
 -#endif /*!LP64*/
 +#endif /*!CONFIG_64BIT*/
-Index: linux-2.6-2.6.12/arch/parisc/kernel/ioctl32.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/ioctl32.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/ioctl32.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/ioctl32.c linux-2.6.13/arch/parisc/kernel/ioctl32.c
+--- linux-2.6.13.org/arch/parisc/kernel/ioctl32.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/ioctl32.c	2005-09-25 12:34:39.000000000 -0400
 @@ -104,12 +104,9 @@
  	}
  
@@ -2496,10 +4189,9 @@
  	return ret;
  }
  
-Index: linux-2.6-2.6.12/arch/parisc/kernel/pacache.S
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/pacache.S	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/pacache.S	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/pacache.S linux-2.6.13/arch/parisc/kernel/pacache.S
+--- linux-2.6.13.org/arch/parisc/kernel/pacache.S	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/pacache.S	2005-09-25 12:35:31.000000000 -0400
 @@ -26,7 +26,7 @@
   *       can be used.
   */
@@ -2783,8 +4475,55 @@
  	depdi,z		1, 63-PAGE_SHIFT,1, %r25
  #else
  	depwi,z		1, 31-PAGE_SHIFT,1, %r25
-@@ -988,11 +993,12 @@
+@@ -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
 -
@@ -2878,10 +4617,9 @@
  	rfi
  	nop
  
-Index: linux-2.6-2.6.12/arch/parisc/kernel/pci-dma.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/pci-dma.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/pci-dma.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/pci-dma.c linux-2.6.13/arch/parisc/kernel/pci-dma.c
+--- linux-2.6.13.org/arch/parisc/kernel/pci-dma.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/pci-dma.c	2005-09-25 12:34:39.000000000 -0400
 @@ -31,7 +31,7 @@
  #include <asm/page.h>	/* get_order */
  #include <asm/pgalloc.h>
@@ -2891,10 +4629,89 @@
  
  static struct proc_dir_entry * proc_gsc_root = NULL;
  static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length);
-Index: linux-2.6-2.6.12/arch/parisc/kernel/pci.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/pci.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/pci.c	2005-08-09 17:53:35.000000000 -0400
+@@ -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;
+ 
+-    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;
+ }
+ 
+ __initcall(pcxl_dma_init);
+@@ -545,16 +555,16 @@
+ 
+ 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));
+-	
++
++#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);
+ 	}
++#endif
+ 	strcat(buf, "\n");
+ 	return strlen(buf);
+ }
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/pci.c linux-2.6.13/arch/parisc/kernel/pci.c
+--- linux-2.6.13.org/arch/parisc/kernel/pci.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/pci.c	2005-09-25 12:34:39.000000000 -0400
 @@ -202,7 +202,8 @@
  pcibios_link_hba_resources( struct resource *hba_res, struct resource *r)
  {
@@ -2905,10 +4722,9 @@
  		r->parent = hba_res;
  
  		/* reverse link is harder *sigh*  */
-Index: linux-2.6-2.6.12/arch/parisc/kernel/pdc_cons.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/pdc_cons.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/pdc_cons.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/pdc_cons.c linux-2.6.13/arch/parisc/kernel/pdc_cons.c
+--- linux-2.6.13.org/arch/parisc/kernel/pdc_cons.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/pdc_cons.c	2005-09-25 12:34:39.000000000 -0400
 @@ -41,7 +41,7 @@
  
  /* Define EARLY_BOOTUP_DEBUG to debug kernel related boot problems. 
@@ -3015,10 +4831,9 @@
  	pdc_console_init_force();
  }
 -
-Index: linux-2.6-2.6.12/arch/parisc/kernel/perf.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/perf.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/perf.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/perf.c linux-2.6.13/arch/parisc/kernel/perf.c
+--- linux-2.6.13.org/arch/parisc/kernel/perf.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/perf.c	2005-09-25 12:34:39.000000000 -0400
 @@ -746,7 +746,8 @@
  	uint64_t *bptr;
  	uint32_t dwords;
@@ -3034,7 +4849,7 @@
  	}
  
 -	proc_hpa = cpu_device->hpa;
-+	runway = ioremap(cpu_device->hpa, 4096);
++	runway = ioremap(cpu_device->hpa.start, 4096);
  
  	/* Merge intrigue bits into Runway STATUS 0 */
 -	tmp64 = __raw_readq(proc_hpa + RUNWAY_STATUS) & 0xffecfffffffffffful;
@@ -3050,10 +4865,9 @@
  	}
  
  	return 0; 
-Index: linux-2.6-2.6.12/arch/parisc/kernel/process.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/process.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/process.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/process.c linux-2.6.13/arch/parisc/kernel/process.c
+--- linux-2.6.13.org/arch/parisc/kernel/process.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/process.c	2005-09-25 12:34:39.000000000 -0400
 @@ -9,7 +9,7 @@
   *    Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org>
   *    Copyright (C) 2000 Philipp Rumpf <prumpf with tux.org>
@@ -3063,10 +4877,102 @@
   *    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>
-Index: linux-2.6-2.6.12/arch/parisc/kernel/real2.S
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/real2.S	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/real2.S	2005-08-09 17:53:35.000000000 -0400
+@@ -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;
++
++	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 -Nur linux-2.6.13.org/arch/parisc/kernel/processor.c linux-2.6.13/arch/parisc/kernel/processor.c
+--- linux-2.6.13.org/arch/parisc/kernel/processor.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/processor.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/arch/parisc/kernel/real2.S linux-2.6.13/arch/parisc/kernel/real2.S
+--- linux-2.6.13.org/arch/parisc/kernel/real2.S	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/real2.S	2005-09-25 12:34:39.000000000 -0400
 @@ -7,8 +7,10 @@
   * Copyright (C) 2000 Hewlett Packard (Paul Bame bame at puffin.external.hp.com)
   *
@@ -3192,11 +5098,27 @@
  	bve (%r2)
  #else
  	bv %r0(%r2)
-Index: linux-2.6-2.6.12/arch/parisc/kernel/signal.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/signal.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/signal.c	2005-08-09 17:53:35.000000000 -0400
-@@ -637,6 +637,7 @@
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/signal.c linux-2.6.13/arch/parisc/kernel/signal.c
+--- linux-2.6.13.org/arch/parisc/kernel/signal.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/signal.c	2005-09-25 12:34:39.000000000 -0400
+@@ -490,15 +490,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;
+ }
+ 
+@@ -637,6 +629,7 @@
  			/* Stack is 64-byte aligned, and we only 
  			 * need to flush 1 cache line */
  			asm("fdc 0(%%sr3, %0)\n"
@@ -3204,10 +5126,9 @@
  			    "fic 0(%%sr3, %0)\n"
  			    "sync\n"
  			    : : "r"(regs->gr[30]));
-Index: linux-2.6-2.6.12/arch/parisc/kernel/smp.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/smp.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/smp.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/smp.c linux-2.6.13/arch/parisc/kernel/smp.c
+--- linux-2.6.13.org/arch/parisc/kernel/smp.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/smp.c	2005-09-25 12:34:39.000000000 -0400
 @@ -18,7 +18,7 @@
  */
  #undef ENTRY_SYS_CPUS	/* syscall support for iCOD-like functionality */
@@ -3217,10 +5138,9 @@
  
  #include <linux/types.h>
  #include <linux/spinlock.h>
-Index: linux-2.6-2.6.12/arch/parisc/kernel/syscall.S
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/syscall.S	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/syscall.S	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/syscall.S linux-2.6.13/arch/parisc/kernel/syscall.S
+--- linux-2.6.13.org/arch/parisc/kernel/syscall.S	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/syscall.S	2005-09-25 12:34:39.000000000 -0400
 @@ -4,8 +4,9 @@
   * System call entry code Copyright (c) Matthew Wilcox 1999 <willy at bofh.ai>
   * Licensed under the GNU GPL.
@@ -3268,6 +5188,15 @@
  	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
@@ -3393,10 +5322,9 @@
  	.align 4096
  	.export sys_call_table64
  .Lsys_call_table64:
-Index: linux-2.6-2.6.12/arch/parisc/kernel/syscall_table.S
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/syscall_table.S	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/syscall_table.S	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/syscall_table.S linux-2.6.13/arch/parisc/kernel/syscall_table.S
+--- linux-2.6.13.org/arch/parisc/kernel/syscall_table.S	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/syscall_table.S	2005-09-25 12:34:39.000000000 -0400
 @@ -35,7 +35,7 @@
  #undef ENTRY_UHOH
  #undef ENTRY_COMP
@@ -3425,10 +5353,9 @@
 +	ENTRY_SAME(keyctl)
  	/* Nothing yet */
  
-Index: linux-2.6-2.6.12/arch/parisc/kernel/time.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/time.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/time.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/time.c linux-2.6.13/arch/parisc/kernel/time.c
+--- linux-2.6.13.org/arch/parisc/kernel/time.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/time.c	2005-09-25 12:34:39.000000000 -0400
 @@ -89,14 +89,6 @@
  		}
  	}
@@ -3469,10 +5396,63 @@
  /*** converted from ia64 ***/
  /*
   * Return the number of micro-seconds that elapsed since the last
-Index: linux-2.6-2.6.12/arch/parisc/kernel/unaligned.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/kernel/unaligned.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/kernel/unaligned.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/kernel/traps.c linux-2.6.13/arch/parisc/kernel/traps.c
+--- linux-2.6.13.org/arch/parisc/kernel/traps.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/traps.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/arch/parisc/kernel/unaligned.c linux-2.6.13/arch/parisc/kernel/unaligned.c
+--- linux-2.6.13.org/arch/parisc/kernel/unaligned.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/kernel/unaligned.c	2005-09-25 12:34:39.000000000 -0400
 @@ -513,15 +513,18 @@
  	register int flop=0;	/* true if this is a flop */
  
@@ -3506,10 +5486,9 @@
  		if (!unaligned_enabled)
  			goto force_sigbus;
  	}
-Index: linux-2.6-2.6.12/arch/parisc/lib/memcpy.c
-===================================================================
---- linux-2.6-2.6.12.orig/arch/parisc/lib/memcpy.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/arch/parisc/lib/memcpy.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/arch/parisc/lib/memcpy.c linux-2.6.13/arch/parisc/lib/memcpy.c
+--- linux-2.6.13.org/arch/parisc/lib/memcpy.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/arch/parisc/lib/memcpy.c	2005-09-25 12:34:39.000000000 -0400
 @@ -339,6 +339,7 @@
  	pds = (double *)pcs;
  	pdd = (double *)pcd;
@@ -3526,10 +5505,9 @@
  
  	pws = (unsigned int *)pds;
  	pwd = (unsigned int *)pdd;
-Index: linux-2.6-2.6.12/drivers/block/Kconfig
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/block/Kconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/block/Kconfig	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/block/Kconfig linux-2.6.13/drivers/block/Kconfig
+--- linux-2.6.13.org/drivers/block/Kconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/block/Kconfig	2005-09-25 12:34:39.000000000 -0400
 @@ -6,7 +6,7 @@
  
  config BLK_DEV_FD
@@ -3539,11 +5517,10 @@
  	---help---
  	  If you want to use the floppy disk drive(s) of your PC under Linux,
  	  say Y. Information about this driver, especially important for IBM
-Index: linux-2.6-2.6.12/drivers/ide/Kconfig
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/ide/Kconfig	2005-08-09 17:50:50.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/ide/Kconfig	2005-08-09 17:53:35.000000000 -0400
-@@ -610,7 +610,7 @@
+diff -Nur linux-2.6.13.org/drivers/ide/Kconfig linux-2.6.13/drivers/ide/Kconfig
+--- linux-2.6.13.org/drivers/ide/Kconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/ide/Kconfig	2005-09-25 12:34:39.000000000 -0400
+@@ -616,7 +616,7 @@
  	tristate "NS87415 chipset support"
  	help
  	  This driver adds detection and support for the NS87415 chip
@@ -3552,10 +5529,21 @@
  
  	  Please read the comments at the top of <file:drivers/ide/pci/ns87415.c>.
  
-Index: linux-2.6-2.6.12/drivers/input/keyboard/hil_kbd.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/input/keyboard/hil_kbd.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/input/keyboard/hil_kbd.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/ide/ide-lib.c linux-2.6.13/drivers/ide/ide-lib.c
+--- linux-2.6.13.org/drivers/ide/ide-lib.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/ide/ide-lib.c	2005-09-25 12:34:39.000000000 -0400
+@@ -410,7 +410,7 @@
+ {
+ 	u64 addr = BLK_BOUNCE_HIGH;	/* dma64_addr_t */
+ 
+-	if (on && drive->media == ide_disk) {
++	if (on) {
+ 		if (!PCI_DMA_BUS_IS_PHYS)
+ 			addr = BLK_BOUNCE_ANY;
+ 		else if (HWIF(drive)->pci_dev)
+diff -Nur linux-2.6.13.org/drivers/input/keyboard/hil_kbd.c linux-2.6.13/drivers/input/keyboard/hil_kbd.c
+--- linux-2.6.13.org/drivers/input/keyboard/hil_kbd.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/input/keyboard/hil_kbd.c	2005-09-25 12:34:39.000000000 -0400
 @@ -204,7 +204,7 @@
  	hil_packet packet;
  	int idx;
@@ -3633,10 +5621,9 @@
  	.connect 	= hil_kbd_connect,
  	.disconnect 	= hil_kbd_disconnect,
  	.interrupt 	= hil_kbd_interrupt
-Index: linux-2.6-2.6.12/drivers/input/keyboard/hilkbd.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/input/keyboard/hilkbd.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/input/keyboard/hilkbd.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/input/keyboard/hilkbd.c linux-2.6.13/drivers/input/keyboard/hilkbd.c
+--- linux-2.6.13.org/drivers/input/keyboard/hilkbd.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/input/keyboard/hilkbd.c	2005-09-25 12:34:39.000000000 -0400
 @@ -22,7 +22,7 @@
  #include <linux/errno.h>
  #include <linux/input.h>
@@ -3646,10 +5633,23 @@
  #include <linux/hil.h>
  #include <linux/spinlock.h>
  
-Index: linux-2.6-2.6.12/drivers/input/mouse/hil_ptr.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/input/mouse/hil_ptr.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/input/mouse/hil_ptr.c	2005-08-09 17:53:35.000000000 -0400
+@@ -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;
+ 	
+diff -Nur linux-2.6.13.org/drivers/input/mouse/hil_ptr.c linux-2.6.13/drivers/input/mouse/hil_ptr.c
+--- linux-2.6.13.org/drivers/input/mouse/hil_ptr.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/input/mouse/hil_ptr.c	2005-09-25 12:34:39.000000000 -0400
 @@ -196,7 +196,7 @@
  	hil_packet packet;
  	int idx;
@@ -3733,10 +5733,69 @@
  };
  
  static int __init hil_ptr_init(void)
-Index: linux-2.6-2.6.12/drivers/input/serio/hil_mlc.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/input/serio/hil_mlc.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/input/serio/hil_mlc.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/input/serio/gscps2.c linux-2.6.13/drivers/input/serio/gscps2.c
+--- linux-2.6.13.org/drivers/input/serio/gscps2.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/input/serio/gscps2.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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);
++
+ 	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);
+diff -Nur linux-2.6.13.org/drivers/input/serio/hil_mlc.c linux-2.6.13/drivers/input/serio/hil_mlc.c
+--- linux-2.6.13.org/drivers/input/serio/hil_mlc.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/input/serio/hil_mlc.c	2005-09-25 12:34:39.000000000 -0400
 @@ -801,7 +801,8 @@
  	struct hil_mlc_serio_map *map;
  	struct hil_mlc *mlc;
@@ -3776,10 +5835,25 @@
  		mlc_serio->write		= hil_mlc_serio_write;
  		mlc_serio->open			= hil_mlc_serio_open;
  		mlc_serio->close		= hil_mlc_serio_close;
-Index: linux-2.6-2.6.12/drivers/isdn/hisax/Kconfig
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/isdn/hisax/Kconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/isdn/hisax/Kconfig	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/input/serio/hp_sdc.c linux-2.6.13/drivers/input/serio/hp_sdc.c
+--- linux-2.6.13.org/drivers/input/serio/hp_sdc.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/input/serio/hp_sdc.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/isdn/hisax/Kconfig linux-2.6.13/drivers/isdn/hisax/Kconfig
+--- linux-2.6.13.org/drivers/isdn/hisax/Kconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/isdn/hisax/Kconfig	2005-09-25 12:34:39.000000000 -0400
 @@ -110,7 +110,7 @@
  
  config HISAX_TELESPCI
@@ -3789,7 +5863,7 @@
  	help
  	  This enables HiSax support for the Teles PCI.
  	  See <file:Documentation/isdn/README.HiSax> on how to configure it.
-@@ -237,7 +237,7 @@
+@@ -238,7 +238,7 @@
  
  config HISAX_NETJET
  	bool "NETjet card"
@@ -3798,7 +5872,7 @@
  	help
  	  This enables HiSax support for the NetJet from Traverse
  	  Technologies.
-@@ -248,7 +248,7 @@
+@@ -249,7 +249,7 @@
  
  config HISAX_NETJET_U
  	bool "NETspider U card"
@@ -3807,7 +5881,7 @@
  	help
  	  This enables HiSax support for the Netspider U interface ISDN card
  	  from Traverse Technologies.
-@@ -316,7 +316,7 @@
+@@ -317,7 +317,7 @@
  
  config HISAX_HFC_PCI
  	bool "HFC PCI-Bus cards"
@@ -3816,7 +5890,7 @@
  	help
  	  This enables HiSax support for the HFC-S PCI 2BDS0 based cards.
  
-@@ -343,14 +343,14 @@
+@@ -344,14 +344,14 @@
  
  config HISAX_ENTERNOW_PCI
  	bool "Formula-n enter:now PCI card"
@@ -3833,10 +5907,9 @@
  	help
  	  This enables HiSax support for the AMD7930 chips on some SPARCs.
  	  This code is not finished yet.
-Index: linux-2.6-2.6.12/drivers/isdn/pcbit/Kconfig
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/isdn/pcbit/Kconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/isdn/pcbit/Kconfig	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/isdn/pcbit/Kconfig linux-2.6.13/drivers/isdn/pcbit/Kconfig
+--- linux-2.6.13.org/drivers/isdn/pcbit/Kconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/isdn/pcbit/Kconfig	2005-09-25 12:34:39.000000000 -0400
 @@ -3,7 +3,7 @@
  #
  config ISDN_DRV_PCBIT
@@ -3846,10 +5919,94 @@
  	help
  	  This enables support for the PCBIT ISDN-card.  This card is
  	  manufactured in Portugal by Octal.  For running this card,
-Index: linux-2.6-2.6.12/drivers/net/tulip/media.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/net/tulip/media.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/net/tulip/media.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/net/lasi_82596.c linux-2.6.13/drivers/net/lasi_82596.c
+--- linux-2.6.13.org/drivers/net/lasi_82596.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/net/lasi_82596.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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);
++#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;
++#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 -Nur linux-2.6.13.org/drivers/net/tulip/media.c linux-2.6.13/drivers/net/tulip/media.c
+--- linux-2.6.13.org/drivers/net/tulip/media.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/net/tulip/media.c	2005-09-25 12:34:39.000000000 -0400
 @@ -44,8 +44,10 @@
  
  /* MII transceiver control section.
@@ -3921,10 +6078,9 @@
  			tmp_info = get_u16(&misc_info[1]);
  			if (tmp_info)
  				tp->advertising[phy_num] = tmp_info | 1;
-Index: linux-2.6-2.6.12/drivers/net/tulip/tulip.h
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/net/tulip/tulip.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/net/tulip/tulip.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/net/tulip/tulip.h linux-2.6.13/drivers/net/tulip/tulip.h
+--- linux-2.6.13.org/drivers/net/tulip/tulip.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/net/tulip/tulip.h	2005-09-25 12:34:39.000000000 -0400
 @@ -475,8 +475,11 @@
  			udelay(10);
  
@@ -3939,10 +6095,9 @@
  	}
  }
  
-Index: linux-2.6-2.6.12/drivers/net/tulip/tulip_core.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/net/tulip/tulip_core.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/net/tulip/tulip_core.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/net/tulip/tulip_core.c linux-2.6.13/drivers/net/tulip/tulip_core.c
+--- linux-2.6.13.org/drivers/net/tulip/tulip_core.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/net/tulip/tulip_core.c	2005-09-25 12:34:39.000000000 -0400
 @@ -22,7 +22,7 @@
  #else
  #define DRV_VERSION	"1.1.13"
@@ -3961,10 +6116,36 @@
  	HAS_MII | HAS_MEDIA_TABLE | ALWAYS_CHECK_MII | HAS_ACPI | HAS_NWAY
  	| HAS_INTR_MITIGATION | HAS_PCI_MWI, t21142_timer },
  
-Index: linux-2.6-2.6.12/drivers/parisc/ccio-dma.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/parisc/ccio-dma.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/parisc/ccio-dma.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/parisc/asp.c linux-2.6.13/drivers/parisc/asp.c
+--- linux-2.6.13.org/drivers/parisc/asp.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/asp.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/parisc/ccio-dma.c linux-2.6.13/drivers/parisc/ccio-dma.c
+--- linux-2.6.13.org/drivers/parisc/ccio-dma.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/ccio-dma.c	2005-09-25 12:34:39.000000000 -0400
 @@ -100,9 +100,9 @@
  #define DBG_RUN_SG(x...)
  #endif
@@ -4045,6 +6226,15 @@
  		iovp += chain_size;
  		byte_cnt -= chain_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);
@@ -4089,7 +6279,7 @@
  	}
  	memset(ioc->res_map, 0, ioc->res_size);
  
-@@ -1366,44 +1363,52 @@
+@@ -1366,44 +1363,58 @@
  	** Initialize IOA hardware
  	*/
  	WRITE_U32(CCIO_CHAINID_MASK << ioc->chainid_shift, 
@@ -4144,7 +6334,14 @@
 +	 */
  	if (res->end + 1 == res->start)
  		return;
- 	result = request_resource(&iomem_resource, res);
+-	result = request_resource(&iomem_resource, res);
++
++	/* 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);
@@ -4153,7 +6350,7 @@
  	}
  }
  
-@@ -1414,9 +1419,8 @@
+@@ -1414,9 +1425,8 @@
  
  	sprintf(name, "GSC Bus [%d/]", ioc->hw_path);
  
@@ -4165,8 +6362,22 @@
  }
  
  static int new_ioc_area(struct resource *res, unsigned long size,
-@@ -1486,15 +1490,15 @@
+@@ -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));
@@ -4185,19 +6396,353 @@
  	} else {
  		return -EBUSY;
  	}
-@@ -1554,7 +1558,7 @@
+@@ -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, 4096);
++	ioc->ioc_regs = ioremap(dev->hpa.start, 4096);
  	ccio_ioc_init(ioc);
  	ccio_init_resources(ioc);
  	hppa_dma_ops = &ccio_ops;
-Index: linux-2.6-2.6.12/drivers/parisc/led.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/parisc/led.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/parisc/led.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/parisc/ccio-rm-dma.c linux-2.6.13/drivers/parisc/ccio-rm-dma.c
+--- linux-2.6.13.org/drivers/parisc/ccio-rm-dma.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/ccio-rm-dma.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/parisc/dino.c linux-2.6.13/drivers/parisc/dino.c
+--- linux-2.6.13.org/drivers/parisc/dino.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/dino.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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;
++
+ 	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 -Nur linux-2.6.13.org/drivers/parisc/eisa.c linux-2.6.13/drivers/parisc/eisa.c
+--- linux-2.6.13.org/drivers/parisc/eisa.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/eisa.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/parisc/gsc.c linux-2.6.13/drivers/parisc/gsc.c
+--- linux-2.6.13.org/drivers/parisc/gsc.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/gsc.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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;
++}
++
+ 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 -Nur linux-2.6.13.org/drivers/parisc/hppb.c linux-2.6.13/drivers/parisc/hppb.c
+--- linux-2.6.13.org/drivers/parisc/hppb.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/hppb.c	2005-09-25 12:34:39.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/parisc/lasi.c linux-2.6.13/drivers/parisc/lasi.c
+--- linux-2.6.13.org/drivers/parisc/lasi.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/lasi.c	2005-09-25 12:34:39.000000000 -0400
+@@ -176,7 +176,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;
+@@ -234,7 +234,7 @@
+ };
+ 
+ struct parisc_driver lasi_driver = {
+-	.name =		"Lasi",
++	.name =		"lasi",
+ 	.id_table =	lasi_tbl,
+ 	.probe =	lasi_init_chip,
+ };
+diff -Nur linux-2.6.13.org/drivers/parisc/lba_pci.c linux-2.6.13/drivers/parisc/lba_pci.c
+--- linux-2.6.13.org/drivers/parisc/lba_pci.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/lba_pci.c	2005-09-25 12:34:40.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/parisc/led.c linux-2.6.13/drivers/parisc/led.c
+--- linux-2.6.13.org/drivers/parisc/led.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/led.c	2005-09-25 12:34:40.000000000 -0400
 @@ -18,6 +18,9 @@
   * Changes:
   *      - Audit copy_from_user in led_proc_write.
@@ -4578,10 +7123,9 @@
  
  	return lcd_info.lcd_width;
  }
-Index: linux-2.6-2.6.12/drivers/parisc/pdc_stable.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/parisc/pdc_stable.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/parisc/pdc_stable.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/parisc/pdc_stable.c linux-2.6.13/drivers/parisc/pdc_stable.c
+--- linux-2.6.13.org/drivers/parisc/pdc_stable.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/pdc_stable.c	2005-09-25 12:34:40.000000000 -0400
 @@ -536,7 +536,7 @@
  
  	out += sprintf(out, "Memory tested: ");
@@ -4591,19 +7135,20 @@
  	else
  		out += sprintf(out, "All");
  	out += sprintf(out, "\n");
-Index: linux-2.6-2.6.12/drivers/parisc/sba_iommu.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/parisc/sba_iommu.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/parisc/sba_iommu.c	2005-08-09 17:53:35.000000000 -0400
-@@ -91,7 +91,7 @@
+diff -Nur linux-2.6.13.org/drivers/parisc/sba_iommu.c linux-2.6.13/drivers/parisc/sba_iommu.c
+--- linux-2.6.13.org/drivers/parisc/sba_iommu.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/sba_iommu.c	2005-09-25 12:34:40.000000000 -0400
+@@ -91,8 +91,8 @@
  #define DBG_RES(x...)
  #endif
  
 -#if defined(__LP64__) && !defined(CONFIG_PDC_NARROW)
-+#if defined(CONFIG_64BIT) && !defined(CONFIG_PDC_NARROW)
- /* "low end" PA8800 machines use ZX1 chipset */
+-/* "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! */
@@ -4705,7 +7250,41 @@
  
  	/* If this is not PA8700 (PCX-W2)
  	**	OR newer than ver 2.2
-@@ -1343,7 +1356,7 @@
+@@ -1322,19 +1335,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;
++}
++
+ /* 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 +1366,7 @@
  	u32 iova_space_mask;
  	u32 iova_space_size;
  	int iov_order, tcnfg;
@@ -4714,7 +7293,7 @@
  	int agp_found = 0;
  #endif
  	/*
-@@ -1380,7 +1393,7 @@
+@@ -1380,7 +1403,7 @@
  	DBG_INIT("%s() pdir %p size %x\n",
  			__FUNCTION__, ioc->pdir_base, ioc->pdir_size);
  
@@ -4723,7 +7302,7 @@
  	ioc->hint_shift_pdir = iov_order + PAGE_SHIFT;
  	ioc->hint_mask_pdir = ~(0x3 << (iov_order + PAGE_SHIFT));
  
-@@ -1404,7 +1417,7 @@
+@@ -1404,7 +1427,7 @@
  
  	WRITE_REG(ioc->imask, ioc->ioc_hpa + IOC_IMASK);
  
@@ -4732,7 +7311,7 @@
  	/*
  	** Setting the upper bits makes checking for bypass addresses
  	** a little faster later on.
-@@ -1437,7 +1450,7 @@
+@@ -1437,7 +1460,7 @@
  	*/
  	WRITE_REG(ioc->ibase | 31, ioc->ioc_hpa + IOC_PCOM);
  
@@ -4741,7 +7320,7 @@
  	/*
  	** 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 +1502,9 @@
+@@ -1489,11 +1512,9 @@
  	if (iova_space_size < (1 << (20 - PAGE_SHIFT))) {
  		iova_space_size = 1 << (20 - PAGE_SHIFT);
  	}
@@ -4753,7 +7332,7 @@
  
  	/*
  	** iova space must be log2() in size.
-@@ -1519,7 +1530,7 @@
+@@ -1519,7 +1540,7 @@
  	DBG_INIT("%s() pdir %p size %x\n",
  			__FUNCTION__, ioc->pdir_base, pdir_size);
  
@@ -4762,12 +7341,95 @@
  	/* FIXME : DMA HINTs not used */
  	ioc->hint_shift_pdir = iov_order + PAGE_SHIFT;
  	ioc->hint_mask_pdir = ~(0x3 << (iov_order + PAGE_SHIFT));
-Index: linux-2.6-2.6.12/drivers/pcmcia/Kconfig
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/pcmcia/Kconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/pcmcia/Kconfig	2005-08-09 17:53:35.000000000 -0400
-@@ -166,7 +166,11 @@
+@@ -1590,7 +1611,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 +1989,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 +2031,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 -Nur linux-2.6.13.org/drivers/parisc/superio.c linux-2.6.13/drivers/parisc/superio.c
+--- linux-2.6.13.org/drivers/parisc/superio.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/superio.c	2005-09-25 12:34:40.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/parisc/wax.c linux-2.6.13/drivers/parisc/wax.c
+--- linux-2.6.13.org/drivers/parisc/wax.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parisc/wax.c	2005-09-25 12:34:40.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/parport/parport_gsc.c linux-2.6.13/drivers/parport/parport_gsc.c
+--- linux-2.6.13.org/drivers/parport/parport_gsc.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/parport/parport_gsc.c	2005-09-25 12:34:40.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/pcmcia/Kconfig linux-2.6.13/drivers/pcmcia/Kconfig
+--- linux-2.6.13.org/drivers/pcmcia/Kconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/pcmcia/Kconfig	2005-09-25 12:34:40.000000000 -0400
+@@ -190,7 +190,11 @@
+ 
  config PCMCIA_PROBE
  	bool
 -	default y if ISA && !ARCH_SA1100 && !ARCH_CLPS711X
@@ -4779,10 +7441,9 @@
  
  config M32R_PCC
  	bool "M32R PCMCIA I/F"
-Index: linux-2.6-2.6.12/drivers/pcmcia/rsrc_nonstatic.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/pcmcia/rsrc_nonstatic.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/pcmcia/rsrc_nonstatic.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/pcmcia/rsrc_nonstatic.c linux-2.6.13/drivers/pcmcia/rsrc_nonstatic.c
+--- linux-2.6.13.org/drivers/pcmcia/rsrc_nonstatic.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/pcmcia/rsrc_nonstatic.c	2005-09-25 12:34:40.000000000 -0400
 @@ -43,7 +43,11 @@
  
  #define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0444)
@@ -4795,11 +7456,10 @@
  #ifdef CONFIG_PCMCIA_PROBE
  INT_MODULE_PARM(probe_io,	1);		/* IO port probe? */
  INT_MODULE_PARM(mem_limit,	0x10000);
-Index: linux-2.6-2.6.12/drivers/scsi/53c700.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/scsi/53c700.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/scsi/53c700.c	2005-08-09 17:53:35.000000000 -0400
-@@ -302,6 +302,7 @@
+diff -Nur linux-2.6.13.org/drivers/scsi/53c700.c linux-2.6.13/drivers/scsi/53c700.c
+--- linux-2.6.13.org/drivers/scsi/53c700.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/scsi/53c700.c	2005-09-25 12:34:40.000000000 -0400
+@@ -301,6 +301,7 @@
  	__u8 *memory;
  	__u32 *script;
  	struct Scsi_Host *host;
@@ -4807,7 +7467,7 @@
  	static int banner = 0;
  	int j;
  
-@@ -403,11 +404,11 @@
+@@ -401,11 +402,11 @@
  		printk(KERN_NOTICE "53c700: Version " NCR_700_VERSION " By James.Bottomley at HansenPartnership.com\n");
  		banner = 1;
  	}
@@ -4823,10 +7483,18 @@
  	/* reset the chip */
  	NCR_700_chip_reset(host);
  
-Index: linux-2.6-2.6.12/drivers/scsi/lasi700.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/scsi/lasi700.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/scsi/lasi700.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/scsi/lasi700.c linux-2.6.13/drivers/scsi/lasi700.c
+--- linux-2.6.13.org/drivers/scsi/lasi700.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/scsi/lasi700.c	2005-09-25 12:34:40.000000000 -0400
+@@ -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;
+ 
 @@ -125,8 +125,6 @@
  		hostdata->dmode_extra = DMODE_FC2;
  	}
@@ -4836,694 +7504,457 @@
  	host = NCR_700_detect(&lasi700_template, hostdata, &dev->dev);
  	if (!host)
  		goto out_kfree;
-Index: linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_defs.h
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/scsi/sym53c8xx_2/sym_defs.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_defs.h	2005-08-09 17:53:35.000000000 -0400
-@@ -40,7 +40,7 @@
- #ifndef SYM_DEFS_H
- #define SYM_DEFS_H
+@@ -168,7 +166,7 @@
+ }
  
--#define SYM_VERSION "2.2.0"
-+#define SYM_VERSION "2.2.1"
- #define SYM_DRIVER_NAME	"sym-" SYM_VERSION
+ 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 -Nur linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_fw.c linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_fw.c
+--- linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_fw.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_fw.c	2005-09-25 12:34:40.000000000 -0400
+@@ -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
+ 
  /*
-Index: linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_glue.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/scsi/sym53c8xx_2/sym_glue.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_glue.c	2005-08-09 17:53:35.000000000 -0400
-@@ -155,10 +155,11 @@
- 	base = tmp;
- 	if ((tmp & 0x7) == PCI_BASE_ADDRESS_MEM_TYPE_64) {
- 		pci_read_config_dword(pdev, PCI_BAR_OFFSET(index++), &tmp);
--		if (tmp > 0)
-+		if (tmp > 0) {
- 			dev_err(&pdev->dev,
- 				"BAR %d is 64-bit, disabling\n", index - 1);
--		base = 0;
-+			base = 0;
-+		}
- 	}
+  *  Macros used for all firmwares.
+@@ -60,11 +56,7 @@
+ #define	SYM_FWA_SCR		sym_fw1a_scr
+ #define	SYM_FWB_SCR		sym_fw1b_scr
+ #define	SYM_FWZ_SCR		sym_fw1z_scr
+-#ifdef __FreeBSD__
+-#include <dev/sym/sym_fw1.h>
+-#else
+ #include "sym_fw1.h"
+-#endif
+ static struct sym_fwa_ofs sym_fw1a_ofs = {
+ 	SYM_GEN_FW_A(struct SYM_FWA_SCR)
+ };
+@@ -88,11 +80,7 @@
+ #define	SYM_FWA_SCR		sym_fw2a_scr
+ #define	SYM_FWB_SCR		sym_fw2b_scr
+ #define	SYM_FWZ_SCR		sym_fw2z_scr
+-#ifdef __FreeBSD__
+-#include <dev/sym/sym_fw2.h>
+-#else
+ #include "sym_fw2.h"
+-#endif
+ static struct sym_fwa_ofs sym_fw2a_ofs = {
+ 	SYM_GEN_FW_A(struct SYM_FWA_SCR)
+ };
+diff -Nur linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_glue.c linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_glue.c
+--- linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_glue.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_glue.c	2005-09-25 12:34:40.000000000 -0400
+@@ -563,10 +563,7 @@
+ 	/*
+ 	 *	activate this job.
+ 	 */
+-	if (lp)
+-		sym_start_next_ccbs(np, lp, 2);
+-	else
+-		sym_put_start_queue(np, cp);
++	sym_start_next_ccbs(np, lp, 2);
+ 	return 0;
  
- 	if ((base & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
-@@ -389,13 +390,20 @@
+ out_abort:
+@@ -981,15 +978,13 @@
+ 
+ static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
  {
- 	struct sym_tblmove *data = &cp->phys.data[SYM_CONF_MAX_SG-1];
- 	int segment;
-+	unsigned int len = cmd->request_bufflen;
+-	struct sym_hcb *np;
+-	struct sym_tcb *tp;
++	struct sym_hcb *np = sym_get_hcb(sdev->host);
++	struct sym_tcb *tp = &np->target[sdev->id];
++	struct sym_lcb *lp;
  
--	cp->data_len = cmd->request_bufflen;
+ 	if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN)
+ 		return -ENXIO;
+ 
+-	np = sym_get_hcb(sdev->host);
+-	tp = &np->target[sdev->id];
 -
--	if (cmd->request_bufflen) {
-+	if (len) {
- 		dma_addr_t baddr = map_scsi_single_data(np, cmd);
- 		if (baddr) {
--			sym_build_sge(np, data, baddr, cmd->request_bufflen);
-+			if (len & 1) {
-+				struct sym_tcb *tp = &np->target[cp->target];
-+				if (tp->head.wval & EWS) {
-+					len++;
-+					cp->odd_byte_adjustment++;
-+				}
-+			}
-+			cp->data_len = len;
-+			sym_build_sge(np, data, baddr, len);
- 			segment = 1;
- 		} else {
- 			segment = -2;
-@@ -418,6 +426,7 @@
- 		segment = sym_scatter_no_sglist(np, cp, cmd);
- 	else if ((use_sg = map_scsi_sg_data(np, cmd)) > 0) {
- 		struct scatterlist *scatter = (struct scatterlist *)cmd->buffer;
-+		struct sym_tcb *tp = &np->target[cp->target];
- 		struct sym_tblmove *data;
+ 	/*
+ 	 * 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 +1000,10 @@
+ 		return -ENXIO;
+ 	}
  
- 		if (use_sg > SYM_CONF_MAX_SG) {
-@@ -431,6 +440,11 @@
- 			dma_addr_t baddr = sg_dma_address(&scatter[segment]);
- 			unsigned int len = sg_dma_len(&scatter[segment]);
- 
-+			if ((len & 1) && (tp->head.wval & EWS)) {
-+				len++;
-+				cp->odd_byte_adjustment++;
-+			}
++	lp = sym_alloc_lcb(np, sdev->id, sdev->lun);
++	if (!lp)
++		return -ENOMEM;
 +
- 			sym_build_sge(np, &data[segment], baddr, len);
- 			cp->data_len += len;
- 		}
-@@ -456,10 +470,8 @@
- 	 *  Minimal checkings, so that we will not 
- 	 *  go outside our tables.
- 	 */
--	if (sdev->id == np->myaddr ||
--	    sdev->id >= SYM_CONF_MAX_TARGET ||
--	    sdev->lun >= SYM_CONF_MAX_LUN) {
--		sym_xpt_done2(np, cmd, CAM_DEV_NOT_THERE);
-+	if (sdev->id == np->myaddr) {
-+		sym_xpt_done2(np, cmd, DID_NO_CONNECT);
- 		return 0;
- 	}
+ 	tp->starget = sdev->sdev_target;
+ 	return 0;
+ }
+@@ -1012,22 +1011,14 @@
+ /*
+  * Linux entry point for device queue sizing.
+  */
+-static int sym53c8xx_slave_configure(struct scsi_device *device)
++static int sym53c8xx_slave_configure(struct scsi_device *sdev)
+ {
+-	struct sym_hcb *np = sym_get_hcb(device->host);
+-	struct sym_tcb *tp = &np->target[device->id];
+-	struct sym_lcb *lp;
++	struct sym_hcb *np = sym_get_hcb(sdev->host);
++	struct sym_tcb *tp = &np->target[sdev->id];
++	struct sym_lcb *lp = sym_lp(tp, sdev->lun);
+ 	int reqtags, depth_to_use;
  
-@@ -469,28 +481,6 @@
- 	tp = &np->target[sdev->id];
- 
  	/*
--	 *  Complete the 1st INQUIRY command with error 
--	 *  condition if the device is flagged NOSCAN 
--	 *  at BOOT in the NVRAM. This may speed up 
--	 *  the boot and maintain coherency with BIOS 
--	 *  device numbering. Clearing the flag allows 
--	 *  user to rescan skipped devices later.
--	 *  We also return error for devices not flagged 
--	 *  for SCAN LUNS in the NVRAM since some mono-lun 
--	 *  devices behave badly when asked for some non 
--	 *  zero LUN. Btw, this is an absolute hack.:-)
+-	 *  Allocate the LCB if not yet.
+-	 *  If it fail, we may well be in the sh*t. :)
 -	 */
--	if (cmd->cmnd[0] == 0x12 || cmd->cmnd[0] == 0x0) {
--		if ((tp->usrflags & SYM_SCAN_BOOT_DISABLED) ||
--		    ((tp->usrflags & SYM_SCAN_LUNS_DISABLED) && 
--		     sdev->lun != 0)) {
--			tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED;
--			sym_xpt_done2(np, cmd, CAM_DEV_NOT_THERE);
--			return 0;
--		}
--	}
+-	lp = sym_alloc_lcb(np, device->id, device->lun);
+-	if (!lp)
+-		return -ENOMEM;
 -
 -	/*
- 	 *  Select tagged/untagged.
+ 	 *  Get user flags.
  	 */
- 	lp = sym_lp(tp, sdev->lun);
-@@ -511,23 +501,10 @@
-  */
- static inline int sym_setup_cdb(struct sym_hcb *np, struct scsi_cmnd *cmd, struct sym_ccb *cp)
- {
--	u32	cmd_ba;
--	int	cmd_len;
--
--	/*
--	 *  CDB is 16 bytes max.
--	 */
--	if (cmd->cmd_len > sizeof(cp->cdb_buf)) {
--		sym_set_cam_status(cp->cmd, CAM_REQ_INVALID);
--		return -1;
--	}
--
- 	memcpy(cp->cdb_buf, cmd->cmnd, cmd->cmd_len);
--	cmd_ba  = CCB_BA (cp, cdb_buf[0]);
--	cmd_len = cmd->cmd_len;
+ 	lp->curr_flags = lp->user_flags;
+@@ -1038,10 +1029,10 @@
+ 	 *  Use at least 2.
+ 	 *  Donnot use more than our maximum.
+ 	 */
+-	reqtags = device_queue_depth(np, device->id, device->lun);
++	reqtags = device_queue_depth(np, sdev->id, sdev->lun);
+ 	if (reqtags > tp->usrtags)
+ 		reqtags = tp->usrtags;
+-	if (!device->tagged_supported)
++	if (!sdev->tagged_supported)
+ 		reqtags = 0;
+ #if 1 /* Avoid to locally queue commands for no good reasons */
+ 	if (reqtags > SYM_CONF_MAX_TAG)
+@@ -1050,19 +1041,30 @@
+ #else
+ 	depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2);
+ #endif
+-	scsi_adjust_queue_depth(device,
+-				(device->tagged_supported ?
++	scsi_adjust_queue_depth(sdev,
++				(sdev->tagged_supported ?
+ 				 MSG_SIMPLE_TAG : 0),
+ 				depth_to_use);
+ 	lp->s.scdev_depth = depth_to_use;
+-	sym_tune_dev_queuing(tp, device->lun, reqtags);
++	sym_tune_dev_queuing(tp, sdev->lun, reqtags);
  
--	cp->phys.cmd.addr	= cpu_to_scr(cmd_ba);
--	cp->phys.cmd.size	= cpu_to_scr(cmd_len);
-+	cp->phys.cmd.addr = CCB_BA(cp, cdb_buf[0]);
-+	cp->phys.cmd.size = cpu_to_scr(cmd->cmd_len);
+-	if (!spi_initial_dv(device->sdev_target))
+-		spi_dv_device(device);
++	if (!spi_initial_dv(sdev->sdev_target))
++		spi_dv_device(sdev);
  
  	return 0;
  }
-@@ -554,10 +531,7 @@
- 	if (dir != DMA_NONE) {
- 		cp->segments = sym_scatter(np, cp, cmd);
- 		if (cp->segments < 0) {
--			if (cp->segments == -2)
--				sym_set_cam_status(cmd, CAM_RESRC_UNAVAIL);
--			else
--				sym_set_cam_status(cmd, CAM_REQ_TOO_BIG);
-+			sym_set_cam_status(cmd, DID_ERROR);
- 			goto out_abort;
- 		}
- 	} else {
-@@ -855,7 +829,7 @@
- 	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, CAM_REQ_ABORTED);
-+		sym_xpt_done2(np, cmd, DID_ABORT);
  
- 	/* Wait for completion with locks released, as required by kernel */
- 	if (to_do == SYM_EH_DO_WAIT) {
-@@ -921,7 +895,7 @@
- 	lp->s.reqtags     = reqtags;
- 
- 	if (reqtags != oldtags) {
--		dev_info(&tp->sdev->sdev_target->dev,
-+		dev_info(&tp->starget->dev,
- 		         "tagged command queuing %s, command queue depth %d.\n",
- 		          lp->s.reqtags ? "enabled" : "disabled",
-  		          lp->started_limit);
-@@ -981,22 +955,34 @@
- 	return DEF_DEPTH;
- }
- 
--static int sym53c8xx_slave_alloc(struct scsi_device *device)
-+static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
- {
--	struct sym_hcb *np = sym_get_hcb(device->host);
--	struct sym_tcb *tp = &np->target[device->id];
--	if (!tp->sdev)
--		tp->sdev = device;
-+	struct sym_hcb *np;
-+	struct sym_tcb *tp;
- 
--	return 0;
--}
-+	if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN)
-+		return -ENXIO;
- 
--static void sym53c8xx_slave_destroy(struct scsi_device *device)
--{
--	struct sym_hcb *np = sym_get_hcb(device->host);
--	struct sym_tcb *tp = &np->target[device->id];
--	if (tp->sdev == device)
--		tp->sdev = NULL;
-+	np = sym_get_hcb(sdev->host);
-+	tp = &np->target[sdev->id];
++static void sym53c8xx_slave_destroy(struct scsi_device *sdev)
++{
++	struct sym_hcb *np = sym_get_hcb(sdev->host);
++	struct sym_lcb *lp = sym_lp(&np->target[sdev->id], sdev->lun);
 +
-+	/*
-+	 * Fail the device init if the device is flagged NOSCAN at BOOT in
-+	 * the NVRAM.  This may speed up boot and maintain coherency with
-+	 * BIOS device numbering.  Clearing the flag allows the user to
-+	 * rescan skipped devices later.  We also return an error for
-+	 * devices not flagged for SCAN LUNS in the NVRAM since some single
-+	 * lun devices behave badly when asked for a non zero LUN.
-+	 */
++	if (lp->itlq_tbl)
++		sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK * 4, "ITLQ_TBL");
++	kfree(lp->cb_tags);
++	sym_mfree_dma(lp, sizeof(*lp), "LCB");
++}
 +
-+	if ((tp->usrflags & SYM_SCAN_BOOT_DISABLED) ||
-+	    ((tp->usrflags & SYM_SCAN_LUNS_DISABLED) && sdev->lun != 0)) {
-+		tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED;
-+		return -ENXIO;
-+	}
-+
-+	tp->starget = sdev->sdev_target;
-+	return 0;
- }
- 
  /*
-@@ -1897,6 +1883,7 @@
- 	 */
- 	printk("%s: resetting chip\n", sym_name(np));
- 	OUTB(np, nc_istat, SRST);
-+	INB(np, nc_mbox1);
- 	udelay(10);
- 	OUTB(np, nc_istat, 0);
- 
-@@ -1915,7 +1902,6 @@
+  *  Linux entry point for info() function
+  */
+@@ -1926,6 +1928,7 @@
  	.queuecommand		= sym53c8xx_queue_command,
  	.slave_alloc		= sym53c8xx_slave_alloc,
  	.slave_configure	= sym53c8xx_slave_configure,
--	.slave_destroy		= sym53c8xx_slave_destroy,
++	.slave_destroy		= sym53c8xx_slave_destroy,
  	.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,
-Index: linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_glue.h
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/scsi/sym53c8xx_2/sym_glue.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_glue.h	2005-08-09 17:53:35.000000000 -0400
-@@ -142,33 +142,6 @@
- #define scr_to_cpu(dw)	le32_to_cpu(dw)
+diff -Nur linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_glue.h linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_glue.h
+--- linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_glue.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_glue.h	2005-09-25 12:34:40.000000000 -0400
+@@ -268,6 +268,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);
+ void sym_log_bus_error(struct sym_hcb *np);
+-void sym_sniff_inquiry(struct sym_hcb *np, struct scsi_cmnd *cmd, int resid);
  
+ #endif /* SYM_GLUE_H */
+diff -Nur linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_hipd.c linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_hipd.c
+--- linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_hipd.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_hipd.c	2005-09-25 12:34:40.000000000 -0400
+@@ -1519,7 +1519,7 @@
  /*
-- *  Remap some status field values.
-- */
--#define CAM_REQ_CMP		DID_OK
--#define CAM_SEL_TIMEOUT		DID_NO_CONNECT
--#define CAM_CMD_TIMEOUT		DID_TIME_OUT
--#define CAM_REQ_ABORTED		DID_ABORT
--#define CAM_UNCOR_PARITY	DID_PARITY
--#define CAM_SCSI_BUS_RESET	DID_RESET	
--#define CAM_REQUEUE_REQ		DID_SOFT_ERROR
--#define	CAM_UNEXP_BUSFREE	DID_ERROR
--#define	CAM_SCSI_BUSY		DID_BUS_BUSY
--
--#define	CAM_DEV_NOT_THERE	DID_NO_CONNECT
--#define	CAM_REQ_INVALID		DID_ERROR
--#define	CAM_REQ_TOO_BIG		DID_ERROR
--
--#define	CAM_RESRC_UNAVAIL	DID_ERROR
--
--/*
-- *  Remap data direction values.
-- */
--#define CAM_DIR_NONE		DMA_NONE
--#define CAM_DIR_IN		DMA_FROM_DEVICE
--#define CAM_DIR_OUT		DMA_TO_DEVICE
--#define CAM_DIR_UNKNOWN		DMA_BIDIRECTIONAL
--
--/*
-  *  These ones are used as return code from 
-  *  error recovery handlers under Linux.
+  *  Insert a job into the start queue.
   */
-Index: linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_hipd.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/scsi/sym53c8xx_2/sym_hipd.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_hipd.c	2005-08-09 17:53:35.000000000 -0400
-@@ -97,7 +97,7 @@
- static void sym_print_nego_msg(struct sym_hcb *np, int target, char *label, u_char *msg)
+-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)
  {
- 	struct sym_tcb *tp = &np->target[target];
--	dev_info(&tp->sdev->sdev_target->dev, "%s: ", label);
-+	dev_info(&tp->starget->dev, "%s: ", label);
+ 	u_short	qidx;
  
- 	sym_show_msg(msg);
- 	printf(".\n");
-@@ -149,8 +149,10 @@
- static void sym_chip_reset (struct sym_hcb *np)
- {
- 	OUTB(np, nc_istat, SRST);
-+	INB(np, nc_mbox1);
- 	udelay(10);
- 	OUTB(np, nc_istat, 0);
-+	INB(np, nc_mbox1);
- 	udelay(2000);	/* For BUS MODE to settle */
- }
+@@ -4660,30 +4660,7 @@
+ 		goto out;
+ 	cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
  
-@@ -216,6 +218,7 @@
- 	OUTB(np, nc_stest3, TE);
- 	OUTB(np, nc_dcntl, (np->rv_dcntl & IRQM));
- 	OUTB(np, nc_scntl1, CRST);
-+	INB(np, nc_mbox1);
- 	udelay(200);
- 
- 	if (!SYM_SETUP_SCSI_BUS_CHECK)
-@@ -280,8 +283,10 @@
- 		if (!i)
- 			printf("%s: the chip cannot lock the frequency\n",
- 				sym_name(np));
--	} else
--		udelay((50+10));
-+	} else {
-+		INB(np, nc_mbox1);
-+		udelay(50+10);
-+	}
- 	OUTB(np, nc_stest3, HSC);		/* Halt the scsi clock	*/
- 	OUTB(np, nc_scntl3, scntl3);
- 	OUTB(np, nc_stest1, (DBLEN|DBLSEL));/* Select clock multiplier	*/
-@@ -1445,7 +1450,7 @@
- static int sym_prepare_nego(struct sym_hcb *np, struct sym_ccb *cp, u_char *msgptr)
- {
- 	struct sym_tcb *tp = &np->target[cp->target];
--	struct scsi_target *starget = tp->sdev->sdev_target;
-+	struct scsi_target *starget = tp->starget;
- 	struct sym_trans *goal = &tp->tgoal;
- 	int msglen = 0;
- 	int nego;
-@@ -1690,7 +1695,7 @@
- 		if (cam_status)
- 			sym_set_cam_status(cmd, cam_status);
- #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
--		if (sym_get_cam_status(cmd) == CAM_REQUEUE_REQ) {
-+		if (sym_get_cam_status(cmd) == DID_SOFT_ERROR) {
- 			struct sym_tcb *tp = &np->target[cp->target];
- 			struct sym_lcb *lp = sym_lp(tp, cp->lun);
- 			if (lp) {
-@@ -1791,12 +1796,13 @@
- 	/*
- 	 *  Wakeup all pending jobs.
- 	 */
--	sym_flush_busy_queue(np, CAM_SCSI_BUS_RESET);
-+	sym_flush_busy_queue(np, DID_RESET);
- 
- 	/*
- 	 *  Init chip.
- 	 */
- 	OUTB(np, nc_istat,  0x00);			/*  Remove Reset, abort */
-+	INB(np, nc_mbox1);
- 	udelay(2000); /* The 895 needs time for the bus mode to settle */
- 
- 	OUTB(np, nc_scntl0, np->rv_scntl0 | 0xc0);
-@@ -1905,6 +1911,7 @@
- 	if (np->features & (FE_ULTRA2|FE_ULTRA3)) {
- 		OUTONW(np, nc_sien, SBMC);
- 		if (reason == 0) {
-+			INB(np, nc_mbox1);
- 			mdelay(100);
- 			INW(np, nc_sist);
- 		}
-@@ -2074,7 +2081,7 @@
- static void sym_setwide(struct sym_hcb *np, int target, u_char wide)
- {
- 	struct sym_tcb *tp = &np->target[target];
--	struct scsi_target *starget = tp->sdev->sdev_target;
-+	struct scsi_target *starget = tp->starget;
- 
- 	if (spi_width(starget) == wide)
- 		return;
-@@ -2102,7 +2109,7 @@
-             u_char ofs, u_char per, u_char div, u_char fak)
- {
- 	struct sym_tcb *tp = &np->target[target];
--	struct scsi_target *starget = tp->sdev->sdev_target;
-+	struct scsi_target *starget = tp->starget;
- 	u_char wide = (tp->head.wval & EWS) ? BUS_16_BIT : BUS_8_BIT;
- 
- 	sym_settrans(np, target, 0, ofs, per, wide, div, fak);
-@@ -2129,7 +2136,7 @@
-              u_char per, u_char wide, u_char div, u_char fak)
- {
- 	struct sym_tcb *tp = &np->target[target];
--	struct scsi_target *starget = tp->sdev->sdev_target;
-+	struct scsi_target *starget = tp->starget;
- 
- 	sym_settrans(np, target, opts, ofs, per, wide, div, fak);
- 
-@@ -2944,7 +2951,7 @@
-  *  Dequeue from the START queue all CCBs that match 
-  *  a given target/lun/task condition (-1 means all),
-  *  and move them from the BUSY queue to the COMP queue 
-- *  with CAM_REQUEUE_REQ status condition.
-+ *  with DID_SOFT_ERROR status condition.
-  *  This function is used during error handling/recovery.
-  *  It is called with SCRIPTS not running.
-  */
-@@ -2974,7 +2981,7 @@
- 		if ((target == -1 || cp->target == target) &&
- 		    (lun    == -1 || cp->lun    == lun)    &&
- 		    (task   == -1 || cp->tag    == task)) {
--			sym_set_cam_status(cp->cmd, CAM_REQUEUE_REQ);
-+			sym_set_cam_status(cp->cmd, DID_SOFT_ERROR);
- 			sym_remque(&cp->link_ccbq);
- 			sym_insque_tail(&cp->link_ccbq, &np->comp_ccbq);
- 		}
-@@ -3093,13 +3100,13 @@
+-#ifndef SYM_OPT_HANDLE_DEVICE_QUEUEING
+-	/*
+-	 *  If the LCB is not yet available and the LUN
+-	 *  has been probed ok, try to allocate the LCB.
+-	 */
+-	if (!lp && sym_is_bit(tp->lun_map, ln)) {
+-		lp = sym_alloc_lcb(np, tn, ln);
+-		if (!lp)
+-			goto out_free;
+-	}
+-#endif
+-
+-	/*
+-	 *  If the LCB is not available here, then the 
+-	 *  logical unit is not yet discovered. For those 
+-	 *  ones only accept 1 SCSI IO per logical unit, 
+-	 *  since we cannot allow disconnections.
+-	 */
+-	if (!lp) {
+-		if (!sym_is_bit(tp->busy0_map, ln))
+-			sym_set_bit(tp->busy0_map, ln);
+-		else
+-			goto out_free;
+-	} else {
++	{
  		/*
- 		 *  Message table indirect structure.
+ 		 *  If we have been asked for a tagged command.
  		 */
--		cp->phys.smsg.addr	= cpu_to_scr(CCB_BA(cp, scsi_smsg2));
-+		cp->phys.smsg.addr	= CCB_BA(cp, scsi_smsg2);
- 		cp->phys.smsg.size	= cpu_to_scr(msglen);
- 
- 		/*
- 		 *  sense command
- 		 */
--		cp->phys.cmd.addr	= cpu_to_scr(CCB_BA(cp, sensecmd));
-+		cp->phys.cmd.addr	= CCB_BA(cp, sensecmd);
- 		cp->phys.cmd.size	= cpu_to_scr(6);
- 
- 		/*
-@@ -3116,7 +3123,7 @@
- 		 *  sense data
- 		 */
- 		memset(cp->sns_bbuf, 0, SYM_SNS_BBUF_LEN);
--		cp->phys.sense.addr	= cpu_to_scr(CCB_BA(cp, sns_bbuf));
-+		cp->phys.sense.addr	= CCB_BA(cp, sns_bbuf);
- 		cp->phys.sense.size	= cpu_to_scr(SYM_SNS_BBUF_LEN);
- 
- 		/*
-@@ -3198,7 +3205,7 @@
- 		sym_insque_tail(&cp->link_ccbq, &np->comp_ccbq);
- 
- 		/* Preserve the software timeout condition */
--		if (sym_get_cam_status(cmd) != CAM_CMD_TIMEOUT)
-+		if (sym_get_cam_status(cmd) != DID_TIME_OUT)
- 			sym_set_cam_status(cmd, cam_status);
- 		++i;
- #if 0
-@@ -3366,7 +3373,7 @@
- 		 *  Make sure at least our IO to abort has been dequeued.
- 		 */
- #ifndef SYM_OPT_HANDLE_DEVICE_QUEUEING
--		assert(i && sym_get_cam_status(cp->cmd) == CAM_REQUEUE_REQ);
-+		assert(i && sym_get_cam_status(cp->cmd) == DID_SOFT_ERROR);
- #else
- 		sym_remque(&cp->link_ccbq);
- 		sym_insque_tail(&cp->link_ccbq, &np->comp_ccbq);
-@@ -3375,9 +3382,9 @@
- 		 *  Keep track in cam status of the reason of the abort.
- 		 */
- 		if (cp->to_abort == 2)
--			sym_set_cam_status(cp->cmd, CAM_CMD_TIMEOUT);
-+			sym_set_cam_status(cp->cmd, DID_TIME_OUT);
- 		else
--			sym_set_cam_status(cp->cmd, CAM_REQ_ABORTED);
-+			sym_set_cam_status(cp->cmd, DID_ABORT);
- 
- 		/*
- 		 *  Complete with error everything that we have dequeued.
-@@ -3491,7 +3498,7 @@
- 		 *  conditions not due to timeout.
- 		 */
- 		if (cp->to_abort == 2)
--			sym_set_cam_status(cp->cmd, CAM_CMD_TIMEOUT);
-+			sym_set_cam_status(cp->cmd, DID_TIME_OUT);
- 		cp->to_abort = 0; /* We donnot expect to fail here */
- 		break;
- 
-@@ -3502,7 +3509,7 @@
- 	case SIR_ABORT_SENT:
- 		target = INB(np, nc_sdid) & 0xf;
- 		tp = &np->target[target];
--		starget = tp->sdev->sdev_target;
-+		starget = tp->starget;
- 		
- 		/*
- 		**  If we didn't abort anything, leave here.
-@@ -3551,7 +3558,7 @@
- 		 */
- 		i = (INL(np, nc_scratcha) - np->squeue_ba) / 4;
- 		sym_dequeue_from_squeue(np, i, target, lun, -1);
--		sym_clear_tasks(np, CAM_REQ_ABORTED, target, lun, task);
-+		sym_clear_tasks(np, DID_ABORT, target, lun, task);
- 		sym_flush_comp_queue(np, 0);
- 
-  		/*
-@@ -3566,7 +3573,7 @@
- 	 *  Print to the log the message we intend to send.
- 	 */
- 	if (num == SIR_TARGET_SELECTED) {
--		dev_info(&tp->sdev->sdev_target->dev, "control msgout:");
-+		dev_info(&tp->starget->dev, "control msgout:");
- 		sym_printl_hex(np->abrt_msg, np->abrt_tbl.size);
- 		np->abrt_tbl.size = cpu_to_scr(np->abrt_tbl.size);
+@@ -4836,12 +4813,6 @@
+ 			lp->head.resel_sa =
+ 				cpu_to_scr(SCRIPTB_BA(np, resel_bad_lun));
  	}
-@@ -3877,6 +3884,8 @@
- 		resid += (tmp & 0xffffff);
- 	}
+-	/*
+-	 *  Otherwise, we only accept 1 IO per LUN.
+-	 *  Clear the bit that keeps track of this IO.
+-	 */
+-	else
+-		sym_clr_bit(tp->busy0_map, cp->lun);
  
-+	resid -= cp->odd_byte_adjustment;
-+
  	/*
- 	 *  Hopefully, the result is not too wrong.
- 	 */
-@@ -4758,10 +4767,8 @@
- 	}
+ 	 *  We donnot queue more than 1 ccb per target 
+@@ -4993,20 +4964,7 @@
+ struct sym_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln)
+ {
+ 	struct sym_tcb *tp = &np->target[tn];
+-	struct sym_lcb *lp = sym_lp(tp, ln);
+-
+-	/*
+-	 *  Already done, just return.
+-	 */
+-	if (lp)
+-		return lp;
+-
+-	/*
+-	 *  Donnot allow LUN control block 
+-	 *  allocation for not probed LUNs.
+-	 */
+-	if (!sym_is_bit(tp->lun_map, ln))
+-		return NULL;
++	struct sym_lcb *lp = NULL;
  
+ 	/*
+ 	 *  Initialize the target control block if not yet.
+@@ -5078,13 +5036,7 @@
+ 	lp->started_max   = SYM_CONF_MAX_TASK;
+ 	lp->started_limit = SYM_CONF_MAX_TASK;
  #endif
 -	/*
--	 *  Remember all informations needed to free this CCB.
+-	 *  If we are busy, count the IO.
 -	 */
- 	cp->to_abort = 0;
-+	cp->odd_byte_adjustment = 0;
- 	cp->tag	   = tag;
- 	cp->order  = tag_order;
- 	cp->target = tn;
-@@ -5104,7 +5111,7 @@
- 	lp->itlq_tbl = sym_calloc_dma(SYM_CONF_MAX_TASK*4, "ITLQ_TBL");
- 	if (!lp->itlq_tbl)
- 		goto fail;
--	lp->cb_tags = kcalloc(SYM_CONF_MAX_TASK, 1, GFP_KERNEL);
-+	lp->cb_tags = kcalloc(SYM_CONF_MAX_TASK, 1, GFP_ATOMIC);
- 	if (!lp->cb_tags) {
- 		sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK*4, "ITLQ_TBL");
- 		lp->itlq_tbl = NULL;
-@@ -5243,7 +5250,7 @@
+-	if (sym_is_bit(tp->busy0_map, ln)) {
+-		lp->busy_itl = 1;
+-		sym_clr_bit(tp->busy0_map, ln);
+-	}
++
+ fail:
+ 	return lp;
+ }
+@@ -5099,12 +5051,6 @@
+ 	int i;
+ 
  	/*
- 	 *  message
+-	 *  If LCB not available, try to allocate it.
+-	 */
+-	if (!lp && !(lp = sym_alloc_lcb(np, tn, ln)))
+-		goto fail;
+-
+-	/*
+ 	 *  Allocate the task table and and the tag allocation 
+ 	 *  circular buffer. We want both or none.
  	 */
--	cp->phys.smsg.addr	= cpu_to_scr(CCB_BA(cp, scsi_smsg));
-+	cp->phys.smsg.addr	= CCB_BA(cp, scsi_smsg);
- 	cp->phys.smsg.size	= cpu_to_scr(msglen);
- 
+@@ -5477,8 +5423,7 @@
  	/*
-@@ -5343,7 +5350,7 @@
+ 	 *  Donnot start more than 1 command after an error.
+ 	 */
+-	if (lp)
+-		sym_start_next_ccbs(np, lp, 1);
++	sym_start_next_ccbs(np, lp, 1);
+ #endif
  }
  
- /*
-- *  Complete execution of a SCSI command with extented 
-+ *  Complete execution of a SCSI command with extended 
-  *  error, SCSI status error, or having been auto-sensed.
-  *
-  *  The SCRIPTS processor is not running there, so we 
-@@ -5441,7 +5448,7 @@
- 		/*
- 		 *  Let's requeue it to device.
- 		 */
--		sym_set_cam_status(cmd, CAM_REQUEUE_REQ);
-+		sym_set_cam_status(cmd, DID_SOFT_ERROR);
- 		goto finish;
- 	}
- weirdness:
-Index: linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_hipd.h
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/scsi/sym53c8xx_2/sym_hipd.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_hipd.h	2005-08-09 17:53:35.000000000 -0400
-@@ -444,7 +444,7 @@
+@@ -5517,12 +5462,6 @@
+ 	lp = sym_lp(tp, cp->lun);
+ 
+ 	/*
+-	 *  Assume device discovered on first success.
+-	 */
+-	if (!lp)
+-		sym_set_bit(tp->lun_map, cp->lun);
+-
+-	/*
+ 	 *  If all data have been transferred, given than no
+ 	 *  extended error did occur, there is no residual.
  	 */
- 	u_char	usrflags;
- 	u_short	usrtags;
--	struct scsi_device *sdev;
-+	struct scsi_target *starget;
- };
+@@ -5547,15 +5486,6 @@
+ 	 */
+ 	sym_set_cam_result_ok(cp, cmd, resid);
  
- /*
-@@ -754,10 +754,8 @@
- 	int	segments;	/* Number of SG segments	*/
- 
- 	u8	order;		/* Tag type (if tagged command)	*/
-+	unsigned char odd_byte_adjustment;	/* odd-sized req on wide bus */
- 
+-#ifdef	SYM_OPT_SNIFF_INQUIRY
 -	/*
--	 *  Miscellaneous status'.
+-	 *  On standard INQUIRY response (EVPD and CmDt 
+-	 *  not set), sniff out device capabilities.
 -	 */
- 	u_char	nego_status;	/* Negotiation status		*/
- 	u_char	xerr_status;	/* Extended error flags		*/
- 	u32	extra_bytes;	/* Extraneous bytes transferred	*/
-@@ -809,7 +807,7 @@
- #endif
- };
- 
--#define CCB_BA(cp,lbl)	(cp->ccb_ba + offsetof(struct sym_ccb, lbl))
-+#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)
-@@ -1138,33 +1136,33 @@
- 	 *  No segments means no data.
- 	 */
- 	if (!cp->segments)
--		dir = CAM_DIR_NONE;
-+		dir = DMA_NONE;
- 
+-	if (cp->cdb_buf[0] == INQUIRY && !(cp->cdb_buf[1] & 0x3))
+-		sym_sniff_inquiry(np, cmd, resid);
+-#endif
+-
+ #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
  	/*
- 	 *  Set the data pointer.
+ 	 *  If max number of started ccbs had been reduced,
+@@ -5583,7 +5513,7 @@
+ 	/*
+ 	 *  Requeue a couple of awaiting scsi commands.
  	 */
- 	switch(dir) {
- #ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
--	case CAM_DIR_UNKNOWN:
-+	case DMA_BIDIRECTIONAL:
+-	if (lp && !sym_que_empty(&lp->waiting_ccbq))
++	if (!sym_que_empty(&lp->waiting_ccbq))
+ 		sym_start_next_ccbs(np, lp, 2);
  #endif
--	case CAM_DIR_OUT:
-+	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 != CAM_DIR_UNKNOWN)
-+		if (dir != DMA_BIDIRECTIONAL)
- 			break;
- 		cp->phys.head.wlastp = cpu_to_scr(lastp);
- 		/* fall through */
- #else
- 		break;
- #endif
--	case CAM_DIR_IN:
-+	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 CAM_DIR_NONE:
-+	case DMA_NONE:
- 	default:
- #ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
- 		cp->host_flags |= HF_DATA_IN;
-@@ -1185,7 +1183,7 @@
  	/*
- 	 *  If direction is unknown, start at data_io.
- 	 */
--	if (dir == CAM_DIR_UNKNOWN)
-+	if (dir == DMA_BIDIRECTIONAL)
- 		cp->phys.head.savep = cpu_to_scr(SCRIPTB_BA(np, data_io));
- #endif
- }
-Index: linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_nvram.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/scsi/sym53c8xx_2/sym_nvram.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/scsi/sym53c8xx_2/sym_nvram.c	2005-08-09 17:53:35.000000000 -0400
-@@ -270,6 +270,7 @@
+@@ -5826,8 +5756,7 @@
+ 	SYM_QUEHEAD *qp;
+ 	struct sym_ccb *cp;
+ 	struct sym_tcb *tp;
+-	struct sym_lcb *lp;
+-	int target, lun;
++	int target;
  
- 	}
- 	OUTB(np, nc_gpreg, *gpreg);
-+	INB(np, nc_mbox1);
- 	udelay(5);
- }
+ 	if (np->scriptz0)
+ 		sym_mfree_dma(np->scriptz0, np->scriptz_sz, "SCRIPTZ0");
+@@ -5853,16 +5782,6 @@
  
-@@ -547,6 +548,7 @@
- static void T93C46_Clk(struct sym_device *np, u_char *gpreg)
- {
- 	OUTB(np, nc_gpreg, *gpreg | 0x04);
-+	INB(np, nc_mbox1);
- 	udelay(2);
- 	OUTB(np, nc_gpreg, *gpreg);
- }
-@@ -574,6 +576,7 @@
- 	*gpreg |= 0x10;
- 		
- 	OUTB(np, nc_gpreg, *gpreg);
-+	INB(np, nc_mbox1);
- 	udelay(2);
+ 	for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) {
+ 		tp = &np->target[target];
+-		for (lun = 0 ; lun < SYM_CONF_MAX_LUN ; lun++) {
+-			lp = sym_lp(tp, lun);
+-			if (!lp)
+-				continue;
+-			if (lp->itlq_tbl)
+-				sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK*4,
+-				       "ITLQ_TBL");
+-			kfree(lp->cb_tags);
+-			sym_mfree_dma(lp, sizeof(*lp), "LCB");
+-		}
+ #if SYM_CONF_MAX_LUN > 1
+ 		kfree(tp->lunmp);
+ #endif 
+diff -Nur linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_hipd.h linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_hipd.h
+--- linux-2.6.13.org/drivers/scsi/sym53c8xx_2/sym_hipd.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/scsi/sym53c8xx_2/sym_hipd.h	2005-09-25 12:34:40.000000000 -0400
+@@ -414,19 +414,6 @@
+ 	struct sym_lcb **lunmp;		/* Other LCBs [1..MAX_LUN]	*/
+ #endif
  
- 	T93C46_Clk(np, gpreg);
-@@ -586,6 +589,7 @@
+-	/*
+-	 *  Bitmap that tells about LUNs that succeeded at least 
+-	 *  1 IO and therefore assumed to be a real device.
+-	 *  Avoid useless allocation of the LCB structure.
+-	 */
+-	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];
+-
+ #ifdef	SYM_HAVE_STCB
+ 	/*
+ 	 *  O/S specific data structure.
+@@ -1075,7 +1062,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
+diff -Nur linux-2.6.13.org/drivers/scsi/zalon.c linux-2.6.13/drivers/scsi/zalon.c
+--- linux-2.6.13.org/drivers/scsi/zalon.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/scsi/zalon.c	2005-09-25 12:34:40.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/drivers/serial/8250_gsc.c linux-2.6.13/drivers/serial/8250_gsc.c
+--- linux-2.6.13.org/drivers/serial/8250_gsc.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/serial/8250_gsc.c	2005-09-25 12:34:40.000000000 -0400
+@@ -29,7 +29,6 @@
+ static int __init 
+ serial_init_chip(struct parisc_device *dev)
  {
- 	*gpreg &= 0xef;
- 	OUTB(np, nc_gpreg, *gpreg);
-+	INB(np, nc_mbox1);
- 	udelay(2);
+-	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;
+ 	}
  
- 	T93C46_Clk(np, gpreg);
-@@ -733,7 +737,8 @@
- 	return SYM_PARISC_PDC;
- }
- #else
--static int sym_read_parisc_pdc(struct sym_device *np, struct pdc_initiator *x)
-+static inline int sym_read_parisc_pdc(struct sym_device *np,
-+					struct pdc_initiator *x)
- {
- 	return 0;
- }
-Index: linux-2.6-2.6.12/drivers/serial/mux.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/serial/mux.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/serial/mux.c	2005-08-09 17:53:35.000000000 -0400
+-	address = dev->hpa;
++	address = dev->hpa.start;
+ 	if (dev->id.sversion != 0x8d) {
+ 		address += 0x800;
+ 	}
+diff -Nur linux-2.6.13.org/drivers/serial/mux.c linux-2.6.13/drivers/serial/mux.c
+--- linux-2.6.13.org/drivers/serial/mux.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/serial/mux.c	2005-09-25 12:34:40.000000000 -0400
 @@ -27,6 +27,7 @@
  #include <linux/delay.h> /* for udelay */
  #include <linux/device.h>
@@ -5532,7 +7963,22 @@
  #include <asm/parisc-device.h>
  
  #ifdef CONFIG_MAGIC_SYSRQ
-@@ -475,7 +476,7 @@
+@@ -446,7 +447,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;
+@@ -471,16 +472,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;
@@ -5541,11 +7987,25 @@
  		port->uartclk	= 0;
  		port->fifosize	= MUX_FIFO_SIZE;
  		port->ops	= &mux_pops;
-Index: linux-2.6-2.6.12/drivers/serial/serial_core.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/serial/serial_core.c	2005-08-09 17:50:50.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/serial/serial_core.c	2005-08-09 17:53:35.000000000 -0400
-@@ -1930,7 +1930,14 @@
+ 		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);
+ 	}
+@@ -499,7 +502,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 -Nur linux-2.6.13.org/drivers/serial/serial_core.c linux-2.6.13/drivers/serial/serial_core.c
+--- linux-2.6.13.org/drivers/serial/serial_core.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/serial/serial_core.c	2005-09-25 12:34:40.000000000 -0400
+@@ -1961,7 +1961,14 @@
  		printk("MMIO 0x%lx", port->mapbase);
  		break;
  	}
@@ -5561,10 +8021,9 @@
  }
  
  static void
-Index: linux-2.6-2.6.12/drivers/usb/input/hid-core.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/usb/input/hid-core.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/usb/input/hid-core.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/usb/input/hid-core.c linux-2.6.13/drivers/usb/input/hid-core.c
+--- linux-2.6.13.org/drivers/usb/input/hid-core.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/usb/input/hid-core.c	2005-09-25 12:34:40.000000000 -0400
 @@ -759,21 +759,31 @@
  }
  
@@ -5576,7 +8035,7 @@
  static __inline__ __u32 extract(__u8 *report, unsigned offset, unsigned n)
  {
 -	report += (offset >> 5) << 2; offset &= 31;
--	return (le64_to_cpu(get_unaligned((__le64*)report)) >> offset) & ((1 << n) - 1);
+-	return (le64_to_cpu(get_unaligned((__le64*)report)) >> offset) & ((1ULL << n) - 1);
 +	u32 x;
 +
 +	report += offset >> 3;  /* adjust byte index */
@@ -5604,63 +8063,9 @@
  }
  
  /*
-Index: linux-2.6-2.6.12/drivers/usb/storage/transport.c
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/usb/storage/transport.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/usb/storage/transport.c	2005-08-09 17:53:35.000000000 -0400
-@@ -266,8 +266,9 @@
- 		NULL, 0, 3*HZ);
- 
- 	/* reset the endpoint toggle */
--	usb_settoggle(us->pusb_dev, usb_pipeendpoint(pipe),
--		usb_pipeout(pipe), 0);
-+	if (result >= 0)
-+		usb_settoggle(us->pusb_dev, usb_pipeendpoint(pipe),
-+				usb_pipeout(pipe), 0);
- 
- 	US_DEBUGP("%s: result = %d\n", __FUNCTION__, result);
- 	return result;
-@@ -1124,7 +1125,7 @@
-  * It's handy that every transport mechanism uses the control endpoint for
-  * resets.
-  *
-- * Basically, we send a reset with a 20-second timeout, so we don't get
-+ * Basically, we send a reset with a 5-second timeout, so we don't get
-  * jammed attempting to do the reset.
-  */
- static int usb_stor_reset_common(struct us_data *us,
-@@ -1145,13 +1146,9 @@
- 	clear_bit(US_FLIDX_ABORTING, &us->flags);
- 	scsi_unlock(us_to_host(us));
- 
--	/* A 20-second timeout may seem rather long, but a LaCie
--	 * StudioDrive USB2 device takes 16+ seconds to get going
--	 * following a powerup or USB attach event.
--	 */
- 	result = usb_stor_control_msg(us, us->send_ctrl_pipe,
- 			request, requesttype, value, index, data, size,
--			20*HZ);
-+			5*HZ);
- 	if (result < 0) {
- 		US_DEBUGP("Soft reset failed: %d\n", result);
- 		goto Done;
-@@ -1173,8 +1170,10 @@
- 	US_DEBUGP("Soft reset: clearing bulk-out endpoint halt\n");
- 	result2 = usb_stor_clear_halt(us, us->send_bulk_pipe);
- 
--	/* return a result code based on the result of the control message */
--	if (result < 0 || result2 < 0) {
-+	/* return a result code based on the result of the clear-halts */
-+	if (result >= 0)
-+		result = result2;
-+	if (result < 0) {
- 		US_DEBUGP("Soft reset failed\n");
- 		goto Done;
- 	}
-Index: linux-2.6-2.6.12/drivers/video/console/Kconfig
-===================================================================
---- linux-2.6-2.6.12.orig/drivers/video/console/Kconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/drivers/video/console/Kconfig	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/video/console/Kconfig linux-2.6.13/drivers/video/console/Kconfig
+--- linux-2.6.13.org/drivers/video/console/Kconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/video/console/Kconfig	2005-09-25 12:34:40.000000000 -0400
 @@ -110,7 +110,7 @@
  
  config FONTS
@@ -5697,10 +8102,250 @@
  	default y if !SPARC32 && !SPARC64 && !FONTS && MAC
  	help
  	  Small console font with Macintosh-style high-half glyphs.  Some Mac
-Index: linux-2.6-2.6.12/fs/ioctl.c
-===================================================================
---- linux-2.6-2.6.12.orig/fs/ioctl.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/fs/ioctl.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/drivers/video/console/sticore.c linux-2.6.13/drivers/video/console/sticore.c
+--- linux-2.6.13.org/drivers/video/console/sticore.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/drivers/video/console/sticore.c	2005-09-25 12:34:40.000000000 -0400
+@@ -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;
+ }
+ 
+ struct sti_rom * __init
+@@ -736,15 +737,15 @@
+ {
+ 	struct sti_rom *raw;
+ 	unsigned long size;
+-    
++
+ 	/* read the ROM size directly from the struct in ROM */ 
+ 	size = gsc_readl(address + offsetof(struct sti_rom,last_addr));
+ 
+ 	raw = kmalloc(size, GFP_KERNEL);
+-	if(raw)
+-	        sti_rom_copy(address, size, raw);
++	if (raw)
++		sti_rom_copy(address, size, raw);
+ 
+-        return raw;
++	return raw;
+ }
+ 
+ int __init
+@@ -757,14 +758,14 @@
+ 	if (!cooked)
+ 		goto out_err;
+ 
+-        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;
++
+ 	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;
+ 	}
+ 	
+ 	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;
+ 	}
+-		    
++
+ 	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;
+-	
++
+ 	print_pa_hwpath(dev, pa_path);
+-	sticore_check_for_default_sti (sti, pa_path);
++	sticore_check_for_default_sti(sti, pa_path);
+ 	return 0;
+ }
+ 
+diff -Nur linux-2.6.13.org/fs/ioctl.c linux-2.6.13/fs/ioctl.c
+--- linux-2.6.13.org/fs/ioctl.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/fs/ioctl.c	2005-09-25 12:34:40.000000000 -0400
 @@ -71,7 +71,11 @@
  				return -EBADF;
  			return put_user(inode->i_sb->s_blocksize, p);
@@ -5714,10 +8359,9 @@
  	}
  
  	return do_ioctl(filp, cmd, arg);
-Index: linux-2.6-2.6.12/include/asm-generic/compat_signal.h
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6-2.6.12/include/asm-generic/compat_signal.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-generic/compat_signal.h linux-2.6.13/include/asm-generic/compat_signal.h
+--- linux-2.6.13.org/include/asm-generic/compat_signal.h	1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.13/include/asm-generic/compat_signal.h	2005-09-25 12:34:40.000000000 -0400
 @@ -0,0 +1,25 @@
 +#ifndef _ASM_GENERIC_COMPAT_SIGNAL_H
 +#define _ASM_GENERIC_COMPAT_SIGNAL_H
@@ -5744,10 +8388,9 @@
 +
 +#endif /* !__ASSEMBLY__ */
 +#endif /* !_ASM_GENERIC_COMPAT_SIGNAL_H */
-Index: linux-2.6-2.6.12/include/asm-ia64/compat.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-ia64/compat.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-ia64/compat.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-ia64/compat.h linux-2.6.13/include/asm-ia64/compat.h
+--- linux-2.6.13.org/include/asm-ia64/compat.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-ia64/compat.h	2005-09-25 12:34:40.000000000 -0400
 @@ -15,6 +15,9 @@
  typedef s32		compat_pid_t;
  typedef u16		compat_uid_t;
@@ -5758,19 +8401,100 @@
  typedef u32		compat_uid32_t;
  typedef u32		compat_gid32_t;
  typedef u16		compat_mode_t;
-@@ -27,6 +30,7 @@
- typedef s32		compat_daddr_t;
- typedef u32		compat_caddr_t;
- typedef __kernel_fsid_t	compat_fsid_t;
-+typedef s32		compat_timer_t;
+diff -Nur linux-2.6.13.org/include/asm-parisc/assembly.h linux-2.6.13/include/asm-parisc/assembly.h
+--- linux-2.6.13.org/include/asm-parisc/assembly.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/assembly.h	2005-09-25 12:34:40.000000000 -0400
+@@ -21,6 +21,7 @@
+ #ifndef _PARISC_ASSEMBLY_H
+ #define _PARISC_ASSEMBLY_H
  
- typedef s32		compat_int_t;
- typedef s32		compat_long_t;
-Index: linux-2.6-2.6.12/include/asm-parisc/assembly.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/assembly.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/assembly.h	2005-08-09 17:53:35.000000000 -0400
-@@ -450,5 +450,30 @@
++#define CALLEE_FLOAT_FRAME_SIZE	80
+ #ifdef __LP64__
+ #define LDREG	ldd
+ #define STREG	std
+@@ -30,7 +31,7 @@
+ #define SHRREG  shrd
+ #define RP_OFFSET	16
+ #define FRAME_SIZE	128
+-#define CALLEE_SAVE_FRAME_SIZE	144
++#define CALLEE_REG_FRAME_SIZE	144
+ #else
+ #define LDREG	ldw
+ #define STREG	stw
+@@ -40,8 +41,9 @@
+ #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
+@@ -300,9 +302,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 +368,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 +412,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 +478,30 @@
  	REST_CR	(%cr22, PT_PSW	(\regs))
  	.endm
  
@@ -5801,10 +8525,9 @@
 +
  #endif /* __ASSEMBLY__ */
  #endif
-Index: linux-2.6-2.6.12/include/asm-parisc/bitops.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/bitops.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/bitops.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/bitops.h linux-2.6.13/include/asm-parisc/bitops.h
+--- linux-2.6.13.org/include/asm-parisc/bitops.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/bitops.h	2005-09-25 12:34:40.000000000 -0400
 @@ -2,6 +2,7 @@
  #define _PARISC_BITOPS_H
  
@@ -6264,10 +8987,9 @@
  /* 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))
-Index: linux-2.6-2.6.12/include/asm-parisc/errno.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/errno.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/errno.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/errno.h linux-2.6.13/include/asm-parisc/errno.h
+--- linux-2.6.13.org/include/asm-parisc/errno.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/errno.h	2005-09-25 12:34:40.000000000 -0400
 @@ -114,6 +114,7 @@
  
  #define ENOTSUP		252	/* Function not implemented (POSIX.4 / HPUX) */
@@ -6276,10 +8998,21 @@
  
  /* for robust mutexes */
  #define EOWNERDEAD	254	/* Owner died */
-Index: linux-2.6-2.6.12/include/asm-parisc/led.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/led.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/led.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/grfioctl.h linux-2.6.13/include/asm-parisc/grfioctl.h
+--- linux-2.6.13.org/include/asm-parisc/grfioctl.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/grfioctl.h	2005-09-25 12:34:40.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/include/asm-parisc/led.h linux-2.6.13/include/asm-parisc/led.h
+--- linux-2.6.13.org/include/asm-parisc/led.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/led.h	2005-09-25 12:34:40.000000000 -0400
 @@ -23,9 +23,6 @@
  
  #define LED_CMD_REG_NONE 0		/* NULL == no addr for the cmd register */
@@ -6290,10 +9023,45 @@
  /* register_led_driver() */
  int __init register_led_driver(int model, unsigned long cmd_reg, unsigned long data_reg);
  
-Index: linux-2.6-2.6.12/include/asm-parisc/processor.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/processor.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/processor.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/parisc-device.h linux-2.6.13/include/asm-parisc/parisc-device.h
+--- linux-2.6.13.org/include/asm-parisc/parisc-device.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/parisc-device.h	2005-09-25 12:34:40.000000000 -0400
+@@ -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)
+ 
++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 -Nur linux-2.6.13.org/include/asm-parisc/pgtable.h linux-2.6.13/include/asm-parisc/pgtable.h
+--- linux-2.6.13.org/include/asm-parisc/pgtable.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/pgtable.h	2005-09-25 12:34:40.000000000 -0400
+@@ -504,6 +504,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 -Nur linux-2.6.13.org/include/asm-parisc/processor.h linux-2.6.13/include/asm-parisc/processor.h
+--- linux-2.6.13.org/include/asm-parisc/processor.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/processor.h	2005-09-25 12:34:40.000000000 -0400
 @@ -121,8 +121,27 @@
  }; 
  
@@ -6322,10 +9090,9 @@
  #define INIT_THREAD { \
  	regs:	{	gr: { 0, }, \
  			fr: { 0, }, \
-Index: linux-2.6-2.6.12/include/asm-parisc/psw.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/psw.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/psw.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/psw.h linux-2.6.13/include/asm-parisc/psw.h
+--- linux-2.6.13.org/include/asm-parisc/psw.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/psw.h	2005-09-25 12:34:40.000000000 -0400
 @@ -1,4 +1,7 @@
  #ifndef _PARISC_PSW_H
 +
@@ -6398,10 +9165,9 @@
 +#define USER_PSW      (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I)
 +
  #endif
-Index: linux-2.6-2.6.12/include/asm-parisc/ptrace.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/ptrace.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/ptrace.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/ptrace.h linux-2.6.13/include/asm-parisc/ptrace.h
+--- linux-2.6.13.org/include/asm-parisc/ptrace.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/ptrace.h	2005-09-25 12:34:40.000000000 -0400
 @@ -49,7 +49,7 @@
  #define user_mode(regs)			(((regs)->iaoq[0] & 3) ? 1 : 0)
  #define user_space(regs)		(((regs)->iasq[1] != 0) ? 1 : 0)
@@ -6411,10 +9177,9 @@
  extern void show_regs(struct pt_regs *);
  #endif
  
-Index: linux-2.6-2.6.12/include/asm-parisc/spinlock.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/spinlock.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/spinlock.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/spinlock.h linux-2.6.13/include/asm-parisc/spinlock.h
+--- linux-2.6.13.org/include/asm-parisc/spinlock.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/spinlock.h	2005-09-25 12:34:40.000000000 -0400
 @@ -8,9 +8,15 @@
   * the semaphore address has to be 16-byte aligned.
   */
@@ -6484,10 +9249,9 @@
  			(x)->babble--;					\
  			printk("KERN_WARNING				\
  				%s:%d: spin_unlock_wait(%s/%p)"		\
-Index: linux-2.6-2.6.12/include/asm-parisc/system.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/system.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/system.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/system.h linux-2.6.13/include/asm-parisc/system.h
+--- linux-2.6.13.org/include/asm-parisc/system.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/system.h	2005-09-25 12:34:40.000000000 -0400
 @@ -138,13 +138,7 @@
  #define set_wmb(var, value)		do { var = value; wmb(); } while (0)
  
@@ -6578,10 +9342,9 @@
  #define arch_align_stack(x) (x)
  
  #endif
-Index: linux-2.6-2.6.12/include/asm-parisc/tlbflush.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/tlbflush.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/tlbflush.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/tlbflush.h linux-2.6.13/include/asm-parisc/tlbflush.h
+--- linux-2.6.13.org/include/asm-parisc/tlbflush.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/tlbflush.h	2005-09-25 12:34:40.000000000 -0400
 @@ -7,6 +7,26 @@
  #include <linux/mm.h>
  #include <asm/mmu_context.h>
@@ -6642,10 +9405,9 @@
  	}
  }
  
-Index: linux-2.6-2.6.12/include/asm-parisc/types.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/types.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/types.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/types.h linux-2.6.13/include/asm-parisc/types.h
+--- linux-2.6.13.org/include/asm-parisc/types.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/types.h	2005-09-25 12:34:40.000000000 -0400
 @@ -33,8 +33,10 @@
  
  #ifdef __LP64__
@@ -6657,10 +9419,9 @@
  #endif
  
  #ifndef __ASSEMBLY__
-Index: linux-2.6-2.6.12/include/asm-parisc/unistd.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-parisc/unistd.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-parisc/unistd.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-parisc/unistd.h linux-2.6.13/include/asm-parisc/unistd.h
+--- linux-2.6.13.org/include/asm-parisc/unistd.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-parisc/unistd.h	2005-09-25 12:34:40.000000000 -0400
 @@ -687,8 +687,8 @@
  #define __NR_shmget             (__NR_Linux + 194)
  #define __NR_shmctl             (__NR_Linux + 195)
@@ -6699,10 +9460,9 @@
  			K_STW_ASM_PIC					\
  			"	ble  0x100(%%sr2, %%r0)\n"		\
  			"	ldi %1, %%r20\n"			\
-Index: linux-2.6-2.6.12/include/asm-s390/compat.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-s390/compat.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-s390/compat.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-s390/compat.h linux-2.6.13/include/asm-s390/compat.h
+--- linux-2.6.13.org/include/asm-s390/compat.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-s390/compat.h	2005-09-25 12:34:40.000000000 -0400
 @@ -15,6 +15,9 @@
  typedef s32		compat_pid_t;
  typedef u16		compat_uid_t;
@@ -6713,10 +9473,9 @@
  typedef u32		compat_uid32_t;
  typedef u32		compat_gid32_t;
  typedef u16		compat_mode_t;
-Index: linux-2.6-2.6.12/include/asm-sparc64/compat.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/asm-sparc64/compat.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/asm-sparc64/compat.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/asm-sparc64/compat.h linux-2.6.13/include/asm-sparc64/compat.h
+--- linux-2.6.13.org/include/asm-sparc64/compat.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/asm-sparc64/compat.h	2005-09-25 12:34:40.000000000 -0400
 @@ -12,6 +12,9 @@
  typedef s32		compat_time_t;
  typedef s32		compat_clock_t;
@@ -6727,10 +9486,9 @@
  typedef u16		compat_uid_t;
  typedef u16		compat_gid_t;
  typedef u16		compat_mode_t;
-Index: linux-2.6-2.6.12/include/linux/compat.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/linux/compat.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/linux/compat.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/linux/compat.h linux-2.6.13/include/linux/compat.h
+--- linux-2.6.13.org/include/linux/compat.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/linux/compat.h	2005-09-25 12:34:40.000000000 -0400
 @@ -6,10 +6,16 @@
   */
  #include <linux/config.h>
@@ -6801,11 +9559,10 @@
  
  #endif /* CONFIG_COMPAT */
  #endif /* _LINUX_COMPAT_H */
-Index: linux-2.6-2.6.12/include/linux/compat_siginfo.h
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6-2.6.12/include/linux/compat_siginfo.h	2005-08-09 17:53:35.000000000 -0400
-@@ -0,0 +1,181 @@
+diff -Nur linux-2.6.13.org/include/linux/compat_siginfo.h linux-2.6.13/include/linux/compat_siginfo.h
+--- linux-2.6.13.org/include/linux/compat_siginfo.h	1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.13/include/linux/compat_siginfo.h	2005-09-25 12:34:40.000000000 -0400
+@@ -0,0 +1,182 @@
 +#ifndef _ASM_GENERIC_COMPAT_SIGINFO_H
 +#define _ASM_GENERIC_COMPAT_SIGINFO_H
 +
@@ -6983,14 +9740,14 @@
 +extern int compat_copy_siginfo_from_user(struct siginfo *to, compat_siginfo_t __user *from);
 +
 +extern int compat_copy_sigevent_from_user(struct sigevent *to, compat_sigevent_t __user *from);
++extern int compat_copy_sigevent_to_user(compat_sigevent_t __user *to, struct sigevent *from);
 +
 +#endif /* CONFIG_COMPAT */
 +#endif /* _ASM_GENERIC_COMPAT_SIGINFO_H */
 +
-Index: linux-2.6-2.6.12/include/linux/hil.h
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6-2.6.12/include/linux/hil.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/linux/hil.h linux-2.6.13/include/linux/hil.h
+--- linux-2.6.13.org/include/linux/hil.h	1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.13/include/linux/hil.h	2005-09-25 12:34:40.000000000 -0400
 @@ -0,0 +1,483 @@
 +#ifndef _HIL_H_
 +#define _HIL_H_
@@ -7475,10 +10232,9 @@
 +
 +
 +#endif /* _HIL_H_ */
-Index: linux-2.6-2.6.12/include/linux/hil_mlc.h
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6-2.6.12/include/linux/hil_mlc.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/linux/hil_mlc.h linux-2.6.13/include/linux/hil_mlc.h
+--- linux-2.6.13.org/include/linux/hil_mlc.h	1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.13/include/linux/hil_mlc.h	2005-09-25 12:34:40.000000000 -0400
 @@ -0,0 +1,168 @@
 +/*
 + * HP Human Interface Loop Master Link Controller driver.
@@ -7648,10 +10404,9 @@
 +
 +int hil_mlc_register(hil_mlc *mlc);
 +int hil_mlc_unregister(hil_mlc *mlc);
-Index: linux-2.6-2.6.12/include/linux/hp_sdc.h
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6-2.6.12/include/linux/hp_sdc.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/linux/hp_sdc.h linux-2.6.13/include/linux/hp_sdc.h
+--- linux-2.6.13.org/include/linux/hp_sdc.h	1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.13/include/linux/hp_sdc.h	2005-09-25 12:34:40.000000000 -0400
 @@ -0,0 +1,300 @@
 +/*
 + * HP i8042 System Device Controller -- header
@@ -7953,10 +10708,9 @@
 +} hp_i8042_sdc;
 +
 +#endif /* _LINUX_HP_SDC_H */
-Index: linux-2.6-2.6.12/include/linux/input.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/linux/input.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/linux/input.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/linux/input.h linux-2.6.13/include/linux/input.h
+--- linux-2.6.13.org/include/linux/input.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/linux/input.h	2005-09-25 12:34:40.000000000 -0400
 @@ -620,6 +620,7 @@
  #define BUS_ADB			0x17
  #define BUS_I2C			0x18
@@ -7965,11 +10719,10 @@
  
  /*
   * Values describing the status of an effect
-Index: linux-2.6-2.6.12/include/linux/serio.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/linux/serio.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/linux/serio.h	2005-08-09 17:53:35.000000000 -0400
-@@ -179,7 +179,7 @@
+diff -Nur linux-2.6.13.org/include/linux/serio.h linux-2.6.13/include/linux/serio.h
+--- linux-2.6.13.org/include/linux/serio.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/linux/serio.h	2005-09-25 12:34:40.000000000 -0400
+@@ -185,7 +185,7 @@
  #define SERIO_8042_XL	0x06
  
  /*
@@ -7978,10 +10731,9 @@
   */
  #define SERIO_UNKNOWN	0x00
  #define SERIO_MSC	0x01
-Index: linux-2.6-2.6.12/include/linux/signal.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/linux/signal.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/linux/signal.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/linux/signal.h linux-2.6.13/include/linux/signal.h
+--- linux-2.6.13.org/include/linux/signal.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/linux/signal.h	2005-09-25 12:34:40.000000000 -0400
 @@ -234,6 +234,9 @@
  struct pt_regs;
  extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie);
@@ -7992,10 +10744,9 @@
  #endif /* __KERNEL__ */
  
  #endif /* _LINUX_SIGNAL_H */
-Index: linux-2.6-2.6.12/include/sound/opl3.h
-===================================================================
---- linux-2.6-2.6.12.orig/include/sound/opl3.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/include/sound/opl3.h	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/include/sound/opl3.h linux-2.6.13/include/sound/opl3.h
+--- linux-2.6.13.org/include/sound/opl3.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/include/sound/opl3.h	2005-09-25 12:34:40.000000000 -0400
 @@ -261,8 +261,8 @@
  } snd_opl3_voice_t;
  
@@ -8017,10 +10768,9 @@
  int snd_opl3_create(snd_card_t * card,
  		    unsigned long l_port, unsigned long r_port,
  		    unsigned short hardware,
-Index: linux-2.6-2.6.12/ipc/compat_mq.c
-===================================================================
---- linux-2.6-2.6.12.orig/ipc/compat_mq.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/ipc/compat_mq.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/ipc/compat_mq.c linux-2.6.13/ipc/compat_mq.c
+--- linux-2.6.13.org/ipc/compat_mq.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/ipc/compat_mq.c	2005-09-25 12:34:40.000000000 -0400
 @@ -7,6 +7,7 @@
   */
  
@@ -8029,23 +10779,21 @@
  #include <linux/fs.h>
  #include <linux/kernel.h>
  #include <linux/mqueue.h>
-Index: linux-2.6-2.6.12/kernel/Makefile
-===================================================================
---- linux-2.6-2.6.12.orig/kernel/Makefile	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/kernel/Makefile	2005-08-09 17:53:35.000000000 -0400
-@@ -17,7 +17,7 @@
- obj-$(CONFIG_KALLSYMS) += kallsyms.o
+diff -Nur linux-2.6.13.org/kernel/Makefile linux-2.6.13/kernel/Makefile
+--- linux-2.6.13.org/kernel/Makefile	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/kernel/Makefile	2005-09-25 12:34:40.000000000 -0400
+@@ -18,7 +18,7 @@
  obj-$(CONFIG_PM) += power/
  obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
+ obj-$(CONFIG_KEXEC) += kexec.o
 -obj-$(CONFIG_COMPAT) += compat.o
 +obj-$(CONFIG_COMPAT) += compat.o compat_signal.o
  obj-$(CONFIG_CPUSETS) += cpuset.o
  obj-$(CONFIG_IKCONFIG) += configs.o
  obj-$(CONFIG_IKCONFIG_PROC) += configs.o
-Index: linux-2.6-2.6.12/kernel/compat.c
-===================================================================
---- linux-2.6-2.6.12.orig/kernel/compat.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/kernel/compat.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/kernel/compat.c linux-2.6.13/kernel/compat.c
+--- linux-2.6.13.org/kernel/compat.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/kernel/compat.c	2005-09-25 12:34:40.000000000 -0400
 @@ -13,6 +13,7 @@
  
  #include <linux/linkage.h>
@@ -8067,7 +10815,7 @@
  }
  
  static int compat_get_user_cpu_mask(compat_ulong_t __user *user_mask_ptr,
-@@ -653,6 +658,26 @@
+@@ -653,6 +658,44 @@
  
  /* timer_create is architecture specific because it needs sigevent conversion */
  
@@ -8076,17 +10824,35 @@
 +			     compat_timer_t __user * created_timer_id)
 +{
 +	sigevent_t kevent;
++	timer_t ktimer;
 +	mm_segment_t old_fs = get_fs();
 +	long ret;
 +
++	/* sigevent_t needs handling for 32-bit to 64-bit compat */
 +	if (timer_event_spec != NULL)
 +		if (compat_copy_sigevent_from_user(&kevent, timer_event_spec) != 0)
 +			return -EFAULT;
++	
++	/* Timer ID is assumed to be a non-struct simple value */
++	if (created_timer_id != NULL)
++		if (__get_user(ktimer, created_timer_id) != 0)
++		  	return -EFAULT;
 +
 +	set_fs(KERNEL_DS);
-+	ret = sys_timer_create(which_clock, timer_event_spec ? (sigevent_t __user *)&kevent : NULL, created_timer_id);
++	ret = sys_timer_create(which_clock, 
++	    			timer_event_spec ? (sigevent_t __user *)&kevent : NULL, 
++	    			created_timer_id ? (timer_t __user *)&ktimer : NULL);
 +	set_fs(old_fs);
++	
++	/* Copy back the results to userspace */
++	if (timer_event_spec != NULL)
++	  	if (compat_copy_sigevent_to_user(timer_event_spec, &kevent) != 0)
++			return -EFAULT;
 +
++	if (created_timer_id != NULL)
++	  	if (__put_user(ktimer, created_timer_id) != 0)
++		  	return -EFAULT;
++	
 +	return ret;
 +}
 +
@@ -8094,7 +10860,7 @@
  long compat_get_bitmap(unsigned long *mask, compat_ulong_t __user *umask,
  		       unsigned long bitmap_size)
  {
-@@ -810,7 +835,7 @@
+@@ -810,7 +853,7 @@
  	if (sig) {
  		ret = sig;
  		if (uinfo) {
@@ -8103,11 +10869,10 @@
  				ret = -EFAULT;
  		}
  	}else {
-Index: linux-2.6-2.6.12/kernel/compat_signal.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6-2.6.12/kernel/compat_signal.c	2005-08-09 17:53:35.000000000 -0400
-@@ -0,0 +1,244 @@
+diff -Nur linux-2.6.13.org/kernel/compat_signal.c linux-2.6.13/kernel/compat_signal.c
+--- linux-2.6.13.org/kernel/compat_signal.c	1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.13/kernel/compat_signal.c	2005-09-25 12:34:40.000000000 -0400
+@@ -0,0 +1,280 @@
 +/*
 + *  Copyright (C) 2003 Carlos O'Donell
 + * 
@@ -8352,10 +11117,45 @@
 +}
 +#endif
 +
-Index: linux-2.6-2.6.12/kernel/posix-cpu-timers.c
-===================================================================
---- linux-2.6-2.6.12.orig/kernel/posix-cpu-timers.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/kernel/posix-cpu-timers.c	2005-08-09 17:53:35.000000000 -0400
++#ifndef HAVE_ARCH_COPY_SIGEVENT_TO_USER
++int compat_copy_sigevent_to_user(compat_sigevent_t __user *to, sigevent_t *from)
++{
++	int err;
++	u32 scratch;
++	
++	/* copy sigval_t sigev_value 
++	 	int_t sival_int		(same)
++	 	uptr_t sival_ptr	(32 vs 64)*/
++	err = __put_user(from->sigev_value.sival_int, 
++	    		 &to->sigev_value.sival_int);
++	scratch = (u32)((u64 __force)from->sigev_value.sival_ptr & 0xffffffffUL);
++	err |= __put_user((compat_uptr_t)scratch, &to->sigev_value.sival_ptr);
++	
++	/* copy int_t sigev_signo 	(same)*/
++	err |= __put_user(from->sigev_signo, &to->sigev_signo);
++	
++	/* copy int_t sigev_notify	(same)*/
++	err |= __put_user(from->sigev_notify, &to->sigev_notify);
++
++	/* never copy _sigev_un padding */
++
++	/* copy int_t _tid 		(same),
++	   good_sigevent() uses this value of */
++	err |= __put_user(from->sigev_notify_thread_id, &to->sigev_notify_thread_id);
++	
++	/* XXX: Do not copy these, they aren't used by
++	   anyone. We would need to distinguish the uses of the union.
++	   copy _sigev_thread
++	  	uptr_t _function	(32 vs 64)
++	  	uptr_t _attribute	(32 vs 64)*/
++	
++	return err;
++}
++#endif
++
+diff -Nur linux-2.6.13.org/kernel/posix-cpu-timers.c linux-2.6.13/kernel/posix-cpu-timers.c
+--- linux-2.6.13.org/kernel/posix-cpu-timers.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/kernel/posix-cpu-timers.c	2005-09-25 12:34:40.000000000 -0400
 @@ -1270,8 +1270,6 @@
  	LIST_HEAD(firing);
  	struct k_itimer *timer, *next;
@@ -8365,10 +11165,9 @@
  #define UNEXPIRED(clock) \
  		(cputime_eq(tsk->it_##clock##_expires, cputime_zero) || \
  		 cputime_lt(clock##_ticks(tsk), tsk->it_##clock##_expires))
-Index: linux-2.6-2.6.12/kernel/ptrace.c
-===================================================================
---- linux-2.6-2.6.12.orig/kernel/ptrace.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/kernel/ptrace.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/kernel/ptrace.c linux-2.6.13/kernel/ptrace.c
+--- linux-2.6.13.org/kernel/ptrace.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/kernel/ptrace.c	2005-09-25 12:34:40.000000000 -0400
 @@ -344,7 +344,7 @@
  	siginfo_t newinfo;
  	int error = -ESRCH;
@@ -8378,10 +11177,9 @@
  		return -EFAULT;
  
  	read_lock(&tasklist_lock);
-Index: linux-2.6-2.6.12/kernel/resource.c
-===================================================================
---- linux-2.6-2.6.12.orig/kernel/resource.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/kernel/resource.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/kernel/resource.c linux-2.6.13/kernel/resource.c
+--- linux-2.6.13.org/kernel/resource.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/kernel/resource.c	2005-09-25 12:34:40.000000000 -0400
 @@ -181,6 +181,8 @@
  {
  	struct resource *tmp, **p;
@@ -8391,10 +11189,9 @@
  	p = &old->parent->child;
  	for (;;) {
  		tmp = *p;
-Index: linux-2.6-2.6.12/kernel/signal.c
-===================================================================
---- linux-2.6-2.6.12.orig/kernel/signal.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/kernel/signal.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/kernel/signal.c linux-2.6.13/kernel/signal.c
+--- linux-2.6.13.org/kernel/signal.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/kernel/signal.c	2005-09-25 12:34:40.000000000 -0400
 @@ -22,6 +22,7 @@
  #include <linux/security.h>
  #include <linux/syscalls.h>
@@ -8402,8 +11199,8 @@
 +#include <linux/compat_siginfo.h>
  #include <linux/posix-timers.h>
  #include <linux/signal.h>
- #include <asm/param.h>
-@@ -2107,17 +2108,35 @@
+ #include <linux/audit.h>
+@@ -2113,17 +2114,35 @@
  	return do_sigpending(set, sigsetsize);
  }
  
@@ -8439,7 +11236,7 @@
  	/*
  	 * If you change siginfo_t structure, please be sure
  	 * this code is fixed accordingly.
-@@ -2356,7 +2375,7 @@
+@@ -2361,7 +2380,7 @@
  {
  	siginfo_t info;
  
@@ -8448,11 +11245,10 @@
  		return -EFAULT;
  
  	/* Not even root can pretend to send signals from the kernel.
-Index: linux-2.6-2.6.12/kernel/sys.c
-===================================================================
---- linux-2.6-2.6.12.orig/kernel/sys.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/kernel/sys.c	2005-08-09 17:53:35.000000000 -0400
-@@ -30,6 +30,7 @@
+diff -Nur linux-2.6.13.org/kernel/sys.c linux-2.6.13/kernel/sys.c
+--- linux-2.6.13.org/kernel/sys.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/kernel/sys.c	2005-09-25 12:34:40.000000000 -0400
+@@ -32,6 +32,7 @@
  #include <linux/compat.h>
  #include <linux/syscalls.h>
  
@@ -8460,10 +11256,9 @@
  #include <asm/uaccess.h>
  #include <asm/io.h>
  #include <asm/unistd.h>
-Index: linux-2.6-2.6.12/mm/shmem.c
-===================================================================
---- linux-2.6-2.6.12.orig/mm/shmem.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/mm/shmem.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/mm/shmem.c linux-2.6.13/mm/shmem.c
+--- linux-2.6.13.org/mm/shmem.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/mm/shmem.c	2005-09-25 12:34:40.000000000 -0400
 @@ -461,7 +461,7 @@
  	} while (next);
  }
@@ -8473,10 +11268,9 @@
  {
  	struct shmem_inode_info *info = SHMEM_I(inode);
  	unsigned long idx;
-Index: linux-2.6-2.6.12/sound/drivers/opl3/opl3_lib.c
-===================================================================
---- linux-2.6-2.6.12.orig/sound/drivers/opl3/opl3_lib.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/sound/drivers/opl3/opl3_lib.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/sound/drivers/opl3/opl3_lib.c linux-2.6.13/sound/drivers/opl3/opl3_lib.c
+--- linux-2.6.13.org/sound/drivers/opl3/opl3_lib.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/sound/drivers/opl3/opl3_lib.c	2005-09-25 12:34:40.000000000 -0400
 @@ -40,7 +40,7 @@
  static void snd_opl2_command(opl3_t * opl3, unsigned short cmd, unsigned char val)
  {
@@ -8556,16 +11350,18 @@
  #if 0
  	snd_printk("AdLib IRQ status = 0x%x\n", status);
  #endif
-@@ -333,6 +333,8 @@
+@@ -333,6 +333,10 @@
  		release_resource(opl3->res_r_port);
  		kfree_nocheck(opl3->res_r_port);
  	}
-+	iounmap(opl3->l_port);
-+	iounmap(opl3->r_port);
++	if (opl3->unmap_on_free) {
++		iounmap(opl3->l_port);
++		iounmap(opl3->r_port);
++	}
  	kfree(opl3);
  	return 0;
  }
-@@ -397,12 +399,13 @@
+@@ -397,12 +401,14 @@
  	return 0;
  }
  
@@ -8578,6 +11374,7 @@
 +static int snd_opl3_create_main(snd_card_t * card,
 +				void __iomem *l_port,
 +				void __iomem *r_port,
++				int unmap_on_free,
 +				struct resource *res_l_port,
 +				struct resource *res_r_port,
 +				unsigned short hardware,
@@ -8585,7 +11382,7 @@
  {
  	opl3_t *opl3;
  	int err;
-@@ -410,21 +413,10 @@
+@@ -410,21 +416,11 @@
  	*ropl3 = NULL;
  	if ((err = snd_opl3_new(card, hardware, &opl3)) < 0)
  		return err;
@@ -8604,12 +11401,13 @@
 -	}
  	opl3->l_port = l_port;
  	opl3->r_port = r_port;
++	opl3->unmap_on_free = unmap_on_free;
 +	opl3->res_l_port = res_l_port;
 +	opl3->res_r_port = res_r_port;
  
  	switch (opl3->hardware) {
  	/* some hardware doesn't support timers */
-@@ -455,6 +447,67 @@
+@@ -455,6 +451,67 @@
  	return 0;
  }
  
@@ -8619,7 +11417,7 @@
 +			   unsigned short hardware,
 +			   opl3_t ** ropl3)
 +{
-+	return snd_opl3_create_main(card, l_port, r_port, NULL, NULL, hardware, ropl3);
++	return snd_opl3_create_main(card, l_port, r_port, 0, NULL, NULL, hardware, ropl3);
 +}
 +
 +int snd_opl3_create(snd_card_t * card,
@@ -8656,7 +11454,7 @@
 +		goto fail;
 +	}
 +	
-+	return snd_opl3_create_main(card, l_mapped, r_mapped, res_l_port, res_r_port, hardware, ropl3);
++	return snd_opl3_create_main(card, l_mapped, r_mapped, 1, res_l_port, res_r_port, hardware, ropl3);
 +
 +fail:
 +	if (res_l_port) {
@@ -8677,7 +11475,7 @@
  int snd_opl3_timer_new(opl3_t * opl3, int timer1_dev, int timer2_dev)
  {
  	int err;
-@@ -534,6 +587,7 @@
+@@ -534,6 +591,7 @@
  EXPORT_SYMBOL(snd_opl3_new);
  EXPORT_SYMBOL(snd_opl3_init);
  EXPORT_SYMBOL(snd_opl3_create);
@@ -8685,10 +11483,9 @@
  EXPORT_SYMBOL(snd_opl3_timer_new);
  EXPORT_SYMBOL(snd_opl3_hwdep_new);
  
-Index: linux-2.6-2.6.12/sound/oss/ad1889.c
-===================================================================
---- linux-2.6-2.6.12.orig/sound/oss/ad1889.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/sound/oss/ad1889.c	2005-08-09 17:53:35.000000000 -0400
+diff -Nur linux-2.6.13.org/sound/oss/ad1889.c linux-2.6.13/sound/oss/ad1889.c
+--- linux-2.6.13.org/sound/oss/ad1889.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/sound/oss/ad1889.c	2005-09-25 12:34:40.000000000 -0400
 @@ -74,7 +74,7 @@
  
  	DBG("Setting WAV rate to %d\n", rate);
@@ -8795,7 +11592,7 @@
  
  	spin_unlock_irqrestore(&state->card->lock, flags);
  }
-@@ -301,53 +301,53 @@
+@@ -300,53 +300,53 @@
  	int len, i;
  	ad1889_dev_t *dev = data;
  	ad1889_reg_t regs[] = {
@@ -8896,7 +11693,7 @@
  		{ NULL }
  	};
  
-@@ -400,9 +400,9 @@
+@@ -399,9 +399,9 @@
  	}
  	
  	if (dmabuf->enable & DAC_RUNNING)
@@ -8908,7 +11705,7 @@
  
  	return (unsigned long)bus_to_virt((unsigned long)offset) - (unsigned long)dmabuf->rawbuf;
  }
-@@ -639,9 +639,9 @@
+@@ -638,9 +638,9 @@
  		if (val > 5400 && val < 48000)
  		{
  			if (file->f_mode & FMODE_WRITE)
@@ -8920,7 +11717,7 @@
  		}
  		return 0;
  
-@@ -649,22 +649,22 @@
+@@ -648,22 +648,22 @@
  		if (get_user(val, p))
  			return -EFAULT;
  		if (file->f_mode & FMODE_READ) {
@@ -8947,7 +11744,7 @@
  		}
  
  		return 0;
-@@ -739,7 +739,7 @@
+@@ -738,7 +738,7 @@
  		break;
  
  	case SOUND_PCM_READ_RATE:
@@ -8956,7 +11753,7 @@
  
  	case SOUND_PCM_READ_CHANNELS:
  	case SOUND_PCM_READ_BITS:
-@@ -769,7 +769,7 @@
+@@ -768,7 +768,7 @@
  
  	ad1889_set_wav_rate(ad1889_dev, 48000);
  	ad1889_set_wav_fmt(ad1889_dev, AFMT_S16_LE);
@@ -8965,7 +11762,7 @@
  	return nonseekable_open(inode, file);
  }
  
-@@ -826,15 +826,15 @@
+@@ -825,15 +825,15 @@
  {
  	ad1889_dev_t *dev = ac97->private_data;
  
@@ -8985,7 +11782,7 @@
  }	
  
  static int ad1889_ac97_init(ad1889_dev_t *dev, int id)
-@@ -883,24 +883,24 @@
+@@ -882,24 +882,24 @@
  	int retry = 200;
  	ad1889_dev_t *dev = pci_get_drvdata(pcidev);
  
@@ -9018,7 +11815,7 @@
  			break;
  		WAIT_10MS();
  		retry--;
-@@ -908,16 +908,16 @@
+@@ -907,16 +907,16 @@
  
  	if (!retry) {
  		printk(KERN_ERR "ad1889_aclink_reset: codec is not ready [0x%x]\n",
@@ -9038,7 +11835,7 @@
  	return 0;
  }
  
-@@ -935,10 +935,10 @@
+@@ -934,10 +934,10 @@
  	u32 stat;
  	ad1889_dev_t *dev = (ad1889_dev_t *)dev_id;
  
@@ -9051,7 +11848,7 @@
  
  	if (stat & 0x8) {		/* WAVI */
  		DBG("WAV interrupt\n");
-@@ -964,15 +964,15 @@
+@@ -963,15 +963,15 @@
  	u32 tmp32;
  
  	/* make sure the interrupt bits are setup the way we want */
@@ -9071,7 +11868,7 @@
  }
  
  static int __devinit ad1889_probe(struct pci_dev *pcidev, const struct pci_device_id *ent)
-@@ -1005,7 +1005,7 @@
+@@ -1004,7 +1004,7 @@
  		goto out1;
  	}
  
@@ -9080,10 +11877,9 @@
  	if (!dev->regbase) {
  		printk(KERN_ERR DEVNAME ": unable to remap iomem\n");
  		goto out2;
-Index: linux-2.6-2.6.12/sound/oss/ad1889.h
-===================================================================
---- linux-2.6-2.6.12.orig/sound/oss/ad1889.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/sound/oss/ad1889.h	2005-08-09 17:53:36.000000000 -0400
+diff -Nur linux-2.6.13.org/sound/oss/ad1889.h linux-2.6.13/sound/oss/ad1889.h
+--- linux-2.6.13.org/sound/oss/ad1889.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/sound/oss/ad1889.h	2005-09-25 12:34:40.000000000 -0400
 @@ -1,57 +1,58 @@
  #ifndef _AD1889_H_
  #define _AD1889_H_
@@ -9203,10 +11999,21 @@
  
  #define AD_WAV_STATE	0
  #define AD_ADC_STATE	1
-Index: linux-2.6-2.6.12/sound/parisc/harmony.c
-===================================================================
---- linux-2.6-2.6.12.orig/sound/parisc/harmony.c	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/sound/parisc/harmony.c	2005-08-09 17:53:36.000000000 -0400
+diff -Nur linux-2.6.13.org/sound/oss/harmony.c linux-2.6.13/sound/oss/harmony.c
+--- linux-2.6.13.org/sound/oss/harmony.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/sound/oss/harmony.c	2005-09-25 12:34:40.000000000 -0400
+@@ -1236,7 +1236,7 @@
+ 	}
+ 
+ 	/* Set the HPA of harmony */
+-	harmony.hpa = (struct harmony_hpa *)dev->hpa;
++	harmony.hpa = (struct harmony_hpa *)dev->hpa.start;
+ 	harmony.dev = dev;
+ 
+ 	/* Grab the ID and revision from the device */
+diff -Nur linux-2.6.13.org/sound/parisc/harmony.c linux-2.6.13/sound/parisc/harmony.c
+--- linux-2.6.13.org/sound/parisc/harmony.c	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/sound/parisc/harmony.c	2005-09-25 12:34:40.000000000 -0400
 @@ -197,7 +197,7 @@
  	spin_unlock(&h->lock);
  
@@ -9398,10 +12205,27 @@
  };
  
  static void __init 
-Index: linux-2.6-2.6.12/sound/parisc/harmony.h
-===================================================================
---- linux-2.6-2.6.12.orig/sound/parisc/harmony.h	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/sound/parisc/harmony.h	2005-08-09 17:53:36.000000000 -0400
+@@ -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 -Nur linux-2.6.13.org/sound/parisc/harmony.h linux-2.6.13/sound/parisc/harmony.h
+--- linux-2.6.13.org/sound/parisc/harmony.h	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/sound/parisc/harmony.h	2005-09-25 12:34:40.000000000 -0400
 @@ -61,7 +61,7 @@
  #define HARMONY_SIZE       64
  
@@ -9449,29 +12273,28 @@
  #define HARMONY_GAIN_OUT        0x3f
  #define HARMONY_GAIN_LO_SHIFT   6
  #define HARMONY_GAIN_LO_MASK    (HARMONY_GAIN_OUT << HARMONY_GAIN_LO_SHIFT)
-Index: linux-2.6-2.6.12/sound/pci/Kconfig
-===================================================================
---- linux-2.6-2.6.12.orig/sound/pci/Kconfig	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/sound/pci/Kconfig	2005-08-09 17:53:36.000000000 -0400
+diff -Nur linux-2.6.13.org/sound/pci/Kconfig linux-2.6.13/sound/pci/Kconfig
+--- linux-2.6.13.org/sound/pci/Kconfig	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/sound/pci/Kconfig	2005-09-25 12:34:40.000000000 -0400
 @@ -21,6 +21,26 @@
  	  To compile this driver as a module, choose M here: the module
  	  will be called snd-ali5451.
  
 +config SND_AD1889
 +	tristate "Analog Devices AD1889"
-+	depends on SND && PARISC
++	depends on SND
 +	select SND_AC97_CODEC
 +	help
 +	  Say Y here to include support for the integrated AC97 sound
-+	  device on the Hewlett-Packard [BCJ]-xxx0 class PA-RISC
-+	  workstations, using the AD1819 codec.
++	  device found in particular on the Hewlett-Packard [BCJ]-xxx0
++	  class PA-RISC workstations, using the AD1819 codec.
 +
 +	  To compile this as a module, choose M here: the module
 +	  will be called snd-ad1889.
 +
 +config SND_AD1889_OPL3
-+	bool "Analog Devices AD1889 OPL3 Support"
-+	depends on SND_AD1889
++	bool "Analog Devices AD1889 OPL3 Support (Experimental)"
++	depends on SND_AD1889 && EXPERIMENTAL
 +	select SND_OPL3_LIB
 +	help
 +	  Say Y here to include support for the OPL3-compatible interface
@@ -9480,10 +12303,9 @@
  config SND_ATIIXP
  	tristate "ATI IXP AC97 Controller"
  	depends on SND
-Index: linux-2.6-2.6.12/sound/pci/Makefile
-===================================================================
---- linux-2.6-2.6.12.orig/sound/pci/Makefile	2005-08-09 09:52:27.000000000 -0400
-+++ linux-2.6-2.6.12/sound/pci/Makefile	2005-08-09 17:53:36.000000000 -0400
+diff -Nur linux-2.6.13.org/sound/pci/Makefile linux-2.6.13/sound/pci/Makefile
+--- linux-2.6.13.org/sound/pci/Makefile	2005-08-28 19:41:01.000000000 -0400
++++ linux-2.6.13/sound/pci/Makefile	2005-09-25 12:34:40.000000000 -0400
 @@ -4,6 +4,7 @@
  #
  
@@ -9500,11 +12322,10 @@
  obj-$(CONFIG_SND_ATIIXP) += snd-atiixp.o
  obj-$(CONFIG_SND_ATIIXP_MODEM) += snd-atiixp-modem.o
  obj-$(CONFIG_SND_AZT3328) += snd-azt3328.o
-Index: linux-2.6-2.6.12/sound/pci/ad1889.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6-2.6.12/sound/pci/ad1889.c	2005-08-09 17:53:36.000000000 -0400
-@@ -0,0 +1,1210 @@
+diff -Nur linux-2.6.13.org/sound/pci/ad1889.c linux-2.6.13/sound/pci/ad1889.c
+--- linux-2.6.13.org/sound/pci/ad1889.c	1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.13/sound/pci/ad1889.c	2005-09-25 12:34:40.000000000 -0400
+@@ -0,0 +1,1141 @@
 +/* Analog Devices 1889 audio driver
 + *
 + * This is a driver for the AD1889 PCI audio chipset found
@@ -9591,15 +12412,11 @@
 +/* let's use the global sound debug interfaces */
 +#define ad1889_debug(fmt, arg...) snd_printd(KERN_DEBUG fmt, ## arg)
 +
-+/* keep track of each hw register */
++/* keep track of some hw registers */
 +struct ad1889_register_state {
 +	u16 reg;	/* reg setup */
 +	u32 addr;	/* dma base address */
-+	u16 rate;	/* sample rate */
-+	unsigned long pos;	/* last recorded DMA buffer position */
-+	unsigned long buf;	/* period # */
 +	unsigned long size;	/* DMA buffer size */
-+	unsigned long count;	/* period size, aka nb bytes sent in the current DMA transfer */
 +};
 +
 +struct snd_ad1889 {
@@ -9631,13 +12448,6 @@
 +	struct ad1889_register_state wave;
 +	struct ad1889_register_state ramc;
 +
-+	struct {
-+		unsigned long wav_intr;
-+		unsigned long adc_intr;
-+		unsigned long syn_intr;
-+		unsigned long res_intr;
-+	} stats;
-+
 +	spinlock_t lock;
 +};
 +
@@ -9685,22 +12495,46 @@
 +}
 +
 +static inline void
-+ad1889_load_adc_count(struct snd_ad1889 *chip, u32 count)
++ad1889_load_adc_buffer_address(struct snd_ad1889 *chip, u32 address)
 +{
++	ad1889_writel(chip, AD_DMA_ADCBA, address);
++	ad1889_writel(chip, AD_DMA_ADCCA, address);
++}
++
++static inline void
++ad1889_load_adc_buffer_count(struct snd_ad1889 *chip, u32 count)
++{
 +	ad1889_writel(chip, AD_DMA_ADCBC, count);
 +	ad1889_writel(chip, AD_DMA_ADCCC, count);
++}
++
++static inline void
++ad1889_load_adc_interrupt_count(struct snd_ad1889 *chip, u32 count)
++{
 +	ad1889_writel(chip, AD_DMA_ADCIB, count);
 +	ad1889_writel(chip, AD_DMA_ADCIC, count);
-+}	
++}
 +
 +static inline void
-+ad1889_load_wave_count(struct snd_ad1889 *chip, u32 count)
++ad1889_load_wave_buffer_address(struct snd_ad1889 *chip, u32 address)
 +{
++	ad1889_writel(chip, AD_DMA_WAVBA, address);
++	ad1889_writel(chip, AD_DMA_WAVCA, address);
++}
++
++static inline void
++ad1889_load_wave_buffer_count(struct snd_ad1889 *chip, u32 count)
++{
 +	ad1889_writel(chip, AD_DMA_WAVBC, count);
 +	ad1889_writel(chip, AD_DMA_WAVCC, count);
++}
++
++static inline void
++ad1889_load_wave_interrupt_count(struct snd_ad1889 *chip, u32 count)
++{
 +	ad1889_writel(chip, AD_DMA_WAVIB, count);
 +	ad1889_writel(chip, AD_DMA_WAVIC, count);
-+}	
++}
 +
 +static void
 +ad1889_channel_reset(struct snd_ad1889 *chip, unsigned int channel)
@@ -9720,9 +12554,9 @@
 +		ad1889_writew(chip, AD_DMA_WAV, reg);
 +
 +		/* clear IRQ and address counters and pointers */
-+		ad1889_load_wave_count(chip, 0x0);
-+		ad1889_writel(chip, AD_DMA_WAVBA, 0x0);
-+		ad1889_writel(chip, AD_DMA_WAVCA, 0x0);
++		ad1889_load_wave_buffer_address(chip, 0x0);
++		ad1889_load_wave_buffer_count(chip, 0x0);
++		ad1889_load_wave_interrupt_count(chip, 0x0);
 +
 +		/* flush */
 +		ad1889_readw(chip, AD_DMA_WAV);
@@ -9739,9 +12573,9 @@
 +		reg &= ~AD_DMA_LOOP;
 +		ad1889_writew(chip, AD_DMA_ADC, reg);
 +	
-+		ad1889_load_adc_count(chip, 0x0);
-+		ad1889_writel(chip, AD_DMA_ADCBA, 0x0);
-+		ad1889_writel(chip, AD_DMA_ADCCA, 0x0);
++		ad1889_load_adc_buffer_address(chip, 0x0);
++		ad1889_load_adc_buffer_count(chip, 0x0);
++		ad1889_load_adc_interrupt_count(chip, 0x0);
 +
 +		/* flush */
 +		ad1889_readw(chip, AD_DMA_ADC);
@@ -9803,11 +12637,11 @@
 +	.rate_max = 48000,
 +	.channels_min = 1,
 +	.channels_max = 2,
-+	.buffer_bytes_max = DMA_SIZE,	/* max DMA buffer size in bytes */
-+	.period_bytes_min = BUF_SIZE,	/* min size of period in bytes */
-+	.period_bytes_max = DMA_SIZE,	/* max size of period in bytes */
-+	.periods_min = 1,		/* min nb of periods in buffer */
-+	.periods_max = MAX_BUFS,
++	.buffer_bytes_max = BUFFER_BYTES_MAX,
++	.period_bytes_min = PERIOD_BYTES_MIN,
++	.period_bytes_max = PERIOD_BYTES_MAX,
++	.periods_min = PERIODS_MIN,
++	.periods_max = PERIODS_MAX,
 +	/*.fifo_size = 0,*/
 +};
 +
@@ -9820,11 +12654,11 @@
 +	.rate_max = 48000,
 +	.channels_min = 1,
 +	.channels_max = 2,
-+	.buffer_bytes_max = DMA_SIZE,	/* max DMA buffer size in bytes */
-+	.period_bytes_min = BUF_SIZE,	/* min size of period in bytes */
-+	.period_bytes_max = DMA_SIZE,	/* max size of period in bytes */
-+	.periods_min = 1,		/* min nb of periods in buffer */
-+	.periods_max = MAX_BUFS,
++	.buffer_bytes_max = BUFFER_BYTES_MAX,
++	.period_bytes_min = PERIOD_BYTES_MIN,
++	.period_bytes_max = PERIOD_BYTES_MAX,
++	.periods_min = PERIODS_MIN,
++	.periods_max = PERIODS_MAX,
 +	/*.fifo_size = 0,*/
 +};
 +
@@ -9894,24 +12728,18 @@
 +	spin_lock_irq(&chip->lock);
 +	
 +	chip->wave.size = size;
-+	chip->wave.count = count;
 +	chip->wave.reg = reg;
-+	chip->wave.buf = 0;
-+	chip->wave.pos = 0;
-+	chip->wave.rate = rt->rate;
 +	chip->wave.addr = rt->dma_addr;
 +
 +	ad1889_writew(chip, AD_DS_WSMC, chip->wave.reg);
 +	
 +	/* Set sample rates on the codec */
-+	ad1889_writew(chip, AD_DS_WAS, chip->wave.rate);
++	ad1889_writew(chip, AD_DS_WAS, rt->rate);
 +
-+	/* Set up DMA: first chunk address in curr addr, next one in base addr.
-+	   Base will be loaded into curr by the hardware upon interrupt
-+	   (as we use LOOP). Count holds the size of the chunk. */
-+	ad1889_writel(chip, AD_DMA_WAVCA, chip->wave.addr);
-+	ad1889_writel(chip, AD_DMA_WAVBA, chip->wave.addr + (count % size));
-+	ad1889_load_wave_count(chip, chip->wave.count);
++	/* Set up DMA */
++	ad1889_load_wave_buffer_address(chip, chip->wave.addr);
++	ad1889_load_wave_buffer_count(chip, size);
++	ad1889_load_wave_interrupt_count(chip, count);
 +
 +	/* writes flush */
 +	ad1889_readw(chip, AD_DS_WSMC);
@@ -9920,7 +12748,7 @@
 +	
 +	ad1889_debug("prepare playback: addr = 0x%x, count = %u, "
 +			"size = %u, reg = 0x%x, rate = %u\n", chip->wave.addr,
-+			count, size, reg, chip->wave.rate);
++			count, size, reg, rt->rate);
 +	return 0;
 +}
 +
@@ -9950,21 +12778,15 @@
 +	spin_lock_irq(&chip->lock);
 +	
 +	chip->ramc.size = size;
-+	chip->ramc.count = count;
 +	chip->ramc.reg = reg;
-+	chip->ramc.buf = 0;
-+	chip->ramc.pos = 0;
-+	chip->ramc.rate = rt->rate;
 +	chip->ramc.addr = rt->dma_addr;
 +
 +	ad1889_writew(chip, AD_DS_RAMC, chip->ramc.reg);
 +
-+	/* Set up DMA: first chunk address in curr addr, next one in base addr.
-+	   Base will be loaded into curr by the hardware upon interrupt
-+	   (as we use LOOP). Count holds the size of the chunk. */
-+	ad1889_writel(chip, AD_DMA_ADCCA, chip->ramc.addr);
-+	ad1889_writel(chip, AD_DMA_ADCBA, chip->ramc.addr + (count % size));
-+	ad1889_load_adc_count(chip, chip->ramc.count);
++	/* Set up DMA */
++	ad1889_load_adc_buffer_address(chip, chip->ramc.addr);
++	ad1889_load_adc_buffer_count(chip, size);
++	ad1889_load_adc_interrupt_count(chip, count);
 +
 +	/* writes flush */
 +	ad1889_readw(chip, AD_DS_RAMC);
@@ -9973,7 +12795,7 @@
 +	
 +	ad1889_debug("prepare capture: addr = 0x%x, count = %u, "
 +			"size = %u, reg = 0x%x, rate = %u\n", chip->ramc.addr,
-+			count, size, reg, chip->ramc.rate);
++			count, size, reg, rt->rate);
 +	return 0;
 +}
 +
@@ -10120,7 +12942,6 @@
 +		     struct pt_regs *regs)
 +{
 +	unsigned long st;
-+	unsigned long next;
 +	struct snd_ad1889 *chip = dev_id;
 +
 +	st = ad1889_readl(chip, AD_DMA_DISR);
@@ -10136,82 +12957,12 @@
 +	if (st & (AD_DMA_DISR_PMAI|AD_DMA_DISR_PTAI))
 +		ad1889_debug("Unexpected master or target abort interrupt!\n");
 +
-+	if (chip->pcm && (st & AD_DMA_DISR_WAVI) && chip->psubs) {
-+		spin_lock(&chip->lock);
-+
-+		chip->stats.wav_intr++;
-+
-+		chip->wave.buf++;
-+
-+		/* calculate the current position: we get interrupts everytime
-+		   the buffer empties, thus every wave.count bytes transfered */
-+		chip->wave.pos += chip->wave.count;
-+		chip->wave.pos %= chip->wave.size;
-+
-+		/* the next buffer will thus be current position + wave.count
-+		   bytes away */
-+		next = chip->wave.pos + chip->wave.count;
-+		next %= chip->wave.size;
-+		
-+		/* Load new DMA parameters (aka "the next chunk" in Base
-+		   registers: upon next interrupt, they'll be automatically
-+		   loaded in the Current registers, and we'll end up here
-+		   preparing the new ones. Since "count" never gets modified
-+		   elsewhere than in _prepare, we don't need to rewrite it. */
-+		ad1889_writel(chip, AD_DMA_WAVBA, chip->wave.addr + next);
-+		
-+		ad1889_readl(chip, AD_DMA_WAVBA); /* flush all those writes */
-+
-+		spin_unlock(&chip->lock);
-+
++	if ((st & AD_DMA_DISR_WAVI) && chip->psubs)
 +		snd_pcm_period_elapsed(chip->psubs);
-+#if 0
-+		ad1889_debug("chip->wave.pos = %d, chip->wave.count = %d, "
-+				"chip->wave.size = %d\n", chip->wave.pos,
-+				chip->wave.count, chip->wave.size);
-+		ad1889_debug("chip->wave.addr (0x%lx) + next (0x%lx) = 0x%lx\n",
-+				chip->wave.addr, next, chip->wave.addr + next);
-+#endif		
-+	}
-+
-+	if (chip->pcm && (st & AD_DMA_DISR_ADCI) && chip->csubs) {
-+		spin_lock(&chip->lock);
-+		
-+		chip->stats.adc_intr++;
-+
-+		chip->ramc.buf++;
-+		
-+		/* calculate the current position: we get interrupts everytime
-+		   the buffer empties, thus every wave.count bytes transfered */
-+		chip->ramc.pos += chip->ramc.count;
-+		chip->ramc.pos %= chip->ramc.size;
-+
-+		/* the next buffer will thus be current position + wave.count
-+		   bytes away */
-+		next = chip->ramc.pos + chip->ramc.count;
-+		next %= chip->ramc.size;
-+
-+		/* Load new DMA parameters (aka "the next chunk" in Base
-+		   registers: upon next interrupt, they'll be automatically
-+		   loaded in the Current registers, and we'll end up here
-+		   preparing the new ones. Since "count" never gets modified
-+		   elsewhere than in _prepare, we don't need to rewrite it. */
-+		ad1889_writel(chip, AD_DMA_ADCBA, chip->ramc.addr + next);
-+		
-+		ad1889_readl(chip, AD_DMA_ADCBA); /* flush all those writes */
-+
-+		spin_unlock(&chip->lock);
-+		
++	if ((st & AD_DMA_DISR_ADCI) && chip->csubs)
 +		snd_pcm_period_elapsed(chip->csubs);
-+#if 0
-+		ad1889_debug("chip->ramc.pos = %d, chip->ramc.count = %d, "
-+				"chip->ramc.size = %d\n", chip->ramc.pos,
-+				chip->ramc.count, chip->ramc.size);
-+		ad1889_debug("chip->ramc.addr (0x%lx) + next (0x%lx) = 0x%lx\n",
-+				chip->ramc.addr, next, chip->ramc.addr + next);
-+#endif		
-+	}
 +
++	ad1889_readl(chip, AD_DMA_DISR); /* flush */
 +	/* XXX under some circumstances the DISR write flush may not happen */
 +
 +	return IRQ_HANDLED;
@@ -10257,7 +13008,8 @@
 +
 +	err = snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
 +						snd_dma_pci_data(chip->pci),
-+						DMA_SIZE, DMA_SIZE);
++						BUFFER_BYTES_MAX / 2,
++						BUFFER_BYTES_MAX);
 +
 +	if (err < 0) {
 +		snd_printk(KERN_ERR PFX "buffer allocation error: %d\n", err);
@@ -10362,8 +13114,8 @@
 +
 +static struct ac97_quirk ac97_quirks[] = {
 +	{
-+		.vendor = 0x11d4,	/* AD */
-+		.device = 0x1889,	/* AD1889 */
++		.subvendor = 0x11d4,	/* AD */
++		.subdevice = 0x1889,	/* AD1889 */
 +		.codec_id = AC97_ID_AD1819,
 +		.name = "AD1889",
 +		.type = AC97_TUNE_HP_ONLY
@@ -10715,11 +13467,10 @@
 +
 +module_init(alsa_ad1889_init);
 +module_exit(alsa_ad1889_fini);
-Index: linux-2.6-2.6.12/sound/pci/ad1889.h
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6-2.6.12/sound/pci/ad1889.h	2005-08-09 17:53:36.000000000 -0400
-@@ -0,0 +1,187 @@
+diff -Nur linux-2.6.13.org/sound/pci/ad1889.h linux-2.6.13/sound/pci/ad1889.h
+--- linux-2.6.13.org/sound/pci/ad1889.h	1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.13/sound/pci/ad1889.h	2005-09-25 12:34:40.000000000 -0400
+@@ -0,0 +1,189 @@
 +/* Analog Devices 1889 audio driver
 + * Copyright (C) 2004, Kyle McMartin <kyle at parisc-linux.org>
 + */
@@ -10894,16 +13645,18 @@
 +#define AD_ADC_STATE	1
 +#define AD_MAX_STATES	2
 +
-+/* "<ggg> T-Bone: parisc IOMMU can start DMA at any address.
-+   But the IOMMU can only map at page size granularity."
-+   This affects in particular .period_bytes_min */
-+#define BUF_SIZE        PAGE_SIZE
-+#define MAX_BUFS        32
-+#define DMA_SIZE	(MAX_BUFS*BUF_SIZE)
-+
 +#define AD_CHAN_WAV	0x0001
 +#define AD_CHAN_ADC	0x0002
 +#define AD_CHAN_RES	0x0004
 +#define AD_CHAN_SYN	0x0008
 +
++
++/* The chip would support 4 GB buffers and 16 MB periods,
++ * but let's not overdo it ... */
++#define BUFFER_BYTES_MAX	(256 * 1024)
++#define PERIOD_BYTES_MIN	32
++#define PERIOD_BYTES_MAX	(BUFFER_BYTES_MAX / 2)
++#define PERIODS_MIN		2
++#define PERIODS_MAX		(BUFFER_BYTES_MAX / PERIOD_BYTES_MIN)
++
 +#endif /* __AD1889_H__ */

Modified: people/waldi/linux-2.6/debian/patches-debian/powerpc-apus-todo.patch
===================================================================
--- people/waldi/linux-2.6/debian/patches-debian/powerpc-apus-todo.patch	2005-10-03 20:23:02 UTC (rev 4300)
+++ people/waldi/linux-2.6/debian/patches-debian/powerpc-apus-todo.patch	2005-10-03 20:24:25 UTC (rev 4301)
@@ -8,116 +8,6 @@
 # completeness though
 #
 
-diff -Nur -x CVS linux-2.6.13/include/asm-ppc/io.h linux-2.6.13-apus/include/asm-ppc/io.h
---- linux-2.6.13/include/asm-ppc/io.h	2005-08-29 01:41:01.000000000 +0200
-+++ linux-2.6.13-apus/include/asm-ppc/io.h	2005-07-31 03:18:36.000000000 +0200
-@@ -1,6 +1,6 @@
--#ifdef __KERNEL__
- #ifndef _PPC_IO_H
- #define _PPC_IO_H
-+#ifdef __KERNEL__
- 
- #include <linux/config.h>
- #include <linux/string.h>
-@@ -294,10 +294,10 @@
- __do_out_asm(outb, "stbx")
- #ifdef CONFIG_APUS
- __do_in_asm(inb, "lbzx")
--__do_in_asm(inw, "lhz%U1%X1")
--__do_in_asm(inl, "lwz%U1%X1")
--__do_out_asm(outl,"stw%U0%X0")
--__do_out_asm(outw, "sth%U0%X0")
-+__do_in_asm(inw, "lhzx")
-+__do_in_asm(inl, "lwzx")
-+__do_out_asm(outl,"stwx")
-+__do_out_asm(outw, "sthx")
- #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 @@
- extern void __iomem *ioremap64(unsigned long long address, unsigned long size);
- #endif
- #define ioremap_nocache(addr, size)	ioremap((addr), (size))
-+#define ioremap_writethrough(addr, size) __ioremap((addr), (size), _PAGE_WRITETHRU)
- extern void iounmap(volatile void __iomem *addr);
- extern unsigned long iopa(unsigned long addr);
- extern unsigned long mm_ptov(unsigned long addr) __attribute_const__;
- extern void io_block_mapping(unsigned long virt, phys_addr_t phys,
- 			     unsigned int size, int flags);
- 
-+/* Values for nocacheflag and cmode */
-+#define IOMAP_FULL_CACHING		0
-+#define IOMAP_NOCACHE_SER		1
-+#define IOMAP_NOCACHE_NONSER		2
-+#define IOMAP_WRITETHROUGH		3
-+
- /*
-  * 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 @@
-  */
- extern inline unsigned long virt_to_bus(volatile void * address)
- {
--#ifndef CONFIG_APUS
-         if (address == (void *)0)
- 		return 0;
--        return (unsigned long)address - KERNELBASE + PCI_DRAM_OFFSET;
--#else
--	return iopa ((unsigned long) address);
--#endif
-+	return __pa(address) + PCI_DRAM_OFFSET;
- }
- 
- extern inline void * bus_to_virt(unsigned long address)
- {
--#ifndef CONFIG_APUS
-         if (address == 0)
- 		return NULL;
--        return (void *)(address - PCI_DRAM_OFFSET + KERNELBASE);
--#else
--	return (void*) mm_ptov (address);
--#endif
-+	return __va(address) - PCI_DRAM_OFFSET;
- }
- 
- /*
-@@ -418,20 +417,12 @@
-  */
- extern inline unsigned long virt_to_phys(volatile void * address)
- {
--#ifndef CONFIG_APUS
--	return (unsigned long) address - KERNELBASE;
--#else
--	return iopa ((unsigned long) address);
--#endif
-+	return __pa(address);
- }
- 
- extern inline void * phys_to_virt(unsigned long address)
- {
--#ifndef CONFIG_APUS
--	return (void *) (address + KERNELBASE);
--#else
--	return (void*) mm_ptov (address);
--#endif
-+	return __va(address);
- }
- 
- /*
-@@ -546,8 +537,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 *);
- 
--#endif /* _PPC_IO_H */
--
- #ifdef CONFIG_8260_PCI9
- #include <asm/mpc8260_pci9.h>
- #endif
-@@ -564,3 +553,4 @@
- #define xlate_dev_kmem_ptr(p)	p
- 
- #endif /* __KERNEL__ */
-+#endif /* _PPC_IO_H */
 diff -Nur -x CVS linux-2.6.13/include/video/vga.h linux-2.6.13-apus/include/video/vga.h
 --- linux-2.6.13/include/video/vga.h	2005-08-29 01:41:01.000000000 +0200
 +++ linux-2.6.13-apus/include/video/vga.h	2005-07-30 20:52:54.000000000 +0200

Modified: people/waldi/linux-2.6/debian/patches-debian/powerpc-apus.patch
===================================================================
--- people/waldi/linux-2.6/debian/patches-debian/powerpc-apus.patch	2005-10-03 20:23:02 UTC (rev 4300)
+++ people/waldi/linux-2.6/debian/patches-debian/powerpc-apus.patch	2005-10-03 20:24:25 UTC (rev 4301)
@@ -2896,3 +2896,171 @@
  #include <linux/amifdreg.h>
  #include <linux/amifd.h>
  #include <linux/buffer_head.h>
+diff -Nur -x CVS linux-2.6.13/arch/ppc/Kconfig linux-2.6.13-apus/arch/ppc/Kconfig
+--- linux-2.6.13/arch/ppc/Kconfig	2005-08-28 23:41:01.000000000 +0000
++++ linux-2.6.13-apus/arch/ppc/Kconfig	2005-09-25 07:08:31.000000000 +0000
+@@ -558,7 +576,6 @@
+ 
+ config APUS
+ 	bool "Amiga-APUS"
+-	depends on BROKEN
+ 	help
+ 	  Select APUS if configuring for a PowerUP Amiga.
+ 	  More information is available at:
+diff -Nur -x CVS linux-2.6.13/include/asm-ppc/io.h linux-2.6.13-apus/include/asm-ppc/io.h
+--- linux-2.6.13/include/asm-ppc/io.h	2005-08-29 01:41:01.000000000 +0200
++++ linux-2.6.13-apus/include/asm-ppc/io.h	2005-07-31 03:18:36.000000000 +0200
+@@ -1,6 +1,6 @@
+-#ifdef __KERNEL__
+ #ifndef _PPC_IO_H
+ #define _PPC_IO_H
++#ifdef __KERNEL__
+ 
+ #include <linux/config.h>
+ #include <linux/string.h>
+@@ -294,10 +294,10 @@
+ __do_out_asm(outb, "stbx")
+ #ifdef CONFIG_APUS
+ __do_in_asm(inb, "lbzx")
+-__do_in_asm(inw, "lhz%U1%X1")
+-__do_in_asm(inl, "lwz%U1%X1")
+-__do_out_asm(outl,"stw%U0%X0")
+-__do_out_asm(outw, "sth%U0%X0")
++__do_in_asm(inw, "lhzx")
++__do_in_asm(inl, "lwzx")
++__do_out_asm(outl,"stwx")
++__do_out_asm(outw, "sthx")
+ #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 @@
+ extern void __iomem *ioremap64(unsigned long long address, unsigned long size);
+ #endif
+ #define ioremap_nocache(addr, size)	ioremap((addr), (size))
++#define ioremap_writethrough(addr, size) __ioremap((addr), (size), _PAGE_WRITETHRU)
+ extern void iounmap(volatile void __iomem *addr);
+ extern unsigned long iopa(unsigned long addr);
+ extern unsigned long mm_ptov(unsigned long addr) __attribute_const__;
+ extern void io_block_mapping(unsigned long virt, phys_addr_t phys,
+ 			     unsigned int size, int flags);
+ 
++/* Values for nocacheflag and cmode */
++#define IOMAP_FULL_CACHING		0
++#define IOMAP_NOCACHE_SER		1
++#define IOMAP_NOCACHE_NONSER		2
++#define IOMAP_WRITETHROUGH		3
++
+ /*
+  * 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 @@
+  */
+ extern inline unsigned long virt_to_bus(volatile void * address)
+ {
+-#ifndef CONFIG_APUS
+         if (address == (void *)0)
+ 		return 0;
+-        return (unsigned long)address - KERNELBASE + PCI_DRAM_OFFSET;
+-#else
+-	return iopa ((unsigned long) address);
+-#endif
++	return __pa(address) + PCI_DRAM_OFFSET;
+ }
+ 
+ extern inline void * bus_to_virt(unsigned long address)
+ {
+-#ifndef CONFIG_APUS
+         if (address == 0)
+ 		return NULL;
+-        return (void *)(address - PCI_DRAM_OFFSET + KERNELBASE);
+-#else
+-	return (void*) mm_ptov (address);
+-#endif
++	return __va(address) - PCI_DRAM_OFFSET;
+ }
+ 
+ /*
+@@ -418,20 +417,12 @@
+  */
+ extern inline unsigned long virt_to_phys(volatile void * address)
+ {
+-#ifndef CONFIG_APUS
+-	return (unsigned long) address - KERNELBASE;
+-#else
+-	return iopa ((unsigned long) address);
+-#endif
++	return __pa(address);
+ }
+ 
+ extern inline void * phys_to_virt(unsigned long address)
+ {
+-#ifndef CONFIG_APUS
+-	return (void *) (address + KERNELBASE);
+-#else
+-	return (void*) mm_ptov (address);
+-#endif
++	return __va(address);
+ }
+ 
+ /*
+@@ -546,8 +537,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 *);
+ 
+-#endif /* _PPC_IO_H */
+-
+ #ifdef CONFIG_8260_PCI9
+ #include <asm/mpc8260_pci9.h>
+ #endif
+@@ -564,3 +553,4 @@
+ #define xlate_dev_kmem_ptr(p)	p
+ 
+ #endif /* __KERNEL__ */
++#endif /* _PPC_IO_H */
+diff -Nur -x CVS linux-2.6.13/include/video/vga.h linux-2.6.13-apus/include/video/vga.h
+--- linux-2.6.13/include/video/vga.h	2005-08-29 01:41:01.000000000 +0200
++++ linux-2.6.13-apus/include/video/vga.h	2005-07-30 20:52:54.000000000 +0200
+@@ -28,6 +28,9 @@
+  * 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
+  */
++#ifdef CONFIG_APUS
++#include <asm/zorro.h>
++#endif
+ #undef inb_p
+ #undef inw_p
+ #undef outb_p
+--- linux-2.6.13/sound/oss/dmasound/dmasound_paula.c	2005-08-29 01:41:01.000000000 +0200
++++ linux-2.6.13-apus/sound/oss/dmasound/dmasound_paula.c	2005-09-25 21:50:11.000000000 +0200
+@@ -244,6 +244,7 @@
+ 			u_char frame[], ssize_t *frameUsed,		\
+ 			ssize_t frameLeft)				\
+ {									\
++	const u_short *ptr = (const u_short *)userPtr;			\
+ 	ssize_t count, used;						\
+ 	u_short data;							\
+ 									\
+@@ -253,7 +254,7 @@
+ 		count = min_t(size_t, userCount, frameLeft)>>1 & ~1;	\
+ 		used = count*2;						\
+ 		while (count > 0) {					\
+-			if (get_user(data, ((u_short *)userPtr)++))	\
++			if (get_user(data, ptr++))			\
+ 				return -EFAULT;				\
+ 			data = convsample(data);			\
+ 			*high++ = data>>8;				\
+@@ -268,12 +269,12 @@
+ 		count = min_t(size_t, userCount, frameLeft)>>2 & ~1;	\
+ 		used = count*4;						\
+ 		while (count > 0) {					\
+-			if (get_user(data, ((u_short *)userPtr)++))	\
++			if (get_user(data, ptr++))			\
+ 				return -EFAULT;				\
+ 			data = convsample(data);			\
+ 			*lefth++ = data>>8;				\
+ 			*leftl++ = (data>>2) & 0x3f;			\
+-			if (get_user(data, ((u_short *)userPtr)++))	\
++			if (get_user(data, ptr++))			\
+ 				return -EFAULT;				\
+ 			data = convsample(data);			\
+ 			*righth++ = data>>8;				\




More information about the Kernel-svn-changes mailing list