aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2007-11-01 23:03:14 -0400
committerPaul Mackerras <paulus@samba.org>2007-11-01 23:03:14 -0400
commit97a4649d6ffce4a5d7f5ce018d87a6cefcb4ad03 (patch)
tree8f7f591754baa934a842357e75e773a525bfb147 /arch
parentf6ab0b922c3423b88c0e6e3e2c5fc1e58d83055d (diff)
parent54866f032307063776b4eff7eadb131d47f9f9b4 (diff)
Merge branch 'linux-2.6' into merge
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/configs/zylonite_defconfig736
-rw-r--r--arch/arm/mach-ixp2000/Kconfig2
-rw-r--r--arch/arm/mach-netx/xc.c6
-rw-r--r--arch/arm/mach-omap1/board-h2.c4
-rw-r--r--arch/arm/mach-omap2/clock.c2
-rw-r--r--arch/arm/mach-pxa/mfp.c2
-rw-r--r--arch/arm/mach-pxa/pxa300.c2
-rw-r--r--arch/arm/mach-pxa/pxa320.c2
-rw-r--r--arch/arm/mach-pxa/pxa3xx.c2
-rw-r--r--arch/arm/mach-pxa/time.c3
-rw-r--r--arch/arm/mach-pxa/zylonite.c2
-rw-r--r--arch/arm/mach-pxa/zylonite_pxa300.c2
-rw-r--r--arch/arm/mach-pxa/zylonite_pxa320.c2
-rw-r--r--arch/arm/mm/proc-arm926.S4
-rw-r--r--arch/blackfin/Kconfig15
-rw-r--r--arch/blackfin/configs/BF527-EZKIT_defconfig2
-rw-r--r--arch/blackfin/configs/BF533-EZKIT_defconfig2
-rw-r--r--arch/blackfin/configs/BF533-STAMP_defconfig2
-rw-r--r--arch/blackfin/configs/BF537-STAMP_defconfig2
-rw-r--r--arch/blackfin/configs/BF548-EZKIT_defconfig279
-rw-r--r--arch/blackfin/configs/BF561-EZKIT_defconfig2
-rw-r--r--arch/blackfin/configs/PNAV-10_defconfig2
-rw-r--r--arch/blackfin/kernel/entry.S6
-rw-r--r--arch/blackfin/kernel/fixed_code.S14
-rw-r--r--arch/blackfin/kernel/gptimers.c47
-rw-r--r--arch/blackfin/kernel/setup.c13
-rw-r--r--arch/blackfin/kernel/traps.c340
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S11
-rw-r--r--arch/blackfin/mach-bf527/boards/ezkit.c53
-rw-r--r--arch/blackfin/mach-bf533/boards/H8606.c345
-rw-r--r--arch/blackfin/mach-bf533/boards/Makefile1
-rw-r--r--arch/blackfin/mach-bf533/boards/cm_bf533.c42
-rw-r--r--arch/blackfin/mach-bf533/boards/stamp.c4
-rw-r--r--arch/blackfin/mach-bf537/boards/cm_bf537.c4
-rw-r--r--arch/blackfin/mach-bf537/boards/stamp.c6
-rw-r--r--arch/blackfin/mach-common/entry.S2
-rw-r--r--arch/h8300/Kconfig2
-rw-r--r--arch/ia64/configs/sn2_defconfig106
-rw-r--r--arch/ia64/kernel/efi.c2
-rw-r--r--arch/ia64/kernel/gate.lds.S3
-rw-r--r--arch/ia64/kernel/msi_ia64.c2
-rw-r--r--arch/ia64/kernel/setup.c49
-rw-r--r--arch/ia64/kernel/smpboot.c21
-rw-r--r--arch/ia64/mm/init.c4
-rw-r--r--arch/ia64/scripts/check-segrel.lds1
-rw-r--r--arch/ia64/sn/kernel/mca.c1
-rw-r--r--arch/mips/Kconfig6
-rw-r--r--arch/mips/au1000/common/irq.c32
-rw-r--r--arch/mips/au1000/common/time.c22
-rw-r--r--arch/mips/au1000/mtx-1/Makefile1
-rw-r--r--arch/mips/au1000/mtx-1/platform.c86
-rw-r--r--arch/mips/basler/excite/excite_setup.c21
-rw-r--r--arch/mips/configs/db1000_defconfig1
-rw-r--r--arch/mips/configs/db1100_defconfig1
-rw-r--r--arch/mips/configs/db1200_defconfig1
-rw-r--r--arch/mips/configs/db1500_defconfig1
-rw-r--r--arch/mips/configs/db1550_defconfig1
-rw-r--r--arch/mips/configs/pb1100_defconfig1
-rw-r--r--arch/mips/configs/pb1500_defconfig1
-rw-r--r--arch/mips/configs/pb1550_defconfig1
-rw-r--r--arch/mips/configs/sb1250-swarm_defconfig2
-rw-r--r--arch/mips/gt64120/wrppmc/time.c6
-rw-r--r--arch/mips/jmr3927/rbhma3100/setup.c83
-rw-r--r--arch/mips/kernel/Makefile1
-rw-r--r--arch/mips/kernel/cevt-gt641xx.c12
-rw-r--r--arch/mips/kernel/cevt-r4k.c45
-rw-r--r--arch/mips/kernel/cevt-txx9.c171
-rw-r--r--arch/mips/kernel/irixsig.c8
-rw-r--r--arch/mips/kernel/ptrace.c18
-rw-r--r--arch/mips/kernel/ptrace32.c4
-rw-r--r--arch/mips/kernel/smtc.c57
-rw-r--r--arch/mips/kernel/syscall.c9
-rw-r--r--arch/mips/kernel/time.c17
-rw-r--r--arch/mips/kernel/vmlinux.lds.S32
-rw-r--r--arch/mips/kernel/vpe.c4
-rw-r--r--arch/mips/lasat/setup.c7
-rw-r--r--arch/mips/mips-boards/generic/time.c52
-rw-r--r--arch/mips/mipssim/sim_time.c52
-rw-r--r--arch/mips/mm/c-r3k.c60
-rw-r--r--arch/mips/mm/c-r4k.c21
-rw-r--r--arch/mips/mm/dma-default.c2
-rw-r--r--arch/mips/pci/fixup-pmcmsp.c2
-rw-r--r--arch/mips/pci/fixup-tb0219.c2
-rw-r--r--arch/mips/pci/ops-pmcmsp.c2
-rw-r--r--arch/mips/pmc-sierra/msp71xx/msp_serial.c2
-rw-r--r--arch/mips/sgi-ip27/ip27-timer.c11
-rw-r--r--arch/mips/sgi-ip32/ip32-irq.c128
-rw-r--r--arch/mips/sibyte/bcm1480/irq.c24
-rw-r--r--arch/mips/sibyte/bcm1480/time.c5
-rw-r--r--arch/mips/sibyte/sb1250/irq.c24
-rw-r--r--arch/mips/sibyte/sb1250/time.c5
-rw-r--r--arch/mips/sni/time.c80
-rw-r--r--arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c17
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/setup.c19
-rw-r--r--arch/s390/Kconfig2
-rw-r--r--arch/sh64/Kconfig2
-rw-r--r--arch/sparc64/Kconfig2
-rw-r--r--arch/sparc64/defconfig69
-rw-r--r--arch/sparc64/kernel/sparc64_ksyms.c2
-rw-r--r--arch/sparc64/kernel/time.c2
-rw-r--r--arch/sparc64/mm/tsb.c4
-rw-r--r--arch/sparc64/mm/ultra.S7
-rw-r--r--arch/um/Kconfig.i3862
-rw-r--r--arch/um/Makefile-i3865
-rw-r--r--arch/um/Makefile-x86_645
-rw-r--r--arch/um/kernel/mem.c2
-rw-r--r--arch/um/sys-i386/ptrace.c8
-rw-r--r--arch/um/sys-x86_64/ptrace.c4
-rw-r--r--arch/x86/Kconfig.debug8
-rw-r--r--arch/x86/Kconfig.x86_6411
-rw-r--r--arch/x86/configs/x86_64_defconfig2
-rw-r--r--arch/x86/kernel/Makefile_642
-rw-r--r--arch/x86/kernel/aperture_64.c15
-rw-r--r--arch/x86/kernel/cpu/proc.c10
-rw-r--r--arch/x86/kernel/early-quirks.c10
-rw-r--r--arch/x86/kernel/pci-calgary_64.c2
-rw-r--r--arch/x86/kernel/pci-dma_64.c10
-rw-r--r--arch/x86/kernel/pci-gart_64.c20
-rw-r--r--arch/x86/kernel/pci-nommu_64.c2
-rw-r--r--arch/x86/kernel/pci-swiotlb_64.c2
-rw-r--r--arch/x86/kernel/reboot_64.c2
-rw-r--r--arch/x86/kernel/setup_32.c3
-rw-r--r--arch/x86/kernel/setup_64.c10
-rw-r--r--arch/x86/mm/discontig_32.c4
-rw-r--r--arch/x86/mm/init_64.c6
-rw-r--r--arch/xtensa/Kconfig2
126 files changed, 2619 insertions, 934 deletions
diff --git a/arch/arm/configs/zylonite_defconfig b/arch/arm/configs/zylonite_defconfig
new file mode 100644
index 000000000000..7949d04a3602
--- /dev/null
+++ b/arch/arm/configs/zylonite_defconfig
@@ -0,0 +1,736 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23
4# Tue Oct 23 13:33:20 2007
5#
6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y
16CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17CONFIG_HARDIRQS_SW_RESEND=y
18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_RWSEM_GENERIC_SPINLOCK=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_GENERIC_HWEIGHT=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ZONE_DMA=y
25CONFIG_ARCH_MTD_XIP=y
26CONFIG_VECTORS_BASE=0xffff0000
27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
28
29#
30# General setup
31#
32CONFIG_EXPERIMENTAL=y
33CONFIG_BROKEN_ON_SMP=y
34CONFIG_INIT_ENV_ARG_LIMIT=32
35CONFIG_LOCALVERSION=""
36CONFIG_LOCALVERSION_AUTO=y
37CONFIG_SWAP=y
38CONFIG_SYSVIPC=y
39CONFIG_SYSVIPC_SYSCTL=y
40# CONFIG_POSIX_MQUEUE is not set
41# CONFIG_BSD_PROCESS_ACCT is not set
42# CONFIG_TASKSTATS is not set
43# CONFIG_USER_NS is not set
44# CONFIG_AUDIT is not set
45# CONFIG_IKCONFIG is not set
46CONFIG_LOG_BUF_SHIFT=18
47# CONFIG_CGROUPS is not set
48CONFIG_FAIR_GROUP_SCHED=y
49CONFIG_FAIR_USER_SCHED=y
50# CONFIG_FAIR_CGROUP_SCHED is not set
51CONFIG_SYSFS_DEPRECATED=y
52# CONFIG_RELAY is not set
53# CONFIG_BLK_DEV_INITRD is not set
54# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
55CONFIG_SYSCTL=y
56# CONFIG_EMBEDDED is not set
57CONFIG_UID16=y
58CONFIG_SYSCTL_SYSCALL=y
59CONFIG_KALLSYMS=y
60# CONFIG_KALLSYMS_EXTRA_PASS is not set
61CONFIG_HOTPLUG=y
62CONFIG_PRINTK=y
63CONFIG_BUG=y
64CONFIG_ELF_CORE=y
65CONFIG_BASE_FULL=y
66CONFIG_FUTEX=y
67CONFIG_ANON_INODES=y
68CONFIG_EPOLL=y
69CONFIG_SIGNALFD=y
70CONFIG_EVENTFD=y
71CONFIG_SHMEM=y
72CONFIG_VM_EVENT_COUNTERS=y
73CONFIG_SLUB_DEBUG=y
74# CONFIG_SLAB is not set
75CONFIG_SLUB=y
76# CONFIG_SLOB is not set
77CONFIG_RT_MUTEXES=y
78# CONFIG_TINY_SHMEM is not set
79CONFIG_BASE_SMALL=0
80CONFIG_MODULES=y
81# CONFIG_MODULE_UNLOAD is not set
82# CONFIG_MODVERSIONS is not set
83# CONFIG_MODULE_SRCVERSION_ALL is not set
84# CONFIG_KMOD is not set
85CONFIG_BLOCK=y
86# CONFIG_LBD is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89# CONFIG_BLK_DEV_BSG is not set
90
91#
92# IO Schedulers
93#
94CONFIG_IOSCHED_NOOP=y
95CONFIG_IOSCHED_AS=y
96CONFIG_IOSCHED_DEADLINE=y
97CONFIG_IOSCHED_CFQ=y
98# CONFIG_DEFAULT_AS is not set
99# CONFIG_DEFAULT_DEADLINE is not set
100CONFIG_DEFAULT_CFQ=y
101# CONFIG_DEFAULT_NOOP is not set
102CONFIG_DEFAULT_IOSCHED="cfq"
103
104#
105# System Type
106#
107# CONFIG_ARCH_AAEC2000 is not set
108# CONFIG_ARCH_INTEGRATOR is not set
109# CONFIG_ARCH_REALVIEW is not set
110# CONFIG_ARCH_VERSATILE is not set
111# CONFIG_ARCH_AT91 is not set
112# CONFIG_ARCH_CLPS7500 is not set
113# CONFIG_ARCH_CLPS711X is not set
114# CONFIG_ARCH_CO285 is not set
115# CONFIG_ARCH_EBSA110 is not set
116# CONFIG_ARCH_EP93XX is not set
117# CONFIG_ARCH_FOOTBRIDGE is not set
118# CONFIG_ARCH_NETX is not set
119# CONFIG_ARCH_H720X is not set
120# CONFIG_ARCH_IMX is not set
121# CONFIG_ARCH_IOP13XX is not set
122# CONFIG_ARCH_IOP32X is not set
123# CONFIG_ARCH_IOP33X is not set
124# CONFIG_ARCH_IXP23XX is not set
125# CONFIG_ARCH_IXP2000 is not set
126# CONFIG_ARCH_IXP4XX is not set
127# CONFIG_ARCH_L7200 is not set
128# CONFIG_ARCH_KS8695 is not set
129# CONFIG_ARCH_NS9XXX is not set
130# CONFIG_ARCH_MXC is not set
131# CONFIG_ARCH_PNX4008 is not set
132CONFIG_ARCH_PXA=y
133# CONFIG_ARCH_RPC is not set
134# CONFIG_ARCH_SA1100 is not set
135# CONFIG_ARCH_S3C2410 is not set
136# CONFIG_ARCH_SHARK is not set
137# CONFIG_ARCH_LH7A40X is not set
138# CONFIG_ARCH_DAVINCI is not set
139# CONFIG_ARCH_OMAP is not set
140
141#
142# Intel PXA2xx/PXA3xx Implementations
143#
144
145#
146# Supported PXA3xx Processor Variants
147#
148CONFIG_CPU_PXA300=y
149CONFIG_CPU_PXA310=y
150CONFIG_CPU_PXA320=y
151# CONFIG_ARCH_LUBBOCK is not set
152# CONFIG_MACH_LOGICPD_PXA270 is not set
153# CONFIG_MACH_MAINSTONE is not set
154# CONFIG_ARCH_PXA_IDP is not set
155# CONFIG_PXA_SHARPSL is not set
156# CONFIG_MACH_TRIZEPS4 is not set
157# CONFIG_MACH_EM_X270 is not set
158CONFIG_MACH_ZYLONITE=y
159# CONFIG_MACH_ARMCORE is not set
160CONFIG_PXA3xx=y
161
162#
163# Boot options
164#
165
166#
167# Power management
168#
169
170#
171# Processor Type
172#
173CONFIG_CPU_32=y
174CONFIG_CPU_XSC3=y
175CONFIG_CPU_32v5=y
176CONFIG_CPU_ABRT_EV5T=y
177CONFIG_CPU_CACHE_VIVT=y
178CONFIG_CPU_TLB_V4WBI=y
179CONFIG_CPU_CP15=y
180CONFIG_CPU_CP15_MMU=y
181CONFIG_IO_36=y
182
183#
184# Processor Features
185#
186# CONFIG_ARM_THUMB is not set
187# CONFIG_CPU_DCACHE_DISABLE is not set
188# CONFIG_CPU_BPREDICT_DISABLE is not set
189# CONFIG_OUTER_CACHE is not set
190CONFIG_IWMMXT=y
191
192#
193# Bus support
194#
195# CONFIG_PCI_SYSCALL is not set
196# CONFIG_ARCH_SUPPORTS_MSI is not set
197# CONFIG_PCCARD is not set
198
199#
200# Kernel Features
201#
202# CONFIG_TICK_ONESHOT is not set
203# CONFIG_NO_HZ is not set
204# CONFIG_HIGH_RES_TIMERS is not set
205CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
206# CONFIG_PREEMPT is not set
207CONFIG_HZ=100
208CONFIG_AEABI=y
209CONFIG_OABI_COMPAT=y
210# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
211CONFIG_SELECT_MEMORY_MODEL=y
212CONFIG_FLATMEM_MANUAL=y
213# CONFIG_DISCONTIGMEM_MANUAL is not set
214# CONFIG_SPARSEMEM_MANUAL is not set
215CONFIG_FLATMEM=y
216CONFIG_FLAT_NODE_MEM_MAP=y
217# CONFIG_SPARSEMEM_STATIC is not set
218# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
219CONFIG_SPLIT_PTLOCK_CPUS=4096
220# CONFIG_RESOURCES_64BIT is not set
221CONFIG_ZONE_DMA_FLAG=1
222CONFIG_BOUNCE=y
223CONFIG_VIRT_TO_BUS=y
224CONFIG_ALIGNMENT_TRAP=y
225
226#
227# Boot options
228#
229CONFIG_ZBOOT_ROM_TEXT=0x0
230CONFIG_ZBOOT_ROM_BSS=0x0
231CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfs/rootfs/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS0,38400 mem=64M debug"
232# CONFIG_XIP_KERNEL is not set
233# CONFIG_KEXEC is not set
234
235#
236# Floating point emulation
237#
238
239#
240# At least one emulation must be selected
241#
242CONFIG_FPE_NWFPE=y
243# CONFIG_FPE_NWFPE_XP is not set
244# CONFIG_FPE_FASTFPE is not set
245
246#
247# Userspace binary formats
248#
249CONFIG_BINFMT_ELF=y
250# CONFIG_BINFMT_AOUT is not set
251# CONFIG_BINFMT_MISC is not set
252
253#
254# Power management options
255#
256# CONFIG_PM is not set
257CONFIG_SUSPEND_UP_POSSIBLE=y
258
259#
260# Networking
261#
262CONFIG_NET=y
263
264#
265# Networking options
266#
267CONFIG_PACKET=y
268# CONFIG_PACKET_MMAP is not set
269CONFIG_UNIX=y
270# CONFIG_NET_KEY is not set
271CONFIG_INET=y
272# CONFIG_IP_MULTICAST is not set
273# CONFIG_IP_ADVANCED_ROUTER is not set
274CONFIG_IP_FIB_HASH=y
275CONFIG_IP_PNP=y
276CONFIG_IP_PNP_DHCP=y
277CONFIG_IP_PNP_BOOTP=y
278CONFIG_IP_PNP_RARP=y
279# CONFIG_NET_IPIP is not set
280# CONFIG_NET_IPGRE is not set
281# CONFIG_ARPD is not set
282# CONFIG_SYN_COOKIES is not set
283# CONFIG_INET_AH is not set
284# CONFIG_INET_ESP is not set
285# CONFIG_INET_IPCOMP is not set
286# CONFIG_INET_XFRM_TUNNEL is not set
287# CONFIG_INET_TUNNEL is not set
288# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
289# CONFIG_INET_XFRM_MODE_TUNNEL is not set
290# CONFIG_INET_XFRM_MODE_BEET is not set
291# CONFIG_INET_LRO is not set
292# CONFIG_INET_DIAG is not set
293# CONFIG_TCP_CONG_ADVANCED is not set
294CONFIG_TCP_CONG_CUBIC=y
295CONFIG_DEFAULT_TCP_CONG="cubic"
296# CONFIG_TCP_MD5SIG is not set
297# CONFIG_IPV6 is not set
298# CONFIG_INET6_XFRM_TUNNEL is not set
299# CONFIG_INET6_TUNNEL is not set
300# CONFIG_NETWORK_SECMARK is not set
301# CONFIG_NETFILTER is not set
302# CONFIG_IP_DCCP is not set
303# CONFIG_IP_SCTP is not set
304# CONFIG_TIPC is not set
305# CONFIG_ATM is not set
306# CONFIG_BRIDGE is not set
307# CONFIG_VLAN_8021Q is not set
308# CONFIG_DECNET is not set
309# CONFIG_LLC2 is not set
310# CONFIG_IPX is not set
311# CONFIG_ATALK is not set
312# CONFIG_X25 is not set
313# CONFIG_LAPB is not set
314# CONFIG_ECONET is not set
315# CONFIG_WAN_ROUTER is not set
316# CONFIG_NET_SCHED is not set
317
318#
319# Network testing
320#
321# CONFIG_NET_PKTGEN is not set
322# CONFIG_HAMRADIO is not set
323# CONFIG_IRDA is not set
324# CONFIG_BT is not set
325# CONFIG_AF_RXRPC is not set
326
327#
328# Wireless
329#
330# CONFIG_CFG80211 is not set
331# CONFIG_WIRELESS_EXT is not set
332# CONFIG_MAC80211 is not set
333# CONFIG_IEEE80211 is not set
334# CONFIG_RFKILL is not set
335# CONFIG_NET_9P is not set
336
337#
338# Device Drivers
339#
340
341#
342# Generic Driver Options
343#
344CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
345CONFIG_STANDALONE=y
346CONFIG_PREVENT_FIRMWARE_BUILD=y
347CONFIG_FW_LOADER=y
348# CONFIG_SYS_HYPERVISOR is not set
349# CONFIG_CONNECTOR is not set
350# CONFIG_MTD is not set
351# CONFIG_PARPORT is not set
352# CONFIG_BLK_DEV is not set
353# CONFIG_MISC_DEVICES is not set
354# CONFIG_IDE is not set
355
356#
357# SCSI device support
358#
359# CONFIG_RAID_ATTRS is not set
360# CONFIG_SCSI is not set
361# CONFIG_SCSI_DMA is not set
362# CONFIG_SCSI_NETLINK is not set
363# CONFIG_ATA is not set
364# CONFIG_MD is not set
365CONFIG_NETDEVICES=y
366# CONFIG_NETDEVICES_MULTIQUEUE is not set
367# CONFIG_DUMMY is not set
368# CONFIG_BONDING is not set
369# CONFIG_MACVLAN is not set
370# CONFIG_EQUALIZER is not set
371# CONFIG_TUN is not set
372# CONFIG_VETH is not set
373# CONFIG_PHYLIB is not set
374CONFIG_NET_ETHERNET=y
375CONFIG_MII=y
376# CONFIG_AX88796 is not set
377CONFIG_SMC91X=y
378# CONFIG_DM9000 is not set
379# CONFIG_SMC911X is not set
380# CONFIG_IBM_NEW_EMAC_ZMII is not set
381# CONFIG_IBM_NEW_EMAC_RGMII is not set
382# CONFIG_IBM_NEW_EMAC_TAH is not set
383# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
384# CONFIG_B44 is not set
385# CONFIG_NETDEV_1000 is not set
386# CONFIG_NETDEV_10000 is not set
387
388#
389# Wireless LAN
390#
391# CONFIG_WLAN_PRE80211 is not set
392# CONFIG_WLAN_80211 is not set
393# CONFIG_WAN is not set
394# CONFIG_PPP is not set
395# CONFIG_SLIP is not set
396# CONFIG_SHAPER is not set
397# CONFIG_NETCONSOLE is not set
398# CONFIG_NETPOLL is not set
399# CONFIG_NET_POLL_CONTROLLER is not set
400# CONFIG_ISDN is not set
401
402#
403# Input device support
404#
405CONFIG_INPUT=y
406# CONFIG_INPUT_FF_MEMLESS is not set
407# CONFIG_INPUT_POLLDEV is not set
408
409#
410# Userland interfaces
411#
412CONFIG_INPUT_MOUSEDEV=y
413# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
414CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
415CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
416# CONFIG_INPUT_JOYDEV is not set
417# CONFIG_INPUT_EVDEV is not set
418# CONFIG_INPUT_EVBUG is not set
419
420#
421# Input Device Drivers
422#
423# CONFIG_INPUT_KEYBOARD is not set
424# CONFIG_INPUT_MOUSE is not set
425# CONFIG_INPUT_JOYSTICK is not set
426# CONFIG_INPUT_TABLET is not set
427# CONFIG_INPUT_TOUCHSCREEN is not set
428# CONFIG_INPUT_MISC is not set
429
430#
431# Hardware I/O ports
432#
433# CONFIG_SERIO is not set
434# CONFIG_GAMEPORT is not set
435
436#
437# Character devices
438#
439CONFIG_VT=y
440CONFIG_VT_CONSOLE=y
441CONFIG_HW_CONSOLE=y
442# CONFIG_VT_HW_CONSOLE_BINDING is not set
443# CONFIG_SERIAL_NONSTANDARD is not set
444
445#
446# Serial drivers
447#
448# CONFIG_SERIAL_8250 is not set
449
450#
451# Non-8250 serial port support
452#
453CONFIG_SERIAL_PXA=y
454CONFIG_SERIAL_PXA_CONSOLE=y
455CONFIG_SERIAL_CORE=y
456CONFIG_SERIAL_CORE_CONSOLE=y
457CONFIG_UNIX98_PTYS=y
458# CONFIG_LEGACY_PTYS is not set
459# CONFIG_IPMI_HANDLER is not set
460# CONFIG_HW_RANDOM is not set
461# CONFIG_NVRAM is not set
462# CONFIG_R3964 is not set
463# CONFIG_RAW_DRIVER is not set
464# CONFIG_TCG_TPM is not set
465# CONFIG_I2C is not set
466
467#
468# SPI support
469#
470# CONFIG_SPI is not set
471# CONFIG_SPI_MASTER is not set
472# CONFIG_W1 is not set
473# CONFIG_POWER_SUPPLY is not set
474# CONFIG_HWMON is not set
475
476#
477# Sonics Silicon Backplane
478#
479CONFIG_SSB_POSSIBLE=y
480# CONFIG_SSB is not set
481
482#
483# Multifunction device drivers
484#
485# CONFIG_MFD_SM501 is not set
486
487#
488# Multimedia devices
489#
490# CONFIG_VIDEO_DEV is not set
491# CONFIG_DVB_CORE is not set
492# CONFIG_DAB is not set
493
494#
495# Graphics support
496#
497# CONFIG_VGASTATE is not set
498# CONFIG_VIDEO_OUTPUT_CONTROL is not set
499CONFIG_FB=y
500# CONFIG_FIRMWARE_EDID is not set
501# CONFIG_FB_DDC is not set
502CONFIG_FB_CFB_FILLRECT=y
503CONFIG_FB_CFB_COPYAREA=y
504CONFIG_FB_CFB_IMAGEBLIT=y
505# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
506# CONFIG_FB_SYS_FILLRECT is not set
507# CONFIG_FB_SYS_COPYAREA is not set
508# CONFIG_FB_SYS_IMAGEBLIT is not set
509# CONFIG_FB_SYS_FOPS is not set
510CONFIG_FB_DEFERRED_IO=y
511# CONFIG_FB_SVGALIB is not set
512# CONFIG_FB_MACMODES is not set
513# CONFIG_FB_BACKLIGHT is not set
514# CONFIG_FB_MODE_HELPERS is not set
515# CONFIG_FB_TILEBLITTING is not set
516
517#
518# Frame buffer hardware drivers
519#
520# CONFIG_FB_S1D13XXX is not set
521CONFIG_FB_PXA=y
522# CONFIG_FB_PXA_PARAMETERS is not set
523# CONFIG_FB_MBX is not set
524# CONFIG_FB_VIRTUAL is not set
525# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
526
527#
528# Display device support
529#
530# CONFIG_DISPLAY_SUPPORT is not set
531
532#
533# Console display driver support
534#
535# CONFIG_VGA_CONSOLE is not set
536CONFIG_DUMMY_CONSOLE=y
537CONFIG_FRAMEBUFFER_CONSOLE=y
538CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
539# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
540CONFIG_FONTS=y
541# CONFIG_FONT_8x8 is not set
542# CONFIG_FONT_8x16 is not set
543CONFIG_FONT_6x11=y
544# CONFIG_FONT_7x14 is not set
545# CONFIG_FONT_PEARL_8x8 is not set
546# CONFIG_FONT_ACORN_8x8 is not set
547# CONFIG_FONT_MINI_4x6 is not set
548# CONFIG_FONT_SUN8x16 is not set
549# CONFIG_FONT_SUN12x22 is not set
550# CONFIG_FONT_10x18 is not set
551CONFIG_LOGO=y
552CONFIG_LOGO_LINUX_MONO=y
553CONFIG_LOGO_LINUX_VGA16=y
554CONFIG_LOGO_LINUX_CLUT224=y
555
556#
557# Sound
558#
559# CONFIG_SOUND is not set
560# CONFIG_HID_SUPPORT is not set
561# CONFIG_USB_SUPPORT is not set
562# CONFIG_MMC is not set
563# CONFIG_NEW_LEDS is not set
564CONFIG_RTC_LIB=y
565# CONFIG_RTC_CLASS is not set
566
567#
568# File systems
569#
570# CONFIG_EXT2_FS is not set
571# CONFIG_EXT3_FS is not set
572# CONFIG_EXT4DEV_FS is not set
573# CONFIG_REISERFS_FS is not set
574# CONFIG_JFS_FS is not set
575CONFIG_FS_POSIX_ACL=y
576# CONFIG_XFS_FS is not set
577# CONFIG_GFS2_FS is not set
578# CONFIG_OCFS2_FS is not set
579# CONFIG_MINIX_FS is not set
580# CONFIG_ROMFS_FS is not set
581# CONFIG_INOTIFY is not set
582# CONFIG_QUOTA is not set
583CONFIG_DNOTIFY=y
584# CONFIG_AUTOFS_FS is not set
585# CONFIG_AUTOFS4_FS is not set
586# CONFIG_FUSE_FS is not set
587
588#
589# CD-ROM/DVD Filesystems
590#
591# CONFIG_ISO9660_FS is not set
592# CONFIG_UDF_FS is not set
593
594#
595# DOS/FAT/NT Filesystems
596#
597# CONFIG_MSDOS_FS is not set
598# CONFIG_VFAT_FS is not set
599# CONFIG_NTFS_FS is not set
600
601#
602# Pseudo filesystems
603#
604CONFIG_PROC_FS=y
605CONFIG_PROC_SYSCTL=y
606CONFIG_SYSFS=y
607# CONFIG_TMPFS is not set
608# CONFIG_HUGETLB_PAGE is not set
609# CONFIG_CONFIGFS_FS is not set
610
611#
612# Miscellaneous filesystems
613#
614# CONFIG_ADFS_FS is not set
615# CONFIG_AFFS_FS is not set
616# CONFIG_HFS_FS is not set
617# CONFIG_HFSPLUS_FS is not set
618# CONFIG_BEFS_FS is not set
619# CONFIG_BFS_FS is not set
620# CONFIG_EFS_FS is not set
621# CONFIG_CRAMFS is not set
622# CONFIG_VXFS_FS is not set
623# CONFIG_HPFS_FS is not set
624# CONFIG_QNX4FS_FS is not set
625# CONFIG_SYSV_FS is not set
626# CONFIG_UFS_FS is not set
627CONFIG_NETWORK_FILESYSTEMS=y
628CONFIG_NFS_FS=y
629CONFIG_NFS_V3=y
630CONFIG_NFS_V3_ACL=y
631CONFIG_NFS_V4=y
632CONFIG_NFS_DIRECTIO=y
633# CONFIG_NFSD is not set
634CONFIG_ROOT_NFS=y
635CONFIG_LOCKD=y
636CONFIG_LOCKD_V4=y
637CONFIG_NFS_ACL_SUPPORT=y
638CONFIG_NFS_COMMON=y
639CONFIG_SUNRPC=y
640CONFIG_SUNRPC_GSS=y
641# CONFIG_SUNRPC_BIND34 is not set
642CONFIG_RPCSEC_GSS_KRB5=y
643# CONFIG_RPCSEC_GSS_SPKM3 is not set
644# CONFIG_SMB_FS is not set
645# CONFIG_CIFS is not set
646# CONFIG_NCP_FS is not set
647# CONFIG_CODA_FS is not set
648# CONFIG_AFS_FS is not set
649
650#
651# Partition Types
652#
653# CONFIG_PARTITION_ADVANCED is not set
654CONFIG_MSDOS_PARTITION=y
655# CONFIG_NLS is not set
656# CONFIG_DLM is not set
657# CONFIG_INSTRUMENTATION is not set
658
659#
660# Kernel hacking
661#
662# CONFIG_PRINTK_TIME is not set
663CONFIG_ENABLE_MUST_CHECK=y
664# CONFIG_MAGIC_SYSRQ is not set
665# CONFIG_UNUSED_SYMBOLS is not set
666# CONFIG_DEBUG_FS is not set
667# CONFIG_HEADERS_CHECK is not set
668# CONFIG_DEBUG_KERNEL is not set
669# CONFIG_SLUB_DEBUG_ON is not set
670CONFIG_DEBUG_BUGVERBOSE=y
671CONFIG_FRAME_POINTER=y
672# CONFIG_SAMPLES is not set
673CONFIG_DEBUG_USER=y
674
675#
676# Security options
677#
678# CONFIG_KEYS is not set
679# CONFIG_SECURITY is not set
680# CONFIG_SECURITY_FILE_CAPABILITIES is not set
681CONFIG_CRYPTO=y
682CONFIG_CRYPTO_ALGAPI=y
683CONFIG_CRYPTO_BLKCIPHER=y
684CONFIG_CRYPTO_MANAGER=y
685# CONFIG_CRYPTO_HMAC is not set
686# CONFIG_CRYPTO_XCBC is not set
687# CONFIG_CRYPTO_NULL is not set
688# CONFIG_CRYPTO_MD4 is not set
689CONFIG_CRYPTO_MD5=y
690# CONFIG_CRYPTO_SHA1 is not set
691# CONFIG_CRYPTO_SHA256 is not set
692# CONFIG_CRYPTO_SHA512 is not set
693# CONFIG_CRYPTO_WP512 is not set
694# CONFIG_CRYPTO_TGR192 is not set
695# CONFIG_CRYPTO_GF128MUL is not set
696# CONFIG_CRYPTO_ECB is not set
697CONFIG_CRYPTO_CBC=y
698# CONFIG_CRYPTO_PCBC is not set
699# CONFIG_CRYPTO_LRW is not set
700# CONFIG_CRYPTO_XTS is not set
701# CONFIG_CRYPTO_CRYPTD is not set
702CONFIG_CRYPTO_DES=y
703# CONFIG_CRYPTO_FCRYPT is not set
704# CONFIG_CRYPTO_BLOWFISH is not set
705# CONFIG_CRYPTO_TWOFISH is not set
706# CONFIG_CRYPTO_SERPENT is not set
707# CONFIG_CRYPTO_AES is not set
708# CONFIG_CRYPTO_CAST5 is not set
709# CONFIG_CRYPTO_CAST6 is not set
710# CONFIG_CRYPTO_TEA is not set
711# CONFIG_CRYPTO_ARC4 is not set
712# CONFIG_CRYPTO_KHAZAD is not set
713# CONFIG_CRYPTO_ANUBIS is not set
714# CONFIG_CRYPTO_SEED is not set
715# CONFIG_CRYPTO_DEFLATE is not set
716# CONFIG_CRYPTO_MICHAEL_MIC is not set
717# CONFIG_CRYPTO_CRC32C is not set
718# CONFIG_CRYPTO_CAMELLIA is not set
719# CONFIG_CRYPTO_TEST is not set
720# CONFIG_CRYPTO_AUTHENC is not set
721# CONFIG_CRYPTO_HW is not set
722
723#
724# Library routines
725#
726CONFIG_BITREVERSE=y
727# CONFIG_CRC_CCITT is not set
728# CONFIG_CRC16 is not set
729# CONFIG_CRC_ITU_T is not set
730CONFIG_CRC32=y
731# CONFIG_CRC7 is not set
732# CONFIG_LIBCRC32C is not set
733CONFIG_PLIST=y
734CONFIG_HAS_IOMEM=y
735CONFIG_HAS_IOPORT=y
736CONFIG_HAS_DMA=y
diff --git a/arch/arm/mach-ixp2000/Kconfig b/arch/arm/mach-ixp2000/Kconfig
index 86f53f8ccbf5..08d2707f6ca8 100644
--- a/arch/arm/mach-ixp2000/Kconfig
+++ b/arch/arm/mach-ixp2000/Kconfig
@@ -14,7 +14,7 @@ config ARCH_ENP2611
14 help 14 help
15 Say 'Y' here if you want your kernel to support the Radisys 15 Say 'Y' here if you want your kernel to support the Radisys
16 ENP2611 PCI network processing card. For more information on 16 ENP2611 PCI network processing card. For more information on
17 this card, see <file:Documentation/arm/ENP2611>. 17 this card, see <file:Documentation/arm/IXP2000>.
18 18
19config ARCH_IXDP2400 19config ARCH_IXDP2400
20 bool "Support Intel IXDP2400" 20 bool "Support Intel IXDP2400"
diff --git a/arch/arm/mach-netx/xc.c b/arch/arm/mach-netx/xc.c
index 172a058ddd66..bd5184fe177c 100644
--- a/arch/arm/mach-netx/xc.c
+++ b/arch/arm/mach-netx/xc.c
@@ -190,15 +190,15 @@ struct xc *request_xc(int xcno, struct device *dev)
190 goto exit; 190 goto exit;
191 191
192 if (!request_mem_region 192 if (!request_mem_region
193 (NETX_PA_XPEC(xcno), XPEC_MEM_SIZE, dev->kobj.name)) 193 (NETX_PA_XPEC(xcno), XPEC_MEM_SIZE, kobject_name(dev->kobj)))
194 goto exit_free; 194 goto exit_free;
195 195
196 if (!request_mem_region 196 if (!request_mem_region
197 (NETX_PA_XMAC(xcno), XMAC_MEM_SIZE, dev->kobj.name)) 197 (NETX_PA_XMAC(xcno), XMAC_MEM_SIZE, kobject_name(dev->kobj)))
198 goto exit_release_1; 198 goto exit_release_1;
199 199
200 if (!request_mem_region 200 if (!request_mem_region
201 (SRAM_INTERNAL_PHYS(xcno), SRAM_MEM_SIZE, dev->kobj.name)) 201 (SRAM_INTERNAL_PHYS(xcno), SRAM_MEM_SIZE, kobject_name(dev->kobj)))
202 goto exit_release_2; 202 goto exit_release_2;
203 203
204 x->xpec_base = (void * __iomem)io_p2v(NETX_PA_XPEC(xcno)); 204 x->xpec_base = (void * __iomem)io_p2v(NETX_PA_XPEC(xcno));
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index b0921622566f..130681201c19 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -343,6 +343,7 @@ static struct platform_device *h2_devices[] __initdata = {
343 &h2_mcbsp1_device, 343 &h2_mcbsp1_device,
344}; 344};
345 345
346#ifdef CONFIG_I2C_BOARDINFO
346static struct i2c_board_info __initdata h2_i2c_board_info[] = { 347static struct i2c_board_info __initdata h2_i2c_board_info[] = {
347 { 348 {
348 I2C_BOARD_INFO("tps65010", 0x48), 349 I2C_BOARD_INFO("tps65010", 0x48),
@@ -356,6 +357,7 @@ static struct i2c_board_info __initdata h2_i2c_board_info[] = {
356 * - ... etc 357 * - ... etc
357 */ 358 */
358}; 359};
360#endif
359 361
360static void __init h2_init_smc91x(void) 362static void __init h2_init_smc91x(void)
361{ 363{
@@ -467,8 +469,10 @@ static void __init h2_init(void)
467 if (gpio_request(58, "tps65010") == 0) 469 if (gpio_request(58, "tps65010") == 0)
468 gpio_direction_input(58); 470 gpio_direction_input(58);
469 471
472#ifdef CONFIG_I2C_BOARDINFO
470 i2c_register_board_info(1, h2_i2c_board_info, 473 i2c_register_board_info(1, h2_i2c_board_info,
471 ARRAY_SIZE(h2_i2c_board_info)); 474 ARRAY_SIZE(h2_i2c_board_info));
475#endif
472} 476}
473 477
474static void __init h2_map_io(void) 478static void __init h2_map_io(void)
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
index d9af4367f8bb..e6e85b7b097b 100644
--- a/arch/arm/mach-omap2/clock.c
+++ b/arch/arm/mach-omap2/clock.c
@@ -651,7 +651,7 @@ static u32 omap2_get_clksel(u32 *div_sel, u32 *field_mask,
651 break; 651 break;
652 case CM_SYSCLKOUT_SEL1: 652 case CM_SYSCLKOUT_SEL1:
653 div_addr = (u32)&PRCM_CLKOUT_CTRL; 653 div_addr = (u32)&PRCM_CLKOUT_CTRL;
654 if ((div_off == 3) || (div_off = 11)) 654 if ((div_off == 3) || (div_off == 11))
655 mask= 0x3; 655 mask= 0x3;
656 break; 656 break;
657 case CM_CORE_SEL1: 657 case CM_CORE_SEL1:
diff --git a/arch/arm/mach-pxa/mfp.c b/arch/arm/mach-pxa/mfp.c
index 5cd3cadbbd10..436f96574964 100644
--- a/arch/arm/mach-pxa/mfp.c
+++ b/arch/arm/mach-pxa/mfp.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2007 Marvell Internation Ltd. 6 * Copyright (C) 2007 Marvell Internation Ltd.
7 * 7 *
8 * 2007-08-21: eric miao <eric.y.miao@gmail.com> 8 * 2007-08-21: eric miao <eric.miao@marvell.com>
9 * initial version 9 * initial version
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mach-pxa/pxa300.c b/arch/arm/mach-pxa/pxa300.c
index 7a34231f3172..0a0d3877f212 100644
--- a/arch/arm/mach-pxa/pxa300.c
+++ b/arch/arm/mach-pxa/pxa300.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2007 Marvell Internation Ltd. 6 * Copyright (C) 2007 Marvell Internation Ltd.
7 * 7 *
8 * 2007-08-21: eric miao <eric.y.miao@gmail.com> 8 * 2007-08-21: eric miao <eric.miao@marvell.com>
9 * initial version 9 * initial version
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mach-pxa/pxa320.c b/arch/arm/mach-pxa/pxa320.c
index cd9eba5b3df9..1010f77d977a 100644
--- a/arch/arm/mach-pxa/pxa320.c
+++ b/arch/arm/mach-pxa/pxa320.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2007 Marvell Internation Ltd. 6 * Copyright (C) 2007 Marvell Internation Ltd.
7 * 7 *
8 * 2007-08-21: eric miao <eric.y.miao@gmail.com> 8 * 2007-08-21: eric miao <eric.miao@marvell.com>
9 * initial version 9 * initial version
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index 39f0de8c189e..5da798282a54 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2006 Marvell International Ltd. 6 * Copyright (C) 2006 Marvell International Ltd.
7 * 7 *
8 * 2007-09-02: eric miao <eric.y.miao@gmail.com> 8 * 2007-09-02: eric miao <eric.miao@marvell.com>
9 * initial version 9 * initial version
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
index ec4286c7931c..a2d45d742ce4 100644
--- a/arch/arm/mach-pxa/time.c
+++ b/arch/arm/mach-pxa/time.c
@@ -151,6 +151,9 @@ pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev)
151 OIER &= ~OIER_E0; 151 OIER &= ~OIER_E0;
152 raw_local_irq_restore(irqflags); 152 raw_local_irq_restore(irqflags);
153 break; 153 break;
154
155 case CLOCK_EVT_MODE_RESUME:
156 break;
154 } 157 }
155} 158}
156 159
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index 3f18d760dd1b..743a87b2faa1 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * Copyright (C) 2006 Marvell International Ltd. 6 * Copyright (C) 2006 Marvell International Ltd.
7 * 7 *
8 * 2007-09-04: eric miao <eric.y.miao@gmail.com> 8 * 2007-09-04: eric miao <eric.miao@marvell.com>
9 * rewrite to align with latest kernel 9 * rewrite to align with latest kernel
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mach-pxa/zylonite_pxa300.c b/arch/arm/mach-pxa/zylonite_pxa300.c
index b5fbd2f4c693..1832bc316501 100644
--- a/arch/arm/mach-pxa/zylonite_pxa300.c
+++ b/arch/arm/mach-pxa/zylonite_pxa300.c
@@ -5,7 +5,7 @@
5 * PXA3xx Development Platform (aka Zylonite) 5 * PXA3xx Development Platform (aka Zylonite)
6 * 6 *
7 * Copyright (C) 2007 Marvell Internation Ltd. 7 * Copyright (C) 2007 Marvell Internation Ltd.
8 * 2007-08-21: eric miao <eric.y.miao@gmail.com> 8 * 2007-08-21: eric miao <eric.miao@marvell.com>
9 * initial version 9 * initial version
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mach-pxa/zylonite_pxa320.c b/arch/arm/mach-pxa/zylonite_pxa320.c
index 63cb36be086b..94c715808b59 100644
--- a/arch/arm/mach-pxa/zylonite_pxa320.c
+++ b/arch/arm/mach-pxa/zylonite_pxa320.c
@@ -5,7 +5,7 @@
5 * PXA3xx Development Platform (aka Zylonite) 5 * PXA3xx Development Platform (aka Zylonite)
6 * 6 *
7 * Copyright (C) 2007 Marvell Internation Ltd. 7 * Copyright (C) 2007 Marvell Internation Ltd.
8 * 2007-08-21: eric miao <eric.y.miao@gmail.com> 8 * 2007-08-21: eric miao <eric.miao@marvell.com>
9 * initial version 9 * initial version
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S
index 5b80b6bdd0cb..194ef48968e6 100644
--- a/arch/arm/mm/proc-arm926.S
+++ b/arch/arm/mm/proc-arm926.S
@@ -105,9 +105,13 @@ ENTRY(cpu_arm926_do_idle)
105 mrc p15, 0, r1, c1, c0, 0 @ Read control register 105 mrc p15, 0, r1, c1, c0, 0 @ Read control register
106 mcr p15, 0, r0, c7, c10, 4 @ Drain write buffer 106 mcr p15, 0, r0, c7, c10, 4 @ Drain write buffer
107 bic r2, r1, #1 << 12 107 bic r2, r1, #1 << 12
108 mrs r3, cpsr @ Disable FIQs while Icache
109 orr ip, r3, #PSR_F_BIT @ is disabled
110 msr cpsr_c, ip
108 mcr p15, 0, r2, c1, c0, 0 @ Disable I cache 111 mcr p15, 0, r2, c1, c0, 0 @ Disable I cache
109 mcr p15, 0, r0, c7, c0, 4 @ Wait for interrupt 112 mcr p15, 0, r0, c7, c0, 4 @ Wait for interrupt
110 mcr p15, 0, r1, c1, c0, 0 @ Restore ICache enable 113 mcr p15, 0, r1, c1, c0, 0 @ Restore ICache enable
114 msr cpsr_c, r3 @ Restore FIQ state
111 mov pc, lr 115 mov pc, lr
112 116
113/* 117/*
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index 7888551ed939..9f9de3e95826 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -295,6 +295,12 @@ config PNAV10
295 help 295 help
296 PNAV 1.0 board Support. 296 PNAV 1.0 board Support.
297 297
298config H8606_HVSISTEMAS
299 bool "HV Sistemas H8606"
300 depends on (BF532)
301 help
302 HV Sistemas H8606 board support.
303
298config GENERIC_BOARD 304config GENERIC_BOARD
299 bool "Custom" 305 bool "Custom"
300 depends on (BF537 || BF536 \ 306 depends on (BF537 || BF536 \
@@ -317,7 +323,8 @@ config MEM_MT48LC64M4A2FB_7E
317config MEM_MT48LC16M16A2TG_75 323config MEM_MT48LC16M16A2TG_75
318 bool 324 bool
319 depends on (BFIN533_EZKIT || BFIN561_EZKIT \ 325 depends on (BFIN533_EZKIT || BFIN561_EZKIT \
320 || BFIN533_BLUETECHNIX_CM || BFIN537_BLUETECHNIX_CM) 326 || BFIN533_BLUETECHNIX_CM || BFIN537_BLUETECHNIX_CM \
327 || H8606_HVSISTEMAS)
321 default y 328 default y
322 329
323config MEM_MT48LC32M8A2_75 330config MEM_MT48LC32M8A2_75
@@ -366,7 +373,7 @@ config CLKIN_HZ
366 int "Crystal Frequency in Hz" 373 int "Crystal Frequency in Hz"
367 default "11059200" if BFIN533_STAMP 374 default "11059200" if BFIN533_STAMP
368 default "27000000" if BFIN533_EZKIT 375 default "27000000" if BFIN533_EZKIT
369 default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT) 376 default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT || H8606_HVSISTEMAS)
370 default "30000000" if BFIN561_EZKIT 377 default "30000000" if BFIN561_EZKIT
371 default "24576000" if PNAV10 378 default "24576000" if PNAV10
372 help 379 help
@@ -404,6 +411,7 @@ config VCO_MULT
404 default "20" if BFIN537_BLUETECHNIX_CM 411 default "20" if BFIN537_BLUETECHNIX_CM
405 default "20" if BFIN561_BLUETECHNIX_CM 412 default "20" if BFIN561_BLUETECHNIX_CM
406 default "20" if BFIN561_EZKIT 413 default "20" if BFIN561_EZKIT
414 default "16" if H8606_HVSISTEMAS
407 help 415 help
408 This controls the frequency of the on-chip PLL. This can be between 1 and 64. 416 This controls the frequency of the on-chip PLL. This can be between 1 and 64.
409 PLL Frequency = (Crystal Frequency) * (this setting) 417 PLL Frequency = (Crystal Frequency) * (this setting)
@@ -440,6 +448,7 @@ config SCLK_DIV
440 default 4 if BFIN537_BLUETECHNIX_CM 448 default 4 if BFIN537_BLUETECHNIX_CM
441 default 4 if BFIN561_BLUETECHNIX_CM 449 default 4 if BFIN561_BLUETECHNIX_CM
442 default 5 if BFIN561_EZKIT 450 default 5 if BFIN561_EZKIT
451 default 3 if H8606_HVSISTEMAS
443 help 452 help
444 This sets the frequency of the system clock (including SDRAM or DDR). 453 This sets the frequency of the system clock (including SDRAM or DDR).
445 This can be between 1 and 15 454 This can be between 1 and 15
@@ -492,11 +501,13 @@ config MEM_SIZE
492 default 64 if BFIN561_EZKIT 501 default 64 if BFIN561_EZKIT
493 default 128 if BFIN533_STAMP 502 default 128 if BFIN533_STAMP
494 default 64 if PNAV10 503 default 64 if PNAV10
504 default 32 if H8606_HVSISTEMAS
495 505
496config MEM_ADD_WIDTH 506config MEM_ADD_WIDTH
497 int "SDRAM Memory Address Width" 507 int "SDRAM Memory Address Width"
498 default 9 if BFIN533_EZKIT 508 default 9 if BFIN533_EZKIT
499 default 9 if BFIN561_EZKIT 509 default 9 if BFIN561_EZKIT
510 default 9 if H8606_HVSISTEMAS
500 default 10 if BFIN527_EZKIT 511 default 10 if BFIN527_EZKIT
501 default 10 if BFIN537_STAMP 512 default 10 if BFIN537_STAMP
502 default 11 if BFIN533_STAMP 513 default 11 if BFIN533_STAMP
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig
index df974e785ee2..1f6a93df6b32 100644
--- a/arch/blackfin/configs/BF527-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF527-EZKIT_defconfig
@@ -244,7 +244,7 @@ CONFIG_CLKIN_HZ=25000000
244# CONFIG_BFIN_KERNEL_CLOCK is not set 244# CONFIG_BFIN_KERNEL_CLOCK is not set
245CONFIG_MAX_VCO_HZ=600000000 245CONFIG_MAX_VCO_HZ=600000000
246CONFIG_MIN_VCO_HZ=50000000 246CONFIG_MIN_VCO_HZ=50000000
247CONFIG_MAX_SCLK_HZ=133000000 247CONFIG_MAX_SCLK_HZ=133333333
248CONFIG_MIN_SCLK_HZ=27000000 248CONFIG_MIN_SCLK_HZ=27000000
249 249
250# 250#
diff --git a/arch/blackfin/configs/BF533-EZKIT_defconfig b/arch/blackfin/configs/BF533-EZKIT_defconfig
index 57f58d5cd47a..9e9b420342d1 100644
--- a/arch/blackfin/configs/BF533-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF533-EZKIT_defconfig
@@ -198,7 +198,7 @@ CONFIG_CLKIN_HZ=27000000
198# CONFIG_BFIN_KERNEL_CLOCK is not set 198# CONFIG_BFIN_KERNEL_CLOCK is not set
199CONFIG_MAX_VCO_HZ=750000000 199CONFIG_MAX_VCO_HZ=750000000
200CONFIG_MIN_VCO_HZ=50000000 200CONFIG_MIN_VCO_HZ=50000000
201CONFIG_MAX_SCLK_HZ=133000000 201CONFIG_MAX_SCLK_HZ=133333333
202CONFIG_MIN_SCLK_HZ=27000000 202CONFIG_MIN_SCLK_HZ=27000000
203 203
204# 204#
diff --git a/arch/blackfin/configs/BF533-STAMP_defconfig b/arch/blackfin/configs/BF533-STAMP_defconfig
index 306302baff06..f59ade980109 100644
--- a/arch/blackfin/configs/BF533-STAMP_defconfig
+++ b/arch/blackfin/configs/BF533-STAMP_defconfig
@@ -199,7 +199,7 @@ CONFIG_CLKIN_HZ=11059200
199# CONFIG_BFIN_KERNEL_CLOCK is not set 199# CONFIG_BFIN_KERNEL_CLOCK is not set
200CONFIG_MAX_VCO_HZ=750000000 200CONFIG_MAX_VCO_HZ=750000000
201CONFIG_MIN_VCO_HZ=50000000 201CONFIG_MIN_VCO_HZ=50000000
202CONFIG_MAX_SCLK_HZ=133000000 202CONFIG_MAX_SCLK_HZ=133333333
203CONFIG_MIN_SCLK_HZ=27000000 203CONFIG_MIN_SCLK_HZ=27000000
204 204
205# 205#
diff --git a/arch/blackfin/configs/BF537-STAMP_defconfig b/arch/blackfin/configs/BF537-STAMP_defconfig
index 828b604438eb..07eb63dc25e0 100644
--- a/arch/blackfin/configs/BF537-STAMP_defconfig
+++ b/arch/blackfin/configs/BF537-STAMP_defconfig
@@ -206,7 +206,7 @@ CONFIG_CLKIN_HZ=25000000
206# CONFIG_BFIN_KERNEL_CLOCK is not set 206# CONFIG_BFIN_KERNEL_CLOCK is not set
207CONFIG_MAX_VCO_HZ=600000000 207CONFIG_MAX_VCO_HZ=600000000
208CONFIG_MIN_VCO_HZ=50000000 208CONFIG_MIN_VCO_HZ=50000000
209CONFIG_MAX_SCLK_HZ=133000000 209CONFIG_MAX_SCLK_HZ=133333333
210CONFIG_MIN_SCLK_HZ=27000000 210CONFIG_MIN_SCLK_HZ=27000000
211 211
212# 212#
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig
index d8569888a1c8..0dd3d2253dc2 100644
--- a/arch/blackfin/configs/BF548-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF548-EZKIT_defconfig
@@ -1,6 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22.6 3# Linux kernel version: 2.6.22.10
4# Sat Oct 27 02:34:07 2007
4# 5#
5# CONFIG_MMU is not set 6# CONFIG_MMU is not set
6# CONFIG_FPU is not set 7# CONFIG_FPU is not set
@@ -64,7 +65,6 @@ CONFIG_FUTEX=y
64CONFIG_ANON_INODES=y 65CONFIG_ANON_INODES=y
65CONFIG_EPOLL=y 66CONFIG_EPOLL=y
66CONFIG_SIGNALFD=y 67CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 68CONFIG_EVENTFD=y
69CONFIG_VM_EVENT_COUNTERS=y 69CONFIG_VM_EVENT_COUNTERS=y
70CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 70CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
@@ -117,6 +117,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
117# 117#
118# Processor and Board Settings 118# Processor and Board Settings
119# 119#
120# CONFIG_BF522 is not set
121# CONFIG_BF525 is not set
122# CONFIG_BF527 is not set
120# CONFIG_BF531 is not set 123# CONFIG_BF531 is not set
121# CONFIG_BF532 is not set 124# CONFIG_BF532 is not set
122# CONFIG_BF533 is not set 125# CONFIG_BF533 is not set
@@ -129,6 +132,7 @@ CONFIG_PREEMPT_VOLUNTARY=y
129CONFIG_BF549=y 132CONFIG_BF549=y
130# CONFIG_BF561 is not set 133# CONFIG_BF561 is not set
131CONFIG_BF_REV_0_0=y 134CONFIG_BF_REV_0_0=y
135# CONFIG_BF_REV_0_1 is not set
132# CONFIG_BF_REV_0_2 is not set 136# CONFIG_BF_REV_0_2 is not set
133# CONFIG_BF_REV_0_3 is not set 137# CONFIG_BF_REV_0_3 is not set
134# CONFIG_BF_REV_0_4 is not set 138# CONFIG_BF_REV_0_4 is not set
@@ -137,6 +141,7 @@ CONFIG_BF_REV_0_0=y
137# CONFIG_BF_REV_NONE is not set 141# CONFIG_BF_REV_NONE is not set
138CONFIG_BF54x=y 142CONFIG_BF54x=y
139CONFIG_BFIN_SINGLE_CORE=y 143CONFIG_BFIN_SINGLE_CORE=y
144# CONFIG_BFIN527_EZKIT is not set
140# CONFIG_BFIN533_EZKIT is not set 145# CONFIG_BFIN533_EZKIT is not set
141# CONFIG_BFIN533_STAMP is not set 146# CONFIG_BFIN533_STAMP is not set
142# CONFIG_BFIN537_STAMP is not set 147# CONFIG_BFIN537_STAMP is not set
@@ -147,8 +152,23 @@ CONFIG_BFIN548_EZKIT=y
147# CONFIG_BFIN561_EZKIT is not set 152# CONFIG_BFIN561_EZKIT is not set
148# CONFIG_BFIN561_TEPLA is not set 153# CONFIG_BFIN561_TEPLA is not set
149# CONFIG_PNAV10 is not set 154# CONFIG_PNAV10 is not set
155# CONFIG_H8606_HVSISTEMAS is not set
150# CONFIG_GENERIC_BOARD is not set 156# CONFIG_GENERIC_BOARD is not set
151CONFIG_IRQ_PLL_WAKEUP=7 157CONFIG_IRQ_PLL_WAKEUP=7
158CONFIG_IRQ_RTC=8
159CONFIG_IRQ_SPORT0_RX=9
160CONFIG_IRQ_SPORT0_TX=9
161CONFIG_IRQ_SPORT1_RX=9
162CONFIG_IRQ_SPORT1_TX=9
163CONFIG_IRQ_UART0_RX=10
164CONFIG_IRQ_UART0_TX=10
165CONFIG_IRQ_UART1_RX=10
166CONFIG_IRQ_UART1_TX=10
167CONFIG_IRQ_CNT=8
168CONFIG_IRQ_USB_INT0=11
169CONFIG_IRQ_USB_INT1=11
170CONFIG_IRQ_USB_INT2=11
171CONFIG_IRQ_USB_DMA=11
152CONFIG_IRQ_TIMER0=11 172CONFIG_IRQ_TIMER0=11
153CONFIG_IRQ_TIMER1=11 173CONFIG_IRQ_TIMER1=11
154CONFIG_IRQ_TIMER2=11 174CONFIG_IRQ_TIMER2=11
@@ -160,15 +180,6 @@ CONFIG_IRQ_TIMER7=11
160CONFIG_IRQ_TIMER8=11 180CONFIG_IRQ_TIMER8=11
161CONFIG_IRQ_TIMER9=11 181CONFIG_IRQ_TIMER9=11
162CONFIG_IRQ_TIMER10=11 182CONFIG_IRQ_TIMER10=11
163CONFIG_IRQ_RTC=8
164CONFIG_IRQ_SPORT0_RX=9
165CONFIG_IRQ_SPORT0_TX=9
166CONFIG_IRQ_SPORT1_RX=9
167CONFIG_IRQ_SPORT1_TX=9
168CONFIG_IRQ_UART0_RX=10
169CONFIG_IRQ_UART0_TX=10
170CONFIG_IRQ_UART1_RX=10
171CONFIG_IRQ_UART1_TX=10
172 183
173# 184#
174# BF548 Specific Configuration 185# BF548 Specific Configuration
@@ -236,16 +247,11 @@ CONFIG_IRQ_PIXC_IN0=8
236CONFIG_IRQ_PIXC_IN1=8 247CONFIG_IRQ_PIXC_IN1=8
237CONFIG_IRQ_PIXC_OUT=8 248CONFIG_IRQ_PIXC_OUT=8
238CONFIG_IRQ_SDH=8 249CONFIG_IRQ_SDH=8
239CONFIG_IRQ_CNT=8
240CONFIG_IRQ_KEY=8 250CONFIG_IRQ_KEY=8
241CONFIG_IRQ_CAN1_RX=11 251CONFIG_IRQ_CAN1_RX=11
242CONFIG_IRQ_CAN1_TX=11 252CONFIG_IRQ_CAN1_TX=11
243CONFIG_IRQ_SDH_MASK0=11 253CONFIG_IRQ_SDH_MASK0=11
244CONFIG_IRQ_SDH_MASK1=11 254CONFIG_IRQ_SDH_MASK1=11
245CONFIG_IRQ_USB_INT0=11
246CONFIG_IRQ_USB_INT1=11
247CONFIG_IRQ_USB_INT2=11
248CONFIG_IRQ_USB_DMA=11
249CONFIG_IRQ_OTPSEC=11 255CONFIG_IRQ_OTPSEC=11
250CONFIG_IRQ_PINT2=11 256CONFIG_IRQ_PINT2=11
251CONFIG_IRQ_PINT3=11 257CONFIG_IRQ_PINT3=11
@@ -273,9 +279,9 @@ CONFIG_PINT3_ASSIGN=0x02020303
273# 279#
274CONFIG_CLKIN_HZ=25000000 280CONFIG_CLKIN_HZ=25000000
275# CONFIG_BFIN_KERNEL_CLOCK is not set 281# CONFIG_BFIN_KERNEL_CLOCK is not set
276CONFIG_MAX_VCO_HZ=533000000 282CONFIG_MAX_VCO_HZ=533333333
277CONFIG_MIN_VCO_HZ=50000000 283CONFIG_MIN_VCO_HZ=50000000
278CONFIG_MAX_SCLK_HZ=133000000 284CONFIG_MAX_SCLK_HZ=133333333
279CONFIG_MIN_SCLK_HZ=27000000 285CONFIG_MIN_SCLK_HZ=27000000
280 286
281# 287#
@@ -332,9 +338,10 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
332# CONFIG_RESOURCES_64BIT is not set 338# CONFIG_RESOURCES_64BIT is not set
333CONFIG_ZONE_DMA_FLAG=1 339CONFIG_ZONE_DMA_FLAG=1
334CONFIG_LARGE_ALLOCS=y 340CONFIG_LARGE_ALLOCS=y
341# CONFIG_BFIN_GPTIMERS is not set
335CONFIG_BFIN_DMA_5XX=y 342CONFIG_BFIN_DMA_5XX=y
336# CONFIG_DMA_UNCACHED_2M is not set 343CONFIG_DMA_UNCACHED_2M=y
337CONFIG_DMA_UNCACHED_1M=y 344# CONFIG_DMA_UNCACHED_1M is not set
338# CONFIG_DMA_UNCACHED_NONE is not set 345# CONFIG_DMA_UNCACHED_NONE is not set
339 346
340# 347#
@@ -353,7 +360,7 @@ CONFIG_L1_MAX_PIECE=16
353# 360#
354 361
355# 362#
356# EBIU_AMBCTL Global Control 363# EBIU_AMGCTL Global Control
357# 364#
358CONFIG_C_AMCKEN=y 365CONFIG_C_AMCKEN=y
359# CONFIG_C_AMBEN is not set 366# CONFIG_C_AMBEN is not set
@@ -722,7 +729,7 @@ CONFIG_NETDEV_10000=y
722# 729#
723# Input device support 730# Input device support
724# 731#
725CONFIG_INPUT=y 732CONFIG_INPUT=m
726# CONFIG_INPUT_FF_MEMLESS is not set 733# CONFIG_INPUT_FF_MEMLESS is not set
727# CONFIG_INPUT_POLLDEV is not set 734# CONFIG_INPUT_POLLDEV is not set
728 735
@@ -731,18 +738,39 @@ CONFIG_INPUT=y
731# 738#
732# CONFIG_INPUT_MOUSEDEV is not set 739# CONFIG_INPUT_MOUSEDEV is not set
733# CONFIG_INPUT_JOYDEV is not set 740# CONFIG_INPUT_JOYDEV is not set
734# CONFIG_INPUT_TSDEV is not set 741CONFIG_INPUT_TSDEV=m
735# CONFIG_INPUT_EVDEV is not set 742CONFIG_INPUT_TSDEV_SCREEN_X=240
736# CONFIG_INPUT_EVBUG is not set 743CONFIG_INPUT_TSDEV_SCREEN_Y=320
744CONFIG_INPUT_EVDEV=m
745CONFIG_INPUT_EVBUG=m
737 746
738# 747#
739# Input Device Drivers 748# Input Device Drivers
740# 749#
741# CONFIG_INPUT_KEYBOARD is not set 750CONFIG_INPUT_KEYBOARD=y
751# CONFIG_KEYBOARD_ATKBD is not set
752# CONFIG_KEYBOARD_SUNKBD is not set
753# CONFIG_KEYBOARD_LKKBD is not set
754# CONFIG_KEYBOARD_XTKBD is not set
755# CONFIG_KEYBOARD_NEWTON is not set
756# CONFIG_KEYBOARD_STOWAWAY is not set
757# CONFIG_KEYBOARD_GPIO is not set
758CONFIG_KEYBOARD_BFIN=m
742# CONFIG_INPUT_MOUSE is not set 759# CONFIG_INPUT_MOUSE is not set
743# CONFIG_INPUT_JOYSTICK is not set 760# CONFIG_INPUT_JOYSTICK is not set
744# CONFIG_INPUT_TABLET is not set 761# CONFIG_INPUT_TABLET is not set
745# CONFIG_INPUT_TOUCHSCREEN is not set 762CONFIG_INPUT_TOUCHSCREEN=y
763# CONFIG_TOUCHSCREEN_ADS7846 is not set
764CONFIG_TOUCHSCREEN_AD7877=m
765# CONFIG_TOUCHSCREEN_GUNZE is not set
766# CONFIG_TOUCHSCREEN_ELO is not set
767# CONFIG_TOUCHSCREEN_MTOUCH is not set
768# CONFIG_TOUCHSCREEN_MK712 is not set
769# CONFIG_TOUCHSCREEN_PENMOUNT is not set
770# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
771# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
772# CONFIG_TOUCHSCREEN_UCB1400 is not set
773# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
746CONFIG_INPUT_MISC=y 774CONFIG_INPUT_MISC=y
747# CONFIG_INPUT_ATI_REMOTE is not set 775# CONFIG_INPUT_ATI_REMOTE is not set
748# CONFIG_INPUT_ATI_REMOTE2 is not set 776# CONFIG_INPUT_ATI_REMOTE2 is not set
@@ -764,9 +792,9 @@ CONFIG_INPUT_MISC=y
764# 792#
765# CONFIG_AD9960 is not set 793# CONFIG_AD9960 is not set
766# CONFIG_SPI_ADC_BF533 is not set 794# CONFIG_SPI_ADC_BF533 is not set
767# CONFIG_BFIN_PFLAGS is not set 795# CONFIG_BF5xx_PFLAGS is not set
768# CONFIG_BF5xx_PPIFCD is not set 796# CONFIG_BF5xx_PPIFCD is not set
769# CONFIG_BF5xx_TIMERS is not set 797# CONFIG_BFIN_SIMPLE_TIMER is not set
770# CONFIG_BF5xx_PPI is not set 798# CONFIG_BF5xx_PPI is not set
771# CONFIG_BFIN_SPORT is not set 799# CONFIG_BFIN_SPORT is not set
772# CONFIG_BFIN_TIMER_LATENCY is not set 800# CONFIG_BFIN_TIMER_LATENCY is not set
@@ -958,17 +986,92 @@ CONFIG_DAB=y
958# 986#
959# CONFIG_DISPLAY_SUPPORT is not set 987# CONFIG_DISPLAY_SUPPORT is not set
960# CONFIG_VGASTATE is not set 988# CONFIG_VGASTATE is not set
961# CONFIG_FB is not set 989CONFIG_FB=m
990CONFIG_FIRMWARE_EDID=y
991# CONFIG_FB_DDC is not set
992CONFIG_FB_CFB_FILLRECT=m
993CONFIG_FB_CFB_COPYAREA=m
994CONFIG_FB_CFB_IMAGEBLIT=m
995# CONFIG_FB_SYS_FILLRECT is not set
996# CONFIG_FB_SYS_COPYAREA is not set
997# CONFIG_FB_SYS_IMAGEBLIT is not set
998# CONFIG_FB_SYS_FOPS is not set
999CONFIG_FB_DEFERRED_IO=y
1000# CONFIG_FB_SVGALIB is not set
1001# CONFIG_FB_MACMODES is not set
1002# CONFIG_FB_BACKLIGHT is not set
1003# CONFIG_FB_MODE_HELPERS is not set
1004# CONFIG_FB_TILEBLITTING is not set
1005
1006#
1007# Frame buffer hardware drivers
1008#
1009# CONFIG_FB_BFIN_7171 is not set
1010# CONFIG_FB_BFIN_7393 is not set
1011CONFIG_FB_BF54X_LQ043=m
1012# CONFIG_FB_BFIN_T350MCQB is not set
1013# CONFIG_FB_S1D13XXX is not set
1014# CONFIG_FB_VIRTUAL is not set
1015# CONFIG_LOGO is not set
962 1016
963# 1017#
964# Sound 1018# Sound
965# 1019#
966# CONFIG_SOUND is not set 1020CONFIG_SOUND=y
1021
1022#
1023# Advanced Linux Sound Architecture
1024#
1025CONFIG_SND=y
1026CONFIG_SND_TIMER=y
1027CONFIG_SND_PCM=y
1028# CONFIG_SND_SEQUENCER is not set
1029CONFIG_SND_OSSEMUL=y
1030CONFIG_SND_MIXER_OSS=y
1031CONFIG_SND_PCM_OSS=y
1032CONFIG_SND_PCM_OSS_PLUGINS=y
1033# CONFIG_SND_DYNAMIC_MINORS is not set
1034CONFIG_SND_SUPPORT_OLD_API=y
1035CONFIG_SND_VERBOSE_PROCFS=y
1036# CONFIG_SND_VERBOSE_PRINTK is not set
1037# CONFIG_SND_DEBUG is not set
1038
1039#
1040# Generic devices
1041#
1042# CONFIG_SND_DUMMY is not set
1043# CONFIG_SND_MTPAV is not set
1044# CONFIG_SND_SERIAL_U16550 is not set
1045# CONFIG_SND_MPU401 is not set
1046
1047#
1048# ALSA Blackfin devices
1049#
1050# CONFIG_SND_BLACKFIN_AD1836 is not set
1051# CONFIG_SND_BFIN_AD73311 is not set
1052
1053#
1054# System on Chip audio support
1055#
1056CONFIG_SND_SOC_AC97_BUS=y
1057CONFIG_SND_SOC=y
1058CONFIG_SND_BF5XX_SOC=y
1059CONFIG_SND_BF5XX_SOC_AC97=y
1060CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y
1061CONFIG_SND_BF5XX_SPORT_NUM=0
1062# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
1063CONFIG_SND_SOC_AD1980=y
1064
1065#
1066# Open Sound System
1067#
1068# CONFIG_SOUND_PRIME is not set
1069CONFIG_AC97_BUS=y
967 1070
968# 1071#
969# HID Devices 1072# HID Devices
970# 1073#
971CONFIG_HID=y 1074CONFIG_HID=m
972# CONFIG_HID_DEBUG is not set 1075# CONFIG_HID_DEBUG is not set
973 1076
974# 1077#
@@ -1101,8 +1204,13 @@ CONFIG_EXT2_FS=y
1101CONFIG_EXT2_FS_XATTR=y 1204CONFIG_EXT2_FS_XATTR=y
1102# CONFIG_EXT2_FS_POSIX_ACL is not set 1205# CONFIG_EXT2_FS_POSIX_ACL is not set
1103# CONFIG_EXT2_FS_SECURITY is not set 1206# CONFIG_EXT2_FS_SECURITY is not set
1104# CONFIG_EXT3_FS is not set 1207CONFIG_EXT3_FS=y
1208CONFIG_EXT3_FS_XATTR=y
1209# CONFIG_EXT3_FS_POSIX_ACL is not set
1210# CONFIG_EXT3_FS_SECURITY is not set
1105# CONFIG_EXT4DEV_FS is not set 1211# CONFIG_EXT4DEV_FS is not set
1212CONFIG_JBD=y
1213# CONFIG_JBD_DEBUG is not set
1106CONFIG_FS_MBCACHE=y 1214CONFIG_FS_MBCACHE=y
1107# CONFIG_REISERFS_FS is not set 1215# CONFIG_REISERFS_FS is not set
1108# CONFIG_JFS_FS is not set 1216# CONFIG_JFS_FS is not set
@@ -1123,15 +1231,22 @@ CONFIG_DNOTIFY=y
1123# 1231#
1124# CD-ROM/DVD Filesystems 1232# CD-ROM/DVD Filesystems
1125# 1233#
1126# CONFIG_ISO9660_FS is not set 1234CONFIG_ISO9660_FS=m
1235CONFIG_JOLIET=y
1236CONFIG_ZISOFS=y
1127# CONFIG_UDF_FS is not set 1237# CONFIG_UDF_FS is not set
1128 1238
1129# 1239#
1130# DOS/FAT/NT Filesystems 1240# DOS/FAT/NT Filesystems
1131# 1241#
1132# CONFIG_MSDOS_FS is not set 1242CONFIG_FAT_FS=m
1133# CONFIG_VFAT_FS is not set 1243CONFIG_MSDOS_FS=m
1134# CONFIG_NTFS_FS is not set 1244CONFIG_VFAT_FS=m
1245CONFIG_FAT_DEFAULT_CODEPAGE=437
1246CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1247CONFIG_NTFS_FS=m
1248# CONFIG_NTFS_DEBUG is not set
1249CONFIG_NTFS_RW=y
1135 1250
1136# 1251#
1137# Pseudo filesystems 1252# Pseudo filesystems
@@ -1183,10 +1298,33 @@ CONFIG_JFFS2_RTIME=y
1183# 1298#
1184# Network File Systems 1299# Network File Systems
1185# 1300#
1186# CONFIG_NFS_FS is not set 1301CONFIG_NFS_FS=m
1187# CONFIG_NFSD is not set 1302CONFIG_NFS_V3=y
1188# CONFIG_SMB_FS is not set 1303# CONFIG_NFS_V3_ACL is not set
1189# CONFIG_CIFS is not set 1304# CONFIG_NFS_V4 is not set
1305# CONFIG_NFS_DIRECTIO is not set
1306CONFIG_NFSD=m
1307CONFIG_NFSD_V3=y
1308# CONFIG_NFSD_V3_ACL is not set
1309# CONFIG_NFSD_V4 is not set
1310CONFIG_NFSD_TCP=y
1311CONFIG_LOCKD=m
1312CONFIG_LOCKD_V4=y
1313CONFIG_EXPORTFS=m
1314CONFIG_NFS_COMMON=y
1315CONFIG_SUNRPC=m
1316# CONFIG_SUNRPC_BIND34 is not set
1317# CONFIG_RPCSEC_GSS_KRB5 is not set
1318# CONFIG_RPCSEC_GSS_SPKM3 is not set
1319CONFIG_SMB_FS=m
1320CONFIG_SMB_NLS_DEFAULT=y
1321CONFIG_SMB_NLS_REMOTE="cp437"
1322CONFIG_CIFS=y
1323# CONFIG_CIFS_STATS is not set
1324# CONFIG_CIFS_WEAK_PW_HASH is not set
1325# CONFIG_CIFS_XATTR is not set
1326# CONFIG_CIFS_DEBUG2 is not set
1327# CONFIG_CIFS_EXPERIMENTAL is not set
1190# CONFIG_NCP_FS is not set 1328# CONFIG_NCP_FS is not set
1191# CONFIG_CODA_FS is not set 1329# CONFIG_CODA_FS is not set
1192# CONFIG_AFS_FS is not set 1330# CONFIG_AFS_FS is not set
@@ -1195,13 +1333,68 @@ CONFIG_JFFS2_RTIME=y
1195# 1333#
1196# Partition Types 1334# Partition Types
1197# 1335#
1198# CONFIG_PARTITION_ADVANCED is not set 1336CONFIG_PARTITION_ADVANCED=y
1337# CONFIG_ACORN_PARTITION is not set
1338# CONFIG_OSF_PARTITION is not set
1339# CONFIG_AMIGA_PARTITION is not set
1340# CONFIG_ATARI_PARTITION is not set
1341# CONFIG_MAC_PARTITION is not set
1199CONFIG_MSDOS_PARTITION=y 1342CONFIG_MSDOS_PARTITION=y
1343# CONFIG_BSD_DISKLABEL is not set
1344# CONFIG_MINIX_SUBPARTITION is not set
1345# CONFIG_SOLARIS_X86_PARTITION is not set
1346# CONFIG_UNIXWARE_DISKLABEL is not set
1347# CONFIG_LDM_PARTITION is not set
1348# CONFIG_SGI_PARTITION is not set
1349# CONFIG_ULTRIX_PARTITION is not set
1350# CONFIG_SUN_PARTITION is not set
1351# CONFIG_KARMA_PARTITION is not set
1352# CONFIG_EFI_PARTITION is not set
1353# CONFIG_SYSV68_PARTITION is not set
1200 1354
1201# 1355#
1202# Native Language Support 1356# Native Language Support
1203# 1357#
1204# CONFIG_NLS is not set 1358CONFIG_NLS=y
1359CONFIG_NLS_DEFAULT="iso8859-1"
1360CONFIG_NLS_CODEPAGE_437=m
1361CONFIG_NLS_CODEPAGE_737=m
1362CONFIG_NLS_CODEPAGE_775=m
1363CONFIG_NLS_CODEPAGE_850=m
1364CONFIG_NLS_CODEPAGE_852=m
1365CONFIG_NLS_CODEPAGE_855=m
1366CONFIG_NLS_CODEPAGE_857=m
1367CONFIG_NLS_CODEPAGE_860=m
1368CONFIG_NLS_CODEPAGE_861=m
1369CONFIG_NLS_CODEPAGE_862=m
1370CONFIG_NLS_CODEPAGE_863=m
1371CONFIG_NLS_CODEPAGE_864=m
1372CONFIG_NLS_CODEPAGE_865=m
1373CONFIG_NLS_CODEPAGE_866=m
1374CONFIG_NLS_CODEPAGE_869=m
1375CONFIG_NLS_CODEPAGE_936=m
1376CONFIG_NLS_CODEPAGE_950=m
1377CONFIG_NLS_CODEPAGE_932=m
1378CONFIG_NLS_CODEPAGE_949=m
1379CONFIG_NLS_CODEPAGE_874=m
1380CONFIG_NLS_ISO8859_8=m
1381CONFIG_NLS_CODEPAGE_1250=m
1382CONFIG_NLS_CODEPAGE_1251=m
1383CONFIG_NLS_ASCII=m
1384CONFIG_NLS_ISO8859_1=m
1385CONFIG_NLS_ISO8859_2=m
1386CONFIG_NLS_ISO8859_3=m
1387CONFIG_NLS_ISO8859_4=m
1388CONFIG_NLS_ISO8859_5=m
1389CONFIG_NLS_ISO8859_6=m
1390CONFIG_NLS_ISO8859_7=m
1391CONFIG_NLS_ISO8859_9=m
1392CONFIG_NLS_ISO8859_13=m
1393CONFIG_NLS_ISO8859_14=m
1394CONFIG_NLS_ISO8859_15=m
1395CONFIG_NLS_KOI8_R=m
1396CONFIG_NLS_KOI8_U=m
1397CONFIG_NLS_UTF8=m
1205 1398
1206# 1399#
1207# Distributed Lock Manager 1400# Distributed Lock Manager
diff --git a/arch/blackfin/configs/BF561-EZKIT_defconfig b/arch/blackfin/configs/BF561-EZKIT_defconfig
index 85e647f87759..277d72dac0f9 100644
--- a/arch/blackfin/configs/BF561-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF561-EZKIT_defconfig
@@ -243,7 +243,7 @@ CONFIG_CLKIN_HZ=30000000
243# CONFIG_BFIN_KERNEL_CLOCK is not set 243# CONFIG_BFIN_KERNEL_CLOCK is not set
244CONFIG_MAX_VCO_HZ=600000000 244CONFIG_MAX_VCO_HZ=600000000
245CONFIG_MIN_VCO_HZ=50000000 245CONFIG_MIN_VCO_HZ=50000000
246CONFIG_MAX_SCLK_HZ=133000000 246CONFIG_MAX_SCLK_HZ=133333333
247CONFIG_MIN_SCLK_HZ=27000000 247CONFIG_MIN_SCLK_HZ=27000000
248 248
249# 249#
diff --git a/arch/blackfin/configs/PNAV-10_defconfig b/arch/blackfin/configs/PNAV-10_defconfig
index 15e36aaf2186..3d403e0b82c2 100644
--- a/arch/blackfin/configs/PNAV-10_defconfig
+++ b/arch/blackfin/configs/PNAV-10_defconfig
@@ -204,7 +204,7 @@ CONFIG_CLKIN_HZ=24576000
204# CONFIG_BFIN_KERNEL_CLOCK is not set 204# CONFIG_BFIN_KERNEL_CLOCK is not set
205CONFIG_MAX_VCO_HZ=600000000 205CONFIG_MAX_VCO_HZ=600000000
206CONFIG_MIN_VCO_HZ=50000000 206CONFIG_MIN_VCO_HZ=50000000
207CONFIG_MAX_SCLK_HZ=133000000 207CONFIG_MAX_SCLK_HZ=133333333
208CONFIG_MIN_SCLK_HZ=27000000 208CONFIG_MIN_SCLK_HZ=27000000
209 209
210# 210#
diff --git a/arch/blackfin/kernel/entry.S b/arch/blackfin/kernel/entry.S
index 65c5ba4260b0..65f4e67a65c4 100644
--- a/arch/blackfin/kernel/entry.S
+++ b/arch/blackfin/kernel/entry.S
@@ -54,9 +54,11 @@ ENTRY(_ret_from_fork)
54 [sp + PT_IPEND] = r0; 54 [sp + PT_IPEND] = r0;
55 /* do a 'fake' RTI by jumping to [RETI] 55 /* do a 'fake' RTI by jumping to [RETI]
56 * to avoid clearing supervisor mode in child 56 * to avoid clearing supervisor mode in child
57 */ 57 */
58 r0 = [sp + PT_PC];
59 [sp + PT_P0] = r0;
60
58 RESTORE_ALL_SYS 61 RESTORE_ALL_SYS
59 p0 = reti;
60 jump (p0); 62 jump (p0);
61ENDPROC(_ret_from_fork) 63ENDPROC(_ret_from_fork)
62 64
diff --git a/arch/blackfin/kernel/fixed_code.S b/arch/blackfin/kernel/fixed_code.S
index d8b1ebc70996..90262691b11a 100644
--- a/arch/blackfin/kernel/fixed_code.S
+++ b/arch/blackfin/kernel/fixed_code.S
@@ -129,4 +129,18 @@ ENTRY(_atomic_xor32)
129 rts; 129 rts;
130ENDPROC (_atomic_ior32) 130ENDPROC (_atomic_ior32)
131 131
132.align 16
133 /*
134 * safe_user_instruction
135 * Four NOPS are enough to allow the pipeline to speculativily load
136 * execute anything it wants. After that, things have gone bad, and
137 * we are stuck - so panic. Since we might be in user space, we can't
138 * call panic, so just cause a unhandled exception, this should cause
139 * a dump of the trace buffer so we can tell were we are, and a reboot
140 */
141ENTRY(_safe_user_instruction)
142 NOP; NOP; NOP; NOP;
143 EXCPT 0x4;
144ENDPROC(_safe_user_instruction)
145
132ENTRY(_fixed_code_end) 146ENTRY(_fixed_code_end)
diff --git a/arch/blackfin/kernel/gptimers.c b/arch/blackfin/kernel/gptimers.c
index cb7ba9bfc79c..5cf4bdb1df3b 100644
--- a/arch/blackfin/kernel/gptimers.c
+++ b/arch/blackfin/kernel/gptimers.c
@@ -20,8 +20,7 @@
20#else 20#else
21# define tassert(expr) \ 21# define tassert(expr) \
22 if (!(expr)) \ 22 if (!(expr)) \
23 printk(KERN_DEBUG "%s:%s:%i: Assertion failed: " #expr "\n", \ 23 printk(KERN_DEBUG "%s:%s:%i: Assertion failed: " #expr "\n", __FILE__, __func__, __LINE__);
24 __FILE__, __func__, __LINE__);
25#endif 24#endif
26 25
27#define BFIN_TIMER_NUM_GROUP (BFIN_TIMER_OCTET(MAX_BLACKFIN_GPTIMERS - 1) + 1) 26#define BFIN_TIMER_NUM_GROUP (BFIN_TIMER_OCTET(MAX_BLACKFIN_GPTIMERS - 1) + 1)
@@ -70,7 +69,7 @@ static volatile GPTIMER_group_regs *const group_regs[BFIN_TIMER_NUM_GROUP] =
70#endif 69#endif
71}; 70};
72 71
73static uint32_t const dis_mask[MAX_BLACKFIN_GPTIMERS] = 72static uint32_t const trun_mask[MAX_BLACKFIN_GPTIMERS] =
74{ 73{
75 TIMER_STATUS_TRUN0, 74 TIMER_STATUS_TRUN0,
76 TIMER_STATUS_TRUN1, 75 TIMER_STATUS_TRUN1,
@@ -90,7 +89,27 @@ static uint32_t const dis_mask[MAX_BLACKFIN_GPTIMERS] =
90#endif 89#endif
91}; 90};
92 91
93static uint32_t const irq_mask[MAX_BLACKFIN_GPTIMERS] = 92static uint32_t const tovf_mask[MAX_BLACKFIN_GPTIMERS] =
93{
94 TIMER_STATUS_TOVF0,
95 TIMER_STATUS_TOVF1,
96 TIMER_STATUS_TOVF2,
97#if (MAX_BLACKFIN_GPTIMERS > 3)
98 TIMER_STATUS_TOVF3,
99 TIMER_STATUS_TOVF4,
100 TIMER_STATUS_TOVF5,
101 TIMER_STATUS_TOVF6,
102 TIMER_STATUS_TOVF7,
103#endif
104#if (MAX_BLACKFIN_GPTIMERS > 8)
105 TIMER_STATUS_TOVF8,
106 TIMER_STATUS_TOVF9,
107 TIMER_STATUS_TOVF10,
108 TIMER_STATUS_TOVF11,
109#endif
110};
111
112static uint32_t const timil_mask[MAX_BLACKFIN_GPTIMERS] =
94{ 113{
95 TIMER_STATUS_TIMIL0, 114 TIMER_STATUS_TIMIL0,
96 TIMER_STATUS_TIMIL1, 115 TIMER_STATUS_TIMIL1,
@@ -165,17 +184,31 @@ EXPORT_SYMBOL(set_gptimer_status);
165uint16_t get_gptimer_intr(int timer_id) 184uint16_t get_gptimer_intr(int timer_id)
166{ 185{
167 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 186 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
168 return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & irq_mask[timer_id]) ? 1 : 0; 187 return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & timil_mask[timer_id]) ? 1 : 0;
169} 188}
170EXPORT_SYMBOL(get_gptimer_intr); 189EXPORT_SYMBOL(get_gptimer_intr);
171 190
172void clear_gptimer_intr(int timer_id) 191void clear_gptimer_intr(int timer_id)
173{ 192{
174 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 193 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
175 group_regs[BFIN_TIMER_OCTET(timer_id)]->status = irq_mask[timer_id]; 194 group_regs[BFIN_TIMER_OCTET(timer_id)]->status = timil_mask[timer_id];
176} 195}
177EXPORT_SYMBOL(clear_gptimer_intr); 196EXPORT_SYMBOL(clear_gptimer_intr);
178 197
198uint16_t get_gptimer_over(int timer_id)
199{
200 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
201 return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & tovf_mask[timer_id]) ? 1 : 0;
202}
203EXPORT_SYMBOL(get_gptimer_over);
204
205void clear_gptimer_over(int timer_id)
206{
207 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
208 group_regs[BFIN_TIMER_OCTET(timer_id)]->status = tovf_mask[timer_id];
209}
210EXPORT_SYMBOL(clear_gptimer_over);
211
179void set_gptimer_config(int timer_id, uint16_t config) 212void set_gptimer_config(int timer_id, uint16_t config)
180{ 213{
181 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 214 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
@@ -214,7 +247,7 @@ void disable_gptimers(uint16_t mask)
214 } 247 }
215 for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i) 248 for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i)
216 if (mask & (1 << i)) 249 if (mask & (1 << i))
217 group_regs[BFIN_TIMER_OCTET(i)]->status |= dis_mask[i]; 250 group_regs[BFIN_TIMER_OCTET(i)]->status |= trun_mask[i];
218 SSYNC(); 251 SSYNC();
219} 252}
220EXPORT_SYMBOL(disable_gptimers); 253EXPORT_SYMBOL(disable_gptimers);
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
index f1b059e5a06c..934234f43839 100644
--- a/arch/blackfin/kernel/setup.c
+++ b/arch/blackfin/kernel/setup.c
@@ -316,6 +316,15 @@ void __init setup_arch(char **cmdline_p)
316 316
317 init_leds(); 317 init_leds();
318 318
319 _bfin_swrst = bfin_read_SWRST();
320
321 if (_bfin_swrst & RESET_DOUBLE)
322 printk(KERN_INFO "Recovering from Double Fault event\n");
323 else if (_bfin_swrst & RESET_WDOG)
324 printk(KERN_INFO "Recovering from Watchdog event\n");
325 else if (_bfin_swrst & RESET_SOFTWARE)
326 printk(KERN_NOTICE "Reset caused by Software reset\n");
327
319 printk(KERN_INFO "Blackfin support (C) 2004-2007 Analog Devices, Inc.\n"); 328 printk(KERN_INFO "Blackfin support (C) 2004-2007 Analog Devices, Inc.\n");
320 if (bfin_compiled_revid() == 0xffff) 329 if (bfin_compiled_revid() == 0xffff)
321 printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU); 330 printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU);
@@ -402,8 +411,6 @@ void __init setup_arch(char **cmdline_p)
402 if (l1_length > L1_DATA_A_LENGTH) 411 if (l1_length > L1_DATA_A_LENGTH)
403 panic("L1 data memory overflow\n"); 412 panic("L1 data memory overflow\n");
404 413
405 _bfin_swrst = bfin_read_SWRST();
406
407 /* Copy atomic sequences to their fixed location, and sanity check that 414 /* Copy atomic sequences to their fixed location, and sanity check that
408 these locations are the ones that we advertise to userspace. */ 415 these locations are the ones that we advertise to userspace. */
409 memcpy((void *)FIXED_CODE_START, &fixed_code_start, 416 memcpy((void *)FIXED_CODE_START, &fixed_code_start,
@@ -424,6 +431,8 @@ void __init setup_arch(char **cmdline_p)
424 != ATOMIC_AND32 - FIXED_CODE_START); 431 != ATOMIC_AND32 - FIXED_CODE_START);
425 BUG_ON((char *)&atomic_xor32 - (char *)&fixed_code_start 432 BUG_ON((char *)&atomic_xor32 - (char *)&fixed_code_start
426 != ATOMIC_XOR32 - FIXED_CODE_START); 433 != ATOMIC_XOR32 - FIXED_CODE_START);
434 BUG_ON((char *)&safe_user_instruction - (char *)&fixed_code_start
435 != SAFE_USER_INSTRUCTION - FIXED_CODE_START);
427 436
428 init_exception_vectors(); 437 init_exception_vectors();
429 bf53x_cache_init(); 438 bf53x_cache_init();
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c
index afd044e78af6..cfa05436c972 100644
--- a/arch/blackfin/kernel/traps.c
+++ b/arch/blackfin/kernel/traps.c
@@ -37,10 +37,24 @@
37#include <asm/blackfin.h> 37#include <asm/blackfin.h>
38#include <asm/irq_handler.h> 38#include <asm/irq_handler.h>
39#include <asm/trace.h> 39#include <asm/trace.h>
40#include <asm/fixed_code.h>
40 41
41#ifdef CONFIG_KGDB 42#ifdef CONFIG_KGDB
42# include <linux/debugger.h> 43# include <linux/debugger.h>
43# include <linux/kgdb.h> 44# include <linux/kgdb.h>
45
46# define CHK_DEBUGGER_TRAP() \
47 do { \
48 CHK_DEBUGGER(trapnr, sig, info.si_code, fp, ); \
49 } while (0)
50# define CHK_DEBUGGER_TRAP_MAYBE() \
51 do { \
52 if (kgdb_connected) \
53 CHK_DEBUGGER_TRAP(); \
54 } while (0)
55#else
56# define CHK_DEBUGGER_TRAP() do { } while (0)
57# define CHK_DEBUGGER_TRAP_MAYBE() do { } while (0)
44#endif 58#endif
45 59
46/* Initiate the event table handler */ 60/* Initiate the event table handler */
@@ -53,13 +67,13 @@ void __init trap_init(void)
53 67
54int kstack_depth_to_print = 48; 68int kstack_depth_to_print = 48;
55 69
56#ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON 70static void decode_address(char *buf, unsigned long address)
57static int printk_address(unsigned long address)
58{ 71{
59 struct vm_list_struct *vml; 72 struct vm_list_struct *vml;
60 struct task_struct *p; 73 struct task_struct *p;
61 struct mm_struct *mm; 74 struct mm_struct *mm;
62 unsigned long offset; 75 unsigned long flags, offset;
76 unsigned int in_exception = bfin_read_IPEND() & 0x10;
63 77
64#ifdef CONFIG_KALLSYMS 78#ifdef CONFIG_KALLSYMS
65 unsigned long symsize; 79 unsigned long symsize;
@@ -75,20 +89,33 @@ static int printk_address(unsigned long address)
75 /* yeah! kernel space! */ 89 /* yeah! kernel space! */
76 if (!modname) 90 if (!modname)
77 modname = delim = ""; 91 modname = delim = "";
78 return printk("<0x%p> { %s%s%s%s + 0x%lx }", 92 sprintf(buf, "<0x%p> { %s%s%s%s + 0x%lx }",
79 (void *)address, delim, modname, delim, symname, 93 (void *)address, delim, modname, delim, symname,
80 (unsigned long)offset); 94 (unsigned long)offset);
95 return;
81 96
82 } 97 }
83#endif 98#endif
84 99
100 /* Problem in fixed code section? */
101 if (address >= FIXED_CODE_START && address < FIXED_CODE_END) {
102 sprintf(buf, "<0x%p> /* Maybe fixed code section */", (void *)address);
103 return;
104 }
105
106 /* Problem somewhere before the kernel start address */
107 if (address < CONFIG_BOOT_LOAD) {
108 sprintf(buf, "<0x%p> /* Maybe null pointer? */", (void *)address);
109 return;
110 }
111
85 /* looks like we're off in user-land, so let's walk all the 112 /* looks like we're off in user-land, so let's walk all the
86 * mappings of all our processes and see if we can't be a whee 113 * mappings of all our processes and see if we can't be a whee
87 * bit more specific 114 * bit more specific
88 */ 115 */
89 write_lock_irq(&tasklist_lock); 116 write_lock_irqsave(&tasklist_lock, flags);
90 for_each_process(p) { 117 for_each_process(p) {
91 mm = get_task_mm(p); 118 mm = (in_exception ? p->mm : get_task_mm(p));
92 if (!mm) 119 if (!mm)
93 continue; 120 continue;
94 121
@@ -117,25 +144,30 @@ static int printk_address(unsigned long address)
117 else 144 else
118 offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); 145 offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT);
119 146
120 write_unlock_irq(&tasklist_lock); 147 sprintf(buf, "<0x%p> [ %s + 0x%lx ]",
121 mmput(mm); 148 (void *)address, name, offset);
122 return printk("<0x%p> [ %s + 0x%lx ]", 149 if (!in_exception)
123 (void *)address, name, offset); 150 mmput(mm);
151 goto done;
124 } 152 }
125 153
126 vml = vml->next; 154 vml = vml->next;
127 } 155 }
128 mmput(mm); 156 if (!in_exception)
157 mmput(mm);
129 } 158 }
130 write_unlock_irq(&tasklist_lock);
131 159
132 /* we were unable to find this address anywhere */ 160 /* we were unable to find this address anywhere */
133 return printk("[<0x%p>]", (void *)address); 161 sprintf(buf, "[<0x%p>]", (void *)address);
162
163done:
164 write_unlock_irqrestore(&tasklist_lock, flags);
134} 165}
135#endif
136 166
137asmlinkage void double_fault_c(struct pt_regs *fp) 167asmlinkage void double_fault_c(struct pt_regs *fp)
138{ 168{
169 console_verbose();
170 oops_in_progress = 1;
139 printk(KERN_EMERG "\n" KERN_EMERG "Double Fault\n"); 171 printk(KERN_EMERG "\n" KERN_EMERG "Double Fault\n");
140 dump_bfin_regs(fp, (void *)fp->retx); 172 dump_bfin_regs(fp, (void *)fp->retx);
141 panic("Double Fault - unrecoverable event\n"); 173 panic("Double Fault - unrecoverable event\n");
@@ -151,22 +183,29 @@ asmlinkage void trap_c(struct pt_regs *fp)
151 siginfo_t info; 183 siginfo_t info;
152 unsigned long trapnr = fp->seqstat & SEQSTAT_EXCAUSE; 184 unsigned long trapnr = fp->seqstat & SEQSTAT_EXCAUSE;
153 185
186 trace_buffer_save(j);
187
188 /* Important - be very careful dereferncing pointers - will lead to
189 * double faults if the stack has become corrupt
190 */
191
192 /* If the fault was caused by a kernel thread, or interrupt handler
193 * we will kernel panic, so the system reboots.
194 * If KGDB is enabled, don't set this for kernel breakpoints
195 */
196 if ((bfin_read_IPEND() & 0xFFC0)
154#ifdef CONFIG_KGDB 197#ifdef CONFIG_KGDB
155# define CHK_DEBUGGER_TRAP() \ 198 && trapnr != VEC_EXCPT02
156 do { \
157 CHK_DEBUGGER(trapnr, sig, info.si_code, fp, ); \
158 } while (0)
159# define CHK_DEBUGGER_TRAP_MAYBE() \
160 do { \
161 if (kgdb_connected) \
162 CHK_DEBUGGER_TRAP(); \
163 } while (0)
164#else
165# define CHK_DEBUGGER_TRAP() do { } while (0)
166# define CHK_DEBUGGER_TRAP_MAYBE() do { } while (0)
167#endif 199#endif
168 200 ){
169 trace_buffer_save(j); 201 console_verbose();
202 oops_in_progress = 1;
203 } else if (current) {
204 if (current->mm == NULL) {
205 console_verbose();
206 oops_in_progress = 1;
207 }
208 }
170 209
171 /* trap_c() will be called for exceptions. During exceptions 210 /* trap_c() will be called for exceptions. During exceptions
172 * processing, the pc value should be set with retx value. 211 * processing, the pc value should be set with retx value.
@@ -211,7 +250,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
211 case VEC_EXCPT03: 250 case VEC_EXCPT03:
212 info.si_code = SEGV_STACKFLOW; 251 info.si_code = SEGV_STACKFLOW;
213 sig = SIGSEGV; 252 sig = SIGSEGV;
214 printk(KERN_EMERG EXC_0x03); 253 printk(KERN_NOTICE EXC_0x03);
215 CHK_DEBUGGER_TRAP(); 254 CHK_DEBUGGER_TRAP();
216 break; 255 break;
217 /* 0x04 - User Defined, Caught by default */ 256 /* 0x04 - User Defined, Caught by default */
@@ -240,7 +279,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
240 case VEC_OVFLOW: 279 case VEC_OVFLOW:
241 info.si_code = TRAP_TRACEFLOW; 280 info.si_code = TRAP_TRACEFLOW;
242 sig = SIGTRAP; 281 sig = SIGTRAP;
243 printk(KERN_EMERG EXC_0x11); 282 printk(KERN_NOTICE EXC_0x11);
244 CHK_DEBUGGER_TRAP(); 283 CHK_DEBUGGER_TRAP();
245 break; 284 break;
246 /* 0x12 - Reserved, Caught by default */ 285 /* 0x12 - Reserved, Caught by default */
@@ -262,14 +301,14 @@ asmlinkage void trap_c(struct pt_regs *fp)
262 case VEC_UNDEF_I: 301 case VEC_UNDEF_I:
263 info.si_code = ILL_ILLOPC; 302 info.si_code = ILL_ILLOPC;
264 sig = SIGILL; 303 sig = SIGILL;
265 printk(KERN_EMERG EXC_0x21); 304 printk(KERN_NOTICE EXC_0x21);
266 CHK_DEBUGGER_TRAP(); 305 CHK_DEBUGGER_TRAP();
267 break; 306 break;
268 /* 0x22 - Illegal Instruction Combination, handled here */ 307 /* 0x22 - Illegal Instruction Combination, handled here */
269 case VEC_ILGAL_I: 308 case VEC_ILGAL_I:
270 info.si_code = ILL_ILLPARAOP; 309 info.si_code = ILL_ILLPARAOP;
271 sig = SIGILL; 310 sig = SIGILL;
272 printk(KERN_EMERG EXC_0x22); 311 printk(KERN_NOTICE EXC_0x22);
273 CHK_DEBUGGER_TRAP(); 312 CHK_DEBUGGER_TRAP();
274 break; 313 break;
275 /* 0x23 - Data CPLB Protection Violation, 314 /* 0x23 - Data CPLB Protection Violation,
@@ -277,21 +316,21 @@ asmlinkage void trap_c(struct pt_regs *fp)
277 case VEC_CPLB_VL: 316 case VEC_CPLB_VL:
278 info.si_code = ILL_CPLB_VI; 317 info.si_code = ILL_CPLB_VI;
279 sig = SIGILL; 318 sig = SIGILL;
280 printk(KERN_EMERG EXC_0x23); 319 printk(KERN_NOTICE EXC_0x23);
281 CHK_DEBUGGER_TRAP(); 320 CHK_DEBUGGER_TRAP();
282 break; 321 break;
283 /* 0x24 - Data access misaligned, handled here */ 322 /* 0x24 - Data access misaligned, handled here */
284 case VEC_MISALI_D: 323 case VEC_MISALI_D:
285 info.si_code = BUS_ADRALN; 324 info.si_code = BUS_ADRALN;
286 sig = SIGBUS; 325 sig = SIGBUS;
287 printk(KERN_EMERG EXC_0x24); 326 printk(KERN_NOTICE EXC_0x24);
288 CHK_DEBUGGER_TRAP(); 327 CHK_DEBUGGER_TRAP();
289 break; 328 break;
290 /* 0x25 - Unrecoverable Event, handled here */ 329 /* 0x25 - Unrecoverable Event, handled here */
291 case VEC_UNCOV: 330 case VEC_UNCOV:
292 info.si_code = ILL_ILLEXCPT; 331 info.si_code = ILL_ILLEXCPT;
293 sig = SIGILL; 332 sig = SIGILL;
294 printk(KERN_EMERG EXC_0x25); 333 printk(KERN_NOTICE EXC_0x25);
295 CHK_DEBUGGER_TRAP(); 334 CHK_DEBUGGER_TRAP();
296 break; 335 break;
297 /* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr, 336 /* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr,
@@ -299,7 +338,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
299 case VEC_CPLB_M: 338 case VEC_CPLB_M:
300 info.si_code = BUS_ADRALN; 339 info.si_code = BUS_ADRALN;
301 sig = SIGBUS; 340 sig = SIGBUS;
302 printk(KERN_EMERG EXC_0x26); 341 printk(KERN_NOTICE EXC_0x26);
303 CHK_DEBUGGER_TRAP(); 342 CHK_DEBUGGER_TRAP();
304 break; 343 break;
305 /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ 344 /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */
@@ -307,11 +346,10 @@ asmlinkage void trap_c(struct pt_regs *fp)
307 info.si_code = ILL_CPLB_MULHIT; 346 info.si_code = ILL_CPLB_MULHIT;
308#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO 347#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO
309 sig = SIGSEGV; 348 sig = SIGSEGV;
310 printk(KERN_EMERG "\n" 349 printk(KERN_NOTICE "NULL pointer access (probably)\n");
311 KERN_EMERG "NULL pointer access (probably)\n");
312#else 350#else
313 sig = SIGILL; 351 sig = SIGILL;
314 printk(KERN_EMERG EXC_0x27); 352 printk(KERN_NOTICE EXC_0x27);
315#endif 353#endif
316 CHK_DEBUGGER_TRAP(); 354 CHK_DEBUGGER_TRAP();
317 break; 355 break;
@@ -331,7 +369,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
331 case VEC_ISTRU_VL: /* ADSP-BF535 only (MH) */ 369 case VEC_ISTRU_VL: /* ADSP-BF535 only (MH) */
332 info.si_code = BUS_OPFETCH; 370 info.si_code = BUS_OPFETCH;
333 sig = SIGBUS; 371 sig = SIGBUS;
334 printk(KERN_EMERG "BF535: VEC_ISTRU_VL\n"); 372 printk(KERN_NOTICE "BF535: VEC_ISTRU_VL\n");
335 CHK_DEBUGGER_TRAP(); 373 CHK_DEBUGGER_TRAP();
336 break; 374 break;
337#else 375#else
@@ -341,7 +379,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
341 case VEC_MISALI_I: 379 case VEC_MISALI_I:
342 info.si_code = BUS_ADRALN; 380 info.si_code = BUS_ADRALN;
343 sig = SIGBUS; 381 sig = SIGBUS;
344 printk(KERN_EMERG EXC_0x2A); 382 printk(KERN_NOTICE EXC_0x2A);
345 CHK_DEBUGGER_TRAP(); 383 CHK_DEBUGGER_TRAP();
346 break; 384 break;
347 /* 0x2B - Instruction CPLB protection Violation, 385 /* 0x2B - Instruction CPLB protection Violation,
@@ -349,14 +387,14 @@ asmlinkage void trap_c(struct pt_regs *fp)
349 case VEC_CPLB_I_VL: 387 case VEC_CPLB_I_VL:
350 info.si_code = ILL_CPLB_VI; 388 info.si_code = ILL_CPLB_VI;
351 sig = SIGILL; 389 sig = SIGILL;
352 printk(KERN_EMERG EXC_0x2B); 390 printk(KERN_NOTICE EXC_0x2B);
353 CHK_DEBUGGER_TRAP(); 391 CHK_DEBUGGER_TRAP();
354 break; 392 break;
355 /* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */ 393 /* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */
356 case VEC_CPLB_I_M: 394 case VEC_CPLB_I_M:
357 info.si_code = ILL_CPLB_MISS; 395 info.si_code = ILL_CPLB_MISS;
358 sig = SIGBUS; 396 sig = SIGBUS;
359 printk(KERN_EMERG EXC_0x2C); 397 printk(KERN_NOTICE EXC_0x2C);
360 CHK_DEBUGGER_TRAP(); 398 CHK_DEBUGGER_TRAP();
361 break; 399 break;
362 /* 0x2D - Instruction CPLB Multiple Hits, handled here */ 400 /* 0x2D - Instruction CPLB Multiple Hits, handled here */
@@ -364,10 +402,10 @@ asmlinkage void trap_c(struct pt_regs *fp)
364 info.si_code = ILL_CPLB_MULHIT; 402 info.si_code = ILL_CPLB_MULHIT;
365#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO 403#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO
366 sig = SIGSEGV; 404 sig = SIGSEGV;
367 printk(KERN_EMERG "\n\nJump to address 0 - 0x0fff\n"); 405 printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n");
368#else 406#else
369 sig = SIGILL; 407 sig = SIGILL;
370 printk(KERN_EMERG EXC_0x2D); 408 printk(KERN_NOTICE EXC_0x2D);
371#endif 409#endif
372 CHK_DEBUGGER_TRAP(); 410 CHK_DEBUGGER_TRAP();
373 break; 411 break;
@@ -375,7 +413,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
375 case VEC_ILL_RES: 413 case VEC_ILL_RES:
376 info.si_code = ILL_PRVOPC; 414 info.si_code = ILL_PRVOPC;
377 sig = SIGILL; 415 sig = SIGILL;
378 printk(KERN_EMERG EXC_0x2E); 416 printk(KERN_NOTICE EXC_0x2E);
379 CHK_DEBUGGER_TRAP(); 417 CHK_DEBUGGER_TRAP();
380 break; 418 break;
381 /* 0x2F - Reserved, Caught by default */ 419 /* 0x2F - Reserved, Caught by default */
@@ -404,38 +442,40 @@ asmlinkage void trap_c(struct pt_regs *fp)
404 break; 442 break;
405 } 443 }
406 444
407 if (sig != 0 && sig != SIGTRAP) { 445 BUG_ON(sig == 0);
446
447 if (sig != SIGTRAP) {
408 unsigned long stack; 448 unsigned long stack;
409 dump_bfin_regs(fp, (void *)fp->retx); 449 dump_bfin_regs(fp, (void *)fp->retx);
410 dump_bfin_trace_buffer(); 450
451 /* Print out the trace buffer if it makes sense */
452#ifndef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE
453 if (trapnr == VEC_CPLB_I_M || trapnr == VEC_CPLB_M)
454 printk(KERN_NOTICE "No trace since you do not have "
455 "CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE enabled\n"
456 KERN_NOTICE "\n");
457 else
458#endif
459 dump_bfin_trace_buffer();
411 show_stack(current, &stack); 460 show_stack(current, &stack);
412 if (current->mm == NULL) 461 if (oops_in_progress) {
462#ifndef CONFIG_ACCESS_CHECK
463 printk(KERN_EMERG "Hey - dork - please turn on "
464 "CONFIG_ACCESS_CHECK\n");
465#endif
413 panic("Kernel exception"); 466 panic("Kernel exception");
467 }
468
469 /* Ensure that bad return addresses don't end up in an infinite
470 * loop, due to speculative loads/reads
471 */
472 fp->pc = SAFE_USER_INSTRUCTION;
414 } 473 }
415 info.si_signo = sig; 474 info.si_signo = sig;
416 info.si_errno = 0; 475 info.si_errno = 0;
417 info.si_addr = (void *)fp->pc; 476 info.si_addr = (void *)fp->pc;
418 force_sig_info(sig, &info, current); 477 force_sig_info(sig, &info, current);
419 478
420 /* if the address that we are about to return to is not valid, set it
421 * to a valid address, if we have a current application or panic
422 */
423 if (!(fp->pc <= physical_mem_end
424#if L1_CODE_LENGTH != 0
425 || (fp->pc >= L1_CODE_START &&
426 fp->pc <= (L1_CODE_START + L1_CODE_LENGTH))
427#endif
428 )) {
429 if (current->mm) {
430 fp->pc = current->mm->start_code;
431 } else {
432 printk(KERN_EMERG
433 "I can't return to memory that doesn't exist"
434 " - bad things happen\n");
435 panic("Help - I've fallen and can't get up\n");
436 }
437 }
438
439 trace_buffer_restore(j); 479 trace_buffer_restore(j);
440 return; 480 return;
441} 481}
@@ -448,21 +488,21 @@ void dump_bfin_trace_buffer(void)
448{ 488{
449#ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON 489#ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
450 int tflags, i = 0; 490 int tflags, i = 0;
491 char buf[150];
451#ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND 492#ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND
452 int j, index; 493 int j, index;
453#endif 494#endif
454 495
455 trace_buffer_save(tflags); 496 trace_buffer_save(tflags);
456 497
457 printk(KERN_EMERG "Hardware Trace:\n"); 498 printk(KERN_NOTICE "Hardware Trace:\n");
458 499
459 if (likely(bfin_read_TBUFSTAT() & TBUFCNT)) { 500 if (likely(bfin_read_TBUFSTAT() & TBUFCNT)) {
460 for (; bfin_read_TBUFSTAT() & TBUFCNT; i++) { 501 for (; bfin_read_TBUFSTAT() & TBUFCNT; i++) {
461 printk(KERN_EMERG "%4i Target : ", i); 502 decode_address(buf, (unsigned long)bfin_read_TBUF());
462 printk_address((unsigned long)bfin_read_TBUF()); 503 printk(KERN_NOTICE "%4i Target : %s\n", i, buf);
463 printk("\n" KERN_EMERG " Source : "); 504 decode_address(buf, (unsigned long)bfin_read_TBUF());
464 printk_address((unsigned long)bfin_read_TBUF()); 505 printk(KERN_NOTICE " Source : %s\n", buf);
465 printk("\n");
466 } 506 }
467 } 507 }
468 508
@@ -474,17 +514,16 @@ void dump_bfin_trace_buffer(void)
474 514
475 j = (1 << CONFIG_DEBUG_BFIN_HWTRACE_EXPAND_LEN) * 128; 515 j = (1 << CONFIG_DEBUG_BFIN_HWTRACE_EXPAND_LEN) * 128;
476 while (j) { 516 while (j) {
477 printk(KERN_EMERG "%4i Target : ", i); 517 decode_address(buf, software_trace_buff[index]);
478 printk_address(software_trace_buff[index]); 518 printk(KERN_NOTICE "%4i Target : %s\n", i, buf);
479 index -= 1; 519 index -= 1;
480 if (index < 0 ) 520 if (index < 0 )
481 index = EXPAND_LEN; 521 index = EXPAND_LEN;
482 printk("\n" KERN_EMERG " Source : "); 522 decode_address(buf, software_trace_buff[index]);
483 printk_address(software_trace_buff[index]); 523 printk(KERN_NOTICE " Source : %s\n", buf);
484 index -= 1; 524 index -= 1;
485 if (index < 0) 525 if (index < 0)
486 index = EXPAND_LEN; 526 index = EXPAND_LEN;
487 printk("\n");
488 j--; 527 j--;
489 i++; 528 i++;
490 } 529 }
@@ -499,10 +538,7 @@ static void show_trace(struct task_struct *tsk, unsigned long *sp)
499{ 538{
500 unsigned long addr; 539 unsigned long addr;
501 540
502 printk("\nCall Trace:"); 541 printk(KERN_NOTICE "\n" KERN_NOTICE "Call Trace:\n");
503#ifdef CONFIG_KALLSYMS
504 printk("\n");
505#endif
506 542
507 while (!kstack_end(sp)) { 543 while (!kstack_end(sp)) {
508 addr = *sp++; 544 addr = *sp++;
@@ -518,7 +554,7 @@ static void show_trace(struct task_struct *tsk, unsigned long *sp)
518 print_ip_sym(addr); 554 print_ip_sym(addr);
519 } 555 }
520 556
521 printk("\n"); 557 printk(KERN_NOTICE "\n");
522} 558}
523 559
524void show_stack(struct task_struct *task, unsigned long *stack) 560void show_stack(struct task_struct *task, unsigned long *stack)
@@ -540,14 +576,15 @@ void show_stack(struct task_struct *task, unsigned long *stack)
540 addr = (unsigned long)stack; 576 addr = (unsigned long)stack;
541 endstack = (unsigned long *)PAGE_ALIGN(addr); 577 endstack = (unsigned long *)PAGE_ALIGN(addr);
542 578
543 printk(KERN_EMERG "Stack from %08lx:", (unsigned long)stack); 579 printk(KERN_NOTICE "Stack from %08lx:", (unsigned long)stack);
544 for (i = 0; i < kstack_depth_to_print; i++) { 580 for (i = 0; i < kstack_depth_to_print; i++) {
545 if (stack + 1 > endstack) 581 if (stack + 1 > endstack)
546 break; 582 break;
547 if (i % 8 == 0) 583 if (i % 8 == 0)
548 printk("\n" KERN_EMERG " "); 584 printk("\n" KERN_NOTICE " ");
549 printk(" %08lx", *stack++); 585 printk(" %08lx", *stack++);
550 } 586 }
587 printk("\n");
551 588
552 show_trace(task, stack); 589 show_trace(task, stack);
553} 590}
@@ -568,33 +605,34 @@ EXPORT_SYMBOL(dump_stack);
568 605
569void dump_bfin_regs(struct pt_regs *fp, void *retaddr) 606void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
570{ 607{
571 if (current->pid) { 608 char buf [150];
572 printk(KERN_EMERG "\n" KERN_EMERG "CURRENT PROCESS:\n" 609
573 KERN_EMERG "\n"); 610 if (!oops_in_progress) {
574 printk(KERN_EMERG "COMM=%s PID=%d\n", 611 if (current->pid && current->mm) {
575 current->comm, current->pid); 612 printk(KERN_NOTICE "\n" KERN_NOTICE "CURRENT PROCESS:\n");
613 printk(KERN_NOTICE "COMM=%s PID=%d\n",
614 current->comm, current->pid);
615
616 printk(KERN_NOTICE "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n"
617 KERN_NOTICE "BSS = 0x%p-0x%p USER-STACK = 0x%p\n"
618 KERN_NOTICE "\n",
619 (void *)current->mm->start_code,
620 (void *)current->mm->end_code,
621 (void *)current->mm->start_data,
622 (void *)current->mm->end_data,
623 (void *)current->mm->end_data,
624 (void *)current->mm->brk,
625 (void *)current->mm->start_stack);
626 } else {
627 printk (KERN_NOTICE "\n" KERN_NOTICE
628 "No Valid pid - Either things are really messed up,"
629 " or you are in the kernel\n");
630 }
576 } else { 631 } else {
577 printk 632 printk(KERN_NOTICE "Kernel or interrupt exception\n");
578 (KERN_EMERG "\n" KERN_EMERG
579 "No Valid pid - Either things are really messed up,"
580 " or you are in the kernel\n");
581 }
582
583 if (current->mm) {
584 printk(KERN_EMERG "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n"
585 KERN_EMERG "BSS = 0x%p-0x%p USER-STACK = 0x%p\n"
586 KERN_EMERG "\n",
587 (void *)current->mm->start_code,
588 (void *)current->mm->end_code,
589 (void *)current->mm->start_data,
590 (void *)current->mm->end_data,
591 (void *)current->mm->end_data,
592 (void *)current->mm->brk,
593 (void *)current->mm->start_stack);
594 } 633 }
595 634
596 printk(KERN_EMERG "return address: [0x%p]; contents of:", retaddr); 635 if (retaddr >= (void *)FIXED_CODE_START && retaddr < (void *)physical_mem_end
597 if (retaddr != 0 && retaddr <= (void *)physical_mem_end
598#if L1_CODE_LENGTH != 0 636#if L1_CODE_LENGTH != 0
599 /* FIXME: Copy the code out of L1 Instruction SRAM through dma 637 /* FIXME: Copy the code out of L1 Instruction SRAM through dma
600 memcpy. */ 638 memcpy. */
@@ -604,18 +642,20 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
604 ) { 642 ) {
605 int i = ((unsigned int)retaddr & 0xFFFFFFF0) - 32; 643 int i = ((unsigned int)retaddr & 0xFFFFFFF0) - 32;
606 unsigned short x = 0; 644 unsigned short x = 0;
645 printk(KERN_NOTICE "return address: [0x%p]; contents of:", retaddr);
607 for (; i < ((unsigned int)retaddr & 0xFFFFFFF0) + 32; i += 2) { 646 for (; i < ((unsigned int)retaddr & 0xFFFFFFF0) + 32; i += 2) {
608 if (!(i & 0xF)) 647 if (!(i & 0xF))
609 printk("\n" KERN_EMERG "0x%08x: ", i); 648 printk("\n" KERN_NOTICE "0x%08x: ", i);
610 649
611 if (get_user(x, (unsigned short *)i)) 650 if (get_user(x, (unsigned short *)i))
612 break; 651 break;
613#ifndef CONFIG_DEBUG_HWERR 652#ifndef CONFIG_DEBUG_HWERR
614 /* If one of the last few instructions was a STI 653 /* If one of the last few instructions was a STI
615 * it is likely that the error occured awhile ago 654 * it is likely that the error occured awhile ago
616 * and we just noticed 655 * and we just noticed. This only happens in kernel
656 * context, which should mean an oops is happening
617 */ 657 */
618 if (x >= 0x0040 && x <= 0x0047 && i <= 0) 658 if (oops_in_progress && x >= 0x0040 && x <= 0x0047 && i <= 0)
619 panic("\n\nWARNING : You should reconfigure" 659 panic("\n\nWARNING : You should reconfigure"
620 " the kernel to turn on\n" 660 " the kernel to turn on\n"
621 " 'Hardware error interrupt" 661 " 'Hardware error interrupt"
@@ -628,56 +668,60 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
628 else 668 else
629 printk(" %04x ", x); 669 printk(" %04x ", x);
630 } 670 }
631 printk("\n" KERN_EMERG "\n"); 671 printk("\n");
632 } else 672 } else
633 printk(KERN_EMERG 673 printk("\n" KERN_NOTICE
634 "Cannot look at the [PC] for it is" 674 "Cannot look at the [PC] for it is"
635 "in unreadable L1 SRAM - sorry\n"); 675 " in unreadable memory - sorry\n");
676
677 printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\n");
678 printk(KERN_NOTICE " SEQSTAT: %08lx IPEND: %04lx SYSCFG: %04lx\n",
679 (long)fp->seqstat, fp->ipend, fp->syscfg);
636 680
681 decode_address(buf, fp->rete);
682 printk(KERN_NOTICE " RETE: %s\n", buf);
683 decode_address(buf, fp->retn);
684 printk(KERN_NOTICE " RETN: %s\n", buf);
685 decode_address(buf, fp->retx);
686 printk(KERN_NOTICE " RETX: %s\n", buf);
687 decode_address(buf, fp->rets);
688 printk(KERN_NOTICE " RETS: %s\n", buf);
637 689
638 printk(KERN_EMERG 690 if ((long)fp->seqstat & SEQSTAT_EXCAUSE) {
639 "RETE: %08lx RETN: %08lx RETX: %08lx RETS: %08lx\n", 691 decode_address(buf, bfin_read_DCPLB_FAULT_ADDR());
640 fp->rete, fp->retn, fp->retx, fp->rets); 692 printk(KERN_NOTICE "DCPLB_FAULT_ADDR: %s\n", buf);
641 printk(KERN_EMERG "IPEND: %04lx SYSCFG: %04lx\n", 693 decode_address(buf, bfin_read_ICPLB_FAULT_ADDR());
642 fp->ipend, fp->syscfg); 694 printk(KERN_NOTICE "ICPLB_FAULT_ADDR: %s\n", buf);
643 printk(KERN_EMERG "SEQSTAT: %08lx SP: %08lx\n", 695 }
644 (long)fp->seqstat, (long)fp); 696
645 printk(KERN_EMERG "R0: %08lx R1: %08lx R2: %08lx R3: %08lx\n", 697 printk(KERN_NOTICE "\n" KERN_NOTICE "PROCESSOR STATE:\n");
698 printk(KERN_NOTICE " R0 : %08lx R1 : %08lx R2 : %08lx R3 : %08lx\n",
646 fp->r0, fp->r1, fp->r2, fp->r3); 699 fp->r0, fp->r1, fp->r2, fp->r3);
647 printk(KERN_EMERG "R4: %08lx R5: %08lx R6: %08lx R7: %08lx\n", 700 printk(KERN_NOTICE " R4 : %08lx R5 : %08lx R6 : %08lx R7 : %08lx\n",
648 fp->r4, fp->r5, fp->r6, fp->r7); 701 fp->r4, fp->r5, fp->r6, fp->r7);
649 printk(KERN_EMERG "P0: %08lx P1: %08lx P2: %08lx P3: %08lx\n", 702 printk(KERN_NOTICE " P0 : %08lx P1 : %08lx P2 : %08lx P3 : %08lx\n",
650 fp->p0, fp->p1, fp->p2, fp->p3); 703 fp->p0, fp->p1, fp->p2, fp->p3);
651 printk(KERN_EMERG 704 printk(KERN_NOTICE " P4 : %08lx P5 : %08lx FP : %08lx SP : %08lx\n",
652 "P4: %08lx P5: %08lx FP: %08lx\n", 705 fp->p4, fp->p5, fp->fp, (long)fp);
653 fp->p4, fp->p5, fp->fp); 706 printk(KERN_NOTICE " LB0: %08lx LT0: %08lx LC0: %08lx\n",
654 printk(KERN_EMERG
655 "A0.w: %08lx A0.x: %08lx A1.w: %08lx A1.x: %08lx\n",
656 fp->a0w, fp->a0x, fp->a1w, fp->a1x);
657
658 printk(KERN_EMERG "LB0: %08lx LT0: %08lx LC0: %08lx\n",
659 fp->lb0, fp->lt0, fp->lc0); 707 fp->lb0, fp->lt0, fp->lc0);
660 printk(KERN_EMERG "LB1: %08lx LT1: %08lx LC1: %08lx\n", 708 printk(KERN_NOTICE " LB1: %08lx LT1: %08lx LC1: %08lx\n",
661 fp->lb1, fp->lt1, fp->lc1); 709 fp->lb1, fp->lt1, fp->lc1);
662 printk(KERN_EMERG "B0: %08lx L0: %08lx M0: %08lx I0: %08lx\n", 710 printk(KERN_NOTICE " B0 : %08lx L0 : %08lx M0 : %08lx I0 : %08lx\n",
663 fp->b0, fp->l0, fp->m0, fp->i0); 711 fp->b0, fp->l0, fp->m0, fp->i0);
664 printk(KERN_EMERG "B1: %08lx L1: %08lx M1: %08lx I1: %08lx\n", 712 printk(KERN_NOTICE " B1 : %08lx L1 : %08lx M1 : %08lx I1 : %08lx\n",
665 fp->b1, fp->l1, fp->m1, fp->i1); 713 fp->b1, fp->l1, fp->m1, fp->i1);
666 printk(KERN_EMERG "B2: %08lx L2: %08lx M2: %08lx I2: %08lx\n", 714 printk(KERN_NOTICE " B2 : %08lx L2 : %08lx M2 : %08lx I2 : %08lx\n",
667 fp->b2, fp->l2, fp->m2, fp->i2); 715 fp->b2, fp->l2, fp->m2, fp->i2);
668 printk(KERN_EMERG "B3: %08lx L3: %08lx M3: %08lx I3: %08lx\n", 716 printk(KERN_NOTICE " B3 : %08lx L3 : %08lx M3 : %08lx I3 : %08lx\n",
669 fp->b3, fp->l3, fp->m3, fp->i3); 717 fp->b3, fp->l3, fp->m3, fp->i3);
718 printk(KERN_NOTICE "A0.w: %08lx A0.x: %08lx A1.w: %08lx A1.x: %08lx\n",
719 fp->a0w, fp->a0x, fp->a1w, fp->a1x);
670 720
671 printk(KERN_EMERG "\n" KERN_EMERG "USP: %08lx ASTAT: %08lx\n", 721 printk(KERN_NOTICE "USP : %08lx ASTAT: %08lx\n",
672 rdusp(), fp->astat); 722 rdusp(), fp->astat);
673 if ((long)fp->seqstat & SEQSTAT_EXCAUSE) {
674 printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n",
675 (void *)bfin_read_DCPLB_FAULT_ADDR());
676 printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n",
677 (void *)bfin_read_ICPLB_FAULT_ADDR());
678 }
679 723
680 printk("\n\n"); 724 printk(KERN_NOTICE "\n");
681} 725}
682 726
683#ifdef CONFIG_SYS_BFIN_SPINLOCK_L1 727#ifdef CONFIG_SYS_BFIN_SPINLOCK_L1
@@ -752,6 +796,8 @@ void panic_cplb_error(int cplb_panic, struct pt_regs *fp)
752 break; 796 break;
753 } 797 }
754 798
799 oops_in_progress = 1;
800
755 printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void *)bfin_read_DCPLB_FAULT_ADDR()); 801 printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void *)bfin_read_DCPLB_FAULT_ADDR());
756 printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void *)bfin_read_ICPLB_FAULT_ADDR()); 802 printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void *)bfin_read_ICPLB_FAULT_ADDR());
757 dump_bfin_regs(fp, (void *)fp->retx); 803 dump_bfin_regs(fp, (void *)fp->retx);
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index eec43674a465..9b75bc83c71f 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -172,9 +172,14 @@ SECTIONS
172 __ebss_b_l1 = .; 172 __ebss_b_l1 = .;
173 } 173 }
174 174
175 ___init_end = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1); 175 /* Force trailing alignment of our init section so that when we
176 176 * free our init memory, we don't leave behind a partial page.
177 .bss LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1) : 177 */
178 . = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1);
179 . = ALIGN(PAGE_SIZE);
180 ___init_end = .;
181
182 .bss :
178 { 183 {
179 . = ALIGN(4); 184 . = ALIGN(4);
180 ___bss_start = .; 185 ___bss_start = .;
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c
index 3e884f3a8182..bf1bedcc8868 100644
--- a/arch/blackfin/mach-bf527/boards/ezkit.c
+++ b/arch/blackfin/mach-bf527/boards/ezkit.c
@@ -41,9 +41,11 @@
41#include <linux/irq.h> 41#include <linux/irq.h>
42#include <linux/interrupt.h> 42#include <linux/interrupt.h>
43#include <linux/usb_sl811.h> 43#include <linux/usb_sl811.h>
44#include <asm/cplb.h>
44#include <asm/dma.h> 45#include <asm/dma.h>
45#include <asm/bfin5xx_spi.h> 46#include <asm/bfin5xx_spi.h>
46#include <asm/reboot.h> 47#include <asm/reboot.h>
48#include <asm/nand.h>
47#include <linux/spi/ad7877.h> 49#include <linux/spi/ad7877.h>
48 50
49/* 51/*
@@ -102,6 +104,53 @@ void __exit bfin_isp1761_exit(void)
102arch_initcall(bfin_isp1761_init); 104arch_initcall(bfin_isp1761_init);
103#endif 105#endif
104 106
107#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE)
108static struct mtd_partition partition_info[] = {
109 {
110 .name = "Linux Kernel",
111 .offset = 0,
112 .size = 4 * SIZE_1M,
113 },
114 {
115 .name = "File System",
116 .offset = 4 * SIZE_1M,
117 .size = (256 - 4) * SIZE_1M,
118 },
119};
120
121static struct bf5xx_nand_platform bf5xx_nand_platform = {
122 .page_size = NFC_PG_SIZE_256,
123 .data_width = NFC_NWIDTH_8,
124 .partitions = partition_info,
125 .nr_partitions = ARRAY_SIZE(partition_info),
126 .rd_dly = 3,
127 .wr_dly = 3,
128};
129
130static struct resource bf5xx_nand_resources[] = {
131 {
132 .start = NFC_CTL,
133 .end = NFC_DATA_RD + 2,
134 .flags = IORESOURCE_MEM,
135 },
136 {
137 .start = CH_NFC,
138 .end = CH_NFC,
139 .flags = IORESOURCE_IRQ,
140 },
141};
142
143static struct platform_device bf5xx_nand_device = {
144 .name = "bf5xx-nand",
145 .id = 0,
146 .num_resources = ARRAY_SIZE(bf5xx_nand_resources),
147 .resource = bf5xx_nand_resources,
148 .dev = {
149 .platform_data = &bf5xx_nand_platform,
150 },
151};
152#endif
153
105#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) 154#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
106static struct resource bfin_pcmcia_cf_resources[] = { 155static struct resource bfin_pcmcia_cf_resources[] = {
107 { 156 {
@@ -650,6 +699,10 @@ static struct platform_device bfin_pata_device = {
650#endif 699#endif
651 700
652static struct platform_device *stamp_devices[] __initdata = { 701static struct platform_device *stamp_devices[] __initdata = {
702#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE)
703 &bf5xx_nand_device,
704#endif
705
653#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) 706#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
654 &bfin_pcmcia_cf_device, 707 &bfin_pcmcia_cf_device,
655#endif 708#endif
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c
new file mode 100644
index 000000000000..b941550f9568
--- /dev/null
+++ b/arch/blackfin/mach-bf533/boards/H8606.c
@@ -0,0 +1,345 @@
1/*
2 * File: arch/blackfin/mach-bf533/H8606.c
3 * Based on: arch/blackfin/mach-bf533/stamp.c
4 * Author: Javier Herrero <jherrero@hvsistemas.es>
5 *
6 * Created: 2007
7 * Description: Board Info File for the HV Sistemas H8606 board
8 *
9 * Modified:
10 * Copyright 2005 National ICT Australia (NICTA)
11 * Copyright 2004-2006 Analog Devices Inc
12 * Copyright 2007 HV Sistemas S.L.
13 *
14 * Bugs: Enter bugs at http://blackfin.uclinux.org/
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
20 *
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public License
27 * along with this program; if not, see the file COPYING, or write
28 * to the Free Software Foundation, Inc.,
29 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
30 */
31
32#include <linux/device.h>
33#include <linux/platform_device.h>
34#include <linux/mtd/mtd.h>
35#include <linux/mtd/partitions.h>
36#include <linux/spi/spi.h>
37#include <linux/spi/flash.h>
38#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
39#include <linux/usb_isp1362.h>
40#endif
41#include <linux/pata_platform.h>
42#include <linux/irq.h>
43#include <asm/dma.h>
44#include <asm/bfin5xx_spi.h>
45#include <asm/reboot.h>
46
47/*
48 * Name the Board for the /proc/cpuinfo
49 */
50const char bfin_board_name[] = "HV Sistemas H8606";
51
52#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_BFIN_MODULE)
53static struct platform_device rtc_device = {
54 .name = "rtc-bfin",
55 .id = -1,
56};
57#endif
58
59/*
60* Driver needs to know address, irq and flag pin.
61 */
62 #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
63static struct resource dm9000_resources[] = {
64 [0] = {
65 .start = 0x20300000,
66 .end = 0x20300000 + 8,
67 .flags = IORESOURCE_MEM,
68 },
69 [1] = {
70 .start = IRQ_PF10,
71 .end = IRQ_PF10,
72 .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE),
73 },
74};
75
76static struct platform_device dm9000_device = {
77 .id = 0,
78 .name = "dm9000",
79 .resource = dm9000_resources,
80 .num_resources = ARRAY_SIZE(dm9000_resources),
81};
82#endif
83
84#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
85static struct resource smc91x_resources[] = {
86 {
87 .name = "smc91x-regs",
88 .start = 0x20300300,
89 .end = 0x20300300 + 16,
90 .flags = IORESOURCE_MEM,
91 }, {
92 .start = IRQ_PROG_INTB,
93 .end = IRQ_PROG_INTB,
94 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
95 }, {
96 /*
97 * denotes the flag pin and is used directly if
98 * CONFIG_IRQCHIP_DEMUX_GPIO is defined.
99 */
100 .start = IRQ_PF7,
101 .end = IRQ_PF7,
102 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
103 },
104};
105
106static struct platform_device smc91x_device = {
107 .name = "smc91x",
108 .id = 0,
109 .num_resources = ARRAY_SIZE(smc91x_resources),
110 .resource = smc91x_resources,
111};
112#endif
113
114#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
115static struct resource net2272_bfin_resources[] = {
116 {
117 .start = 0x20300000,
118 .end = 0x20300000 + 0x100,
119 .flags = IORESOURCE_MEM,
120 }, {
121 .start = IRQ_PF10,
122 .end = IRQ_PF10,
123 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
124 },
125};
126
127static struct platform_device net2272_bfin_device = {
128 .name = "net2272",
129 .id = -1,
130 .num_resources = ARRAY_SIZE(net2272_bfin_resources),
131 .resource = net2272_bfin_resources,
132};
133#endif
134
135#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
136/* all SPI peripherals info goes here */
137
138#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
139static struct mtd_partition bfin_spi_flash_partitions[] = {
140 {
141 .name = "bootloader",
142 .size = 0x00060000,
143 .offset = 0,
144 .mask_flags = MTD_CAP_ROM
145 }, {
146 .name = "kernel",
147 .size = 0x100000,
148 .offset = 0x60000
149 }, {
150 .name = "file system",
151 .size = 0x6a0000,
152 .offset = 0x00160000,
153 }
154};
155
156static struct flash_platform_data bfin_spi_flash_data = {
157 .name = "m25p80",
158 .parts = bfin_spi_flash_partitions,
159 .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
160 .type = "m25p64",
161};
162
163/* SPI flash chip (m25p64) */
164static struct bfin5xx_spi_chip spi_flash_chip_info = {
165 .enable_dma = 0, /* use dma transfer with this chip*/
166 .bits_per_word = 8,
167};
168#endif
169
170#if defined(CONFIG_SPI_ADC_BF533) || defined(CONFIG_SPI_ADC_BF533_MODULE)
171/* SPI ADC chip */
172static struct bfin5xx_spi_chip spi_adc_chip_info = {
173 .ctl_reg = 0x1000,
174 .enable_dma = 1, /* use dma transfer with this chip*/
175 .bits_per_word = 16,
176};
177#endif
178
179#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
180static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
181 .ctl_reg = 0x1000,
182 .enable_dma = 0,
183 .bits_per_word = 16,
184};
185#endif
186
187#if defined(CONFIG_PBX)
188static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
189 .ctl_reg = 0x1c04,
190 .enable_dma = 0,
191 .bits_per_word = 8,
192 .cs_change_per_word = 1,
193};
194#endif
195
196/* Notice: for blackfin, the speed_hz is the value of register
197 * SPI_BAUD, not the real baudrate */
198static struct spi_board_info bfin_spi_board_info[] __initdata = {
199#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
200 {
201 /* the modalias must be the same as spi device driver name */
202 .modalias = "m25p80", /* Name of spi_driver for this device */
203 /* this value is the baudrate divisor */
204 .max_speed_hz = 50000000, /* actual baudrate is SCLK/(2xspeed_hz) */
205 .bus_num = 0, /* Framework bus number */
206 .chip_select = 2, /* Framework chip select. On STAMP537 it is SPISSEL2*/
207 .platform_data = &bfin_spi_flash_data,
208 .controller_data = &spi_flash_chip_info,
209 .mode = SPI_MODE_3,
210 },
211#endif
212
213#if defined(CONFIG_SPI_ADC_BF533) || defined(CONFIG_SPI_ADC_BF533_MODULE)
214 {
215 .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
216 .max_speed_hz = 4, /* actual baudrate is SCLK/(2xspeed_hz) */
217 .bus_num = 1, /* Framework bus number */
218 .chip_select = 1, /* Framework chip select. */
219 .platform_data = NULL, /* No spi_driver specific config */
220 .controller_data = &spi_adc_chip_info,
221 },
222#endif
223
224#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
225 {
226 .modalias = "ad1836-spi",
227 .max_speed_hz = 16,
228 .bus_num = 1,
229 .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
230 .controller_data = &ad1836_spi_chip_info,
231 },
232#endif
233
234#if defined(CONFIG_PBX)
235 {
236 .modalias = "fxs-spi",
237 .max_speed_hz = 4,
238 .bus_num = 1,
239 .chip_select = 3,
240 .controller_data = &spi_si3xxx_chip_info,
241 },
242
243 {
244 .modalias = "fxo-spi",
245 .max_speed_hz = 4,
246 .bus_num = 1,
247 .chip_select = 2,
248 .controller_data = &spi_si3xxx_chip_info,
249 },
250#endif
251};
252
253/* SPI (0) */
254static struct resource bfin_spi0_resource[] = {
255 [0] = {
256 .start = SPI0_REGBASE,
257 .end = SPI0_REGBASE + 0xFF,
258 .flags = IORESOURCE_MEM,
259 },
260 [1] = {
261 .start = CH_SPI,
262 .end = CH_SPI,
263 .flags = IORESOURCE_IRQ,
264 }
265};
266
267
268/* SPI controller data */
269static struct bfin5xx_spi_master bfin_spi0_info = {
270 .num_chipselect = 8,
271 .enable_dma = 1, /* master has the ability to do dma transfer */
272};
273
274static struct platform_device bfin_spi0_device = {
275 .name = "bfin-spi",
276 .id = 0, /* Bus number */
277 .num_resources = ARRAY_SIZE(bfin_spi0_resource),
278 .resource = bfin_spi0_resource,
279 .dev = {
280 .platform_data = &bfin_spi0_info, /* Passed to driver */
281 },
282};
283#endif /* spi master and devices */
284
285#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
286static struct platform_device bfin_fb_device = {
287 .name = "bf537-fb",
288};
289#endif
290
291#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
292static struct resource bfin_uart_resources[] = {
293 {
294 .start = 0xFFC00400,
295 .end = 0xFFC004FF,
296 .flags = IORESOURCE_MEM,
297 },
298};
299
300static struct platform_device bfin_uart_device = {
301 .name = "bfin-uart",
302 .id = 1,
303 .num_resources = ARRAY_SIZE(bfin_uart_resources),
304 .resource = bfin_uart_resources,
305};
306#endif
307
308static struct platform_device *stamp_devices[] __initdata = {
309#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
310 &rtc_device,
311#endif
312
313#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
314 &dm9000_device,
315#endif
316
317#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
318 &smc91x_device,
319#endif
320
321#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
322 &net2272_bfin_device,
323#endif
324
325#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
326 &bfin_spi0_device,
327#endif
328
329#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
330 &bfin_uart_device,
331#endif
332};
333
334static int __init H8606_init(void)
335{
336 printk(KERN_INFO "HV Sistemas H8606 board support by http://www.hvsistemas.com\n");
337 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__);
338 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
339#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
340 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
341#endif
342 return 0;
343}
344
345arch_initcall(H8606_init); \ No newline at end of file
diff --git a/arch/blackfin/mach-bf533/boards/Makefile b/arch/blackfin/mach-bf533/boards/Makefile
index 12a631ab389d..2452b456ccbd 100644
--- a/arch/blackfin/mach-bf533/boards/Makefile
+++ b/arch/blackfin/mach-bf533/boards/Makefile
@@ -6,3 +6,4 @@ obj-$(CONFIG_GENERIC_BOARD) += generic_board.o
6obj-$(CONFIG_BFIN533_STAMP) += stamp.o 6obj-$(CONFIG_BFIN533_STAMP) += stamp.o
7obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o 7obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o
8obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o 8obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o
9obj-$(CONFIG_H8606_HVSISTEMAS) += H8606.o
diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c
index 1c5a86adfab7..a863522a4467 100644
--- a/arch/blackfin/mach-bf533/boards/cm_bf533.c
+++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c
@@ -46,7 +46,7 @@ const char bfin_board_name[] = "Bluetechnix CM BF533";
46 46
47#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 47#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
48/* all SPI peripherals info goes here */ 48/* all SPI peripherals info goes here */
49 49#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
50static struct mtd_partition bfin_spi_flash_partitions[] = { 50static struct mtd_partition bfin_spi_flash_partitions[] = {
51 { 51 {
52 .name = "bootloader", 52 .name = "bootloader",
@@ -76,12 +76,15 @@ static struct bfin5xx_spi_chip spi_flash_chip_info = {
76 .enable_dma = 0, /* use dma transfer with this chip*/ 76 .enable_dma = 0, /* use dma transfer with this chip*/
77 .bits_per_word = 8, 77 .bits_per_word = 8,
78}; 78};
79#endif
79 80
80/* SPI ADC chip */ 81/* SPI ADC chip */
82#if defined(CONFIG_SPI_ADC_BF533) || defined(CONFIG_SPI_ADC_BF533_MODULE)
81static struct bfin5xx_spi_chip spi_adc_chip_info = { 83static struct bfin5xx_spi_chip spi_adc_chip_info = {
82 .enable_dma = 1, /* use dma transfer with this chip*/ 84 .enable_dma = 1, /* use dma transfer with this chip*/
83 .bits_per_word = 16, 85 .bits_per_word = 16,
84}; 86};
87#endif
85 88
86#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 89#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
87static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 90static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
@@ -90,7 +93,15 @@ static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
90}; 93};
91#endif 94#endif
92 95
96#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
97static struct bfin5xx_spi_chip spi_mmc_chip_info = {
98 .enable_dma = 1,
99 .bits_per_word = 8,
100};
101#endif
102
93static struct spi_board_info bfin_spi_board_info[] __initdata = { 103static struct spi_board_info bfin_spi_board_info[] __initdata = {
104#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
94 { 105 {
95 /* the modalias must be the same as spi device driver name */ 106 /* the modalias must be the same as spi device driver name */
96 .modalias = "m25p80", /* Name of spi_driver for this device */ 107 .modalias = "m25p80", /* Name of spi_driver for this device */
@@ -100,7 +111,11 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
100 .platform_data = &bfin_spi_flash_data, 111 .platform_data = &bfin_spi_flash_data,
101 .controller_data = &spi_flash_chip_info, 112 .controller_data = &spi_flash_chip_info,
102 .mode = SPI_MODE_3, 113 .mode = SPI_MODE_3,
103 }, { 114 },
115#endif
116
117#if defined(CONFIG_SPI_ADC_BF533) || defined(CONFIG_SPI_ADC_BF533_MODULE)
118 {
104 .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ 119 .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
105 .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ 120 .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
106 .bus_num = 0, /* Framework bus number */ 121 .bus_num = 0, /* Framework bus number */
@@ -108,6 +123,8 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
108 .platform_data = NULL, /* No spi_driver specific config */ 123 .platform_data = NULL, /* No spi_driver specific config */
109 .controller_data = &spi_adc_chip_info, 124 .controller_data = &spi_adc_chip_info,
110 }, 125 },
126#endif
127
111#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 128#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
112 { 129 {
113 .modalias = "ad1836-spi", 130 .modalias = "ad1836-spi",
@@ -117,6 +134,27 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
117 .controller_data = &ad1836_spi_chip_info, 134 .controller_data = &ad1836_spi_chip_info,
118 }, 135 },
119#endif 136#endif
137
138#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
139 {
140 .modalias = "spi_mmc_dummy",
141 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
142 .bus_num = 0,
143 .chip_select = 0,
144 .platform_data = NULL,
145 .controller_data = &spi_mmc_chip_info,
146 .mode = SPI_MODE_3,
147 },
148 {
149 .modalias = "spi_mmc",
150 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
151 .bus_num = 0,
152 .chip_select = CONFIG_SPI_MMC_CS_CHAN,
153 .platform_data = NULL,
154 .controller_data = &spi_mmc_chip_info,
155 .mode = SPI_MODE_3,
156 },
157#endif
120}; 158};
121 159
122/* SPI (0) */ 160/* SPI (0) */
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c
index f84be4eabfd1..62ffa500420f 100644
--- a/arch/blackfin/mach-bf533/boards/stamp.c
+++ b/arch/blackfin/mach-bf533/boards/stamp.c
@@ -218,7 +218,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
218#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) 218#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
219 { 219 {
220 .modalias = "spi_mmc_dummy", 220 .modalias = "spi_mmc_dummy",
221 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ 221 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
222 .bus_num = 0, 222 .bus_num = 0,
223 .chip_select = 0, 223 .chip_select = 0,
224 .platform_data = NULL, 224 .platform_data = NULL,
@@ -227,7 +227,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
227 }, 227 },
228 { 228 {
229 .modalias = "spi_mmc", 229 .modalias = "spi_mmc",
230 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ 230 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
231 .bus_num = 0, 231 .bus_num = 0,
232 .chip_select = CONFIG_SPI_MMC_CS_CHAN, 232 .chip_select = CONFIG_SPI_MMC_CS_CHAN,
233 .platform_data = NULL, 233 .platform_data = NULL,
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537.c b/arch/blackfin/mach-bf537/boards/cm_bf537.c
index 52e2320307de..2915931045e3 100644
--- a/arch/blackfin/mach-bf537/boards/cm_bf537.c
+++ b/arch/blackfin/mach-bf537/boards/cm_bf537.c
@@ -281,8 +281,8 @@ static struct resource net2272_bfin_resources[] = {
281 .end = 0x20200000 + 0x100, 281 .end = 0x20200000 + 0x100,
282 .flags = IORESOURCE_MEM, 282 .flags = IORESOURCE_MEM,
283 }, { 283 }, {
284 .start = IRQ_PF7, 284 .start = IRQ_PH14,
285 .end = IRQ_PF7, 285 .end = IRQ_PH14,
286 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, 286 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
287 }, 287 },
288}; 288};
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c
index cc41f6c2ef4f..5f7b91fbafe8 100644
--- a/arch/blackfin/mach-bf537/boards/stamp.c
+++ b/arch/blackfin/mach-bf537/boards/stamp.c
@@ -450,7 +450,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
450#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) 450#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
451 { 451 {
452 .modalias = "spi_mmc_dummy", 452 .modalias = "spi_mmc_dummy",
453 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ 453 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
454 .bus_num = 0, 454 .bus_num = 0,
455 .chip_select = 0, 455 .chip_select = 0,
456 .platform_data = NULL, 456 .platform_data = NULL,
@@ -459,7 +459,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
459 }, 459 },
460 { 460 {
461 .modalias = "spi_mmc", 461 .modalias = "spi_mmc",
462 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ 462 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
463 .bus_num = 0, 463 .bus_num = 0,
464 .chip_select = CONFIG_SPI_MMC_CS_CHAN, 464 .chip_select = CONFIG_SPI_MMC_CS_CHAN,
465 .platform_data = NULL, 465 .platform_data = NULL,
@@ -612,7 +612,7 @@ static struct platform_device bfin_sport1_uart_device = {
612 612
613static struct pata_platform_info bfin_pata_platform_data = { 613static struct pata_platform_info bfin_pata_platform_data = {
614 .ioport_shift = 1, 614 .ioport_shift = 1,
615 .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED, 615 .irq_flags = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
616}; 616};
617 617
618static struct resource bfin_pata_resources[] = { 618static struct resource bfin_pata_resources[] = {
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S
index e3ad5802868a..1b13fa470977 100644
--- a/arch/blackfin/mach-common/entry.S
+++ b/arch/blackfin/mach-common/entry.S
@@ -917,7 +917,7 @@ ENTRY(_ex_table)
917 .long _ex_soft_bp /* 0x01 - User Defined - Software breakpoint */ 917 .long _ex_soft_bp /* 0x01 - User Defined - Software breakpoint */
918 .long _ex_replaceable /* 0x02 - User Defined */ 918 .long _ex_replaceable /* 0x02 - User Defined */
919 .long _ex_trap_c /* 0x03 - User Defined - userspace stack overflow */ 919 .long _ex_trap_c /* 0x03 - User Defined - userspace stack overflow */
920 .long _ex_replaceable /* 0x04 - User Defined */ 920 .long _ex_trap_c /* 0x04 - User Defined - dump trace buffer */
921 .long _ex_replaceable /* 0x05 - User Defined */ 921 .long _ex_replaceable /* 0x05 - User Defined */
922 .long _ex_replaceable /* 0x06 - User Defined */ 922 .long _ex_replaceable /* 0x06 - User Defined */
923 .long _ex_replaceable /* 0x07 - User Defined */ 923 .long _ex_replaceable /* 0x07 - User Defined */
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
index e2e9f57abe2e..ff6a8712bd6d 100644
--- a/arch/h8300/Kconfig
+++ b/arch/h8300/Kconfig
@@ -1,6 +1,6 @@
1# 1#
2# For a description of the syntax of this configuration file, 2# For a description of the syntax of this configuration file,
3# see Documentation/kbuild/config-language.txt. 3# see Documentation/kbuild/kconfig-language.txt.
4# 4#
5 5
6mainmenu "uClinux/h8300 (w/o MMU) Kernel Configuration" 6mainmenu "uClinux/h8300 (w/o MMU) Kernel Configuration"
diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig
index 75fd90dc76a3..7f6b2377d13f 100644
--- a/arch/ia64/configs/sn2_defconfig
+++ b/arch/ia64/configs/sn2_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc6 3# Linux kernel version: 2.6.23
4# Tue Sep 18 11:24:01 2007 4# Thu Oct 18 16:03:40 2007
5# 5#
6CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 6CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
7 7
@@ -28,6 +28,8 @@ CONFIG_TASK_IO_ACCOUNTING=y
28CONFIG_LOG_BUF_SHIFT=20 28CONFIG_LOG_BUF_SHIFT=20
29CONFIG_CGROUPS=y 29CONFIG_CGROUPS=y
30CONFIG_CPUSETS=y 30CONFIG_CPUSETS=y
31CONFIG_FAIR_GROUP_SCHED=y
32CONFIG_FAIR_USER_SCHED=y
31CONFIG_SYSFS_DEPRECATED=y 33CONFIG_SYSFS_DEPRECATED=y
32CONFIG_RELAY=y 34CONFIG_RELAY=y
33CONFIG_BLK_DEV_INITRD=y 35CONFIG_BLK_DEV_INITRD=y
@@ -48,7 +50,6 @@ CONFIG_FUTEX=y
48CONFIG_ANON_INODES=y 50CONFIG_ANON_INODES=y
49CONFIG_EPOLL=y 51CONFIG_EPOLL=y
50CONFIG_SIGNALFD=y 52CONFIG_SIGNALFD=y
51CONFIG_TIMERFD=y
52CONFIG_EVENTFD=y 53CONFIG_EVENTFD=y
53CONFIG_SHMEM=y 54CONFIG_SHMEM=y
54CONFIG_VM_EVENT_COUNTERS=y 55CONFIG_VM_EVENT_COUNTERS=y
@@ -69,6 +70,7 @@ CONFIG_STOP_MACHINE=y
69CONFIG_BLOCK=y 70CONFIG_BLOCK=y
70# CONFIG_BLK_DEV_IO_TRACE is not set 71# CONFIG_BLK_DEV_IO_TRACE is not set
71CONFIG_BLK_DEV_BSG=y 72CONFIG_BLK_DEV_BSG=y
73CONFIG_BLOCK_COMPAT=y
72 74
73# 75#
74# IO Schedulers 76# IO Schedulers
@@ -93,6 +95,7 @@ CONFIG_MMU=y
93CONFIG_RWSEM_XCHGADD_ALGORITHM=y 95CONFIG_RWSEM_XCHGADD_ALGORITHM=y
94# CONFIG_ARCH_HAS_ILOG2_U32 is not set 96# CONFIG_ARCH_HAS_ILOG2_U32 is not set
95# CONFIG_ARCH_HAS_ILOG2_U64 is not set 97# CONFIG_ARCH_HAS_ILOG2_U64 is not set
98CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
96CONFIG_GENERIC_FIND_NEXT_BIT=y 99CONFIG_GENERIC_FIND_NEXT_BIT=y
97CONFIG_GENERIC_CALIBRATE_DELAY=y 100CONFIG_GENERIC_CALIBRATE_DELAY=y
98CONFIG_GENERIC_TIME=y 101CONFIG_GENERIC_TIME=y
@@ -113,10 +116,10 @@ CONFIG_IA64_SGI_SN2=y
113CONFIG_MCKINLEY=y 116CONFIG_MCKINLEY=y
114# CONFIG_IA64_PAGE_SIZE_4KB is not set 117# CONFIG_IA64_PAGE_SIZE_4KB is not set
115# CONFIG_IA64_PAGE_SIZE_8KB is not set 118# CONFIG_IA64_PAGE_SIZE_8KB is not set
116CONFIG_IA64_PAGE_SIZE_16KB=y 119# CONFIG_IA64_PAGE_SIZE_16KB is not set
117# CONFIG_IA64_PAGE_SIZE_64KB is not set 120CONFIG_IA64_PAGE_SIZE_64KB=y
118# CONFIG_PGTABLE_3 is not set 121CONFIG_PGTABLE_3=y
119CONFIG_PGTABLE_4=y 122# CONFIG_PGTABLE_4 is not set
120# CONFIG_HZ_100 is not set 123# CONFIG_HZ_100 is not set
121CONFIG_HZ_250=y 124CONFIG_HZ_250=y
122# CONFIG_HZ_300 is not set 125# CONFIG_HZ_300 is not set
@@ -131,6 +134,7 @@ CONFIG_SMP=y
131CONFIG_NR_CPUS=1024 134CONFIG_NR_CPUS=1024
132# CONFIG_HOTPLUG_CPU is not set 135# CONFIG_HOTPLUG_CPU is not set
133CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 136CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
137CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
134CONFIG_SCHED_SMT=y 138CONFIG_SCHED_SMT=y
135CONFIG_PREEMPT_NONE=y 139CONFIG_PREEMPT_NONE=y
136# CONFIG_PREEMPT_VOLUNTARY is not set 140# CONFIG_PREEMPT_VOLUNTARY is not set
@@ -144,6 +148,7 @@ CONFIG_DISCONTIGMEM=y
144CONFIG_FLAT_NODE_MEM_MAP=y 148CONFIG_FLAT_NODE_MEM_MAP=y
145CONFIG_NEED_MULTIPLE_NODES=y 149CONFIG_NEED_MULTIPLE_NODES=y
146# CONFIG_SPARSEMEM_STATIC is not set 150# CONFIG_SPARSEMEM_STATIC is not set
151CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
147CONFIG_SPLIT_PTLOCK_CPUS=4 152CONFIG_SPLIT_PTLOCK_CPUS=4
148CONFIG_MIGRATION=y 153CONFIG_MIGRATION=y
149CONFIG_RESOURCES_64BIT=y 154CONFIG_RESOURCES_64BIT=y
@@ -171,6 +176,7 @@ CONFIG_IA64_PALINFO=y
171CONFIG_IA64_MC_ERR_INJECT=y 176CONFIG_IA64_MC_ERR_INJECT=y
172CONFIG_SGI_SN=y 177CONFIG_SGI_SN=y
173# CONFIG_IA64_ESI is not set 178# CONFIG_IA64_ESI is not set
179# CONFIG_IA64_HP_AML_NFW is not set
174 180
175# 181#
176# SN Devices 182# SN Devices
@@ -220,7 +226,6 @@ CONFIG_PCI_DOMAINS=y
220CONFIG_PCI_SYSCALL=y 226CONFIG_PCI_SYSCALL=y
221CONFIG_PCIEPORTBUS=y 227CONFIG_PCIEPORTBUS=y
222CONFIG_HOTPLUG_PCI_PCIE=y 228CONFIG_HOTPLUG_PCI_PCIE=y
223# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set
224CONFIG_PCIEAER=y 229CONFIG_PCIEAER=y
225CONFIG_ARCH_SUPPORTS_MSI=y 230CONFIG_ARCH_SUPPORTS_MSI=y
226# CONFIG_PCI_MSI is not set 231# CONFIG_PCI_MSI is not set
@@ -231,10 +236,6 @@ CONFIG_HOTPLUG_PCI=y
231# CONFIG_HOTPLUG_PCI_CPCI is not set 236# CONFIG_HOTPLUG_PCI_CPCI is not set
232# CONFIG_HOTPLUG_PCI_SHPC is not set 237# CONFIG_HOTPLUG_PCI_SHPC is not set
233CONFIG_HOTPLUG_PCI_SGI=y 238CONFIG_HOTPLUG_PCI_SGI=y
234
235#
236# PCCARD (PCMCIA/CardBus) support
237#
238# CONFIG_PCCARD is not set 239# CONFIG_PCCARD is not set
239 240
240# 241#
@@ -271,6 +272,7 @@ CONFIG_INET_TUNNEL=m
271CONFIG_INET_XFRM_MODE_TRANSPORT=y 272CONFIG_INET_XFRM_MODE_TRANSPORT=y
272CONFIG_INET_XFRM_MODE_TUNNEL=y 273CONFIG_INET_XFRM_MODE_TUNNEL=y
273CONFIG_INET_XFRM_MODE_BEET=y 274CONFIG_INET_XFRM_MODE_BEET=y
275CONFIG_INET_LRO=y
274CONFIG_INET_DIAG=m 276CONFIG_INET_DIAG=m
275CONFIG_INET_TCP_DIAG=m 277CONFIG_INET_TCP_DIAG=m
276# CONFIG_TCP_CONG_ADVANCED is not set 278# CONFIG_TCP_CONG_ADVANCED is not set
@@ -342,6 +344,7 @@ CONFIG_IPV6_SIT=m
342# 344#
343# Generic Driver Options 345# Generic Driver Options
344# 346#
347CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
345CONFIG_STANDALONE=y 348CONFIG_STANDALONE=y
346CONFIG_PREVENT_FIRMWARE_BUILD=y 349CONFIG_PREVENT_FIRMWARE_BUILD=y
347CONFIG_FW_LOADER=y 350CONFIG_FW_LOADER=y
@@ -402,7 +405,12 @@ CONFIG_IDE_PROC_FS=y
402# IDE chipset support/bugfixes 405# IDE chipset support/bugfixes
403# 406#
404CONFIG_IDE_GENERIC=y 407CONFIG_IDE_GENERIC=y
408# CONFIG_BLK_DEV_PLATFORM is not set
405# CONFIG_BLK_DEV_IDEPNP is not set 409# CONFIG_BLK_DEV_IDEPNP is not set
410
411#
412# PCI IDE chipsets support
413#
406CONFIG_BLK_DEV_IDEPCI=y 414CONFIG_BLK_DEV_IDEPCI=y
407CONFIG_IDEPCI_SHARE_IRQ=y 415CONFIG_IDEPCI_SHARE_IRQ=y
408CONFIG_IDEPCI_PCIBUS_ORDER=y 416CONFIG_IDEPCI_PCIBUS_ORDER=y
@@ -410,8 +418,6 @@ CONFIG_IDEPCI_PCIBUS_ORDER=y
410# CONFIG_BLK_DEV_GENERIC is not set 418# CONFIG_BLK_DEV_GENERIC is not set
411# CONFIG_BLK_DEV_OPTI621 is not set 419# CONFIG_BLK_DEV_OPTI621 is not set
412CONFIG_BLK_DEV_IDEDMA_PCI=y 420CONFIG_BLK_DEV_IDEDMA_PCI=y
413# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
414# CONFIG_IDEDMA_ONLYDISK is not set
415# CONFIG_BLK_DEV_AEC62XX is not set 421# CONFIG_BLK_DEV_AEC62XX is not set
416# CONFIG_BLK_DEV_ALI15X3 is not set 422# CONFIG_BLK_DEV_ALI15X3 is not set
417# CONFIG_BLK_DEV_AMD74XX is not set 423# CONFIG_BLK_DEV_AMD74XX is not set
@@ -439,7 +445,6 @@ CONFIG_BLK_DEV_SGIIOC4=y
439# CONFIG_BLK_DEV_TC86C001 is not set 445# CONFIG_BLK_DEV_TC86C001 is not set
440# CONFIG_IDE_ARM is not set 446# CONFIG_IDE_ARM is not set
441CONFIG_BLK_DEV_IDEDMA=y 447CONFIG_BLK_DEV_IDEDMA=y
442# CONFIG_IDEDMA_IVB is not set
443# CONFIG_BLK_DEV_HD is not set 448# CONFIG_BLK_DEV_HD is not set
444 449
445# 450#
@@ -482,6 +487,7 @@ CONFIG_SCSI_SAS_ATTRS=y
482CONFIG_SCSI_SAS_LIBSAS=y 487CONFIG_SCSI_SAS_LIBSAS=y
483# CONFIG_SCSI_SAS_ATA is not set 488# CONFIG_SCSI_SAS_ATA is not set
484# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set 489# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
490CONFIG_SCSI_SRP_ATTRS=y
485CONFIG_SCSI_LOWLEVEL=y 491CONFIG_SCSI_LOWLEVEL=y
486CONFIG_ISCSI_TCP=m 492CONFIG_ISCSI_TCP=m
487# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 493# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
@@ -492,6 +498,7 @@ CONFIG_ISCSI_TCP=m
492# CONFIG_SCSI_AIC7XXX_OLD is not set 498# CONFIG_SCSI_AIC7XXX_OLD is not set
493# CONFIG_SCSI_AIC79XX is not set 499# CONFIG_SCSI_AIC79XX is not set
494# CONFIG_SCSI_AIC94XX is not set 500# CONFIG_SCSI_AIC94XX is not set
501# CONFIG_SCSI_ADVANSYS is not set
495# CONFIG_SCSI_ARCMSR is not set 502# CONFIG_SCSI_ARCMSR is not set
496# CONFIG_MEGARAID_NEWGEN is not set 503# CONFIG_MEGARAID_NEWGEN is not set
497# CONFIG_MEGARAID_LEGACY is not set 504# CONFIG_MEGARAID_LEGACY is not set
@@ -532,6 +539,7 @@ CONFIG_ATA_ACPI=y
532# CONFIG_SATA_VIA is not set 539# CONFIG_SATA_VIA is not set
533CONFIG_SATA_VITESSE=y 540CONFIG_SATA_VITESSE=y
534# CONFIG_SATA_INIC162X is not set 541# CONFIG_SATA_INIC162X is not set
542# CONFIG_PATA_ACPI is not set
535# CONFIG_PATA_ALI is not set 543# CONFIG_PATA_ALI is not set
536# CONFIG_PATA_AMD is not set 544# CONFIG_PATA_AMD is not set
537# CONFIG_PATA_ARTOP is not set 545# CONFIG_PATA_ARTOP is not set
@@ -556,6 +564,7 @@ CONFIG_SATA_VITESSE=y
556# CONFIG_PATA_OLDPIIX is not set 564# CONFIG_PATA_OLDPIIX is not set
557# CONFIG_PATA_NETCELL is not set 565# CONFIG_PATA_NETCELL is not set
558# CONFIG_PATA_NS87410 is not set 566# CONFIG_PATA_NS87410 is not set
567# CONFIG_PATA_NS87415 is not set
559# CONFIG_PATA_OPTI is not set 568# CONFIG_PATA_OPTI is not set
560# CONFIG_PATA_OPTIDMA is not set 569# CONFIG_PATA_OPTIDMA is not set
561# CONFIG_PATA_PDC_OLD is not set 570# CONFIG_PATA_PDC_OLD is not set
@@ -588,10 +597,6 @@ CONFIG_DM_MULTIPATH=m
588CONFIG_DM_MULTIPATH_EMC=m 597CONFIG_DM_MULTIPATH_EMC=m
589# CONFIG_DM_MULTIPATH_RDAC is not set 598# CONFIG_DM_MULTIPATH_RDAC is not set
590# CONFIG_DM_DELAY is not set 599# CONFIG_DM_DELAY is not set
591
592#
593# Fusion MPT device support
594#
595CONFIG_FUSION=y 600CONFIG_FUSION=y
596CONFIG_FUSION_SPI=y 601CONFIG_FUSION_SPI=y
597CONFIG_FUSION_FC=y 602CONFIG_FUSION_FC=y
@@ -613,13 +618,16 @@ CONFIG_NETDEVICES=y
613# CONFIG_MACVLAN is not set 618# CONFIG_MACVLAN is not set
614# CONFIG_EQUALIZER is not set 619# CONFIG_EQUALIZER is not set
615# CONFIG_TUN is not set 620# CONFIG_TUN is not set
621# CONFIG_VETH is not set
616# CONFIG_NET_SB1000 is not set 622# CONFIG_NET_SB1000 is not set
623# CONFIG_IP1000 is not set
617# CONFIG_ARCNET is not set 624# CONFIG_ARCNET is not set
618# CONFIG_NET_ETHERNET is not set 625# CONFIG_NET_ETHERNET is not set
619CONFIG_NETDEV_1000=y 626CONFIG_NETDEV_1000=y
620# CONFIG_ACENIC is not set 627# CONFIG_ACENIC is not set
621# CONFIG_DL2K is not set 628# CONFIG_DL2K is not set
622# CONFIG_E1000 is not set 629# CONFIG_E1000 is not set
630# CONFIG_E1000E is not set
623# CONFIG_NS83820 is not set 631# CONFIG_NS83820 is not set
624# CONFIG_HAMACHI is not set 632# CONFIG_HAMACHI is not set
625# CONFIG_YELLOWFIN is not set 633# CONFIG_YELLOWFIN is not set
@@ -638,12 +646,15 @@ CONFIG_CHELSIO_T1=m
638CONFIG_CHELSIO_T1_1G=y 646CONFIG_CHELSIO_T1_1G=y
639# CONFIG_CHELSIO_T1_NAPI is not set 647# CONFIG_CHELSIO_T1_NAPI is not set
640CONFIG_CHELSIO_T3=m 648CONFIG_CHELSIO_T3=m
649CONFIG_IXGBE=m
641# CONFIG_IXGB is not set 650# CONFIG_IXGB is not set
642CONFIG_S2IO=m 651CONFIG_S2IO=m
643# CONFIG_S2IO_NAPI is not set 652# CONFIG_S2IO_NAPI is not set
644# CONFIG_MYRI10GE is not set 653# CONFIG_MYRI10GE is not set
645# CONFIG_NETXEN_NIC is not set 654# CONFIG_NETXEN_NIC is not set
655# CONFIG_NIU is not set
646# CONFIG_MLX4_CORE is not set 656# CONFIG_MLX4_CORE is not set
657# CONFIG_TEHUTI is not set
647# CONFIG_TR is not set 658# CONFIG_TR is not set
648 659
649# 660#
@@ -669,6 +680,7 @@ CONFIG_S2IO=m
669# CONFIG_NET_FC is not set 680# CONFIG_NET_FC is not set
670# CONFIG_SHAPER is not set 681# CONFIG_SHAPER is not set
671CONFIG_NETCONSOLE=y 682CONFIG_NETCONSOLE=y
683# CONFIG_NETCONSOLE_DYNAMIC is not set
672CONFIG_NETPOLL=y 684CONFIG_NETPOLL=y
673# CONFIG_NETPOLL_TRAP is not set 685# CONFIG_NETPOLL_TRAP is not set
674CONFIG_NET_POLL_CONTROLLER=y 686CONFIG_NET_POLL_CONTROLLER=y
@@ -690,7 +702,6 @@ CONFIG_INPUT_MOUSEDEV=y
690CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 702CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
691CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 703CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
692# CONFIG_INPUT_JOYDEV is not set 704# CONFIG_INPUT_JOYDEV is not set
693# CONFIG_INPUT_TSDEV is not set
694# CONFIG_INPUT_EVDEV is not set 705# CONFIG_INPUT_EVDEV is not set
695# CONFIG_INPUT_EVBUG is not set 706# CONFIG_INPUT_EVBUG is not set
696 707
@@ -714,6 +725,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
714# Character devices 725# Character devices
715# 726#
716CONFIG_VT=y 727CONFIG_VT=y
728# CONFIG_VT_UNICODE is not set
717CONFIG_VT_CONSOLE=y 729CONFIG_VT_CONSOLE=y
718CONFIG_HW_CONSOLE=y 730CONFIG_HW_CONSOLE=y
719# CONFIG_VT_HW_CONSOLE_BINDING is not set 731# CONFIG_VT_HW_CONSOLE_BINDING is not set
@@ -760,9 +772,6 @@ CONFIG_LEGACY_PTY_COUNT=256
760CONFIG_EFI_RTC=y 772CONFIG_EFI_RTC=y
761# CONFIG_R3964 is not set 773# CONFIG_R3964 is not set
762# CONFIG_APPLICOM is not set 774# CONFIG_APPLICOM is not set
763CONFIG_AGP=y
764CONFIG_AGP_SGI_TIOCA=y
765# CONFIG_DRM is not set
766CONFIG_RAW_DRIVER=m 775CONFIG_RAW_DRIVER=m
767CONFIG_MAX_RAW_DEVS=256 776CONFIG_MAX_RAW_DEVS=256
768# CONFIG_HPET is not set 777# CONFIG_HPET is not set
@@ -782,6 +791,12 @@ CONFIG_DEVPORT=y
782# CONFIG_HWMON is not set 791# CONFIG_HWMON is not set
783 792
784# 793#
794# Sonics Silicon Backplane
795#
796CONFIG_SSB_POSSIBLE=y
797# CONFIG_SSB is not set
798
799#
785# Multifunction device drivers 800# Multifunction device drivers
786# 801#
787# CONFIG_MFD_SM501 is not set 802# CONFIG_MFD_SM501 is not set
@@ -796,15 +811,18 @@ CONFIG_DEVPORT=y
796# 811#
797# Graphics support 812# Graphics support
798# 813#
814CONFIG_AGP=y
815CONFIG_AGP_SGI_TIOCA=y
816# CONFIG_DRM is not set
817# CONFIG_VGASTATE is not set
818CONFIG_VIDEO_OUTPUT_CONTROL=m
819# CONFIG_FB is not set
799# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 820# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
800 821
801# 822#
802# Display device support 823# Display device support
803# 824#
804# CONFIG_DISPLAY_SUPPORT is not set 825# CONFIG_DISPLAY_SUPPORT is not set
805# CONFIG_VGASTATE is not set
806CONFIG_VIDEO_OUTPUT_CONTROL=m
807# CONFIG_FB is not set
808 826
809# 827#
810# Console display driver support 828# Console display driver support
@@ -820,6 +838,7 @@ CONFIG_DUMMY_CONSOLE=y
820CONFIG_HID_SUPPORT=y 838CONFIG_HID_SUPPORT=y
821CONFIG_HID=y 839CONFIG_HID=y
822CONFIG_HID_DEBUG=y 840CONFIG_HID_DEBUG=y
841# CONFIG_HIDRAW is not set
823 842
824# 843#
825# USB Input Devices 844# USB Input Devices
@@ -951,19 +970,6 @@ CONFIG_INFINIBAND_SRP=m
951# CONFIG_RTC_CLASS is not set 970# CONFIG_RTC_CLASS is not set
952 971
953# 972#
954# DMA Engine support
955#
956# CONFIG_DMA_ENGINE is not set
957
958#
959# DMA Clients
960#
961
962#
963# DMA Devices
964#
965
966#
967# Userspace I/O 973# Userspace I/O
968# 974#
969# CONFIG_UIO is not set 975# CONFIG_UIO is not set
@@ -1005,6 +1011,8 @@ CONFIG_XFS_RT=y
1005CONFIG_INOTIFY=y 1011CONFIG_INOTIFY=y
1006CONFIG_INOTIFY_USER=y 1012CONFIG_INOTIFY_USER=y
1007CONFIG_QUOTA=y 1013CONFIG_QUOTA=y
1014CONFIG_QUOTA_NETLINK_INTERFACE=y
1015CONFIG_PRINT_QUOTA_WARNING=y
1008# CONFIG_QFMT_V1 is not set 1016# CONFIG_QFMT_V1 is not set
1009# CONFIG_QFMT_V2 is not set 1017# CONFIG_QFMT_V2 is not set
1010CONFIG_QUOTACTL=y 1018CONFIG_QUOTACTL=y
@@ -1043,7 +1051,6 @@ CONFIG_TMPFS=y
1043# CONFIG_TMPFS_POSIX_ACL is not set 1051# CONFIG_TMPFS_POSIX_ACL is not set
1044CONFIG_HUGETLBFS=y 1052CONFIG_HUGETLBFS=y
1045CONFIG_HUGETLB_PAGE=y 1053CONFIG_HUGETLB_PAGE=y
1046CONFIG_RAMFS=y
1047# CONFIG_CONFIGFS_FS is not set 1054# CONFIG_CONFIGFS_FS is not set
1048 1055
1049# 1056#
@@ -1062,10 +1069,7 @@ CONFIG_RAMFS=y
1062# CONFIG_QNX4FS_FS is not set 1069# CONFIG_QNX4FS_FS is not set
1063# CONFIG_SYSV_FS is not set 1070# CONFIG_SYSV_FS is not set
1064# CONFIG_UFS_FS is not set 1071# CONFIG_UFS_FS is not set
1065 1072CONFIG_NETWORK_FILESYSTEMS=y
1066#
1067# Network File Systems
1068#
1069CONFIG_NFS_FS=m 1073CONFIG_NFS_FS=m
1070CONFIG_NFS_V3=y 1074CONFIG_NFS_V3=y
1071# CONFIG_NFS_V3_ACL is not set 1075# CONFIG_NFS_V3_ACL is not set
@@ -1082,6 +1086,7 @@ CONFIG_EXPORTFS=m
1082CONFIG_NFS_COMMON=y 1086CONFIG_NFS_COMMON=y
1083CONFIG_SUNRPC=m 1087CONFIG_SUNRPC=m
1084CONFIG_SUNRPC_GSS=m 1088CONFIG_SUNRPC_GSS=m
1089CONFIG_SUNRPC_XPRT_RDMA=m
1085# CONFIG_SUNRPC_BIND34 is not set 1090# CONFIG_SUNRPC_BIND34 is not set
1086CONFIG_RPCSEC_GSS_KRB5=m 1091CONFIG_RPCSEC_GSS_KRB5=m
1087# CONFIG_RPCSEC_GSS_SPKM3 is not set 1092# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -1118,10 +1123,6 @@ CONFIG_SGI_PARTITION=y
1118# CONFIG_KARMA_PARTITION is not set 1123# CONFIG_KARMA_PARTITION is not set
1119CONFIG_EFI_PARTITION=y 1124CONFIG_EFI_PARTITION=y
1120# CONFIG_SYSV68_PARTITION is not set 1125# CONFIG_SYSV68_PARTITION is not set
1121
1122#
1123# Native Language Support
1124#
1125CONFIG_NLS=y 1126CONFIG_NLS=y
1126CONFIG_NLS_DEFAULT="iso8859-1" 1127CONFIG_NLS_DEFAULT="iso8859-1"
1127CONFIG_NLS_CODEPAGE_437=y 1128CONFIG_NLS_CODEPAGE_437=y
@@ -1162,10 +1163,6 @@ CONFIG_NLS_ISO8859_1=y
1162# CONFIG_NLS_KOI8_R is not set 1163# CONFIG_NLS_KOI8_R is not set
1163# CONFIG_NLS_KOI8_U is not set 1164# CONFIG_NLS_KOI8_U is not set
1164CONFIG_NLS_UTF8=y 1165CONFIG_NLS_UTF8=y
1165
1166#
1167# Distributed Lock Manager
1168#
1169# CONFIG_DLM is not set 1166# CONFIG_DLM is not set
1170 1167
1171# 1168#
@@ -1223,6 +1220,7 @@ CONFIG_DEBUG_INFO=y
1223# CONFIG_DEBUG_VM is not set 1220# CONFIG_DEBUG_VM is not set
1224# CONFIG_DEBUG_LIST is not set 1221# CONFIG_DEBUG_LIST is not set
1225CONFIG_FORCED_INLINING=y 1222CONFIG_FORCED_INLINING=y
1223# CONFIG_BOOT_PRINTK_DELAY is not set
1226# CONFIG_RCU_TORTURE_TEST is not set 1224# CONFIG_RCU_TORTURE_TEST is not set
1227# CONFIG_FAULT_INJECTION is not set 1225# CONFIG_FAULT_INJECTION is not set
1228CONFIG_IA64_GRANULE_16MB=y 1226CONFIG_IA64_GRANULE_16MB=y
@@ -1238,6 +1236,7 @@ CONFIG_SYSVIPC_COMPAT=y
1238# 1236#
1239# CONFIG_KEYS is not set 1237# CONFIG_KEYS is not set
1240# CONFIG_SECURITY is not set 1238# CONFIG_SECURITY is not set
1239# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1241CONFIG_XOR_BLOCKS=y 1240CONFIG_XOR_BLOCKS=y
1242CONFIG_ASYNC_CORE=y 1241CONFIG_ASYNC_CORE=y
1243CONFIG_ASYNC_MEMCPY=y 1242CONFIG_ASYNC_MEMCPY=y
@@ -1262,6 +1261,7 @@ CONFIG_CRYPTO_ECB=m
1262CONFIG_CRYPTO_CBC=m 1261CONFIG_CRYPTO_CBC=m
1263CONFIG_CRYPTO_PCBC=m 1262CONFIG_CRYPTO_PCBC=m
1264# CONFIG_CRYPTO_LRW is not set 1263# CONFIG_CRYPTO_LRW is not set
1264# CONFIG_CRYPTO_XTS is not set
1265# CONFIG_CRYPTO_CRYPTD is not set 1265# CONFIG_CRYPTO_CRYPTD is not set
1266CONFIG_CRYPTO_DES=m 1266CONFIG_CRYPTO_DES=m
1267# CONFIG_CRYPTO_FCRYPT is not set 1267# CONFIG_CRYPTO_FCRYPT is not set
@@ -1275,9 +1275,11 @@ CONFIG_CRYPTO_DES=m
1275# CONFIG_CRYPTO_ARC4 is not set 1275# CONFIG_CRYPTO_ARC4 is not set
1276# CONFIG_CRYPTO_KHAZAD is not set 1276# CONFIG_CRYPTO_KHAZAD is not set
1277# CONFIG_CRYPTO_ANUBIS is not set 1277# CONFIG_CRYPTO_ANUBIS is not set
1278# CONFIG_CRYPTO_SEED is not set
1278CONFIG_CRYPTO_DEFLATE=m 1279CONFIG_CRYPTO_DEFLATE=m
1279# CONFIG_CRYPTO_MICHAEL_MIC is not set 1280# CONFIG_CRYPTO_MICHAEL_MIC is not set
1280CONFIG_CRYPTO_CRC32C=m 1281CONFIG_CRYPTO_CRC32C=m
1281# CONFIG_CRYPTO_CAMELLIA is not set 1282# CONFIG_CRYPTO_CAMELLIA is not set
1282# CONFIG_CRYPTO_TEST is not set 1283# CONFIG_CRYPTO_TEST is not set
1284# CONFIG_CRYPTO_AUTHENC is not set
1283# CONFIG_CRYPTO_HW is not set 1285# CONFIG_CRYPTO_HW is not set
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 3f7ea13358e9..6216eba2e38f 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -1231,7 +1231,7 @@ kdump_find_rsvd_region (unsigned long size,
1231 1231
1232#ifdef CONFIG_PROC_VMCORE 1232#ifdef CONFIG_PROC_VMCORE
1233/* locate the size find a the descriptor at a certain address */ 1233/* locate the size find a the descriptor at a certain address */
1234unsigned long 1234unsigned long __init
1235vmcore_find_descriptor_size (unsigned long address) 1235vmcore_find_descriptor_size (unsigned long address)
1236{ 1236{
1237 void *efi_map_start, *efi_map_end, *p; 1237 void *efi_map_start, *efi_map_end, *p;
diff --git a/arch/ia64/kernel/gate.lds.S b/arch/ia64/kernel/gate.lds.S
index 44817d97ab43..454d7a7dfa9d 100644
--- a/arch/ia64/kernel/gate.lds.S
+++ b/arch/ia64/kernel/gate.lds.S
@@ -20,6 +20,8 @@ SECTIONS
20 .gnu.version_d : { *(.gnu.version_d) } 20 .gnu.version_d : { *(.gnu.version_d) }
21 .gnu.version_r : { *(.gnu.version_r) } 21 .gnu.version_r : { *(.gnu.version_r) }
22 22
23 .note : { *(.note*) } :readable :note
24
23 .dynamic : { *(.dynamic) } :readable :dynamic 25 .dynamic : { *(.dynamic) } :readable :dynamic
24 26
25 /* 27 /*
@@ -83,6 +85,7 @@ PHDRS
83 epc PT_LOAD FILEHDR PHDRS FLAGS(1); /* PF_X */ 85 epc PT_LOAD FILEHDR PHDRS FLAGS(1); /* PF_X */
84#endif 86#endif
85 dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ 87 dynamic PT_DYNAMIC FLAGS(4); /* PF_R */
88 note PT_NOTE FLAGS(4); /* PF_R */
86 unwind PT_IA_64_UNWIND; 89 unwind PT_IA_64_UNWIND;
87} 90}
88 91
diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c
index 2fdbd5c3f213..e86d02959794 100644
--- a/arch/ia64/kernel/msi_ia64.c
+++ b/arch/ia64/kernel/msi_ia64.c
@@ -109,7 +109,7 @@ int ia64_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc)
109 write_msi_msg(irq, &msg); 109 write_msi_msg(irq, &msg);
110 set_irq_chip_and_handler(irq, &ia64_msi_chip, handle_edge_irq); 110 set_irq_chip_and_handler(irq, &ia64_msi_chip, handle_edge_irq);
111 111
112 return irq; 112 return 0;
113} 113}
114 114
115void ia64_teardown_msi_irq(unsigned int irq) 115void ia64_teardown_msi_irq(unsigned int irq)
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index ae6c3c02e117..2b3751eef5ce 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -417,34 +417,6 @@ mark_bsp_online (void)
417#endif 417#endif
418} 418}
419 419
420#ifdef CONFIG_SMP
421static void __init
422check_for_logical_procs (void)
423{
424 pal_logical_to_physical_t info;
425 s64 status;
426
427 status = ia64_pal_logical_to_phys(0, &info);
428 if (status == -1) {
429 printk(KERN_INFO "No logical to physical processor mapping "
430 "available\n");
431 return;
432 }
433 if (status) {
434 printk(KERN_ERR "ia64_pal_logical_to_phys failed with %ld\n",
435 status);
436 return;
437 }
438 /*
439 * Total number of siblings that BSP has. Though not all of them
440 * may have booted successfully. The correct number of siblings
441 * booted is in info.overview_num_log.
442 */
443 smp_num_siblings = info.overview_tpc;
444 smp_num_cpucores = info.overview_cpp;
445}
446#endif
447
448static __initdata int nomca; 420static __initdata int nomca;
449static __init int setup_nomca(char *s) 421static __init int setup_nomca(char *s)
450{ 422{
@@ -540,15 +512,6 @@ setup_arch (char **cmdline_p)
540 512
541#ifdef CONFIG_SMP 513#ifdef CONFIG_SMP
542 cpu_physical_id(0) = hard_smp_processor_id(); 514 cpu_physical_id(0) = hard_smp_processor_id();
543 check_for_logical_procs();
544 if (smp_num_cpucores > 1)
545 printk(KERN_INFO
546 "cpu package is Multi-Core capable: number of cores=%d\n",
547 smp_num_cpucores);
548 if (smp_num_siblings > 1)
549 printk(KERN_INFO
550 "cpu package is Multi-Threading capable: number of siblings=%d\n",
551 smp_num_siblings);
552#endif 515#endif
553 516
554 cpu_init(); /* initialize the bootstrap CPU */ 517 cpu_init(); /* initialize the bootstrap CPU */
@@ -661,12 +624,13 @@ show_cpuinfo (struct seq_file *m, void *v)
661 lpj*HZ/500000, (lpj*HZ/5000) % 100); 624 lpj*HZ/500000, (lpj*HZ/5000) % 100);
662#ifdef CONFIG_SMP 625#ifdef CONFIG_SMP
663 seq_printf(m, "siblings : %u\n", cpus_weight(cpu_core_map[cpunum])); 626 seq_printf(m, "siblings : %u\n", cpus_weight(cpu_core_map[cpunum]));
627 if (c->socket_id != -1)
628 seq_printf(m, "physical id: %u\n", c->socket_id);
664 if (c->threads_per_core > 1 || c->cores_per_socket > 1) 629 if (c->threads_per_core > 1 || c->cores_per_socket > 1)
665 seq_printf(m, 630 seq_printf(m,
666 "physical id: %u\n" 631 "core id : %u\n"
667 "core id : %u\n" 632 "thread id : %u\n",
668 "thread id : %u\n", 633 c->core_id, c->thread_id);
669 c->socket_id, c->core_id, c->thread_id);
670#endif 634#endif
671 seq_printf(m,"\n"); 635 seq_printf(m,"\n");
672 636
@@ -778,6 +742,9 @@ identify_cpu (struct cpuinfo_ia64 *c)
778 c->socket_id = -1; 742 c->socket_id = -1;
779 743
780 identify_siblings(c); 744 identify_siblings(c);
745
746 if (c->threads_per_core > smp_num_siblings)
747 smp_num_siblings = c->threads_per_core;
781#endif 748#endif
782 c->ppn = cpuid.field.ppn; 749 c->ppn = cpuid.field.ppn;
783 c->number = cpuid.field.number; 750 c->number = cpuid.field.number;
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
index c57dbce25c12..f0fc4d8465ad 100644
--- a/arch/ia64/kernel/smpboot.c
+++ b/arch/ia64/kernel/smpboot.c
@@ -142,7 +142,6 @@ DEFINE_PER_CPU_SHARED_ALIGNED(cpumask_t, cpu_sibling_map);
142EXPORT_PER_CPU_SYMBOL(cpu_sibling_map); 142EXPORT_PER_CPU_SYMBOL(cpu_sibling_map);
143 143
144int smp_num_siblings = 1; 144int smp_num_siblings = 1;
145int smp_num_cpucores = 1;
146 145
147/* which logical CPU number maps to which CPU (physical APIC ID) */ 146/* which logical CPU number maps to which CPU (physical APIC ID) */
148volatile int ia64_cpu_to_sapicid[NR_CPUS]; 147volatile int ia64_cpu_to_sapicid[NR_CPUS];
@@ -886,13 +885,17 @@ identify_siblings(struct cpuinfo_ia64 *c)
886 u16 pltid; 885 u16 pltid;
887 pal_logical_to_physical_t info; 886 pal_logical_to_physical_t info;
888 887
889 if (smp_num_cpucores == 1 && smp_num_siblings == 1)
890 return;
891
892 if ((status = ia64_pal_logical_to_phys(-1, &info)) != PAL_STATUS_SUCCESS) { 888 if ((status = ia64_pal_logical_to_phys(-1, &info)) != PAL_STATUS_SUCCESS) {
893 printk(KERN_ERR "ia64_pal_logical_to_phys failed with %ld\n", 889 if (status != PAL_STATUS_UNIMPLEMENTED) {
894 status); 890 printk(KERN_ERR
895 return; 891 "ia64_pal_logical_to_phys failed with %ld\n",
892 status);
893 return;
894 }
895
896 info.overview_ppid = 0;
897 info.overview_cpp = 1;
898 info.overview_tpc = 1;
896 } 899 }
897 if ((status = ia64_sal_physical_id_info(&pltid)) != PAL_STATUS_SUCCESS) { 900 if ((status = ia64_sal_physical_id_info(&pltid)) != PAL_STATUS_SUCCESS) {
898 printk(KERN_ERR "ia64_sal_pltid failed with %ld\n", status); 901 printk(KERN_ERR "ia64_sal_pltid failed with %ld\n", status);
@@ -900,6 +903,10 @@ identify_siblings(struct cpuinfo_ia64 *c)
900 } 903 }
901 904
902 c->socket_id = (pltid << 8) | info.overview_ppid; 905 c->socket_id = (pltid << 8) | info.overview_ppid;
906
907 if (info.overview_cpp == 1 && info.overview_tpc == 1)
908 return;
909
903 c->cores_per_socket = info.overview_cpp; 910 c->cores_per_socket = info.overview_cpp;
904 c->threads_per_core = info.overview_tpc; 911 c->threads_per_core = info.overview_tpc;
905 c->num_log = info.overview_num_log; 912 c->num_log = info.overview_num_log;
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index c6c19bf11bec..25aef6211a54 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -472,7 +472,7 @@ struct memmap_init_callback_data {
472 unsigned long zone; 472 unsigned long zone;
473}; 473};
474 474
475static int 475static int __meminit
476virtual_memmap_init (u64 start, u64 end, void *arg) 476virtual_memmap_init (u64 start, u64 end, void *arg)
477{ 477{
478 struct memmap_init_callback_data *args; 478 struct memmap_init_callback_data *args;
@@ -503,7 +503,7 @@ virtual_memmap_init (u64 start, u64 end, void *arg)
503 return 0; 503 return 0;
504} 504}
505 505
506void 506void __meminit
507memmap_init (unsigned long size, int nid, unsigned long zone, 507memmap_init (unsigned long size, int nid, unsigned long zone,
508 unsigned long start_pfn) 508 unsigned long start_pfn)
509{ 509{
diff --git a/arch/ia64/scripts/check-segrel.lds b/arch/ia64/scripts/check-segrel.lds
index 1c2f13e181d0..85a0d54fb5ab 100644
--- a/arch/ia64/scripts/check-segrel.lds
+++ b/arch/ia64/scripts/check-segrel.lds
@@ -1,6 +1,7 @@
1SECTIONS { 1SECTIONS {
2 . = SIZEOF_HEADERS; 2 . = SIZEOF_HEADERS;
3 .rodata : { *(.rodata) } :ro 3 .rodata : { *(.rodata) } :ro
4 .note : { *(.note*) }
4 . = 0xa0000; 5 . = 0xa0000;
5 .data : { *(.data) } :dat 6 .data : { *(.data) } :dat
6 /DISCARD/ : { *(*) } 7 /DISCARD/ : { *(*) }
diff --git a/arch/ia64/sn/kernel/mca.c b/arch/ia64/sn/kernel/mca.c
index 3db62f24596c..868c9aa64fe2 100644
--- a/arch/ia64/sn/kernel/mca.c
+++ b/arch/ia64/sn/kernel/mca.c
@@ -98,6 +98,7 @@ sn_platform_plat_specific_err_print(const u8 * sect_header, u8 ** oemdata,
98 while (*sn_oemdata_size > sn_oemdata_bufsize) { 98 while (*sn_oemdata_size > sn_oemdata_bufsize) {
99 u8 *newbuf = vmalloc(*sn_oemdata_size); 99 u8 *newbuf = vmalloc(*sn_oemdata_size);
100 if (!newbuf) { 100 if (!newbuf) {
101 mutex_unlock(&sn_oemdata_mutex);
101 printk(KERN_ERR "%s: unable to extend sn_oemdata\n", 102 printk(KERN_ERR "%s: unable to extend sn_oemdata\n",
102 __FUNCTION__); 103 __FUNCTION__);
103 return 1; 104 return 1;
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 61262c5f9c62..97da953eb5d0 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -583,6 +583,7 @@ config SNI_RM
583 583
584config TOSHIBA_JMR3927 584config TOSHIBA_JMR3927
585 bool "Toshiba JMR-TX3927 board" 585 bool "Toshiba JMR-TX3927 board"
586 select CEVT_TXX9
586 select DMA_NONCOHERENT 587 select DMA_NONCOHERENT
587 select HW_HAS_PCI 588 select HW_HAS_PCI
588 select MIPS_TX3927 589 select MIPS_TX3927
@@ -597,6 +598,7 @@ config TOSHIBA_JMR3927
597config TOSHIBA_RBTX4927 598config TOSHIBA_RBTX4927
598 bool "Toshiba RBTX49[23]7 board" 599 bool "Toshiba RBTX49[23]7 board"
599 select CEVT_R4K 600 select CEVT_R4K
601 select CEVT_TXX9
600 select DMA_NONCOHERENT 602 select DMA_NONCOHERENT
601 select HAS_TXX9_SERIAL 603 select HAS_TXX9_SERIAL
602 select HW_HAS_PCI 604 select HW_HAS_PCI
@@ -618,6 +620,7 @@ config TOSHIBA_RBTX4927
618config TOSHIBA_RBTX4938 620config TOSHIBA_RBTX4938
619 bool "Toshiba RBTX4938 board" 621 bool "Toshiba RBTX4938 board"
620 select CEVT_R4K 622 select CEVT_R4K
623 select CEVT_TXX9
621 select DMA_NONCOHERENT 624 select DMA_NONCOHERENT
622 select HAS_TXX9_SERIAL 625 select HAS_TXX9_SERIAL
623 select HW_HAS_PCI 626 select HW_HAS_PCI
@@ -736,6 +739,9 @@ config CEVT_GT641XX
736config CEVT_R4K 739config CEVT_R4K
737 bool 740 bool
738 741
742config CEVT_TXX9
743 bool
744
739config CFE 745config CFE
740 bool 746 bool
741 747
diff --git a/arch/mips/au1000/common/irq.c b/arch/mips/au1000/common/irq.c
index 59e932a928d2..ddfb7f0a17a6 100644
--- a/arch/mips/au1000/common/irq.c
+++ b/arch/mips/au1000/common/irq.c
@@ -318,38 +318,6 @@ static struct irq_chip level_irq_type = {
318 .end = end_irq, 318 .end = end_irq,
319}; 319};
320 320
321#ifdef CONFIG_PM
322void startup_match20_interrupt(irq_handler_t handler)
323{
324 struct irq_desc *desc = &irq_desc[AU1000_TOY_MATCH2_INT];
325
326 static struct irqaction action;
327 memset(&action, 0, sizeof(struct irqaction));
328
329 /*
330 * This is a big problem.... since we didn't use request_irq
331 * when kernel/irq.c calls probe_irq_xxx this interrupt will
332 * be probed for usage. This will end up disabling the device :(
333 * Give it a bogus "action" pointer -- this will keep it from
334 * getting auto-probed!
335 *
336 * By setting the status to match that of request_irq() we
337 * can avoid it. --cgray
338 */
339 action.dev_id = handler;
340 action.flags = IRQF_DISABLED;
341 cpus_clear(action.mask);
342 action.name = "Au1xxx TOY";
343 action.handler = handler;
344 action.next = NULL;
345
346 desc->action = &action;
347 desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS);
348
349 local_enable_irq(AU1000_TOY_MATCH2_INT);
350}
351#endif
352
353static void __init setup_local_irq(unsigned int irq_nr, int type, int int_req) 321static void __init setup_local_irq(unsigned int irq_nr, int type, int int_req)
354{ 322{
355 unsigned int bit = irq_nr - AU1000_INTC0_INT_BASE; 323 unsigned int bit = irq_nr - AU1000_INTC0_INT_BASE;
diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c
index 2556399708ba..f113b512d7b1 100644
--- a/arch/mips/au1000/common/time.c
+++ b/arch/mips/au1000/common/time.c
@@ -67,7 +67,7 @@ static DEFINE_SPINLOCK(time_lock);
67unsigned long wtimer; 67unsigned long wtimer;
68 68
69#ifdef CONFIG_PM 69#ifdef CONFIG_PM
70irqreturn_t counter0_irq(int irq, void *dev_id) 70static irqreturn_t counter0_irq(int irq, void *dev_id)
71{ 71{
72 unsigned long pc0; 72 unsigned long pc0;
73 int time_elapsed; 73 int time_elapsed;
@@ -117,6 +117,13 @@ irqreturn_t counter0_irq(int irq, void *dev_id)
117 return IRQ_HANDLED; 117 return IRQ_HANDLED;
118} 118}
119 119
120struct irqaction counter0_action = {
121 .handler = counter0_irq,
122 .flags = IRQF_DISABLED,
123 .name = "alchemy-toy",
124 .dev_id = NULL,
125};
126
120/* When we wakeup from sleep, we have to "catch up" on all of the 127/* When we wakeup from sleep, we have to "catch up" on all of the
121 * timer ticks we have missed. 128 * timer ticks we have missed.
122 */ 129 */
@@ -221,7 +228,7 @@ unsigned long cal_r4koff(void)
221 return (cpu_speed / HZ); 228 return (cpu_speed / HZ);
222} 229}
223 230
224void __init plat_timer_setup(struct irqaction *irq) 231void __init plat_time_init(void)
225{ 232{
226 unsigned int est_freq; 233 unsigned int est_freq;
227 234
@@ -255,15 +262,10 @@ void __init plat_timer_setup(struct irqaction *irq)
255 * we do this. 262 * we do this.
256 */ 263 */
257 if (no_au1xxx_32khz) { 264 if (no_au1xxx_32khz) {
258 unsigned int c0_status;
259
260 printk("WARNING: no 32KHz clock found.\n"); 265 printk("WARNING: no 32KHz clock found.\n");
261 266
262 /* Ensure we get CPO_COUNTER interrupts. 267 /* Ensure we get CPO_COUNTER interrupts. */
263 */ 268 set_c0_status(IE_IRQ5);
264 c0_status = read_c0_status();
265 c0_status |= IE_IRQ5;
266 write_c0_status(c0_status);
267 } 269 }
268 else { 270 else {
269 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C0S); 271 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C0S);
@@ -280,7 +282,7 @@ void __init plat_timer_setup(struct irqaction *irq)
280 au_writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2); 282 au_writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2);
281 au_sync(); 283 au_sync();
282 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20); 284 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20);
283 startup_match20_interrupt(counter0_irq); 285 setup_irq(AU1000_TOY_MATCH2_INT, &counter0_action);
284 286
285 /* We can use the real 'wait' instruction. 287 /* We can use the real 'wait' instruction.
286 */ 288 */
diff --git a/arch/mips/au1000/mtx-1/Makefile b/arch/mips/au1000/mtx-1/Makefile
index 764bf9f7e281..afa7007d67f7 100644
--- a/arch/mips/au1000/mtx-1/Makefile
+++ b/arch/mips/au1000/mtx-1/Makefile
@@ -8,3 +8,4 @@
8# 8#
9 9
10lib-y := init.o board_setup.o irqmap.o 10lib-y := init.o board_setup.o irqmap.o
11obj-y := platform.o
diff --git a/arch/mips/au1000/mtx-1/platform.c b/arch/mips/au1000/mtx-1/platform.c
new file mode 100644
index 000000000000..01ebff677978
--- /dev/null
+++ b/arch/mips/au1000/mtx-1/platform.c
@@ -0,0 +1,86 @@
1/*
2 * MTX-1 platform devices registration
3 *
4 * Copyright (C) 2007, Florian Fainelli <florian@openwrt.org>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include <linux/init.h>
22#include <linux/types.h>
23#include <linux/platform_device.h>
24#include <linux/leds.h>
25
26#include <asm/gpio.h>
27
28static struct resource mtx1_wdt_res[] = {
29 [0] = {
30 .start = 15,
31 .end = 15,
32 .name = "mtx1-wdt-gpio",
33 .flags = IORESOURCE_IRQ,
34 }
35};
36
37static struct resource mtx1_sys_btn[] = {
38 [0] = {
39 .start = 7,
40 .end = 7,
41 .name = "mtx1-sys-btn-gpio",
42 .flags = IORESOURCE_IRQ,
43 }
44};
45
46static struct platform_device mtx1_wdt = {
47 .name = "mtx1-wdt",
48 .id = 0,
49 .num_resources = ARRAY_SIZE(mtx1_wdt_res),
50 .resource = mtx1_wdt_res,
51};
52
53static struct gpio_led default_leds[] = {
54 {
55 .name = "mtx1:green",
56 .gpio = 211,
57 }, {
58 .name = "mtx1:red",
59 .gpio = 212,
60 },
61};
62
63static struct gpio_led_platform_data mtx1_led_data = {
64 .num_leds = ARRAY_SIZE(default_leds),
65 .leds = default_leds,
66};
67
68static struct platform_device mtx1_gpio_leds = {
69 .name = "leds-gpio",
70 .id = -1,
71 .dev = {
72 .platform_data = &mtx1_led_data,
73 }
74};
75
76static struct __initdata platform_device * mtx1_devs[] = {
77 &mtx1_gpio_leds,
78 &mtx1_wdt
79};
80
81static int __init mtx1_register_devices(void)
82{
83 return platform_add_devices(mtx1_devs, ARRAY_SIZE(mtx1_devs));
84}
85
86arch_initcall(mtx1_register_devices);
diff --git a/arch/mips/basler/excite/excite_setup.c b/arch/mips/basler/excite/excite_setup.c
index 404ca9284b30..24378b9223f9 100644
--- a/arch/mips/basler/excite/excite_setup.c
+++ b/arch/mips/basler/excite/excite_setup.c
@@ -68,24 +68,23 @@ DEFINE_SPINLOCK(titan_lock);
68int titan_irqflags; 68int titan_irqflags;
69 69
70 70
71/*
72 * The eXcite platform uses the alternate timer interrupt
73 *
74 * Fixme: At the time of this writing cevt-r4k.c doesn't yet know about how
75 * to handle the alternate timer interrupt of the RM9000.
76 */
71void __init plat_time_init(void) 77void __init plat_time_init(void)
72{ 78{
73 const u32 modebit5 = ocd_readl(0x00e4); 79 const u32 modebit5 = ocd_readl(0x00e4);
74 unsigned int 80 unsigned int mult = ((modebit5 >> 11) & 0x1f) + 2,
75 mult = ((modebit5 >> 11) & 0x1f) + 2, 81 unsigned int div = ((modebit5 >> 16) & 0x1f) + 2;
76 div = ((modebit5 >> 16) & 0x1f) + 2;
77 82
78 if (div == 33) div = 1; 83 if (div == 33)
84 div = 1;
79 mips_hpt_frequency = EXCITE_CPU_EXT_CLOCK * mult / div / 2; 85 mips_hpt_frequency = EXCITE_CPU_EXT_CLOCK * mult / div / 2;
80} 86}
81 87
82void __init plat_timer_setup(struct irqaction *irq)
83{
84 /* The eXcite platform uses the alternate timer interrupt */
85 set_c0_intcontrol(0x80);
86 setup_irq(TIMER_IRQ, irq);
87}
88
89static int __init excite_init_console(void) 88static int __init excite_init_console(void)
90{ 89{
91#if defined(CONFIG_SERIAL_8250) 90#if defined(CONFIG_SERIAL_8250)
diff --git a/arch/mips/configs/db1000_defconfig b/arch/mips/configs/db1000_defconfig
index 885b633647e9..5a8b7acb7dd7 100644
--- a/arch/mips/configs/db1000_defconfig
+++ b/arch/mips/configs/db1000_defconfig
@@ -738,7 +738,6 @@ CONFIG_HW_CONSOLE=y
738CONFIG_VT_HW_CONSOLE_BINDING=y 738CONFIG_VT_HW_CONSOLE_BINDING=y
739# CONFIG_SERIAL_NONSTANDARD is not set 739# CONFIG_SERIAL_NONSTANDARD is not set
740# CONFIG_AU1X00_GPIO is not set 740# CONFIG_AU1X00_GPIO is not set
741# CONFIG_TS_AU1X00_ADS7846 is not set
742 741
743# 742#
744# Serial drivers 743# Serial drivers
diff --git a/arch/mips/configs/db1100_defconfig b/arch/mips/configs/db1100_defconfig
index e3c3a07e8a7c..d4ed90bca269 100644
--- a/arch/mips/configs/db1100_defconfig
+++ b/arch/mips/configs/db1100_defconfig
@@ -714,7 +714,6 @@ CONFIG_HW_CONSOLE=y
714CONFIG_VT_HW_CONSOLE_BINDING=y 714CONFIG_VT_HW_CONSOLE_BINDING=y
715# CONFIG_SERIAL_NONSTANDARD is not set 715# CONFIG_SERIAL_NONSTANDARD is not set
716# CONFIG_AU1X00_GPIO is not set 716# CONFIG_AU1X00_GPIO is not set
717# CONFIG_TS_AU1X00_ADS7846 is not set
718 717
719# 718#
720# Serial drivers 719# Serial drivers
diff --git a/arch/mips/configs/db1200_defconfig b/arch/mips/configs/db1200_defconfig
index 9aa7c3ebfa3f..a055657e6983 100644
--- a/arch/mips/configs/db1200_defconfig
+++ b/arch/mips/configs/db1200_defconfig
@@ -775,7 +775,6 @@ CONFIG_HW_CONSOLE=y
775CONFIG_VT_HW_CONSOLE_BINDING=y 775CONFIG_VT_HW_CONSOLE_BINDING=y
776# CONFIG_SERIAL_NONSTANDARD is not set 776# CONFIG_SERIAL_NONSTANDARD is not set
777# CONFIG_AU1X00_GPIO is not set 777# CONFIG_AU1X00_GPIO is not set
778# CONFIG_TS_AU1X00_ADS7846 is not set
779 778
780# 779#
781# Serial drivers 780# Serial drivers
diff --git a/arch/mips/configs/db1500_defconfig b/arch/mips/configs/db1500_defconfig
index 99240668bca1..0ad08cf446ec 100644
--- a/arch/mips/configs/db1500_defconfig
+++ b/arch/mips/configs/db1500_defconfig
@@ -811,7 +811,6 @@ CONFIG_SERIO_RAW=m
811# CONFIG_VT is not set 811# CONFIG_VT is not set
812# CONFIG_SERIAL_NONSTANDARD is not set 812# CONFIG_SERIAL_NONSTANDARD is not set
813# CONFIG_AU1X00_GPIO is not set 813# CONFIG_AU1X00_GPIO is not set
814# CONFIG_TS_AU1X00_ADS7846 is not set
815 814
816# 815#
817# Serial drivers 816# Serial drivers
diff --git a/arch/mips/configs/db1550_defconfig b/arch/mips/configs/db1550_defconfig
index 19992f76c60d..057c7d429c80 100644
--- a/arch/mips/configs/db1550_defconfig
+++ b/arch/mips/configs/db1550_defconfig
@@ -856,7 +856,6 @@ CONFIG_SERIO_RAW=m
856# CONFIG_VT is not set 856# CONFIG_VT is not set
857# CONFIG_SERIAL_NONSTANDARD is not set 857# CONFIG_SERIAL_NONSTANDARD is not set
858# CONFIG_AU1X00_GPIO is not set 858# CONFIG_AU1X00_GPIO is not set
859# CONFIG_TS_AU1X00_ADS7846 is not set
860 859
861# 860#
862# Serial drivers 861# Serial drivers
diff --git a/arch/mips/configs/pb1100_defconfig b/arch/mips/configs/pb1100_defconfig
index d53fa8f8e099..703d28db05b9 100644
--- a/arch/mips/configs/pb1100_defconfig
+++ b/arch/mips/configs/pb1100_defconfig
@@ -731,7 +731,6 @@ CONFIG_HW_CONSOLE=y
731CONFIG_VT_HW_CONSOLE_BINDING=y 731CONFIG_VT_HW_CONSOLE_BINDING=y
732# CONFIG_SERIAL_NONSTANDARD is not set 732# CONFIG_SERIAL_NONSTANDARD is not set
733# CONFIG_AU1X00_GPIO is not set 733# CONFIG_AU1X00_GPIO is not set
734# CONFIG_TS_AU1X00_ADS7846 is not set
735 734
736# 735#
737# Serial drivers 736# Serial drivers
diff --git a/arch/mips/configs/pb1500_defconfig b/arch/mips/configs/pb1500_defconfig
index dc4aa0c66847..82f0c5cee0dc 100644
--- a/arch/mips/configs/pb1500_defconfig
+++ b/arch/mips/configs/pb1500_defconfig
@@ -849,7 +849,6 @@ CONFIG_SERIO_RAW=m
849# CONFIG_VT is not set 849# CONFIG_VT is not set
850# CONFIG_SERIAL_NONSTANDARD is not set 850# CONFIG_SERIAL_NONSTANDARD is not set
851# CONFIG_AU1X00_GPIO is not set 851# CONFIG_AU1X00_GPIO is not set
852# CONFIG_TS_AU1X00_ADS7846 is not set
853 852
854# 853#
855# Serial drivers 854# Serial drivers
diff --git a/arch/mips/configs/pb1550_defconfig b/arch/mips/configs/pb1550_defconfig
index 24428e13002b..147a4fc7fdd8 100644
--- a/arch/mips/configs/pb1550_defconfig
+++ b/arch/mips/configs/pb1550_defconfig
@@ -842,7 +842,6 @@ CONFIG_SERIO_RAW=m
842# CONFIG_VT is not set 842# CONFIG_VT is not set
843# CONFIG_SERIAL_NONSTANDARD is not set 843# CONFIG_SERIAL_NONSTANDARD is not set
844# CONFIG_AU1X00_GPIO is not set 844# CONFIG_AU1X00_GPIO is not set
845# CONFIG_TS_AU1X00_ADS7846 is not set
846 845
847# 846#
848# Serial drivers 847# Serial drivers
diff --git a/arch/mips/configs/sb1250-swarm_defconfig b/arch/mips/configs/sb1250-swarm_defconfig
index 49dfcef2518c..c2798229cbfb 100644
--- a/arch/mips/configs/sb1250-swarm_defconfig
+++ b/arch/mips/configs/sb1250-swarm_defconfig
@@ -468,7 +468,7 @@ CONFIG_BLK_DEV_IDEFLOPPY=y
468# 468#
469CONFIG_IDE_GENERIC=y 469CONFIG_IDE_GENERIC=y
470# CONFIG_BLK_DEV_IDEPCI is not set 470# CONFIG_BLK_DEV_IDEPCI is not set
471# CONFIG_BLK_DEV_IDE_SWARM is not set 471CONFIG_BLK_DEV_IDE_SWARM=y
472# CONFIG_IDE_ARM is not set 472# CONFIG_IDE_ARM is not set
473# CONFIG_BLK_DEV_IDEDMA is not set 473# CONFIG_BLK_DEV_IDEDMA is not set
474# CONFIG_IDEDMA_AUTO is not set 474# CONFIG_IDEDMA_AUTO is not set
diff --git a/arch/mips/gt64120/wrppmc/time.c b/arch/mips/gt64120/wrppmc/time.c
index b207e7f1417a..668dbd5f12c5 100644
--- a/arch/mips/gt64120/wrppmc/time.c
+++ b/arch/mips/gt64120/wrppmc/time.c
@@ -19,12 +19,6 @@
19 19
20#define WRPPMC_CPU_CLK_FREQ 40000000 /* 40MHZ */ 20#define WRPPMC_CPU_CLK_FREQ 40000000 /* 40MHZ */
21 21
22void __init plat_timer_setup(struct irqaction *irq)
23{
24 /* Install ISR for timer interrupt */
25 setup_irq(WRPPMC_MIPS_TIMER_IRQ, irq);
26}
27
28/* 22/*
29 * Estimate CPU frequency. Sets mips_hpt_frequency as a side-effect 23 * Estimate CPU frequency. Sets mips_hpt_frequency as a side-effect
30 * 24 *
diff --git a/arch/mips/jmr3927/rbhma3100/setup.c b/arch/mips/jmr3927/rbhma3100/setup.c
index edb9e59248ec..06e01c8f4e3a 100644
--- a/arch/mips/jmr3927/rbhma3100/setup.c
+++ b/arch/mips/jmr3927/rbhma3100/setup.c
@@ -27,17 +27,13 @@
27 * Copyright (C) 2007 Ralf Baechle (ralf@linux-mips.org) 27 * Copyright (C) 2007 Ralf Baechle (ralf@linux-mips.org)
28 */ 28 */
29 29
30#include <linux/clockchips.h>
31#include <linux/init.h> 30#include <linux/init.h>
32#include <linux/kernel.h> 31#include <linux/kernel.h>
33#include <linux/kdev_t.h> 32#include <linux/kdev_t.h>
34#include <linux/types.h> 33#include <linux/types.h>
35#include <linux/sched.h>
36#include <linux/pci.h> 34#include <linux/pci.h>
37#include <linux/ide.h> 35#include <linux/ide.h>
38#include <linux/irq.h>
39#include <linux/ioport.h> 36#include <linux/ioport.h>
40#include <linux/param.h> /* for HZ */
41#include <linux/delay.h> 37#include <linux/delay.h>
42#include <linux/pm.h> 38#include <linux/pm.h>
43#include <linux/platform_device.h> 39#include <linux/platform_device.h>
@@ -48,17 +44,13 @@
48#endif 44#endif
49 45
50#include <asm/addrspace.h> 46#include <asm/addrspace.h>
51#include <asm/time.h> 47#include <asm/txx9tmr.h>
52#include <asm/reboot.h> 48#include <asm/reboot.h>
53#include <asm/jmr3927/jmr3927.h> 49#include <asm/jmr3927/jmr3927.h>
54#include <asm/mipsregs.h> 50#include <asm/mipsregs.h>
55 51
56extern void puts(const char *cp); 52extern void puts(const char *cp);
57 53
58/* Tick Timer divider */
59#define JMR3927_TIMER_CCD 0 /* 1/2 */
60#define JMR3927_TIMER_CLK (JMR3927_IMCLK / (2 << JMR3927_TIMER_CCD))
61
62/* don't enable - see errata */ 54/* don't enable - see errata */
63static int jmr3927_ccfg_toeon; 55static int jmr3927_ccfg_toeon;
64 56
@@ -93,66 +85,12 @@ static void jmr3927_machine_power_off(void)
93 while (1); 85 while (1);
94} 86}
95 87
96static cycle_t jmr3927_hpt_read(void)
97{
98 /* We assume this function is called xtime_lock held. */
99 return jiffies * (JMR3927_TIMER_CLK / HZ) + jmr3927_tmrptr->trr;
100}
101
102static void jmr3927_set_mode(enum clock_event_mode mode,
103 struct clock_event_device *evt)
104{
105 /* Nothing to do here */
106}
107
108struct clock_event_device jmr3927_clock_event_device = {
109 .name = "MIPS",
110 .features = CLOCK_EVT_FEAT_PERIODIC,
111 .shift = 32,
112 .rating = 300,
113 .cpumask = CPU_MASK_CPU0,
114 .irq = JMR3927_IRQ_TICK,
115 .set_mode = jmr3927_set_mode,
116};
117
118static irqreturn_t jmr3927_timer_interrupt(int irq, void *dev_id)
119{
120 struct clock_event_device *cd = &jmr3927_clock_event_device;
121
122 jmr3927_tmrptr->tisr = 0; /* ack interrupt */
123
124 cd->event_handler(cd);
125
126 return IRQ_HANDLED;
127}
128
129static struct irqaction jmr3927_timer_irqaction = {
130 .handler = jmr3927_timer_interrupt,
131 .flags = IRQF_DISABLED | IRQF_PERCPU,
132 .name = "jmr3927-timer",
133};
134
135void __init plat_time_init(void) 88void __init plat_time_init(void)
136{ 89{
137 struct clock_event_device *cd; 90 txx9_clockevent_init(TX3927_TMR_REG(0),
138 91 TXX9_IRQ_BASE + JMR3927_IRQ_IRC_TMR(0),
139 clocksource_mips.read = jmr3927_hpt_read; 92 JMR3927_IMCLK);
140 mips_hpt_frequency = JMR3927_TIMER_CLK; 93 txx9_clocksource_init(TX3927_TMR_REG(1), JMR3927_IMCLK);
141
142 jmr3927_tmrptr->cpra = JMR3927_TIMER_CLK / HZ;
143 jmr3927_tmrptr->itmr = TXx927_TMTITMR_TIIE | TXx927_TMTITMR_TZCE;
144 jmr3927_tmrptr->ccdr = JMR3927_TIMER_CCD;
145 jmr3927_tmrptr->tcr =
146 TXx927_TMTCR_TCE | TXx927_TMTCR_CCDE | TXx927_TMTCR_TMODE_ITVL;
147
148 cd = &jmr3927_clock_event_device;
149 /* Calculate the min / max delta */
150 cd->mult = div_sc((unsigned long) JMR3927_IMCLK, NSEC_PER_SEC, 32);
151 cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd);
152 cd->min_delta_ns = clockevent_delta2ns(0x300, cd);
153 clockevents_register_device(cd);
154
155 setup_irq(JMR3927_IRQ_TICK, &jmr3927_timer_irqaction);
156} 94}
157 95
158#define DO_WRITE_THROUGH 96#define DO_WRITE_THROUGH
@@ -317,15 +255,8 @@ static void __init tx3927_setup(void)
317 tx3927_ccfgptr->ccfg, tx3927_ccfgptr->pcfg); 255 tx3927_ccfgptr->ccfg, tx3927_ccfgptr->pcfg);
318 256
319 /* TMR */ 257 /* TMR */
320 /* disable all timers */ 258 for (i = 0; i < TX3927_NR_TMR; i++)
321 for (i = 0; i < TX3927_NR_TMR; i++) { 259 txx9_tmr_init(TX3927_TMR_REG(i));
322 tx3927_tmrptr(i)->tcr = TXx927_TMTCR_CRE;
323 tx3927_tmrptr(i)->tisr = 0;
324 tx3927_tmrptr(i)->cpra = 0xffffffff;
325 tx3927_tmrptr(i)->itmr = 0;
326 tx3927_tmrptr(i)->ccdr = 0;
327 tx3927_tmrptr(i)->pgmr = 0;
328 }
329 260
330 /* DMA */ 261 /* DMA */
331 tx3927_dmaptr->mcr = 0; 262 tx3927_dmaptr->mcr = 0;
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index d7745c8976f6..3196509a28d5 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -10,6 +10,7 @@ obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \
10 10
11obj-$(CONFIG_CEVT_R4K) += cevt-r4k.o 11obj-$(CONFIG_CEVT_R4K) += cevt-r4k.o
12obj-$(CONFIG_CEVT_GT641XX) += cevt-gt641xx.o 12obj-$(CONFIG_CEVT_GT641XX) += cevt-gt641xx.o
13obj-$(CONFIG_CEVT_TXX9) += cevt-txx9.o
13 14
14binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ 15binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \
15 irix5sys.o sysirix.o 16 irix5sys.o sysirix.o
diff --git a/arch/mips/kernel/cevt-gt641xx.c b/arch/mips/kernel/cevt-gt641xx.c
index 4c651b2680f9..c36772631fe0 100644
--- a/arch/mips/kernel/cevt-gt641xx.c
+++ b/arch/mips/kernel/cevt-gt641xx.c
@@ -49,10 +49,9 @@ int gt641xx_timer0_state(void)
49static int gt641xx_timer0_set_next_event(unsigned long delta, 49static int gt641xx_timer0_set_next_event(unsigned long delta,
50 struct clock_event_device *evt) 50 struct clock_event_device *evt)
51{ 51{
52 unsigned long flags;
53 u32 ctrl; 52 u32 ctrl;
54 53
55 spin_lock_irqsave(&gt641xx_timer_lock, flags); 54 spin_lock(&gt641xx_timer_lock);
56 55
57 ctrl = GT_READ(GT_TC_CONTROL_OFS); 56 ctrl = GT_READ(GT_TC_CONTROL_OFS);
58 ctrl &= ~(GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK); 57 ctrl &= ~(GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK);
@@ -61,7 +60,7 @@ static int gt641xx_timer0_set_next_event(unsigned long delta,
61 GT_WRITE(GT_TC0_OFS, delta); 60 GT_WRITE(GT_TC0_OFS, delta);
62 GT_WRITE(GT_TC_CONTROL_OFS, ctrl); 61 GT_WRITE(GT_TC_CONTROL_OFS, ctrl);
63 62
64 spin_unlock_irqrestore(&gt641xx_timer_lock, flags); 63 spin_unlock(&gt641xx_timer_lock);
65 64
66 return 0; 65 return 0;
67} 66}
@@ -69,10 +68,9 @@ static int gt641xx_timer0_set_next_event(unsigned long delta,
69static void gt641xx_timer0_set_mode(enum clock_event_mode mode, 68static void gt641xx_timer0_set_mode(enum clock_event_mode mode,
70 struct clock_event_device *evt) 69 struct clock_event_device *evt)
71{ 70{
72 unsigned long flags;
73 u32 ctrl; 71 u32 ctrl;
74 72
75 spin_lock_irqsave(&gt641xx_timer_lock, flags); 73 spin_lock(&gt641xx_timer_lock);
76 74
77 ctrl = GT_READ(GT_TC_CONTROL_OFS); 75 ctrl = GT_READ(GT_TC_CONTROL_OFS);
78 ctrl &= ~(GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK); 76 ctrl &= ~(GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK);
@@ -90,7 +88,7 @@ static void gt641xx_timer0_set_mode(enum clock_event_mode mode,
90 88
91 GT_WRITE(GT_TC_CONTROL_OFS, ctrl); 89 GT_WRITE(GT_TC_CONTROL_OFS, ctrl);
92 90
93 spin_unlock_irqrestore(&gt641xx_timer_lock, flags); 91 spin_unlock(&gt641xx_timer_lock);
94} 92}
95 93
96static void gt641xx_timer0_event_handler(struct clock_event_device *dev) 94static void gt641xx_timer0_event_handler(struct clock_event_device *dev)
@@ -133,9 +131,9 @@ static int __init gt641xx_timer0_clockevent_init(void)
133 131
134 cd = &gt641xx_timer0_clockevent; 132 cd = &gt641xx_timer0_clockevent;
135 cd->rating = 200 + gt641xx_base_clock / 10000000; 133 cd->rating = 200 + gt641xx_base_clock / 10000000;
134 clockevent_set_clock(cd, gt641xx_base_clock);
136 cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd); 135 cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd);
137 cd->min_delta_ns = clockevent_delta2ns(0x300, cd); 136 cd->min_delta_ns = clockevent_delta2ns(0x300, cd);
138 clockevent_set_clock(cd, gt641xx_base_clock);
139 137
140 clockevents_register_device(&gt641xx_timer0_clockevent); 138 clockevents_register_device(&gt641xx_timer0_clockevent);
141 139
diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c
index ae2984fff580..bab935a3d74b 100644
--- a/arch/mips/kernel/cevt-r4k.c
+++ b/arch/mips/kernel/cevt-r4k.c
@@ -28,7 +28,7 @@ static int mips_next_event(unsigned long delta,
28 cnt = read_c0_count(); 28 cnt = read_c0_count();
29 cnt += delta; 29 cnt += delta;
30 write_c0_compare(cnt); 30 write_c0_compare(cnt);
31 res = ((long)(read_c0_count() - cnt ) > 0) ? -ETIME : 0; 31 res = ((int)(read_c0_count() - cnt) > 0) ? -ETIME : 0;
32#ifdef CONFIG_MIPS_MT_SMTC 32#ifdef CONFIG_MIPS_MT_SMTC
33 evpe(vpflags); 33 evpe(vpflags);
34 local_irq_restore(flags); 34 local_irq_restore(flags);
@@ -179,7 +179,7 @@ static int c0_compare_int_pending(void)
179 179
180static int c0_compare_int_usable(void) 180static int c0_compare_int_usable(void)
181{ 181{
182 const unsigned int delta = 0x300000; 182 unsigned int delta;
183 unsigned int cnt; 183 unsigned int cnt;
184 184
185 /* 185 /*
@@ -192,11 +192,17 @@ static int c0_compare_int_usable(void)
192 return 0; 192 return 0;
193 } 193 }
194 194
195 cnt = read_c0_count(); 195 for (delta = 0x10; delta <= 0x400000; delta <<= 1) {
196 cnt += delta; 196 cnt = read_c0_count();
197 write_c0_compare(cnt); 197 cnt += delta;
198 write_c0_compare(cnt);
199 irq_disable_hazard();
200 if ((int)(read_c0_count() - cnt) < 0)
201 break;
202 /* increase delta if the timer was already expired */
203 }
198 204
199 while ((long)(read_c0_count() - cnt) <= 0) 205 while ((int)(read_c0_count() - cnt) <= 0)
200 ; /* Wait for expiry */ 206 ; /* Wait for expiry */
201 207
202 if (!c0_compare_int_pending()) 208 if (!c0_compare_int_pending())
@@ -218,9 +224,9 @@ void __cpuinit mips_clockevent_init(void)
218 uint64_t mips_freq = mips_hpt_frequency; 224 uint64_t mips_freq = mips_hpt_frequency;
219 unsigned int cpu = smp_processor_id(); 225 unsigned int cpu = smp_processor_id();
220 struct clock_event_device *cd; 226 struct clock_event_device *cd;
221 unsigned int irq = MIPS_CPU_IRQ_BASE + 7; 227 unsigned int irq;
222 228
223 if (!cpu_has_counter) 229 if (!cpu_has_counter || !mips_hpt_frequency)
224 return; 230 return;
225 231
226#ifdef CONFIG_MIPS_MT_SMTC 232#ifdef CONFIG_MIPS_MT_SMTC
@@ -237,6 +243,15 @@ void __cpuinit mips_clockevent_init(void)
237 if (!c0_compare_int_usable()) 243 if (!c0_compare_int_usable())
238 return; 244 return;
239 245
246 /*
247 * With vectored interrupts things are getting platform specific.
248 * get_c0_compare_int is a hook to allow a platform to return the
249 * interrupt number of it's liking.
250 */
251 irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq;
252 if (get_c0_compare_int)
253 irq = get_c0_compare_int();
254
240 cd = &per_cpu(mips_clockevent_device, cpu); 255 cd = &per_cpu(mips_clockevent_device, cpu);
241 256
242 cd->name = "MIPS"; 257 cd->name = "MIPS";
@@ -261,13 +276,15 @@ void __cpuinit mips_clockevent_init(void)
261 276
262 clockevents_register_device(cd); 277 clockevents_register_device(cd);
263 278
264 if (!cp0_timer_irq_installed) { 279 if (!cp0_timer_irq_installed)
280 return;
281
282 cp0_timer_irq_installed = 1;
283
265#ifdef CONFIG_MIPS_MT_SMTC 284#ifdef CONFIG_MIPS_MT_SMTC
266#define CPUCTR_IMASKBIT (0x100 << cp0_compare_irq) 285#define CPUCTR_IMASKBIT (0x100 << cp0_compare_irq)
267 setup_irq_smtc(irq, &c0_compare_irqaction, CPUCTR_IMASKBIT); 286 setup_irq_smtc(irq, &c0_compare_irqaction, CPUCTR_IMASKBIT);
268#else 287#else
269 setup_irq(irq, &c0_compare_irqaction); 288 setup_irq(irq, &c0_compare_irqaction);
270#endif /* CONFIG_MIPS_MT_SMTC */ 289#endif
271 cp0_timer_irq_installed = 1;
272 }
273} 290}
diff --git a/arch/mips/kernel/cevt-txx9.c b/arch/mips/kernel/cevt-txx9.c
new file mode 100644
index 000000000000..795cb8fb0d74
--- /dev/null
+++ b/arch/mips/kernel/cevt-txx9.c
@@ -0,0 +1,171 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Based on linux/arch/mips/kernel/cevt-r4k.c,
7 * linux/arch/mips/jmr3927/rbhma3100/setup.c
8 *
9 * Copyright 2001 MontaVista Software Inc.
10 * Copyright (C) 2000-2001 Toshiba Corporation
11 * Copyright (C) 2007 MIPS Technologies, Inc.
12 * Copyright (C) 2007 Ralf Baechle <ralf@linux-mips.org>
13 */
14#include <linux/init.h>
15#include <linux/interrupt.h>
16#include <asm/time.h>
17#include <asm/txx9tmr.h>
18
19#define TCR_BASE (TXx9_TMTCR_CCDE | TXx9_TMTCR_CRE | TXx9_TMTCR_TMODE_ITVL)
20#define TIMER_CCD 0 /* 1/2 */
21#define TIMER_CLK(imclk) ((imclk) / (2 << TIMER_CCD))
22
23static struct txx9_tmr_reg __iomem *txx9_cs_tmrptr;
24
25static cycle_t txx9_cs_read(void)
26{
27 return __raw_readl(&txx9_cs_tmrptr->trr);
28}
29
30/* Use 1 bit smaller width to use full bits in that width */
31#define TXX9_CLOCKSOURCE_BITS (TXX9_TIMER_BITS - 1)
32
33static struct clocksource txx9_clocksource = {
34 .name = "TXx9",
35 .rating = 200,
36 .read = txx9_cs_read,
37 .mask = CLOCKSOURCE_MASK(TXX9_CLOCKSOURCE_BITS),
38 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
39};
40
41void __init txx9_clocksource_init(unsigned long baseaddr,
42 unsigned int imbusclk)
43{
44 struct txx9_tmr_reg __iomem *tmrptr;
45
46 clocksource_set_clock(&txx9_clocksource, TIMER_CLK(imbusclk));
47 clocksource_register(&txx9_clocksource);
48
49 tmrptr = ioremap(baseaddr, sizeof(struct txx9_tmr_reg));
50 __raw_writel(TCR_BASE, &tmrptr->tcr);
51 __raw_writel(0, &tmrptr->tisr);
52 __raw_writel(TIMER_CCD, &tmrptr->ccdr);
53 __raw_writel(TXx9_TMITMR_TZCE, &tmrptr->itmr);
54 __raw_writel(1 << TXX9_CLOCKSOURCE_BITS, &tmrptr->cpra);
55 __raw_writel(TCR_BASE | TXx9_TMTCR_TCE, &tmrptr->tcr);
56 txx9_cs_tmrptr = tmrptr;
57}
58
59static struct txx9_tmr_reg __iomem *txx9_tmrptr;
60
61static void txx9tmr_stop_and_clear(struct txx9_tmr_reg __iomem *tmrptr)
62{
63 /* stop and reset counter */
64 __raw_writel(TCR_BASE, &tmrptr->tcr);
65 /* clear pending interrupt */
66 __raw_writel(0, &tmrptr->tisr);
67}
68
69static void txx9tmr_set_mode(enum clock_event_mode mode,
70 struct clock_event_device *evt)
71{
72 struct txx9_tmr_reg __iomem *tmrptr = txx9_tmrptr;
73
74 txx9tmr_stop_and_clear(tmrptr);
75 switch (mode) {
76 case CLOCK_EVT_MODE_PERIODIC:
77 __raw_writel(TXx9_TMITMR_TIIE | TXx9_TMITMR_TZCE,
78 &tmrptr->itmr);
79 /* start timer */
80 __raw_writel(((u64)(NSEC_PER_SEC / HZ) * evt->mult) >>
81 evt->shift,
82 &tmrptr->cpra);
83 __raw_writel(TCR_BASE | TXx9_TMTCR_TCE, &tmrptr->tcr);
84 break;
85 case CLOCK_EVT_MODE_SHUTDOWN:
86 case CLOCK_EVT_MODE_UNUSED:
87 __raw_writel(0, &tmrptr->itmr);
88 break;
89 case CLOCK_EVT_MODE_ONESHOT:
90 __raw_writel(TXx9_TMITMR_TIIE, &tmrptr->itmr);
91 break;
92 case CLOCK_EVT_MODE_RESUME:
93 __raw_writel(TIMER_CCD, &tmrptr->ccdr);
94 __raw_writel(0, &tmrptr->itmr);
95 break;
96 }
97}
98
99static int txx9tmr_set_next_event(unsigned long delta,
100 struct clock_event_device *evt)
101{
102 struct txx9_tmr_reg __iomem *tmrptr = txx9_tmrptr;
103
104 txx9tmr_stop_and_clear(tmrptr);
105 /* start timer */
106 __raw_writel(delta, &tmrptr->cpra);
107 __raw_writel(TCR_BASE | TXx9_TMTCR_TCE, &tmrptr->tcr);
108 return 0;
109}
110
111static struct clock_event_device txx9tmr_clock_event_device = {
112 .name = "TXx9",
113 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
114 .rating = 200,
115 .cpumask = CPU_MASK_CPU0,
116 .set_mode = txx9tmr_set_mode,
117 .set_next_event = txx9tmr_set_next_event,
118};
119
120static irqreturn_t txx9tmr_interrupt(int irq, void *dev_id)
121{
122 struct clock_event_device *cd = &txx9tmr_clock_event_device;
123 struct txx9_tmr_reg __iomem *tmrptr = txx9_tmrptr;
124
125 __raw_writel(0, &tmrptr->tisr); /* ack interrupt */
126 cd->event_handler(cd);
127 return IRQ_HANDLED;
128}
129
130static struct irqaction txx9tmr_irq = {
131 .handler = txx9tmr_interrupt,
132 .flags = IRQF_DISABLED | IRQF_PERCPU,
133 .name = "txx9tmr",
134};
135
136void __init txx9_clockevent_init(unsigned long baseaddr, int irq,
137 unsigned int imbusclk)
138{
139 struct clock_event_device *cd = &txx9tmr_clock_event_device;
140 struct txx9_tmr_reg __iomem *tmrptr;
141
142 tmrptr = ioremap(baseaddr, sizeof(struct txx9_tmr_reg));
143 txx9tmr_stop_and_clear(tmrptr);
144 __raw_writel(TIMER_CCD, &tmrptr->ccdr);
145 __raw_writel(0, &tmrptr->itmr);
146 txx9_tmrptr = tmrptr;
147
148 clockevent_set_clock(cd, TIMER_CLK(imbusclk));
149 cd->max_delta_ns =
150 clockevent_delta2ns(0xffffffff >> (32 - TXX9_TIMER_BITS), cd);
151 cd->min_delta_ns = clockevent_delta2ns(0xf, cd);
152 cd->irq = irq;
153 clockevents_register_device(cd);
154 setup_irq(irq, &txx9tmr_irq);
155 printk(KERN_INFO "TXx9: clockevent device at 0x%lx, irq %d\n",
156 baseaddr, irq);
157}
158
159void __init txx9_tmr_init(unsigned long baseaddr)
160{
161 struct txx9_tmr_reg __iomem *tmrptr;
162
163 tmrptr = ioremap(baseaddr, sizeof(struct txx9_tmr_reg));
164 __raw_writel(TXx9_TMTCR_CRE, &tmrptr->tcr);
165 __raw_writel(0, &tmrptr->tisr);
166 __raw_writel(0xffffffff, &tmrptr->cpra);
167 __raw_writel(0, &tmrptr->itmr);
168 __raw_writel(0, &tmrptr->ccdr);
169 __raw_writel(0, &tmrptr->pgmr);
170 iounmap(tmrptr);
171}
diff --git a/arch/mips/kernel/irixsig.c b/arch/mips/kernel/irixsig.c
index a0a91056fda7..33506ff25910 100644
--- a/arch/mips/kernel/irixsig.c
+++ b/arch/mips/kernel/irixsig.c
@@ -24,8 +24,12 @@
24 24
25#define _BLOCKABLE (~(_S(SIGKILL) | _S(SIGSTOP))) 25#define _BLOCKABLE (~(_S(SIGKILL) | _S(SIGSTOP)))
26 26
27#define _IRIX_NSIG 128
28#define _IRIX_NSIG_BPW BITS_PER_LONG
29#define _IRIX_NSIG_WORDS (_IRIX_NSIG / _IRIX_NSIG_BPW)
30
27typedef struct { 31typedef struct {
28 unsigned long sig[4]; 32 unsigned long sig[_IRIX_NSIG_WORDS];
29} irix_sigset_t; 33} irix_sigset_t;
30 34
31struct sigctx_irix5 { 35struct sigctx_irix5 {
@@ -527,7 +531,7 @@ asmlinkage int irix_sigpoll_sys(unsigned long __user *set,
527 531
528 expire = schedule_timeout_interruptible(expire); 532 expire = schedule_timeout_interruptible(expire);
529 533
530 for (i=0; i<=4; i++) 534 for (i=0; i < _IRIX_NSIG_WORDS; i++)
531 tmp |= (current->pending.signal.sig[i] & kset.sig[i]); 535 tmp |= (current->pending.signal.sig[i] & kset.sig[i]);
532 536
533 if (tmp) 537 if (tmp)
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
index 999f7853de26..35234b92b9a5 100644
--- a/arch/mips/kernel/ptrace.c
+++ b/arch/mips/kernel/ptrace.c
@@ -65,13 +65,13 @@ int ptrace_getregs(struct task_struct *child, __s64 __user *data)
65 regs = task_pt_regs(child); 65 regs = task_pt_regs(child);
66 66
67 for (i = 0; i < 32; i++) 67 for (i = 0; i < 32; i++)
68 __put_user(regs->regs[i], data + i); 68 __put_user((long)regs->regs[i], data + i);
69 __put_user(regs->lo, data + EF_LO - EF_R0); 69 __put_user((long)regs->lo, data + EF_LO - EF_R0);
70 __put_user(regs->hi, data + EF_HI - EF_R0); 70 __put_user((long)regs->hi, data + EF_HI - EF_R0);
71 __put_user(regs->cp0_epc, data + EF_CP0_EPC - EF_R0); 71 __put_user((long)regs->cp0_epc, data + EF_CP0_EPC - EF_R0);
72 __put_user(regs->cp0_badvaddr, data + EF_CP0_BADVADDR - EF_R0); 72 __put_user((long)regs->cp0_badvaddr, data + EF_CP0_BADVADDR - EF_R0);
73 __put_user(regs->cp0_status, data + EF_CP0_STATUS - EF_R0); 73 __put_user((long)regs->cp0_status, data + EF_CP0_STATUS - EF_R0);
74 __put_user(regs->cp0_cause, data + EF_CP0_CAUSE - EF_R0); 74 __put_user((long)regs->cp0_cause, data + EF_CP0_CAUSE - EF_R0);
75 75
76 return 0; 76 return 0;
77} 77}
@@ -390,11 +390,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
390 } 390 }
391 391
392 case PTRACE_GETREGS: 392 case PTRACE_GETREGS:
393 ret = ptrace_getregs(child, (__u64 __user *) data); 393 ret = ptrace_getregs(child, (__s64 __user *) data);
394 break; 394 break;
395 395
396 case PTRACE_SETREGS: 396 case PTRACE_SETREGS:
397 ret = ptrace_setregs(child, (__u64 __user *) data); 397 ret = ptrace_setregs(child, (__s64 __user *) data);
398 break; 398 break;
399 399
400 case PTRACE_GETFPREGS: 400 case PTRACE_GETFPREGS:
diff --git a/arch/mips/kernel/ptrace32.c b/arch/mips/kernel/ptrace32.c
index f2bffed94fa3..76818be6ba7c 100644
--- a/arch/mips/kernel/ptrace32.c
+++ b/arch/mips/kernel/ptrace32.c
@@ -346,11 +346,11 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
346 } 346 }
347 347
348 case PTRACE_GETREGS: 348 case PTRACE_GETREGS:
349 ret = ptrace_getregs(child, (__u64 __user *) (__u64) data); 349 ret = ptrace_getregs(child, (__s64 __user *) (__u64) data);
350 break; 350 break;
351 351
352 case PTRACE_SETREGS: 352 case PTRACE_SETREGS:
353 ret = ptrace_setregs(child, (__u64 __user *) (__u64) data); 353 ret = ptrace_setregs(child, (__s64 __user *) (__u64) data);
354 break; 354 break;
355 355
356 case PTRACE_GETFPREGS: 356 case PTRACE_GETFPREGS:
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
index a8c1a698d588..9c92d42996cb 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -88,11 +88,19 @@ unsigned int smtc_status = 0;
88 88
89/* Boot command line configuration overrides */ 89/* Boot command line configuration overrides */
90 90
91static int vpe0limit;
91static int ipibuffers = 0; 92static int ipibuffers = 0;
92static int nostlb = 0; 93static int nostlb = 0;
93static int asidmask = 0; 94static int asidmask = 0;
94unsigned long smtc_asid_mask = 0xff; 95unsigned long smtc_asid_mask = 0xff;
95 96
97static int __init vpe0tcs(char *str)
98{
99 get_option(&str, &vpe0limit);
100
101 return 1;
102}
103
96static int __init ipibufs(char *str) 104static int __init ipibufs(char *str)
97{ 105{
98 get_option(&str, &ipibuffers); 106 get_option(&str, &ipibuffers);
@@ -125,6 +133,7 @@ static int __init asidmask_set(char *str)
125 return 1; 133 return 1;
126} 134}
127 135
136__setup("vpe0tcs=", vpe0tcs);
128__setup("ipibufs=", ipibufs); 137__setup("ipibufs=", ipibufs);
129__setup("nostlb", stlb_disable); 138__setup("nostlb", stlb_disable);
130__setup("asidmask=", asidmask_set); 139__setup("asidmask=", asidmask_set);
@@ -340,7 +349,7 @@ static void smtc_tc_setup(int vpe, int tc, int cpu)
340 349
341void mipsmt_prepare_cpus(void) 350void mipsmt_prepare_cpus(void)
342{ 351{
343 int i, vpe, tc, ntc, nvpe, tcpervpe, slop, cpu; 352 int i, vpe, tc, ntc, nvpe, tcpervpe[NR_CPUS], slop, cpu;
344 unsigned long flags; 353 unsigned long flags;
345 unsigned long val; 354 unsigned long val;
346 int nipi; 355 int nipi;
@@ -401,8 +410,39 @@ void mipsmt_prepare_cpus(void)
401 ntc = NR_CPUS; 410 ntc = NR_CPUS;
402 if (tclimit > 0 && ntc > tclimit) 411 if (tclimit > 0 && ntc > tclimit)
403 ntc = tclimit; 412 ntc = tclimit;
404 tcpervpe = ntc / nvpe; 413 slop = ntc % nvpe;
405 slop = ntc % nvpe; /* Residual TCs, < NVPE */ 414 for (i = 0; i < nvpe; i++) {
415 tcpervpe[i] = ntc / nvpe;
416 if (slop) {
417 if((slop - i) > 0) tcpervpe[i]++;
418 }
419 }
420 /* Handle command line override for VPE0 */
421 if (vpe0limit > ntc) vpe0limit = ntc;
422 if (vpe0limit > 0) {
423 int slopslop;
424 if (vpe0limit < tcpervpe[0]) {
425 /* Reducing TC count - distribute to others */
426 slop = tcpervpe[0] - vpe0limit;
427 slopslop = slop % (nvpe - 1);
428 tcpervpe[0] = vpe0limit;
429 for (i = 1; i < nvpe; i++) {
430 tcpervpe[i] += slop / (nvpe - 1);
431 if(slopslop && ((slopslop - (i - 1) > 0)))
432 tcpervpe[i]++;
433 }
434 } else if (vpe0limit > tcpervpe[0]) {
435 /* Increasing TC count - steal from others */
436 slop = vpe0limit - tcpervpe[0];
437 slopslop = slop % (nvpe - 1);
438 tcpervpe[0] = vpe0limit;
439 for (i = 1; i < nvpe; i++) {
440 tcpervpe[i] -= slop / (nvpe - 1);
441 if(slopslop && ((slopslop - (i - 1) > 0)))
442 tcpervpe[i]--;
443 }
444 }
445 }
406 446
407 /* Set up shared TLB */ 447 /* Set up shared TLB */
408 smtc_configure_tlb(); 448 smtc_configure_tlb();
@@ -416,7 +456,7 @@ void mipsmt_prepare_cpus(void)
416 if (vpe != 0) 456 if (vpe != 0)
417 printk(", "); 457 printk(", ");
418 printk("VPE %d: TC", vpe); 458 printk("VPE %d: TC", vpe);
419 for (i = 0; i < tcpervpe; i++) { 459 for (i = 0; i < tcpervpe[vpe]; i++) {
420 /* 460 /*
421 * TC 0 is bound to VPE 0 at reset, 461 * TC 0 is bound to VPE 0 at reset,
422 * and is presumably executing this 462 * and is presumably executing this
@@ -429,15 +469,6 @@ void mipsmt_prepare_cpus(void)
429 printk(" %d", tc); 469 printk(" %d", tc);
430 tc++; 470 tc++;
431 } 471 }
432 if (slop) {
433 if (tc != 0) {
434 smtc_tc_setup(vpe, tc, cpu);
435 cpu++;
436 }
437 printk(" %d", tc);
438 tc++;
439 slop--;
440 }
441 if (vpe != 0) { 472 if (vpe != 0) {
442 /* 473 /*
443 * Clear any stale software interrupts from VPE's Cause 474 * Clear any stale software interrupts from VPE's Cause
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
index b95fe93dd646..af1bdc897488 100644
--- a/arch/mips/kernel/syscall.c
+++ b/arch/mips/kernel/syscall.c
@@ -73,7 +73,14 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
73 73
74 task_size = STACK_TOP; 74 task_size = STACK_TOP;
75 75
76 if (len > task_size)
77 return -ENOMEM;
78
76 if (flags & MAP_FIXED) { 79 if (flags & MAP_FIXED) {
80 /* Even MAP_FIXED mappings must reside within task_size. */
81 if (task_size - len < addr)
82 return -EINVAL;
83
77 /* 84 /*
78 * We do not accept a shared mapping if it would violate 85 * We do not accept a shared mapping if it would violate
79 * cache aliasing constraints. 86 * cache aliasing constraints.
@@ -83,8 +90,6 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
83 return addr; 90 return addr;
84 } 91 }
85 92
86 if (len > task_size)
87 return -ENOMEM;
88 do_color_align = 0; 93 do_color_align = 0;
89 if (filp || (flags & MAP_SHARED)) 94 if (filp || (flags & MAP_SHARED))
90 do_color_align = 1; 95 do_color_align = 1;
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c
index 6c6849a8f136..27228f583dae 100644
--- a/arch/mips/kernel/time.c
+++ b/arch/mips/kernel/time.c
@@ -11,6 +11,7 @@
11 * Free Software Foundation; either version 2 of the License, or (at your 11 * Free Software Foundation; either version 2 of the License, or (at your
12 * option) any later version. 12 * option) any later version.
13 */ 13 */
14#include <linux/bug.h>
14#include <linux/clockchips.h> 15#include <linux/clockchips.h>
15#include <linux/types.h> 16#include <linux/types.h>
16#include <linux/kernel.h> 17#include <linux/kernel.h>
@@ -115,10 +116,6 @@ EXPORT_SYMBOL(perf_irq);
115 * (only needed if you intended to use cpu counter as timer interrupt 116 * (only needed if you intended to use cpu counter as timer interrupt
116 * source) 117 * source)
117 * 2) calculate a couple of cached variables for later usage 118 * 2) calculate a couple of cached variables for later usage
118 * 3) plat_timer_setup() -
119 * a) (optional) over-write any choices made above by time_init().
120 * b) machine specific code should setup the timer irqaction.
121 * c) enable the timer interrupt
122 */ 119 */
123 120
124unsigned int mips_hpt_frequency; 121unsigned int mips_hpt_frequency;
@@ -221,8 +218,18 @@ void __init __weak plat_time_init(void)
221{ 218{
222} 219}
223 220
224void __init __weak plat_timer_setup(struct irqaction *irq) 221/*
222 * This function exists in order to cause an error due to a duplicate
223 * definition if platform code should have its own implementation. The hook
224 * to use instead is plat_time_init. plat_time_init does not receive the
225 * irqaction pointer argument anymore. This is because any function which
226 * initializes an interrupt timer now takes care of its own request_irq rsp.
227 * setup_irq calls and each clock_event_device should use its own
228 * struct irqrequest.
229 */
230void __init plat_timer_setup(struct irqaction *irq)
225{ 231{
232 BUG();
226} 233}
227 234
228void __init time_init(void) 235void __init time_init(void)
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
index 2781cff1485e..5fc2398bdb76 100644
--- a/arch/mips/kernel/vmlinux.lds.S
+++ b/arch/mips/kernel/vmlinux.lds.S
@@ -63,21 +63,23 @@ SECTIONS
63 63
64 /* writeable */ 64 /* writeable */
65 .data : { /* Data */ 65 .data : { /* Data */
66 . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */ 66 . = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */
67 /* 67 /*
68 * This ALIGN is needed as a workaround for a bug a gcc bug upto 4.1 which 68 * This ALIGN is needed as a workaround for a bug a
69 * limits the maximum alignment to at most 32kB and results in the following 69 * gcc bug upto 4.1 which limits the maximum alignment
70 * warning: 70 * to at most 32kB and results in the following
71 * 71 * warning:
72 * CC arch/mips/kernel/init_task.o 72 *
73 * arch/mips/kernel/init_task.c:30: warning: alignment of ‘init_thread_union’ 73 * CC arch/mips/kernel/init_task.o
74 * is greater than maximum object file alignment. Using 32768 74 * arch/mips/kernel/init_task.c:30: warning: alignment
75 */ 75 * of ‘init_thread_union’ is greater than maximum
76 . = ALIGN(_PAGE_SIZE); 76 * object file alignment. Using 32768
77 *(.data.init_task) 77 */
78 78 . = ALIGN(_PAGE_SIZE);
79 DATA_DATA 79 *(.data.init_task)
80 CONSTRUCTORS 80
81 DATA_DATA
82 CONSTRUCTORS
81 } 83 }
82 _gp = . + 0x8000; 84 _gp = . + 0x8000;
83 .lit8 : { 85 .lit8 : {
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
index df8cbe4c7c0d..436a64ff3989 100644
--- a/arch/mips/kernel/vpe.c
+++ b/arch/mips/kernel/vpe.c
@@ -942,8 +942,8 @@ static int vpe_elfload(struct vpe * v)
942 if (phdr->p_type != PT_LOAD) 942 if (phdr->p_type != PT_LOAD)
943 continue; 943 continue;
944 944
945 memcpy((void *)phdr->p_vaddr, (char *)hdr + phdr->p_offset, phdr->p_filesz); 945 memcpy((void *)phdr->p_paddr, (char *)hdr + phdr->p_offset, phdr->p_filesz);
946 memset((void *)phdr->p_vaddr + phdr->p_filesz, 0, phdr->p_memsz - phdr->p_filesz); 946 memset((void *)phdr->p_paddr + phdr->p_filesz, 0, phdr->p_memsz - phdr->p_filesz);
947 phdr++; 947 phdr++;
948 } 948 }
949 949
diff --git a/arch/mips/lasat/setup.c b/arch/mips/lasat/setup.c
index 54827d0174bf..e072da4ff3b3 100644
--- a/arch/mips/lasat/setup.c
+++ b/arch/mips/lasat/setup.c
@@ -117,14 +117,11 @@ static struct notifier_block lasat_panic_block[] =
117 } 117 }
118}; 118};
119 119
120void plat_time_init(void) 120void __init plat_time_init(void)
121{ 121{
122 mips_hpt_frequency = lasat_board_info.li_cpu_hz / 2; 122 mips_hpt_frequency = lasat_board_info.li_cpu_hz / 2;
123}
124 123
125void __init plat_timer_setup(struct irqaction *irq) 124 change_c0_status(ST0_IM, IE_IRQ0);
126{
127 change_c0_status(ST0_IM, IE_IRQ0 | IE_IRQ5);
128} 125}
129 126
130void __init plat_mem_setup(void) 127void __init plat_mem_setup(void)
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c
index 9d6243a8c15a..f02ce6308e51 100644
--- a/arch/mips/mips-boards/generic/time.c
+++ b/arch/mips/mips-boards/generic/time.c
@@ -127,26 +127,6 @@ unsigned long read_persistent_clock(void)
127 return mc146818_get_cmos_time(); 127 return mc146818_get_cmos_time();
128} 128}
129 129
130void __init plat_time_init(void)
131{
132 unsigned int est_freq;
133
134 /* Set Data mode - binary. */
135 CMOS_WRITE(CMOS_READ(RTC_CONTROL) | RTC_DM_BINARY, RTC_CONTROL);
136
137 est_freq = estimate_cpu_frequency();
138
139 printk("CPU frequency %d.%02d MHz\n", est_freq/1000000,
140 (est_freq%1000000)*100/1000000);
141
142 cpu_khz = est_freq / 1000;
143
144 mips_scroll_message();
145#ifdef CONFIG_I8253 /* Only Malta has a PIT */
146 setup_pit_timer();
147#endif
148}
149
150void __init plat_perf_setup(void) 130void __init plat_perf_setup(void)
151{ 131{
152 cp0_perfcount_irq = -1; 132 cp0_perfcount_irq = -1;
@@ -166,14 +146,13 @@ void __init plat_perf_setup(void)
166 } 146 }
167} 147}
168 148
169void __init plat_timer_setup(struct irqaction *irq) 149unsigned int __init get_c0_compare_int(void)
170{ 150{
171#ifdef MSC01E_INT_BASE 151#ifdef MSC01E_INT_BASE
172 if (cpu_has_veic) { 152 if (cpu_has_veic) {
173 set_vi_handler(MSC01E_INT_CPUCTR, mips_timer_dispatch); 153 set_vi_handler(MSC01E_INT_CPUCTR, mips_timer_dispatch);
174 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR; 154 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR;
175 } 155 } else
176 else
177#endif 156#endif
178 { 157 {
179 if (cpu_has_vint) 158 if (cpu_has_vint)
@@ -181,13 +160,26 @@ void __init plat_timer_setup(struct irqaction *irq)
181 mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq; 160 mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq;
182 } 161 }
183 162
184#ifdef CONFIG_MIPS_MT_SMTC 163 return mips_cpu_timer_irq;
185 setup_irq_smtc(mips_cpu_timer_irq, irq, 0x100 << cp0_compare_irq); 164}
186#else 165
187 setup_irq(mips_cpu_timer_irq, irq); 166void __init plat_time_init(void)
188#endif /* CONFIG_MIPS_MT_SMTC */ 167{
189#ifdef CONFIG_SMP 168 unsigned int est_freq;
190 set_irq_handler(mips_cpu_timer_irq, handle_percpu_irq); 169
170 /* Set Data mode - binary. */
171 CMOS_WRITE(CMOS_READ(RTC_CONTROL) | RTC_DM_BINARY, RTC_CONTROL);
172
173 est_freq = estimate_cpu_frequency();
174
175 printk("CPU frequency %d.%02d MHz\n", est_freq/1000000,
176 (est_freq%1000000)*100/1000000);
177
178 cpu_khz = est_freq / 1000;
179
180 mips_scroll_message();
181#ifdef CONFIG_I8253 /* Only Malta has a PIT */
182 setup_pit_timer();
191#endif 183#endif
192 184
193 plat_perf_setup(); 185 plat_perf_setup();
diff --git a/arch/mips/mipssim/sim_time.c b/arch/mips/mipssim/sim_time.c
index e7fa0d1078a3..bfaafa38846f 100644
--- a/arch/mips/mipssim/sim_time.c
+++ b/arch/mips/mipssim/sim_time.c
@@ -75,25 +75,6 @@ static unsigned int __init estimate_cpu_frequency(void)
75 return count; 75 return count;
76} 76}
77 77
78void __init plat_time_init(void)
79{
80 unsigned int est_freq, flags;
81
82 local_irq_save(flags);
83
84 /* Set Data mode - binary. */
85 CMOS_WRITE(CMOS_READ(RTC_CONTROL) | RTC_DM_BINARY, RTC_CONTROL);
86
87 est_freq = estimate_cpu_frequency();
88
89 printk(KERN_INFO "CPU frequency %d.%02d MHz\n", est_freq / 1000000,
90 (est_freq % 1000000) * 100 / 1000000);
91
92 cpu_khz = est_freq / 1000;
93
94 local_irq_restore(flags);
95}
96
97static int mips_cpu_timer_irq; 78static int mips_cpu_timer_irq;
98 79
99static void mips_timer_dispatch(void) 80static void mips_timer_dispatch(void)
@@ -102,26 +83,37 @@ static void mips_timer_dispatch(void)
102} 83}
103 84
104 85
105void __init plat_timer_setup(struct irqaction *irq) 86unsigned __init get_c0_compare_int(void)
106{ 87{
88#ifdef MSC01E_INT_BASE
107 if (cpu_has_veic) { 89 if (cpu_has_veic) {
108 set_vi_handler(MSC01E_INT_CPUCTR, mips_timer_dispatch); 90 set_vi_handler(MSC01E_INT_CPUCTR, mips_timer_dispatch);
109 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR; 91 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR;
110 } else { 92 } else {
93#endif
111 if (cpu_has_vint) 94 if (cpu_has_vint)
112 set_vi_handler(cp0_compare_irq, mips_timer_dispatch); 95 set_vi_handler(cp0_compare_irq, mips_timer_dispatch);
113 mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq; 96 mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq;
114 } 97 }
115 98
116 /* we are using the cpu counter for timer interrupts */ 99 return mips_cpu_timer_irq;
117 setup_irq(mips_cpu_timer_irq, irq); 100}
118 101
119#ifdef CONFIG_SMP 102void __init plat_time_init(void)
120 /* irq_desc(riptor) is a global resource, when the interrupt overlaps 103{
121 on seperate cpu's the first one tries to handle the second interrupt. 104 unsigned int est_freq, flags;
122 The effect is that the int remains disabled on the second cpu. 105
123 Mark the interrupt with IRQ_PER_CPU to avoid any confusion */ 106 local_irq_save(flags);
124 irq_desc[mips_cpu_timer_irq].flags |= IRQ_PER_CPU; 107
125 set_irq_handler(mips_cpu_timer_irq, handle_percpu_irq); 108 /* Set Data mode - binary. */
126#endif 109 CMOS_WRITE(CMOS_READ(RTC_CONTROL) | RTC_DM_BINARY, RTC_CONTROL);
110
111 est_freq = estimate_cpu_frequency();
112
113 printk(KERN_INFO "CPU frequency %d.%02d MHz\n", est_freq / 1000000,
114 (est_freq % 1000000) * 100 / 1000000);
115
116 cpu_khz = est_freq / 1000;
117
118 local_irq_restore(flags);
127} 119}
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c
index c55312f6fd3a..562abb77d1d5 100644
--- a/arch/mips/mm/c-r3k.c
+++ b/arch/mips/mm/c-r3k.c
@@ -7,7 +7,7 @@
7 * Tx39XX R4k style caches added. HK 7 * Tx39XX R4k style caches added. HK
8 * Copyright (C) 1998, 1999, 2000 Harald Koerfgen 8 * Copyright (C) 1998, 1999, 2000 Harald Koerfgen
9 * Copyright (C) 1998 Gleb Raiko & Vladimir Roganov 9 * Copyright (C) 1998 Gleb Raiko & Vladimir Roganov
10 * Copyright (C) 2001, 2004 Maciej W. Rozycki 10 * Copyright (C) 2001, 2004, 2007 Maciej W. Rozycki
11 */ 11 */
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/kernel.h> 13#include <linux/kernel.h>
@@ -26,8 +26,6 @@
26static unsigned long icache_size, dcache_size; /* Size in bytes */ 26static unsigned long icache_size, dcache_size; /* Size in bytes */
27static unsigned long icache_lsize, dcache_lsize; /* Size in bytes */ 27static unsigned long icache_lsize, dcache_lsize; /* Size in bytes */
28 28
29#undef DEBUG_CACHE
30
31unsigned long __init r3k_cache_size(unsigned long ca_flags) 29unsigned long __init r3k_cache_size(unsigned long ca_flags)
32{ 30{
33 unsigned long flags, status, dummy, size; 31 unsigned long flags, status, dummy, size;
@@ -217,26 +215,6 @@ static void r3k_flush_dcache_range(unsigned long start, unsigned long end)
217 write_c0_status(flags); 215 write_c0_status(flags);
218} 216}
219 217
220static inline unsigned long get_phys_page(unsigned long addr,
221 struct mm_struct *mm)
222{
223 pgd_t *pgd;
224 pud_t *pud;
225 pmd_t *pmd;
226 pte_t *pte;
227 unsigned long physpage;
228
229 pgd = pgd_offset(mm, addr);
230 pud = pud_offset(pgd, addr);
231 pmd = pmd_offset(pud, addr);
232 pte = pte_offset(pmd, addr);
233
234 if ((physpage = pte_val(*pte)) & _PAGE_VALID)
235 return KSEG0ADDR(physpage & PAGE_MASK);
236
237 return 0;
238}
239
240static inline void r3k_flush_cache_all(void) 218static inline void r3k_flush_cache_all(void)
241{ 219{
242} 220}
@@ -252,12 +230,40 @@ static void r3k_flush_cache_mm(struct mm_struct *mm)
252} 230}
253 231
254static void r3k_flush_cache_range(struct vm_area_struct *vma, 232static void r3k_flush_cache_range(struct vm_area_struct *vma,
255 unsigned long start, unsigned long end) 233 unsigned long start, unsigned long end)
256{ 234{
257} 235}
258 236
259static void r3k_flush_cache_page(struct vm_area_struct *vma, unsigned long page, unsigned long pfn) 237static void r3k_flush_cache_page(struct vm_area_struct *vma,
238 unsigned long addr, unsigned long pfn)
260{ 239{
240 unsigned long kaddr = KSEG0ADDR(pfn << PAGE_SHIFT);
241 int exec = vma->vm_flags & VM_EXEC;
242 struct mm_struct *mm = vma->vm_mm;
243 pgd_t *pgdp;
244 pud_t *pudp;
245 pmd_t *pmdp;
246 pte_t *ptep;
247
248 pr_debug("cpage[%08lx,%08lx]\n",
249 cpu_context(smp_processor_id(), mm), addr);
250
251 /* No ASID => no such page in the cache. */
252 if (cpu_context(smp_processor_id(), mm) == 0)
253 return;
254
255 pgdp = pgd_offset(mm, addr);
256 pudp = pud_offset(pgdp, addr);
257 pmdp = pmd_offset(pudp, addr);
258 ptep = pte_offset(pmdp, addr);
259
260 /* Invalid => no such page in the cache. */
261 if (!(pte_val(*ptep) & _PAGE_PRESENT))
262 return;
263
264 r3k_flush_dcache_range(kaddr, kaddr + PAGE_SIZE);
265 if (exec)
266 r3k_flush_icache_range(kaddr, kaddr + PAGE_SIZE);
261} 267}
262 268
263static void local_r3k_flush_data_cache_page(void *addr) 269static void local_r3k_flush_data_cache_page(void *addr)
@@ -272,9 +278,7 @@ static void r3k_flush_cache_sigtramp(unsigned long addr)
272{ 278{
273 unsigned long flags; 279 unsigned long flags;
274 280
275#ifdef DEBUG_CACHE 281 pr_debug("csigtramp[%08lx]\n", addr);
276 printk("csigtramp[%08lx]", addr);
277#endif
278 282
279 flags = read_c0_status(); 283 flags = read_c0_status();
280 284
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index d7088331fb0f..6806d58211b2 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -345,11 +345,26 @@ static void r4k___flush_cache_all(void)
345 r4k_on_each_cpu(local_r4k___flush_cache_all, NULL, 1, 1); 345 r4k_on_each_cpu(local_r4k___flush_cache_all, NULL, 1, 1);
346} 346}
347 347
348static inline int has_valid_asid(const struct mm_struct *mm)
349{
350#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_MIPS_MT_SMTC)
351 int i;
352
353 for_each_online_cpu(i)
354 if (cpu_context(i, mm))
355 return 1;
356
357 return 0;
358#else
359 return cpu_context(smp_processor_id(), mm);
360#endif
361}
362
348static inline void local_r4k_flush_cache_range(void * args) 363static inline void local_r4k_flush_cache_range(void * args)
349{ 364{
350 struct vm_area_struct *vma = args; 365 struct vm_area_struct *vma = args;
351 366
352 if (!(cpu_context(smp_processor_id(), vma->vm_mm))) 367 if (!(has_valid_asid(vma->vm_mm)))
353 return; 368 return;
354 369
355 r4k_blast_dcache(); 370 r4k_blast_dcache();
@@ -368,7 +383,7 @@ static inline void local_r4k_flush_cache_mm(void * args)
368{ 383{
369 struct mm_struct *mm = args; 384 struct mm_struct *mm = args;
370 385
371 if (!cpu_context(smp_processor_id(), mm)) 386 if (!has_valid_asid(mm))
372 return; 387 return;
373 388
374 /* 389 /*
@@ -420,7 +435,7 @@ static inline void local_r4k_flush_cache_page(void *args)
420 * If ownes no valid ASID yet, cannot possibly have gotten 435 * If ownes no valid ASID yet, cannot possibly have gotten
421 * this page into the cache. 436 * this page into the cache.
422 */ 437 */
423 if (cpu_context(smp_processor_id(), mm) == 0) 438 if (!has_valid_asid(mm))
424 return; 439 return;
425 440
426 addr &= PAGE_MASK; 441 addr &= PAGE_MASK;
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index b1b40527658b..33519ce49540 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -12,8 +12,8 @@
12#include <linux/dma-mapping.h> 12#include <linux/dma-mapping.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/string.h>
16#include <linux/scatterlist.h> 15#include <linux/scatterlist.h>
16#include <linux/string.h>
17 17
18#include <asm/cache.h> 18#include <asm/cache.h>
19#include <asm/io.h> 19#include <asm/io.h>
diff --git a/arch/mips/pci/fixup-pmcmsp.c b/arch/mips/pci/fixup-pmcmsp.c
index 00261211dbfa..65735b1b7665 100644
--- a/arch/mips/pci/fixup-pmcmsp.c
+++ b/arch/mips/pci/fixup-pmcmsp.c
@@ -202,7 +202,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev)
202 * RETURNS: IRQ number 202 * RETURNS: IRQ number
203 * 203 *
204 ****************************************************************************/ 204 ****************************************************************************/
205int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 205int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
206{ 206{
207#if !defined(CONFIG_PMC_MSP7120_GW) && !defined(CONFIG_PMC_MSP7120_EVAL) 207#if !defined(CONFIG_PMC_MSP7120_GW) && !defined(CONFIG_PMC_MSP7120_EVAL)
208 printk(KERN_WARNING "PCI: unknown board, no PCI IRQs assigned.\n"); 208 printk(KERN_WARNING "PCI: unknown board, no PCI IRQs assigned.\n");
diff --git a/arch/mips/pci/fixup-tb0219.c b/arch/mips/pci/fixup-tb0219.c
index 720a2b720c5c..ed87733f6796 100644
--- a/arch/mips/pci/fixup-tb0219.c
+++ b/arch/mips/pci/fixup-tb0219.c
@@ -2,7 +2,7 @@
2 * fixup-tb0219.c, The TANBAC TB0219 specific PCI fixups. 2 * fixup-tb0219.c, The TANBAC TB0219 specific PCI fixups.
3 * 3 *
4 * Copyright (C) 2003 Megasolution Inc. <matsu@megasolution.jp> 4 * Copyright (C) 2003 Megasolution Inc. <matsu@megasolution.jp>
5 * Copyright (C) 2004 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> 5 * Copyright (C) 2004-2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
6 * 6 *
7 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by 8 * it under the terms of the GNU General Public License as published by
diff --git a/arch/mips/pci/ops-pmcmsp.c b/arch/mips/pci/ops-pmcmsp.c
index 059eade96f2e..109c95ca698b 100644
--- a/arch/mips/pci/ops-pmcmsp.c
+++ b/arch/mips/pci/ops-pmcmsp.c
@@ -404,7 +404,7 @@ int msp_pcibios_config_access(unsigned char access_type,
404 if (pciirqflag == 0) { 404 if (pciirqflag == 0) {
405 request_irq(MSP_INT_PCI,/* Hardcoded internal MSP7120 wiring */ 405 request_irq(MSP_INT_PCI,/* Hardcoded internal MSP7120 wiring */
406 bpci_interrupt, 406 bpci_interrupt,
407 SA_SHIRQ | SA_INTERRUPT, 407 IRQF_SHARED | IRQF_DISABLED,
408 "PMC MSP PCI Host", 408 "PMC MSP PCI Host",
409 preg); 409 preg);
410 pciirqflag = ~0; 410 pciirqflag = ~0;
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_serial.c b/arch/mips/pmc-sierra/msp71xx/msp_serial.c
index 15e7b8000b4c..9de34302e5f4 100644
--- a/arch/mips/pmc-sierra/msp71xx/msp_serial.c
+++ b/arch/mips/pmc-sierra/msp71xx/msp_serial.c
@@ -122,7 +122,7 @@ void __init msp_serial_setup(void)
122 up.uartclk = uartclk; 122 up.uartclk = uartclk;
123 up.regshift = 2; 123 up.regshift = 2;
124 up.iotype = UPIO_DWAPB; /* UPIO_MEM like */ 124 up.iotype = UPIO_DWAPB; /* UPIO_MEM like */
125 up.flags = STD_COM_FLAGS; 125 up.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
126 up.type = PORT_16550A; 126 up.type = PORT_16550A;
127 up.line = 0; 127 up.line = 0;
128 up.private_data = (void*)UART0_STATUS_REG; 128 up.private_data = (void*)UART0_STATUS_REG;
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index f5dccf01da11..dc59c3b708ed 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -131,12 +131,12 @@ static struct irq_chip rt_irq_type = {
131static int rt_next_event(unsigned long delta, struct clock_event_device *evt) 131static int rt_next_event(unsigned long delta, struct clock_event_device *evt)
132{ 132{
133 unsigned int cpu = smp_processor_id(); 133 unsigned int cpu = smp_processor_id();
134 int slice = cputoslice(cpu) == 0; 134 int slice putoslice(cpu);
135 unsigned long cnt; 135 unsigned long cnt;
136 136
137 cnt = LOCAL_HUB_L(PI_RT_COUNT); 137 cnt = LOCAL_HUB_L(PI_RT_COUNT);
138 cnt += delta; 138 cnt += delta;
139 LOCAL_HUB_S(slice ? PI_RT_COMPARE_A : PI_RT_COMPARE_B, cnt); 139 LOCAL_HUB_S(PI_RT_COMPARE_A + PI_COUNT_OFFSET * slice, cnt);
140 140
141 return LOCAL_HUB_L(PI_RT_COUNT) >= cnt ? -ETIME : 0; 141 return LOCAL_HUB_L(PI_RT_COUNT) >= cnt ? -ETIME : 0;
142} 142}
@@ -164,9 +164,12 @@ static irqreturn_t hub_rt_counter_handler(int irq, void *dev_id)
164{ 164{
165 struct clock_event_device *cd = dev_id; 165 struct clock_event_device *cd = dev_id;
166 unsigned int cpu = smp_processor_id(); 166 unsigned int cpu = smp_processor_id();
167 int slice = cputoslice(cpu) == 0; 167 int slice = cputoslice(cpu);
168 168
169 LOCAL_HUB_S(slice ? PI_RT_PEND_A : PI_RT_PEND_B, 0); /* Ack */ 169 /*
170 * Ack
171 */
172 LOCAL_HUB_S(PI_RT_PEND_A + PI_COUNT_OFFSET * slice, cnt);
170 cd->event_handler(cd); 173 cd->event_handler(cd);
171 174
172 return IRQ_HANDLED; 175 return IRQ_HANDLED;
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c
index 7e8094f617bf..aab17ddd2f30 100644
--- a/arch/mips/sgi-ip32/ip32-irq.c
+++ b/arch/mips/sgi-ip32/ip32-irq.c
@@ -40,13 +40,6 @@ static void inline flush_mace_bus(void)
40 mace->perif.ctrl.misc; 40 mace->perif.ctrl.misc;
41} 41}
42 42
43#undef DEBUG_IRQ
44#ifdef DEBUG_IRQ
45#define DBG(x...) printk(x)
46#else
47#define DBG(x...)
48#endif
49
50/* 43/*
51 * O2 irq map 44 * O2 irq map
52 * 45 *
@@ -125,6 +118,7 @@ struct irqaction memerr_irq = {
125 .mask = CPU_MASK_NONE, 118 .mask = CPU_MASK_NONE,
126 .name = "CRIME memory error", 119 .name = "CRIME memory error",
127}; 120};
121
128struct irqaction cpuerr_irq = { 122struct irqaction cpuerr_irq = {
129 .handler = crime_cpuerr_intr, 123 .handler = crime_cpuerr_intr,
130 .flags = IRQF_DISABLED, 124 .flags = IRQF_DISABLED,
@@ -139,46 +133,70 @@ struct irqaction cpuerr_irq = {
139 133
140static uint64_t crime_mask; 134static uint64_t crime_mask;
141 135
142static void enable_crime_irq(unsigned int irq) 136static inline void crime_enable_irq(unsigned int irq)
143{ 137{
144 crime_mask |= 1 << (irq - 1); 138 unsigned int bit = irq - CRIME_IRQ_BASE;
139
140 crime_mask |= 1 << bit;
145 crime->imask = crime_mask; 141 crime->imask = crime_mask;
146} 142}
147 143
148static void disable_crime_irq(unsigned int irq) 144static inline void crime_disable_irq(unsigned int irq)
149{ 145{
150 crime_mask &= ~(1 << (irq - 1)); 146 unsigned int bit = irq - CRIME_IRQ_BASE;
147
148 crime_mask &= ~(1 << bit);
151 crime->imask = crime_mask; 149 crime->imask = crime_mask;
152 flush_crime_bus(); 150 flush_crime_bus();
153} 151}
154 152
155static void mask_and_ack_crime_irq(unsigned int irq) 153static void crime_level_mask_and_ack_irq(unsigned int irq)
154{
155 crime_disable_irq(irq);
156}
157
158static void crime_level_end_irq(unsigned int irq)
159{
160 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
161 crime_enable_irq(irq);
162}
163
164static struct irq_chip crime_level_interrupt = {
165 .name = "IP32 CRIME",
166 .ack = crime_level_mask_and_ack_irq,
167 .mask = crime_disable_irq,
168 .mask_ack = crime_level_mask_and_ack_irq,
169 .unmask = crime_enable_irq,
170 .end = crime_level_end_irq,
171};
172
173static void crime_edge_mask_and_ack_irq(unsigned int irq)
156{ 174{
175 unsigned int bit = irq - CRIME_IRQ_BASE;
176 uint64_t crime_int;
177
157 /* Edge triggered interrupts must be cleared. */ 178 /* Edge triggered interrupts must be cleared. */
158 if ((irq >= CRIME_GBE0_IRQ && irq <= CRIME_GBE3_IRQ) 179
159 || (irq >= CRIME_RE_EMPTY_E_IRQ && irq <= CRIME_RE_IDLE_E_IRQ) 180 crime_int = crime->hard_int;
160 || (irq >= CRIME_SOFT0_IRQ && irq <= CRIME_SOFT2_IRQ)) { 181 crime_int &= ~(1 << bit);
161 uint64_t crime_int; 182 crime->hard_int = crime_int;
162 crime_int = crime->hard_int; 183
163 crime_int &= ~(1 << (irq - 1)); 184 crime_disable_irq(irq);
164 crime->hard_int = crime_int;
165 }
166 disable_crime_irq(irq);
167} 185}
168 186
169static void end_crime_irq(unsigned int irq) 187static void crime_edge_end_irq(unsigned int irq)
170{ 188{
171 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) 189 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
172 enable_crime_irq(irq); 190 crime_enable_irq(irq);
173} 191}
174 192
175static struct irq_chip ip32_crime_interrupt = { 193static struct irq_chip crime_edge_interrupt = {
176 .name = "IP32 CRIME", 194 .name = "IP32 CRIME",
177 .ack = mask_and_ack_crime_irq, 195 .ack = crime_edge_mask_and_ack_irq,
178 .mask = disable_crime_irq, 196 .mask = crime_disable_irq,
179 .mask_ack = mask_and_ack_crime_irq, 197 .mask_ack = crime_edge_mask_and_ack_irq,
180 .unmask = enable_crime_irq, 198 .unmask = crime_enable_irq,
181 .end = end_crime_irq, 199 .end = crime_edge_end_irq,
182}; 200};
183 201
184/* 202/*
@@ -265,7 +283,7 @@ static void enable_maceisa_irq(unsigned int irq)
265{ 283{
266 unsigned int crime_int = 0; 284 unsigned int crime_int = 0;
267 285
268 DBG("maceisa enable: %u\n", irq); 286 pr_debug("maceisa enable: %u\n", irq);
269 287
270 switch (irq) { 288 switch (irq) {
271 case MACEISA_AUDIO_SW_IRQ ... MACEISA_AUDIO3_MERR_IRQ: 289 case MACEISA_AUDIO_SW_IRQ ... MACEISA_AUDIO3_MERR_IRQ:
@@ -278,7 +296,7 @@ static void enable_maceisa_irq(unsigned int irq)
278 crime_int = MACE_SUPERIO_INT; 296 crime_int = MACE_SUPERIO_INT;
279 break; 297 break;
280 } 298 }
281 DBG("crime_int %08x enabled\n", crime_int); 299 pr_debug("crime_int %08x enabled\n", crime_int);
282 crime_mask |= crime_int; 300 crime_mask |= crime_int;
283 crime->imask = crime_mask; 301 crime->imask = crime_mask;
284 maceisa_mask |= 1 << (irq - 33); 302 maceisa_mask |= 1 << (irq - 33);
@@ -290,11 +308,11 @@ static void disable_maceisa_irq(unsigned int irq)
290 unsigned int crime_int = 0; 308 unsigned int crime_int = 0;
291 309
292 maceisa_mask &= ~(1 << (irq - 33)); 310 maceisa_mask &= ~(1 << (irq - 33));
293 if(!(maceisa_mask & MACEISA_AUDIO_INT)) 311 if (!(maceisa_mask & MACEISA_AUDIO_INT))
294 crime_int |= MACE_AUDIO_INT; 312 crime_int |= MACE_AUDIO_INT;
295 if(!(maceisa_mask & MACEISA_MISC_INT)) 313 if (!(maceisa_mask & MACEISA_MISC_INT))
296 crime_int |= MACE_MISC_INT; 314 crime_int |= MACE_MISC_INT;
297 if(!(maceisa_mask & MACEISA_SUPERIO_INT)) 315 if (!(maceisa_mask & MACEISA_SUPERIO_INT))
298 crime_int |= MACE_SUPERIO_INT; 316 crime_int |= MACE_SUPERIO_INT;
299 crime_mask &= ~crime_int; 317 crime_mask &= ~crime_int;
300 crime->imask = crime_mask; 318 crime->imask = crime_mask;
@@ -327,12 +345,12 @@ static void end_maceisa_irq(unsigned irq)
327} 345}
328 346
329static struct irq_chip ip32_maceisa_interrupt = { 347static struct irq_chip ip32_maceisa_interrupt = {
330 .name = "IP32 MACE ISA", 348 .name = "IP32 MACE ISA",
331 .ack = mask_and_ack_maceisa_irq, 349 .ack = mask_and_ack_maceisa_irq,
332 .mask = disable_maceisa_irq, 350 .mask = disable_maceisa_irq,
333 .mask_ack = mask_and_ack_maceisa_irq, 351 .mask_ack = mask_and_ack_maceisa_irq,
334 .unmask = enable_maceisa_irq, 352 .unmask = enable_maceisa_irq,
335 .end = end_maceisa_irq, 353 .end = end_maceisa_irq,
336}; 354};
337 355
338/* This is used for regular non-ISA, non-PCI MACE interrupts. That means 356/* This is used for regular non-ISA, non-PCI MACE interrupts. That means
@@ -411,7 +429,7 @@ static void ip32_irq0(void)
411 irq = __ffs(mace_int & maceisa_mask) + MACEISA_AUDIO_SW_IRQ; 429 irq = __ffs(mace_int & maceisa_mask) + MACEISA_AUDIO_SW_IRQ;
412 } 430 }
413 431
414 DBG("*irq %u*\n", irq); 432 pr_debug("*irq %u*\n", irq);
415 do_IRQ(irq); 433 do_IRQ(irq);
416} 434}
417 435
@@ -472,23 +490,31 @@ void __init arch_init_irq(void)
472 490
473 mips_cpu_irq_init(); 491 mips_cpu_irq_init();
474 for (irq = MIPS_CPU_IRQ_BASE + 8; irq <= IP32_IRQ_MAX; irq++) { 492 for (irq = MIPS_CPU_IRQ_BASE + 8; irq <= IP32_IRQ_MAX; irq++) {
475 struct irq_chip *chip;
476
477 switch (irq) { 493 switch (irq) {
478 case MACE_VID_IN1_IRQ ... MACE_PCI_BRIDGE_IRQ: 494 case MACE_VID_IN1_IRQ ... MACE_PCI_BRIDGE_IRQ:
479 chip = &ip32_mace_interrupt; 495 set_irq_chip(irq, &ip32_mace_interrupt);
480 break; 496 break;
481 case MACEPCI_SCSI0_IRQ ... MACEPCI_SHARED2_IRQ: 497 case MACEPCI_SCSI0_IRQ ... MACEPCI_SHARED2_IRQ:
482 chip = &ip32_macepci_interrupt; 498 set_irq_chip(irq, &ip32_macepci_interrupt);
499 break;
500 case CRIME_GBE0_IRQ ... CRIME_GBE3_IRQ:
501 set_irq_chip(irq, &crime_edge_interrupt);
502 break;
503 case CRIME_CPUERR_IRQ:
504 case CRIME_MEMERR_IRQ:
505 set_irq_chip(irq, &crime_level_interrupt);
483 break; 506 break;
484 case CRIME_GBE0_IRQ ... CRIME_VICE_IRQ: 507 case CRIME_RE_EMPTY_E_IRQ ... CRIME_RE_IDLE_E_IRQ:
485 chip = &ip32_crime_interrupt; 508 case CRIME_SOFT0_IRQ ... CRIME_SOFT2_IRQ:
509 set_irq_chip(irq, &crime_edge_interrupt);
510 break;
511 case CRIME_VICE_IRQ:
512 set_irq_chip(irq, &crime_edge_interrupt);
486 break; 513 break;
487 default: 514 default:
488 chip = &ip32_maceisa_interrupt; 515 set_irq_chip(irq, &ip32_maceisa_interrupt);
516 break;
489 } 517 }
490
491 set_irq_chip(irq, chip);
492 } 518 }
493 setup_irq(CRIME_MEMERR_IRQ, &memerr_irq); 519 setup_irq(CRIME_MEMERR_IRQ, &memerr_irq);
494 setup_irq(CRIME_CPUERR_IRQ, &cpuerr_irq); 520 setup_irq(CRIME_CPUERR_IRQ, &cpuerr_irq);
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c
index 10299bafeab7..61790c4bfb60 100644
--- a/arch/mips/sibyte/bcm1480/irq.c
+++ b/arch/mips/sibyte/bcm1480/irq.c
@@ -280,27 +280,6 @@ static struct irqaction bcm1480_dummy_action = {
280 .dev_id = 0 280 .dev_id = 0
281}; 281};
282 282
283int bcm1480_steal_irq(int irq)
284{
285 struct irq_desc *desc = irq_desc + irq;
286 unsigned long flags;
287 int retval = 0;
288
289 if (irq >= BCM1480_NR_IRQS)
290 return -EINVAL;
291
292 spin_lock_irqsave(&desc->lock, flags);
293 /* Don't allow sharing at all for these */
294 if (desc->action != NULL)
295 retval = -EBUSY;
296 else {
297 desc->action = &bcm1480_dummy_action;
298 desc->depth = 0;
299 }
300 spin_unlock_irqrestore(&desc->lock, flags);
301 return 0;
302}
303
304/* 283/*
305 * init_IRQ is called early in the boot sequence from init/main.c. It 284 * init_IRQ is called early in the boot sequence from init/main.c. It
306 * is responsible for setting up the interrupt mapper and installing the 285 * is responsible for setting up the interrupt mapper and installing the
@@ -386,8 +365,6 @@ void __init arch_init_irq(void)
386 __raw_writeq(tmp, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MASK_L))); 365 __raw_writeq(tmp, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MASK_L)));
387 } 366 }
388 367
389 bcm1480_steal_irq(K_BCM1480_INT_MBOX_0_0);
390
391 /* 368 /*
392 * Note that the timer interrupts are also mapped, but this is 369 * Note that the timer interrupts are also mapped, but this is
393 * done in bcm1480_time_init(). Also, the profiling driver 370 * done in bcm1480_time_init(). Also, the profiling driver
@@ -411,7 +388,6 @@ void __init arch_init_irq(void)
411 /* QQQ FIXME */ 388 /* QQQ FIXME */
412 __raw_writeq(M_DUART_IMR_BRK, IO_SPACE_BASE + A_DUART_IMRREG(kgdb_port)); 389 __raw_writeq(M_DUART_IMR_BRK, IO_SPACE_BASE + A_DUART_IMRREG(kgdb_port));
413 390
414 bcm1480_steal_irq(kgdb_irq);
415 __raw_writeq(IMR_IP6_VAL, 391 __raw_writeq(IMR_IP6_VAL,
416 IO_SPACE_BASE + A_BCM1480_IMR_REGISTER(0, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + 392 IO_SPACE_BASE + A_BCM1480_IMR_REGISTER(0, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) +
417 (kgdb_irq<<3)); 393 (kgdb_irq<<3));
diff --git a/arch/mips/sibyte/bcm1480/time.c b/arch/mips/sibyte/bcm1480/time.c
index 610f0253954d..bbf19bfabccb 100644
--- a/arch/mips/sibyte/bcm1480/time.c
+++ b/arch/mips/sibyte/bcm1480/time.c
@@ -37,8 +37,6 @@
37#define IMR_IP3_VAL K_BCM1480_INT_MAP_I1 37#define IMR_IP3_VAL K_BCM1480_INT_MAP_I1
38#define IMR_IP4_VAL K_BCM1480_INT_MAP_I2 38#define IMR_IP4_VAL K_BCM1480_INT_MAP_I2
39 39
40extern int bcm1480_steal_irq(int irq);
41
42/* 40/*
43 * The general purpose timer ticks at 1MHz independent if 41 * The general purpose timer ticks at 1MHz independent if
44 * the rest of the system 42 * the rest of the system
@@ -121,7 +119,7 @@ void __cpuinit sb1480_clockevent_init(void)
121 sprintf(name, "bcm1480-counter %d", cpu); 119 sprintf(name, "bcm1480-counter %d", cpu);
122 cd->name = name; 120 cd->name = name;
123 cd->features = CLOCK_EVT_FEAT_PERIODIC | 121 cd->features = CLOCK_EVT_FEAT_PERIODIC |
124 CLOCK_EVT_MODE_ONESHOT; 122 CLOCK_EVT_FEAT_ONESHOT;
125 clockevent_set_clock(cd, V_SCD_TIMER_FREQ); 123 clockevent_set_clock(cd, V_SCD_TIMER_FREQ);
126 cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd); 124 cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd);
127 cd->min_delta_ns = clockevent_delta2ns(1, cd); 125 cd->min_delta_ns = clockevent_delta2ns(1, cd);
@@ -142,7 +140,6 @@ void __cpuinit sb1480_clockevent_init(void)
142 R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + (irq << 3))); 140 R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + (irq << 3)));
143 141
144 bcm1480_unmask_irq(cpu, irq); 142 bcm1480_unmask_irq(cpu, irq);
145 bcm1480_steal_irq(irq);
146 143
147 action->handler = sibyte_counter_handler; 144 action->handler = sibyte_counter_handler;
148 action->flags = IRQF_DISABLED | IRQF_PERCPU; 145 action->flags = IRQF_DISABLED | IRQF_PERCPU;
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c
index 53780a179d1d..52d18fc91f32 100644
--- a/arch/mips/sibyte/sb1250/irq.c
+++ b/arch/mips/sibyte/sb1250/irq.c
@@ -250,27 +250,6 @@ static struct irqaction sb1250_dummy_action = {
250 .dev_id = 0 250 .dev_id = 0
251}; 251};
252 252
253int sb1250_steal_irq(int irq)
254{
255 struct irq_desc *desc = irq_desc + irq;
256 unsigned long flags;
257 int retval = 0;
258
259 if (irq >= SB1250_NR_IRQS)
260 return -EINVAL;
261
262 spin_lock_irqsave(&desc->lock, flags);
263 /* Don't allow sharing at all for these */
264 if (desc->action != NULL)
265 retval = -EBUSY;
266 else {
267 desc->action = &sb1250_dummy_action;
268 desc->depth = 0;
269 }
270 spin_unlock_irqrestore(&desc->lock, flags);
271 return 0;
272}
273
274/* 253/*
275 * arch_init_irq is called early in the boot sequence from init/main.c via 254 * arch_init_irq is called early in the boot sequence from init/main.c via
276 * init_IRQ. It is responsible for setting up the interrupt mapper and 255 * init_IRQ. It is responsible for setting up the interrupt mapper and
@@ -342,8 +321,6 @@ void __init arch_init_irq(void)
342 __raw_writeq(tmp, IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MASK))); 321 __raw_writeq(tmp, IOADDR(A_IMR_REGISTER(0, R_IMR_INTERRUPT_MASK)));
343 __raw_writeq(tmp, IOADDR(A_IMR_REGISTER(1, R_IMR_INTERRUPT_MASK))); 322 __raw_writeq(tmp, IOADDR(A_IMR_REGISTER(1, R_IMR_INTERRUPT_MASK)));
344 323
345 sb1250_steal_irq(K_INT_MBOX_0);
346
347 /* 324 /*
348 * Note that the timer interrupts are also mapped, but this is 325 * Note that the timer interrupts are also mapped, but this is
349 * done in sb1250_time_init(). Also, the profiling driver 326 * done in sb1250_time_init(). Also, the profiling driver
@@ -367,7 +344,6 @@ void __init arch_init_irq(void)
367 __raw_writeq(M_DUART_IMR_BRK, 344 __raw_writeq(M_DUART_IMR_BRK,
368 IOADDR(A_DUART_IMRREG(kgdb_port))); 345 IOADDR(A_DUART_IMRREG(kgdb_port)));
369 346
370 sb1250_steal_irq(kgdb_irq);
371 __raw_writeq(IMR_IP6_VAL, 347 __raw_writeq(IMR_IP6_VAL,
372 IOADDR(A_IMR_REGISTER(0, 348 IOADDR(A_IMR_REGISTER(0,
373 R_IMR_INTERRUPT_MAP_BASE) + 349 R_IMR_INTERRUPT_MAP_BASE) +
diff --git a/arch/mips/sibyte/sb1250/time.c b/arch/mips/sibyte/sb1250/time.c
index a41e908bc218..95ad34e3fbac 100644
--- a/arch/mips/sibyte/sb1250/time.c
+++ b/arch/mips/sibyte/sb1250/time.c
@@ -50,8 +50,6 @@
50#define SB1250_HPT_VALUE M_SCD_TIMER_CNT /* max value */ 50#define SB1250_HPT_VALUE M_SCD_TIMER_CNT /* max value */
51 51
52 52
53extern int sb1250_steal_irq(int irq);
54
55/* 53/*
56 * The general purpose timer ticks at 1 Mhz independent if 54 * The general purpose timer ticks at 1 Mhz independent if
57 * the rest of the system 55 * the rest of the system
@@ -139,7 +137,7 @@ void __cpuinit sb1250_clockevent_init(void)
139 sprintf(name, "bcm1480-counter %d", cpu); 137 sprintf(name, "bcm1480-counter %d", cpu);
140 cd->name = name; 138 cd->name = name;
141 cd->features = CLOCK_EVT_FEAT_PERIODIC | 139 cd->features = CLOCK_EVT_FEAT_PERIODIC |
142 CLOCK_EVT_MODE_ONESHOT; 140 CLOCK_EVT_FEAT_ONESHOT;
143 clockevent_set_clock(cd, V_SCD_TIMER_FREQ); 141 clockevent_set_clock(cd, V_SCD_TIMER_FREQ);
144 cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd); 142 cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd);
145 cd->min_delta_ns = clockevent_delta2ns(1, cd); 143 cd->min_delta_ns = clockevent_delta2ns(1, cd);
@@ -159,7 +157,6 @@ void __cpuinit sb1250_clockevent_init(void)
159 cd->cpumask = cpumask_of_cpu(0); 157 cd->cpumask = cpumask_of_cpu(0);
160 158
161 sb1250_unmask_irq(cpu, irq); 159 sb1250_unmask_irq(cpu, irq);
162 sb1250_steal_irq(irq);
163 160
164 action->handler = sibyte_counter_handler; 161 action->handler = sibyte_counter_handler;
165 action->flags = IRQF_DISABLED | IRQF_PERCPU; 162 action->flags = IRQF_DISABLED | IRQF_PERCPU;
diff --git a/arch/mips/sni/time.c b/arch/mips/sni/time.c
index 0910b35cb71f..60bc62ef0935 100644
--- a/arch/mips/sni/time.c
+++ b/arch/mips/sni/time.c
@@ -11,27 +11,78 @@
11#define SNI_COUNTER2_DIV 64 11#define SNI_COUNTER2_DIV 64
12#define SNI_COUNTER0_DIV ((SNI_CLOCK_TICK_RATE / SNI_COUNTER2_DIV) / HZ) 12#define SNI_COUNTER0_DIV ((SNI_CLOCK_TICK_RATE / SNI_COUNTER2_DIV) / HZ)
13 13
14static void sni_a20r_timer_ack(void) 14static void a20r_set_mode(enum clock_event_mode mode,
15 struct clock_event_device *evt)
15{ 16{
16 *(volatile u8 *)A20R_PT_TIM0_ACK = 0x0; wmb(); 17 switch (mode) {
18 case CLOCK_EVT_MODE_PERIODIC:
19 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0x34;
20 wmb();
21 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV;
22 wmb();
23 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV >> 8;
24 wmb();
25
26 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0xb4;
27 wmb();
28 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = SNI_COUNTER2_DIV;
29 wmb();
30 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = SNI_COUNTER2_DIV >> 8;
31 wmb();
32
33 break;
34 case CLOCK_EVT_MODE_ONESHOT:
35 case CLOCK_EVT_MODE_UNUSED:
36 case CLOCK_EVT_MODE_SHUTDOWN:
37 break;
38 case CLOCK_EVT_MODE_RESUME:
39 break;
40 }
17} 41}
18 42
43static struct clock_event_device a20r_clockevent_device = {
44 .name = "a20r-timer",
45 .features = CLOCK_EVT_FEAT_PERIODIC,
46
47 /* .mult, .shift, .max_delta_ns and .min_delta_ns left uninitialized */
48
49 .rating = 300,
50 .irq = SNI_A20R_IRQ_TIMER,
51 .set_mode = a20r_set_mode,
52};
53
54static irqreturn_t a20r_interrupt(int irq, void *dev_id)
55{
56 struct clock_event_device *cd = dev_id;
57
58 *(volatile u8 *)A20R_PT_TIM0_ACK = 0;
59 wmb();
60
61 cd->event_handler(cd);
62
63 return IRQ_HANDLED;
64}
65
66static struct irqaction a20r_irqaction = {
67 .handler = a20r_interrupt,
68 .flags = IRQF_DISABLED | IRQF_PERCPU,
69 .name = "a20r-timer",
70};
71
19/* 72/*
20 * a20r platform uses 2 counters to divide the input frequency. 73 * a20r platform uses 2 counters to divide the input frequency.
21 * Counter 2 output is connected to Counter 0 & 1 input. 74 * Counter 2 output is connected to Counter 0 & 1 input.
22 */ 75 */
23static void __init sni_a20r_timer_setup(struct irqaction *irq) 76static void __init sni_a20r_timer_setup(void)
24{ 77{
25 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0x34; wmb(); 78 struct clock_event_device *cd = &a20r_clockevent_device;
26 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = (SNI_COUNTER0_DIV) & 0xff; wmb(); 79 struct irqaction *action = &a20r_irqaction;
27 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = (SNI_COUNTER0_DIV >> 8) & 0xff; wmb(); 80 unsigned int cpu = smp_processor_id();
28 81
29 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0xb4; wmb(); 82 cd->cpumask = cpumask_of_cpu(cpu);
30 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = (SNI_COUNTER2_DIV) & 0xff; wmb();
31 *(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = (SNI_COUNTER2_DIV >> 8) & 0xff; wmb();
32 83
33 setup_irq(SNI_A20R_IRQ_TIMER, irq); 84 action->dev_id = cd;
34 mips_timer_ack = sni_a20r_timer_ack; 85 setup_irq(SNI_A20R_IRQ_TIMER, &a20r_irqaction);
35} 86}
36 87
37#define SNI_8254_TICK_RATE 1193182UL 88#define SNI_8254_TICK_RATE 1193182UL
@@ -119,17 +170,14 @@ void __init plat_time_init(void)
119 mips_hpt_frequency = r4k_tick * HZ; 170 mips_hpt_frequency = r4k_tick * HZ;
120 171
121 setup_pit_timer(); 172 setup_pit_timer();
122}
123 173
124void __init plat_timer_setup(struct irqaction *irq)
125{
126 switch (sni_brd_type) { 174 switch (sni_brd_type) {
127 case SNI_BRD_10: 175 case SNI_BRD_10:
128 case SNI_BRD_10NEW: 176 case SNI_BRD_10NEW:
129 case SNI_BRD_TOWER_OASIC: 177 case SNI_BRD_TOWER_OASIC:
130 case SNI_BRD_MINITOWER: 178 case SNI_BRD_MINITOWER:
131 sni_a20r_timer_setup(irq); 179 sni_a20r_timer_setup();
132 break; 180 break;
133 } 181 }
134} 182}
135 183
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
index c7470fba6180..0299595ce1c4 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
+++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
@@ -63,6 +63,7 @@
63#include <asm/processor.h> 63#include <asm/processor.h>
64#include <asm/reboot.h> 64#include <asm/reboot.h>
65#include <asm/time.h> 65#include <asm/time.h>
66#include <asm/txx9tmr.h>
66#include <linux/bootmem.h> 67#include <linux/bootmem.h>
67#include <linux/blkdev.h> 68#include <linux/blkdev.h>
68#ifdef CONFIG_TOSHIBA_FPCIB0 69#ifdef CONFIG_TOSHIBA_FPCIB0
@@ -93,7 +94,6 @@
93 94
94#define TOSHIBA_RBTX4927_SETUP_EFWFU ( 1 << 3 ) 95#define TOSHIBA_RBTX4927_SETUP_EFWFU ( 1 << 3 )
95#define TOSHIBA_RBTX4927_SETUP_SETUP ( 1 << 4 ) 96#define TOSHIBA_RBTX4927_SETUP_SETUP ( 1 << 4 )
96#define TOSHIBA_RBTX4927_SETUP_TIME_INIT ( 1 << 5 )
97#define TOSHIBA_RBTX4927_SETUP_PCIBIOS ( 1 << 7 ) 97#define TOSHIBA_RBTX4927_SETUP_PCIBIOS ( 1 << 7 )
98#define TOSHIBA_RBTX4927_SETUP_PCI1 ( 1 << 8 ) 98#define TOSHIBA_RBTX4927_SETUP_PCI1 ( 1 << 8 )
99#define TOSHIBA_RBTX4927_SETUP_PCI2 ( 1 << 9 ) 99#define TOSHIBA_RBTX4927_SETUP_PCI2 ( 1 << 9 )
@@ -130,7 +130,6 @@ extern void toshiba_rbtx4927_power_off(void);
130 130
131int tx4927_using_backplane = 0; 131int tx4927_using_backplane = 0;
132 132
133extern void gt64120_time_init(void);
134extern void toshiba_rbtx4927_irq_setup(void); 133extern void toshiba_rbtx4927_irq_setup(void);
135 134
136char *prom_getcmdline(void); 135char *prom_getcmdline(void);
@@ -721,6 +720,7 @@ void toshiba_rbtx4927_power_off(void)
721 720
722void __init toshiba_rbtx4927_setup(void) 721void __init toshiba_rbtx4927_setup(void)
723{ 722{
723 int i;
724 u32 cp0_config; 724 u32 cp0_config;
725 char *argptr; 725 char *argptr;
726 726
@@ -764,6 +764,9 @@ void __init toshiba_rbtx4927_setup(void)
764 _machine_halt = toshiba_rbtx4927_halt; 764 _machine_halt = toshiba_rbtx4927_halt;
765 pm_power_off = toshiba_rbtx4927_power_off; 765 pm_power_off = toshiba_rbtx4927_power_off;
766 766
767 for (i = 0; i < TX4927_NR_TMR; i++)
768 txx9_tmr_init(TX4927_TMR_REG(0) & 0xfffffffffULL);
769
767#ifdef CONFIG_PCI 770#ifdef CONFIG_PCI
768 771
769 /* PCIC */ 772 /* PCIC */
@@ -892,7 +895,6 @@ void __init toshiba_rbtx4927_setup(void)
892#ifdef CONFIG_SERIAL_TXX9 895#ifdef CONFIG_SERIAL_TXX9
893 { 896 {
894 extern int early_serial_txx9_setup(struct uart_port *port); 897 extern int early_serial_txx9_setup(struct uart_port *port);
895 int i;
896 struct uart_port req; 898 struct uart_port req;
897 for(i = 0; i < 2; i++) { 899 for(i = 0; i < 2; i++) {
898 memset(&req, 0, sizeof(req)); 900 memset(&req, 0, sizeof(req));
@@ -937,12 +939,11 @@ void __init toshiba_rbtx4927_setup(void)
937void __init 939void __init
938toshiba_rbtx4927_time_init(void) 940toshiba_rbtx4927_time_init(void)
939{ 941{
940 TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_TIME_INIT, "-\n");
941
942 mips_hpt_frequency = tx4927_cpu_clock / 2; 942 mips_hpt_frequency = tx4927_cpu_clock / 2;
943 943 if (tx4927_ccfgptr->ccfg & TX4927_CCFG_TINTDIS)
944 TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_TIME_INIT, "+\n"); 944 txx9_clockevent_init(TX4927_TMR_REG(0) & 0xfffffffffULL,
945 945 TXX9_IRQ_BASE + 17,
946 50000000);
946} 947}
947 948
948static int __init toshiba_rbtx4927_rtc_init(void) 949static int __init toshiba_rbtx4927_rtc_init(void)
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/setup.c b/arch/mips/tx4938/toshiba_rbtx4938/setup.c
index ceecaf498957..4a8152375efe 100644
--- a/arch/mips/tx4938/toshiba_rbtx4938/setup.c
+++ b/arch/mips/tx4938/toshiba_rbtx4938/setup.c
@@ -26,6 +26,7 @@
26#include <asm/reboot.h> 26#include <asm/reboot.h>
27#include <asm/irq.h> 27#include <asm/irq.h>
28#include <asm/time.h> 28#include <asm/time.h>
29#include <asm/txx9tmr.h>
29#include <asm/uaccess.h> 30#include <asm/uaccess.h>
30#include <asm/io.h> 31#include <asm/io.h>
31#include <asm/bootinfo.h> 32#include <asm/bootinfo.h>
@@ -773,15 +774,8 @@ void __init tx4938_board_setup(void)
773 } 774 }
774 775
775 /* TMR */ 776 /* TMR */
776 /* disable all timers */ 777 for (i = 0; i < TX4938_NR_TMR; i++)
777 for (i = 0; i < TX4938_NR_TMR; i++) { 778 txx9_tmr_init(TX4938_TMR_REG(i) & 0xfffffffffULL);
778 tx4938_tmrptr(i)->tcr = 0x00000020;
779 tx4938_tmrptr(i)->tisr = 0;
780 tx4938_tmrptr(i)->cpra = 0xffffffff;
781 tx4938_tmrptr(i)->itmr = 0;
782 tx4938_tmrptr(i)->ccdr = 0;
783 tx4938_tmrptr(i)->pgmr = 0;
784 }
785 779
786 /* enable DMA */ 780 /* enable DMA */
787 TX4938_WR64(0xff1fb150, TX4938_DMA_MCR_MSTEN); 781 TX4938_WR64(0xff1fb150, TX4938_DMA_MCR_MSTEN);
@@ -852,12 +846,13 @@ void tx4938_report_pcic_status(void)
852 846
853#endif /* CONFIG_PCI */ 847#endif /* CONFIG_PCI */
854 848
855/* We use onchip r4k counter or TMR timer as our system wide timer
856 * interrupt running at 100HZ. */
857
858void __init plat_time_init(void) 849void __init plat_time_init(void)
859{ 850{
860 mips_hpt_frequency = txx9_cpu_clock / 2; 851 mips_hpt_frequency = txx9_cpu_clock / 2;
852 if (tx4938_ccfgptr->ccfg & TX4938_CCFG_TINTDIS)
853 txx9_clockevent_init(TX4938_TMR_REG(0) & 0xfffffffffULL,
854 TXX9_IRQ_BASE + TX4938_IR_TMR(0),
855 txx9_gbus_clock / 2);
861} 856}
862 857
863void __init toshiba_rbtx4938_setup(void) 858void __init toshiba_rbtx4938_setup(void)
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 4ec716d8c1a6..1330061020ab 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -513,7 +513,7 @@ config ZFCPDUMP
513 default n 513 default n
514 help 514 help
515 Select this option if you want to build an zfcpdump enabled kernel. 515 Select this option if you want to build an zfcpdump enabled kernel.
516 Refer to "Documentation/s390/zfcpdump.txt" for more details on this. 516 Refer to <file:Documentation/s390/zfcpdump.txt> for more details on this.
517 517
518endmenu 518endmenu
519 519
diff --git a/arch/sh64/Kconfig b/arch/sh64/Kconfig
index ba204bac49df..6884d5a518ad 100644
--- a/arch/sh64/Kconfig
+++ b/arch/sh64/Kconfig
@@ -1,6 +1,6 @@
1# 1#
2# For a description of the syntax of this configuration file, 2# For a description of the syntax of this configuration file,
3# see Documentation/kbuild/config-language.txt. 3# see Documentation/kbuild/kconfig-language.txt.
4# 4#
5 5
6mainmenu "Linux/SH64 Kernel Configuration" 6mainmenu "Linux/SH64 Kernel Configuration"
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index bd59ab0760b3..10b212a1f9f5 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -408,7 +408,7 @@ config SUNOS_EMUL
408 408
409config SOLARIS_EMUL 409config SOLARIS_EMUL
410 tristate "Solaris binary emulation (EXPERIMENTAL)" 410 tristate "Solaris binary emulation (EXPERIMENTAL)"
411 depends on SPARC32_COMPAT && EXPERIMENTAL 411 depends on SPARC32_COMPAT && NET && EXPERIMENTAL
412 help 412 help
413 This is experimental code which will enable you to run (many) 413 This is experimental code which will enable you to run (many)
414 Solaris binaries on your SPARC Linux machine. 414 Solaris binaries on your SPARC Linux machine.
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig
index e023d4b2fef4..22734ac08c8a 100644
--- a/arch/sparc64/defconfig
+++ b/arch/sparc64/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23 3# Linux kernel version: 2.6.24-rc1
4# Sun Oct 21 19:57:44 2007 4# Wed Oct 31 15:36:47 2007
5# 5#
6CONFIG_SPARC=y 6CONFIG_SPARC=y
7CONFIG_SPARC64=y 7CONFIG_SPARC64=y
@@ -19,6 +19,7 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
19CONFIG_AUDIT_ARCH=y 19CONFIG_AUDIT_ARCH=y
20CONFIG_ARCH_NO_VIRT_TO_BUS=y 20CONFIG_ARCH_NO_VIRT_TO_BUS=y
21CONFIG_OF=y 21CONFIG_OF=y
22CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
22CONFIG_SPARC64_PAGE_SIZE_8KB=y 23CONFIG_SPARC64_PAGE_SIZE_8KB=y
23# CONFIG_SPARC64_PAGE_SIZE_64KB is not set 24# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
24# CONFIG_SPARC64_PAGE_SIZE_512KB is not set 25# CONFIG_SPARC64_PAGE_SIZE_512KB is not set
@@ -55,7 +56,8 @@ CONFIG_FAIR_USER_SCHED=y
55# CONFIG_FAIR_CGROUP_SCHED is not set 56# CONFIG_FAIR_CGROUP_SCHED is not set
56CONFIG_SYSFS_DEPRECATED=y 57CONFIG_SYSFS_DEPRECATED=y
57CONFIG_RELAY=y 58CONFIG_RELAY=y
58# CONFIG_BLK_DEV_INITRD is not set 59CONFIG_BLK_DEV_INITRD=y
60CONFIG_INITRAMFS_SOURCE=""
59CONFIG_CC_OPTIMIZE_FOR_SIZE=y 61CONFIG_CC_OPTIMIZE_FOR_SIZE=y
60CONFIG_SYSCTL=y 62CONFIG_SYSCTL=y
61# CONFIG_EMBEDDED is not set 63# CONFIG_EMBEDDED is not set
@@ -117,22 +119,7 @@ CONFIG_NO_HZ=y
117CONFIG_HIGH_RES_TIMERS=y 119CONFIG_HIGH_RES_TIMERS=y
118CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 120CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
119# CONFIG_SMP is not set 121# CONFIG_SMP is not set
120CONFIG_CPU_FREQ=y 122# CONFIG_CPU_FREQ is not set
121CONFIG_CPU_FREQ_TABLE=m
122# CONFIG_CPU_FREQ_DEBUG is not set
123CONFIG_CPU_FREQ_STAT=m
124CONFIG_CPU_FREQ_STAT_DETAILS=y
125CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
126# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
127# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
128# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
129CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
130CONFIG_CPU_FREQ_GOV_POWERSAVE=m
131CONFIG_CPU_FREQ_GOV_USERSPACE=m
132CONFIG_CPU_FREQ_GOV_ONDEMAND=m
133CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
134CONFIG_US3_FREQ=m
135CONFIG_US2E_FREQ=m
136CONFIG_RWSEM_XCHGADD_ALGORITHM=y 123CONFIG_RWSEM_XCHGADD_ALGORITHM=y
137CONFIG_GENERIC_FIND_NEXT_BIT=y 124CONFIG_GENERIC_FIND_NEXT_BIT=y
138CONFIG_GENERIC_HWEIGHT=y 125CONFIG_GENERIC_HWEIGHT=y
@@ -161,7 +148,7 @@ CONFIG_SBUS=y
161CONFIG_SBUSCHAR=y 148CONFIG_SBUSCHAR=y
162CONFIG_SUN_AUXIO=y 149CONFIG_SUN_AUXIO=y
163CONFIG_SUN_IO=y 150CONFIG_SUN_IO=y
164# CONFIG_SUN_LDOMS is not set 151CONFIG_SUN_LDOMS=y
165CONFIG_PCI=y 152CONFIG_PCI=y
166CONFIG_PCI_DOMAINS=y 153CONFIG_PCI_DOMAINS=y
167CONFIG_PCI_SYSCALL=y 154CONFIG_PCI_SYSCALL=y
@@ -338,6 +325,7 @@ CONFIG_CDROM_PKTCDVD=m
338CONFIG_CDROM_PKTCDVD_BUFFERS=8 325CONFIG_CDROM_PKTCDVD_BUFFERS=8
339CONFIG_CDROM_PKTCDVD_WCACHE=y 326CONFIG_CDROM_PKTCDVD_WCACHE=y
340CONFIG_ATA_OVER_ETH=m 327CONFIG_ATA_OVER_ETH=m
328CONFIG_SUNVDC=m
341CONFIG_MISC_DEVICES=y 329CONFIG_MISC_DEVICES=y
342# CONFIG_PHANTOM is not set 330# CONFIG_PHANTOM is not set
343# CONFIG_EEPROM_93CX6 is not set 331# CONFIG_EEPROM_93CX6 is not set
@@ -440,12 +428,12 @@ CONFIG_SCSI_WAIT_SCAN=m
440# 428#
441CONFIG_SCSI_SPI_ATTRS=y 429CONFIG_SCSI_SPI_ATTRS=y
442CONFIG_SCSI_FC_ATTRS=y 430CONFIG_SCSI_FC_ATTRS=y
443CONFIG_SCSI_ISCSI_ATTRS=m 431# CONFIG_SCSI_ISCSI_ATTRS is not set
444# CONFIG_SCSI_SAS_ATTRS is not set 432# CONFIG_SCSI_SAS_ATTRS is not set
445# CONFIG_SCSI_SAS_LIBSAS is not set 433# CONFIG_SCSI_SAS_LIBSAS is not set
446# CONFIG_SCSI_SRP_ATTRS is not set 434# CONFIG_SCSI_SRP_ATTRS is not set
447CONFIG_SCSI_LOWLEVEL=y 435CONFIG_SCSI_LOWLEVEL=y
448CONFIG_ISCSI_TCP=m 436# CONFIG_ISCSI_TCP is not set
449# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 437# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
450# CONFIG_SCSI_3W_9XXX is not set 438# CONFIG_SCSI_3W_9XXX is not set
451# CONFIG_SCSI_ACARD is not set 439# CONFIG_SCSI_ACARD is not set
@@ -506,7 +494,7 @@ CONFIG_DM_ZERO=m
506# CONFIG_I2O is not set 494# CONFIG_I2O is not set
507CONFIG_NETDEVICES=y 495CONFIG_NETDEVICES=y
508# CONFIG_NETDEVICES_MULTIQUEUE is not set 496# CONFIG_NETDEVICES_MULTIQUEUE is not set
509CONFIG_DUMMY=m 497# CONFIG_DUMMY is not set
510# CONFIG_BONDING is not set 498# CONFIG_BONDING is not set
511# CONFIG_MACVLAN is not set 499# CONFIG_MACVLAN is not set
512# CONFIG_EQUALIZER is not set 500# CONFIG_EQUALIZER is not set
@@ -523,6 +511,7 @@ CONFIG_MII=m
523# CONFIG_SUNQE is not set 511# CONFIG_SUNQE is not set
524# CONFIG_SUNGEM is not set 512# CONFIG_SUNGEM is not set
525CONFIG_CASSINI=m 513CONFIG_CASSINI=m
514CONFIG_SUNVNET=m
526# CONFIG_NET_VENDOR_3COM is not set 515# CONFIG_NET_VENDOR_3COM is not set
527# CONFIG_NET_TULIP is not set 516# CONFIG_NET_TULIP is not set
528# CONFIG_HP100 is not set 517# CONFIG_HP100 is not set
@@ -577,7 +566,7 @@ CONFIG_NETDEV_10000=y
577# CONFIG_S2IO is not set 566# CONFIG_S2IO is not set
578# CONFIG_MYRI10GE is not set 567# CONFIG_MYRI10GE is not set
579# CONFIG_NETXEN_NIC is not set 568# CONFIG_NETXEN_NIC is not set
580# CONFIG_NIU is not set 569CONFIG_NIU=m
581# CONFIG_MLX4_CORE is not set 570# CONFIG_MLX4_CORE is not set
582# CONFIG_TEHUTI is not set 571# CONFIG_TEHUTI is not set
583# CONFIG_TR is not set 572# CONFIG_TR is not set
@@ -702,7 +691,8 @@ CONFIG_SERIAL_SUNCORE=y
702# CONFIG_SERIAL_SUNZILOG is not set 691# CONFIG_SERIAL_SUNZILOG is not set
703CONFIG_SERIAL_SUNSU=y 692CONFIG_SERIAL_SUNSU=y
704CONFIG_SERIAL_SUNSU_CONSOLE=y 693CONFIG_SERIAL_SUNSU_CONSOLE=y
705CONFIG_SERIAL_SUNSAB=m 694CONFIG_SERIAL_SUNSAB=y
695CONFIG_SERIAL_SUNSAB_CONSOLE=y
706CONFIG_SERIAL_SUNHV=y 696CONFIG_SERIAL_SUNHV=y
707CONFIG_SERIAL_CORE=y 697CONFIG_SERIAL_CORE=y
708CONFIG_SERIAL_CORE_CONSOLE=y 698CONFIG_SERIAL_CORE_CONSOLE=y
@@ -880,9 +870,17 @@ CONFIG_FB_TILEBLITTING=y
880# CONFIG_FB_ASILIANT is not set 870# CONFIG_FB_ASILIANT is not set
881# CONFIG_FB_IMSTT is not set 871# CONFIG_FB_IMSTT is not set
882# CONFIG_FB_UVESA is not set 872# CONFIG_FB_UVESA is not set
883# CONFIG_FB_SBUS is not set 873CONFIG_FB_SBUS=y
884# CONFIG_FB_XVR500 is not set 874# CONFIG_FB_BW2 is not set
885# CONFIG_FB_XVR2500 is not set 875# CONFIG_FB_CG3 is not set
876CONFIG_FB_CG6=y
877CONFIG_FB_FFB=y
878# CONFIG_FB_TCX is not set
879# CONFIG_FB_CG14 is not set
880# CONFIG_FB_P9100 is not set
881# CONFIG_FB_LEO is not set
882CONFIG_FB_XVR500=y
883CONFIG_FB_XVR2500=y
886# CONFIG_FB_S1D13XXX is not set 884# CONFIG_FB_S1D13XXX is not set
887# CONFIG_FB_NVIDIA is not set 885# CONFIG_FB_NVIDIA is not set
888# CONFIG_FB_RIVA is not set 886# CONFIG_FB_RIVA is not set
@@ -892,7 +890,11 @@ CONFIG_FB_RADEON_I2C=y
892# CONFIG_FB_RADEON_BACKLIGHT is not set 890# CONFIG_FB_RADEON_BACKLIGHT is not set
893# CONFIG_FB_RADEON_DEBUG is not set 891# CONFIG_FB_RADEON_DEBUG is not set
894# CONFIG_FB_ATY128 is not set 892# CONFIG_FB_ATY128 is not set
895# CONFIG_FB_ATY is not set 893CONFIG_FB_ATY=y
894CONFIG_FB_ATY_CT=y
895# CONFIG_FB_ATY_GENERIC_LCD is not set
896CONFIG_FB_ATY_GX=y
897# CONFIG_FB_ATY_BACKLIGHT is not set
896# CONFIG_FB_S3 is not set 898# CONFIG_FB_S3 is not set
897# CONFIG_FB_SAVAGE is not set 899# CONFIG_FB_SAVAGE is not set
898# CONFIG_FB_SIS is not set 900# CONFIG_FB_SIS is not set
@@ -1191,7 +1193,7 @@ CONFIG_USB_STORAGE=m
1191# 1193#
1192# Misc Linux/SPARC drivers 1194# Misc Linux/SPARC drivers
1193# 1195#
1194CONFIG_SUN_OPENPROMIO=m 1196CONFIG_SUN_OPENPROMIO=y
1195# CONFIG_OBP_FLASH is not set 1197# CONFIG_OBP_FLASH is not set
1196# CONFIG_SUN_BPP is not set 1198# CONFIG_SUN_BPP is not set
1197# CONFIG_BBC_I2C is not set 1199# CONFIG_BBC_I2C is not set
@@ -1199,11 +1201,6 @@ CONFIG_SUN_OPENPROMIO=m
1199# CONFIG_DISPLAY7SEG is not set 1201# CONFIG_DISPLAY7SEG is not set
1200 1202
1201# 1203#
1202# Fibre Channel support
1203#
1204# CONFIG_FC4 is not set
1205
1206#
1207# File systems 1204# File systems
1208# 1205#
1209CONFIG_EXT2_FS=y 1206CONFIG_EXT2_FS=y
@@ -1345,6 +1342,7 @@ CONFIG_KPROBES=y
1345# 1342#
1346CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1343CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1347CONFIG_PRINTK_TIME=y 1344CONFIG_PRINTK_TIME=y
1345# CONFIG_ENABLE_WARN_DEPRECATED is not set
1348CONFIG_ENABLE_MUST_CHECK=y 1346CONFIG_ENABLE_MUST_CHECK=y
1349CONFIG_MAGIC_SYSRQ=y 1347CONFIG_MAGIC_SYSRQ=y
1350# CONFIG_UNUSED_SYMBOLS is not set 1348# CONFIG_UNUSED_SYMBOLS is not set
@@ -1371,6 +1369,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
1371# CONFIG_DEBUG_INFO is not set 1369# CONFIG_DEBUG_INFO is not set
1372# CONFIG_DEBUG_VM is not set 1370# CONFIG_DEBUG_VM is not set
1373# CONFIG_DEBUG_LIST is not set 1371# CONFIG_DEBUG_LIST is not set
1372# CONFIG_DEBUG_SG is not set
1374CONFIG_FORCED_INLINING=y 1373CONFIG_FORCED_INLINING=y
1375# CONFIG_BOOT_PRINTK_DELAY is not set 1374# CONFIG_BOOT_PRINTK_DELAY is not set
1376# CONFIG_RCU_TORTURE_TEST is not set 1375# CONFIG_RCU_TORTURE_TEST is not set
diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c
index 23fad7ebdd0d..60765e314bd8 100644
--- a/arch/sparc64/kernel/sparc64_ksyms.c
+++ b/arch/sparc64/kernel/sparc64_ksyms.c
@@ -221,7 +221,7 @@ EXPORT_SYMBOL(pci_dma_supported);
221/* I/O device mmaping on Sparc64. */ 221/* I/O device mmaping on Sparc64. */
222EXPORT_SYMBOL(io_remap_pfn_range); 222EXPORT_SYMBOL(io_remap_pfn_range);
223 223
224#ifdef CONFIG_COMPAT 224#if defined(CONFIG_COMPAT) && defined(CONFIG_NET)
225/* Solaris/SunOS binary compatibility */ 225/* Solaris/SunOS binary compatibility */
226EXPORT_SYMBOL(verify_compat_iovec); 226EXPORT_SYMBOL(verify_compat_iovec);
227#endif 227#endif
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c
index cd8c740cba1d..a2cf955294c1 100644
--- a/arch/sparc64/kernel/time.c
+++ b/arch/sparc64/kernel/time.c
@@ -1070,7 +1070,7 @@ static int set_rtc_mmss(unsigned long nowtime)
1070 * Not having a register set can lead to trouble. 1070 * Not having a register set can lead to trouble.
1071 * Also starfire doesn't have a tod clock. 1071 * Also starfire doesn't have a tod clock.
1072 */ 1072 */
1073 if (!mregs && !dregs & !bregs) 1073 if (!mregs && !dregs && !bregs)
1074 return -1; 1074 return -1;
1075 1075
1076 if (mregs) { 1076 if (mregs) {
diff --git a/arch/sparc64/mm/tsb.c b/arch/sparc64/mm/tsb.c
index 7ff0a02f5813..a3e6e4b635b3 100644
--- a/arch/sparc64/mm/tsb.c
+++ b/arch/sparc64/mm/tsb.c
@@ -182,7 +182,9 @@ static void setup_tsb_params(struct mm_struct *mm, unsigned long tsb_idx, unsign
182 break; 182 break;
183 183
184 default: 184 default:
185 BUG(); 185 printk(KERN_ERR "TSB[%s:%d]: Impossible TSB size %lu, killing process.\n",
186 current->comm, current->pid, tsb_bytes);
187 do_exit(SIGSEGV);
186 }; 188 };
187 tte |= pte_sz_bits(page_sz); 189 tte |= pte_sz_bits(page_sz);
188 190
diff --git a/arch/sparc64/mm/ultra.S b/arch/sparc64/mm/ultra.S
index 737c26923c09..2865c105b6a4 100644
--- a/arch/sparc64/mm/ultra.S
+++ b/arch/sparc64/mm/ultra.S
@@ -120,13 +120,6 @@ __spitfire_flush_tlb_mm_slow:
120/* 120/*
121 * The following code flushes one page_size worth. 121 * The following code flushes one page_size worth.
122 */ 122 */
123#if (PAGE_SHIFT == 13)
124#define ITAG_MASK 0xfe
125#elif (PAGE_SHIFT == 16)
126#define ITAG_MASK 0x7fe
127#else
128#error unsupported PAGE_SIZE
129#endif
130 .section .kprobes.text, "ax" 123 .section .kprobes.text, "ax"
131 .align 32 124 .align 32
132 .globl __flush_icache_page 125 .globl __flush_icache_page
diff --git a/arch/um/Kconfig.i386 b/arch/um/Kconfig.i386
index 9876d80d85dd..e0ac74e5d4c4 100644
--- a/arch/um/Kconfig.i386
+++ b/arch/um/Kconfig.i386
@@ -1,6 +1,6 @@
1menu "Host processor type and features" 1menu "Host processor type and features"
2 2
3source "arch/i386/Kconfig.cpu" 3source "arch/x86/Kconfig.cpu"
4 4
5endmenu 5endmenu
6 6
diff --git a/arch/um/Makefile-i386 b/arch/um/Makefile-i386
index 0178df306939..b01dfb00e5f8 100644
--- a/arch/um/Makefile-i386
+++ b/arch/um/Makefile-i386
@@ -9,6 +9,7 @@ ELF_ARCH := $(SUBARCH)
9ELF_FORMAT := elf32-$(SUBARCH) 9ELF_FORMAT := elf32-$(SUBARCH)
10OBJCOPYFLAGS := -O binary -R .note -R .comment -S 10OBJCOPYFLAGS := -O binary -R .note -R .comment -S
11HEADER_ARCH := x86 11HEADER_ARCH := x86
12CHECKFLAGS += -D__i386__
12 13
13ifeq ("$(origin SUBARCH)", "command line") 14ifeq ("$(origin SUBARCH)", "command line")
14ifneq ("$(shell uname -m | sed -e s/i.86/i386/)", "$(SUBARCH)") 15ifneq ("$(shell uname -m | sed -e s/i.86/i386/)", "$(SUBARCH)")
@@ -26,10 +27,8 @@ AFLAGS += -DCONFIG_X86_32
26CONFIG_X86_32 := y 27CONFIG_X86_32 := y
27export CONFIG_X86_32 28export CONFIG_X86_32
28 29
29ARCH_KERNEL_DEFINES += -U__$(SUBARCH)__ -U$(SUBARCH)
30
31# First of all, tune CFLAGS for the specific CPU. This actually sets cflags-y. 30# First of all, tune CFLAGS for the specific CPU. This actually sets cflags-y.
32include $(srctree)/arch/i386/Makefile.cpu 31include $(srctree)/arch/x86/Makefile_32.cpu
33 32
34# prevent gcc from keeping the stack 16 byte aligned. Taken from i386. 33# prevent gcc from keeping the stack 16 byte aligned. Taken from i386.
35cflags-y += $(call cc-option,-mpreferred-stack-boundary=2) 34cflags-y += $(call cc-option,-mpreferred-stack-boundary=2)
diff --git a/arch/um/Makefile-x86_64 b/arch/um/Makefile-x86_64
index fe5316f0c6a5..8ed362f93582 100644
--- a/arch/um/Makefile-x86_64
+++ b/arch/um/Makefile-x86_64
@@ -6,12 +6,9 @@ START := 0x60000000
6 6
7_extra_flags_ = -fno-builtin -m64 7_extra_flags_ = -fno-builtin -m64
8 8
9#We #undef __x86_64__ for kernelspace, not for userspace where
10#it's needed for headers to work!
11ARCH_KERNEL_DEFINES = -U__$(SUBARCH)__
12KBUILD_CFLAGS += $(_extra_flags_) 9KBUILD_CFLAGS += $(_extra_flags_)
13 10
14CHECKFLAGS += -m64 11CHECKFLAGS += -m64 -D__x86_64__
15KBUILD_AFLAGS += -m64 12KBUILD_AFLAGS += -m64
16LDFLAGS += -m elf_x86_64 13LDFLAGS += -m elf_x86_64
17KBUILD_CPPFLAGS += -m64 14KBUILD_CPPFLAGS += -m64
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c
index 8456397f5f4d..59822dee438a 100644
--- a/arch/um/kernel/mem.c
+++ b/arch/um/kernel/mem.c
@@ -165,7 +165,7 @@ static void __init kmap_init(void)
165 kmap_prot = PAGE_KERNEL; 165 kmap_prot = PAGE_KERNEL;
166} 166}
167 167
168static void init_highmem(void) 168static void __init init_highmem(void)
169{ 169{
170 pgd_t *pgd; 170 pgd_t *pgd;
171 pud_t *pud; 171 pud_t *pud;
diff --git a/arch/um/sys-i386/ptrace.c b/arch/um/sys-i386/ptrace.c
index 9657c89fdf31..bd3da8a61f64 100644
--- a/arch/um/sys-i386/ptrace.c
+++ b/arch/um/sys-i386/ptrace.c
@@ -155,7 +155,7 @@ int get_fpregs(struct user_i387_struct __user *buf, struct task_struct *child)
155 if (err) 155 if (err)
156 return err; 156 return err;
157 157
158 n = copy_to_user((void *) buf, fpregs, sizeof(fpregs)); 158 n = copy_to_user(buf, fpregs, sizeof(fpregs));
159 if(n > 0) 159 if(n > 0)
160 return -EFAULT; 160 return -EFAULT;
161 161
@@ -168,7 +168,7 @@ int set_fpregs(struct user_i387_struct __user *buf, struct task_struct *child)
168 long fpregs[HOST_FP_SIZE]; 168 long fpregs[HOST_FP_SIZE];
169 169
170 BUG_ON(sizeof(*buf) != sizeof(fpregs)); 170 BUG_ON(sizeof(*buf) != sizeof(fpregs));
171 n = copy_from_user(fpregs, (void *) buf, sizeof(fpregs)); 171 n = copy_from_user(fpregs, buf, sizeof(fpregs));
172 if (n > 0) 172 if (n > 0)
173 return -EFAULT; 173 return -EFAULT;
174 174
@@ -185,7 +185,7 @@ int get_fpxregs(struct user_fxsr_struct __user *buf, struct task_struct *child)
185 if (err) 185 if (err)
186 return err; 186 return err;
187 187
188 n = copy_to_user((void *) buf, fpregs, sizeof(fpregs)); 188 n = copy_to_user(buf, fpregs, sizeof(fpregs));
189 if(n > 0) 189 if(n > 0)
190 return -EFAULT; 190 return -EFAULT;
191 191
@@ -198,7 +198,7 @@ int set_fpxregs(struct user_fxsr_struct __user *buf, struct task_struct *child)
198 long fpregs[HOST_XFP_SIZE]; 198 long fpregs[HOST_XFP_SIZE];
199 199
200 BUG_ON(sizeof(*buf) != sizeof(fpregs)); 200 BUG_ON(sizeof(*buf) != sizeof(fpregs));
201 n = copy_from_user(fpregs, (void *) buf, sizeof(fpregs)); 201 n = copy_from_user(fpregs, buf, sizeof(fpregs));
202 if (n > 0) 202 if (n > 0)
203 return -EFAULT; 203 return -EFAULT;
204 204
diff --git a/arch/um/sys-x86_64/ptrace.c b/arch/um/sys-x86_64/ptrace.c
index a3cfeed17af4..b7631b0e9ddc 100644
--- a/arch/um/sys-x86_64/ptrace.c
+++ b/arch/um/sys-x86_64/ptrace.c
@@ -154,7 +154,7 @@ int get_fpregs(struct user_i387_struct __user *buf, struct task_struct *child)
154 if (err) 154 if (err)
155 return err; 155 return err;
156 156
157 n = copy_to_user((void *) buf, fpregs, sizeof(fpregs)); 157 n = copy_to_user(buf, fpregs, sizeof(fpregs));
158 if(n > 0) 158 if(n > 0)
159 return -EFAULT; 159 return -EFAULT;
160 160
@@ -167,7 +167,7 @@ int set_fpregs(struct user_i387_struct __user *buf, struct task_struct *child)
167 long fpregs[HOST_FP_SIZE]; 167 long fpregs[HOST_FP_SIZE];
168 168
169 BUG_ON(sizeof(*buf) != sizeof(fpregs)); 169 BUG_ON(sizeof(*buf) != sizeof(fpregs));
170 n = copy_from_user(fpregs, (void *) buf, sizeof(fpregs)); 170 n = copy_from_user(fpregs, buf, sizeof(fpregs));
171 if (n > 0) 171 if (n > 0)
172 return -EFAULT; 172 return -EFAULT;
173 173
diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
index 970b2defe7df..761ca7b5f120 100644
--- a/arch/x86/Kconfig.debug
+++ b/arch/x86/Kconfig.debug
@@ -6,9 +6,8 @@ config TRACE_IRQFLAGS_SUPPORT
6source "lib/Kconfig.debug" 6source "lib/Kconfig.debug"
7 7
8config EARLY_PRINTK 8config EARLY_PRINTK
9 bool "Early printk" if EMBEDDED && DEBUG_KERNEL 9 bool "Early printk" if EMBEDDED && DEBUG_KERNEL && X86_32
10 default y 10 default y
11 depends on X86_32
12 help 11 help
13 Write kernel log output directly into the VGA buffer or to a serial 12 Write kernel log output directly into the VGA buffer or to a serial
14 port. 13 port.
@@ -91,7 +90,7 @@ config DOUBLEFAULT
91 90
92config IOMMU_DEBUG 91config IOMMU_DEBUG
93 bool "Enable IOMMU debugging" 92 bool "Enable IOMMU debugging"
94 depends on IOMMU && DEBUG_KERNEL 93 depends on GART_IOMMU && DEBUG_KERNEL
95 depends on X86_64 94 depends on X86_64
96 help 95 help
97 Force the IOMMU to on even when you have less than 4GB of 96 Force the IOMMU to on even when you have less than 4GB of
@@ -113,7 +112,4 @@ config IOMMU_LEAK
113 Add a simple leak tracer to the IOMMU code. This is useful when you 112 Add a simple leak tracer to the IOMMU code. This is useful when you
114 are debugging a buggy device driver that leaks IOMMU mappings. 113 are debugging a buggy device driver that leaks IOMMU mappings.
115 114
116#config X86_REMOTE_DEBUG
117# bool "kgdb debugging stub"
118
119endmenu 115endmenu
diff --git a/arch/x86/Kconfig.x86_64 b/arch/x86/Kconfig.x86_64
index e2542e5b536c..cc468ea61240 100644
--- a/arch/x86/Kconfig.x86_64
+++ b/arch/x86/Kconfig.x86_64
@@ -97,10 +97,6 @@ config X86_CMPXCHG
97 bool 97 bool
98 default y 98 default y
99 99
100config EARLY_PRINTK
101 bool
102 default y
103
104config GENERIC_ISA_DMA 100config GENERIC_ISA_DMA
105 bool 101 bool
106 default y 102 default y
@@ -479,8 +475,8 @@ config HPET_EMULATE_RTC
479 475
480# Mark as embedded because too many people got it wrong. 476# Mark as embedded because too many people got it wrong.
481# The code disables itself when not needed. 477# The code disables itself when not needed.
482config IOMMU 478config GART_IOMMU
483 bool "IOMMU support" if EMBEDDED 479 bool "GART IOMMU support" if EMBEDDED
484 default y 480 default y
485 select SWIOTLB 481 select SWIOTLB
486 select AGP 482 select AGP
@@ -687,7 +683,7 @@ source kernel/Kconfig.hz
687 683
688config K8_NB 684config K8_NB
689 def_bool y 685 def_bool y
690 depends on AGP_AMD64 || IOMMU || (PCI && NUMA) 686 depends on AGP_AMD64 || GART_IOMMU || (PCI && NUMA)
691 687
692endmenu 688endmenu
693 689
@@ -753,7 +749,6 @@ config PCI_DOMAINS
753config DMAR 749config DMAR
754 bool "Support for DMA Remapping Devices (EXPERIMENTAL)" 750 bool "Support for DMA Remapping Devices (EXPERIMENTAL)"
755 depends on PCI_MSI && ACPI && EXPERIMENTAL 751 depends on PCI_MSI && ACPI && EXPERIMENTAL
756 default y
757 help 752 help
758 DMA remapping (DMAR) devices support enables independent address 753 DMA remapping (DMAR) devices support enables independent address
759 translations for Direct Memory Access (DMA) from devices. 754 translations for Direct Memory Access (DMA) from devices.
diff --git a/arch/x86/configs/x86_64_defconfig b/arch/x86/configs/x86_64_defconfig
index b091c5e35558..38a83f9c966f 100644
--- a/arch/x86/configs/x86_64_defconfig
+++ b/arch/x86/configs/x86_64_defconfig
@@ -170,7 +170,7 @@ CONFIG_HOTPLUG_CPU=y
170CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 170CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
171CONFIG_HPET_TIMER=y 171CONFIG_HPET_TIMER=y
172CONFIG_HPET_EMULATE_RTC=y 172CONFIG_HPET_EMULATE_RTC=y
173CONFIG_IOMMU=y 173CONFIG_GART_IOMMU=y
174# CONFIG_CALGARY_IOMMU is not set 174# CONFIG_CALGARY_IOMMU is not set
175CONFIG_SWIOTLB=y 175CONFIG_SWIOTLB=y
176CONFIG_X86_MCE=y 176CONFIG_X86_MCE=y
diff --git a/arch/x86/kernel/Makefile_64 b/arch/x86/kernel/Makefile_64
index 466337ae9a1e..24671c3838b3 100644
--- a/arch/x86/kernel/Makefile_64
+++ b/arch/x86/kernel/Makefile_64
@@ -25,7 +25,7 @@ obj-$(CONFIG_CRASH_DUMP) += crash_dump_64.o
25obj-$(CONFIG_PM) += suspend_64.o 25obj-$(CONFIG_PM) += suspend_64.o
26obj-$(CONFIG_HIBERNATION) += suspend_asm_64.o 26obj-$(CONFIG_HIBERNATION) += suspend_asm_64.o
27obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 27obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
28obj-$(CONFIG_IOMMU) += pci-gart_64.o aperture_64.o 28obj-$(CONFIG_GART_IOMMU) += pci-gart_64.o aperture_64.o
29obj-$(CONFIG_CALGARY_IOMMU) += pci-calgary_64.o tce_64.o 29obj-$(CONFIG_CALGARY_IOMMU) += pci-calgary_64.o tce_64.o
30obj-$(CONFIG_SWIOTLB) += pci-swiotlb_64.o 30obj-$(CONFIG_SWIOTLB) += pci-swiotlb_64.o
31obj-$(CONFIG_KPROBES) += kprobes_64.o 31obj-$(CONFIG_KPROBES) += kprobes_64.o
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c
index 8f681cae7bf7..5b6992799c9d 100644
--- a/arch/x86/kernel/aperture_64.c
+++ b/arch/x86/kernel/aperture_64.c
@@ -20,14 +20,14 @@
20#include <linux/ioport.h> 20#include <linux/ioport.h>
21#include <asm/e820.h> 21#include <asm/e820.h>
22#include <asm/io.h> 22#include <asm/io.h>
23#include <asm/iommu.h> 23#include <asm/gart.h>
24#include <asm/pci-direct.h> 24#include <asm/pci-direct.h>
25#include <asm/dma.h> 25#include <asm/dma.h>
26#include <asm/k8.h> 26#include <asm/k8.h>
27 27
28int iommu_aperture; 28int gart_iommu_aperture;
29int iommu_aperture_disabled __initdata = 0; 29int gart_iommu_aperture_disabled __initdata = 0;
30int iommu_aperture_allowed __initdata = 0; 30int gart_iommu_aperture_allowed __initdata = 0;
31 31
32int fallback_aper_order __initdata = 1; /* 64MB */ 32int fallback_aper_order __initdata = 1; /* 64MB */
33int fallback_aper_force __initdata = 0; 33int fallback_aper_force __initdata = 0;
@@ -204,14 +204,15 @@ static __u32 __init search_agp_bridge(u32 *order, int *valid_agp)
204 return 0; 204 return 0;
205} 205}
206 206
207void __init iommu_hole_init(void) 207void __init gart_iommu_hole_init(void)
208{ 208{
209 int fix, num; 209 int fix, num;
210 u32 aper_size, aper_alloc = 0, aper_order = 0, last_aper_order = 0; 210 u32 aper_size, aper_alloc = 0, aper_order = 0, last_aper_order = 0;
211 u64 aper_base, last_aper_base = 0; 211 u64 aper_base, last_aper_base = 0;
212 int valid_agp = 0; 212 int valid_agp = 0;
213 213
214 if (iommu_aperture_disabled || !fix_aperture || !early_pci_allowed()) 214 if (gart_iommu_aperture_disabled || !fix_aperture ||
215 !early_pci_allowed())
215 return; 216 return;
216 217
217 printk(KERN_INFO "Checking aperture...\n"); 218 printk(KERN_INFO "Checking aperture...\n");
@@ -222,7 +223,7 @@ void __init iommu_hole_init(void)
222 continue; 223 continue;
223 224
224 iommu_detected = 1; 225 iommu_detected = 1;
225 iommu_aperture = 1; 226 gart_iommu_aperture = 1;
226 227
227 aper_order = (read_pci_config(0, num, 3, 0x90) >> 1) & 7; 228 aper_order = (read_pci_config(0, num, 3, 0x90) >> 1) & 7;
228 aper_size = (32 * 1024 * 1024) << aper_order; 229 aper_size = (32 * 1024 * 1024) << aper_order;
diff --git a/arch/x86/kernel/cpu/proc.c b/arch/x86/kernel/cpu/proc.c
index 2d42b414b777..066f8c6af4df 100644
--- a/arch/x86/kernel/cpu/proc.c
+++ b/arch/x86/kernel/cpu/proc.c
@@ -49,7 +49,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
49 /* Intel-defined (#2) */ 49 /* Intel-defined (#2) */
50 "pni", NULL, NULL, "monitor", "ds_cpl", "vmx", "smx", "est", 50 "pni", NULL, NULL, "monitor", "ds_cpl", "vmx", "smx", "est",
51 "tm2", "ssse3", "cid", NULL, NULL, "cx16", "xtpr", NULL, 51 "tm2", "ssse3", "cid", NULL, NULL, "cx16", "xtpr", NULL,
52 NULL, NULL, "dca", NULL, NULL, NULL, NULL, "popcnt", 52 NULL, NULL, "dca", "sse4_1", "sse4_2", NULL, NULL, "popcnt",
53 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 53 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
54 54
55 /* VIA/Cyrix/Centaur-defined */ 55 /* VIA/Cyrix/Centaur-defined */
@@ -59,10 +59,10 @@ static int show_cpuinfo(struct seq_file *m, void *v)
59 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 59 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
60 60
61 /* AMD-defined (#2) */ 61 /* AMD-defined (#2) */
62 "lahf_lm", "cmp_legacy", "svm", "extapic", "cr8_legacy", 62 "lahf_lm", "cmp_legacy", "svm", "extapic",
63 "altmovcr8", "abm", "sse4a", 63 "cr8_legacy", "abm", "sse4a", "misalignsse",
64 "misalignsse", "3dnowprefetch", 64 "3dnowprefetch", "osvw", "ibs", "sse5",
65 "osvw", "ibs", NULL, NULL, NULL, NULL, 65 "skinit", "wdt", NULL, NULL,
66 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 66 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
67 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 67 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
68 68
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index 639e6320518e..88bb83ec895f 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -17,19 +17,19 @@
17#include <asm/io_apic.h> 17#include <asm/io_apic.h>
18#include <asm/apic.h> 18#include <asm/apic.h>
19 19
20#ifdef CONFIG_IOMMU 20#ifdef CONFIG_GART_IOMMU
21#include <asm/iommu.h> 21#include <asm/gart.h>
22#endif 22#endif
23 23
24static void __init via_bugs(void) 24static void __init via_bugs(void)
25{ 25{
26#ifdef CONFIG_IOMMU 26#ifdef CONFIG_GART_IOMMU
27 if ((end_pfn > MAX_DMA32_PFN || force_iommu) && 27 if ((end_pfn > MAX_DMA32_PFN || force_iommu) &&
28 !iommu_aperture_allowed) { 28 !gart_iommu_aperture_allowed) {
29 printk(KERN_INFO 29 printk(KERN_INFO
30 "Looks like a VIA chipset. Disabling IOMMU." 30 "Looks like a VIA chipset. Disabling IOMMU."
31 " Override with iommu=allowed\n"); 31 " Override with iommu=allowed\n");
32 iommu_aperture_disabled = 1; 32 gart_iommu_aperture_disabled = 1;
33 } 33 }
34#endif 34#endif
35} 35}
diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c
index 1a20fe31338b..6bf1f716909d 100644
--- a/arch/x86/kernel/pci-calgary_64.c
+++ b/arch/x86/kernel/pci-calgary_64.c
@@ -36,7 +36,7 @@
36#include <linux/pci.h> 36#include <linux/pci.h>
37#include <linux/delay.h> 37#include <linux/delay.h>
38#include <linux/scatterlist.h> 38#include <linux/scatterlist.h>
39#include <asm/iommu.h> 39#include <asm/gart.h>
40#include <asm/calgary.h> 40#include <asm/calgary.h>
41#include <asm/tce.h> 41#include <asm/tce.h>
42#include <asm/pci-direct.h> 42#include <asm/pci-direct.h>
diff --git a/arch/x86/kernel/pci-dma_64.c b/arch/x86/kernel/pci-dma_64.c
index 393e2725a6e3..aa805b11b24f 100644
--- a/arch/x86/kernel/pci-dma_64.c
+++ b/arch/x86/kernel/pci-dma_64.c
@@ -9,7 +9,7 @@
9#include <linux/module.h> 9#include <linux/module.h>
10#include <linux/dmar.h> 10#include <linux/dmar.h>
11#include <asm/io.h> 11#include <asm/io.h>
12#include <asm/iommu.h> 12#include <asm/gart.h>
13#include <asm/calgary.h> 13#include <asm/calgary.h>
14 14
15int iommu_merge __read_mostly = 1; 15int iommu_merge __read_mostly = 1;
@@ -275,7 +275,7 @@ __init int iommu_setup(char *p)
275 swiotlb = 1; 275 swiotlb = 1;
276#endif 276#endif
277 277
278#ifdef CONFIG_IOMMU 278#ifdef CONFIG_GART_IOMMU
279 gart_parse_options(p); 279 gart_parse_options(p);
280#endif 280#endif
281 281
@@ -298,8 +298,8 @@ void __init pci_iommu_alloc(void)
298 * The order of these functions is important for 298 * The order of these functions is important for
299 * fall-back/fail-over reasons 299 * fall-back/fail-over reasons
300 */ 300 */
301#ifdef CONFIG_IOMMU 301#ifdef CONFIG_GART_IOMMU
302 iommu_hole_init(); 302 gart_iommu_hole_init();
303#endif 303#endif
304 304
305#ifdef CONFIG_CALGARY_IOMMU 305#ifdef CONFIG_CALGARY_IOMMU
@@ -321,7 +321,7 @@ static int __init pci_iommu_init(void)
321 321
322 intel_iommu_init(); 322 intel_iommu_init();
323 323
324#ifdef CONFIG_IOMMU 324#ifdef CONFIG_GART_IOMMU
325 gart_iommu_init(); 325 gart_iommu_init();
326#endif 326#endif
327 327
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
index ae7e0161ce46..06bcba536045 100644
--- a/arch/x86/kernel/pci-gart_64.c
+++ b/arch/x86/kernel/pci-gart_64.c
@@ -30,17 +30,17 @@
30#include <asm/mtrr.h> 30#include <asm/mtrr.h>
31#include <asm/pgtable.h> 31#include <asm/pgtable.h>
32#include <asm/proto.h> 32#include <asm/proto.h>
33#include <asm/iommu.h> 33#include <asm/gart.h>
34#include <asm/cacheflush.h> 34#include <asm/cacheflush.h>
35#include <asm/swiotlb.h> 35#include <asm/swiotlb.h>
36#include <asm/dma.h> 36#include <asm/dma.h>
37#include <asm/k8.h> 37#include <asm/k8.h>
38 38
39unsigned long iommu_bus_base; /* GART remapping area (physical) */ 39static unsigned long iommu_bus_base; /* GART remapping area (physical) */
40static unsigned long iommu_size; /* size of remapping area bytes */ 40static unsigned long iommu_size; /* size of remapping area bytes */
41static unsigned long iommu_pages; /* .. and in pages */ 41static unsigned long iommu_pages; /* .. and in pages */
42 42
43u32 *iommu_gatt_base; /* Remapping table */ 43static u32 *iommu_gatt_base; /* Remapping table */
44 44
45/* If this is disabled the IOMMU will use an optimized flushing strategy 45/* If this is disabled the IOMMU will use an optimized flushing strategy
46 of only flushing when an mapping is reused. With it true the GART is flushed 46 of only flushing when an mapping is reused. With it true the GART is flushed
@@ -135,8 +135,8 @@ static void flush_gart(void)
135/* Debugging aid for drivers that don't free their IOMMU tables */ 135/* Debugging aid for drivers that don't free their IOMMU tables */
136static void **iommu_leak_tab; 136static void **iommu_leak_tab;
137static int leak_trace; 137static int leak_trace;
138int iommu_leak_pages = 20; 138static int iommu_leak_pages = 20;
139void dump_leak(void) 139static void dump_leak(void)
140{ 140{
141 int i; 141 int i;
142 static int dump; 142 static int dump;
@@ -435,7 +435,7 @@ static int gart_map_sg(struct device *dev, struct scatterlist *sg, int nents,
435 435
436error: 436error:
437 flush_gart(); 437 flush_gart();
438 gart_unmap_sg(dev, sg, nents, dir); 438 gart_unmap_sg(dev, sg, out, dir);
439 /* When it was forced or merged try again in a dumb way */ 439 /* When it was forced or merged try again in a dumb way */
440 if (force_iommu || iommu_merge) { 440 if (force_iommu || iommu_merge) {
441 out = dma_map_sg_nonforce(dev, sg, nents, dir); 441 out = dma_map_sg_nonforce(dev, sg, nents, dir);
@@ -627,12 +627,12 @@ void __init gart_iommu_init(void)
627 return; 627 return;
628 628
629 /* Did we detect a different HW IOMMU? */ 629 /* Did we detect a different HW IOMMU? */
630 if (iommu_detected && !iommu_aperture) 630 if (iommu_detected && !gart_iommu_aperture)
631 return; 631 return;
632 632
633 if (no_iommu || 633 if (no_iommu ||
634 (!force_iommu && end_pfn <= MAX_DMA32_PFN) || 634 (!force_iommu && end_pfn <= MAX_DMA32_PFN) ||
635 !iommu_aperture || 635 !gart_iommu_aperture ||
636 (no_agp && init_k8_gatt(&info) < 0)) { 636 (no_agp && init_k8_gatt(&info) < 0)) {
637 if (end_pfn > MAX_DMA32_PFN) { 637 if (end_pfn > MAX_DMA32_PFN) {
638 printk(KERN_ERR "WARNING more than 4GB of memory " 638 printk(KERN_ERR "WARNING more than 4GB of memory "
@@ -733,9 +733,9 @@ void __init gart_parse_options(char *p)
733 fix_aperture = 0; 733 fix_aperture = 0;
734 /* duplicated from pci-dma.c */ 734 /* duplicated from pci-dma.c */
735 if (!strncmp(p,"force",5)) 735 if (!strncmp(p,"force",5))
736 iommu_aperture_allowed = 1; 736 gart_iommu_aperture_allowed = 1;
737 if (!strncmp(p,"allowed",7)) 737 if (!strncmp(p,"allowed",7))
738 iommu_aperture_allowed = 1; 738 gart_iommu_aperture_allowed = 1;
739 if (!strncmp(p, "memaper", 7)) { 739 if (!strncmp(p, "memaper", 7)) {
740 fallback_aper_force = 1; 740 fallback_aper_force = 1;
741 p += 7; 741 p += 7;
diff --git a/arch/x86/kernel/pci-nommu_64.c b/arch/x86/kernel/pci-nommu_64.c
index faf70bdca335..ab08e1832228 100644
--- a/arch/x86/kernel/pci-nommu_64.c
+++ b/arch/x86/kernel/pci-nommu_64.c
@@ -7,7 +7,7 @@
7#include <linux/dma-mapping.h> 7#include <linux/dma-mapping.h>
8#include <linux/scatterlist.h> 8#include <linux/scatterlist.h>
9 9
10#include <asm/iommu.h> 10#include <asm/gart.h>
11#include <asm/processor.h> 11#include <asm/processor.h>
12#include <asm/dma.h> 12#include <asm/dma.h>
13 13
diff --git a/arch/x86/kernel/pci-swiotlb_64.c b/arch/x86/kernel/pci-swiotlb_64.c
index b2f405ea7c85..102866d729a5 100644
--- a/arch/x86/kernel/pci-swiotlb_64.c
+++ b/arch/x86/kernel/pci-swiotlb_64.c
@@ -5,7 +5,7 @@
5#include <linux/module.h> 5#include <linux/module.h>
6#include <linux/dma-mapping.h> 6#include <linux/dma-mapping.h>
7 7
8#include <asm/iommu.h> 8#include <asm/gart.h>
9#include <asm/swiotlb.h> 9#include <asm/swiotlb.h>
10#include <asm/dma.h> 10#include <asm/dma.h>
11 11
diff --git a/arch/x86/kernel/reboot_64.c b/arch/x86/kernel/reboot_64.c
index 776eb06b6512..71b13c5f5817 100644
--- a/arch/x86/kernel/reboot_64.c
+++ b/arch/x86/kernel/reboot_64.c
@@ -17,7 +17,7 @@
17#include <asm/pgtable.h> 17#include <asm/pgtable.h>
18#include <asm/tlbflush.h> 18#include <asm/tlbflush.h>
19#include <asm/apic.h> 19#include <asm/apic.h>
20#include <asm/iommu.h> 20#include <asm/gart.h>
21 21
22/* 22/*
23 * Power off function, if any 23 * Power off function, if any
diff --git a/arch/x86/kernel/setup_32.c b/arch/x86/kernel/setup_32.c
index cc0e91447b76..e1e18c34c821 100644
--- a/arch/x86/kernel/setup_32.c
+++ b/arch/x86/kernel/setup_32.c
@@ -86,9 +86,6 @@ unsigned long mmu_cr4_features;
86 86
87/* for MCA, but anyone else can use it if they want */ 87/* for MCA, but anyone else can use it if they want */
88unsigned int machine_id; 88unsigned int machine_id;
89#ifdef CONFIG_MCA
90EXPORT_SYMBOL(machine_id);
91#endif
92unsigned int machine_submodel_id; 89unsigned int machine_submodel_id;
93unsigned int BIOS_revision; 90unsigned int BIOS_revision;
94unsigned int mca_pentium_flag; 91unsigned int mca_pentium_flag;
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c
index e7a9e36bd52d..238633d3d09a 100644
--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -1040,7 +1040,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
1040 /* Intel-defined (#2) */ 1040 /* Intel-defined (#2) */
1041 "pni", NULL, NULL, "monitor", "ds_cpl", "vmx", "smx", "est", 1041 "pni", NULL, NULL, "monitor", "ds_cpl", "vmx", "smx", "est",
1042 "tm2", "ssse3", "cid", NULL, NULL, "cx16", "xtpr", NULL, 1042 "tm2", "ssse3", "cid", NULL, NULL, "cx16", "xtpr", NULL,
1043 NULL, NULL, "dca", NULL, NULL, NULL, NULL, "popcnt", 1043 NULL, NULL, "dca", "sse4_1", "sse4_2", NULL, NULL, "popcnt",
1044 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1044 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1045 1045
1046 /* VIA/Cyrix/Centaur-defined */ 1046 /* VIA/Cyrix/Centaur-defined */
@@ -1050,10 +1050,10 @@ static int show_cpuinfo(struct seq_file *m, void *v)
1050 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1050 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1051 1051
1052 /* AMD-defined (#2) */ 1052 /* AMD-defined (#2) */
1053 "lahf_lm", "cmp_legacy", "svm", "extapic", "cr8_legacy", 1053 "lahf_lm", "cmp_legacy", "svm", "extapic",
1054 "altmovcr8", "abm", "sse4a", 1054 "cr8_legacy", "abm", "sse4a", "misalignsse",
1055 "misalignsse", "3dnowprefetch", 1055 "3dnowprefetch", "osvw", "ibs", "sse5",
1056 "osvw", "ibs", NULL, NULL, NULL, NULL, 1056 "skinit", "wdt", NULL, NULL,
1057 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1057 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1058 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1058 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1059 1059
diff --git a/arch/x86/mm/discontig_32.c b/arch/x86/mm/discontig_32.c
index fe608a45ffb6..13a474d3c6e9 100644
--- a/arch/x86/mm/discontig_32.c
+++ b/arch/x86/mm/discontig_32.c
@@ -40,7 +40,7 @@
40 40
41struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; 41struct pglist_data *node_data[MAX_NUMNODES] __read_mostly;
42EXPORT_SYMBOL(node_data); 42EXPORT_SYMBOL(node_data);
43bootmem_data_t node0_bdata; 43static bootmem_data_t node0_bdata;
44 44
45/* 45/*
46 * numa interface - we expect the numa architecture specific code to have 46 * numa interface - we expect the numa architecture specific code to have
@@ -404,7 +404,7 @@ void __init set_highmem_pages_init(int bad_ppro)
404} 404}
405 405
406#ifdef CONFIG_MEMORY_HOTPLUG 406#ifdef CONFIG_MEMORY_HOTPLUG
407int paddr_to_nid(u64 addr) 407static int paddr_to_nid(u64 addr)
408{ 408{
409 int nid; 409 int nid;
410 unsigned long pfn = PFN_DOWN(addr); 410 unsigned long pfn = PFN_DOWN(addr);
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 1e3862e41065..a7308b2cd058 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -728,12 +728,6 @@ int in_gate_area_no_task(unsigned long addr)
728 return (addr >= VSYSCALL_START) && (addr < VSYSCALL_END); 728 return (addr >= VSYSCALL_START) && (addr < VSYSCALL_END);
729} 729}
730 730
731void * __init alloc_bootmem_high_node(pg_data_t *pgdat, unsigned long size)
732{
733 return __alloc_bootmem_core(pgdat->bdata, size,
734 SMP_CACHE_BYTES, (4UL*1024*1024*1024), 0);
735}
736
737const char *arch_vma_name(struct vm_area_struct *vma) 731const char *arch_vma_name(struct vm_area_struct *vma)
738{ 732{
739 if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso) 733 if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
index 85ffbb491490..d3cb3d6af4c8 100644
--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -1,5 +1,5 @@
1# For a description of the syntax of this configuration file, 1# For a description of the syntax of this configuration file,
2# see Documentation/kbuild/config-language.txt. 2# see Documentation/kbuild/kconfig-language.txt.
3 3
4mainmenu "Linux/Xtensa Kernel Configuration" 4mainmenu "Linux/Xtensa Kernel Configuration"
5 5