aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/sh/boards/renesas/rts7751r2d/setup.c9
-rw-r--r--arch/sh/configs/hs7751rvoip_defconfig2
-rw-r--r--arch/sh/configs/landisk_defconfig2
-rw-r--r--arch/sh/configs/lboxre2_defconfig2
-rw-r--r--arch/sh/configs/rts7751r2d_defconfig8
-rw-r--r--arch/sh/configs/snapgear_defconfig587
-rw-r--r--arch/sh/configs/systemh_defconfig2
-rw-r--r--arch/sh/configs/titan_defconfig2
-rw-r--r--arch/sh/kernel/cpu/sh3/entry.S3
-rw-r--r--arch/sh/kernel/traps.c5
-rw-r--r--arch/sh/mm/Makefile4
-rw-r--r--arch/sh/mm/fault-nommu.c47
-rw-r--r--arch/sh/mm/fault.c3
-rw-r--r--arch/sparc/kernel/entry.S7
-rw-r--r--arch/sparc/kernel/irq.c84
-rw-r--r--arch/sparc/kernel/sparc_ksyms.c1
-rw-r--r--drivers/firewire/fw-ohci.c20
-rw-r--r--drivers/firewire/fw-sbp2.c5
-rw-r--r--drivers/firewire/fw-transaction.c4
-rw-r--r--drivers/firewire/fw-transaction.h2
-rw-r--r--drivers/ieee1394/Kconfig2
-rw-r--r--drivers/ieee1394/sbp2.c5
-rw-r--r--drivers/mtd/Makefile2
-rw-r--r--drivers/mtd/mtdpart.c4
-rw-r--r--drivers/net/s2io.c9
-rw-r--r--drivers/power/Kconfig2
-rw-r--r--drivers/serial/8250.c2
-rw-r--r--drivers/serial/8250_early.c2
-rw-r--r--drivers/video/cg6.c5
-rw-r--r--include/asm-sh/rts7751r2d.h2
-rw-r--r--include/asm-sparc/fcntl.h2
-rw-r--r--include/asm-sparc/floppy.h20
-rw-r--r--include/asm-sparc/irq.h7
-rw-r--r--include/asm-sparc64/dma-mapping.h19
-rw-r--r--include/asm-sparc64/fcntl.h2
-rw-r--r--include/net/sctp/sctp.h10
-rw-r--r--include/net/tcp.h2
-rw-r--r--kernel/exit.c8
-rw-r--r--kernel/printk.c2
-rw-r--r--kernel/signal.c4
-rw-r--r--net/ipv4/af_inet.c2
-rw-r--r--net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c5
-rw-r--r--net/ipv4/raw.c4
-rw-r--r--net/ipv4/route.c4
-rw-r--r--net/ipv4/tcp.c3
-rw-r--r--net/ipv4/tcp_input.c37
-rw-r--r--net/ipv4/tcp_ipv4.c1
-rw-r--r--net/ipv6/af_inet6.c2
-rw-r--r--net/ipv6/tcp_ipv6.c1
-rw-r--r--net/key/af_key.c3
-rw-r--r--net/netfilter/nf_conntrack_expect.c5
-rw-r--r--net/sctp/input.c2
-rw-r--r--net/sctp/ipv6.c2
-rw-r--r--net/sctp/sm_make_chunk.c6
-rw-r--r--net/sctp/sm_statefuns.c103
-rw-r--r--net/sctp/socket.c45
-rw-r--r--net/sctp/tsnmap.c14
-rw-r--r--net/tipc/link.c2
-rw-r--r--net/tipc/name_table.c2
-rw-r--r--net/tipc/node.c2
-rw-r--r--net/wanrouter/wanmain.c1
-rw-r--r--sound/sparc/cs4231.c42
62 files changed, 583 insertions, 615 deletions
diff --git a/arch/sh/boards/renesas/rts7751r2d/setup.c b/arch/sh/boards/renesas/rts7751r2d/setup.c
index e165d85c03b5..6f7029d33241 100644
--- a/arch/sh/boards/renesas/rts7751r2d/setup.c
+++ b/arch/sh/boards/renesas/rts7751r2d/setup.c
@@ -140,12 +140,19 @@ static struct platform_device sm501_device = {
140static struct platform_device *rts7751r2d_devices[] __initdata = { 140static struct platform_device *rts7751r2d_devices[] __initdata = {
141 &uart_device, 141 &uart_device,
142 &heartbeat_device, 142 &heartbeat_device,
143 &cf_ide_device,
144 &sm501_device, 143 &sm501_device,
145}; 144};
146 145
147static int __init rts7751r2d_devices_setup(void) 146static int __init rts7751r2d_devices_setup(void)
148{ 147{
148 int ret;
149
150 if (ctrl_inw(PA_BVERREG) == 0x10) { /* only working on R2D-PLUS */
151 ret = platform_device_register(&cf_ide_device);
152 if (ret)
153 return ret;
154 }
155
149 return platform_add_devices(rts7751r2d_devices, 156 return platform_add_devices(rts7751r2d_devices,
150 ARRAY_SIZE(rts7751r2d_devices)); 157 ARRAY_SIZE(rts7751r2d_devices));
151} 158}
diff --git a/arch/sh/configs/hs7751rvoip_defconfig b/arch/sh/configs/hs7751rvoip_defconfig
index e1a886d621db..5d9da5a02759 100644
--- a/arch/sh/configs/hs7751rvoip_defconfig
+++ b/arch/sh/configs/hs7751rvoip_defconfig
@@ -145,7 +145,7 @@ CONFIG_CPU_SH4=y
145# CONFIG_CPU_SUBTYPE_SH7091 is not set 145# CONFIG_CPU_SUBTYPE_SH7091 is not set
146# CONFIG_CPU_SUBTYPE_SH7750R is not set 146# CONFIG_CPU_SUBTYPE_SH7750R is not set
147# CONFIG_CPU_SUBTYPE_SH7750S is not set 147# CONFIG_CPU_SUBTYPE_SH7750S is not set
148CONFIG_CPU_SUBTYPE_SH7751=y 148# CONFIG_CPU_SUBTYPE_SH7751 is not set
149CONFIG_CPU_SUBTYPE_SH7751R=y 149CONFIG_CPU_SUBTYPE_SH7751R=y
150# CONFIG_CPU_SUBTYPE_SH7760 is not set 150# CONFIG_CPU_SUBTYPE_SH7760 is not set
151# CONFIG_CPU_SUBTYPE_SH4_202 is not set 151# CONFIG_CPU_SUBTYPE_SH4_202 is not set
diff --git a/arch/sh/configs/landisk_defconfig b/arch/sh/configs/landisk_defconfig
index 07310fa03250..f52db125432f 100644
--- a/arch/sh/configs/landisk_defconfig
+++ b/arch/sh/configs/landisk_defconfig
@@ -156,7 +156,7 @@ CONFIG_CPU_SH4=y
156# CONFIG_CPU_SUBTYPE_SH7091 is not set 156# CONFIG_CPU_SUBTYPE_SH7091 is not set
157# CONFIG_CPU_SUBTYPE_SH7750R is not set 157# CONFIG_CPU_SUBTYPE_SH7750R is not set
158# CONFIG_CPU_SUBTYPE_SH7750S is not set 158# CONFIG_CPU_SUBTYPE_SH7750S is not set
159CONFIG_CPU_SUBTYPE_SH7751=y 159# CONFIG_CPU_SUBTYPE_SH7751 is not set
160CONFIG_CPU_SUBTYPE_SH7751R=y 160CONFIG_CPU_SUBTYPE_SH7751R=y
161# CONFIG_CPU_SUBTYPE_SH7760 is not set 161# CONFIG_CPU_SUBTYPE_SH7760 is not set
162# CONFIG_CPU_SUBTYPE_SH4_202 is not set 162# CONFIG_CPU_SUBTYPE_SH4_202 is not set
diff --git a/arch/sh/configs/lboxre2_defconfig b/arch/sh/configs/lboxre2_defconfig
index fa09d68d057a..9fa66d92a4e7 100644
--- a/arch/sh/configs/lboxre2_defconfig
+++ b/arch/sh/configs/lboxre2_defconfig
@@ -159,7 +159,7 @@ CONFIG_CPU_SH4=y
159# CONFIG_CPU_SUBTYPE_SH7091 is not set 159# CONFIG_CPU_SUBTYPE_SH7091 is not set
160# CONFIG_CPU_SUBTYPE_SH7750R is not set 160# CONFIG_CPU_SUBTYPE_SH7750R is not set
161# CONFIG_CPU_SUBTYPE_SH7750S is not set 161# CONFIG_CPU_SUBTYPE_SH7750S is not set
162CONFIG_CPU_SUBTYPE_SH7751=y 162# CONFIG_CPU_SUBTYPE_SH7751 is not set
163CONFIG_CPU_SUBTYPE_SH7751R=y 163CONFIG_CPU_SUBTYPE_SH7751R=y
164# CONFIG_CPU_SUBTYPE_SH7760 is not set 164# CONFIG_CPU_SUBTYPE_SH7760 is not set
165# CONFIG_CPU_SUBTYPE_SH4_202 is not set 165# CONFIG_CPU_SUBTYPE_SH4_202 is not set
diff --git a/arch/sh/configs/rts7751r2d_defconfig b/arch/sh/configs/rts7751r2d_defconfig
index f1e979b1e495..b64f73b704d6 100644
--- a/arch/sh/configs/rts7751r2d_defconfig
+++ b/arch/sh/configs/rts7751r2d_defconfig
@@ -243,8 +243,8 @@ CONFIG_SH_PCLK_FREQ=60000000
243# 243#
244# DMA support 244# DMA support
245# 245#
246CONFIG_SH_DMA=y 246# CONFIG_SH_DMA is not set
247CONFIG_NR_ONCHIP_DMA_CHANNELS=8 247# CONFIG_NR_ONCHIP_DMA_CHANNELS is not set
248# CONFIG_NR_DMA_CHANNELS_BOOL is not set 248# CONFIG_NR_DMA_CHANNELS_BOOL is not set
249 249
250# 250#
@@ -280,7 +280,7 @@ CONFIG_ZERO_PAGE_OFFSET=0x00010000
280CONFIG_BOOT_LINK_OFFSET=0x00800000 280CONFIG_BOOT_LINK_OFFSET=0x00800000
281# CONFIG_UBC_WAKEUP is not set 281# CONFIG_UBC_WAKEUP is not set
282CONFIG_CMDLINE_BOOL=y 282CONFIG_CMDLINE_BOOL=y
283CONFIG_CMDLINE="console=tty0 console=ttySC0,115200 root=/dev/sda1 earlyprintk=bios" 283CONFIG_CMDLINE="console=tty0 console=ttySC0,115200 root=/dev/sda1 earlyprintk=serial"
284 284
285# 285#
286# Bus options 286# Bus options
@@ -1323,7 +1323,7 @@ CONFIG_ENABLE_MUST_CHECK=y
1323# CONFIG_DEBUG_KERNEL is not set 1323# CONFIG_DEBUG_KERNEL is not set
1324CONFIG_LOG_BUF_SHIFT=14 1324CONFIG_LOG_BUF_SHIFT=14
1325# CONFIG_DEBUG_BUGVERBOSE is not set 1325# CONFIG_DEBUG_BUGVERBOSE is not set
1326CONFIG_SH_STANDARD_BIOS=y 1326# CONFIG_SH_STANDARD_BIOS is not set
1327CONFIG_EARLY_SCIF_CONSOLE=y 1327CONFIG_EARLY_SCIF_CONSOLE=y
1328CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 1328CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
1329CONFIG_EARLY_PRINTK=y 1329CONFIG_EARLY_PRINTK=y
diff --git a/arch/sh/configs/snapgear_defconfig b/arch/sh/configs/snapgear_defconfig
index 98503f16f3f5..e4e5d2178131 100644
--- a/arch/sh/configs/snapgear_defconfig
+++ b/arch/sh/configs/snapgear_defconfig
@@ -1,15 +1,24 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.23-rc1
4# Tue Oct 3 12:55:47 2006 4# Thu Jul 26 11:49:11 2007
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 9CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 10CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
11CONFIG_GENERIC_IRQ_PROBE=y 12CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 13CONFIG_GENERIC_CALIBRATE_DELAY=y
14CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_SYS_SUPPORTS_PCI=y
17CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set
21CONFIG_ARCH_NO_VIRT_TO_BUS=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 23
15# 24#
@@ -24,15 +33,18 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
24# 33#
25CONFIG_LOCALVERSION="" 34CONFIG_LOCALVERSION=""
26CONFIG_LOCALVERSION_AUTO=y 35CONFIG_LOCALVERSION_AUTO=y
27CONFIG_SWAP=y 36# CONFIG_SWAP is not set
28# CONFIG_SYSVIPC is not set 37# CONFIG_SYSVIPC is not set
29# CONFIG_POSIX_MQUEUE is not set 38# CONFIG_POSIX_MQUEUE is not set
30# CONFIG_BSD_PROCESS_ACCT is not set 39# CONFIG_BSD_PROCESS_ACCT is not set
31# CONFIG_TASKSTATS is not set 40# CONFIG_TASKSTATS is not set
32# CONFIG_UTS_NS is not set 41# CONFIG_USER_NS is not set
33# CONFIG_AUDIT is not set 42# CONFIG_AUDIT is not set
34# CONFIG_IKCONFIG is not set 43# CONFIG_IKCONFIG is not set
44CONFIG_LOG_BUF_SHIFT=14
45# CONFIG_SYSFS_DEPRECATED is not set
35# CONFIG_RELAY is not set 46# CONFIG_RELAY is not set
47CONFIG_BLK_DEV_INITRD=y
36CONFIG_INITRAMFS_SOURCE="" 48CONFIG_INITRAMFS_SOURCE=""
37CONFIG_CC_OPTIMIZE_FOR_SIZE=y 49CONFIG_CC_OPTIMIZE_FOR_SIZE=y
38CONFIG_SYSCTL=y 50CONFIG_SYSCTL=y
@@ -47,27 +59,25 @@ CONFIG_BUG=y
47CONFIG_ELF_CORE=y 59CONFIG_ELF_CORE=y
48CONFIG_BASE_FULL=y 60CONFIG_BASE_FULL=y
49CONFIG_FUTEX=y 61CONFIG_FUTEX=y
62CONFIG_ANON_INODES=y
50CONFIG_EPOLL=y 63CONFIG_EPOLL=y
64CONFIG_SIGNALFD=y
65CONFIG_TIMERFD=y
66CONFIG_EVENTFD=y
51CONFIG_SHMEM=y 67CONFIG_SHMEM=y
52CONFIG_SLAB=y
53CONFIG_VM_EVENT_COUNTERS=y 68CONFIG_VM_EVENT_COUNTERS=y
69CONFIG_SLAB=y
70# CONFIG_SLUB is not set
71# CONFIG_SLOB is not set
54CONFIG_RT_MUTEXES=y 72CONFIG_RT_MUTEXES=y
55# CONFIG_TINY_SHMEM is not set 73# CONFIG_TINY_SHMEM is not set
56CONFIG_BASE_SMALL=0 74CONFIG_BASE_SMALL=0
57# CONFIG_SLOB is not set
58
59#
60# Loadable module support
61#
62# CONFIG_MODULES is not set 75# CONFIG_MODULES is not set
63
64#
65# Block layer
66#
67CONFIG_BLOCK=y 76CONFIG_BLOCK=y
68# CONFIG_LBD is not set 77# CONFIG_LBD is not set
69# CONFIG_BLK_DEV_IO_TRACE is not set 78# CONFIG_BLK_DEV_IO_TRACE is not set
70# CONFIG_LSF is not set 79# CONFIG_LSF is not set
80# CONFIG_BLK_DEV_BSG is not set
71 81
72# 82#
73# IO Schedulers 83# IO Schedulers
@@ -85,122 +95,103 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
85# 95#
86# System type 96# System type
87# 97#
88# CONFIG_SH_SOLUTION_ENGINE is not set
89# CONFIG_SH_7751_SOLUTION_ENGINE is not set
90# CONFIG_SH_7300_SOLUTION_ENGINE is not set
91# CONFIG_SH_7343_SOLUTION_ENGINE is not set
92# CONFIG_SH_73180_SOLUTION_ENGINE is not set
93# CONFIG_SH_7751_SYSTEMH is not set
94# CONFIG_SH_HP6XX is not set
95# CONFIG_SH_EC3104 is not set
96# CONFIG_SH_SATURN is not set
97# CONFIG_SH_DREAMCAST is not set
98# CONFIG_SH_BIGSUR is not set
99# CONFIG_SH_MPC1211 is not set
100# CONFIG_SH_SH03 is not set
101CONFIG_SH_SECUREEDGE5410=y
102# CONFIG_SH_HS7751RVOIP is not set
103# CONFIG_SH_7710VOIPGW is not set
104# CONFIG_SH_RTS7751R2D is not set
105# CONFIG_SH_R7780RP is not set
106# CONFIG_SH_EDOSK7705 is not set
107# CONFIG_SH_SH4202_MICRODEV is not set
108# CONFIG_SH_LANDISK is not set
109# CONFIG_SH_TITAN is not set
110# CONFIG_SH_SHMIN is not set
111# CONFIG_SH_UNKNOWN is not set
112
113#
114# Processor selection
115#
116CONFIG_CPU_SH4=y 98CONFIG_CPU_SH4=y
117 99# CONFIG_CPU_SUBTYPE_SH7619 is not set
118# 100# CONFIG_CPU_SUBTYPE_SH7206 is not set
119# SH-2 Processor Support
120#
121# CONFIG_CPU_SUBTYPE_SH7604 is not set
122
123#
124# SH-3 Processor Support
125#
126# CONFIG_CPU_SUBTYPE_SH7300 is not set
127# CONFIG_CPU_SUBTYPE_SH7705 is not set 101# CONFIG_CPU_SUBTYPE_SH7705 is not set
128# CONFIG_CPU_SUBTYPE_SH7706 is not set 102# CONFIG_CPU_SUBTYPE_SH7706 is not set
129# CONFIG_CPU_SUBTYPE_SH7707 is not set 103# CONFIG_CPU_SUBTYPE_SH7707 is not set
130# CONFIG_CPU_SUBTYPE_SH7708 is not set 104# CONFIG_CPU_SUBTYPE_SH7708 is not set
131# CONFIG_CPU_SUBTYPE_SH7709 is not set 105# CONFIG_CPU_SUBTYPE_SH7709 is not set
132# CONFIG_CPU_SUBTYPE_SH7710 is not set 106# CONFIG_CPU_SUBTYPE_SH7710 is not set
133 107# CONFIG_CPU_SUBTYPE_SH7712 is not set
134#
135# SH-4 Processor Support
136#
137# CONFIG_CPU_SUBTYPE_SH7750 is not set 108# CONFIG_CPU_SUBTYPE_SH7750 is not set
138# CONFIG_CPU_SUBTYPE_SH7091 is not set 109# CONFIG_CPU_SUBTYPE_SH7091 is not set
139# CONFIG_CPU_SUBTYPE_SH7750R is not set 110# CONFIG_CPU_SUBTYPE_SH7750R is not set
140# CONFIG_CPU_SUBTYPE_SH7750S is not set 111# CONFIG_CPU_SUBTYPE_SH7750S is not set
141CONFIG_CPU_SUBTYPE_SH7751=y 112# CONFIG_CPU_SUBTYPE_SH7751 is not set
142CONFIG_CPU_SUBTYPE_SH7751R=y 113CONFIG_CPU_SUBTYPE_SH7751R=y
143# CONFIG_CPU_SUBTYPE_SH7760 is not set 114# CONFIG_CPU_SUBTYPE_SH7760 is not set
144# CONFIG_CPU_SUBTYPE_SH4_202 is not set 115# CONFIG_CPU_SUBTYPE_SH4_202 is not set
145
146#
147# ST40 Processor Support
148#
149# CONFIG_CPU_SUBTYPE_ST40STB1 is not set 116# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
150# CONFIG_CPU_SUBTYPE_ST40GX1 is not set 117# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
151
152#
153# SH-4A Processor Support
154#
155# CONFIG_CPU_SUBTYPE_SH7770 is not set 118# CONFIG_CPU_SUBTYPE_SH7770 is not set
156# CONFIG_CPU_SUBTYPE_SH7780 is not set 119# CONFIG_CPU_SUBTYPE_SH7780 is not set
157 120# CONFIG_CPU_SUBTYPE_SH7785 is not set
158# 121# CONFIG_CPU_SUBTYPE_SHX3 is not set
159# SH4AL-DSP Processor Support
160#
161# CONFIG_CPU_SUBTYPE_SH73180 is not set
162# CONFIG_CPU_SUBTYPE_SH7343 is not set 122# CONFIG_CPU_SUBTYPE_SH7343 is not set
123# CONFIG_CPU_SUBTYPE_SH7722 is not set
163 124
164# 125#
165# Memory management options 126# Memory management options
166# 127#
128CONFIG_QUICKLIST=y
167CONFIG_MMU=y 129CONFIG_MMU=y
168CONFIG_PAGE_OFFSET=0x80000000 130CONFIG_PAGE_OFFSET=0x80000000
169CONFIG_MEMORY_START=0x08000000 131CONFIG_MEMORY_START=0x08000000
170CONFIG_MEMORY_SIZE=0x01000000 132CONFIG_MEMORY_SIZE=0x01000000
171CONFIG_VSYSCALL=y 133CONFIG_VSYSCALL=y
134CONFIG_ARCH_FLATMEM_ENABLE=y
135CONFIG_ARCH_SPARSEMEM_ENABLE=y
136CONFIG_ARCH_SPARSEMEM_DEFAULT=y
137CONFIG_MAX_ACTIVE_REGIONS=1
138CONFIG_ARCH_POPULATES_NODE_MAP=y
139CONFIG_ARCH_SELECT_MEMORY_MODEL=y
140CONFIG_PAGE_SIZE_4KB=y
141# CONFIG_PAGE_SIZE_8KB is not set
142# CONFIG_PAGE_SIZE_64KB is not set
172CONFIG_SELECT_MEMORY_MODEL=y 143CONFIG_SELECT_MEMORY_MODEL=y
173CONFIG_FLATMEM_MANUAL=y 144CONFIG_FLATMEM_MANUAL=y
174# CONFIG_DISCONTIGMEM_MANUAL is not set 145# CONFIG_DISCONTIGMEM_MANUAL is not set
175# CONFIG_SPARSEMEM_MANUAL is not set 146# CONFIG_SPARSEMEM_MANUAL is not set
176CONFIG_FLATMEM=y 147CONFIG_FLATMEM=y
177CONFIG_FLAT_NODE_MEM_MAP=y 148CONFIG_FLAT_NODE_MEM_MAP=y
178# CONFIG_SPARSEMEM_STATIC is not set 149CONFIG_SPARSEMEM_STATIC=y
179CONFIG_SPLIT_PTLOCK_CPUS=4 150CONFIG_SPLIT_PTLOCK_CPUS=4
180# CONFIG_RESOURCES_64BIT is not set 151# CONFIG_RESOURCES_64BIT is not set
152CONFIG_ZONE_DMA_FLAG=0
153CONFIG_NR_QUICK=2
181 154
182# 155#
183# Cache configuration 156# Cache configuration
184# 157#
185# CONFIG_SH_DIRECT_MAPPED is not set 158# CONFIG_SH_DIRECT_MAPPED is not set
186# CONFIG_SH_WRITETHROUGH is not set 159# CONFIG_SH_WRITETHROUGH is not set
187# CONFIG_SH_OCRAM is not set
188 160
189# 161#
190# Processor features 162# Processor features
191# 163#
192CONFIG_CPU_LITTLE_ENDIAN=y 164CONFIG_CPU_LITTLE_ENDIAN=y
165# CONFIG_CPU_BIG_ENDIAN is not set
193CONFIG_SH_FPU=y 166CONFIG_SH_FPU=y
194# CONFIG_SH_DSP is not set 167# CONFIG_SH_DSP is not set
195# CONFIG_SH_STORE_QUEUES is not set 168# CONFIG_SH_STORE_QUEUES is not set
196CONFIG_CPU_HAS_INTEVT=y 169CONFIG_CPU_HAS_INTEVT=y
170CONFIG_CPU_HAS_INTC_IRQ=y
171CONFIG_CPU_HAS_IPR_IRQ=y
197CONFIG_CPU_HAS_SR_RB=y 172CONFIG_CPU_HAS_SR_RB=y
173CONFIG_CPU_HAS_PTEA=y
174
175#
176# Board support
177#
178# CONFIG_SH_7751_SYSTEMH is not set
179CONFIG_SH_SECUREEDGE5410=y
180# CONFIG_SH_HS7751RVOIP is not set
181# CONFIG_SH_RTS7751R2D is not set
182# CONFIG_SH_LANDISK is not set
183# CONFIG_SH_TITAN is not set
184# CONFIG_SH_LBOX_RE2 is not set
198 185
199# 186#
200# Timer support 187# Timer and clock configuration
201# 188#
202CONFIG_SH_TMU=y 189CONFIG_SH_TMU=y
190CONFIG_SH_TIMER_IRQ=16
203CONFIG_SH_PCLK_FREQ=60000000 191CONFIG_SH_PCLK_FREQ=60000000
192# CONFIG_TICK_ONESHOT is not set
193# CONFIG_NO_HZ is not set
194# CONFIG_HIGH_RES_TIMERS is not set
204 195
205# 196#
206# CPU Frequency scaling 197# CPU Frequency scaling
@@ -210,24 +201,31 @@ CONFIG_SH_PCLK_FREQ=60000000
210# 201#
211# DMA support 202# DMA support
212# 203#
204CONFIG_SH_DMA_API=y
213CONFIG_SH_DMA=y 205CONFIG_SH_DMA=y
214CONFIG_NR_ONCHIP_DMA_CHANNELS=4 206CONFIG_NR_ONCHIP_DMA_CHANNELS=8
215# CONFIG_NR_DMA_CHANNELS_BOOL is not set 207# CONFIG_NR_DMA_CHANNELS_BOOL is not set
216 208
217# 209#
218# Companion Chips 210# Companion Chips
219# 211#
220# CONFIG_HD6446X_SERIES is not set 212
213#
214# Additional SuperH Device Drivers
215#
216# CONFIG_HEARTBEAT is not set
217# CONFIG_PUSH_SWITCH is not set
221 218
222# 219#
223# Kernel features 220# Kernel features
224# 221#
225# CONFIG_HZ_100 is not set 222# CONFIG_HZ_100 is not set
226CONFIG_HZ_250=y 223CONFIG_HZ_250=y
224# CONFIG_HZ_300 is not set
227# CONFIG_HZ_1000 is not set 225# CONFIG_HZ_1000 is not set
228CONFIG_HZ=250 226CONFIG_HZ=250
229# CONFIG_KEXEC is not set 227# CONFIG_KEXEC is not set
230# CONFIG_SMP is not set 228# CONFIG_CRASH_DUMP is not set
231CONFIG_PREEMPT_NONE=y 229CONFIG_PREEMPT_NONE=y
232# CONFIG_PREEMPT_VOLUNTARY is not set 230# CONFIG_PREEMPT_VOLUNTARY is not set
233# CONFIG_PREEMPT is not set 231# CONFIG_PREEMPT is not set
@@ -243,33 +241,24 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
243# 241#
244# Bus options 242# Bus options
245# 243#
244CONFIG_SH_CONCAT_FS=y
246CONFIG_PCI=y 245CONFIG_PCI=y
247# CONFIG_SH_PCIDMA_NONCOHERENT is not set 246CONFIG_SH_PCIDMA_NONCOHERENT=y
248CONFIG_PCI_AUTO=y 247CONFIG_PCI_AUTO=y
249CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 248CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
250# CONFIG_PCI_MULTITHREAD_PROBE is not set 249# CONFIG_ARCH_SUPPORTS_MSI is not set
251 250
252# 251#
253# PCCARD (PCMCIA/CardBus) support 252# PCCARD (PCMCIA/CardBus) support
254# 253#
255 254
256# 255#
257# PCI Hotplug Support
258#
259
260#
261# Executable file formats 256# Executable file formats
262# 257#
263CONFIG_BINFMT_ELF=y 258CONFIG_BINFMT_ELF=y
264# CONFIG_BINFMT_FLAT is not set
265# CONFIG_BINFMT_MISC is not set 259# CONFIG_BINFMT_MISC is not set
266 260
267# 261#
268# Power management options (EXPERIMENTAL)
269#
270# CONFIG_PM is not set
271
272#
273# Networking 262# Networking
274# 263#
275CONFIG_NET=y 264CONFIG_NET=y
@@ -277,21 +266,14 @@ CONFIG_NET=y
277# 266#
278# Networking options 267# Networking options
279# 268#
280# CONFIG_NETDEBUG is not set
281# CONFIG_PACKET is not set 269# CONFIG_PACKET is not set
282# CONFIG_UNIX is not set 270# CONFIG_UNIX is not set
283CONFIG_XFRM=y
284# CONFIG_XFRM_USER is not set
285# CONFIG_XFRM_SUB_POLICY is not set
286# CONFIG_NET_KEY is not set 271# CONFIG_NET_KEY is not set
287CONFIG_INET=y 272CONFIG_INET=y
288# CONFIG_IP_MULTICAST is not set 273# CONFIG_IP_MULTICAST is not set
289# CONFIG_IP_ADVANCED_ROUTER is not set 274# CONFIG_IP_ADVANCED_ROUTER is not set
290CONFIG_IP_FIB_HASH=y 275CONFIG_IP_FIB_HASH=y
291CONFIG_IP_PNP=y 276# CONFIG_IP_PNP is not set
292CONFIG_IP_PNP_DHCP=y
293# CONFIG_IP_PNP_BOOTP is not set
294# CONFIG_IP_PNP_RARP is not set
295# CONFIG_NET_IPIP is not set 277# CONFIG_NET_IPIP is not set
296# CONFIG_NET_IPGRE is not set 278# CONFIG_NET_IPGRE is not set
297# CONFIG_ARPD is not set 279# CONFIG_ARPD is not set
@@ -301,32 +283,21 @@ CONFIG_IP_PNP_DHCP=y
301# CONFIG_INET_IPCOMP is not set 283# CONFIG_INET_IPCOMP is not set
302# CONFIG_INET_XFRM_TUNNEL is not set 284# CONFIG_INET_XFRM_TUNNEL is not set
303# CONFIG_INET_TUNNEL is not set 285# CONFIG_INET_TUNNEL is not set
304CONFIG_INET_XFRM_MODE_TRANSPORT=y 286# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
305CONFIG_INET_XFRM_MODE_TUNNEL=y 287# CONFIG_INET_XFRM_MODE_TUNNEL is not set
306CONFIG_INET_DIAG=y 288# CONFIG_INET_XFRM_MODE_BEET is not set
307CONFIG_INET_TCP_DIAG=y 289# CONFIG_INET_DIAG is not set
308# CONFIG_TCP_CONG_ADVANCED is not set 290# CONFIG_TCP_CONG_ADVANCED is not set
309CONFIG_TCP_CONG_CUBIC=y 291CONFIG_TCP_CONG_CUBIC=y
310CONFIG_DEFAULT_TCP_CONG="cubic" 292CONFIG_DEFAULT_TCP_CONG="cubic"
293# CONFIG_TCP_MD5SIG is not set
311# CONFIG_IPV6 is not set 294# CONFIG_IPV6 is not set
312# CONFIG_INET6_XFRM_TUNNEL is not set 295# CONFIG_INET6_XFRM_TUNNEL is not set
313# CONFIG_INET6_TUNNEL is not set 296# CONFIG_INET6_TUNNEL is not set
314# CONFIG_NETWORK_SECMARK is not set 297# CONFIG_NETWORK_SECMARK is not set
315# CONFIG_NETFILTER is not set 298# CONFIG_NETFILTER is not set
316
317#
318# DCCP Configuration (EXPERIMENTAL)
319#
320# CONFIG_IP_DCCP is not set 299# CONFIG_IP_DCCP is not set
321
322#
323# SCTP Configuration (EXPERIMENTAL)
324#
325# CONFIG_IP_SCTP is not set 300# CONFIG_IP_SCTP is not set
326
327#
328# TIPC Configuration (EXPERIMENTAL)
329#
330# CONFIG_TIPC is not set 301# CONFIG_TIPC is not set
331# CONFIG_ATM is not set 302# CONFIG_ATM is not set
332# CONFIG_BRIDGE is not set 303# CONFIG_BRIDGE is not set
@@ -352,7 +323,17 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
352# CONFIG_HAMRADIO is not set 323# CONFIG_HAMRADIO is not set
353# CONFIG_IRDA is not set 324# CONFIG_IRDA is not set
354# CONFIG_BT is not set 325# CONFIG_BT is not set
326# CONFIG_AF_RXRPC is not set
327
328#
329# Wireless
330#
331# CONFIG_CFG80211 is not set
332# CONFIG_WIRELESS_EXT is not set
333# CONFIG_MAC80211 is not set
355# CONFIG_IEEE80211 is not set 334# CONFIG_IEEE80211 is not set
335# CONFIG_RFKILL is not set
336# CONFIG_NET_9P is not set
356 337
357# 338#
358# Device Drivers 339# Device Drivers
@@ -364,30 +345,88 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
364CONFIG_STANDALONE=y 345CONFIG_STANDALONE=y
365CONFIG_PREVENT_FIRMWARE_BUILD=y 346CONFIG_PREVENT_FIRMWARE_BUILD=y
366# CONFIG_SYS_HYPERVISOR is not set 347# CONFIG_SYS_HYPERVISOR is not set
367
368#
369# Connector - unified userspace <-> kernelspace linker
370#
371# CONFIG_CONNECTOR is not set 348# CONFIG_CONNECTOR is not set
372 349CONFIG_MTD=y
373# 350# CONFIG_MTD_DEBUG is not set
374# Memory Technology Devices (MTD) 351# CONFIG_MTD_CONCAT is not set
375# 352CONFIG_MTD_PARTITIONS=y
376# CONFIG_MTD is not set 353# CONFIG_MTD_REDBOOT_PARTS is not set
377 354# CONFIG_MTD_CMDLINE_PARTS is not set
378# 355
379# Parallel port support 356#
380# 357# User Modules And Translation Layers
358#
359CONFIG_MTD_CHAR=y
360CONFIG_MTD_BLKDEVS=y
361# CONFIG_MTD_BLOCK is not set
362CONFIG_MTD_BLOCK_RO=y
363# CONFIG_FTL is not set
364# CONFIG_NFTL is not set
365# CONFIG_INFTL is not set
366# CONFIG_RFD_FTL is not set
367# CONFIG_SSFDC is not set
368
369#
370# RAM/ROM/Flash chip drivers
371#
372CONFIG_MTD_CFI=y
373# CONFIG_MTD_JEDECPROBE is not set
374CONFIG_MTD_GEN_PROBE=y
375CONFIG_MTD_CFI_ADV_OPTIONS=y
376CONFIG_MTD_CFI_NOSWAP=y
377# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
378# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
379CONFIG_MTD_CFI_GEOMETRY=y
380CONFIG_MTD_MAP_BANK_WIDTH_1=y
381# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
382# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
383# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
384# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
385# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
386CONFIG_MTD_CFI_I1=y
387# CONFIG_MTD_CFI_I2 is not set
388# CONFIG_MTD_CFI_I4 is not set
389# CONFIG_MTD_CFI_I8 is not set
390# CONFIG_MTD_OTP is not set
391CONFIG_MTD_CFI_INTELEXT=y
392# CONFIG_MTD_CFI_AMDSTD is not set
393# CONFIG_MTD_CFI_STAA is not set
394CONFIG_MTD_CFI_UTIL=y
395CONFIG_MTD_RAM=y
396# CONFIG_MTD_ROM is not set
397# CONFIG_MTD_ABSENT is not set
398
399#
400# Mapping drivers for chip access
401#
402# CONFIG_MTD_COMPLEX_MAPPINGS is not set
403# CONFIG_MTD_PHYSMAP is not set
404CONFIG_MTD_PLATRAM=y
405
406#
407# Self-contained MTD device drivers
408#
409# CONFIG_MTD_PMC551 is not set
410# CONFIG_MTD_SLRAM is not set
411# CONFIG_MTD_PHRAM is not set
412# CONFIG_MTD_MTDRAM is not set
413# CONFIG_MTD_BLOCK2MTD is not set
414
415#
416# Disk-On-Chip Device Drivers
417#
418# CONFIG_MTD_DOC2000 is not set
419# CONFIG_MTD_DOC2001 is not set
420# CONFIG_MTD_DOC2001PLUS is not set
421# CONFIG_MTD_NAND is not set
422# CONFIG_MTD_ONENAND is not set
423
424#
425# UBI - Unsorted block images
426#
427# CONFIG_MTD_UBI is not set
381# CONFIG_PARPORT is not set 428# CONFIG_PARPORT is not set
382 429CONFIG_BLK_DEV=y
383#
384# Plug and Play support
385#
386
387#
388# Block devices
389#
390# CONFIG_BLK_CPQ_DA is not set
391# CONFIG_BLK_CPQ_CISS_DA is not set 430# CONFIG_BLK_CPQ_CISS_DA is not set
392# CONFIG_BLK_DEV_DAC960 is not set 431# CONFIG_BLK_DEV_DAC960 is not set
393# CONFIG_BLK_DEV_UMEM is not set 432# CONFIG_BLK_DEV_UMEM is not set
@@ -399,13 +438,9 @@ CONFIG_BLK_DEV_RAM=y
399CONFIG_BLK_DEV_RAM_COUNT=16 438CONFIG_BLK_DEV_RAM_COUNT=16
400CONFIG_BLK_DEV_RAM_SIZE=4096 439CONFIG_BLK_DEV_RAM_SIZE=4096
401CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 440CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
402CONFIG_BLK_DEV_INITRD=y
403# CONFIG_CDROM_PKTCDVD is not set 441# CONFIG_CDROM_PKTCDVD is not set
404# CONFIG_ATA_OVER_ETH is not set 442# CONFIG_ATA_OVER_ETH is not set
405 443# CONFIG_MISC_DEVICES is not set
406#
407# ATA/ATAPI/MFM/RLL support
408#
409# CONFIG_IDE is not set 444# CONFIG_IDE is not set
410 445
411# 446#
@@ -413,16 +448,9 @@ CONFIG_BLK_DEV_INITRD=y
413# 448#
414# CONFIG_RAID_ATTRS is not set 449# CONFIG_RAID_ATTRS is not set
415# CONFIG_SCSI is not set 450# CONFIG_SCSI is not set
451# CONFIG_SCSI_DMA is not set
416# CONFIG_SCSI_NETLINK is not set 452# CONFIG_SCSI_NETLINK is not set
417
418#
419# Serial ATA (prod) and Parallel ATA (experimental) drivers
420#
421# CONFIG_ATA is not set 453# CONFIG_ATA is not set
422
423#
424# Multi-device support (RAID and LVM)
425#
426# CONFIG_MD is not set 454# CONFIG_MD is not set
427 455
428# 456#
@@ -433,35 +461,18 @@ CONFIG_BLK_DEV_INITRD=y
433# 461#
434# IEEE 1394 (FireWire) support 462# IEEE 1394 (FireWire) support
435# 463#
464# CONFIG_FIREWIRE is not set
436# CONFIG_IEEE1394 is not set 465# CONFIG_IEEE1394 is not set
437
438#
439# I2O device support
440#
441# CONFIG_I2O is not set 466# CONFIG_I2O is not set
442
443#
444# Network device support
445#
446CONFIG_NETDEVICES=y 467CONFIG_NETDEVICES=y
468# CONFIG_NETDEVICES_MULTIQUEUE is not set
447# CONFIG_DUMMY is not set 469# CONFIG_DUMMY is not set
448# CONFIG_BONDING is not set 470# CONFIG_BONDING is not set
471# CONFIG_MACVLAN is not set
449# CONFIG_EQUALIZER is not set 472# CONFIG_EQUALIZER is not set
450# CONFIG_TUN is not set 473# CONFIG_TUN is not set
451
452#
453# ARCnet devices
454#
455# CONFIG_ARCNET is not set 474# CONFIG_ARCNET is not set
456
457#
458# PHY device support
459#
460# CONFIG_PHYLIB is not set 475# CONFIG_PHYLIB is not set
461
462#
463# Ethernet (10 or 100Mbit)
464#
465CONFIG_NET_ETHERNET=y 476CONFIG_NET_ETHERNET=y
466CONFIG_MII=y 477CONFIG_MII=y
467# CONFIG_STNIC is not set 478# CONFIG_STNIC is not set
@@ -470,10 +481,6 @@ CONFIG_MII=y
470# CONFIG_CASSINI is not set 481# CONFIG_CASSINI is not set
471# CONFIG_NET_VENDOR_3COM is not set 482# CONFIG_NET_VENDOR_3COM is not set
472# CONFIG_SMC91X is not set 483# CONFIG_SMC91X is not set
473
474#
475# Tulip family network device support
476#
477# CONFIG_NET_TULIP is not set 484# CONFIG_NET_TULIP is not set
478# CONFIG_HP100 is not set 485# CONFIG_HP100 is not set
479CONFIG_NET_PCI=y 486CONFIG_NET_PCI=y
@@ -488,9 +495,9 @@ CONFIG_NET_PCI=y
488# CONFIG_FEALNX is not set 495# CONFIG_FEALNX is not set
489# CONFIG_NATSEMI is not set 496# CONFIG_NATSEMI is not set
490# CONFIG_NE2K_PCI is not set 497# CONFIG_NE2K_PCI is not set
491# CONFIG_8139CP is not set 498CONFIG_8139CP=y
492CONFIG_8139TOO=y 499CONFIG_8139TOO=y
493# CONFIG_8139TOO_PIO is not set 500CONFIG_8139TOO_PIO=y
494# CONFIG_8139TOO_TUNE_TWISTER is not set 501# CONFIG_8139TOO_TUNE_TWISTER is not set
495# CONFIG_8139TOO_8129 is not set 502# CONFIG_8139TOO_8129 is not set
496# CONFIG_8139_OLD_RX_RESET is not set 503# CONFIG_8139_OLD_RX_RESET is not set
@@ -499,47 +506,16 @@ CONFIG_8139TOO=y
499# CONFIG_SUNDANCE is not set 506# CONFIG_SUNDANCE is not set
500# CONFIG_TLAN is not set 507# CONFIG_TLAN is not set
501# CONFIG_VIA_RHINE is not set 508# CONFIG_VIA_RHINE is not set
502 509# CONFIG_SC92031 is not set
503# 510# CONFIG_NETDEV_1000 is not set
504# Ethernet (1000 Mbit) 511# CONFIG_NETDEV_10000 is not set
505#
506# CONFIG_ACENIC is not set
507# CONFIG_DL2K is not set
508# CONFIG_E1000 is not set
509# CONFIG_NS83820 is not set
510# CONFIG_HAMACHI is not set
511# CONFIG_YELLOWFIN is not set
512# CONFIG_R8169 is not set
513# CONFIG_SIS190 is not set
514# CONFIG_SKGE is not set
515# CONFIG_SKY2 is not set
516# CONFIG_SK98LIN is not set
517# CONFIG_VIA_VELOCITY is not set
518# CONFIG_TIGON3 is not set
519# CONFIG_BNX2 is not set
520# CONFIG_QLA3XXX is not set
521
522#
523# Ethernet (10000 Mbit)
524#
525# CONFIG_CHELSIO_T1 is not set
526# CONFIG_IXGB is not set
527# CONFIG_S2IO is not set
528# CONFIG_MYRI10GE is not set
529
530#
531# Token Ring devices
532#
533# CONFIG_TR is not set 512# CONFIG_TR is not set
534 513
535# 514#
536# Wireless LAN (non-hamradio) 515# Wireless LAN
537#
538# CONFIG_NET_RADIO is not set
539
540#
541# Wan interfaces
542# 516#
517# CONFIG_WLAN_PRE80211 is not set
518# CONFIG_WLAN_80211 is not set
543# CONFIG_WAN is not set 519# CONFIG_WAN is not set
544# CONFIG_FDDI is not set 520# CONFIG_FDDI is not set
545# CONFIG_HIPPI is not set 521# CONFIG_HIPPI is not set
@@ -549,15 +525,7 @@ CONFIG_8139TOO=y
549# CONFIG_NETCONSOLE is not set 525# CONFIG_NETCONSOLE is not set
550# CONFIG_NETPOLL is not set 526# CONFIG_NETPOLL is not set
551# CONFIG_NET_POLL_CONTROLLER is not set 527# CONFIG_NET_POLL_CONTROLLER is not set
552
553#
554# ISDN subsystem
555#
556# CONFIG_ISDN is not set 528# CONFIG_ISDN is not set
557
558#
559# Telephony Support
560#
561# CONFIG_PHONE is not set 529# CONFIG_PHONE is not set
562 530
563# 531#
@@ -565,14 +533,12 @@ CONFIG_8139TOO=y
565# 533#
566CONFIG_INPUT=y 534CONFIG_INPUT=y
567# CONFIG_INPUT_FF_MEMLESS is not set 535# CONFIG_INPUT_FF_MEMLESS is not set
536# CONFIG_INPUT_POLLDEV is not set
568 537
569# 538#
570# Userland interfaces 539# Userland interfaces
571# 540#
572CONFIG_INPUT_MOUSEDEV=y 541# CONFIG_INPUT_MOUSEDEV is not set
573CONFIG_INPUT_MOUSEDEV_PSAUX=y
574CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
575CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
576# CONFIG_INPUT_JOYDEV is not set 542# CONFIG_INPUT_JOYDEV is not set
577# CONFIG_INPUT_TSDEV is not set 543# CONFIG_INPUT_TSDEV is not set
578# CONFIG_INPUT_EVDEV is not set 544# CONFIG_INPUT_EVDEV is not set
@@ -584,27 +550,20 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
584# CONFIG_INPUT_KEYBOARD is not set 550# CONFIG_INPUT_KEYBOARD is not set
585# CONFIG_INPUT_MOUSE is not set 551# CONFIG_INPUT_MOUSE is not set
586# CONFIG_INPUT_JOYSTICK is not set 552# CONFIG_INPUT_JOYSTICK is not set
553# CONFIG_INPUT_TABLET is not set
587# CONFIG_INPUT_TOUCHSCREEN is not set 554# CONFIG_INPUT_TOUCHSCREEN is not set
588# CONFIG_INPUT_MISC is not set 555# CONFIG_INPUT_MISC is not set
589 556
590# 557#
591# Hardware I/O ports 558# Hardware I/O ports
592# 559#
593CONFIG_SERIO=y 560# CONFIG_SERIO is not set
594CONFIG_SERIO_I8042=y
595CONFIG_SERIO_SERPORT=y
596# CONFIG_SERIO_PCIPS2 is not set
597# CONFIG_SERIO_LIBPS2 is not set
598# CONFIG_SERIO_RAW is not set
599# CONFIG_GAMEPORT is not set 561# CONFIG_GAMEPORT is not set
600 562
601# 563#
602# Character devices 564# Character devices
603# 565#
604CONFIG_VT=y 566# CONFIG_VT is not set
605CONFIG_VT_CONSOLE=y
606CONFIG_HW_CONSOLE=y
607# CONFIG_VT_HW_CONSOLE_BINDING is not set
608# CONFIG_SERIAL_NONSTANDARD is not set 567# CONFIG_SERIAL_NONSTANDARD is not set
609 568
610# 569#
@@ -615,42 +574,24 @@ CONFIG_HW_CONSOLE=y
615# 574#
616# Non-8250 serial port support 575# Non-8250 serial port support
617# 576#
618# CONFIG_SERIAL_SH_SCI is not set 577CONFIG_SERIAL_SH_SCI=y
578CONFIG_SERIAL_SH_SCI_NR_UARTS=2
579CONFIG_SERIAL_SH_SCI_CONSOLE=y
580CONFIG_SERIAL_CORE=y
581CONFIG_SERIAL_CORE_CONSOLE=y
619# CONFIG_SERIAL_JSM is not set 582# CONFIG_SERIAL_JSM is not set
620CONFIG_UNIX98_PTYS=y 583CONFIG_UNIX98_PTYS=y
621CONFIG_LEGACY_PTYS=y 584CONFIG_LEGACY_PTYS=y
622CONFIG_LEGACY_PTY_COUNT=256 585CONFIG_LEGACY_PTY_COUNT=256
623
624#
625# IPMI
626#
627# CONFIG_IPMI_HANDLER is not set 586# CONFIG_IPMI_HANDLER is not set
628
629#
630# Watchdog Cards
631#
632# CONFIG_WATCHDOG is not set 587# CONFIG_WATCHDOG is not set
633CONFIG_HW_RANDOM=y 588# CONFIG_HW_RANDOM is not set
634# CONFIG_GEN_RTC is not set
635# CONFIG_DTLK is not set
636# CONFIG_R3964 is not set 589# CONFIG_R3964 is not set
637# CONFIG_APPLICOM is not set 590# CONFIG_APPLICOM is not set
638
639#
640# Ftape, the floppy tape device driver
641#
642# CONFIG_DRM is not set 591# CONFIG_DRM is not set
643# CONFIG_RAW_DRIVER is not set 592# CONFIG_RAW_DRIVER is not set
644
645#
646# TPM devices
647#
648# CONFIG_TCG_TPM is not set 593# CONFIG_TCG_TPM is not set
649# CONFIG_TELCLOCK is not set 594CONFIG_DEVPORT=y
650
651#
652# I2C support
653#
654# CONFIG_I2C is not set 595# CONFIG_I2C is not set
655 596
656# 597#
@@ -658,98 +599,46 @@ CONFIG_HW_RANDOM=y
658# 599#
659# CONFIG_SPI is not set 600# CONFIG_SPI is not set
660# CONFIG_SPI_MASTER is not set 601# CONFIG_SPI_MASTER is not set
602# CONFIG_W1 is not set
603# CONFIG_POWER_SUPPLY is not set
604# CONFIG_HWMON is not set
661 605
662# 606#
663# Dallas's 1-wire bus 607# Multifunction device drivers
664#
665
666#
667# Hardware Monitoring support
668#
669CONFIG_HWMON=y
670# CONFIG_HWMON_VID is not set
671# CONFIG_SENSORS_ABITUGURU is not set
672# CONFIG_SENSORS_F71805F is not set
673# CONFIG_SENSORS_VT1211 is not set
674# CONFIG_HWMON_DEBUG_CHIP is not set
675
676#
677# Misc devices
678# 608#
609# CONFIG_MFD_SM501 is not set
679 610
680# 611#
681# Multimedia devices 612# Multimedia devices
682# 613#
683# CONFIG_VIDEO_DEV is not set 614# CONFIG_VIDEO_DEV is not set
684CONFIG_VIDEO_V4L2=y 615# CONFIG_DVB_CORE is not set
685 616# CONFIG_DAB is not set
686#
687# Digital Video Broadcasting Devices
688#
689# CONFIG_DVB is not set
690 617
691# 618#
692# Graphics support 619# Graphics support
693# 620#
694CONFIG_FIRMWARE_EDID=y 621# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
695# CONFIG_FB is not set
696 622
697# 623#
698# Console display driver support 624# Display device support
699# 625#
700CONFIG_DUMMY_CONSOLE=y 626# CONFIG_DISPLAY_SUPPORT is not set
701# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 627# CONFIG_VGASTATE is not set
628# CONFIG_VIDEO_OUTPUT_CONTROL is not set
629# CONFIG_FB is not set
702 630
703# 631#
704# Sound 632# Sound
705# 633#
706# CONFIG_SOUND is not set 634# CONFIG_SOUND is not set
707 635# CONFIG_HID_SUPPORT is not set
708# 636# CONFIG_USB_SUPPORT is not set
709# USB support
710#
711CONFIG_USB_ARCH_HAS_HCD=y
712CONFIG_USB_ARCH_HAS_OHCI=y
713CONFIG_USB_ARCH_HAS_EHCI=y
714# CONFIG_USB is not set
715
716#
717# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
718#
719
720#
721# USB Gadget Support
722#
723# CONFIG_USB_GADGET is not set
724
725#
726# MMC/SD Card support
727#
728# CONFIG_MMC is not set 637# CONFIG_MMC is not set
729
730#
731# LED devices
732#
733# CONFIG_NEW_LEDS is not set 638# CONFIG_NEW_LEDS is not set
734
735#
736# LED drivers
737#
738
739#
740# LED Triggers
741#
742
743#
744# InfiniBand support
745#
746# CONFIG_INFINIBAND is not set 639# CONFIG_INFINIBAND is not set
747 640
748# 641#
749# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
750#
751
752#
753# Real Time Clock 642# Real Time Clock
754# 643#
755# CONFIG_RTC_CLASS is not set 644# CONFIG_RTC_CLASS is not set
@@ -768,23 +657,29 @@ CONFIG_USB_ARCH_HAS_EHCI=y
768# 657#
769 658
770# 659#
660# Userspace I/O
661#
662# CONFIG_UIO is not set
663
664#
771# File systems 665# File systems
772# 666#
773CONFIG_EXT2_FS=y 667CONFIG_EXT2_FS=y
774# CONFIG_EXT2_FS_XATTR is not set 668# CONFIG_EXT2_FS_XATTR is not set
775# CONFIG_EXT2_FS_XIP is not set 669# CONFIG_EXT2_FS_XIP is not set
776# CONFIG_EXT3_FS is not set 670# CONFIG_EXT3_FS is not set
671# CONFIG_EXT4DEV_FS is not set
777# CONFIG_REISERFS_FS is not set 672# CONFIG_REISERFS_FS is not set
778# CONFIG_JFS_FS is not set 673# CONFIG_JFS_FS is not set
779# CONFIG_FS_POSIX_ACL is not set 674# CONFIG_FS_POSIX_ACL is not set
780# CONFIG_XFS_FS is not set 675# CONFIG_XFS_FS is not set
676# CONFIG_GFS2_FS is not set
781# CONFIG_OCFS2_FS is not set 677# CONFIG_OCFS2_FS is not set
782# CONFIG_MINIX_FS is not set 678# CONFIG_MINIX_FS is not set
783CONFIG_ROMFS_FS=y 679CONFIG_ROMFS_FS=y
784CONFIG_INOTIFY=y 680# CONFIG_INOTIFY is not set
785CONFIG_INOTIFY_USER=y
786# CONFIG_QUOTA is not set 681# CONFIG_QUOTA is not set
787CONFIG_DNOTIFY=y 682# CONFIG_DNOTIFY is not set
788# CONFIG_AUTOFS_FS is not set 683# CONFIG_AUTOFS_FS is not set
789# CONFIG_AUTOFS4_FS is not set 684# CONFIG_AUTOFS4_FS is not set
790# CONFIG_FUSE_FS is not set 685# CONFIG_FUSE_FS is not set
@@ -826,6 +721,7 @@ CONFIG_RAMFS=y
826# CONFIG_BEFS_FS is not set 721# CONFIG_BEFS_FS is not set
827# CONFIG_BFS_FS is not set 722# CONFIG_BFS_FS is not set
828# CONFIG_EFS_FS is not set 723# CONFIG_EFS_FS is not set
724# CONFIG_JFFS2_FS is not set
829CONFIG_CRAMFS=y 725CONFIG_CRAMFS=y
830# CONFIG_VXFS_FS is not set 726# CONFIG_VXFS_FS is not set
831# CONFIG_HPFS_FS is not set 727# CONFIG_HPFS_FS is not set
@@ -836,25 +732,13 @@ CONFIG_CRAMFS=y
836# 732#
837# Network File Systems 733# Network File Systems
838# 734#
839CONFIG_NFS_FS=y 735# CONFIG_NFS_FS is not set
840CONFIG_NFS_V3=y
841# CONFIG_NFS_V3_ACL is not set
842# CONFIG_NFS_V4 is not set
843# CONFIG_NFS_DIRECTIO is not set
844# CONFIG_NFSD is not set 736# CONFIG_NFSD is not set
845CONFIG_ROOT_NFS=y
846CONFIG_LOCKD=y
847CONFIG_LOCKD_V4=y
848CONFIG_NFS_COMMON=y
849CONFIG_SUNRPC=y
850# CONFIG_RPCSEC_GSS_KRB5 is not set
851# CONFIG_RPCSEC_GSS_SPKM3 is not set
852# CONFIG_SMB_FS is not set 737# CONFIG_SMB_FS is not set
853# CONFIG_CIFS is not set 738# CONFIG_CIFS is not set
854# CONFIG_NCP_FS is not set 739# CONFIG_NCP_FS is not set
855# CONFIG_CODA_FS is not set 740# CONFIG_CODA_FS is not set
856# CONFIG_AFS_FS is not set 741# CONFIG_AFS_FS is not set
857# CONFIG_9P_FS is not set
858 742
859# 743#
860# Partition Types 744# Partition Types
@@ -868,6 +752,11 @@ CONFIG_MSDOS_PARTITION=y
868# CONFIG_NLS is not set 752# CONFIG_NLS is not set
869 753
870# 754#
755# Distributed Lock Manager
756#
757# CONFIG_DLM is not set
758
759#
871# Profiling support 760# Profiling support
872# 761#
873# CONFIG_PROFILING is not set 762# CONFIG_PROFILING is not set
@@ -875,36 +764,38 @@ CONFIG_MSDOS_PARTITION=y
875# 764#
876# Kernel hacking 765# Kernel hacking
877# 766#
767CONFIG_TRACE_IRQFLAGS_SUPPORT=y
878# CONFIG_PRINTK_TIME is not set 768# CONFIG_PRINTK_TIME is not set
879CONFIG_ENABLE_MUST_CHECK=y 769CONFIG_ENABLE_MUST_CHECK=y
880# CONFIG_MAGIC_SYSRQ is not set 770# CONFIG_MAGIC_SYSRQ is not set
881# CONFIG_UNUSED_SYMBOLS is not set 771# CONFIG_UNUSED_SYMBOLS is not set
772# CONFIG_DEBUG_FS is not set
773# CONFIG_HEADERS_CHECK is not set
882# CONFIG_DEBUG_KERNEL is not set 774# CONFIG_DEBUG_KERNEL is not set
883CONFIG_LOG_BUF_SHIFT=14
884# CONFIG_DEBUG_BUGVERBOSE is not set 775# CONFIG_DEBUG_BUGVERBOSE is not set
885# CONFIG_DEBUG_FS is not set
886# CONFIG_UNWIND_INFO is not set
887# CONFIG_SH_STANDARD_BIOS is not set 776# CONFIG_SH_STANDARD_BIOS is not set
888# CONFIG_EARLY_SCIF_CONSOLE is not set 777# CONFIG_EARLY_SCIF_CONSOLE is not set
889# CONFIG_KGDB is not set 778# CONFIG_SH_KGDB is not set
890 779
891# 780#
892# Security options 781# Security options
893# 782#
894# CONFIG_KEYS is not set 783# CONFIG_KEYS is not set
895# CONFIG_SECURITY is not set 784# CONFIG_SECURITY is not set
896
897#
898# Cryptographic options
899#
900# CONFIG_CRYPTO is not set 785# CONFIG_CRYPTO is not set
901 786
902# 787#
903# Library routines 788# Library routines
904# 789#
790CONFIG_BITREVERSE=y
905# CONFIG_CRC_CCITT is not set 791# CONFIG_CRC_CCITT is not set
906# CONFIG_CRC16 is not set 792# CONFIG_CRC16 is not set
793# CONFIG_CRC_ITU_T is not set
907CONFIG_CRC32=y 794CONFIG_CRC32=y
795# CONFIG_CRC7 is not set
908# CONFIG_LIBCRC32C is not set 796# CONFIG_LIBCRC32C is not set
909CONFIG_ZLIB_INFLATE=y 797CONFIG_ZLIB_INFLATE=y
910CONFIG_PLIST=y 798CONFIG_PLIST=y
799CONFIG_HAS_IOMEM=y
800CONFIG_HAS_IOPORT=y
801CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/systemh_defconfig b/arch/sh/configs/systemh_defconfig
index c16350dac01b..af921b5a9d46 100644
--- a/arch/sh/configs/systemh_defconfig
+++ b/arch/sh/configs/systemh_defconfig
@@ -141,7 +141,7 @@ CONFIG_CPU_SH4=y
141# CONFIG_CPU_SUBTYPE_SH7091 is not set 141# CONFIG_CPU_SUBTYPE_SH7091 is not set
142# CONFIG_CPU_SUBTYPE_SH7750R is not set 142# CONFIG_CPU_SUBTYPE_SH7750R is not set
143# CONFIG_CPU_SUBTYPE_SH7750S is not set 143# CONFIG_CPU_SUBTYPE_SH7750S is not set
144CONFIG_CPU_SUBTYPE_SH7751=y 144# CONFIG_CPU_SUBTYPE_SH7751 is not set
145CONFIG_CPU_SUBTYPE_SH7751R=y 145CONFIG_CPU_SUBTYPE_SH7751R=y
146# CONFIG_CPU_SUBTYPE_SH7760 is not set 146# CONFIG_CPU_SUBTYPE_SH7760 is not set
147# CONFIG_CPU_SUBTYPE_SH4_202 is not set 147# CONFIG_CPU_SUBTYPE_SH4_202 is not set
diff --git a/arch/sh/configs/titan_defconfig b/arch/sh/configs/titan_defconfig
index 41049cf14b79..0686ed6fe17a 100644
--- a/arch/sh/configs/titan_defconfig
+++ b/arch/sh/configs/titan_defconfig
@@ -147,7 +147,7 @@ CONFIG_CPU_SH4=y
147# CONFIG_CPU_SUBTYPE_SH7091 is not set 147# CONFIG_CPU_SUBTYPE_SH7091 is not set
148# CONFIG_CPU_SUBTYPE_SH7750R is not set 148# CONFIG_CPU_SUBTYPE_SH7750R is not set
149# CONFIG_CPU_SUBTYPE_SH7750S is not set 149# CONFIG_CPU_SUBTYPE_SH7750S is not set
150CONFIG_CPU_SUBTYPE_SH7751=y 150# CONFIG_CPU_SUBTYPE_SH7751 is not set
151CONFIG_CPU_SUBTYPE_SH7751R=y 151CONFIG_CPU_SUBTYPE_SH7751R=y
152# CONFIG_CPU_SUBTYPE_SH7760 is not set 152# CONFIG_CPU_SUBTYPE_SH7760 is not set
153# CONFIG_CPU_SUBTYPE_SH4_202 is not set 153# CONFIG_CPU_SUBTYPE_SH4_202 is not set
diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S
index d8e122971c3e..0d12a124055c 100644
--- a/arch/sh/kernel/cpu/sh3/entry.S
+++ b/arch/sh/kernel/cpu/sh3/entry.S
@@ -149,8 +149,7 @@ call_dpf:
149 lds r10, pr 149 lds r10, pr
150 rts 150 rts
151 nop 151 nop
1520: sti 1520: mov.l 3f, r0
153 mov.l 3f, r0
154 mov r9, r6 153 mov r9, r6
155 mov r8, r5 154 mov r8, r5
156 jmp @r0 155 jmp @r0
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c
index 502d43e4785c..67015044d74a 100644
--- a/arch/sh/kernel/traps.c
+++ b/arch/sh/kernel/traps.c
@@ -854,9 +854,14 @@ void __init trap_init(void)
854 set_exception_table_evt(0x800, do_reserved_inst); 854 set_exception_table_evt(0x800, do_reserved_inst);
855 set_exception_table_evt(0x820, do_illegal_slot_inst); 855 set_exception_table_evt(0x820, do_illegal_slot_inst);
856#elif defined(CONFIG_SH_FPU) 856#elif defined(CONFIG_SH_FPU)
857#ifdef CONFIG_CPU_SUBTYPE_SHX3
858 set_exception_table_evt(0xd80, do_fpu_state_restore);
859 set_exception_table_evt(0xda0, do_fpu_state_restore);
860#else
857 set_exception_table_evt(0x800, do_fpu_state_restore); 861 set_exception_table_evt(0x800, do_fpu_state_restore);
858 set_exception_table_evt(0x820, do_fpu_state_restore); 862 set_exception_table_evt(0x820, do_fpu_state_restore);
859#endif 863#endif
864#endif
860 865
861#ifdef CONFIG_CPU_SH2 866#ifdef CONFIG_CPU_SH2
862 set_exception_table_vec(TRAP_ADDRESS_ERROR, address_error_handler); 867 set_exception_table_vec(TRAP_ADDRESS_ERROR, address_error_handler);
diff --git a/arch/sh/mm/Makefile b/arch/sh/mm/Makefile
index d677d7f3afc1..4061e89d84d0 100644
--- a/arch/sh/mm/Makefile
+++ b/arch/sh/mm/Makefile
@@ -8,7 +8,9 @@ obj-$(CONFIG_CPU_SH2) += cache-sh2.o
8obj-$(CONFIG_CPU_SH3) += cache-sh3.o 8obj-$(CONFIG_CPU_SH3) += cache-sh3.o
9obj-$(CONFIG_CPU_SH4) += cache-sh4.o 9obj-$(CONFIG_CPU_SH4) += cache-sh4.o
10 10
11mmu-y := fault-nommu.o tlb-nommu.o pg-nommu.o 11mmu-y := tlb-nommu.o pg-nommu.o
12mmu-$(CONFIG_CPU_SH3) += fault-nommu.o
13mmu-$(CONFIG_CPU_SH4) += fault-nommu.o
12mmu-$(CONFIG_MMU) := fault.o clear_page.o copy_page.o tlb-flush.o \ 14mmu-$(CONFIG_MMU) := fault.o clear_page.o copy_page.o tlb-flush.o \
13 ioremap.o 15 ioremap.o
14 16
diff --git a/arch/sh/mm/fault-nommu.c b/arch/sh/mm/fault-nommu.c
index 923cb456819b..c6f5b51ec2c7 100644
--- a/arch/sh/mm/fault-nommu.c
+++ b/arch/sh/mm/fault-nommu.c
@@ -1,47 +1,33 @@
1/* 1/*
2 * arch/sh/mm/fault-nommu.c 2 * arch/sh/mm/fault-nommu.c
3 * 3 *
4 * Copyright (C) 2002 Paul Mundt 4 * Copyright (C) 2002 - 2007 Paul Mundt
5 * 5 *
6 * Based on linux/arch/sh/mm/fault.c: 6 * Based on linux/arch/sh/mm/fault.c:
7 * Copyright (C) 1999 Niibe Yutaka 7 * Copyright (C) 1999 Niibe Yutaka
8 * 8 *
9 * Released under the terms of the GNU GPL v2.0. 9 * Released under the terms of the GNU GPL v2.0.
10 */ 10 */
11
12#include <linux/signal.h>
13#include <linux/sched.h>
14#include <linux/kernel.h> 11#include <linux/kernel.h>
15#include <linux/errno.h>
16#include <linux/string.h>
17#include <linux/types.h>
18#include <linux/ptrace.h>
19#include <linux/mman.h>
20#include <linux/mm.h> 12#include <linux/mm.h>
21#include <linux/smp.h> 13#include <linux/hardirq.h>
22#include <linux/interrupt.h> 14#include <linux/kprobes.h>
23
24#include <asm/system.h> 15#include <asm/system.h>
25#include <asm/io.h> 16#include <asm/ptrace.h>
26#include <asm/uaccess.h>
27#include <asm/pgalloc.h>
28#include <asm/mmu_context.h>
29#include <asm/cacheflush.h>
30
31#if defined(CONFIG_SH_KGDB)
32#include <asm/kgdb.h> 17#include <asm/kgdb.h>
33#endif
34
35extern void die(const char *,struct pt_regs *,long);
36 18
37/* 19/*
38 * This routine handles page faults. It determines the address, 20 * This routine handles page faults. It determines the address,
39 * and the problem, and then passes it off to one of the appropriate 21 * and the problem, and then passes it off to one of the appropriate
40 * routines. 22 * routines.
41 */ 23 */
42asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess, 24asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
43 unsigned long address) 25 unsigned long writeaccess,
26 unsigned long address)
44{ 27{
28 trace_hardirqs_on();
29 local_irq_enable();
30
45#if defined(CONFIG_SH_KGDB) 31#if defined(CONFIG_SH_KGDB)
46 if (kgdb_nofault && kgdb_bus_err_hook) 32 if (kgdb_nofault && kgdb_bus_err_hook)
47 kgdb_bus_err_hook(); 33 kgdb_bus_err_hook();
@@ -65,17 +51,14 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
65 do_exit(SIGKILL); 51 do_exit(SIGKILL);
66} 52}
67 53
68asmlinkage int __do_page_fault(struct pt_regs *regs, unsigned long writeaccess, 54asmlinkage int __kprobes __do_page_fault(struct pt_regs *regs,
69 unsigned long address) 55 unsigned long writeaccess,
56 unsigned long address)
70{ 57{
71#if defined(CONFIG_SH_KGDB) 58#if defined(CONFIG_SH_KGDB)
72 if (kgdb_nofault && kgdb_bus_err_hook) 59 if (kgdb_nofault && kgdb_bus_err_hook)
73 kgdb_bus_err_hook(); 60 kgdb_bus_err_hook();
74#endif 61#endif
75 62
76 if (address >= TASK_SIZE) 63 return (address >= TASK_SIZE);
77 return 1;
78
79 return 0;
80} 64}
81
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c
index 964c6767dc73..04a39aa7f1f9 100644
--- a/arch/sh/mm/fault.c
+++ b/arch/sh/mm/fault.c
@@ -184,8 +184,7 @@ no_context:
184 printk(KERN_ALERT "pc = %08lx\n", regs->pc); 184 printk(KERN_ALERT "pc = %08lx\n", regs->pc);
185 page = (unsigned long)get_TTB(); 185 page = (unsigned long)get_TTB();
186 if (page) { 186 if (page) {
187 page = ((__typeof__(page) *) __va(page))[address >> 187 page = ((__typeof__(page) *)page)[address >> PGDIR_SHIFT];
188 PGDIR_SHIFT];
189 printk(KERN_ALERT "*pde = %08lx\n", page); 188 printk(KERN_ALERT "*pde = %08lx\n", page);
190 if (page & _PAGE_PRESENT) { 189 if (page & _PAGE_PRESENT) {
191 page &= PAGE_MASK; 190 page &= PAGE_MASK;
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S
index eac38388f5fd..88d2cefd01be 100644
--- a/arch/sparc/kernel/entry.S
+++ b/arch/sparc/kernel/entry.S
@@ -1,7 +1,6 @@
1/* $Id: entry.S,v 1.170 2001/11/13 00:57:05 davem Exp $ 1/* arch/sparc/kernel/entry.S: Sparc trap low-level entry points.
2 * arch/sparc/kernel/entry.S: Sparc trap low-level entry points.
3 * 2 *
4 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) 3 * Copyright (C) 1995, 2007 David S. Miller (davem@davemloft.net)
5 * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) 4 * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be)
6 * Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx) 5 * Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx)
7 * Copyright (C) 1996-1999 Jakub Jelinek (jj@sunsite.mff.cuni.cz) 6 * Copyright (C) 1996-1999 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
@@ -129,7 +128,7 @@ trap_low:
129 RESTORE_ALL 128 RESTORE_ALL
130#endif 129#endif
131 130
132#ifdef CONFIG_BLK_DEV_FD 131#if defined(CONFIG_BLK_DEV_FD) || defined(CONFIG_BLK_DEV_FD_MODULE)
133 .text 132 .text
134 .align 4 133 .align 4
135 .globl floppy_hardint 134 .globl floppy_hardint
diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c
index 75b2240ad0f9..b76dc03fc318 100644
--- a/arch/sparc/kernel/irq.c
+++ b/arch/sparc/kernel/irq.c
@@ -351,34 +351,14 @@ void handler_irq(int irq, struct pt_regs * regs)
351 set_irq_regs(old_regs); 351 set_irq_regs(old_regs);
352} 352}
353 353
354#ifdef CONFIG_BLK_DEV_FD 354#if defined(CONFIG_BLK_DEV_FD) || defined(CONFIG_BLK_DEV_FD_MODULE)
355extern void floppy_interrupt(int irq, void *dev_id);
356
357void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs)
358{
359 struct pt_regs *old_regs;
360 int cpu = smp_processor_id();
361
362 old_regs = set_irq_regs(regs);
363 disable_pil_irq(irq);
364 irq_enter();
365 kstat_cpu(cpu).irqs[irq]++;
366 floppy_interrupt(irq, dev_id);
367 irq_exit();
368 enable_pil_irq(irq);
369 set_irq_regs(old_regs);
370 // XXX Eek, it's totally changed with preempt_count() and such
371 // if (softirq_pending(cpu))
372 // do_softirq();
373}
374#endif
375 355
376/* Fast IRQs on the Sparc can only have one routine attached to them, 356/* Fast IRQs on the Sparc can only have one routine attached to them,
377 * thus no sharing possible. 357 * thus no sharing possible.
378 */ 358 */
379int request_fast_irq(unsigned int irq, 359static int request_fast_irq(unsigned int irq,
380 irq_handler_t handler, 360 void (*handler)(void),
381 unsigned long irqflags, const char *devname) 361 unsigned long irqflags, const char *devname)
382{ 362{
383 struct irqaction *action; 363 struct irqaction *action;
384 unsigned long flags; 364 unsigned long flags;
@@ -457,7 +437,6 @@ int request_fast_irq(unsigned int irq,
457 */ 437 */
458 flush_cache_all(); 438 flush_cache_all();
459 439
460 action->handler = handler;
461 action->flags = irqflags; 440 action->flags = irqflags;
462 cpus_clear(action->mask); 441 cpus_clear(action->mask);
463 action->name = devname; 442 action->name = devname;
@@ -475,6 +454,61 @@ out:
475 return ret; 454 return ret;
476} 455}
477 456
457/* These variables are used to access state from the assembler
458 * interrupt handler, floppy_hardint, so we cannot put these in
459 * the floppy driver image because that would not work in the
460 * modular case.
461 */
462volatile unsigned char *fdc_status;
463EXPORT_SYMBOL(fdc_status);
464
465char *pdma_vaddr;
466EXPORT_SYMBOL(pdma_vaddr);
467
468unsigned long pdma_size;
469EXPORT_SYMBOL(pdma_size);
470
471volatile int doing_pdma;
472EXPORT_SYMBOL(doing_pdma);
473
474char *pdma_base;
475EXPORT_SYMBOL(pdma_base);
476
477unsigned long pdma_areasize;
478EXPORT_SYMBOL(pdma_areasize);
479
480extern void floppy_hardint(void);
481
482static irqreturn_t (*floppy_irq_handler)(int irq, void *dev_id);
483
484void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs)
485{
486 struct pt_regs *old_regs;
487 int cpu = smp_processor_id();
488
489 old_regs = set_irq_regs(regs);
490 disable_pil_irq(irq);
491 irq_enter();
492 kstat_cpu(cpu).irqs[irq]++;
493 floppy_irq_handler(irq, dev_id);
494 irq_exit();
495 enable_pil_irq(irq);
496 set_irq_regs(old_regs);
497 // XXX Eek, it's totally changed with preempt_count() and such
498 // if (softirq_pending(cpu))
499 // do_softirq();
500}
501
502int sparc_floppy_request_irq(int irq, unsigned long flags,
503 irqreturn_t (*irq_handler)(int irq, void *))
504{
505 floppy_irq_handler = irq_handler;
506 return request_fast_irq(irq, floppy_hardint, flags, "floppy");
507}
508EXPORT_SYMBOL(sparc_floppy_request_irq);
509
510#endif
511
478int request_irq(unsigned int irq, 512int request_irq(unsigned int irq,
479 irq_handler_t handler, 513 irq_handler_t handler,
480 unsigned long irqflags, const char * devname, void *dev_id) 514 unsigned long irqflags, const char * devname, void *dev_id)
diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c
index 7b4abde43028..ef647acc479e 100644
--- a/arch/sparc/kernel/sparc_ksyms.c
+++ b/arch/sparc/kernel/sparc_ksyms.c
@@ -143,7 +143,6 @@ EXPORT_SYMBOL(mstk48t02_regs);
143EXPORT_SYMBOL(set_auxio); 143EXPORT_SYMBOL(set_auxio);
144EXPORT_SYMBOL(get_auxio); 144EXPORT_SYMBOL(get_auxio);
145#endif 145#endif
146EXPORT_SYMBOL(request_fast_irq);
147EXPORT_SYMBOL(io_remap_pfn_range); 146EXPORT_SYMBOL(io_remap_pfn_range);
148 /* P3: iounit_xxx may be needed, sun4d users */ 147 /* P3: iounit_xxx may be needed, sun4d users */
149/* EXPORT_SYMBOL(iounit_map_dma_init); */ 148/* EXPORT_SYMBOL(iounit_map_dma_init); */
diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c
index db703758db98..7e427b4c74b5 100644
--- a/drivers/firewire/fw-ohci.c
+++ b/drivers/firewire/fw-ohci.c
@@ -907,6 +907,8 @@ static void bus_reset_tasklet(unsigned long data)
907 int self_id_count, i, j, reg; 907 int self_id_count, i, j, reg;
908 int generation, new_generation; 908 int generation, new_generation;
909 unsigned long flags; 909 unsigned long flags;
910 void *free_rom = NULL;
911 dma_addr_t free_rom_bus = 0;
910 912
911 reg = reg_read(ohci, OHCI1394_NodeID); 913 reg = reg_read(ohci, OHCI1394_NodeID);
912 if (!(reg & OHCI1394_NodeID_idValid)) { 914 if (!(reg & OHCI1394_NodeID_idValid)) {
@@ -970,8 +972,8 @@ static void bus_reset_tasklet(unsigned long data)
970 */ 972 */
971 973
972 if (ohci->next_config_rom != NULL) { 974 if (ohci->next_config_rom != NULL) {
973 dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE, 975 free_rom = ohci->config_rom;
974 ohci->config_rom, ohci->config_rom_bus); 976 free_rom_bus = ohci->config_rom_bus;
975 ohci->config_rom = ohci->next_config_rom; 977 ohci->config_rom = ohci->next_config_rom;
976 ohci->config_rom_bus = ohci->next_config_rom_bus; 978 ohci->config_rom_bus = ohci->next_config_rom_bus;
977 ohci->next_config_rom = NULL; 979 ohci->next_config_rom = NULL;
@@ -990,6 +992,10 @@ static void bus_reset_tasklet(unsigned long data)
990 992
991 spin_unlock_irqrestore(&ohci->lock, flags); 993 spin_unlock_irqrestore(&ohci->lock, flags);
992 994
995 if (free_rom)
996 dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE,
997 free_rom, free_rom_bus);
998
993 fw_core_handle_bus_reset(&ohci->card, ohci->node_id, generation, 999 fw_core_handle_bus_reset(&ohci->card, ohci->node_id, generation,
994 self_id_count, ohci->self_id_buffer); 1000 self_id_count, ohci->self_id_buffer);
995} 1001}
@@ -1186,7 +1192,7 @@ ohci_set_config_rom(struct fw_card *card, u32 *config_rom, size_t length)
1186{ 1192{
1187 struct fw_ohci *ohci; 1193 struct fw_ohci *ohci;
1188 unsigned long flags; 1194 unsigned long flags;
1189 int retval = 0; 1195 int retval = -EBUSY;
1190 __be32 *next_config_rom; 1196 __be32 *next_config_rom;
1191 dma_addr_t next_config_rom_bus; 1197 dma_addr_t next_config_rom_bus;
1192 1198
@@ -1240,10 +1246,7 @@ ohci_set_config_rom(struct fw_card *card, u32 *config_rom, size_t length)
1240 1246
1241 reg_write(ohci, OHCI1394_ConfigROMmap, 1247 reg_write(ohci, OHCI1394_ConfigROMmap,
1242 ohci->next_config_rom_bus); 1248 ohci->next_config_rom_bus);
1243 } else { 1249 retval = 0;
1244 dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE,
1245 next_config_rom, next_config_rom_bus);
1246 retval = -EBUSY;
1247 } 1250 }
1248 1251
1249 spin_unlock_irqrestore(&ohci->lock, flags); 1252 spin_unlock_irqrestore(&ohci->lock, flags);
@@ -1257,6 +1260,9 @@ ohci_set_config_rom(struct fw_card *card, u32 *config_rom, size_t length)
1257 */ 1260 */
1258 if (retval == 0) 1261 if (retval == 0)
1259 fw_core_initiate_bus_reset(&ohci->card, 1); 1262 fw_core_initiate_bus_reset(&ohci->card, 1);
1263 else
1264 dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE,
1265 next_config_rom, next_config_rom_bus);
1260 1266
1261 return retval; 1267 return retval;
1262} 1268}
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index 3e4a369d0057..ba816ef6def1 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -984,6 +984,7 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done)
984 struct fw_unit *unit = sd->unit; 984 struct fw_unit *unit = sd->unit;
985 struct fw_device *device = fw_device(unit->device.parent); 985 struct fw_device *device = fw_device(unit->device.parent);
986 struct sbp2_command_orb *orb; 986 struct sbp2_command_orb *orb;
987 unsigned max_payload;
987 988
988 /* 989 /*
989 * Bidirectional commands are not yet implemented, and unknown 990 * Bidirectional commands are not yet implemented, and unknown
@@ -1017,8 +1018,10 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done)
1017 * specifies the max payload size as 2 ^ (max_payload + 2), so 1018 * specifies the max payload size as 2 ^ (max_payload + 2), so
1018 * if we set this to max_speed + 7, we get the right value. 1019 * if we set this to max_speed + 7, we get the right value.
1019 */ 1020 */
1021 max_payload = min(device->max_speed + 7,
1022 device->card->max_receive - 1);
1020 orb->request.misc = 1023 orb->request.misc =
1021 COMMAND_ORB_MAX_PAYLOAD(device->max_speed + 7) | 1024 COMMAND_ORB_MAX_PAYLOAD(max_payload) |
1022 COMMAND_ORB_SPEED(device->max_speed) | 1025 COMMAND_ORB_SPEED(device->max_speed) |
1023 COMMAND_ORB_NOTIFY; 1026 COMMAND_ORB_NOTIFY;
1024 1027
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c
index 3ce8e2fbe15f..3e1cb12e43cd 100644
--- a/drivers/firewire/fw-transaction.c
+++ b/drivers/firewire/fw-transaction.c
@@ -734,7 +734,7 @@ fw_core_handle_response(struct fw_card *card, struct fw_packet *p)
734} 734}
735EXPORT_SYMBOL(fw_core_handle_response); 735EXPORT_SYMBOL(fw_core_handle_response);
736 736
737const struct fw_address_region topology_map_region = 737static const struct fw_address_region topology_map_region =
738 { .start = 0xfffff0001000ull, .end = 0xfffff0001400ull, }; 738 { .start = 0xfffff0001000ull, .end = 0xfffff0001400ull, };
739 739
740static void 740static void
@@ -772,7 +772,7 @@ static struct fw_address_handler topology_map = {
772 .address_callback = handle_topology_map, 772 .address_callback = handle_topology_map,
773}; 773};
774 774
775const struct fw_address_region registers_region = 775static const struct fw_address_region registers_region =
776 { .start = 0xfffff0000000ull, .end = 0xfffff0000400ull, }; 776 { .start = 0xfffff0000000ull, .end = 0xfffff0000400ull, };
777 777
778static void 778static void
diff --git a/drivers/firewire/fw-transaction.h b/drivers/firewire/fw-transaction.h
index 5ceaccd10564..fa7967b57408 100644
--- a/drivers/firewire/fw-transaction.h
+++ b/drivers/firewire/fw-transaction.h
@@ -231,7 +231,7 @@ struct fw_card {
231 unsigned long reset_jiffies; 231 unsigned long reset_jiffies;
232 232
233 unsigned long long guid; 233 unsigned long long guid;
234 int max_receive; 234 unsigned max_receive;
235 int link_speed; 235 int link_speed;
236 int config_rom_generation; 236 int config_rom_generation;
237 237
diff --git a/drivers/ieee1394/Kconfig b/drivers/ieee1394/Kconfig
index 8012b3b0ce75..545663ef820b 100644
--- a/drivers/ieee1394/Kconfig
+++ b/drivers/ieee1394/Kconfig
@@ -97,7 +97,7 @@ config IEEE1394_SBP2
97 97
98config IEEE1394_SBP2_PHYS_DMA 98config IEEE1394_SBP2_PHYS_DMA
99 bool "Enable replacement for physical DMA in SBP2" 99 bool "Enable replacement for physical DMA in SBP2"
100 depends on IEEE1394 && IEEE1394_SBP2 && EXPERIMENTAL && (X86_32 || PPC_32) 100 depends on IEEE1394_SBP2 && VIRT_TO_BUS && EXPERIMENTAL
101 help 101 help
102 This builds sbp2 for use with non-OHCI host adapters which do not 102 This builds sbp2 for use with non-OHCI host adapters which do not
103 support physical DMA or for when ohci1394 is run with phys_dma=0. 103 support physical DMA or for when ohci1394 is run with phys_dma=0.
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c
index e882cb951b47..47dbe8f17e82 100644
--- a/drivers/ieee1394/sbp2.c
+++ b/drivers/ieee1394/sbp2.c
@@ -773,11 +773,6 @@ static struct sbp2_lu *sbp2_alloc_device(struct unit_directory *ud)
773 SBP2_ERR("failed to register lower 4GB address range"); 773 SBP2_ERR("failed to register lower 4GB address range");
774 goto failed_alloc; 774 goto failed_alloc;
775 } 775 }
776#else
777 if (dma_set_mask(hi->host->device.parent, DMA_32BIT_MASK)) {
778 SBP2_ERR("failed to set 4GB DMA mask");
779 goto failed_alloc;
780 }
781#endif 776#endif
782 } 777 }
783 778
diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
index 451adcc52b3c..6d958a4566ff 100644
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
@@ -3,9 +3,9 @@
3# 3#
4 4
5# Core functionality. 5# Core functionality.
6obj-$(CONFIG_MTD) += mtd.o
6mtd-y := mtdcore.o mtdsuper.o 7mtd-y := mtdcore.o mtdsuper.o
7mtd-$(CONFIG_MTD_PARTITIONS) += mtdpart.o 8mtd-$(CONFIG_MTD_PARTITIONS) += mtdpart.o
8obj-$(CONFIG_MTD) += $(mtd-y)
9 9
10obj-$(CONFIG_MTD_CONCAT) += mtdconcat.o 10obj-$(CONFIG_MTD_CONCAT) += mtdconcat.o
11obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o 11obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 9c6236852942..6174a97d7902 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -560,7 +560,3 @@ int parse_mtd_partitions(struct mtd_info *master, const char **types,
560EXPORT_SYMBOL_GPL(parse_mtd_partitions); 560EXPORT_SYMBOL_GPL(parse_mtd_partitions);
561EXPORT_SYMBOL_GPL(register_mtd_parser); 561EXPORT_SYMBOL_GPL(register_mtd_parser);
562EXPORT_SYMBOL_GPL(deregister_mtd_parser); 562EXPORT_SYMBOL_GPL(deregister_mtd_parser);
563
564MODULE_LICENSE("GPL");
565MODULE_AUTHOR("Nicolas Pitre <nico@cam.org>");
566MODULE_DESCRIPTION("Generic support for partitioning of MTD devices");
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index 2be0a0f1b48f..24feb00600ee 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -2430,7 +2430,7 @@ static int fill_rx_buffers(struct s2io_nic *nic, int ring_no)
2430 (rxdp3->Buffer1_ptr == DMA_ERROR_CODE)) { 2430 (rxdp3->Buffer1_ptr == DMA_ERROR_CODE)) {
2431 pci_unmap_single 2431 pci_unmap_single
2432 (nic->pdev, 2432 (nic->pdev,
2433 (dma_addr_t)skb->data, 2433 (dma_addr_t)rxdp3->Buffer2_ptr,
2434 dev->mtu + 4, 2434 dev->mtu + 4,
2435 PCI_DMA_FROMDEVICE); 2435 PCI_DMA_FROMDEVICE);
2436 goto pci_map_failed; 2436 goto pci_map_failed;
@@ -6211,7 +6211,7 @@ static int set_rxd_buffer_pointer(struct s2io_nic *sp, struct RxD_t *rxdp,
6211 if( (rxdp3->Buffer0_ptr == 0) || 6211 if( (rxdp3->Buffer0_ptr == 0) ||
6212 (rxdp3->Buffer0_ptr == DMA_ERROR_CODE)) { 6212 (rxdp3->Buffer0_ptr == DMA_ERROR_CODE)) {
6213 pci_unmap_single (sp->pdev, 6213 pci_unmap_single (sp->pdev,
6214 (dma_addr_t)(*skb)->data, 6214 (dma_addr_t)rxdp3->Buffer2_ptr,
6215 dev->mtu + 4, PCI_DMA_FROMDEVICE); 6215 dev->mtu + 4, PCI_DMA_FROMDEVICE);
6216 goto memalloc_failed; 6216 goto memalloc_failed;
6217 } 6217 }
@@ -6224,7 +6224,10 @@ static int set_rxd_buffer_pointer(struct s2io_nic *sp, struct RxD_t *rxdp,
6224 if( (rxdp3->Buffer1_ptr == 0) || 6224 if( (rxdp3->Buffer1_ptr == 0) ||
6225 (rxdp3->Buffer1_ptr == DMA_ERROR_CODE)) { 6225 (rxdp3->Buffer1_ptr == DMA_ERROR_CODE)) {
6226 pci_unmap_single (sp->pdev, 6226 pci_unmap_single (sp->pdev,
6227 (dma_addr_t)(*skb)->data, 6227 (dma_addr_t)rxdp3->Buffer0_ptr,
6228 BUF0_LEN, PCI_DMA_FROMDEVICE);
6229 pci_unmap_single (sp->pdev,
6230 (dma_addr_t)rxdp3->Buffer2_ptr,
6228 dev->mtu + 4, PCI_DMA_FROMDEVICE); 6231 dev->mtu + 4, PCI_DMA_FROMDEVICE);
6229 goto memalloc_failed; 6232 goto memalloc_failed;
6230 } 6233 }
diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 3f6e176e6ea1..58c806e9c58a 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -38,7 +38,7 @@ config BATTERY_DS2760
38 38
39config BATTERY_PMU 39config BATTERY_PMU
40 tristate "Apple PMU battery" 40 tristate "Apple PMU battery"
41 depends on ADB_PMU 41 depends on PPC32 && ADB_PMU
42 help 42 help
43 Say Y here to expose battery information on Apple machines 43 Say Y here to expose battery information on Apple machines
44 through the generic battery class. 44 through the generic battery class.
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 2f5a5ac1b271..301313002f6b 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -2514,7 +2514,7 @@ static int __init serial8250_console_setup(struct console *co, char *options)
2514 return uart_set_options(port, co, baud, parity, bits, flow); 2514 return uart_set_options(port, co, baud, parity, bits, flow);
2515} 2515}
2516 2516
2517static int __init serial8250_console_early_setup(void) 2517static int serial8250_console_early_setup(void)
2518{ 2518{
2519 return serial8250_find_port_for_earlycon(); 2519 return serial8250_find_port_for_earlycon();
2520} 2520}
diff --git a/drivers/serial/8250_early.c b/drivers/serial/8250_early.c
index 150cad5c2eba..4d4c9f01be8d 100644
--- a/drivers/serial/8250_early.c
+++ b/drivers/serial/8250_early.c
@@ -227,7 +227,7 @@ int __init setup_early_serial8250_console(char *cmdline)
227 return 0; 227 return 0;
228} 228}
229 229
230int __init serial8250_find_port_for_earlycon(void) 230int serial8250_find_port_for_earlycon(void)
231{ 231{
232 struct early_serial8250_device *device = &early_device; 232 struct early_serial8250_device *device = &early_device;
233 struct uart_port *port = &device->port; 233 struct uart_port *port = &device->port;
diff --git a/drivers/video/cg6.c b/drivers/video/cg6.c
index 87c747123538..ee9046db9c7d 100644
--- a/drivers/video/cg6.c
+++ b/drivers/video/cg6.c
@@ -677,6 +677,7 @@ static int __devinit cg6_probe(struct of_device *op, const struct of_device_id *
677 struct fb_info *info; 677 struct fb_info *info;
678 struct cg6_par *par; 678 struct cg6_par *par;
679 int linebytes, err; 679 int linebytes, err;
680 int dblbuf;
680 681
681 info = framebuffer_alloc(sizeof(struct cg6_par), &op->dev); 682 info = framebuffer_alloc(sizeof(struct cg6_par), &op->dev);
682 683
@@ -698,7 +699,9 @@ static int __devinit cg6_probe(struct of_device *op, const struct of_device_id *
698 linebytes = of_getintprop_default(dp, "linebytes", 699 linebytes = of_getintprop_default(dp, "linebytes",
699 info->var.xres); 700 info->var.xres);
700 par->fbsize = PAGE_ALIGN(linebytes * info->var.yres); 701 par->fbsize = PAGE_ALIGN(linebytes * info->var.yres);
701 if (of_find_property(dp, "dblbuf", NULL)) 702
703 dblbuf = of_getintprop_default(dp, "dblbuf", 0);
704 if (dblbuf)
702 par->fbsize *= 4; 705 par->fbsize *= 4;
703 706
704 par->fbc = of_ioremap(&op->resource[0], CG6_FBC_OFFSET, 707 par->fbc = of_ioremap(&op->resource[0], CG6_FBC_OFFSET,
diff --git a/include/asm-sh/rts7751r2d.h b/include/asm-sh/rts7751r2d.h
index 10565ac7966a..5d7800aa31b5 100644
--- a/include/asm-sh/rts7751r2d.h
+++ b/include/asm-sh/rts7751r2d.h
@@ -37,7 +37,7 @@
37#define PA_VERREG 0xa4000032 /* FPGA Version Register */ 37#define PA_VERREG 0xa4000032 /* FPGA Version Register */
38#define PA_INPORT 0xa4000034 /* KEY Input Port control */ 38#define PA_INPORT 0xa4000034 /* KEY Input Port control */
39#define PA_OUTPORT 0xa4000036 /* LED control */ 39#define PA_OUTPORT 0xa4000036 /* LED control */
40#define PA_DMPORT 0xa4000038 /* DM270 Output Port control */ 40#define PA_BVERREG 0xa4000038 /* Board Revision Register */
41 41
42#define PA_AX88796L 0xaa000400 /* AX88796L Area */ 42#define PA_AX88796L 0xaa000400 /* AX88796L Area */
43#define PA_VOYAGER 0xab000000 /* VOYAGER GX Area */ 43#define PA_VOYAGER 0xab000000 /* VOYAGER GX Area */
diff --git a/include/asm-sparc/fcntl.h b/include/asm-sparc/fcntl.h
index 5db60b5ae7b0..7bbdfc77accd 100644
--- a/include/asm-sparc/fcntl.h
+++ b/include/asm-sparc/fcntl.h
@@ -16,6 +16,7 @@
16#define O_LARGEFILE 0x40000 16#define O_LARGEFILE 0x40000
17#define O_DIRECT 0x100000 /* direct disk access hint */ 17#define O_DIRECT 0x100000 /* direct disk access hint */
18#define O_NOATIME 0x200000 18#define O_NOATIME 0x200000
19#define O_CLOEXEC 0x400000
19 20
20#define F_GETOWN 5 /* for sockets. */ 21#define F_GETOWN 5 /* for sockets. */
21#define F_SETOWN 6 /* for sockets. */ 22#define F_SETOWN 6 /* for sockets. */
@@ -31,6 +32,5 @@
31#define __ARCH_FLOCK_PAD short __unused; 32#define __ARCH_FLOCK_PAD short __unused;
32#define __ARCH_FLOCK64_PAD short __unused; 33#define __ARCH_FLOCK64_PAD short __unused;
33 34
34#include <asm-generic/fcntl.h>
35 35
36#endif 36#endif
diff --git a/include/asm-sparc/floppy.h b/include/asm-sparc/floppy.h
index 28ce2b9c3da8..acd06d8ff70a 100644
--- a/include/asm-sparc/floppy.h
+++ b/include/asm-sparc/floppy.h
@@ -48,7 +48,7 @@ struct sun_flpy_controller {
48 48
49/* You'll only ever find one controller on a SparcStation anyways. */ 49/* You'll only ever find one controller on a SparcStation anyways. */
50static struct sun_flpy_controller *sun_fdc = NULL; 50static struct sun_flpy_controller *sun_fdc = NULL;
51volatile unsigned char *fdc_status; 51extern volatile unsigned char *fdc_status;
52 52
53struct sun_floppy_ops { 53struct sun_floppy_ops {
54 unsigned char (*fd_inb)(int port); 54 unsigned char (*fd_inb)(int port);
@@ -225,13 +225,13 @@ static void sun_82077_fd_outb(unsigned char value, int port)
225 * underruns. If non-zero, doing_pdma encodes the direction of 225 * underruns. If non-zero, doing_pdma encodes the direction of
226 * the transfer for debugging. 1=read 2=write 226 * the transfer for debugging. 1=read 2=write
227 */ 227 */
228char *pdma_vaddr; 228extern char *pdma_vaddr;
229unsigned long pdma_size; 229extern unsigned long pdma_size;
230volatile int doing_pdma = 0; 230extern volatile int doing_pdma;
231 231
232/* This is software state */ 232/* This is software state */
233char *pdma_base = NULL; 233extern char *pdma_base;
234unsigned long pdma_areasize; 234extern unsigned long pdma_areasize;
235 235
236/* Common routines to all controller types on the Sparc. */ 236/* Common routines to all controller types on the Sparc. */
237static __inline__ void virtual_dma_init(void) 237static __inline__ void virtual_dma_init(void)
@@ -281,7 +281,8 @@ static __inline__ void sun_fd_enable_dma(void)
281} 281}
282 282
283/* Our low-level entry point in arch/sparc/kernel/entry.S */ 283/* Our low-level entry point in arch/sparc/kernel/entry.S */
284irqreturn_t floppy_hardint(int irq, void *unused); 284extern int sparc_floppy_request_irq(int irq, unsigned long flags,
285 irqreturn_t (*irq_handler)(int irq, void *));
285 286
286static int sun_fd_request_irq(void) 287static int sun_fd_request_irq(void)
287{ 288{
@@ -290,8 +291,9 @@ static int sun_fd_request_irq(void)
290 291
291 if(!once) { 292 if(!once) {
292 once = 1; 293 once = 1;
293 error = request_fast_irq(FLOPPY_IRQ, floppy_hardint, 294 error = sparc_floppy_request_irq(FLOPPY_IRQ,
294 IRQF_DISABLED, "floppy"); 295 IRQF_DISABLED,
296 floppy_interrupt);
295 return ((error == 0) ? 0 : -1); 297 return ((error == 0) ? 0 : -1);
296 } else return 0; 298 } else return 0;
297} 299}
diff --git a/include/asm-sparc/irq.h b/include/asm-sparc/irq.h
index 61fb99643afd..fe205cc444b8 100644
--- a/include/asm-sparc/irq.h
+++ b/include/asm-sparc/irq.h
@@ -1,7 +1,6 @@
1/* $Id: irq.h,v 1.32 2000/08/26 02:42:28 anton Exp $ 1/* irq.h: IRQ registers on the Sparc.
2 * irq.h: IRQ registers on the Sparc.
3 * 2 *
4 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) 3 * Copyright (C) 1995, 2007 David S. Miller (davem@davemloft.net)
5 */ 4 */
6 5
7#ifndef _SPARC_IRQ_H 6#ifndef _SPARC_IRQ_H
@@ -13,6 +12,4 @@
13 12
14#define irq_canonicalize(irq) (irq) 13#define irq_canonicalize(irq) (irq)
15 14
16extern int request_fast_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, __const__ char *devname);
17
18#endif 15#endif
diff --git a/include/asm-sparc64/dma-mapping.h b/include/asm-sparc64/dma-mapping.h
index a72a5f271f31..1fc655452b81 100644
--- a/include/asm-sparc64/dma-mapping.h
+++ b/include/asm-sparc64/dma-mapping.h
@@ -108,6 +108,25 @@ static inline void dma_sync_single_for_device(struct device *dev,
108 dma_ops->sync_single_for_device(dev, dma_handle, size, direction); 108 dma_ops->sync_single_for_device(dev, dma_handle, size, direction);
109} 109}
110 110
111static inline void dma_sync_single_range_for_cpu(struct device *dev,
112 dma_addr_t dma_handle,
113 unsigned long offset,
114 size_t size,
115 enum dma_data_direction direction)
116{
117 dma_sync_single_for_cpu(dev, dma_handle+offset, size, direction);
118}
119
120static inline void dma_sync_single_range_for_device(struct device *dev,
121 dma_addr_t dma_handle,
122 unsigned long offset,
123 size_t size,
124 enum dma_data_direction direction)
125{
126 dma_sync_single_for_device(dev, dma_handle+offset, size, direction);
127}
128
129
111static inline void dma_sync_sg_for_cpu(struct device *dev, 130static inline void dma_sync_sg_for_cpu(struct device *dev,
112 struct scatterlist *sg, int nelems, 131 struct scatterlist *sg, int nelems,
113 enum dma_data_direction direction) 132 enum dma_data_direction direction)
diff --git a/include/asm-sparc64/fcntl.h b/include/asm-sparc64/fcntl.h
index b2aecf0054bd..111f6b3b8925 100644
--- a/include/asm-sparc64/fcntl.h
+++ b/include/asm-sparc64/fcntl.h
@@ -16,7 +16,7 @@
16#define O_LARGEFILE 0x40000 16#define O_LARGEFILE 0x40000
17#define O_DIRECT 0x100000 /* direct disk access hint */ 17#define O_DIRECT 0x100000 /* direct disk access hint */
18#define O_NOATIME 0x200000 18#define O_NOATIME 0x200000
19 19#define O_CLOEXEC 0x400000
20 20
21#define F_GETOWN 5 /* for sockets. */ 21#define F_GETOWN 5 /* for sockets. */
22#define F_SETOWN 6 /* for sockets. */ 22#define F_SETOWN 6 /* for sockets. */
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
index 16baef4dab7e..d529045c1679 100644
--- a/include/net/sctp/sctp.h
+++ b/include/net/sctp/sctp.h
@@ -190,6 +190,16 @@ void sctp_assocs_proc_exit(void);
190 190
191 191
192/* 192/*
193 * Module global variables
194 */
195
196 /*
197 * sctp/protocol.c
198 */
199extern struct kmem_cache *sctp_chunk_cachep __read_mostly;
200extern struct kmem_cache *sctp_bucket_cachep __read_mostly;
201
202/*
193 * Section: Macros, externs, and inlines 203 * Section: Macros, externs, and inlines
194 */ 204 */
195 205
diff --git a/include/net/tcp.h b/include/net/tcp.h
index c209361ab74a..185c7ecce4cc 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -281,7 +281,7 @@ extern int tcp_v4_remember_stamp(struct sock *sk);
281 281
282extern int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw); 282extern int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw);
283 283
284extern int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, 284extern int tcp_sendmsg(struct kiocb *iocb, struct socket *sock,
285 struct msghdr *msg, size_t size); 285 struct msghdr *msg, size_t size);
286extern ssize_t tcp_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags); 286extern ssize_t tcp_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags);
287 287
diff --git a/kernel/exit.c b/kernel/exit.c
index 464c2b172f07..9578c1ae19ca 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -813,7 +813,7 @@ static void exit_notify(struct task_struct *tsk)
813 __kill_pgrp_info(SIGCONT, SEND_SIG_PRIV, pgrp); 813 __kill_pgrp_info(SIGCONT, SEND_SIG_PRIV, pgrp);
814 } 814 }
815 815
816 /* Let father know we died 816 /* Let father know we died
817 * 817 *
818 * Thread signals are configurable, but you aren't going to use 818 * Thread signals are configurable, but you aren't going to use
819 * that to send signals to arbitary processes. 819 * that to send signals to arbitary processes.
@@ -826,9 +826,7 @@ static void exit_notify(struct task_struct *tsk)
826 * If our self_exec id doesn't match our parent_exec_id then 826 * If our self_exec id doesn't match our parent_exec_id then
827 * we have changed execution domain as these two values started 827 * we have changed execution domain as these two values started
828 * the same after a fork. 828 * the same after a fork.
829 *
830 */ 829 */
831
832 if (tsk->exit_signal != SIGCHLD && tsk->exit_signal != -1 && 830 if (tsk->exit_signal != SIGCHLD && tsk->exit_signal != -1 &&
833 ( tsk->parent_exec_id != t->self_exec_id || 831 ( tsk->parent_exec_id != t->self_exec_id ||
834 tsk->self_exec_id != tsk->parent_exec_id) 832 tsk->self_exec_id != tsk->parent_exec_id)
@@ -848,9 +846,7 @@ static void exit_notify(struct task_struct *tsk)
848 } 846 }
849 847
850 state = EXIT_ZOMBIE; 848 state = EXIT_ZOMBIE;
851 if (tsk->exit_signal == -1 && 849 if (tsk->exit_signal == -1 && likely(!tsk->ptrace))
852 (likely(tsk->ptrace == 0) ||
853 unlikely(tsk->parent->signal->flags & SIGNAL_GROUP_EXIT)))
854 state = EXIT_DEAD; 850 state = EXIT_DEAD;
855 tsk->exit_state = state; 851 tsk->exit_state = state;
856 852
diff --git a/kernel/printk.c b/kernel/printk.c
index 051d27e36a6c..bd2cd062878d 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -732,7 +732,7 @@ int __init add_preferred_console(char *name, int idx, char *options)
732 return 0; 732 return 0;
733} 733}
734 734
735int __init update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options) 735int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options)
736{ 736{
737 struct console_cmdline *c; 737 struct console_cmdline *c;
738 int i; 738 int i;
diff --git a/kernel/signal.c b/kernel/signal.c
index ef8156a6aad5..b27c01a66448 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1561,10 +1561,6 @@ static inline int may_ptrace_stop(void)
1561 (current->ptrace & PT_ATTACHED))) 1561 (current->ptrace & PT_ATTACHED)))
1562 return 0; 1562 return 0;
1563 1563
1564 if (unlikely(current->signal == current->parent->signal) &&
1565 unlikely(current->signal->flags & SIGNAL_GROUP_EXIT))
1566 return 0;
1567
1568 /* 1564 /*
1569 * Are we in the middle of do_coredump? 1565 * Are we in the middle of do_coredump?
1570 * If so and our tracer is also part of the coredump stopping 1566 * If so and our tracer is also part of the coredump stopping
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 06c08e5740fb..e68103475cca 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -831,7 +831,7 @@ const struct proto_ops inet_stream_ops = {
831 .shutdown = inet_shutdown, 831 .shutdown = inet_shutdown,
832 .setsockopt = sock_common_setsockopt, 832 .setsockopt = sock_common_setsockopt,
833 .getsockopt = sock_common_getsockopt, 833 .getsockopt = sock_common_getsockopt,
834 .sendmsg = inet_sendmsg, 834 .sendmsg = tcp_sendmsg,
835 .recvmsg = sock_common_recvmsg, 835 .recvmsg = sock_common_recvmsg,
836 .mmap = sock_no_mmap, 836 .mmap = sock_no_mmap,
837 .sendpage = tcp_sendpage, 837 .sendpage = tcp_sendpage,
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
index 27c7918e442a..b3dd5de9a258 100644
--- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
+++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
@@ -294,15 +294,14 @@ static int exp_open(struct inode *inode, struct file *file)
294 struct ct_expect_iter_state *st; 294 struct ct_expect_iter_state *st;
295 int ret; 295 int ret;
296 296
297 st = kmalloc(sizeof(struct ct_expect_iter_state), GFP_KERNEL); 297 st = kzalloc(sizeof(struct ct_expect_iter_state), GFP_KERNEL);
298 if (st == NULL) 298 if (!st)
299 return -ENOMEM; 299 return -ENOMEM;
300 ret = seq_open(file, &exp_seq_ops); 300 ret = seq_open(file, &exp_seq_ops);
301 if (ret) 301 if (ret)
302 goto out_free; 302 goto out_free;
303 seq = file->private_data; 303 seq = file->private_data;
304 seq->private = st; 304 seq->private = st;
305 memset(st, 0, sizeof(struct ct_expect_iter_state));
306 return ret; 305 return ret;
307out_free: 306out_free:
308 kfree(st); 307 kfree(st);
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index 24d7c9f31918..c6d71526f625 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -900,8 +900,9 @@ static int raw_seq_open(struct inode *inode, struct file *file)
900{ 900{
901 struct seq_file *seq; 901 struct seq_file *seq;
902 int rc = -ENOMEM; 902 int rc = -ENOMEM;
903 struct raw_iter_state *s = kmalloc(sizeof(*s), GFP_KERNEL); 903 struct raw_iter_state *s;
904 904
905 s = kzalloc(sizeof(*s), GFP_KERNEL);
905 if (!s) 906 if (!s)
906 goto out; 907 goto out;
907 rc = seq_open(file, &raw_seq_ops); 908 rc = seq_open(file, &raw_seq_ops);
@@ -910,7 +911,6 @@ static int raw_seq_open(struct inode *inode, struct file *file)
910 911
911 seq = file->private_data; 912 seq = file->private_data;
912 seq->private = s; 913 seq->private = s;
913 memset(s, 0, sizeof(*s));
914out: 914out:
915 return rc; 915 return rc;
916out_kfree: 916out_kfree:
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index df42b7fb3268..c7ca94bd152c 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -374,8 +374,9 @@ static int rt_cache_seq_open(struct inode *inode, struct file *file)
374{ 374{
375 struct seq_file *seq; 375 struct seq_file *seq;
376 int rc = -ENOMEM; 376 int rc = -ENOMEM;
377 struct rt_cache_iter_state *s = kmalloc(sizeof(*s), GFP_KERNEL); 377 struct rt_cache_iter_state *s;
378 378
379 s = kzalloc(sizeof(*s), GFP_KERNEL);
379 if (!s) 380 if (!s)
380 goto out; 381 goto out;
381 rc = seq_open(file, &rt_cache_seq_ops); 382 rc = seq_open(file, &rt_cache_seq_ops);
@@ -383,7 +384,6 @@ static int rt_cache_seq_open(struct inode *inode, struct file *file)
383 goto out_kfree; 384 goto out_kfree;
384 seq = file->private_data; 385 seq = file->private_data;
385 seq->private = s; 386 seq->private = s;
386 memset(s, 0, sizeof(*s));
387out: 387out:
388 return rc; 388 return rc;
389out_kfree: 389out_kfree:
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index da4c0b6ab79a..7e740112b238 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -658,9 +658,10 @@ static inline int select_size(struct sock *sk)
658 return tmp; 658 return tmp;
659} 659}
660 660
661int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, 661int tcp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
662 size_t size) 662 size_t size)
663{ 663{
664 struct sock *sk = sock->sk;
664 struct iovec *iov; 665 struct iovec *iov;
665 struct tcp_sock *tp = tcp_sk(sk); 666 struct tcp_sock *tp = tcp_sk(sk);
666 struct sk_buff *skb; 667 struct sk_buff *skb;
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 378ca8a086a3..f030435e0eb4 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -102,11 +102,14 @@ int sysctl_tcp_abc __read_mostly;
102#define FLAG_DATA_LOST 0x80 /* SACK detected data lossage. */ 102#define FLAG_DATA_LOST 0x80 /* SACK detected data lossage. */
103#define FLAG_SLOWPATH 0x100 /* Do not skip RFC checks for window update.*/ 103#define FLAG_SLOWPATH 0x100 /* Do not skip RFC checks for window update.*/
104#define FLAG_ONLY_ORIG_SACKED 0x200 /* SACKs only non-rexmit sent before RTO */ 104#define FLAG_ONLY_ORIG_SACKED 0x200 /* SACKs only non-rexmit sent before RTO */
105#define FLAG_SND_UNA_ADVANCED 0x400 /* Snd_una was changed (!= FLAG_DATA_ACKED) */
106#define FLAG_DSACKING_ACK 0x800 /* SACK blocks contained DSACK info */
105 107
106#define FLAG_ACKED (FLAG_DATA_ACKED|FLAG_SYN_ACKED) 108#define FLAG_ACKED (FLAG_DATA_ACKED|FLAG_SYN_ACKED)
107#define FLAG_NOT_DUP (FLAG_DATA|FLAG_WIN_UPDATE|FLAG_ACKED) 109#define FLAG_NOT_DUP (FLAG_DATA|FLAG_WIN_UPDATE|FLAG_ACKED)
108#define FLAG_CA_ALERT (FLAG_DATA_SACKED|FLAG_ECE) 110#define FLAG_CA_ALERT (FLAG_DATA_SACKED|FLAG_ECE)
109#define FLAG_FORWARD_PROGRESS (FLAG_ACKED|FLAG_DATA_SACKED) 111#define FLAG_FORWARD_PROGRESS (FLAG_ACKED|FLAG_DATA_SACKED)
112#define FLAG_ANY_PROGRESS (FLAG_FORWARD_PROGRESS|FLAG_SND_UNA_ADVANCED)
110 113
111#define IsReno(tp) ((tp)->rx_opt.sack_ok == 0) 114#define IsReno(tp) ((tp)->rx_opt.sack_ok == 0)
112#define IsFack(tp) ((tp)->rx_opt.sack_ok & 2) 115#define IsFack(tp) ((tp)->rx_opt.sack_ok & 2)
@@ -964,12 +967,14 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_
964 967
965 /* Check for D-SACK. */ 968 /* Check for D-SACK. */
966 if (before(ntohl(sp[0].start_seq), TCP_SKB_CB(ack_skb)->ack_seq)) { 969 if (before(ntohl(sp[0].start_seq), TCP_SKB_CB(ack_skb)->ack_seq)) {
970 flag |= FLAG_DSACKING_ACK;
967 found_dup_sack = 1; 971 found_dup_sack = 1;
968 tp->rx_opt.sack_ok |= 4; 972 tp->rx_opt.sack_ok |= 4;
969 NET_INC_STATS_BH(LINUX_MIB_TCPDSACKRECV); 973 NET_INC_STATS_BH(LINUX_MIB_TCPDSACKRECV);
970 } else if (num_sacks > 1 && 974 } else if (num_sacks > 1 &&
971 !after(ntohl(sp[0].end_seq), ntohl(sp[1].end_seq)) && 975 !after(ntohl(sp[0].end_seq), ntohl(sp[1].end_seq)) &&
972 !before(ntohl(sp[0].start_seq), ntohl(sp[1].start_seq))) { 976 !before(ntohl(sp[0].start_seq), ntohl(sp[1].start_seq))) {
977 flag |= FLAG_DSACKING_ACK;
973 found_dup_sack = 1; 978 found_dup_sack = 1;
974 tp->rx_opt.sack_ok |= 4; 979 tp->rx_opt.sack_ok |= 4;
975 NET_INC_STATS_BH(LINUX_MIB_TCPDSACKOFORECV); 980 NET_INC_STATS_BH(LINUX_MIB_TCPDSACKOFORECV);
@@ -1856,7 +1861,7 @@ static void tcp_cwnd_down(struct sock *sk, int flag)
1856 struct tcp_sock *tp = tcp_sk(sk); 1861 struct tcp_sock *tp = tcp_sk(sk);
1857 int decr = tp->snd_cwnd_cnt + 1; 1862 int decr = tp->snd_cwnd_cnt + 1;
1858 1863
1859 if ((flag&FLAG_FORWARD_PROGRESS) || 1864 if ((flag&(FLAG_ANY_PROGRESS|FLAG_DSACKING_ACK)) ||
1860 (IsReno(tp) && !(flag&FLAG_NOT_DUP))) { 1865 (IsReno(tp) && !(flag&FLAG_NOT_DUP))) {
1861 tp->snd_cwnd_cnt = decr&1; 1866 tp->snd_cwnd_cnt = decr&1;
1862 decr >>= 1; 1867 decr >>= 1;
@@ -2107,15 +2112,13 @@ static void tcp_mtup_probe_success(struct sock *sk, struct sk_buff *skb)
2107 * tcp_xmit_retransmit_queue(). 2112 * tcp_xmit_retransmit_queue().
2108 */ 2113 */
2109static void 2114static void
2110tcp_fastretrans_alert(struct sock *sk, u32 prior_snd_una, 2115tcp_fastretrans_alert(struct sock *sk, int prior_packets, int flag)
2111 int prior_packets, int flag)
2112{ 2116{
2113 struct inet_connection_sock *icsk = inet_csk(sk); 2117 struct inet_connection_sock *icsk = inet_csk(sk);
2114 struct tcp_sock *tp = tcp_sk(sk); 2118 struct tcp_sock *tp = tcp_sk(sk);
2115 int is_dupack = (tp->snd_una == prior_snd_una && 2119 int is_dupack = !(flag&(FLAG_SND_UNA_ADVANCED|FLAG_NOT_DUP));
2116 (!(flag&FLAG_NOT_DUP) || 2120 int do_lost = is_dupack || ((flag&FLAG_DATA_SACKED) &&
2117 ((flag&FLAG_DATA_SACKED) && 2121 (tp->fackets_out > tp->reordering));
2118 (tp->fackets_out > tp->reordering))));
2119 2122
2120 /* Some technical things: 2123 /* Some technical things:
2121 * 1. Reno does not count dupacks (sacked_out) automatically. */ 2124 * 1. Reno does not count dupacks (sacked_out) automatically. */
@@ -2192,14 +2195,14 @@ tcp_fastretrans_alert(struct sock *sk, u32 prior_snd_una,
2192 /* F. Process state. */ 2195 /* F. Process state. */
2193 switch (icsk->icsk_ca_state) { 2196 switch (icsk->icsk_ca_state) {
2194 case TCP_CA_Recovery: 2197 case TCP_CA_Recovery:
2195 if (prior_snd_una == tp->snd_una) { 2198 if (!(flag & FLAG_SND_UNA_ADVANCED)) {
2196 if (IsReno(tp) && is_dupack) 2199 if (IsReno(tp) && is_dupack)
2197 tcp_add_reno_sack(sk); 2200 tcp_add_reno_sack(sk);
2198 } else { 2201 } else {
2199 int acked = prior_packets - tp->packets_out; 2202 int acked = prior_packets - tp->packets_out;
2200 if (IsReno(tp)) 2203 if (IsReno(tp))
2201 tcp_remove_reno_sacks(sk, acked); 2204 tcp_remove_reno_sacks(sk, acked);
2202 is_dupack = tcp_try_undo_partial(sk, acked); 2205 do_lost = tcp_try_undo_partial(sk, acked);
2203 } 2206 }
2204 break; 2207 break;
2205 case TCP_CA_Loss: 2208 case TCP_CA_Loss:
@@ -2215,7 +2218,7 @@ tcp_fastretrans_alert(struct sock *sk, u32 prior_snd_una,
2215 /* Loss is undone; fall through to processing in Open state. */ 2218 /* Loss is undone; fall through to processing in Open state. */
2216 default: 2219 default:
2217 if (IsReno(tp)) { 2220 if (IsReno(tp)) {
2218 if (tp->snd_una != prior_snd_una) 2221 if (flag & FLAG_SND_UNA_ADVANCED)
2219 tcp_reset_reno_sack(tp); 2222 tcp_reset_reno_sack(tp);
2220 if (is_dupack) 2223 if (is_dupack)
2221 tcp_add_reno_sack(sk); 2224 tcp_add_reno_sack(sk);
@@ -2264,7 +2267,7 @@ tcp_fastretrans_alert(struct sock *sk, u32 prior_snd_una,
2264 tcp_set_ca_state(sk, TCP_CA_Recovery); 2267 tcp_set_ca_state(sk, TCP_CA_Recovery);
2265 } 2268 }
2266 2269
2267 if (is_dupack || tcp_head_timedout(sk)) 2270 if (do_lost || tcp_head_timedout(sk))
2268 tcp_update_scoreboard(sk); 2271 tcp_update_scoreboard(sk);
2269 tcp_cwnd_down(sk, flag); 2272 tcp_cwnd_down(sk, flag);
2270 tcp_xmit_retransmit_queue(sk); 2273 tcp_xmit_retransmit_queue(sk);
@@ -2684,7 +2687,7 @@ static void tcp_undo_spur_to_response(struct sock *sk, int flag)
2684 * to prove that the RTO is indeed spurious. It transfers the control 2687 * to prove that the RTO is indeed spurious. It transfers the control
2685 * from F-RTO to the conventional RTO recovery 2688 * from F-RTO to the conventional RTO recovery
2686 */ 2689 */
2687static int tcp_process_frto(struct sock *sk, u32 prior_snd_una, int flag) 2690static int tcp_process_frto(struct sock *sk, int flag)
2688{ 2691{
2689 struct tcp_sock *tp = tcp_sk(sk); 2692 struct tcp_sock *tp = tcp_sk(sk);
2690 2693
@@ -2704,8 +2707,7 @@ static int tcp_process_frto(struct sock *sk, u32 prior_snd_una, int flag)
2704 * ACK isn't duplicate nor advances window, e.g., opposite dir 2707 * ACK isn't duplicate nor advances window, e.g., opposite dir
2705 * data, winupdate 2708 * data, winupdate
2706 */ 2709 */
2707 if ((tp->snd_una == prior_snd_una) && (flag&FLAG_NOT_DUP) && 2710 if (!(flag&FLAG_ANY_PROGRESS) && (flag&FLAG_NOT_DUP))
2708 !(flag&FLAG_FORWARD_PROGRESS))
2709 return 1; 2711 return 1;
2710 2712
2711 if (!(flag&FLAG_DATA_ACKED)) { 2713 if (!(flag&FLAG_DATA_ACKED)) {
@@ -2785,6 +2787,9 @@ static int tcp_ack(struct sock *sk, struct sk_buff *skb, int flag)
2785 if (before(ack, prior_snd_una)) 2787 if (before(ack, prior_snd_una))
2786 goto old_ack; 2788 goto old_ack;
2787 2789
2790 if (after(ack, prior_snd_una))
2791 flag |= FLAG_SND_UNA_ADVANCED;
2792
2788 if (sysctl_tcp_abc) { 2793 if (sysctl_tcp_abc) {
2789 if (icsk->icsk_ca_state < TCP_CA_CWR) 2794 if (icsk->icsk_ca_state < TCP_CA_CWR)
2790 tp->bytes_acked += ack - prior_snd_una; 2795 tp->bytes_acked += ack - prior_snd_una;
@@ -2837,14 +2842,14 @@ static int tcp_ack(struct sock *sk, struct sk_buff *skb, int flag)
2837 flag |= tcp_clean_rtx_queue(sk, &seq_rtt); 2842 flag |= tcp_clean_rtx_queue(sk, &seq_rtt);
2838 2843
2839 if (tp->frto_counter) 2844 if (tp->frto_counter)
2840 frto_cwnd = tcp_process_frto(sk, prior_snd_una, flag); 2845 frto_cwnd = tcp_process_frto(sk, flag);
2841 2846
2842 if (tcp_ack_is_dubious(sk, flag)) { 2847 if (tcp_ack_is_dubious(sk, flag)) {
2843 /* Advance CWND, if state allows this. */ 2848 /* Advance CWND, if state allows this. */
2844 if ((flag & FLAG_DATA_ACKED) && !frto_cwnd && 2849 if ((flag & FLAG_DATA_ACKED) && !frto_cwnd &&
2845 tcp_may_raise_cwnd(sk, flag)) 2850 tcp_may_raise_cwnd(sk, flag))
2846 tcp_cong_avoid(sk, ack, prior_in_flight, 0); 2851 tcp_cong_avoid(sk, ack, prior_in_flight, 0);
2847 tcp_fastretrans_alert(sk, prior_snd_una, prior_packets, flag); 2852 tcp_fastretrans_alert(sk, prior_packets, flag);
2848 } else { 2853 } else {
2849 if ((flag & FLAG_DATA_ACKED) && !frto_cwnd) 2854 if ((flag & FLAG_DATA_ACKED) && !frto_cwnd)
2850 tcp_cong_avoid(sk, ack, prior_in_flight, 1); 2855 tcp_cong_avoid(sk, ack, prior_in_flight, 1);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 3f5f7423b95c..9c94627c8c7e 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -2425,7 +2425,6 @@ struct proto tcp_prot = {
2425 .shutdown = tcp_shutdown, 2425 .shutdown = tcp_shutdown,
2426 .setsockopt = tcp_setsockopt, 2426 .setsockopt = tcp_setsockopt,
2427 .getsockopt = tcp_getsockopt, 2427 .getsockopt = tcp_getsockopt,
2428 .sendmsg = tcp_sendmsg,
2429 .recvmsg = tcp_recvmsg, 2428 .recvmsg = tcp_recvmsg,
2430 .backlog_rcv = tcp_v4_do_rcv, 2429 .backlog_rcv = tcp_v4_do_rcv,
2431 .hash = tcp_v4_hash, 2430 .hash = tcp_v4_hash,
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index eed09373a45d..b5f96372ad73 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -484,7 +484,7 @@ const struct proto_ops inet6_stream_ops = {
484 .shutdown = inet_shutdown, /* ok */ 484 .shutdown = inet_shutdown, /* ok */
485 .setsockopt = sock_common_setsockopt, /* ok */ 485 .setsockopt = sock_common_setsockopt, /* ok */
486 .getsockopt = sock_common_getsockopt, /* ok */ 486 .getsockopt = sock_common_getsockopt, /* ok */
487 .sendmsg = inet_sendmsg, /* ok */ 487 .sendmsg = tcp_sendmsg, /* ok */
488 .recvmsg = sock_common_recvmsg, /* ok */ 488 .recvmsg = sock_common_recvmsg, /* ok */
489 .mmap = sock_no_mmap, 489 .mmap = sock_no_mmap,
490 .sendpage = tcp_sendpage, 490 .sendpage = tcp_sendpage,
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index f10f3689d671..cbdb78487915 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -2115,7 +2115,6 @@ struct proto tcpv6_prot = {
2115 .shutdown = tcp_shutdown, 2115 .shutdown = tcp_shutdown,
2116 .setsockopt = tcp_setsockopt, 2116 .setsockopt = tcp_setsockopt,
2117 .getsockopt = tcp_getsockopt, 2117 .getsockopt = tcp_getsockopt,
2118 .sendmsg = tcp_sendmsg,
2119 .recvmsg = tcp_recvmsg, 2118 .recvmsg = tcp_recvmsg,
2120 .backlog_rcv = tcp_v6_do_rcv, 2119 .backlog_rcv = tcp_v6_do_rcv,
2121 .hash = tcp_v6_hash, 2120 .hash = tcp_v6_hash,
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 7b0a95abe934..5502df115a63 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -1206,6 +1206,9 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct sadb_msg *hdr,
1206 x->sel.prefixlen_s = addr->sadb_address_prefixlen; 1206 x->sel.prefixlen_s = addr->sadb_address_prefixlen;
1207 } 1207 }
1208 1208
1209 if (!x->sel.family)
1210 x->sel.family = x->props.family;
1211
1209 if (ext_hdrs[SADB_X_EXT_NAT_T_TYPE-1]) { 1212 if (ext_hdrs[SADB_X_EXT_NAT_T_TYPE-1]) {
1210 struct sadb_x_nat_t_type* n_type; 1213 struct sadb_x_nat_t_type* n_type;
1211 struct xfrm_encap_tmpl *natt; 1214 struct xfrm_encap_tmpl *natt;
diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c
index eb6695dcd73b..3ac64e25f10c 100644
--- a/net/netfilter/nf_conntrack_expect.c
+++ b/net/netfilter/nf_conntrack_expect.c
@@ -477,15 +477,14 @@ static int exp_open(struct inode *inode, struct file *file)
477 struct ct_expect_iter_state *st; 477 struct ct_expect_iter_state *st;
478 int ret; 478 int ret;
479 479
480 st = kmalloc(sizeof(struct ct_expect_iter_state), GFP_KERNEL); 480 st = kzalloc(sizeof(struct ct_expect_iter_state), GFP_KERNEL);
481 if (st == NULL) 481 if (!st)
482 return -ENOMEM; 482 return -ENOMEM;
483 ret = seq_open(file, &exp_seq_ops); 483 ret = seq_open(file, &exp_seq_ops);
484 if (ret) 484 if (ret)
485 goto out_free; 485 goto out_free;
486 seq = file->private_data; 486 seq = file->private_data;
487 seq->private = st; 487 seq->private = st;
488 memset(st, 0, sizeof(struct ct_expect_iter_state));
489 return ret; 488 return ret;
490out_free: 489out_free:
491 kfree(st); 490 kfree(st);
diff --git a/net/sctp/input.c b/net/sctp/input.c
index d57ff7f3c576..47e56017f4ce 100644
--- a/net/sctp/input.c
+++ b/net/sctp/input.c
@@ -590,7 +590,7 @@ out_unlock:
590 * Return 0 - If further processing is needed. 590 * Return 0 - If further processing is needed.
591 * Return 1 - If the packet can be discarded right away. 591 * Return 1 - If the packet can be discarded right away.
592 */ 592 */
593int sctp_rcv_ootb(struct sk_buff *skb) 593static int sctp_rcv_ootb(struct sk_buff *skb)
594{ 594{
595 sctp_chunkhdr_t *ch; 595 sctp_chunkhdr_t *ch;
596 __u8 *ch_end; 596 __u8 *ch_end;
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
index 2c29394fd92e..f8aa23dda1c1 100644
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -641,6 +641,8 @@ static struct sock *sctp_v6_create_accept_sk(struct sock *sk,
641 newsctp6sk = (struct sctp6_sock *)newsk; 641 newsctp6sk = (struct sctp6_sock *)newsk;
642 inet_sk(newsk)->pinet6 = &newsctp6sk->inet6; 642 inet_sk(newsk)->pinet6 = &newsctp6sk->inet6;
643 643
644 sctp_sk(newsk)->v4mapped = sctp_sk(sk)->v4mapped;
645
644 newinet = inet_sk(newsk); 646 newinet = inet_sk(newsk);
645 newnp = inet6_sk(newsk); 647 newnp = inet6_sk(newsk);
646 648
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index 8d18f570c2e6..51c4d7fef1d2 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -65,8 +65,6 @@
65#include <net/sctp/sctp.h> 65#include <net/sctp/sctp.h>
66#include <net/sctp/sm.h> 66#include <net/sctp/sm.h>
67 67
68extern struct kmem_cache *sctp_chunk_cachep;
69
70SCTP_STATIC 68SCTP_STATIC
71struct sctp_chunk *sctp_make_chunk(const struct sctp_association *asoc, 69struct sctp_chunk *sctp_make_chunk(const struct sctp_association *asoc,
72 __u8 type, __u8 flags, int paylen); 70 __u8 type, __u8 flags, int paylen);
@@ -115,15 +113,12 @@ void sctp_init_cause(struct sctp_chunk *chunk, __be16 cause_code,
115 const void *payload, size_t paylen) 113 const void *payload, size_t paylen)
116{ 114{
117 sctp_errhdr_t err; 115 sctp_errhdr_t err;
118 int padlen;
119 __u16 len; 116 __u16 len;
120 117
121 /* Cause code constants are now defined in network order. */ 118 /* Cause code constants are now defined in network order. */
122 err.cause = cause_code; 119 err.cause = cause_code;
123 len = sizeof(sctp_errhdr_t) + paylen; 120 len = sizeof(sctp_errhdr_t) + paylen;
124 padlen = len % 4;
125 err.length = htons(len); 121 err.length = htons(len);
126 len += padlen;
127 chunk->subh.err_hdr = sctp_addto_chunk(chunk, sizeof(sctp_errhdr_t), &err); 122 chunk->subh.err_hdr = sctp_addto_chunk(chunk, sizeof(sctp_errhdr_t), &err);
128 sctp_addto_chunk(chunk, paylen, payload); 123 sctp_addto_chunk(chunk, paylen, payload);
129} 124}
@@ -1454,7 +1449,6 @@ no_hmac:
1454 do_gettimeofday(&tv); 1449 do_gettimeofday(&tv);
1455 1450
1456 if (!asoc && tv_lt(bear_cookie->expiration, tv)) { 1451 if (!asoc && tv_lt(bear_cookie->expiration, tv)) {
1457 __u16 len;
1458 /* 1452 /*
1459 * Section 3.3.10.3 Stale Cookie Error (3) 1453 * Section 3.3.10.3 Stale Cookie Error (3)
1460 * 1454 *
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index fd2dfdd7d7fd..71cad56dd73f 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -97,6 +97,13 @@ static sctp_disposition_t sctp_stop_t1_and_abort(sctp_cmd_seq_t *commands,
97 const struct sctp_association *asoc, 97 const struct sctp_association *asoc,
98 struct sctp_transport *transport); 98 struct sctp_transport *transport);
99 99
100static sctp_disposition_t sctp_sf_abort_violation(
101 const struct sctp_association *asoc,
102 void *arg,
103 sctp_cmd_seq_t *commands,
104 const __u8 *payload,
105 const size_t paylen);
106
100static sctp_disposition_t sctp_sf_violation_chunklen( 107static sctp_disposition_t sctp_sf_violation_chunklen(
101 const struct sctp_endpoint *ep, 108 const struct sctp_endpoint *ep,
102 const struct sctp_association *asoc, 109 const struct sctp_association *asoc,
@@ -104,6 +111,13 @@ static sctp_disposition_t sctp_sf_violation_chunklen(
104 void *arg, 111 void *arg,
105 sctp_cmd_seq_t *commands); 112 sctp_cmd_seq_t *commands);
106 113
114static sctp_disposition_t sctp_sf_violation_ctsn(
115 const struct sctp_endpoint *ep,
116 const struct sctp_association *asoc,
117 const sctp_subtype_t type,
118 void *arg,
119 sctp_cmd_seq_t *commands);
120
107/* Small helper function that checks if the chunk length 121/* Small helper function that checks if the chunk length
108 * is of the appropriate length. The 'required_length' argument 122 * is of the appropriate length. The 'required_length' argument
109 * is set to be the size of a specific chunk we are testing. 123 * is set to be the size of a specific chunk we are testing.
@@ -2880,6 +2894,13 @@ sctp_disposition_t sctp_sf_eat_sack_6_2(const struct sctp_endpoint *ep,
2880 return SCTP_DISPOSITION_DISCARD; 2894 return SCTP_DISPOSITION_DISCARD;
2881 } 2895 }
2882 2896
2897 /* If Cumulative TSN Ack beyond the max tsn currently
2898 * send, terminating the association and respond to the
2899 * sender with an ABORT.
2900 */
2901 if (!TSN_lt(ctsn, asoc->next_tsn))
2902 return sctp_sf_violation_ctsn(ep, asoc, type, arg, commands);
2903
2883 /* Return this SACK for further processing. */ 2904 /* Return this SACK for further processing. */
2884 sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK, SCTP_SACKH(sackh)); 2905 sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK, SCTP_SACKH(sackh));
2885 2906
@@ -3691,40 +3712,21 @@ sctp_disposition_t sctp_sf_violation(const struct sctp_endpoint *ep,
3691 return SCTP_DISPOSITION_VIOLATION; 3712 return SCTP_DISPOSITION_VIOLATION;
3692} 3713}
3693 3714
3694
3695/* 3715/*
3696 * Handle a protocol violation when the chunk length is invalid. 3716 * Common function to handle a protocol violation.
3697 * "Invalid" length is identified as smaller then the minimal length a
3698 * given chunk can be. For example, a SACK chunk has invalid length
3699 * if it's length is set to be smaller then the size of sctp_sack_chunk_t.
3700 *
3701 * We inform the other end by sending an ABORT with a Protocol Violation
3702 * error code.
3703 *
3704 * Section: Not specified
3705 * Verification Tag: Nothing to do
3706 * Inputs
3707 * (endpoint, asoc, chunk)
3708 *
3709 * Outputs
3710 * (reply_msg, msg_up, counters)
3711 *
3712 * Generate an ABORT chunk and terminate the association.
3713 */ 3717 */
3714static sctp_disposition_t sctp_sf_violation_chunklen( 3718static sctp_disposition_t sctp_sf_abort_violation(
3715 const struct sctp_endpoint *ep,
3716 const struct sctp_association *asoc, 3719 const struct sctp_association *asoc,
3717 const sctp_subtype_t type,
3718 void *arg, 3720 void *arg,
3719 sctp_cmd_seq_t *commands) 3721 sctp_cmd_seq_t *commands,
3722 const __u8 *payload,
3723 const size_t paylen)
3720{ 3724{
3721 struct sctp_chunk *chunk = arg; 3725 struct sctp_chunk *chunk = arg;
3722 struct sctp_chunk *abort = NULL; 3726 struct sctp_chunk *abort = NULL;
3723 char err_str[]="The following chunk had invalid length:";
3724 3727
3725 /* Make the abort chunk. */ 3728 /* Make the abort chunk. */
3726 abort = sctp_make_abort_violation(asoc, chunk, err_str, 3729 abort = sctp_make_abort_violation(asoc, chunk, payload, paylen);
3727 sizeof(err_str));
3728 if (!abort) 3730 if (!abort)
3729 goto nomem; 3731 goto nomem;
3730 3732
@@ -3756,6 +3758,57 @@ nomem:
3756 return SCTP_DISPOSITION_NOMEM; 3758 return SCTP_DISPOSITION_NOMEM;
3757} 3759}
3758 3760
3761/*
3762 * Handle a protocol violation when the chunk length is invalid.
3763 * "Invalid" length is identified as smaller then the minimal length a
3764 * given chunk can be. For example, a SACK chunk has invalid length
3765 * if it's length is set to be smaller then the size of sctp_sack_chunk_t.
3766 *
3767 * We inform the other end by sending an ABORT with a Protocol Violation
3768 * error code.
3769 *
3770 * Section: Not specified
3771 * Verification Tag: Nothing to do
3772 * Inputs
3773 * (endpoint, asoc, chunk)
3774 *
3775 * Outputs
3776 * (reply_msg, msg_up, counters)
3777 *
3778 * Generate an ABORT chunk and terminate the association.
3779 */
3780static sctp_disposition_t sctp_sf_violation_chunklen(
3781 const struct sctp_endpoint *ep,
3782 const struct sctp_association *asoc,
3783 const sctp_subtype_t type,
3784 void *arg,
3785 sctp_cmd_seq_t *commands)
3786{
3787 char err_str[]="The following chunk had invalid length:";
3788
3789 return sctp_sf_abort_violation(asoc, arg, commands, err_str,
3790 sizeof(err_str));
3791}
3792
3793/* Handle a protocol violation when the peer trying to advance the
3794 * cumulative tsn ack to a point beyond the max tsn currently sent.
3795 *
3796 * We inform the other end by sending an ABORT with a Protocol Violation
3797 * error code.
3798 */
3799static sctp_disposition_t sctp_sf_violation_ctsn(
3800 const struct sctp_endpoint *ep,
3801 const struct sctp_association *asoc,
3802 const sctp_subtype_t type,
3803 void *arg,
3804 sctp_cmd_seq_t *commands)
3805{
3806 char err_str[]="The cumulative tsn ack beyond the max tsn currently sent:";
3807
3808 return sctp_sf_abort_violation(asoc, arg, commands, err_str,
3809 sizeof(err_str));
3810}
3811
3759/*************************************************************************** 3812/***************************************************************************
3760 * These are the state functions for handling primitive (Section 10) events. 3813 * These are the state functions for handling primitive (Section 10) events.
3761 ***************************************************************************/ 3814 ***************************************************************************/
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index ee88f2ea5101..01c6364245b7 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -107,8 +107,6 @@ static void sctp_sock_migrate(struct sock *, struct sock *,
107 struct sctp_association *, sctp_socket_type_t); 107 struct sctp_association *, sctp_socket_type_t);
108static char *sctp_hmac_alg = SCTP_COOKIE_HMAC_ALG; 108static char *sctp_hmac_alg = SCTP_COOKIE_HMAC_ALG;
109 109
110extern struct kmem_cache *sctp_bucket_cachep;
111
112/* Get the sndbuf space available at the time on the association. */ 110/* Get the sndbuf space available at the time on the association. */
113static inline int sctp_wspace(struct sctp_association *asoc) 111static inline int sctp_wspace(struct sctp_association *asoc)
114{ 112{
@@ -433,7 +431,7 @@ out:
433 * 431 *
434 * Only sctp_setsockopt_bindx() is supposed to call this function. 432 * Only sctp_setsockopt_bindx() is supposed to call this function.
435 */ 433 */
436int sctp_bindx_add(struct sock *sk, struct sockaddr *addrs, int addrcnt) 434static int sctp_bindx_add(struct sock *sk, struct sockaddr *addrs, int addrcnt)
437{ 435{
438 int cnt; 436 int cnt;
439 int retval = 0; 437 int retval = 0;
@@ -602,7 +600,7 @@ out:
602 * 600 *
603 * Only sctp_setsockopt_bindx() is supposed to call this function. 601 * Only sctp_setsockopt_bindx() is supposed to call this function.
604 */ 602 */
605int sctp_bindx_rem(struct sock *sk, struct sockaddr *addrs, int addrcnt) 603static int sctp_bindx_rem(struct sock *sk, struct sockaddr *addrs, int addrcnt)
606{ 604{
607 struct sctp_sock *sp = sctp_sk(sk); 605 struct sctp_sock *sp = sctp_sk(sk);
608 struct sctp_endpoint *ep = sp->ep; 606 struct sctp_endpoint *ep = sp->ep;
@@ -977,7 +975,7 @@ static int __sctp_connect(struct sock* sk,
977 int err = 0; 975 int err = 0;
978 int addrcnt = 0; 976 int addrcnt = 0;
979 int walk_size = 0; 977 int walk_size = 0;
980 union sctp_addr *sa_addr; 978 union sctp_addr *sa_addr = NULL;
981 void *addr_buf; 979 void *addr_buf;
982 unsigned short port; 980 unsigned short port;
983 unsigned int f_flags = 0; 981 unsigned int f_flags = 0;
@@ -1011,7 +1009,10 @@ static int __sctp_connect(struct sock* sk,
1011 goto out_free; 1009 goto out_free;
1012 } 1010 }
1013 1011
1014 err = sctp_verify_addr(sk, sa_addr, af->sockaddr_len); 1012 /* Save current address so we can work with it */
1013 memcpy(&to, sa_addr, af->sockaddr_len);
1014
1015 err = sctp_verify_addr(sk, &to, af->sockaddr_len);
1015 if (err) 1016 if (err)
1016 goto out_free; 1017 goto out_free;
1017 1018
@@ -1021,12 +1022,11 @@ static int __sctp_connect(struct sock* sk,
1021 if (asoc && asoc->peer.port && asoc->peer.port != port) 1022 if (asoc && asoc->peer.port && asoc->peer.port != port)
1022 goto out_free; 1023 goto out_free;
1023 1024
1024 memcpy(&to, sa_addr, af->sockaddr_len);
1025 1025
1026 /* Check if there already is a matching association on the 1026 /* Check if there already is a matching association on the
1027 * endpoint (other than the one created here). 1027 * endpoint (other than the one created here).
1028 */ 1028 */
1029 asoc2 = sctp_endpoint_lookup_assoc(ep, sa_addr, &transport); 1029 asoc2 = sctp_endpoint_lookup_assoc(ep, &to, &transport);
1030 if (asoc2 && asoc2 != asoc) { 1030 if (asoc2 && asoc2 != asoc) {
1031 if (asoc2->state >= SCTP_STATE_ESTABLISHED) 1031 if (asoc2->state >= SCTP_STATE_ESTABLISHED)
1032 err = -EISCONN; 1032 err = -EISCONN;
@@ -1039,7 +1039,7 @@ static int __sctp_connect(struct sock* sk,
1039 * make sure that there is no peeled-off association matching 1039 * make sure that there is no peeled-off association matching
1040 * the peer address even on another socket. 1040 * the peer address even on another socket.
1041 */ 1041 */
1042 if (sctp_endpoint_is_peeled_off(ep, sa_addr)) { 1042 if (sctp_endpoint_is_peeled_off(ep, &to)) {
1043 err = -EADDRNOTAVAIL; 1043 err = -EADDRNOTAVAIL;
1044 goto out_free; 1044 goto out_free;
1045 } 1045 }
@@ -1070,7 +1070,7 @@ static int __sctp_connect(struct sock* sk,
1070 } 1070 }
1071 } 1071 }
1072 1072
1073 scope = sctp_scope(sa_addr); 1073 scope = sctp_scope(&to);
1074 asoc = sctp_association_new(ep, sk, scope, GFP_KERNEL); 1074 asoc = sctp_association_new(ep, sk, scope, GFP_KERNEL);
1075 if (!asoc) { 1075 if (!asoc) {
1076 err = -ENOMEM; 1076 err = -ENOMEM;
@@ -1079,7 +1079,7 @@ static int __sctp_connect(struct sock* sk,
1079 } 1079 }
1080 1080
1081 /* Prime the peer's transport structures. */ 1081 /* Prime the peer's transport structures. */
1082 transport = sctp_assoc_add_peer(asoc, sa_addr, GFP_KERNEL, 1082 transport = sctp_assoc_add_peer(asoc, &to, GFP_KERNEL,
1083 SCTP_UNKNOWN); 1083 SCTP_UNKNOWN);
1084 if (!transport) { 1084 if (!transport) {
1085 err = -ENOMEM; 1085 err = -ENOMEM;
@@ -1103,8 +1103,8 @@ static int __sctp_connect(struct sock* sk,
1103 1103
1104 /* Initialize sk's dport and daddr for getpeername() */ 1104 /* Initialize sk's dport and daddr for getpeername() */
1105 inet_sk(sk)->dport = htons(asoc->peer.port); 1105 inet_sk(sk)->dport = htons(asoc->peer.port);
1106 af = sctp_get_af_specific(to.sa.sa_family); 1106 af = sctp_get_af_specific(sa_addr->sa.sa_family);
1107 af->to_sk_daddr(&to, sk); 1107 af->to_sk_daddr(sa_addr, sk);
1108 sk->sk_err = 0; 1108 sk->sk_err = 0;
1109 1109
1110 /* in-kernel sockets don't generally have a file allocated to them 1110 /* in-kernel sockets don't generally have a file allocated to them
@@ -1531,7 +1531,6 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
1531 goto out_unlock; 1531 goto out_unlock;
1532 } 1532 }
1533 if (sinfo_flags & SCTP_ABORT) { 1533 if (sinfo_flags & SCTP_ABORT) {
1534 struct sctp_chunk *chunk;
1535 1534
1536 chunk = sctp_make_abort_user(asoc, msg, msg_len); 1535 chunk = sctp_make_abort_user(asoc, msg, msg_len);
1537 if (!chunk) { 1536 if (!chunk) {
@@ -4353,7 +4352,7 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
4353 space_left, &bytes_copied); 4352 space_left, &bytes_copied);
4354 if (cnt < 0) { 4353 if (cnt < 0) {
4355 err = cnt; 4354 err = cnt;
4356 goto error; 4355 goto error_lock;
4357 } 4356 }
4358 goto copy_getaddrs; 4357 goto copy_getaddrs;
4359 } 4358 }
@@ -4367,7 +4366,7 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
4367 addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len; 4366 addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
4368 if (space_left < addrlen) { 4367 if (space_left < addrlen) {
4369 err = -ENOMEM; /*fixme: right error?*/ 4368 err = -ENOMEM; /*fixme: right error?*/
4370 goto error; 4369 goto error_lock;
4371 } 4370 }
4372 memcpy(buf, &temp, addrlen); 4371 memcpy(buf, &temp, addrlen);
4373 buf += addrlen; 4372 buf += addrlen;
@@ -4381,15 +4380,21 @@ copy_getaddrs:
4381 4380
4382 if (copy_to_user(to, addrs, bytes_copied)) { 4381 if (copy_to_user(to, addrs, bytes_copied)) {
4383 err = -EFAULT; 4382 err = -EFAULT;
4384 goto error; 4383 goto out;
4385 } 4384 }
4386 if (put_user(cnt, &((struct sctp_getaddrs __user *)optval)->addr_num)) { 4385 if (put_user(cnt, &((struct sctp_getaddrs __user *)optval)->addr_num)) {
4387 err = -EFAULT; 4386 err = -EFAULT;
4388 goto error; 4387 goto out;
4389 } 4388 }
4390 if (put_user(bytes_copied, optlen)) 4389 if (put_user(bytes_copied, optlen))
4391 err = -EFAULT; 4390 err = -EFAULT;
4392error: 4391
4392 goto out;
4393
4394error_lock:
4395 sctp_read_unlock(addr_lock);
4396
4397out:
4393 kfree(addrs); 4398 kfree(addrs);
4394 return err; 4399 return err;
4395} 4400}
@@ -5964,7 +5969,7 @@ static int sctp_wait_for_accept(struct sock *sk, long timeo)
5964 return err; 5969 return err;
5965} 5970}
5966 5971
5967void sctp_wait_for_close(struct sock *sk, long timeout) 5972static void sctp_wait_for_close(struct sock *sk, long timeout)
5968{ 5973{
5969 DEFINE_WAIT(wait); 5974 DEFINE_WAIT(wait);
5970 5975
diff --git a/net/sctp/tsnmap.c b/net/sctp/tsnmap.c
index d3192a1babcc..1ff0daade304 100644
--- a/net/sctp/tsnmap.c
+++ b/net/sctp/tsnmap.c
@@ -161,7 +161,7 @@ SCTP_STATIC int sctp_tsnmap_next_gap_ack(const struct sctp_tsnmap *map,
161 __u16 *start, __u16 *end) 161 __u16 *start, __u16 *end)
162{ 162{
163 int started, ended; 163 int started, ended;
164 __u16 _start, _end, offset; 164 __u16 start_, end_, offset;
165 165
166 /* We haven't found a gap yet. */ 166 /* We haven't found a gap yet. */
167 started = ended = 0; 167 started = ended = 0;
@@ -175,7 +175,7 @@ SCTP_STATIC int sctp_tsnmap_next_gap_ack(const struct sctp_tsnmap *map,
175 175
176 offset = iter->start - map->base_tsn; 176 offset = iter->start - map->base_tsn;
177 sctp_tsnmap_find_gap_ack(map->tsn_map, offset, map->len, 0, 177 sctp_tsnmap_find_gap_ack(map->tsn_map, offset, map->len, 0,
178 &started, &_start, &ended, &_end); 178 &started, &start_, &ended, &end_);
179 } 179 }
180 180
181 /* Do we need to check the overflow map? */ 181 /* Do we need to check the overflow map? */
@@ -193,8 +193,8 @@ SCTP_STATIC int sctp_tsnmap_next_gap_ack(const struct sctp_tsnmap *map,
193 offset, 193 offset,
194 map->len, 194 map->len,
195 map->len, 195 map->len,
196 &started, &_start, 196 &started, &start_,
197 &ended, &_end); 197 &ended, &end_);
198 } 198 }
199 199
200 /* The Gap Ack Block happens to end at the end of the 200 /* The Gap Ack Block happens to end at the end of the
@@ -202,7 +202,7 @@ SCTP_STATIC int sctp_tsnmap_next_gap_ack(const struct sctp_tsnmap *map,
202 */ 202 */
203 if (started && !ended) { 203 if (started && !ended) {
204 ended++; 204 ended++;
205 _end = map->len + map->len - 1; 205 end_ = map->len + map->len - 1;
206 } 206 }
207 207
208 /* If we found a Gap Ack Block, return the start and end and 208 /* If we found a Gap Ack Block, return the start and end and
@@ -215,8 +215,8 @@ SCTP_STATIC int sctp_tsnmap_next_gap_ack(const struct sctp_tsnmap *map,
215 int gap = map->cumulative_tsn_ack_point - 215 int gap = map->cumulative_tsn_ack_point -
216 map->base_tsn; 216 map->base_tsn;
217 217
218 *start = _start - gap; 218 *start = start_ - gap;
219 *end = _end - gap; 219 *end = end_ - gap;
220 220
221 /* Move the iterator forward. */ 221 /* Move the iterator forward. */
222 iter->start = map->cumulative_tsn_ack_point + *end + 1; 222 iter->start = map->cumulative_tsn_ack_point + *end + 1;
diff --git a/net/tipc/link.c b/net/tipc/link.c
index 1d674e0848fa..1b17fecee747 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -2383,10 +2383,10 @@ void tipc_link_changeover(struct link *l_ptr)
2383 struct tipc_msg *msg = buf_msg(crs); 2383 struct tipc_msg *msg = buf_msg(crs);
2384 2384
2385 if ((msg_user(msg) == MSG_BUNDLER) && split_bundles) { 2385 if ((msg_user(msg) == MSG_BUNDLER) && split_bundles) {
2386 u32 msgcount = msg_msgcnt(msg);
2387 struct tipc_msg *m = msg_get_wrapped(msg); 2386 struct tipc_msg *m = msg_get_wrapped(msg);
2388 unchar* pos = (unchar*)m; 2387 unchar* pos = (unchar*)m;
2389 2388
2389 msgcount = msg_msgcnt(msg);
2390 while (msgcount--) { 2390 while (msgcount--) {
2391 msg_set_seqno(m,msg_seqno(msg)); 2391 msg_set_seqno(m,msg_seqno(msg));
2392 tipc_link_tunnel(l_ptr, &tunnel_hdr, m, 2392 tipc_link_tunnel(l_ptr, &tunnel_hdr, m,
diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c
index d8473eefcd23..ac7dfdda7973 100644
--- a/net/tipc/name_table.c
+++ b/net/tipc/name_table.c
@@ -501,7 +501,7 @@ end_node:
501 * sequence overlapping with the requested sequence 501 * sequence overlapping with the requested sequence
502 */ 502 */
503 503
504void tipc_nameseq_subscribe(struct name_seq *nseq, struct subscription *s) 504static void tipc_nameseq_subscribe(struct name_seq *nseq, struct subscription *s)
505{ 505{
506 struct sub_seq *sseq = nseq->sseqs; 506 struct sub_seq *sseq = nseq->sseqs;
507 507
diff --git a/net/tipc/node.c b/net/tipc/node.c
index e2e452a62ba1..598f4d3a0098 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -241,8 +241,6 @@ struct node *tipc_node_attach_link(struct link *l_ptr)
241 char addr_string[16]; 241 char addr_string[16];
242 242
243 if (n_ptr->link_cnt >= 2) { 243 if (n_ptr->link_cnt >= 2) {
244 char addr_string[16];
245
246 err("Attempt to create third link to %s\n", 244 err("Attempt to create third link to %s\n",
247 addr_string_fill(addr_string, n_ptr->addr)); 245 addr_string_fill(addr_string, n_ptr->addr));
248 return NULL; 246 return NULL;
diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c
index 849cc06bd914..9ab31a3ce3ad 100644
--- a/net/wanrouter/wanmain.c
+++ b/net/wanrouter/wanmain.c
@@ -46,7 +46,6 @@
46#include <linux/capability.h> 46#include <linux/capability.h>
47#include <linux/errno.h> /* return codes */ 47#include <linux/errno.h> /* return codes */
48#include <linux/kernel.h> 48#include <linux/kernel.h>
49#include <linux/init.h>
50#include <linux/module.h> /* support for loadable modules */ 49#include <linux/module.h> /* support for loadable modules */
51#include <linux/slab.h> /* kmalloc(), kfree() */ 50#include <linux/slab.h> /* kmalloc(), kfree() */
52#include <linux/mm.h> 51#include <linux/mm.h>
diff --git a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c
index dca0344cc1bc..f2950cab74a6 100644
--- a/sound/sparc/cs4231.c
+++ b/sound/sparc/cs4231.c
@@ -74,7 +74,6 @@ struct cs4231_dma_control {
74 void (*enable)(struct cs4231_dma_control *dma_cont, int on); 74 void (*enable)(struct cs4231_dma_control *dma_cont, int on);
75 int (*request)(struct cs4231_dma_control *dma_cont, dma_addr_t bus_addr, size_t len); 75 int (*request)(struct cs4231_dma_control *dma_cont, dma_addr_t bus_addr, size_t len);
76 unsigned int (*address)(struct cs4231_dma_control *dma_cont); 76 unsigned int (*address)(struct cs4231_dma_control *dma_cont);
77 void (*reset)(struct snd_cs4231 *chip);
78 void (*preallocate)(struct snd_cs4231 *chip, struct snd_pcm *pcm); 77 void (*preallocate)(struct snd_cs4231 *chip, struct snd_pcm *pcm);
79#ifdef EBUS_SUPPORT 78#ifdef EBUS_SUPPORT
80 struct ebus_dma_info ebus_info; 79 struct ebus_dma_info ebus_info;
@@ -1214,10 +1213,6 @@ static int __init snd_cs4231_probe(struct snd_cs4231 *chip)
1214 1213
1215 spin_lock_irqsave(&chip->lock, flags); 1214 spin_lock_irqsave(&chip->lock, flags);
1216 1215
1217
1218 /* Reset DMA engine (sbus only). */
1219 chip->p_dma.reset(chip);
1220
1221 __cs4231_readb(chip, CS4231P(chip, STATUS)); /* clear any pendings IRQ */ 1216 __cs4231_readb(chip, CS4231P(chip, STATUS)); /* clear any pendings IRQ */
1222 __cs4231_writeb(chip, 0, CS4231P(chip, STATUS)); 1217 __cs4231_writeb(chip, 0, CS4231P(chip, STATUS));
1223 mb(); 1218 mb();
@@ -1861,14 +1856,13 @@ static void sbus_dma_enable(struct cs4231_dma_control *dma_cont, int on)
1861 if (!on) { 1856 if (!on) {
1862 sbus_writel(0, base->regs + base->dir + APCNC); 1857 sbus_writel(0, base->regs + base->dir + APCNC);
1863 sbus_writel(0, base->regs + base->dir + APCNVA); 1858 sbus_writel(0, base->regs + base->dir + APCNVA);
1864 sbus_writel(0, base->regs + base->dir + APCC); 1859 if ( base->dir == APC_PLAY ) {
1865 sbus_writel(0, base->regs + base->dir + APCVA); 1860 sbus_writel(0, base->regs + base->dir + APCC);
1861 sbus_writel(0, base->regs + base->dir + APCVA);
1862 }
1866 1863
1867 /* ACK any APC interrupts. */ 1864 udelay(1200);
1868 csr = sbus_readl(base->regs + APCCSR);
1869 sbus_writel(csr, base->regs + APCCSR);
1870 } 1865 }
1871 udelay(1000);
1872 csr = sbus_readl(base->regs + APCCSR); 1866 csr = sbus_readl(base->regs + APCCSR);
1873 shift = 0; 1867 shift = 0;
1874 if ( base->dir == APC_PLAY ) 1868 if ( base->dir == APC_PLAY )
@@ -1894,23 +1888,6 @@ static unsigned int sbus_dma_addr(struct cs4231_dma_control *dma_cont)
1894 return sbus_readl(base->regs + base->dir + APCVA); 1888 return sbus_readl(base->regs + base->dir + APCVA);
1895} 1889}
1896 1890
1897static void sbus_dma_reset(struct snd_cs4231 *chip)
1898{
1899 sbus_writel(APC_CHIP_RESET, chip->port + APCCSR);
1900 sbus_writel(0x00, chip->port + APCCSR);
1901 sbus_writel(sbus_readl(chip->port + APCCSR) | APC_CDC_RESET,
1902 chip->port + APCCSR);
1903
1904 udelay(20);
1905
1906 sbus_writel(sbus_readl(chip->port + APCCSR) & ~APC_CDC_RESET,
1907 chip->port + APCCSR);
1908 sbus_writel(sbus_readl(chip->port + APCCSR) | (APC_XINT_ENA |
1909 APC_XINT_PENA |
1910 APC_XINT_CENA),
1911 chip->port + APCCSR);
1912}
1913
1914static void sbus_dma_preallocate(struct snd_cs4231 *chip, struct snd_pcm *pcm) 1891static void sbus_dma_preallocate(struct snd_cs4231 *chip, struct snd_pcm *pcm)
1915{ 1892{
1916 snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_SBUS, 1893 snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_SBUS,
@@ -1986,14 +1963,12 @@ static int __init snd_cs4231_sbus_create(struct snd_card *card,
1986 chip->p_dma.enable = sbus_dma_enable; 1963 chip->p_dma.enable = sbus_dma_enable;
1987 chip->p_dma.request = sbus_dma_request; 1964 chip->p_dma.request = sbus_dma_request;
1988 chip->p_dma.address = sbus_dma_addr; 1965 chip->p_dma.address = sbus_dma_addr;
1989 chip->p_dma.reset = sbus_dma_reset;
1990 chip->p_dma.preallocate = sbus_dma_preallocate; 1966 chip->p_dma.preallocate = sbus_dma_preallocate;
1991 1967
1992 chip->c_dma.prepare = sbus_dma_prepare; 1968 chip->c_dma.prepare = sbus_dma_prepare;
1993 chip->c_dma.enable = sbus_dma_enable; 1969 chip->c_dma.enable = sbus_dma_enable;
1994 chip->c_dma.request = sbus_dma_request; 1970 chip->c_dma.request = sbus_dma_request;
1995 chip->c_dma.address = sbus_dma_addr; 1971 chip->c_dma.address = sbus_dma_addr;
1996 chip->c_dma.reset = sbus_dma_reset;
1997 chip->c_dma.preallocate = sbus_dma_preallocate; 1972 chip->c_dma.preallocate = sbus_dma_preallocate;
1998 1973
1999 if (request_irq(sdev->irqs[0], snd_cs4231_sbus_interrupt, 1974 if (request_irq(sdev->irqs[0], snd_cs4231_sbus_interrupt,
@@ -2087,11 +2062,6 @@ static unsigned int _ebus_dma_addr(struct cs4231_dma_control *dma_cont)
2087 return ebus_dma_addr(&dma_cont->ebus_info); 2062 return ebus_dma_addr(&dma_cont->ebus_info);
2088} 2063}
2089 2064
2090static void _ebus_dma_reset(struct snd_cs4231 *chip)
2091{
2092 return;
2093}
2094
2095static void _ebus_dma_preallocate(struct snd_cs4231 *chip, struct snd_pcm *pcm) 2065static void _ebus_dma_preallocate(struct snd_cs4231 *chip, struct snd_pcm *pcm)
2096{ 2066{
2097 snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, 2067 snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
@@ -2171,14 +2141,12 @@ static int __init snd_cs4231_ebus_create(struct snd_card *card,
2171 chip->p_dma.enable = _ebus_dma_enable; 2141 chip->p_dma.enable = _ebus_dma_enable;
2172 chip->p_dma.request = _ebus_dma_request; 2142 chip->p_dma.request = _ebus_dma_request;
2173 chip->p_dma.address = _ebus_dma_addr; 2143 chip->p_dma.address = _ebus_dma_addr;
2174 chip->p_dma.reset = _ebus_dma_reset;
2175 chip->p_dma.preallocate = _ebus_dma_preallocate; 2144 chip->p_dma.preallocate = _ebus_dma_preallocate;
2176 2145
2177 chip->c_dma.prepare = _ebus_dma_prepare; 2146 chip->c_dma.prepare = _ebus_dma_prepare;
2178 chip->c_dma.enable = _ebus_dma_enable; 2147 chip->c_dma.enable = _ebus_dma_enable;
2179 chip->c_dma.request = _ebus_dma_request; 2148 chip->c_dma.request = _ebus_dma_request;
2180 chip->c_dma.address = _ebus_dma_addr; 2149 chip->c_dma.address = _ebus_dma_addr;
2181 chip->c_dma.reset = _ebus_dma_reset;
2182 chip->c_dma.preallocate = _ebus_dma_preallocate; 2150 chip->c_dma.preallocate = _ebus_dma_preallocate;
2183 2151
2184 chip->port = ioremap(edev->resource[0].start, 0x10); 2152 chip->port = ioremap(edev->resource[0].start, 0x10);