diff options
author | Paul Mackerras <paulus@samba.org> | 2007-11-01 23:03:14 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-11-01 23:03:14 -0400 |
commit | 97a4649d6ffce4a5d7f5ce018d87a6cefcb4ad03 (patch) | |
tree | 8f7f591754baa934a842357e75e773a525bfb147 /arch | |
parent | f6ab0b922c3423b88c0e6e3e2c5fc1e58d83055d (diff) | |
parent | 54866f032307063776b4eff7eadb131d47f9f9b4 (diff) |
Merge branch 'linux-2.6' into merge
Diffstat (limited to 'arch')
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 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | CONFIG_GENERIC_GPIO=y | ||
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
11 | CONFIG_MMU=y | ||
12 | # CONFIG_NO_IOPORT is not set | ||
13 | CONFIG_GENERIC_HARDIRQS=y | ||
14 | CONFIG_STACKTRACE_SUPPORT=y | ||
15 | CONFIG_LOCKDEP_SUPPORT=y | ||
16 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
17 | CONFIG_HARDIRQS_SW_RESEND=y | ||
18 | CONFIG_GENERIC_IRQ_PROBE=y | ||
19 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
20 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
21 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
22 | CONFIG_GENERIC_HWEIGHT=y | ||
23 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
24 | CONFIG_ZONE_DMA=y | ||
25 | CONFIG_ARCH_MTD_XIP=y | ||
26 | CONFIG_VECTORS_BASE=0xffff0000 | ||
27 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
28 | |||
29 | # | ||
30 | # General setup | ||
31 | # | ||
32 | CONFIG_EXPERIMENTAL=y | ||
33 | CONFIG_BROKEN_ON_SMP=y | ||
34 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
35 | CONFIG_LOCALVERSION="" | ||
36 | CONFIG_LOCALVERSION_AUTO=y | ||
37 | CONFIG_SWAP=y | ||
38 | CONFIG_SYSVIPC=y | ||
39 | CONFIG_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 | ||
46 | CONFIG_LOG_BUF_SHIFT=18 | ||
47 | # CONFIG_CGROUPS is not set | ||
48 | CONFIG_FAIR_GROUP_SCHED=y | ||
49 | CONFIG_FAIR_USER_SCHED=y | ||
50 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
51 | CONFIG_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 | ||
55 | CONFIG_SYSCTL=y | ||
56 | # CONFIG_EMBEDDED is not set | ||
57 | CONFIG_UID16=y | ||
58 | CONFIG_SYSCTL_SYSCALL=y | ||
59 | CONFIG_KALLSYMS=y | ||
60 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
61 | CONFIG_HOTPLUG=y | ||
62 | CONFIG_PRINTK=y | ||
63 | CONFIG_BUG=y | ||
64 | CONFIG_ELF_CORE=y | ||
65 | CONFIG_BASE_FULL=y | ||
66 | CONFIG_FUTEX=y | ||
67 | CONFIG_ANON_INODES=y | ||
68 | CONFIG_EPOLL=y | ||
69 | CONFIG_SIGNALFD=y | ||
70 | CONFIG_EVENTFD=y | ||
71 | CONFIG_SHMEM=y | ||
72 | CONFIG_VM_EVENT_COUNTERS=y | ||
73 | CONFIG_SLUB_DEBUG=y | ||
74 | # CONFIG_SLAB is not set | ||
75 | CONFIG_SLUB=y | ||
76 | # CONFIG_SLOB is not set | ||
77 | CONFIG_RT_MUTEXES=y | ||
78 | # CONFIG_TINY_SHMEM is not set | ||
79 | CONFIG_BASE_SMALL=0 | ||
80 | CONFIG_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 | ||
85 | CONFIG_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 | # | ||
94 | CONFIG_IOSCHED_NOOP=y | ||
95 | CONFIG_IOSCHED_AS=y | ||
96 | CONFIG_IOSCHED_DEADLINE=y | ||
97 | CONFIG_IOSCHED_CFQ=y | ||
98 | # CONFIG_DEFAULT_AS is not set | ||
99 | # CONFIG_DEFAULT_DEADLINE is not set | ||
100 | CONFIG_DEFAULT_CFQ=y | ||
101 | # CONFIG_DEFAULT_NOOP is not set | ||
102 | CONFIG_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 | ||
132 | CONFIG_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 | # | ||
148 | CONFIG_CPU_PXA300=y | ||
149 | CONFIG_CPU_PXA310=y | ||
150 | CONFIG_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 | ||
158 | CONFIG_MACH_ZYLONITE=y | ||
159 | # CONFIG_MACH_ARMCORE is not set | ||
160 | CONFIG_PXA3xx=y | ||
161 | |||
162 | # | ||
163 | # Boot options | ||
164 | # | ||
165 | |||
166 | # | ||
167 | # Power management | ||
168 | # | ||
169 | |||
170 | # | ||
171 | # Processor Type | ||
172 | # | ||
173 | CONFIG_CPU_32=y | ||
174 | CONFIG_CPU_XSC3=y | ||
175 | CONFIG_CPU_32v5=y | ||
176 | CONFIG_CPU_ABRT_EV5T=y | ||
177 | CONFIG_CPU_CACHE_VIVT=y | ||
178 | CONFIG_CPU_TLB_V4WBI=y | ||
179 | CONFIG_CPU_CP15=y | ||
180 | CONFIG_CPU_CP15_MMU=y | ||
181 | CONFIG_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 | ||
190 | CONFIG_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 | ||
205 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
206 | # CONFIG_PREEMPT is not set | ||
207 | CONFIG_HZ=100 | ||
208 | CONFIG_AEABI=y | ||
209 | CONFIG_OABI_COMPAT=y | ||
210 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||
211 | CONFIG_SELECT_MEMORY_MODEL=y | ||
212 | CONFIG_FLATMEM_MANUAL=y | ||
213 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
214 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
215 | CONFIG_FLATMEM=y | ||
216 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
217 | # CONFIG_SPARSEMEM_STATIC is not set | ||
218 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
219 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
220 | # CONFIG_RESOURCES_64BIT is not set | ||
221 | CONFIG_ZONE_DMA_FLAG=1 | ||
222 | CONFIG_BOUNCE=y | ||
223 | CONFIG_VIRT_TO_BUS=y | ||
224 | CONFIG_ALIGNMENT_TRAP=y | ||
225 | |||
226 | # | ||
227 | # Boot options | ||
228 | # | ||
229 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
230 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
231 | CONFIG_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 | # | ||
242 | CONFIG_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 | # | ||
249 | CONFIG_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 | ||
257 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
258 | |||
259 | # | ||
260 | # Networking | ||
261 | # | ||
262 | CONFIG_NET=y | ||
263 | |||
264 | # | ||
265 | # Networking options | ||
266 | # | ||
267 | CONFIG_PACKET=y | ||
268 | # CONFIG_PACKET_MMAP is not set | ||
269 | CONFIG_UNIX=y | ||
270 | # CONFIG_NET_KEY is not set | ||
271 | CONFIG_INET=y | ||
272 | # CONFIG_IP_MULTICAST is not set | ||
273 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
274 | CONFIG_IP_FIB_HASH=y | ||
275 | CONFIG_IP_PNP=y | ||
276 | CONFIG_IP_PNP_DHCP=y | ||
277 | CONFIG_IP_PNP_BOOTP=y | ||
278 | CONFIG_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 | ||
294 | CONFIG_TCP_CONG_CUBIC=y | ||
295 | CONFIG_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 | # | ||
344 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
345 | CONFIG_STANDALONE=y | ||
346 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
347 | CONFIG_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 | ||
365 | CONFIG_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 | ||
374 | CONFIG_NET_ETHERNET=y | ||
375 | CONFIG_MII=y | ||
376 | # CONFIG_AX88796 is not set | ||
377 | CONFIG_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 | # | ||
405 | CONFIG_INPUT=y | ||
406 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
407 | # CONFIG_INPUT_POLLDEV is not set | ||
408 | |||
409 | # | ||
410 | # Userland interfaces | ||
411 | # | ||
412 | CONFIG_INPUT_MOUSEDEV=y | ||
413 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
414 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
415 | CONFIG_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 | # | ||
439 | CONFIG_VT=y | ||
440 | CONFIG_VT_CONSOLE=y | ||
441 | CONFIG_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 | # | ||
453 | CONFIG_SERIAL_PXA=y | ||
454 | CONFIG_SERIAL_PXA_CONSOLE=y | ||
455 | CONFIG_SERIAL_CORE=y | ||
456 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
457 | CONFIG_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 | # | ||
479 | CONFIG_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 | ||
499 | CONFIG_FB=y | ||
500 | # CONFIG_FIRMWARE_EDID is not set | ||
501 | # CONFIG_FB_DDC is not set | ||
502 | CONFIG_FB_CFB_FILLRECT=y | ||
503 | CONFIG_FB_CFB_COPYAREA=y | ||
504 | CONFIG_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 | ||
510 | CONFIG_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 | ||
521 | CONFIG_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 | ||
536 | CONFIG_DUMMY_CONSOLE=y | ||
537 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
538 | CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y | ||
539 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
540 | CONFIG_FONTS=y | ||
541 | # CONFIG_FONT_8x8 is not set | ||
542 | # CONFIG_FONT_8x16 is not set | ||
543 | CONFIG_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 | ||
551 | CONFIG_LOGO=y | ||
552 | CONFIG_LOGO_LINUX_MONO=y | ||
553 | CONFIG_LOGO_LINUX_VGA16=y | ||
554 | CONFIG_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 | ||
564 | CONFIG_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 | ||
575 | CONFIG_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 | ||
583 | CONFIG_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 | # | ||
604 | CONFIG_PROC_FS=y | ||
605 | CONFIG_PROC_SYSCTL=y | ||
606 | CONFIG_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 | ||
627 | CONFIG_NETWORK_FILESYSTEMS=y | ||
628 | CONFIG_NFS_FS=y | ||
629 | CONFIG_NFS_V3=y | ||
630 | CONFIG_NFS_V3_ACL=y | ||
631 | CONFIG_NFS_V4=y | ||
632 | CONFIG_NFS_DIRECTIO=y | ||
633 | # CONFIG_NFSD is not set | ||
634 | CONFIG_ROOT_NFS=y | ||
635 | CONFIG_LOCKD=y | ||
636 | CONFIG_LOCKD_V4=y | ||
637 | CONFIG_NFS_ACL_SUPPORT=y | ||
638 | CONFIG_NFS_COMMON=y | ||
639 | CONFIG_SUNRPC=y | ||
640 | CONFIG_SUNRPC_GSS=y | ||
641 | # CONFIG_SUNRPC_BIND34 is not set | ||
642 | CONFIG_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 | ||
654 | CONFIG_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 | ||
663 | CONFIG_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 | ||
670 | CONFIG_DEBUG_BUGVERBOSE=y | ||
671 | CONFIG_FRAME_POINTER=y | ||
672 | # CONFIG_SAMPLES is not set | ||
673 | CONFIG_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 | ||
681 | CONFIG_CRYPTO=y | ||
682 | CONFIG_CRYPTO_ALGAPI=y | ||
683 | CONFIG_CRYPTO_BLKCIPHER=y | ||
684 | CONFIG_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 | ||
689 | CONFIG_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 | ||
697 | CONFIG_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 | ||
702 | CONFIG_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 | # | ||
726 | CONFIG_BITREVERSE=y | ||
727 | # CONFIG_CRC_CCITT is not set | ||
728 | # CONFIG_CRC16 is not set | ||
729 | # CONFIG_CRC_ITU_T is not set | ||
730 | CONFIG_CRC32=y | ||
731 | # CONFIG_CRC7 is not set | ||
732 | # CONFIG_LIBCRC32C is not set | ||
733 | CONFIG_PLIST=y | ||
734 | CONFIG_HAS_IOMEM=y | ||
735 | CONFIG_HAS_IOPORT=y | ||
736 | CONFIG_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 | ||
19 | config ARCH_IXDP2400 | 19 | config 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 | ||
346 | static struct i2c_board_info __initdata h2_i2c_board_info[] = { | 347 | static 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 | ||
360 | static void __init h2_init_smc91x(void) | 362 | static 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 | ||
474 | static void __init h2_map_io(void) | 478 | static 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 | ||
298 | config H8606_HVSISTEMAS | ||
299 | bool "HV Sistemas H8606" | ||
300 | depends on (BF532) | ||
301 | help | ||
302 | HV Sistemas H8606 board support. | ||
303 | |||
298 | config GENERIC_BOARD | 304 | config 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 | |||
317 | config MEM_MT48LC16M16A2TG_75 | 323 | config 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 | ||
323 | config MEM_MT48LC32M8A2_75 | 330 | config 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 | ||
496 | config MEM_ADD_WIDTH | 506 | config 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 |
245 | CONFIG_MAX_VCO_HZ=600000000 | 245 | CONFIG_MAX_VCO_HZ=600000000 |
246 | CONFIG_MIN_VCO_HZ=50000000 | 246 | CONFIG_MIN_VCO_HZ=50000000 |
247 | CONFIG_MAX_SCLK_HZ=133000000 | 247 | CONFIG_MAX_SCLK_HZ=133333333 |
248 | CONFIG_MIN_SCLK_HZ=27000000 | 248 | CONFIG_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 |
199 | CONFIG_MAX_VCO_HZ=750000000 | 199 | CONFIG_MAX_VCO_HZ=750000000 |
200 | CONFIG_MIN_VCO_HZ=50000000 | 200 | CONFIG_MIN_VCO_HZ=50000000 |
201 | CONFIG_MAX_SCLK_HZ=133000000 | 201 | CONFIG_MAX_SCLK_HZ=133333333 |
202 | CONFIG_MIN_SCLK_HZ=27000000 | 202 | CONFIG_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 |
200 | CONFIG_MAX_VCO_HZ=750000000 | 200 | CONFIG_MAX_VCO_HZ=750000000 |
201 | CONFIG_MIN_VCO_HZ=50000000 | 201 | CONFIG_MIN_VCO_HZ=50000000 |
202 | CONFIG_MAX_SCLK_HZ=133000000 | 202 | CONFIG_MAX_SCLK_HZ=133333333 |
203 | CONFIG_MIN_SCLK_HZ=27000000 | 203 | CONFIG_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 |
207 | CONFIG_MAX_VCO_HZ=600000000 | 207 | CONFIG_MAX_VCO_HZ=600000000 |
208 | CONFIG_MIN_VCO_HZ=50000000 | 208 | CONFIG_MIN_VCO_HZ=50000000 |
209 | CONFIG_MAX_SCLK_HZ=133000000 | 209 | CONFIG_MAX_SCLK_HZ=133333333 |
210 | CONFIG_MIN_SCLK_HZ=27000000 | 210 | CONFIG_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 | |||
64 | CONFIG_ANON_INODES=y | 65 | CONFIG_ANON_INODES=y |
65 | CONFIG_EPOLL=y | 66 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | 67 | CONFIG_SIGNALFD=y |
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | 68 | CONFIG_EVENTFD=y |
69 | CONFIG_VM_EVENT_COUNTERS=y | 69 | CONFIG_VM_EVENT_COUNTERS=y |
70 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | 70 | CONFIG_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 | |||
129 | CONFIG_BF549=y | 132 | CONFIG_BF549=y |
130 | # CONFIG_BF561 is not set | 133 | # CONFIG_BF561 is not set |
131 | CONFIG_BF_REV_0_0=y | 134 | CONFIG_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 |
138 | CONFIG_BF54x=y | 142 | CONFIG_BF54x=y |
139 | CONFIG_BFIN_SINGLE_CORE=y | 143 | CONFIG_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 |
151 | CONFIG_IRQ_PLL_WAKEUP=7 | 157 | CONFIG_IRQ_PLL_WAKEUP=7 |
158 | CONFIG_IRQ_RTC=8 | ||
159 | CONFIG_IRQ_SPORT0_RX=9 | ||
160 | CONFIG_IRQ_SPORT0_TX=9 | ||
161 | CONFIG_IRQ_SPORT1_RX=9 | ||
162 | CONFIG_IRQ_SPORT1_TX=9 | ||
163 | CONFIG_IRQ_UART0_RX=10 | ||
164 | CONFIG_IRQ_UART0_TX=10 | ||
165 | CONFIG_IRQ_UART1_RX=10 | ||
166 | CONFIG_IRQ_UART1_TX=10 | ||
167 | CONFIG_IRQ_CNT=8 | ||
168 | CONFIG_IRQ_USB_INT0=11 | ||
169 | CONFIG_IRQ_USB_INT1=11 | ||
170 | CONFIG_IRQ_USB_INT2=11 | ||
171 | CONFIG_IRQ_USB_DMA=11 | ||
152 | CONFIG_IRQ_TIMER0=11 | 172 | CONFIG_IRQ_TIMER0=11 |
153 | CONFIG_IRQ_TIMER1=11 | 173 | CONFIG_IRQ_TIMER1=11 |
154 | CONFIG_IRQ_TIMER2=11 | 174 | CONFIG_IRQ_TIMER2=11 |
@@ -160,15 +180,6 @@ CONFIG_IRQ_TIMER7=11 | |||
160 | CONFIG_IRQ_TIMER8=11 | 180 | CONFIG_IRQ_TIMER8=11 |
161 | CONFIG_IRQ_TIMER9=11 | 181 | CONFIG_IRQ_TIMER9=11 |
162 | CONFIG_IRQ_TIMER10=11 | 182 | CONFIG_IRQ_TIMER10=11 |
163 | CONFIG_IRQ_RTC=8 | ||
164 | CONFIG_IRQ_SPORT0_RX=9 | ||
165 | CONFIG_IRQ_SPORT0_TX=9 | ||
166 | CONFIG_IRQ_SPORT1_RX=9 | ||
167 | CONFIG_IRQ_SPORT1_TX=9 | ||
168 | CONFIG_IRQ_UART0_RX=10 | ||
169 | CONFIG_IRQ_UART0_TX=10 | ||
170 | CONFIG_IRQ_UART1_RX=10 | ||
171 | CONFIG_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 | |||
236 | CONFIG_IRQ_PIXC_IN1=8 | 247 | CONFIG_IRQ_PIXC_IN1=8 |
237 | CONFIG_IRQ_PIXC_OUT=8 | 248 | CONFIG_IRQ_PIXC_OUT=8 |
238 | CONFIG_IRQ_SDH=8 | 249 | CONFIG_IRQ_SDH=8 |
239 | CONFIG_IRQ_CNT=8 | ||
240 | CONFIG_IRQ_KEY=8 | 250 | CONFIG_IRQ_KEY=8 |
241 | CONFIG_IRQ_CAN1_RX=11 | 251 | CONFIG_IRQ_CAN1_RX=11 |
242 | CONFIG_IRQ_CAN1_TX=11 | 252 | CONFIG_IRQ_CAN1_TX=11 |
243 | CONFIG_IRQ_SDH_MASK0=11 | 253 | CONFIG_IRQ_SDH_MASK0=11 |
244 | CONFIG_IRQ_SDH_MASK1=11 | 254 | CONFIG_IRQ_SDH_MASK1=11 |
245 | CONFIG_IRQ_USB_INT0=11 | ||
246 | CONFIG_IRQ_USB_INT1=11 | ||
247 | CONFIG_IRQ_USB_INT2=11 | ||
248 | CONFIG_IRQ_USB_DMA=11 | ||
249 | CONFIG_IRQ_OTPSEC=11 | 255 | CONFIG_IRQ_OTPSEC=11 |
250 | CONFIG_IRQ_PINT2=11 | 256 | CONFIG_IRQ_PINT2=11 |
251 | CONFIG_IRQ_PINT3=11 | 257 | CONFIG_IRQ_PINT3=11 |
@@ -273,9 +279,9 @@ CONFIG_PINT3_ASSIGN=0x02020303 | |||
273 | # | 279 | # |
274 | CONFIG_CLKIN_HZ=25000000 | 280 | CONFIG_CLKIN_HZ=25000000 |
275 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 281 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
276 | CONFIG_MAX_VCO_HZ=533000000 | 282 | CONFIG_MAX_VCO_HZ=533333333 |
277 | CONFIG_MIN_VCO_HZ=50000000 | 283 | CONFIG_MIN_VCO_HZ=50000000 |
278 | CONFIG_MAX_SCLK_HZ=133000000 | 284 | CONFIG_MAX_SCLK_HZ=133333333 |
279 | CONFIG_MIN_SCLK_HZ=27000000 | 285 | CONFIG_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 |
333 | CONFIG_ZONE_DMA_FLAG=1 | 339 | CONFIG_ZONE_DMA_FLAG=1 |
334 | CONFIG_LARGE_ALLOCS=y | 340 | CONFIG_LARGE_ALLOCS=y |
341 | # CONFIG_BFIN_GPTIMERS is not set | ||
335 | CONFIG_BFIN_DMA_5XX=y | 342 | CONFIG_BFIN_DMA_5XX=y |
336 | # CONFIG_DMA_UNCACHED_2M is not set | 343 | CONFIG_DMA_UNCACHED_2M=y |
337 | CONFIG_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 | # |
358 | CONFIG_C_AMCKEN=y | 365 | CONFIG_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 | # |
725 | CONFIG_INPUT=y | 732 | CONFIG_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 | 741 | CONFIG_INPUT_TSDEV=m |
735 | # CONFIG_INPUT_EVDEV is not set | 742 | CONFIG_INPUT_TSDEV_SCREEN_X=240 |
736 | # CONFIG_INPUT_EVBUG is not set | 743 | CONFIG_INPUT_TSDEV_SCREEN_Y=320 |
744 | CONFIG_INPUT_EVDEV=m | ||
745 | CONFIG_INPUT_EVBUG=m | ||
737 | 746 | ||
738 | # | 747 | # |
739 | # Input Device Drivers | 748 | # Input Device Drivers |
740 | # | 749 | # |
741 | # CONFIG_INPUT_KEYBOARD is not set | 750 | CONFIG_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 | ||
758 | CONFIG_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 | 762 | CONFIG_INPUT_TOUCHSCREEN=y |
763 | # CONFIG_TOUCHSCREEN_ADS7846 is not set | ||
764 | CONFIG_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 | ||
746 | CONFIG_INPUT_MISC=y | 774 | CONFIG_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 | 989 | CONFIG_FB=m |
990 | CONFIG_FIRMWARE_EDID=y | ||
991 | # CONFIG_FB_DDC is not set | ||
992 | CONFIG_FB_CFB_FILLRECT=m | ||
993 | CONFIG_FB_CFB_COPYAREA=m | ||
994 | CONFIG_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 | ||
999 | CONFIG_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 | ||
1011 | CONFIG_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 | 1020 | CONFIG_SOUND=y |
1021 | |||
1022 | # | ||
1023 | # Advanced Linux Sound Architecture | ||
1024 | # | ||
1025 | CONFIG_SND=y | ||
1026 | CONFIG_SND_TIMER=y | ||
1027 | CONFIG_SND_PCM=y | ||
1028 | # CONFIG_SND_SEQUENCER is not set | ||
1029 | CONFIG_SND_OSSEMUL=y | ||
1030 | CONFIG_SND_MIXER_OSS=y | ||
1031 | CONFIG_SND_PCM_OSS=y | ||
1032 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
1033 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
1034 | CONFIG_SND_SUPPORT_OLD_API=y | ||
1035 | CONFIG_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 | # | ||
1056 | CONFIG_SND_SOC_AC97_BUS=y | ||
1057 | CONFIG_SND_SOC=y | ||
1058 | CONFIG_SND_BF5XX_SOC=y | ||
1059 | CONFIG_SND_BF5XX_SOC_AC97=y | ||
1060 | CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y | ||
1061 | CONFIG_SND_BF5XX_SPORT_NUM=0 | ||
1062 | # CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set | ||
1063 | CONFIG_SND_SOC_AD1980=y | ||
1064 | |||
1065 | # | ||
1066 | # Open Sound System | ||
1067 | # | ||
1068 | # CONFIG_SOUND_PRIME is not set | ||
1069 | CONFIG_AC97_BUS=y | ||
967 | 1070 | ||
968 | # | 1071 | # |
969 | # HID Devices | 1072 | # HID Devices |
970 | # | 1073 | # |
971 | CONFIG_HID=y | 1074 | CONFIG_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 | |||
1101 | CONFIG_EXT2_FS_XATTR=y | 1204 | CONFIG_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 | 1207 | CONFIG_EXT3_FS=y |
1208 | CONFIG_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 |
1212 | CONFIG_JBD=y | ||
1213 | # CONFIG_JBD_DEBUG is not set | ||
1106 | CONFIG_FS_MBCACHE=y | 1214 | CONFIG_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 | 1234 | CONFIG_ISO9660_FS=m |
1235 | CONFIG_JOLIET=y | ||
1236 | CONFIG_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 | 1242 | CONFIG_FAT_FS=m |
1133 | # CONFIG_VFAT_FS is not set | 1243 | CONFIG_MSDOS_FS=m |
1134 | # CONFIG_NTFS_FS is not set | 1244 | CONFIG_VFAT_FS=m |
1245 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
1246 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
1247 | CONFIG_NTFS_FS=m | ||
1248 | # CONFIG_NTFS_DEBUG is not set | ||
1249 | CONFIG_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 | 1301 | CONFIG_NFS_FS=m |
1187 | # CONFIG_NFSD is not set | 1302 | CONFIG_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 | ||
1306 | CONFIG_NFSD=m | ||
1307 | CONFIG_NFSD_V3=y | ||
1308 | # CONFIG_NFSD_V3_ACL is not set | ||
1309 | # CONFIG_NFSD_V4 is not set | ||
1310 | CONFIG_NFSD_TCP=y | ||
1311 | CONFIG_LOCKD=m | ||
1312 | CONFIG_LOCKD_V4=y | ||
1313 | CONFIG_EXPORTFS=m | ||
1314 | CONFIG_NFS_COMMON=y | ||
1315 | CONFIG_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 | ||
1319 | CONFIG_SMB_FS=m | ||
1320 | CONFIG_SMB_NLS_DEFAULT=y | ||
1321 | CONFIG_SMB_NLS_REMOTE="cp437" | ||
1322 | CONFIG_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 | 1336 | CONFIG_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 | ||
1199 | CONFIG_MSDOS_PARTITION=y | 1342 | CONFIG_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 | 1358 | CONFIG_NLS=y |
1359 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1360 | CONFIG_NLS_CODEPAGE_437=m | ||
1361 | CONFIG_NLS_CODEPAGE_737=m | ||
1362 | CONFIG_NLS_CODEPAGE_775=m | ||
1363 | CONFIG_NLS_CODEPAGE_850=m | ||
1364 | CONFIG_NLS_CODEPAGE_852=m | ||
1365 | CONFIG_NLS_CODEPAGE_855=m | ||
1366 | CONFIG_NLS_CODEPAGE_857=m | ||
1367 | CONFIG_NLS_CODEPAGE_860=m | ||
1368 | CONFIG_NLS_CODEPAGE_861=m | ||
1369 | CONFIG_NLS_CODEPAGE_862=m | ||
1370 | CONFIG_NLS_CODEPAGE_863=m | ||
1371 | CONFIG_NLS_CODEPAGE_864=m | ||
1372 | CONFIG_NLS_CODEPAGE_865=m | ||
1373 | CONFIG_NLS_CODEPAGE_866=m | ||
1374 | CONFIG_NLS_CODEPAGE_869=m | ||
1375 | CONFIG_NLS_CODEPAGE_936=m | ||
1376 | CONFIG_NLS_CODEPAGE_950=m | ||
1377 | CONFIG_NLS_CODEPAGE_932=m | ||
1378 | CONFIG_NLS_CODEPAGE_949=m | ||
1379 | CONFIG_NLS_CODEPAGE_874=m | ||
1380 | CONFIG_NLS_ISO8859_8=m | ||
1381 | CONFIG_NLS_CODEPAGE_1250=m | ||
1382 | CONFIG_NLS_CODEPAGE_1251=m | ||
1383 | CONFIG_NLS_ASCII=m | ||
1384 | CONFIG_NLS_ISO8859_1=m | ||
1385 | CONFIG_NLS_ISO8859_2=m | ||
1386 | CONFIG_NLS_ISO8859_3=m | ||
1387 | CONFIG_NLS_ISO8859_4=m | ||
1388 | CONFIG_NLS_ISO8859_5=m | ||
1389 | CONFIG_NLS_ISO8859_6=m | ||
1390 | CONFIG_NLS_ISO8859_7=m | ||
1391 | CONFIG_NLS_ISO8859_9=m | ||
1392 | CONFIG_NLS_ISO8859_13=m | ||
1393 | CONFIG_NLS_ISO8859_14=m | ||
1394 | CONFIG_NLS_ISO8859_15=m | ||
1395 | CONFIG_NLS_KOI8_R=m | ||
1396 | CONFIG_NLS_KOI8_U=m | ||
1397 | CONFIG_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 |
244 | CONFIG_MAX_VCO_HZ=600000000 | 244 | CONFIG_MAX_VCO_HZ=600000000 |
245 | CONFIG_MIN_VCO_HZ=50000000 | 245 | CONFIG_MIN_VCO_HZ=50000000 |
246 | CONFIG_MAX_SCLK_HZ=133000000 | 246 | CONFIG_MAX_SCLK_HZ=133333333 |
247 | CONFIG_MIN_SCLK_HZ=27000000 | 247 | CONFIG_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 |
205 | CONFIG_MAX_VCO_HZ=600000000 | 205 | CONFIG_MAX_VCO_HZ=600000000 |
206 | CONFIG_MIN_VCO_HZ=50000000 | 206 | CONFIG_MIN_VCO_HZ=50000000 |
207 | CONFIG_MAX_SCLK_HZ=133000000 | 207 | CONFIG_MAX_SCLK_HZ=133333333 |
208 | CONFIG_MIN_SCLK_HZ=27000000 | 208 | CONFIG_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); |
61 | ENDPROC(_ret_from_fork) | 63 | ENDPROC(_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; |
130 | ENDPROC (_atomic_ior32) | 130 | ENDPROC (_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 | */ | ||
141 | ENTRY(_safe_user_instruction) | ||
142 | NOP; NOP; NOP; NOP; | ||
143 | EXCPT 0x4; | ||
144 | ENDPROC(_safe_user_instruction) | ||
145 | |||
132 | ENTRY(_fixed_code_end) | 146 | ENTRY(_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 | ||
73 | static uint32_t const dis_mask[MAX_BLACKFIN_GPTIMERS] = | 72 | static 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 | ||
93 | static uint32_t const irq_mask[MAX_BLACKFIN_GPTIMERS] = | 92 | static 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 | |||
112 | static 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); | |||
165 | uint16_t get_gptimer_intr(int timer_id) | 184 | uint16_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 | } |
170 | EXPORT_SYMBOL(get_gptimer_intr); | 189 | EXPORT_SYMBOL(get_gptimer_intr); |
171 | 190 | ||
172 | void clear_gptimer_intr(int timer_id) | 191 | void 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 | } |
177 | EXPORT_SYMBOL(clear_gptimer_intr); | 196 | EXPORT_SYMBOL(clear_gptimer_intr); |
178 | 197 | ||
198 | uint16_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 | } | ||
203 | EXPORT_SYMBOL(get_gptimer_over); | ||
204 | |||
205 | void 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 | } | ||
210 | EXPORT_SYMBOL(clear_gptimer_over); | ||
211 | |||
179 | void set_gptimer_config(int timer_id, uint16_t config) | 212 | void 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 | } |
220 | EXPORT_SYMBOL(disable_gptimers); | 253 | EXPORT_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 | ||
54 | int kstack_depth_to_print = 48; | 68 | int kstack_depth_to_print = 48; |
55 | 69 | ||
56 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON | 70 | static void decode_address(char *buf, unsigned long address) |
57 | static 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 | |||
163 | done: | ||
164 | write_unlock_irqrestore(&tasklist_lock, flags); | ||
134 | } | 165 | } |
135 | #endif | ||
136 | 166 | ||
137 | asmlinkage void double_fault_c(struct pt_regs *fp) | 167 | asmlinkage 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 | ||
524 | void show_stack(struct task_struct *task, unsigned long *stack) | 560 | void 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 | ||
569 | void dump_bfin_regs(struct pt_regs *fp, void *retaddr) | 606 | void 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) | |||
102 | arch_initcall(bfin_isp1761_init); | 104 | arch_initcall(bfin_isp1761_init); |
103 | #endif | 105 | #endif |
104 | 106 | ||
107 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) | ||
108 | static 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 | |||
121 | static 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 | |||
130 | static 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 | |||
143 | static 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) |
106 | static struct resource bfin_pcmcia_cf_resources[] = { | 155 | static 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 | ||
652 | static struct platform_device *stamp_devices[] __initdata = { | 701 | static 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 | */ | ||
50 | const char bfin_board_name[] = "HV Sistemas H8606"; | ||
51 | |||
52 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_BFIN_MODULE) | ||
53 | static 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) | ||
63 | static 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 | |||
76 | static 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) | ||
85 | static 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 | |||
106 | static 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) | ||
115 | static 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 | |||
127 | static 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) | ||
139 | static 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 | |||
156 | static 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) */ | ||
164 | static 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 */ | ||
172 | static 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) | ||
180 | static 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) | ||
188 | static 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 */ | ||
198 | static 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) */ | ||
254 | static 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 */ | ||
269 | static 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 | |||
274 | static 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) | ||
286 | static 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) | ||
292 | static struct resource bfin_uart_resources[] = { | ||
293 | { | ||
294 | .start = 0xFFC00400, | ||
295 | .end = 0xFFC004FF, | ||
296 | .flags = IORESOURCE_MEM, | ||
297 | }, | ||
298 | }; | ||
299 | |||
300 | static 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 | |||
308 | static 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 | |||
334 | static 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 | |||
345 | arch_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 | |||
6 | obj-$(CONFIG_BFIN533_STAMP) += stamp.o | 6 | obj-$(CONFIG_BFIN533_STAMP) += stamp.o |
7 | obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o | 7 | obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o |
8 | obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o | 8 | obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o |
9 | obj-$(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) | |
50 | static struct mtd_partition bfin_spi_flash_partitions[] = { | 50 | static 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) | ||
81 | static struct bfin5xx_spi_chip spi_adc_chip_info = { | 83 | static 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) |
87 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 90 | static 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) | ||
97 | static struct bfin5xx_spi_chip spi_mmc_chip_info = { | ||
98 | .enable_dma = 1, | ||
99 | .bits_per_word = 8, | ||
100 | }; | ||
101 | #endif | ||
102 | |||
93 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 103 | static 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 | ||
613 | static struct pata_platform_info bfin_pata_platform_data = { | 613 | static 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 | ||
618 | static struct resource bfin_pata_resources[] = { | 618 | static 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 | ||
6 | mainmenu "uClinux/h8300 (w/o MMU) Kernel Configuration" | 6 | mainmenu "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 | # |
6 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 6 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
7 | 7 | ||
@@ -28,6 +28,8 @@ CONFIG_TASK_IO_ACCOUNTING=y | |||
28 | CONFIG_LOG_BUF_SHIFT=20 | 28 | CONFIG_LOG_BUF_SHIFT=20 |
29 | CONFIG_CGROUPS=y | 29 | CONFIG_CGROUPS=y |
30 | CONFIG_CPUSETS=y | 30 | CONFIG_CPUSETS=y |
31 | CONFIG_FAIR_GROUP_SCHED=y | ||
32 | CONFIG_FAIR_USER_SCHED=y | ||
31 | CONFIG_SYSFS_DEPRECATED=y | 33 | CONFIG_SYSFS_DEPRECATED=y |
32 | CONFIG_RELAY=y | 34 | CONFIG_RELAY=y |
33 | CONFIG_BLK_DEV_INITRD=y | 35 | CONFIG_BLK_DEV_INITRD=y |
@@ -48,7 +50,6 @@ CONFIG_FUTEX=y | |||
48 | CONFIG_ANON_INODES=y | 50 | CONFIG_ANON_INODES=y |
49 | CONFIG_EPOLL=y | 51 | CONFIG_EPOLL=y |
50 | CONFIG_SIGNALFD=y | 52 | CONFIG_SIGNALFD=y |
51 | CONFIG_TIMERFD=y | ||
52 | CONFIG_EVENTFD=y | 53 | CONFIG_EVENTFD=y |
53 | CONFIG_SHMEM=y | 54 | CONFIG_SHMEM=y |
54 | CONFIG_VM_EVENT_COUNTERS=y | 55 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -69,6 +70,7 @@ CONFIG_STOP_MACHINE=y | |||
69 | CONFIG_BLOCK=y | 70 | CONFIG_BLOCK=y |
70 | # CONFIG_BLK_DEV_IO_TRACE is not set | 71 | # CONFIG_BLK_DEV_IO_TRACE is not set |
71 | CONFIG_BLK_DEV_BSG=y | 72 | CONFIG_BLK_DEV_BSG=y |
73 | CONFIG_BLOCK_COMPAT=y | ||
72 | 74 | ||
73 | # | 75 | # |
74 | # IO Schedulers | 76 | # IO Schedulers |
@@ -93,6 +95,7 @@ CONFIG_MMU=y | |||
93 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 95 | CONFIG_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 |
98 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | ||
96 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 99 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
97 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 100 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
98 | CONFIG_GENERIC_TIME=y | 101 | CONFIG_GENERIC_TIME=y |
@@ -113,10 +116,10 @@ CONFIG_IA64_SGI_SN2=y | |||
113 | CONFIG_MCKINLEY=y | 116 | CONFIG_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 |
116 | CONFIG_IA64_PAGE_SIZE_16KB=y | 119 | # CONFIG_IA64_PAGE_SIZE_16KB is not set |
117 | # CONFIG_IA64_PAGE_SIZE_64KB is not set | 120 | CONFIG_IA64_PAGE_SIZE_64KB=y |
118 | # CONFIG_PGTABLE_3 is not set | 121 | CONFIG_PGTABLE_3=y |
119 | CONFIG_PGTABLE_4=y | 122 | # CONFIG_PGTABLE_4 is not set |
120 | # CONFIG_HZ_100 is not set | 123 | # CONFIG_HZ_100 is not set |
121 | CONFIG_HZ_250=y | 124 | CONFIG_HZ_250=y |
122 | # CONFIG_HZ_300 is not set | 125 | # CONFIG_HZ_300 is not set |
@@ -131,6 +134,7 @@ CONFIG_SMP=y | |||
131 | CONFIG_NR_CPUS=1024 | 134 | CONFIG_NR_CPUS=1024 |
132 | # CONFIG_HOTPLUG_CPU is not set | 135 | # CONFIG_HOTPLUG_CPU is not set |
133 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 136 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
137 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
134 | CONFIG_SCHED_SMT=y | 138 | CONFIG_SCHED_SMT=y |
135 | CONFIG_PREEMPT_NONE=y | 139 | CONFIG_PREEMPT_NONE=y |
136 | # CONFIG_PREEMPT_VOLUNTARY is not set | 140 | # CONFIG_PREEMPT_VOLUNTARY is not set |
@@ -144,6 +148,7 @@ CONFIG_DISCONTIGMEM=y | |||
144 | CONFIG_FLAT_NODE_MEM_MAP=y | 148 | CONFIG_FLAT_NODE_MEM_MAP=y |
145 | CONFIG_NEED_MULTIPLE_NODES=y | 149 | CONFIG_NEED_MULTIPLE_NODES=y |
146 | # CONFIG_SPARSEMEM_STATIC is not set | 150 | # CONFIG_SPARSEMEM_STATIC is not set |
151 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | ||
147 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 152 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
148 | CONFIG_MIGRATION=y | 153 | CONFIG_MIGRATION=y |
149 | CONFIG_RESOURCES_64BIT=y | 154 | CONFIG_RESOURCES_64BIT=y |
@@ -171,6 +176,7 @@ CONFIG_IA64_PALINFO=y | |||
171 | CONFIG_IA64_MC_ERR_INJECT=y | 176 | CONFIG_IA64_MC_ERR_INJECT=y |
172 | CONFIG_SGI_SN=y | 177 | CONFIG_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 | |||
220 | CONFIG_PCI_SYSCALL=y | 226 | CONFIG_PCI_SYSCALL=y |
221 | CONFIG_PCIEPORTBUS=y | 227 | CONFIG_PCIEPORTBUS=y |
222 | CONFIG_HOTPLUG_PCI_PCIE=y | 228 | CONFIG_HOTPLUG_PCI_PCIE=y |
223 | # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set | ||
224 | CONFIG_PCIEAER=y | 229 | CONFIG_PCIEAER=y |
225 | CONFIG_ARCH_SUPPORTS_MSI=y | 230 | CONFIG_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 |
233 | CONFIG_HOTPLUG_PCI_SGI=y | 238 | CONFIG_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 | |||
271 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 272 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
272 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 273 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
273 | CONFIG_INET_XFRM_MODE_BEET=y | 274 | CONFIG_INET_XFRM_MODE_BEET=y |
275 | CONFIG_INET_LRO=y | ||
274 | CONFIG_INET_DIAG=m | 276 | CONFIG_INET_DIAG=m |
275 | CONFIG_INET_TCP_DIAG=m | 277 | CONFIG_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 | # |
347 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
345 | CONFIG_STANDALONE=y | 348 | CONFIG_STANDALONE=y |
346 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 349 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
347 | CONFIG_FW_LOADER=y | 350 | CONFIG_FW_LOADER=y |
@@ -402,7 +405,12 @@ CONFIG_IDE_PROC_FS=y | |||
402 | # IDE chipset support/bugfixes | 405 | # IDE chipset support/bugfixes |
403 | # | 406 | # |
404 | CONFIG_IDE_GENERIC=y | 407 | CONFIG_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 | # | ||
406 | CONFIG_BLK_DEV_IDEPCI=y | 414 | CONFIG_BLK_DEV_IDEPCI=y |
407 | CONFIG_IDEPCI_SHARE_IRQ=y | 415 | CONFIG_IDEPCI_SHARE_IRQ=y |
408 | CONFIG_IDEPCI_PCIBUS_ORDER=y | 416 | CONFIG_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 |
412 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 420 | CONFIG_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 |
441 | CONFIG_BLK_DEV_IDEDMA=y | 447 | CONFIG_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 | |||
482 | CONFIG_SCSI_SAS_LIBSAS=y | 487 | CONFIG_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 |
490 | CONFIG_SCSI_SRP_ATTRS=y | ||
485 | CONFIG_SCSI_LOWLEVEL=y | 491 | CONFIG_SCSI_LOWLEVEL=y |
486 | CONFIG_ISCSI_TCP=m | 492 | CONFIG_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 |
533 | CONFIG_SATA_VITESSE=y | 540 | CONFIG_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 | |||
588 | CONFIG_DM_MULTIPATH_EMC=m | 597 | CONFIG_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 | # | ||
595 | CONFIG_FUSION=y | 600 | CONFIG_FUSION=y |
596 | CONFIG_FUSION_SPI=y | 601 | CONFIG_FUSION_SPI=y |
597 | CONFIG_FUSION_FC=y | 602 | CONFIG_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 |
619 | CONFIG_NETDEV_1000=y | 626 | CONFIG_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 | |||
638 | CONFIG_CHELSIO_T1_1G=y | 646 | CONFIG_CHELSIO_T1_1G=y |
639 | # CONFIG_CHELSIO_T1_NAPI is not set | 647 | # CONFIG_CHELSIO_T1_NAPI is not set |
640 | CONFIG_CHELSIO_T3=m | 648 | CONFIG_CHELSIO_T3=m |
649 | CONFIG_IXGBE=m | ||
641 | # CONFIG_IXGB is not set | 650 | # CONFIG_IXGB is not set |
642 | CONFIG_S2IO=m | 651 | CONFIG_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 |
671 | CONFIG_NETCONSOLE=y | 682 | CONFIG_NETCONSOLE=y |
683 | # CONFIG_NETCONSOLE_DYNAMIC is not set | ||
672 | CONFIG_NETPOLL=y | 684 | CONFIG_NETPOLL=y |
673 | # CONFIG_NETPOLL_TRAP is not set | 685 | # CONFIG_NETPOLL_TRAP is not set |
674 | CONFIG_NET_POLL_CONTROLLER=y | 686 | CONFIG_NET_POLL_CONTROLLER=y |
@@ -690,7 +702,6 @@ CONFIG_INPUT_MOUSEDEV=y | |||
690 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 702 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
691 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 703 | CONFIG_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 | # |
716 | CONFIG_VT=y | 727 | CONFIG_VT=y |
728 | # CONFIG_VT_UNICODE is not set | ||
717 | CONFIG_VT_CONSOLE=y | 729 | CONFIG_VT_CONSOLE=y |
718 | CONFIG_HW_CONSOLE=y | 730 | CONFIG_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 | |||
760 | CONFIG_EFI_RTC=y | 772 | CONFIG_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 |
763 | CONFIG_AGP=y | ||
764 | CONFIG_AGP_SGI_TIOCA=y | ||
765 | # CONFIG_DRM is not set | ||
766 | CONFIG_RAW_DRIVER=m | 775 | CONFIG_RAW_DRIVER=m |
767 | CONFIG_MAX_RAW_DEVS=256 | 776 | CONFIG_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 | # | ||
796 | CONFIG_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 | # |
814 | CONFIG_AGP=y | ||
815 | CONFIG_AGP_SGI_TIOCA=y | ||
816 | # CONFIG_DRM is not set | ||
817 | # CONFIG_VGASTATE is not set | ||
818 | CONFIG_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 | ||
806 | CONFIG_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 | |||
820 | CONFIG_HID_SUPPORT=y | 838 | CONFIG_HID_SUPPORT=y |
821 | CONFIG_HID=y | 839 | CONFIG_HID=y |
822 | CONFIG_HID_DEBUG=y | 840 | CONFIG_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 | |||
1005 | CONFIG_INOTIFY=y | 1011 | CONFIG_INOTIFY=y |
1006 | CONFIG_INOTIFY_USER=y | 1012 | CONFIG_INOTIFY_USER=y |
1007 | CONFIG_QUOTA=y | 1013 | CONFIG_QUOTA=y |
1014 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
1015 | CONFIG_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 |
1010 | CONFIG_QUOTACTL=y | 1018 | CONFIG_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 |
1044 | CONFIG_HUGETLBFS=y | 1052 | CONFIG_HUGETLBFS=y |
1045 | CONFIG_HUGETLB_PAGE=y | 1053 | CONFIG_HUGETLB_PAGE=y |
1046 | CONFIG_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 | 1072 | CONFIG_NETWORK_FILESYSTEMS=y | |
1066 | # | ||
1067 | # Network File Systems | ||
1068 | # | ||
1069 | CONFIG_NFS_FS=m | 1073 | CONFIG_NFS_FS=m |
1070 | CONFIG_NFS_V3=y | 1074 | CONFIG_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 | |||
1082 | CONFIG_NFS_COMMON=y | 1086 | CONFIG_NFS_COMMON=y |
1083 | CONFIG_SUNRPC=m | 1087 | CONFIG_SUNRPC=m |
1084 | CONFIG_SUNRPC_GSS=m | 1088 | CONFIG_SUNRPC_GSS=m |
1089 | CONFIG_SUNRPC_XPRT_RDMA=m | ||
1085 | # CONFIG_SUNRPC_BIND34 is not set | 1090 | # CONFIG_SUNRPC_BIND34 is not set |
1086 | CONFIG_RPCSEC_GSS_KRB5=m | 1091 | CONFIG_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 |
1119 | CONFIG_EFI_PARTITION=y | 1124 | CONFIG_EFI_PARTITION=y |
1120 | # CONFIG_SYSV68_PARTITION is not set | 1125 | # CONFIG_SYSV68_PARTITION is not set |
1121 | |||
1122 | # | ||
1123 | # Native Language Support | ||
1124 | # | ||
1125 | CONFIG_NLS=y | 1126 | CONFIG_NLS=y |
1126 | CONFIG_NLS_DEFAULT="iso8859-1" | 1127 | CONFIG_NLS_DEFAULT="iso8859-1" |
1127 | CONFIG_NLS_CODEPAGE_437=y | 1128 | CONFIG_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 |
1164 | CONFIG_NLS_UTF8=y | 1165 | CONFIG_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 |
1225 | CONFIG_FORCED_INLINING=y | 1222 | CONFIG_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 |
1228 | CONFIG_IA64_GRANULE_16MB=y | 1226 | CONFIG_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 | ||
1241 | CONFIG_XOR_BLOCKS=y | 1240 | CONFIG_XOR_BLOCKS=y |
1242 | CONFIG_ASYNC_CORE=y | 1241 | CONFIG_ASYNC_CORE=y |
1243 | CONFIG_ASYNC_MEMCPY=y | 1242 | CONFIG_ASYNC_MEMCPY=y |
@@ -1262,6 +1261,7 @@ CONFIG_CRYPTO_ECB=m | |||
1262 | CONFIG_CRYPTO_CBC=m | 1261 | CONFIG_CRYPTO_CBC=m |
1263 | CONFIG_CRYPTO_PCBC=m | 1262 | CONFIG_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 |
1266 | CONFIG_CRYPTO_DES=m | 1266 | CONFIG_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 | ||
1278 | CONFIG_CRYPTO_DEFLATE=m | 1279 | CONFIG_CRYPTO_DEFLATE=m |
1279 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1280 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1280 | CONFIG_CRYPTO_CRC32C=m | 1281 | CONFIG_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 */ |
1234 | unsigned long | 1234 | unsigned long __init |
1235 | vmcore_find_descriptor_size (unsigned long address) | 1235 | vmcore_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 | ||
115 | void ia64_teardown_msi_irq(unsigned int irq) | 115 | void 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 | ||
421 | static void __init | ||
422 | check_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 | |||
448 | static __initdata int nomca; | 420 | static __initdata int nomca; |
449 | static __init int setup_nomca(char *s) | 421 | static __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); | |||
142 | EXPORT_PER_CPU_SYMBOL(cpu_sibling_map); | 142 | EXPORT_PER_CPU_SYMBOL(cpu_sibling_map); |
143 | 143 | ||
144 | int smp_num_siblings = 1; | 144 | int smp_num_siblings = 1; |
145 | int 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) */ |
148 | volatile int ia64_cpu_to_sapicid[NR_CPUS]; | 147 | volatile 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 | ||
475 | static int | 475 | static int __meminit |
476 | virtual_memmap_init (u64 start, u64 end, void *arg) | 476 | virtual_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 | ||
506 | void | 506 | void __meminit |
507 | memmap_init (unsigned long size, int nid, unsigned long zone, | 507 | memmap_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 @@ | |||
1 | SECTIONS { | 1 | SECTIONS { |
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 | ||
584 | config TOSHIBA_JMR3927 | 584 | config 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 | |||
597 | config TOSHIBA_RBTX4927 | 598 | config 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 | |||
618 | config TOSHIBA_RBTX4938 | 620 | config 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 | |||
736 | config CEVT_R4K | 739 | config CEVT_R4K |
737 | bool | 740 | bool |
738 | 741 | ||
742 | config CEVT_TXX9 | ||
743 | bool | ||
744 | |||
739 | config CFE | 745 | config 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 | ||
322 | void 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 | |||
353 | static void __init setup_local_irq(unsigned int irq_nr, int type, int int_req) | 321 | static 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); | |||
67 | unsigned long wtimer; | 67 | unsigned long wtimer; |
68 | 68 | ||
69 | #ifdef CONFIG_PM | 69 | #ifdef CONFIG_PM |
70 | irqreturn_t counter0_irq(int irq, void *dev_id) | 70 | static 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 | ||
120 | struct 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 | ||
224 | void __init plat_timer_setup(struct irqaction *irq) | 231 | void __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 | ||
10 | lib-y := init.o board_setup.o irqmap.o | 10 | lib-y := init.o board_setup.o irqmap.o |
11 | obj-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 | |||
28 | static 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 | |||
37 | static 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 | |||
46 | static 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 | |||
53 | static struct gpio_led default_leds[] = { | ||
54 | { | ||
55 | .name = "mtx1:green", | ||
56 | .gpio = 211, | ||
57 | }, { | ||
58 | .name = "mtx1:red", | ||
59 | .gpio = 212, | ||
60 | }, | ||
61 | }; | ||
62 | |||
63 | static struct gpio_led_platform_data mtx1_led_data = { | ||
64 | .num_leds = ARRAY_SIZE(default_leds), | ||
65 | .leds = default_leds, | ||
66 | }; | ||
67 | |||
68 | static struct platform_device mtx1_gpio_leds = { | ||
69 | .name = "leds-gpio", | ||
70 | .id = -1, | ||
71 | .dev = { | ||
72 | .platform_data = &mtx1_led_data, | ||
73 | } | ||
74 | }; | ||
75 | |||
76 | static struct __initdata platform_device * mtx1_devs[] = { | ||
77 | &mtx1_gpio_leds, | ||
78 | &mtx1_wdt | ||
79 | }; | ||
80 | |||
81 | static int __init mtx1_register_devices(void) | ||
82 | { | ||
83 | return platform_add_devices(mtx1_devs, ARRAY_SIZE(mtx1_devs)); | ||
84 | } | ||
85 | |||
86 | arch_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); | |||
68 | int titan_irqflags; | 68 | int 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 | */ | ||
71 | void __init plat_time_init(void) | 77 | void __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 | ||
82 | void __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 | |||
89 | static int __init excite_init_console(void) | 88 | static 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 | |||
738 | CONFIG_VT_HW_CONSOLE_BINDING=y | 738 | CONFIG_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 | |||
714 | CONFIG_VT_HW_CONSOLE_BINDING=y | 714 | CONFIG_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 | |||
775 | CONFIG_VT_HW_CONSOLE_BINDING=y | 775 | CONFIG_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 | |||
731 | CONFIG_VT_HW_CONSOLE_BINDING=y | 731 | CONFIG_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 | # |
469 | CONFIG_IDE_GENERIC=y | 469 | CONFIG_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 | 471 | CONFIG_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 | ||
22 | void __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 | ||
56 | extern void puts(const char *cp); | 52 | extern 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 */ |
63 | static int jmr3927_ccfg_toeon; | 55 | static 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 | ||
96 | static 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 | |||
102 | static void jmr3927_set_mode(enum clock_event_mode mode, | ||
103 | struct clock_event_device *evt) | ||
104 | { | ||
105 | /* Nothing to do here */ | ||
106 | } | ||
107 | |||
108 | struct 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 | |||
118 | static 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 | |||
129 | static struct irqaction jmr3927_timer_irqaction = { | ||
130 | .handler = jmr3927_timer_interrupt, | ||
131 | .flags = IRQF_DISABLED | IRQF_PERCPU, | ||
132 | .name = "jmr3927-timer", | ||
133 | }; | ||
134 | |||
135 | void __init plat_time_init(void) | 88 | void __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 | ||
11 | obj-$(CONFIG_CEVT_R4K) += cevt-r4k.o | 11 | obj-$(CONFIG_CEVT_R4K) += cevt-r4k.o |
12 | obj-$(CONFIG_CEVT_GT641XX) += cevt-gt641xx.o | 12 | obj-$(CONFIG_CEVT_GT641XX) += cevt-gt641xx.o |
13 | obj-$(CONFIG_CEVT_TXX9) += cevt-txx9.o | ||
13 | 14 | ||
14 | binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ | 15 | binfmt_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) | |||
49 | static int gt641xx_timer0_set_next_event(unsigned long delta, | 49 | static 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(>641xx_timer_lock, flags); | 54 | spin_lock(>641xx_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(>641xx_timer_lock, flags); | 63 | spin_unlock(>641xx_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, | |||
69 | static void gt641xx_timer0_set_mode(enum clock_event_mode mode, | 68 | static 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(>641xx_timer_lock, flags); | 73 | spin_lock(>641xx_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(>641xx_timer_lock, flags); | 91 | spin_unlock(>641xx_timer_lock); |
94 | } | 92 | } |
95 | 93 | ||
96 | static void gt641xx_timer0_event_handler(struct clock_event_device *dev) | 94 | static 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 = >641xx_timer0_clockevent; | 132 | cd = >641xx_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(>641xx_timer0_clockevent); | 138 | clockevents_register_device(>641xx_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 | ||
180 | static int c0_compare_int_usable(void) | 180 | static 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 | |||
23 | static struct txx9_tmr_reg __iomem *txx9_cs_tmrptr; | ||
24 | |||
25 | static 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 | |||
33 | static 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 | |||
41 | void __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 | |||
59 | static struct txx9_tmr_reg __iomem *txx9_tmrptr; | ||
60 | |||
61 | static 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 | |||
69 | static 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 | |||
99 | static 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 | |||
111 | static 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 | |||
120 | static 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 | |||
130 | static struct irqaction txx9tmr_irq = { | ||
131 | .handler = txx9tmr_interrupt, | ||
132 | .flags = IRQF_DISABLED | IRQF_PERCPU, | ||
133 | .name = "txx9tmr", | ||
134 | }; | ||
135 | |||
136 | void __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 | |||
159 | void __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 | |||
27 | typedef struct { | 31 | typedef struct { |
28 | unsigned long sig[4]; | 32 | unsigned long sig[_IRIX_NSIG_WORDS]; |
29 | } irix_sigset_t; | 33 | } irix_sigset_t; |
30 | 34 | ||
31 | struct sigctx_irix5 { | 35 | struct 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 | ||
91 | static int vpe0limit; | ||
91 | static int ipibuffers = 0; | 92 | static int ipibuffers = 0; |
92 | static int nostlb = 0; | 93 | static int nostlb = 0; |
93 | static int asidmask = 0; | 94 | static int asidmask = 0; |
94 | unsigned long smtc_asid_mask = 0xff; | 95 | unsigned long smtc_asid_mask = 0xff; |
95 | 96 | ||
97 | static int __init vpe0tcs(char *str) | ||
98 | { | ||
99 | get_option(&str, &vpe0limit); | ||
100 | |||
101 | return 1; | ||
102 | } | ||
103 | |||
96 | static int __init ipibufs(char *str) | 104 | static 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 | ||
341 | void mipsmt_prepare_cpus(void) | 350 | void 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 | ||
124 | unsigned int mips_hpt_frequency; | 121 | unsigned int mips_hpt_frequency; |
@@ -221,8 +218,18 @@ void __init __weak plat_time_init(void) | |||
221 | { | 218 | { |
222 | } | 219 | } |
223 | 220 | ||
224 | void __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 | */ | ||
230 | void __init plat_timer_setup(struct irqaction *irq) | ||
225 | { | 231 | { |
232 | BUG(); | ||
226 | } | 233 | } |
227 | 234 | ||
228 | void __init time_init(void) | 235 | void __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 | ||
120 | void plat_time_init(void) | 120 | void __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 | ||
125 | void __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 | ||
130 | void __init plat_mem_setup(void) | 127 | void __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 | ||
130 | void __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 | |||
150 | void __init plat_perf_setup(void) | 130 | void __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 | ||
169 | void __init plat_timer_setup(struct irqaction *irq) | 149 | unsigned 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); | 166 | void __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 | ||
78 | void __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 | |||
97 | static int mips_cpu_timer_irq; | 78 | static int mips_cpu_timer_irq; |
98 | 79 | ||
99 | static void mips_timer_dispatch(void) | 80 | static void mips_timer_dispatch(void) |
@@ -102,26 +83,37 @@ static void mips_timer_dispatch(void) | |||
102 | } | 83 | } |
103 | 84 | ||
104 | 85 | ||
105 | void __init plat_timer_setup(struct irqaction *irq) | 86 | unsigned __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 | 102 | void __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 @@ | |||
26 | static unsigned long icache_size, dcache_size; /* Size in bytes */ | 26 | static unsigned long icache_size, dcache_size; /* Size in bytes */ |
27 | static unsigned long icache_lsize, dcache_lsize; /* Size in bytes */ | 27 | static unsigned long icache_lsize, dcache_lsize; /* Size in bytes */ |
28 | 28 | ||
29 | #undef DEBUG_CACHE | ||
30 | |||
31 | unsigned long __init r3k_cache_size(unsigned long ca_flags) | 29 | unsigned 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 | ||
220 | static 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 | |||
240 | static inline void r3k_flush_cache_all(void) | 218 | static 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 | ||
254 | static void r3k_flush_cache_range(struct vm_area_struct *vma, | 232 | static 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 | ||
259 | static void r3k_flush_cache_page(struct vm_area_struct *vma, unsigned long page, unsigned long pfn) | 237 | static 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 | ||
263 | static void local_r3k_flush_data_cache_page(void *addr) | 269 | static 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 | ||
348 | static 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 | |||
348 | static inline void local_r4k_flush_cache_range(void * args) | 363 | static 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 | ****************************************************************************/ |
205 | int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | 205 | int __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 = { | |||
131 | static int rt_next_event(unsigned long delta, struct clock_event_device *evt) | 131 | static 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 | |||
128 | struct irqaction cpuerr_irq = { | 122 | struct 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 | ||
140 | static uint64_t crime_mask; | 134 | static uint64_t crime_mask; |
141 | 135 | ||
142 | static void enable_crime_irq(unsigned int irq) | 136 | static 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 | ||
148 | static void disable_crime_irq(unsigned int irq) | 144 | static 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 | ||
155 | static void mask_and_ack_crime_irq(unsigned int irq) | 153 | static void crime_level_mask_and_ack_irq(unsigned int irq) |
154 | { | ||
155 | crime_disable_irq(irq); | ||
156 | } | ||
157 | |||
158 | static 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 | |||
164 | static 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 | |||
173 | static 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 | ||
169 | static void end_crime_irq(unsigned int irq) | 187 | static 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 | ||
175 | static struct irq_chip ip32_crime_interrupt = { | 193 | static 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 | ||
329 | static struct irq_chip ip32_maceisa_interrupt = { | 347 | static 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 | ||
283 | int 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 | ||
40 | extern 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 | ||
253 | int 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 | ||
53 | extern 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 | ||
14 | static void sni_a20r_timer_ack(void) | 14 | static 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 | ||
43 | static 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 | |||
54 | static 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 | |||
66 | static 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 | */ |
23 | static void __init sni_a20r_timer_setup(struct irqaction *irq) | 76 | static 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 | ||
124 | void __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 | ||
131 | int tx4927_using_backplane = 0; | 131 | int tx4927_using_backplane = 0; |
132 | 132 | ||
133 | extern void gt64120_time_init(void); | ||
134 | extern void toshiba_rbtx4927_irq_setup(void); | 133 | extern void toshiba_rbtx4927_irq_setup(void); |
135 | 134 | ||
136 | char *prom_getcmdline(void); | 135 | char *prom_getcmdline(void); |
@@ -721,6 +720,7 @@ void toshiba_rbtx4927_power_off(void) | |||
721 | 720 | ||
722 | void __init toshiba_rbtx4927_setup(void) | 721 | void __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) | |||
937 | void __init | 939 | void __init |
938 | toshiba_rbtx4927_time_init(void) | 940 | toshiba_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 | ||
948 | static int __init toshiba_rbtx4927_rtc_init(void) | 949 | static 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 | |||
858 | void __init plat_time_init(void) | 849 | void __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 | ||
863 | void __init toshiba_rbtx4938_setup(void) | 858 | void __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 | ||
518 | endmenu | 518 | endmenu |
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 | ||
6 | mainmenu "Linux/SH64 Kernel Configuration" | 6 | mainmenu "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 | ||
409 | config SOLARIS_EMUL | 409 | config 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 | # |
6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
@@ -19,6 +19,7 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y | |||
19 | CONFIG_AUDIT_ARCH=y | 19 | CONFIG_AUDIT_ARCH=y |
20 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | 20 | CONFIG_ARCH_NO_VIRT_TO_BUS=y |
21 | CONFIG_OF=y | 21 | CONFIG_OF=y |
22 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
22 | CONFIG_SPARC64_PAGE_SIZE_8KB=y | 23 | CONFIG_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 |
56 | CONFIG_SYSFS_DEPRECATED=y | 57 | CONFIG_SYSFS_DEPRECATED=y |
57 | CONFIG_RELAY=y | 58 | CONFIG_RELAY=y |
58 | # CONFIG_BLK_DEV_INITRD is not set | 59 | CONFIG_BLK_DEV_INITRD=y |
60 | CONFIG_INITRAMFS_SOURCE="" | ||
59 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 61 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
60 | CONFIG_SYSCTL=y | 62 | CONFIG_SYSCTL=y |
61 | # CONFIG_EMBEDDED is not set | 63 | # CONFIG_EMBEDDED is not set |
@@ -117,22 +119,7 @@ CONFIG_NO_HZ=y | |||
117 | CONFIG_HIGH_RES_TIMERS=y | 119 | CONFIG_HIGH_RES_TIMERS=y |
118 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | 120 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y |
119 | # CONFIG_SMP is not set | 121 | # CONFIG_SMP is not set |
120 | CONFIG_CPU_FREQ=y | 122 | # CONFIG_CPU_FREQ is not set |
121 | CONFIG_CPU_FREQ_TABLE=m | ||
122 | # CONFIG_CPU_FREQ_DEBUG is not set | ||
123 | CONFIG_CPU_FREQ_STAT=m | ||
124 | CONFIG_CPU_FREQ_STAT_DETAILS=y | ||
125 | CONFIG_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 | ||
129 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | ||
130 | CONFIG_CPU_FREQ_GOV_POWERSAVE=m | ||
131 | CONFIG_CPU_FREQ_GOV_USERSPACE=m | ||
132 | CONFIG_CPU_FREQ_GOV_ONDEMAND=m | ||
133 | CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m | ||
134 | CONFIG_US3_FREQ=m | ||
135 | CONFIG_US2E_FREQ=m | ||
136 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 123 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
137 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 124 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
138 | CONFIG_GENERIC_HWEIGHT=y | 125 | CONFIG_GENERIC_HWEIGHT=y |
@@ -161,7 +148,7 @@ CONFIG_SBUS=y | |||
161 | CONFIG_SBUSCHAR=y | 148 | CONFIG_SBUSCHAR=y |
162 | CONFIG_SUN_AUXIO=y | 149 | CONFIG_SUN_AUXIO=y |
163 | CONFIG_SUN_IO=y | 150 | CONFIG_SUN_IO=y |
164 | # CONFIG_SUN_LDOMS is not set | 151 | CONFIG_SUN_LDOMS=y |
165 | CONFIG_PCI=y | 152 | CONFIG_PCI=y |
166 | CONFIG_PCI_DOMAINS=y | 153 | CONFIG_PCI_DOMAINS=y |
167 | CONFIG_PCI_SYSCALL=y | 154 | CONFIG_PCI_SYSCALL=y |
@@ -338,6 +325,7 @@ CONFIG_CDROM_PKTCDVD=m | |||
338 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 325 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
339 | CONFIG_CDROM_PKTCDVD_WCACHE=y | 326 | CONFIG_CDROM_PKTCDVD_WCACHE=y |
340 | CONFIG_ATA_OVER_ETH=m | 327 | CONFIG_ATA_OVER_ETH=m |
328 | CONFIG_SUNVDC=m | ||
341 | CONFIG_MISC_DEVICES=y | 329 | CONFIG_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 | # |
441 | CONFIG_SCSI_SPI_ATTRS=y | 429 | CONFIG_SCSI_SPI_ATTRS=y |
442 | CONFIG_SCSI_FC_ATTRS=y | 430 | CONFIG_SCSI_FC_ATTRS=y |
443 | CONFIG_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 |
447 | CONFIG_SCSI_LOWLEVEL=y | 435 | CONFIG_SCSI_LOWLEVEL=y |
448 | CONFIG_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 |
507 | CONFIG_NETDEVICES=y | 495 | CONFIG_NETDEVICES=y |
508 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | 496 | # CONFIG_NETDEVICES_MULTIQUEUE is not set |
509 | CONFIG_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 |
525 | CONFIG_CASSINI=m | 513 | CONFIG_CASSINI=m |
514 | CONFIG_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 | 569 | CONFIG_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 |
703 | CONFIG_SERIAL_SUNSU=y | 692 | CONFIG_SERIAL_SUNSU=y |
704 | CONFIG_SERIAL_SUNSU_CONSOLE=y | 693 | CONFIG_SERIAL_SUNSU_CONSOLE=y |
705 | CONFIG_SERIAL_SUNSAB=m | 694 | CONFIG_SERIAL_SUNSAB=y |
695 | CONFIG_SERIAL_SUNSAB_CONSOLE=y | ||
706 | CONFIG_SERIAL_SUNHV=y | 696 | CONFIG_SERIAL_SUNHV=y |
707 | CONFIG_SERIAL_CORE=y | 697 | CONFIG_SERIAL_CORE=y |
708 | CONFIG_SERIAL_CORE_CONSOLE=y | 698 | CONFIG_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 | 873 | CONFIG_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 |
876 | CONFIG_FB_CG6=y | ||
877 | CONFIG_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 | ||
882 | CONFIG_FB_XVR500=y | ||
883 | CONFIG_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 | 893 | CONFIG_FB_ATY=y |
894 | CONFIG_FB_ATY_CT=y | ||
895 | # CONFIG_FB_ATY_GENERIC_LCD is not set | ||
896 | CONFIG_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 | # |
1194 | CONFIG_SUN_OPENPROMIO=m | 1196 | CONFIG_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 | # |
1209 | CONFIG_EXT2_FS=y | 1206 | CONFIG_EXT2_FS=y |
@@ -1345,6 +1342,7 @@ CONFIG_KPROBES=y | |||
1345 | # | 1342 | # |
1346 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 1343 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
1347 | CONFIG_PRINTK_TIME=y | 1344 | CONFIG_PRINTK_TIME=y |
1345 | # CONFIG_ENABLE_WARN_DEPRECATED is not set | ||
1348 | CONFIG_ENABLE_MUST_CHECK=y | 1346 | CONFIG_ENABLE_MUST_CHECK=y |
1349 | CONFIG_MAGIC_SYSRQ=y | 1347 | CONFIG_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 | ||
1374 | CONFIG_FORCED_INLINING=y | 1373 | CONFIG_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. */ |
222 | EXPORT_SYMBOL(io_remap_pfn_range); | 222 | EXPORT_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 */ |
226 | EXPORT_SYMBOL(verify_compat_iovec); | 226 | EXPORT_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 @@ | |||
1 | menu "Host processor type and features" | 1 | menu "Host processor type and features" |
2 | 2 | ||
3 | source "arch/i386/Kconfig.cpu" | 3 | source "arch/x86/Kconfig.cpu" |
4 | 4 | ||
5 | endmenu | 5 | endmenu |
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) | |||
9 | ELF_FORMAT := elf32-$(SUBARCH) | 9 | ELF_FORMAT := elf32-$(SUBARCH) |
10 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S | 10 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S |
11 | HEADER_ARCH := x86 | 11 | HEADER_ARCH := x86 |
12 | CHECKFLAGS += -D__i386__ | ||
12 | 13 | ||
13 | ifeq ("$(origin SUBARCH)", "command line") | 14 | ifeq ("$(origin SUBARCH)", "command line") |
14 | ifneq ("$(shell uname -m | sed -e s/i.86/i386/)", "$(SUBARCH)") | 15 | ifneq ("$(shell uname -m | sed -e s/i.86/i386/)", "$(SUBARCH)") |
@@ -26,10 +27,8 @@ AFLAGS += -DCONFIG_X86_32 | |||
26 | CONFIG_X86_32 := y | 27 | CONFIG_X86_32 := y |
27 | export CONFIG_X86_32 | 28 | export CONFIG_X86_32 |
28 | 29 | ||
29 | ARCH_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. |
32 | include $(srctree)/arch/i386/Makefile.cpu | 31 | include $(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. |
35 | cflags-y += $(call cc-option,-mpreferred-stack-boundary=2) | 34 | cflags-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! | ||
11 | ARCH_KERNEL_DEFINES = -U__$(SUBARCH)__ | ||
12 | KBUILD_CFLAGS += $(_extra_flags_) | 9 | KBUILD_CFLAGS += $(_extra_flags_) |
13 | 10 | ||
14 | CHECKFLAGS += -m64 | 11 | CHECKFLAGS += -m64 -D__x86_64__ |
15 | KBUILD_AFLAGS += -m64 | 12 | KBUILD_AFLAGS += -m64 |
16 | LDFLAGS += -m elf_x86_64 | 13 | LDFLAGS += -m elf_x86_64 |
17 | KBUILD_CPPFLAGS += -m64 | 14 | KBUILD_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 | ||
168 | static void init_highmem(void) | 168 | static 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 | |||
6 | source "lib/Kconfig.debug" | 6 | source "lib/Kconfig.debug" |
7 | 7 | ||
8 | config EARLY_PRINTK | 8 | config 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 | ||
92 | config IOMMU_DEBUG | 91 | config 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 | |||
119 | endmenu | 115 | endmenu |
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 | ||
100 | config EARLY_PRINTK | ||
101 | bool | ||
102 | default y | ||
103 | |||
104 | config GENERIC_ISA_DMA | 100 | config 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. |
482 | config IOMMU | 478 | config 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 | ||
688 | config K8_NB | 684 | config 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 | ||
692 | endmenu | 688 | endmenu |
693 | 689 | ||
@@ -753,7 +749,6 @@ config PCI_DOMAINS | |||
753 | config DMAR | 749 | config 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 | |||
170 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 170 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
171 | CONFIG_HPET_TIMER=y | 171 | CONFIG_HPET_TIMER=y |
172 | CONFIG_HPET_EMULATE_RTC=y | 172 | CONFIG_HPET_EMULATE_RTC=y |
173 | CONFIG_IOMMU=y | 173 | CONFIG_GART_IOMMU=y |
174 | # CONFIG_CALGARY_IOMMU is not set | 174 | # CONFIG_CALGARY_IOMMU is not set |
175 | CONFIG_SWIOTLB=y | 175 | CONFIG_SWIOTLB=y |
176 | CONFIG_X86_MCE=y | 176 | CONFIG_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 | |||
25 | obj-$(CONFIG_PM) += suspend_64.o | 25 | obj-$(CONFIG_PM) += suspend_64.o |
26 | obj-$(CONFIG_HIBERNATION) += suspend_asm_64.o | 26 | obj-$(CONFIG_HIBERNATION) += suspend_asm_64.o |
27 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o | 27 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o |
28 | obj-$(CONFIG_IOMMU) += pci-gart_64.o aperture_64.o | 28 | obj-$(CONFIG_GART_IOMMU) += pci-gart_64.o aperture_64.o |
29 | obj-$(CONFIG_CALGARY_IOMMU) += pci-calgary_64.o tce_64.o | 29 | obj-$(CONFIG_CALGARY_IOMMU) += pci-calgary_64.o tce_64.o |
30 | obj-$(CONFIG_SWIOTLB) += pci-swiotlb_64.o | 30 | obj-$(CONFIG_SWIOTLB) += pci-swiotlb_64.o |
31 | obj-$(CONFIG_KPROBES) += kprobes_64.o | 31 | obj-$(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 | ||
28 | int iommu_aperture; | 28 | int gart_iommu_aperture; |
29 | int iommu_aperture_disabled __initdata = 0; | 29 | int gart_iommu_aperture_disabled __initdata = 0; |
30 | int iommu_aperture_allowed __initdata = 0; | 30 | int gart_iommu_aperture_allowed __initdata = 0; |
31 | 31 | ||
32 | int fallback_aper_order __initdata = 1; /* 64MB */ | 32 | int fallback_aper_order __initdata = 1; /* 64MB */ |
33 | int fallback_aper_force __initdata = 0; | 33 | int 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 | ||
207 | void __init iommu_hole_init(void) | 207 | void __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 | ||
24 | static void __init via_bugs(void) | 24 | static 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 | ||
15 | int iommu_merge __read_mostly = 1; | 15 | int 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 | ||
39 | unsigned long iommu_bus_base; /* GART remapping area (physical) */ | 39 | static unsigned long iommu_bus_base; /* GART remapping area (physical) */ |
40 | static unsigned long iommu_size; /* size of remapping area bytes */ | 40 | static unsigned long iommu_size; /* size of remapping area bytes */ |
41 | static unsigned long iommu_pages; /* .. and in pages */ | 41 | static unsigned long iommu_pages; /* .. and in pages */ |
42 | 42 | ||
43 | u32 *iommu_gatt_base; /* Remapping table */ | 43 | static 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 */ |
136 | static void **iommu_leak_tab; | 136 | static void **iommu_leak_tab; |
137 | static int leak_trace; | 137 | static int leak_trace; |
138 | int iommu_leak_pages = 20; | 138 | static int iommu_leak_pages = 20; |
139 | void dump_leak(void) | 139 | static 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 | ||
436 | error: | 436 | error: |
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 */ |
88 | unsigned int machine_id; | 88 | unsigned int machine_id; |
89 | #ifdef CONFIG_MCA | ||
90 | EXPORT_SYMBOL(machine_id); | ||
91 | #endif | ||
92 | unsigned int machine_submodel_id; | 89 | unsigned int machine_submodel_id; |
93 | unsigned int BIOS_revision; | 90 | unsigned int BIOS_revision; |
94 | unsigned int mca_pentium_flag; | 91 | unsigned 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 | ||
41 | struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; | 41 | struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; |
42 | EXPORT_SYMBOL(node_data); | 42 | EXPORT_SYMBOL(node_data); |
43 | bootmem_data_t node0_bdata; | 43 | static 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 |
407 | int paddr_to_nid(u64 addr) | 407 | static 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 | ||
731 | void * __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 | |||
737 | const char *arch_vma_name(struct vm_area_struct *vma) | 731 | const 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 | ||
4 | mainmenu "Linux/Xtensa Kernel Configuration" | 4 | mainmenu "Linux/Xtensa Kernel Configuration" |
5 | 5 | ||