diff options
80 files changed, 967 insertions, 792 deletions
diff --git a/arch/arm/configs/bast_defconfig b/arch/arm/configs/bast_defconfig index 6886001b5366..4a8564f386af 100644 --- a/arch/arm/configs/bast_defconfig +++ b/arch/arm/configs/bast_defconfig | |||
@@ -14,8 +14,7 @@ CONFIG_GENERIC_IOMAP=y | |||
14 | # Code maturity level options | 14 | # Code maturity level options |
15 | # | 15 | # |
16 | CONFIG_EXPERIMENTAL=y | 16 | CONFIG_EXPERIMENTAL=y |
17 | # CONFIG_CLEAN_COMPILE is not set | 17 | CONFIG_CLEAN_COMPILE=y |
18 | CONFIG_BROKEN=y | ||
19 | CONFIG_BROKEN_ON_SMP=y | 18 | CONFIG_BROKEN_ON_SMP=y |
20 | 19 | ||
21 | # | 20 | # |
@@ -360,7 +359,6 @@ CONFIG_BLK_DEV_IDE_BAST=y | |||
360 | # | 359 | # |
361 | # IEEE 1394 (FireWire) support | 360 | # IEEE 1394 (FireWire) support |
362 | # | 361 | # |
363 | # CONFIG_IEEE1394 is not set | ||
364 | 362 | ||
365 | # | 363 | # |
366 | # I2O device support | 364 | # I2O device support |
@@ -781,7 +779,6 @@ CONFIG_SYSFS=y | |||
781 | # CONFIG_DEVFS_FS is not set | 779 | # CONFIG_DEVFS_FS is not set |
782 | # CONFIG_DEVPTS_FS_XATTR is not set | 780 | # CONFIG_DEVPTS_FS_XATTR is not set |
783 | # CONFIG_TMPFS is not set | 781 | # CONFIG_TMPFS is not set |
784 | # CONFIG_HUGETLBFS is not set | ||
785 | # CONFIG_HUGETLB_PAGE is not set | 782 | # CONFIG_HUGETLB_PAGE is not set |
786 | CONFIG_RAMFS=y | 783 | CONFIG_RAMFS=y |
787 | 784 | ||
diff --git a/arch/arm/configs/collie_defconfig b/arch/arm/configs/collie_defconfig index 15468a0cf70e..c9aa878e610a 100644 --- a/arch/arm/configs/collie_defconfig +++ b/arch/arm/configs/collie_defconfig | |||
@@ -13,8 +13,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | # CONFIG_CLEAN_COMPILE is not set | 16 | CONFIG_CLEAN_COMPILE=y |
17 | CONFIG_BROKEN=y | ||
18 | CONFIG_BROKEN_ON_SMP=y | 17 | CONFIG_BROKEN_ON_SMP=y |
19 | CONFIG_LOCK_KERNEL=y | 18 | CONFIG_LOCK_KERNEL=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
@@ -308,9 +307,7 @@ CONFIG_MTD_CFI_I2=y | |||
308 | # CONFIG_MTD_ROM is not set | 307 | # CONFIG_MTD_ROM is not set |
309 | # CONFIG_MTD_ABSENT is not set | 308 | # CONFIG_MTD_ABSENT is not set |
310 | CONFIG_MTD_OBSOLETE_CHIPS=y | 309 | CONFIG_MTD_OBSOLETE_CHIPS=y |
311 | # CONFIG_MTD_AMDSTD is not set | ||
312 | CONFIG_MTD_SHARP=y | 310 | CONFIG_MTD_SHARP=y |
313 | # CONFIG_MTD_JEDEC is not set | ||
314 | 311 | ||
315 | # | 312 | # |
316 | # Mapping drivers for chip access | 313 | # Mapping drivers for chip access |
@@ -396,7 +393,6 @@ CONFIG_ATA_OVER_ETH=m | |||
396 | # | 393 | # |
397 | # IEEE 1394 (FireWire) support | 394 | # IEEE 1394 (FireWire) support |
398 | # | 395 | # |
399 | # CONFIG_IEEE1394 is not set | ||
400 | 396 | ||
401 | # | 397 | # |
402 | # I2O device support | 398 | # I2O device support |
@@ -741,7 +737,6 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
741 | CONFIG_PROC_FS=y | 737 | CONFIG_PROC_FS=y |
742 | CONFIG_SYSFS=y | 738 | CONFIG_SYSFS=y |
743 | CONFIG_TMPFS=y | 739 | CONFIG_TMPFS=y |
744 | # CONFIG_HUGETLBFS is not set | ||
745 | # CONFIG_HUGETLB_PAGE is not set | 740 | # CONFIG_HUGETLB_PAGE is not set |
746 | CONFIG_RAMFS=y | 741 | CONFIG_RAMFS=y |
747 | # CONFIG_RELAYFS_FS is not set | 742 | # CONFIG_RELAYFS_FS is not set |
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig index 33f31080a98c..1964ccd8a71f 100644 --- a/arch/arm/configs/s3c2410_defconfig +++ b/arch/arm/configs/s3c2410_defconfig | |||
@@ -13,8 +13,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | # CONFIG_CLEAN_COMPILE is not set | 16 | CONFIG_CLEAN_COMPILE=y |
17 | CONFIG_BROKEN=y | ||
18 | CONFIG_BROKEN_ON_SMP=y | 17 | CONFIG_BROKEN_ON_SMP=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
20 | 19 | ||
@@ -473,7 +472,6 @@ CONFIG_BLK_DEV_IDE_BAST=y | |||
473 | # | 472 | # |
474 | # IEEE 1394 (FireWire) support | 473 | # IEEE 1394 (FireWire) support |
475 | # | 474 | # |
476 | # CONFIG_IEEE1394 is not set | ||
477 | 475 | ||
478 | # | 476 | # |
479 | # I2O device support | 477 | # I2O device support |
@@ -896,7 +894,6 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
896 | CONFIG_PROC_FS=y | 894 | CONFIG_PROC_FS=y |
897 | CONFIG_SYSFS=y | 895 | CONFIG_SYSFS=y |
898 | # CONFIG_TMPFS is not set | 896 | # CONFIG_TMPFS is not set |
899 | # CONFIG_HUGETLBFS is not set | ||
900 | # CONFIG_HUGETLB_PAGE is not set | 897 | # CONFIG_HUGETLB_PAGE is not set |
901 | CONFIG_RAMFS=y | 898 | CONFIG_RAMFS=y |
902 | # CONFIG_RELAYFS_FS is not set | 899 | # CONFIG_RELAYFS_FS is not set |
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 75e6f9a94713..d058e7c12568 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
@@ -7,337 +7,334 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | * | 9 | * |
10 | * This file is included twice in entry-common.S | 10 | * This file is included thrice in entry-common.S |
11 | */ | 11 | */ |
12 | #ifndef NR_syscalls | 12 | /* 0 */ CALL(sys_restart_syscall) |
13 | #define NR_syscalls 328 | 13 | CALL(sys_exit) |
14 | #else | 14 | CALL(sys_fork_wrapper) |
15 | 15 | CALL(sys_read) | |
16 | 100: | 16 | CALL(sys_write) |
17 | /* 0 */ .long sys_restart_syscall | 17 | /* 5 */ CALL(sys_open) |
18 | .long sys_exit | 18 | CALL(sys_close) |
19 | .long sys_fork_wrapper | 19 | CALL(sys_ni_syscall) /* was sys_waitpid */ |
20 | .long sys_read | 20 | CALL(sys_creat) |
21 | .long sys_write | 21 | CALL(sys_link) |
22 | /* 5 */ .long sys_open | 22 | /* 10 */ CALL(sys_unlink) |
23 | .long sys_close | 23 | CALL(sys_execve_wrapper) |
24 | .long sys_ni_syscall /* was sys_waitpid */ | 24 | CALL(sys_chdir) |
25 | .long sys_creat | 25 | CALL(OBSOLETE(sys_time)) /* used by libc4 */ |
26 | .long sys_link | 26 | CALL(sys_mknod) |
27 | /* 10 */ .long sys_unlink | 27 | /* 15 */ CALL(sys_chmod) |
28 | .long sys_execve_wrapper | 28 | CALL(sys_lchown16) |
29 | .long sys_chdir | 29 | CALL(sys_ni_syscall) /* was sys_break */ |
30 | .long OBSOLETE(sys_time) /* used by libc4 */ | 30 | CALL(sys_ni_syscall) /* was sys_stat */ |
31 | .long sys_mknod | 31 | CALL(sys_lseek) |
32 | /* 15 */ .long sys_chmod | 32 | /* 20 */ CALL(sys_getpid) |
33 | .long sys_lchown16 | 33 | CALL(sys_mount) |
34 | .long sys_ni_syscall /* was sys_break */ | 34 | CALL(OBSOLETE(sys_oldumount)) /* used by libc4 */ |
35 | .long sys_ni_syscall /* was sys_stat */ | 35 | CALL(sys_setuid16) |
36 | .long sys_lseek | 36 | CALL(sys_getuid16) |
37 | /* 20 */ .long sys_getpid | 37 | /* 25 */ CALL(OBSOLETE(sys_stime)) |
38 | .long sys_mount | 38 | CALL(sys_ptrace) |
39 | .long OBSOLETE(sys_oldumount) /* used by libc4 */ | 39 | CALL(OBSOLETE(sys_alarm)) /* used by libc4 */ |
40 | .long sys_setuid16 | 40 | CALL(sys_ni_syscall) /* was sys_fstat */ |
41 | .long sys_getuid16 | 41 | CALL(sys_pause) |
42 | /* 25 */ .long OBSOLETE(sys_stime) | 42 | /* 30 */ CALL(OBSOLETE(sys_utime)) /* used by libc4 */ |
43 | .long sys_ptrace | 43 | CALL(sys_ni_syscall) /* was sys_stty */ |
44 | .long OBSOLETE(sys_alarm) /* used by libc4 */ | 44 | CALL(sys_ni_syscall) /* was sys_getty */ |
45 | .long sys_ni_syscall /* was sys_fstat */ | 45 | CALL(sys_access) |
46 | .long sys_pause | 46 | CALL(sys_nice) |
47 | /* 30 */ .long OBSOLETE(sys_utime) /* used by libc4 */ | 47 | /* 35 */ CALL(sys_ni_syscall) /* was sys_ftime */ |
48 | .long sys_ni_syscall /* was sys_stty */ | 48 | CALL(sys_sync) |
49 | .long sys_ni_syscall /* was sys_getty */ | 49 | CALL(sys_kill) |
50 | .long sys_access | 50 | CALL(sys_rename) |
51 | .long sys_nice | 51 | CALL(sys_mkdir) |
52 | /* 35 */ .long sys_ni_syscall /* was sys_ftime */ | 52 | /* 40 */ CALL(sys_rmdir) |
53 | .long sys_sync | 53 | CALL(sys_dup) |
54 | .long sys_kill | 54 | CALL(sys_pipe) |
55 | .long sys_rename | 55 | CALL(sys_times) |
56 | .long sys_mkdir | 56 | CALL(sys_ni_syscall) /* was sys_prof */ |
57 | /* 40 */ .long sys_rmdir | 57 | /* 45 */ CALL(sys_brk) |
58 | .long sys_dup | 58 | CALL(sys_setgid16) |
59 | .long sys_pipe | 59 | CALL(sys_getgid16) |
60 | .long sys_times | 60 | CALL(sys_ni_syscall) /* was sys_signal */ |
61 | .long sys_ni_syscall /* was sys_prof */ | 61 | CALL(sys_geteuid16) |
62 | /* 45 */ .long sys_brk | 62 | /* 50 */ CALL(sys_getegid16) |
63 | .long sys_setgid16 | 63 | CALL(sys_acct) |
64 | .long sys_getgid16 | 64 | CALL(sys_umount) |
65 | .long sys_ni_syscall /* was sys_signal */ | 65 | CALL(sys_ni_syscall) /* was sys_lock */ |
66 | .long sys_geteuid16 | 66 | CALL(sys_ioctl) |
67 | /* 50 */ .long sys_getegid16 | 67 | /* 55 */ CALL(sys_fcntl) |
68 | .long sys_acct | 68 | CALL(sys_ni_syscall) /* was sys_mpx */ |
69 | .long sys_umount | 69 | CALL(sys_setpgid) |
70 | .long sys_ni_syscall /* was sys_lock */ | 70 | CALL(sys_ni_syscall) /* was sys_ulimit */ |
71 | .long sys_ioctl | 71 | CALL(sys_ni_syscall) /* was sys_olduname */ |
72 | /* 55 */ .long sys_fcntl | 72 | /* 60 */ CALL(sys_umask) |
73 | .long sys_ni_syscall /* was sys_mpx */ | 73 | CALL(sys_chroot) |
74 | .long sys_setpgid | 74 | CALL(sys_ustat) |
75 | .long sys_ni_syscall /* was sys_ulimit */ | 75 | CALL(sys_dup2) |
76 | .long sys_ni_syscall /* was sys_olduname */ | 76 | CALL(sys_getppid) |
77 | /* 60 */ .long sys_umask | 77 | /* 65 */ CALL(sys_getpgrp) |
78 | .long sys_chroot | 78 | CALL(sys_setsid) |
79 | .long sys_ustat | 79 | CALL(sys_sigaction) |
80 | .long sys_dup2 | 80 | CALL(sys_ni_syscall) /* was sys_sgetmask */ |
81 | .long sys_getppid | 81 | CALL(sys_ni_syscall) /* was sys_ssetmask */ |
82 | /* 65 */ .long sys_getpgrp | 82 | /* 70 */ CALL(sys_setreuid16) |
83 | .long sys_setsid | 83 | CALL(sys_setregid16) |
84 | .long sys_sigaction | 84 | CALL(sys_sigsuspend_wrapper) |
85 | .long sys_ni_syscall /* was sys_sgetmask */ | 85 | CALL(sys_sigpending) |
86 | .long sys_ni_syscall /* was sys_ssetmask */ | 86 | CALL(sys_sethostname) |
87 | /* 70 */ .long sys_setreuid16 | 87 | /* 75 */ CALL(sys_setrlimit) |
88 | .long sys_setregid16 | 88 | CALL(OBSOLETE(sys_old_getrlimit)) /* used by libc4 */ |
89 | .long sys_sigsuspend_wrapper | 89 | CALL(sys_getrusage) |
90 | .long sys_sigpending | 90 | CALL(sys_gettimeofday) |
91 | .long sys_sethostname | 91 | CALL(sys_settimeofday) |
92 | /* 75 */ .long sys_setrlimit | 92 | /* 80 */ CALL(sys_getgroups16) |
93 | .long OBSOLETE(sys_old_getrlimit) /* used by libc4 */ | 93 | CALL(sys_setgroups16) |
94 | .long sys_getrusage | 94 | CALL(OBSOLETE(old_select)) /* used by libc4 */ |
95 | .long sys_gettimeofday | 95 | CALL(sys_symlink) |
96 | .long sys_settimeofday | 96 | CALL(sys_ni_syscall) /* was sys_lstat */ |
97 | /* 80 */ .long sys_getgroups16 | 97 | /* 85 */ CALL(sys_readlink) |
98 | .long sys_setgroups16 | 98 | CALL(sys_uselib) |
99 | .long OBSOLETE(old_select) /* used by libc4 */ | 99 | CALL(sys_swapon) |
100 | .long sys_symlink | 100 | CALL(sys_reboot) |
101 | .long sys_ni_syscall /* was sys_lstat */ | 101 | CALL(OBSOLETE(old_readdir)) /* used by libc4 */ |
102 | /* 85 */ .long sys_readlink | 102 | /* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */ |
103 | .long sys_uselib | 103 | CALL(sys_munmap) |
104 | .long sys_swapon | 104 | CALL(sys_truncate) |
105 | .long sys_reboot | 105 | CALL(sys_ftruncate) |
106 | .long OBSOLETE(old_readdir) /* used by libc4 */ | 106 | CALL(sys_fchmod) |
107 | /* 90 */ .long OBSOLETE(old_mmap) /* used by libc4 */ | 107 | /* 95 */ CALL(sys_fchown16) |
108 | .long sys_munmap | 108 | CALL(sys_getpriority) |
109 | .long sys_truncate | 109 | CALL(sys_setpriority) |
110 | .long sys_ftruncate | 110 | CALL(sys_ni_syscall) /* was sys_profil */ |
111 | .long sys_fchmod | 111 | CALL(sys_statfs) |
112 | /* 95 */ .long sys_fchown16 | 112 | /* 100 */ CALL(sys_fstatfs) |
113 | .long sys_getpriority | 113 | CALL(sys_ni_syscall) |
114 | .long sys_setpriority | 114 | CALL(OBSOLETE(sys_socketcall)) |
115 | .long sys_ni_syscall /* was sys_profil */ | 115 | CALL(sys_syslog) |
116 | .long sys_statfs | 116 | CALL(sys_setitimer) |
117 | /* 100 */ .long sys_fstatfs | 117 | /* 105 */ CALL(sys_getitimer) |
118 | .long sys_ni_syscall | 118 | CALL(sys_newstat) |
119 | .long OBSOLETE(sys_socketcall) | 119 | CALL(sys_newlstat) |
120 | .long sys_syslog | 120 | CALL(sys_newfstat) |
121 | .long sys_setitimer | 121 | CALL(sys_ni_syscall) /* was sys_uname */ |
122 | /* 105 */ .long sys_getitimer | 122 | /* 110 */ CALL(sys_ni_syscall) /* was sys_iopl */ |
123 | .long sys_newstat | 123 | CALL(sys_vhangup) |
124 | .long sys_newlstat | 124 | CALL(sys_ni_syscall) |
125 | .long sys_newfstat | 125 | CALL(OBSOLETE(sys_syscall)) /* call a syscall */ |
126 | .long sys_ni_syscall /* was sys_uname */ | 126 | CALL(sys_wait4) |
127 | /* 110 */ .long sys_ni_syscall /* was sys_iopl */ | 127 | /* 115 */ CALL(sys_swapoff) |
128 | .long sys_vhangup | 128 | CALL(sys_sysinfo) |
129 | .long sys_ni_syscall | 129 | CALL(OBSOLETE(ABI(sys_ipc, sys_oabi_ipc))) |
130 | .long OBSOLETE(sys_syscall) /* call a syscall */ | 130 | CALL(sys_fsync) |
131 | .long sys_wait4 | 131 | CALL(sys_sigreturn_wrapper) |
132 | /* 115 */ .long sys_swapoff | 132 | /* 120 */ CALL(sys_clone_wrapper) |
133 | .long sys_sysinfo | 133 | CALL(sys_setdomainname) |
134 | .long OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)) | 134 | CALL(sys_newuname) |
135 | .long sys_fsync | 135 | CALL(sys_ni_syscall) |
136 | .long sys_sigreturn_wrapper | 136 | CALL(sys_adjtimex) |
137 | /* 120 */ .long sys_clone_wrapper | 137 | /* 125 */ CALL(sys_mprotect) |
138 | .long sys_setdomainname | 138 | CALL(sys_sigprocmask) |
139 | .long sys_newuname | 139 | CALL(sys_ni_syscall) /* was sys_create_module */ |
140 | .long sys_ni_syscall | 140 | CALL(sys_init_module) |
141 | .long sys_adjtimex | 141 | CALL(sys_delete_module) |
142 | /* 125 */ .long sys_mprotect | 142 | /* 130 */ CALL(sys_ni_syscall) /* was sys_get_kernel_syms */ |
143 | .long sys_sigprocmask | 143 | CALL(sys_quotactl) |
144 | .long sys_ni_syscall /* was sys_create_module */ | 144 | CALL(sys_getpgid) |
145 | .long sys_init_module | 145 | CALL(sys_fchdir) |
146 | .long sys_delete_module | 146 | CALL(sys_bdflush) |
147 | /* 130 */ .long sys_ni_syscall /* was sys_get_kernel_syms */ | 147 | /* 135 */ CALL(sys_sysfs) |
148 | .long sys_quotactl | 148 | CALL(sys_personality) |
149 | .long sys_getpgid | 149 | CALL(sys_ni_syscall) /* CALL(_sys_afs_syscall) */ |
150 | .long sys_fchdir | 150 | CALL(sys_setfsuid16) |
151 | .long sys_bdflush | 151 | CALL(sys_setfsgid16) |
152 | /* 135 */ .long sys_sysfs | 152 | /* 140 */ CALL(sys_llseek) |
153 | .long sys_personality | 153 | CALL(sys_getdents) |
154 | .long sys_ni_syscall /* .long _sys_afs_syscall */ | 154 | CALL(sys_select) |
155 | .long sys_setfsuid16 | 155 | CALL(sys_flock) |
156 | .long sys_setfsgid16 | 156 | CALL(sys_msync) |
157 | /* 140 */ .long sys_llseek | 157 | /* 145 */ CALL(sys_readv) |
158 | .long sys_getdents | 158 | CALL(sys_writev) |
159 | .long sys_select | 159 | CALL(sys_getsid) |
160 | .long sys_flock | 160 | CALL(sys_fdatasync) |
161 | .long sys_msync | 161 | CALL(sys_sysctl) |
162 | /* 145 */ .long sys_readv | 162 | /* 150 */ CALL(sys_mlock) |
163 | .long sys_writev | 163 | CALL(sys_munlock) |
164 | .long sys_getsid | 164 | CALL(sys_mlockall) |
165 | .long sys_fdatasync | 165 | CALL(sys_munlockall) |
166 | .long sys_sysctl | 166 | CALL(sys_sched_setparam) |
167 | /* 150 */ .long sys_mlock | 167 | /* 155 */ CALL(sys_sched_getparam) |
168 | .long sys_munlock | 168 | CALL(sys_sched_setscheduler) |
169 | .long sys_mlockall | 169 | CALL(sys_sched_getscheduler) |
170 | .long sys_munlockall | 170 | CALL(sys_sched_yield) |
171 | .long sys_sched_setparam | 171 | CALL(sys_sched_get_priority_max) |
172 | /* 155 */ .long sys_sched_getparam | 172 | /* 160 */ CALL(sys_sched_get_priority_min) |
173 | .long sys_sched_setscheduler | 173 | CALL(sys_sched_rr_get_interval) |
174 | .long sys_sched_getscheduler | 174 | CALL(sys_nanosleep) |
175 | .long sys_sched_yield | 175 | CALL(sys_arm_mremap) |
176 | .long sys_sched_get_priority_max | 176 | CALL(sys_setresuid16) |
177 | /* 160 */ .long sys_sched_get_priority_min | 177 | /* 165 */ CALL(sys_getresuid16) |
178 | .long sys_sched_rr_get_interval | 178 | CALL(sys_ni_syscall) |
179 | .long sys_nanosleep | 179 | CALL(sys_ni_syscall) /* was sys_query_module */ |
180 | .long sys_arm_mremap | 180 | CALL(sys_poll) |
181 | .long sys_setresuid16 | 181 | CALL(sys_nfsservctl) |
182 | /* 165 */ .long sys_getresuid16 | 182 | /* 170 */ CALL(sys_setresgid16) |
183 | .long sys_ni_syscall | 183 | CALL(sys_getresgid16) |
184 | .long sys_ni_syscall /* was sys_query_module */ | 184 | CALL(sys_prctl) |
185 | .long sys_poll | 185 | CALL(sys_rt_sigreturn_wrapper) |
186 | .long sys_nfsservctl | 186 | CALL(sys_rt_sigaction) |
187 | /* 170 */ .long sys_setresgid16 | 187 | /* 175 */ CALL(sys_rt_sigprocmask) |
188 | .long sys_getresgid16 | 188 | CALL(sys_rt_sigpending) |
189 | .long sys_prctl | 189 | CALL(sys_rt_sigtimedwait) |
190 | .long sys_rt_sigreturn_wrapper | 190 | CALL(sys_rt_sigqueueinfo) |
191 | .long sys_rt_sigaction | 191 | CALL(sys_rt_sigsuspend_wrapper) |
192 | /* 175 */ .long sys_rt_sigprocmask | 192 | /* 180 */ CALL(ABI(sys_pread64, sys_oabi_pread64)) |
193 | .long sys_rt_sigpending | 193 | CALL(ABI(sys_pwrite64, sys_oabi_pwrite64)) |
194 | .long sys_rt_sigtimedwait | 194 | CALL(sys_chown16) |
195 | .long sys_rt_sigqueueinfo | 195 | CALL(sys_getcwd) |
196 | .long sys_rt_sigsuspend_wrapper | 196 | CALL(sys_capget) |
197 | /* 180 */ .long ABI(sys_pread64, sys_oabi_pread64) | 197 | /* 185 */ CALL(sys_capset) |
198 | .long ABI(sys_pwrite64, sys_oabi_pwrite64) | 198 | CALL(sys_sigaltstack_wrapper) |
199 | .long sys_chown16 | 199 | CALL(sys_sendfile) |
200 | .long sys_getcwd | 200 | CALL(sys_ni_syscall) |
201 | .long sys_capget | 201 | CALL(sys_ni_syscall) |
202 | /* 185 */ .long sys_capset | 202 | /* 190 */ CALL(sys_vfork_wrapper) |
203 | .long sys_sigaltstack_wrapper | 203 | CALL(sys_getrlimit) |
204 | .long sys_sendfile | 204 | CALL(sys_mmap2) |
205 | .long sys_ni_syscall | 205 | CALL(ABI(sys_truncate64, sys_oabi_truncate64)) |
206 | .long sys_ni_syscall | 206 | CALL(ABI(sys_ftruncate64, sys_oabi_ftruncate64)) |
207 | /* 190 */ .long sys_vfork_wrapper | 207 | /* 195 */ CALL(ABI(sys_stat64, sys_oabi_stat64)) |
208 | .long sys_getrlimit | 208 | CALL(ABI(sys_lstat64, sys_oabi_lstat64)) |
209 | .long sys_mmap2 | 209 | CALL(ABI(sys_fstat64, sys_oabi_fstat64)) |
210 | .long ABI(sys_truncate64, sys_oabi_truncate64) | 210 | CALL(sys_lchown) |
211 | .long ABI(sys_ftruncate64, sys_oabi_ftruncate64) | 211 | CALL(sys_getuid) |
212 | /* 195 */ .long ABI(sys_stat64, sys_oabi_stat64) | 212 | /* 200 */ CALL(sys_getgid) |
213 | .long ABI(sys_lstat64, sys_oabi_lstat64) | 213 | CALL(sys_geteuid) |
214 | .long ABI(sys_fstat64, sys_oabi_fstat64) | 214 | CALL(sys_getegid) |
215 | .long sys_lchown | 215 | CALL(sys_setreuid) |
216 | .long sys_getuid | 216 | CALL(sys_setregid) |
217 | /* 200 */ .long sys_getgid | 217 | /* 205 */ CALL(sys_getgroups) |
218 | .long sys_geteuid | 218 | CALL(sys_setgroups) |
219 | .long sys_getegid | 219 | CALL(sys_fchown) |
220 | .long sys_setreuid | 220 | CALL(sys_setresuid) |
221 | .long sys_setregid | 221 | CALL(sys_getresuid) |
222 | /* 205 */ .long sys_getgroups | 222 | /* 210 */ CALL(sys_setresgid) |
223 | .long sys_setgroups | 223 | CALL(sys_getresgid) |
224 | .long sys_fchown | 224 | CALL(sys_chown) |
225 | .long sys_setresuid | 225 | CALL(sys_setuid) |
226 | .long sys_getresuid | 226 | CALL(sys_setgid) |
227 | /* 210 */ .long sys_setresgid | 227 | /* 215 */ CALL(sys_setfsuid) |
228 | .long sys_getresgid | 228 | CALL(sys_setfsgid) |
229 | .long sys_chown | 229 | CALL(sys_getdents64) |
230 | .long sys_setuid | 230 | CALL(sys_pivot_root) |
231 | .long sys_setgid | 231 | CALL(sys_mincore) |
232 | /* 215 */ .long sys_setfsuid | 232 | /* 220 */ CALL(sys_madvise) |
233 | .long sys_setfsgid | 233 | CALL(ABI(sys_fcntl64, sys_oabi_fcntl64)) |
234 | .long sys_getdents64 | 234 | CALL(sys_ni_syscall) /* TUX */ |
235 | .long sys_pivot_root | 235 | CALL(sys_ni_syscall) |
236 | .long sys_mincore | 236 | CALL(sys_gettid) |
237 | /* 220 */ .long sys_madvise | 237 | /* 225 */ CALL(ABI(sys_readahead, sys_oabi_readahead)) |
238 | .long ABI(sys_fcntl64, sys_oabi_fcntl64) | 238 | CALL(sys_setxattr) |
239 | .long sys_ni_syscall /* TUX */ | 239 | CALL(sys_lsetxattr) |
240 | .long sys_ni_syscall | 240 | CALL(sys_fsetxattr) |
241 | .long sys_gettid | 241 | CALL(sys_getxattr) |
242 | /* 225 */ .long ABI(sys_readahead, sys_oabi_readahead) | 242 | /* 230 */ CALL(sys_lgetxattr) |
243 | .long sys_setxattr | 243 | CALL(sys_fgetxattr) |
244 | .long sys_lsetxattr | 244 | CALL(sys_listxattr) |
245 | .long sys_fsetxattr | 245 | CALL(sys_llistxattr) |
246 | .long sys_getxattr | 246 | CALL(sys_flistxattr) |
247 | /* 230 */ .long sys_lgetxattr | 247 | /* 235 */ CALL(sys_removexattr) |
248 | .long sys_fgetxattr | 248 | CALL(sys_lremovexattr) |
249 | .long sys_listxattr | 249 | CALL(sys_fremovexattr) |
250 | .long sys_llistxattr | 250 | CALL(sys_tkill) |
251 | .long sys_flistxattr | 251 | CALL(sys_sendfile64) |
252 | /* 235 */ .long sys_removexattr | 252 | /* 240 */ CALL(sys_futex) |
253 | .long sys_lremovexattr | 253 | CALL(sys_sched_setaffinity) |
254 | .long sys_fremovexattr | 254 | CALL(sys_sched_getaffinity) |
255 | .long sys_tkill | 255 | CALL(sys_io_setup) |
256 | .long sys_sendfile64 | 256 | CALL(sys_io_destroy) |
257 | /* 240 */ .long sys_futex | 257 | /* 245 */ CALL(sys_io_getevents) |
258 | .long sys_sched_setaffinity | 258 | CALL(sys_io_submit) |
259 | .long sys_sched_getaffinity | 259 | CALL(sys_io_cancel) |
260 | .long sys_io_setup | 260 | CALL(sys_exit_group) |
261 | .long sys_io_destroy | 261 | CALL(sys_lookup_dcookie) |
262 | /* 245 */ .long sys_io_getevents | 262 | /* 250 */ CALL(sys_epoll_create) |
263 | .long sys_io_submit | 263 | CALL(ABI(sys_epoll_ctl, sys_oabi_epoll_ctl)) |
264 | .long sys_io_cancel | 264 | CALL(ABI(sys_epoll_wait, sys_oabi_epoll_wait)) |
265 | .long sys_exit_group | 265 | CALL(sys_remap_file_pages) |
266 | .long sys_lookup_dcookie | 266 | CALL(sys_ni_syscall) /* sys_set_thread_area */ |
267 | /* 250 */ .long sys_epoll_create | 267 | /* 255 */ CALL(sys_ni_syscall) /* sys_get_thread_area */ |
268 | .long ABI(sys_epoll_ctl, sys_oabi_epoll_ctl) | 268 | CALL(sys_set_tid_address) |
269 | .long ABI(sys_epoll_wait, sys_oabi_epoll_wait) | 269 | CALL(sys_timer_create) |
270 | .long sys_remap_file_pages | 270 | CALL(sys_timer_settime) |
271 | .long sys_ni_syscall /* sys_set_thread_area */ | 271 | CALL(sys_timer_gettime) |
272 | /* 255 */ .long sys_ni_syscall /* sys_get_thread_area */ | 272 | /* 260 */ CALL(sys_timer_getoverrun) |
273 | .long sys_set_tid_address | 273 | CALL(sys_timer_delete) |
274 | .long sys_timer_create | 274 | CALL(sys_clock_settime) |
275 | .long sys_timer_settime | 275 | CALL(sys_clock_gettime) |
276 | .long sys_timer_gettime | 276 | CALL(sys_clock_getres) |
277 | /* 260 */ .long sys_timer_getoverrun | 277 | /* 265 */ CALL(sys_clock_nanosleep) |
278 | .long sys_timer_delete | 278 | CALL(sys_statfs64_wrapper) |
279 | .long sys_clock_settime | 279 | CALL(sys_fstatfs64_wrapper) |
280 | .long sys_clock_gettime | 280 | CALL(sys_tgkill) |
281 | .long sys_clock_getres | 281 | CALL(sys_utimes) |
282 | /* 265 */ .long sys_clock_nanosleep | 282 | /* 270 */ CALL(sys_arm_fadvise64_64) |
283 | .long sys_statfs64_wrapper | 283 | CALL(sys_pciconfig_iobase) |
284 | .long sys_fstatfs64_wrapper | 284 | CALL(sys_pciconfig_read) |
285 | .long sys_tgkill | 285 | CALL(sys_pciconfig_write) |
286 | .long sys_utimes | 286 | CALL(sys_mq_open) |
287 | /* 270 */ .long sys_arm_fadvise64_64 | 287 | /* 275 */ CALL(sys_mq_unlink) |
288 | .long sys_pciconfig_iobase | 288 | CALL(sys_mq_timedsend) |
289 | .long sys_pciconfig_read | 289 | CALL(sys_mq_timedreceive) |
290 | .long sys_pciconfig_write | 290 | CALL(sys_mq_notify) |
291 | .long sys_mq_open | 291 | CALL(sys_mq_getsetattr) |
292 | /* 275 */ .long sys_mq_unlink | 292 | /* 280 */ CALL(sys_waitid) |
293 | .long sys_mq_timedsend | 293 | CALL(sys_socket) |
294 | .long sys_mq_timedreceive | 294 | CALL(sys_bind) |
295 | .long sys_mq_notify | 295 | CALL(sys_connect) |
296 | .long sys_mq_getsetattr | 296 | CALL(sys_listen) |
297 | /* 280 */ .long sys_waitid | 297 | /* 285 */ CALL(sys_accept) |
298 | .long sys_socket | 298 | CALL(sys_getsockname) |
299 | .long sys_bind | 299 | CALL(sys_getpeername) |
300 | .long sys_connect | 300 | CALL(sys_socketpair) |
301 | .long sys_listen | 301 | CALL(sys_send) |
302 | /* 285 */ .long sys_accept | 302 | /* 290 */ CALL(sys_sendto) |
303 | .long sys_getsockname | 303 | CALL(sys_recv) |
304 | .long sys_getpeername | 304 | CALL(sys_recvfrom) |
305 | .long sys_socketpair | 305 | CALL(sys_shutdown) |
306 | .long sys_send | 306 | CALL(sys_setsockopt) |
307 | /* 290 */ .long sys_sendto | 307 | /* 295 */ CALL(sys_getsockopt) |
308 | .long sys_recv | 308 | CALL(sys_sendmsg) |
309 | .long sys_recvfrom | 309 | CALL(sys_recvmsg) |
310 | .long sys_shutdown | 310 | CALL(ABI(sys_semop, sys_oabi_semop)) |
311 | .long sys_setsockopt | 311 | CALL(sys_semget) |
312 | /* 295 */ .long sys_getsockopt | 312 | /* 300 */ CALL(sys_semctl) |
313 | .long sys_sendmsg | 313 | CALL(sys_msgsnd) |
314 | .long sys_recvmsg | 314 | CALL(sys_msgrcv) |
315 | .long ABI(sys_semop, sys_oabi_semop) | 315 | CALL(sys_msgget) |
316 | .long sys_semget | 316 | CALL(sys_msgctl) |
317 | /* 300 */ .long sys_semctl | 317 | /* 305 */ CALL(sys_shmat) |
318 | .long sys_msgsnd | 318 | CALL(sys_shmdt) |
319 | .long sys_msgrcv | 319 | CALL(sys_shmget) |
320 | .long sys_msgget | 320 | CALL(sys_shmctl) |
321 | .long sys_msgctl | 321 | CALL(sys_add_key) |
322 | /* 305 */ .long sys_shmat | 322 | /* 310 */ CALL(sys_request_key) |
323 | .long sys_shmdt | 323 | CALL(sys_keyctl) |
324 | .long sys_shmget | 324 | CALL(ABI(sys_semtimedop, sys_oabi_semtimedop)) |
325 | .long sys_shmctl | 325 | /* vserver */ CALL(sys_ni_syscall) |
326 | .long sys_add_key | 326 | CALL(sys_ioprio_set) |
327 | /* 310 */ .long sys_request_key | 327 | /* 315 */ CALL(sys_ioprio_get) |
328 | .long sys_keyctl | 328 | CALL(sys_inotify_init) |
329 | .long ABI(sys_semtimedop, sys_oabi_semtimedop) | 329 | CALL(sys_inotify_add_watch) |
330 | /* vserver */ .long sys_ni_syscall | 330 | CALL(sys_inotify_rm_watch) |
331 | .long sys_ioprio_set | 331 | CALL(sys_mbind) |
332 | /* 315 */ .long sys_ioprio_get | 332 | /* 320 */ CALL(sys_get_mempolicy) |
333 | .long sys_inotify_init | 333 | CALL(sys_set_mempolicy) |
334 | .long sys_inotify_add_watch | 334 | #ifndef syscalls_counted |
335 | .long sys_inotify_rm_watch | 335 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls |
336 | .long sys_mbind | 336 | #define syscalls_counted |
337 | /* 320 */ .long sys_get_mempolicy | ||
338 | .long sys_set_mempolicy | ||
339 | |||
340 | .rept NR_syscalls - (. - 100b) / 4 | ||
341 | .long sys_ni_syscall | ||
342 | .endr | ||
343 | #endif | 337 | #endif |
338 | .rept syscalls_padding | ||
339 | CALL(sys_ni_syscall) | ||
340 | .endr | ||
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 2b92ce85f97f..dbcb11a31f78 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -87,7 +87,11 @@ ENTRY(ret_from_fork) | |||
87 | b ret_slow_syscall | 87 | b ret_slow_syscall |
88 | 88 | ||
89 | 89 | ||
90 | .equ NR_syscalls,0 | ||
91 | #define CALL(x) .equ NR_syscalls,NR_syscalls+1 | ||
90 | #include "calls.S" | 92 | #include "calls.S" |
93 | #undef CALL | ||
94 | #define CALL(x) .long x | ||
91 | 95 | ||
92 | /*============================================================================= | 96 | /*============================================================================= |
93 | * SWI handler | 97 | * SWI handler |
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 31820170f306..a0724f2b24ce 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c | |||
@@ -469,7 +469,9 @@ static void cp_clcd_enable(struct clcd_fb *fb) | |||
469 | if (fb->fb.var.bits_per_pixel <= 8) | 469 | if (fb->fb.var.bits_per_pixel <= 8) |
470 | val = CM_CTRL_LCDMUXSEL_VGA_8421BPP; | 470 | val = CM_CTRL_LCDMUXSEL_VGA_8421BPP; |
471 | else if (fb->fb.var.bits_per_pixel <= 16) | 471 | else if (fb->fb.var.bits_per_pixel <= 16) |
472 | val = CM_CTRL_LCDMUXSEL_VGA_16BPP; | 472 | val = CM_CTRL_LCDMUXSEL_VGA_16BPP |
473 | | CM_CTRL_LCDEN0 | CM_CTRL_LCDEN1 | ||
474 | | CM_CTRL_STATIC1 | CM_CTRL_STATIC2; | ||
473 | else | 475 | else |
474 | val = 0; /* no idea for this, don't trust the docs */ | 476 | val = 0; /* no idea for this, don't trust the docs */ |
475 | 477 | ||
diff --git a/arch/arm/mach-s3c2410/cpu.h b/arch/arm/mach-s3c2410/cpu.h index 9cbe5eef492b..fc1067783f6d 100644 --- a/arch/arm/mach-s3c2410/cpu.h +++ b/arch/arm/mach-s3c2410/cpu.h | |||
@@ -17,11 +17,12 @@ | |||
17 | * 14-Jan-2005 BJD Added s3c24xx_init_clocks() call | 17 | * 14-Jan-2005 BJD Added s3c24xx_init_clocks() call |
18 | * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} & IODESC_ENT | 18 | * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} & IODESC_ENT |
19 | * 14-Mar-2005 BJD Updated for __iomem | 19 | * 14-Mar-2005 BJD Updated for __iomem |
20 | * 15-Jan-2006 LCVR Updated S3C2410_PA_##x to new S3C24XX_PA_##x macro | ||
20 | */ | 21 | */ |
21 | 22 | ||
22 | /* todo - fix when rmk changes iodescs to use `void __iomem *` */ | 23 | /* todo - fix when rmk changes iodescs to use `void __iomem *` */ |
23 | 24 | ||
24 | #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C2410_PA_##x), S3C24XX_SZ_##x, MT_DEVICE } | 25 | #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE } |
25 | 26 | ||
26 | #ifndef MHZ | 27 | #ifndef MHZ |
27 | #define MHZ (1000*1000) | 28 | #define MHZ (1000*1000) |
diff --git a/arch/arm/mach-s3c2410/devs.c b/arch/arm/mach-s3c2410/devs.c index f58406e6ef5a..b8d994a24d1c 100644 --- a/arch/arm/mach-s3c2410/devs.c +++ b/arch/arm/mach-s3c2410/devs.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | * | 11 | * |
12 | * Modifications: | 12 | * Modifications: |
13 | * 15-Jan-2006 LCVR Using S3C24XX_PA_##x macro for common S3C24XX devices | ||
13 | * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} | 14 | * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} |
14 | * 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv | 15 | * 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv |
15 | * 29-Aug-2004 BJD Added timers 0 through 3 | 16 | * 29-Aug-2004 BJD Added timers 0 through 3 |
@@ -46,8 +47,8 @@ struct platform_device *s3c24xx_uart_devs[3]; | |||
46 | 47 | ||
47 | static struct resource s3c_usb_resource[] = { | 48 | static struct resource s3c_usb_resource[] = { |
48 | [0] = { | 49 | [0] = { |
49 | .start = S3C2410_PA_USBHOST, | 50 | .start = S3C24XX_PA_USBHOST, |
50 | .end = S3C2410_PA_USBHOST + S3C24XX_SZ_USBHOST - 1, | 51 | .end = S3C24XX_PA_USBHOST + S3C24XX_SZ_USBHOST - 1, |
51 | .flags = IORESOURCE_MEM, | 52 | .flags = IORESOURCE_MEM, |
52 | }, | 53 | }, |
53 | [1] = { | 54 | [1] = { |
@@ -76,8 +77,8 @@ EXPORT_SYMBOL(s3c_device_usb); | |||
76 | 77 | ||
77 | static struct resource s3c_lcd_resource[] = { | 78 | static struct resource s3c_lcd_resource[] = { |
78 | [0] = { | 79 | [0] = { |
79 | .start = S3C2410_PA_LCD, | 80 | .start = S3C24XX_PA_LCD, |
80 | .end = S3C2410_PA_LCD + S3C24XX_SZ_LCD - 1, | 81 | .end = S3C24XX_PA_LCD + S3C24XX_SZ_LCD - 1, |
81 | .flags = IORESOURCE_MEM, | 82 | .flags = IORESOURCE_MEM, |
82 | }, | 83 | }, |
83 | [1] = { | 84 | [1] = { |
@@ -139,8 +140,8 @@ EXPORT_SYMBOL(s3c_device_nand); | |||
139 | 140 | ||
140 | static struct resource s3c_usbgadget_resource[] = { | 141 | static struct resource s3c_usbgadget_resource[] = { |
141 | [0] = { | 142 | [0] = { |
142 | .start = S3C2410_PA_USBDEV, | 143 | .start = S3C24XX_PA_USBDEV, |
143 | .end = S3C2410_PA_USBDEV + S3C24XX_SZ_USBDEV - 1, | 144 | .end = S3C24XX_PA_USBDEV + S3C24XX_SZ_USBDEV - 1, |
144 | .flags = IORESOURCE_MEM, | 145 | .flags = IORESOURCE_MEM, |
145 | }, | 146 | }, |
146 | [1] = { | 147 | [1] = { |
@@ -164,8 +165,8 @@ EXPORT_SYMBOL(s3c_device_usbgadget); | |||
164 | 165 | ||
165 | static struct resource s3c_wdt_resource[] = { | 166 | static struct resource s3c_wdt_resource[] = { |
166 | [0] = { | 167 | [0] = { |
167 | .start = S3C2410_PA_WATCHDOG, | 168 | .start = S3C24XX_PA_WATCHDOG, |
168 | .end = S3C2410_PA_WATCHDOG + S3C24XX_SZ_WATCHDOG - 1, | 169 | .end = S3C24XX_PA_WATCHDOG + S3C24XX_SZ_WATCHDOG - 1, |
169 | .flags = IORESOURCE_MEM, | 170 | .flags = IORESOURCE_MEM, |
170 | }, | 171 | }, |
171 | [1] = { | 172 | [1] = { |
@@ -189,8 +190,8 @@ EXPORT_SYMBOL(s3c_device_wdt); | |||
189 | 190 | ||
190 | static struct resource s3c_i2c_resource[] = { | 191 | static struct resource s3c_i2c_resource[] = { |
191 | [0] = { | 192 | [0] = { |
192 | .start = S3C2410_PA_IIC, | 193 | .start = S3C24XX_PA_IIC, |
193 | .end = S3C2410_PA_IIC + S3C24XX_SZ_IIC - 1, | 194 | .end = S3C24XX_PA_IIC + S3C24XX_SZ_IIC - 1, |
194 | .flags = IORESOURCE_MEM, | 195 | .flags = IORESOURCE_MEM, |
195 | }, | 196 | }, |
196 | [1] = { | 197 | [1] = { |
@@ -214,8 +215,8 @@ EXPORT_SYMBOL(s3c_device_i2c); | |||
214 | 215 | ||
215 | static struct resource s3c_iis_resource[] = { | 216 | static struct resource s3c_iis_resource[] = { |
216 | [0] = { | 217 | [0] = { |
217 | .start = S3C2410_PA_IIS, | 218 | .start = S3C24XX_PA_IIS, |
218 | .end = S3C2410_PA_IIS + S3C24XX_SZ_IIS -1, | 219 | .end = S3C24XX_PA_IIS + S3C24XX_SZ_IIS -1, |
219 | .flags = IORESOURCE_MEM, | 220 | .flags = IORESOURCE_MEM, |
220 | } | 221 | } |
221 | }; | 222 | }; |
@@ -239,8 +240,8 @@ EXPORT_SYMBOL(s3c_device_iis); | |||
239 | 240 | ||
240 | static struct resource s3c_rtc_resource[] = { | 241 | static struct resource s3c_rtc_resource[] = { |
241 | [0] = { | 242 | [0] = { |
242 | .start = S3C2410_PA_RTC, | 243 | .start = S3C24XX_PA_RTC, |
243 | .end = S3C2410_PA_RTC + 0xff, | 244 | .end = S3C24XX_PA_RTC + 0xff, |
244 | .flags = IORESOURCE_MEM, | 245 | .flags = IORESOURCE_MEM, |
245 | }, | 246 | }, |
246 | [1] = { | 247 | [1] = { |
@@ -268,8 +269,8 @@ EXPORT_SYMBOL(s3c_device_rtc); | |||
268 | 269 | ||
269 | static struct resource s3c_adc_resource[] = { | 270 | static struct resource s3c_adc_resource[] = { |
270 | [0] = { | 271 | [0] = { |
271 | .start = S3C2410_PA_ADC, | 272 | .start = S3C24XX_PA_ADC, |
272 | .end = S3C2410_PA_ADC + S3C24XX_SZ_ADC - 1, | 273 | .end = S3C24XX_PA_ADC + S3C24XX_SZ_ADC - 1, |
273 | .flags = IORESOURCE_MEM, | 274 | .flags = IORESOURCE_MEM, |
274 | }, | 275 | }, |
275 | [1] = { | 276 | [1] = { |
@@ -316,8 +317,8 @@ EXPORT_SYMBOL(s3c_device_sdi); | |||
316 | 317 | ||
317 | static struct resource s3c_spi0_resource[] = { | 318 | static struct resource s3c_spi0_resource[] = { |
318 | [0] = { | 319 | [0] = { |
319 | .start = S3C2410_PA_SPI, | 320 | .start = S3C24XX_PA_SPI, |
320 | .end = S3C2410_PA_SPI + 0x1f, | 321 | .end = S3C24XX_PA_SPI + 0x1f, |
321 | .flags = IORESOURCE_MEM, | 322 | .flags = IORESOURCE_MEM, |
322 | }, | 323 | }, |
323 | [1] = { | 324 | [1] = { |
@@ -341,8 +342,8 @@ EXPORT_SYMBOL(s3c_device_spi0); | |||
341 | 342 | ||
342 | static struct resource s3c_spi1_resource[] = { | 343 | static struct resource s3c_spi1_resource[] = { |
343 | [0] = { | 344 | [0] = { |
344 | .start = S3C2410_PA_SPI + 0x20, | 345 | .start = S3C24XX_PA_SPI + 0x20, |
345 | .end = S3C2410_PA_SPI + 0x20 + 0x1f, | 346 | .end = S3C24XX_PA_SPI + 0x20 + 0x1f, |
346 | .flags = IORESOURCE_MEM, | 347 | .flags = IORESOURCE_MEM, |
347 | }, | 348 | }, |
348 | [1] = { | 349 | [1] = { |
@@ -366,8 +367,8 @@ EXPORT_SYMBOL(s3c_device_spi1); | |||
366 | 367 | ||
367 | static struct resource s3c_timer0_resource[] = { | 368 | static struct resource s3c_timer0_resource[] = { |
368 | [0] = { | 369 | [0] = { |
369 | .start = S3C2410_PA_TIMER + 0x0C, | 370 | .start = S3C24XX_PA_TIMER + 0x0C, |
370 | .end = S3C2410_PA_TIMER + 0x0C + 0xB, | 371 | .end = S3C24XX_PA_TIMER + 0x0C + 0xB, |
371 | .flags = IORESOURCE_MEM, | 372 | .flags = IORESOURCE_MEM, |
372 | }, | 373 | }, |
373 | [1] = { | 374 | [1] = { |
@@ -391,8 +392,8 @@ EXPORT_SYMBOL(s3c_device_timer0); | |||
391 | 392 | ||
392 | static struct resource s3c_timer1_resource[] = { | 393 | static struct resource s3c_timer1_resource[] = { |
393 | [0] = { | 394 | [0] = { |
394 | .start = S3C2410_PA_TIMER + 0x18, | 395 | .start = S3C24XX_PA_TIMER + 0x18, |
395 | .end = S3C2410_PA_TIMER + 0x23, | 396 | .end = S3C24XX_PA_TIMER + 0x23, |
396 | .flags = IORESOURCE_MEM, | 397 | .flags = IORESOURCE_MEM, |
397 | }, | 398 | }, |
398 | [1] = { | 399 | [1] = { |
@@ -416,8 +417,8 @@ EXPORT_SYMBOL(s3c_device_timer1); | |||
416 | 417 | ||
417 | static struct resource s3c_timer2_resource[] = { | 418 | static struct resource s3c_timer2_resource[] = { |
418 | [0] = { | 419 | [0] = { |
419 | .start = S3C2410_PA_TIMER + 0x24, | 420 | .start = S3C24XX_PA_TIMER + 0x24, |
420 | .end = S3C2410_PA_TIMER + 0x2F, | 421 | .end = S3C24XX_PA_TIMER + 0x2F, |
421 | .flags = IORESOURCE_MEM, | 422 | .flags = IORESOURCE_MEM, |
422 | }, | 423 | }, |
423 | [1] = { | 424 | [1] = { |
@@ -441,8 +442,8 @@ EXPORT_SYMBOL(s3c_device_timer2); | |||
441 | 442 | ||
442 | static struct resource s3c_timer3_resource[] = { | 443 | static struct resource s3c_timer3_resource[] = { |
443 | [0] = { | 444 | [0] = { |
444 | .start = S3C2410_PA_TIMER + 0x30, | 445 | .start = S3C24XX_PA_TIMER + 0x30, |
445 | .end = S3C2410_PA_TIMER + 0x3B, | 446 | .end = S3C24XX_PA_TIMER + 0x3B, |
446 | .flags = IORESOURCE_MEM, | 447 | .flags = IORESOURCE_MEM, |
447 | }, | 448 | }, |
448 | [1] = { | 449 | [1] = { |
diff --git a/arch/arm/mach-s3c2410/dma.c b/arch/arm/mach-s3c2410/dma.c index 65feaf20d23e..4dbd8e758ea6 100644 --- a/arch/arm/mach-s3c2410/dma.c +++ b/arch/arm/mach-s3c2410/dma.c | |||
@@ -1152,7 +1152,7 @@ static int __init s3c2410_init_dma(void) | |||
1152 | 1152 | ||
1153 | printk("S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics\n"); | 1153 | printk("S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics\n"); |
1154 | 1154 | ||
1155 | dma_base = ioremap(S3C2410_PA_DMA, 0x200); | 1155 | dma_base = ioremap(S3C24XX_PA_DMA, 0x200); |
1156 | if (dma_base == NULL) { | 1156 | if (dma_base == NULL) { |
1157 | printk(KERN_ERR "dma failed to remap register block\n"); | 1157 | printk(KERN_ERR "dma failed to remap register block\n"); |
1158 | return -ENOMEM; | 1158 | return -ENOMEM; |
diff --git a/arch/arm/mach-s3c2410/sleep.S b/arch/arm/mach-s3c2410/sleep.S index 61768dac7fee..e9a055b779b7 100644 --- a/arch/arm/mach-s3c2410/sleep.S +++ b/arch/arm/mach-s3c2410/sleep.S | |||
@@ -133,12 +133,12 @@ ENTRY(s3c2410_cpu_resume) | |||
133 | @@ load UART to allow us to print the two characters for | 133 | @@ load UART to allow us to print the two characters for |
134 | @@ resume debug | 134 | @@ resume debug |
135 | 135 | ||
136 | mov r2, #S3C2410_PA_UART & 0xff000000 | 136 | mov r2, #S3C24XX_PA_UART & 0xff000000 |
137 | orr r2, r2, #S3C2410_PA_UART & 0xff000 | 137 | orr r2, r2, #S3C24XX_PA_UART & 0xff000 |
138 | 138 | ||
139 | #if 0 | 139 | #if 0 |
140 | /* SMDK2440 LED set */ | 140 | /* SMDK2440 LED set */ |
141 | mov r14, #S3C2410_PA_GPIO | 141 | mov r14, #S3C24XX_PA_GPIO |
142 | ldr r12, [ r14, #0x54 ] | 142 | ldr r12, [ r14, #0x54 ] |
143 | bic r12, r12, #3<<4 | 143 | bic r12, r12, #3<<4 |
144 | orr r12, r12, #1<<7 | 144 | orr r12, r12, #1<<7 |
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index de3ce1eec2ec..da9b35974118 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -142,7 +142,7 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size, | |||
142 | return NULL; | 142 | return NULL; |
143 | addr = (unsigned long)area->addr; | 143 | addr = (unsigned long)area->addr; |
144 | if (remap_area_pages(addr, pfn, size, flags)) { | 144 | if (remap_area_pages(addr, pfn, size, flags)) { |
145 | vfree(addr); | 145 | vfree((void *)addr); |
146 | return NULL; | 146 | return NULL; |
147 | } | 147 | } |
148 | return (void __iomem *) (offset + (char *)addr); | 148 | return (void __iomem *) (offset + (char *)addr); |
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c index d0245a31d4dd..ef8d30a185a9 100644 --- a/arch/arm/mm/mm-armv.c +++ b/arch/arm/mm/mm-armv.c | |||
@@ -343,6 +343,12 @@ static struct mem_types mem_types[] __initdata = { | |||
343 | PMD_SECT_AP_WRITE | PMD_SECT_BUFFERABLE | | 343 | PMD_SECT_AP_WRITE | PMD_SECT_BUFFERABLE | |
344 | PMD_SECT_TEX(1), | 344 | PMD_SECT_TEX(1), |
345 | .domain = DOMAIN_IO, | 345 | .domain = DOMAIN_IO, |
346 | }, | ||
347 | [MT_NONSHARED_DEVICE] = { | ||
348 | .prot_l1 = PMD_TYPE_TABLE, | ||
349 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_NONSHARED_DEV | | ||
350 | PMD_SECT_AP_WRITE, | ||
351 | .domain = DOMAIN_IO, | ||
346 | } | 352 | } |
347 | }; | 353 | }; |
348 | 354 | ||
diff --git a/arch/powerpc/platforms/powermac/feature.c b/arch/powerpc/platforms/powermac/feature.c index 558dd0692092..2296f3d46ca8 100644 --- a/arch/powerpc/platforms/powermac/feature.c +++ b/arch/powerpc/platforms/powermac/feature.c | |||
@@ -910,16 +910,18 @@ core99_gmac_phy_reset(struct device_node *node, long param, long value) | |||
910 | macio->type != macio_intrepid) | 910 | macio->type != macio_intrepid) |
911 | return -ENODEV; | 911 | return -ENODEV; |
912 | 912 | ||
913 | printk(KERN_DEBUG "Hard reset of PHY chip ...\n"); | ||
914 | |||
913 | LOCK(flags); | 915 | LOCK(flags); |
914 | MACIO_OUT8(KL_GPIO_ETH_PHY_RESET, KEYLARGO_GPIO_OUTPUT_ENABLE); | 916 | MACIO_OUT8(KL_GPIO_ETH_PHY_RESET, KEYLARGO_GPIO_OUTPUT_ENABLE); |
915 | (void)MACIO_IN8(KL_GPIO_ETH_PHY_RESET); | 917 | (void)MACIO_IN8(KL_GPIO_ETH_PHY_RESET); |
916 | UNLOCK(flags); | 918 | UNLOCK(flags); |
917 | mdelay(10); | 919 | msleep(10); |
918 | LOCK(flags); | 920 | LOCK(flags); |
919 | MACIO_OUT8(KL_GPIO_ETH_PHY_RESET, /*KEYLARGO_GPIO_OUTPUT_ENABLE | */ | 921 | MACIO_OUT8(KL_GPIO_ETH_PHY_RESET, /*KEYLARGO_GPIO_OUTPUT_ENABLE | */ |
920 | KEYLARGO_GPIO_OUTOUT_DATA); | 922 | KEYLARGO_GPIO_OUTOUT_DATA); |
921 | UNLOCK(flags); | 923 | UNLOCK(flags); |
922 | mdelay(10); | 924 | msleep(10); |
923 | 925 | ||
924 | return 0; | 926 | return 0; |
925 | } | 927 | } |
diff --git a/arch/ppc/syslib/mv64x60.c b/arch/ppc/syslib/mv64x60.c index 94ea346b7b4b..1f01b7e2376b 100644 --- a/arch/ppc/syslib/mv64x60.c +++ b/arch/ppc/syslib/mv64x60.c | |||
@@ -313,7 +313,7 @@ static struct platform_device mpsc1_device = { | |||
313 | }; | 313 | }; |
314 | #endif | 314 | #endif |
315 | 315 | ||
316 | #ifdef CONFIG_MV643XX_ETH | 316 | #if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) |
317 | static struct resource mv64x60_eth_shared_resources[] = { | 317 | static struct resource mv64x60_eth_shared_resources[] = { |
318 | [0] = { | 318 | [0] = { |
319 | .name = "ethernet shared base", | 319 | .name = "ethernet shared base", |
@@ -456,7 +456,7 @@ static struct platform_device *mv64x60_pd_devs[] __initdata = { | |||
456 | &mpsc0_device, | 456 | &mpsc0_device, |
457 | &mpsc1_device, | 457 | &mpsc1_device, |
458 | #endif | 458 | #endif |
459 | #ifdef CONFIG_MV643XX_ETH | 459 | #if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) |
460 | &mv64x60_eth_shared_device, | 460 | &mv64x60_eth_shared_device, |
461 | #endif | 461 | #endif |
462 | #ifdef CONFIG_MV643XX_ETH_0 | 462 | #ifdef CONFIG_MV643XX_ETH_0 |
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S index c51d08d218ef..267ec8f6fb58 100644 --- a/arch/sparc/kernel/entry.S +++ b/arch/sparc/kernel/entry.S | |||
@@ -38,7 +38,7 @@ | |||
38 | 38 | ||
39 | #define curptr g6 | 39 | #define curptr g6 |
40 | 40 | ||
41 | #define NR_SYSCALLS 284 /* Each OS is different... */ | 41 | #define NR_SYSCALLS 299 /* Each OS is different... */ |
42 | 42 | ||
43 | /* These are just handy. */ | 43 | /* These are just handy. */ |
44 | #define _SV save %sp, -STACKFRAME_SZ, %sp | 44 | #define _SV save %sp, -STACKFRAME_SZ, %sp |
diff --git a/arch/sparc/math-emu/math.c b/arch/sparc/math-emu/math.c index be2c80932e26..8613b3eb877c 100644 --- a/arch/sparc/math-emu/math.c +++ b/arch/sparc/math-emu/math.c | |||
@@ -323,11 +323,6 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs) | |||
323 | case FMOVS: | 323 | case FMOVS: |
324 | case FABSS: | 324 | case FABSS: |
325 | case FNEGS: TYPE(2,1,0,1,0,0,0); break; | 325 | case FNEGS: TYPE(2,1,0,1,0,0,0); break; |
326 | default: | ||
327 | #ifdef DEBUG_MATHEMU | ||
328 | printk("unknown FPop1: %03lx\n",(insn>>5)&0x1ff); | ||
329 | #endif | ||
330 | break; | ||
331 | } | 326 | } |
332 | } else if ((insn & 0xc1f80000) == 0x81a80000) /* FPOP2 */ { | 327 | } else if ((insn & 0xc1f80000) == 0x81a80000) /* FPOP2 */ { |
333 | switch ((insn >> 5) & 0x1ff) { | 328 | switch ((insn >> 5) & 0x1ff) { |
@@ -337,11 +332,6 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs) | |||
337 | case FCMPED: TYPE(3,0,0,2,1,2,1); break; | 332 | case FCMPED: TYPE(3,0,0,2,1,2,1); break; |
338 | case FCMPQ: TYPE(3,0,0,3,1,3,1); break; | 333 | case FCMPQ: TYPE(3,0,0,3,1,3,1); break; |
339 | case FCMPEQ: TYPE(3,0,0,3,1,3,1); break; | 334 | case FCMPEQ: TYPE(3,0,0,3,1,3,1); break; |
340 | default: | ||
341 | #ifdef DEBUG_MATHEMU | ||
342 | printk("unknown FPop2: %03lx\n",(insn>>5)&0x1ff); | ||
343 | #endif | ||
344 | break; | ||
345 | } | 335 | } |
346 | } | 336 | } |
347 | 337 | ||
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S index e50e56e4ab61..12911e7463f2 100644 --- a/arch/sparc64/kernel/entry.S +++ b/arch/sparc64/kernel/entry.S | |||
@@ -25,7 +25,7 @@ | |||
25 | 25 | ||
26 | #define curptr g6 | 26 | #define curptr g6 |
27 | 27 | ||
28 | #define NR_SYSCALLS 284 /* Each OS is different... */ | 28 | #define NR_SYSCALLS 299 /* Each OS is different... */ |
29 | 29 | ||
30 | .text | 30 | .text |
31 | .align 32 | 31 | .align 32 |
diff --git a/arch/sparc64/kernel/sys32.S b/arch/sparc64/kernel/sys32.S index 9cd272ac3ac1..60b59375aa78 100644 --- a/arch/sparc64/kernel/sys32.S +++ b/arch/sparc64/kernel/sys32.S | |||
@@ -84,7 +84,6 @@ SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5) | |||
84 | SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1) | 84 | SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1) |
85 | SIGN1(sys32_mlockall, sys_mlockall, %o0) | 85 | SIGN1(sys32_mlockall, sys_mlockall, %o0) |
86 | SIGN1(sys32_nfsservctl, compat_sys_nfsservctl, %o0) | 86 | SIGN1(sys32_nfsservctl, compat_sys_nfsservctl, %o0) |
87 | SIGN1(sys32_clock_settime, compat_sys_clock_settime, %o1) | ||
88 | SIGN1(sys32_clock_nanosleep, compat_sys_clock_nanosleep, %o1) | 87 | SIGN1(sys32_clock_nanosleep, compat_sys_clock_nanosleep, %o1) |
89 | SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1) | 88 | SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1) |
90 | SIGN1(sys32_io_submit, compat_sys_io_submit, %o1) | 89 | SIGN1(sys32_io_submit, compat_sys_io_submit, %o1) |
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index bf0fc5bfbfbe..2881faf36635 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -71,7 +71,7 @@ sys_call_table32: | |||
71 | /*240*/ .word sys_munlockall, sys32_sched_setparam, sys32_sched_getparam, sys32_sched_setscheduler, sys32_sched_getscheduler | 71 | /*240*/ .word sys_munlockall, sys32_sched_setparam, sys32_sched_getparam, sys32_sched_setscheduler, sys32_sched_getscheduler |
72 | .word sys_sched_yield, sys32_sched_get_priority_max, sys32_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep | 72 | .word sys_sched_yield, sys32_sched_get_priority_max, sys32_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep |
73 | /*250*/ .word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl | 73 | /*250*/ .word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl |
74 | .word sys_ni_syscall, sys32_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep | 74 | .word sys_ni_syscall, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep |
75 | /*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun | 75 | /*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun |
76 | .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy | 76 | .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy |
77 | /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink | 77 | /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink |
diff --git a/block/elevator.c b/block/elevator.c index c9f424d5399c..96a61e029ce5 100644 --- a/block/elevator.c +++ b/block/elevator.c | |||
@@ -139,35 +139,16 @@ static int elevator_attach(request_queue_t *q, struct elevator_type *e, | |||
139 | 139 | ||
140 | static char chosen_elevator[16]; | 140 | static char chosen_elevator[16]; |
141 | 141 | ||
142 | static void elevator_setup_default(void) | 142 | static int __init elevator_setup(char *str) |
143 | { | 143 | { |
144 | struct elevator_type *e; | ||
145 | |||
146 | /* | ||
147 | * If default has not been set, use the compiled-in selection. | ||
148 | */ | ||
149 | if (!chosen_elevator[0]) | ||
150 | strcpy(chosen_elevator, CONFIG_DEFAULT_IOSCHED); | ||
151 | |||
152 | /* | 144 | /* |
153 | * Be backwards-compatible with previous kernels, so users | 145 | * Be backwards-compatible with previous kernels, so users |
154 | * won't get the wrong elevator. | 146 | * won't get the wrong elevator. |
155 | */ | 147 | */ |
156 | if (!strcmp(chosen_elevator, "as")) | 148 | if (!strcmp(str, "as")) |
157 | strcpy(chosen_elevator, "anticipatory"); | 149 | strcpy(chosen_elevator, "anticipatory"); |
158 | |||
159 | /* | ||
160 | * If the given scheduler is not available, fall back to the default | ||
161 | */ | ||
162 | if ((e = elevator_find(chosen_elevator))) | ||
163 | elevator_put(e); | ||
164 | else | 150 | else |
165 | strcpy(chosen_elevator, CONFIG_DEFAULT_IOSCHED); | 151 | strncpy(chosen_elevator, str, sizeof(chosen_elevator) - 1); |
166 | } | ||
167 | |||
168 | static int __init elevator_setup(char *str) | ||
169 | { | ||
170 | strncpy(chosen_elevator, str, sizeof(chosen_elevator) - 1); | ||
171 | return 0; | 152 | return 0; |
172 | } | 153 | } |
173 | 154 | ||
@@ -184,14 +165,16 @@ int elevator_init(request_queue_t *q, char *name) | |||
184 | q->end_sector = 0; | 165 | q->end_sector = 0; |
185 | q->boundary_rq = NULL; | 166 | q->boundary_rq = NULL; |
186 | 167 | ||
187 | elevator_setup_default(); | 168 | if (name && !(e = elevator_get(name))) |
169 | return -EINVAL; | ||
188 | 170 | ||
189 | if (!name) | 171 | if (!e && *chosen_elevator && !(e = elevator_get(chosen_elevator))) |
190 | name = chosen_elevator; | 172 | printk("I/O scheduler %s not found\n", chosen_elevator); |
191 | 173 | ||
192 | e = elevator_get(name); | 174 | if (!e && !(e = elevator_get(CONFIG_DEFAULT_IOSCHED))) { |
193 | if (!e) | 175 | printk("Default I/O scheduler not found, using no-op\n"); |
194 | return -EINVAL; | 176 | e = elevator_get("noop"); |
177 | } | ||
195 | 178 | ||
196 | eq = kmalloc(sizeof(struct elevator_queue), GFP_KERNEL); | 179 | eq = kmalloc(sizeof(struct elevator_queue), GFP_KERNEL); |
197 | if (!eq) { | 180 | if (!eq) { |
@@ -669,8 +652,10 @@ int elv_register(struct elevator_type *e) | |||
669 | spin_unlock_irq(&elv_list_lock); | 652 | spin_unlock_irq(&elv_list_lock); |
670 | 653 | ||
671 | printk(KERN_INFO "io scheduler %s registered", e->elevator_name); | 654 | printk(KERN_INFO "io scheduler %s registered", e->elevator_name); |
672 | if (!strcmp(e->elevator_name, chosen_elevator)) | 655 | if (!strcmp(e->elevator_name, chosen_elevator) || |
673 | printk(" (default)"); | 656 | (!*chosen_elevator && |
657 | !strcmp(e->elevator_name, CONFIG_DEFAULT_IOSCHED))) | ||
658 | printk(" (default)"); | ||
674 | printk("\n"); | 659 | printk("\n"); |
675 | return 0; | 660 | return 0; |
676 | } | 661 | } |
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c index 8e27d0ab0d7c..d38b4afa37ef 100644 --- a/block/ll_rw_blk.c +++ b/block/ll_rw_blk.c | |||
@@ -304,6 +304,7 @@ static inline void rq_init(request_queue_t *q, struct request *rq) | |||
304 | * blk_queue_ordered - does this queue support ordered writes | 304 | * blk_queue_ordered - does this queue support ordered writes |
305 | * @q: the request queue | 305 | * @q: the request queue |
306 | * @ordered: one of QUEUE_ORDERED_* | 306 | * @ordered: one of QUEUE_ORDERED_* |
307 | * @prepare_flush_fn: rq setup helper for cache flush ordered writes | ||
307 | * | 308 | * |
308 | * Description: | 309 | * Description: |
309 | * For journalled file systems, doing ordered writes on a commit | 310 | * For journalled file systems, doing ordered writes on a commit |
@@ -332,6 +333,7 @@ int blk_queue_ordered(request_queue_t *q, unsigned ordered, | |||
332 | return -EINVAL; | 333 | return -EINVAL; |
333 | } | 334 | } |
334 | 335 | ||
336 | q->ordered = ordered; | ||
335 | q->next_ordered = ordered; | 337 | q->next_ordered = ordered; |
336 | q->prepare_flush_fn = prepare_flush_fn; | 338 | q->prepare_flush_fn = prepare_flush_fn; |
337 | 339 | ||
@@ -662,7 +664,7 @@ EXPORT_SYMBOL(blk_queue_bounce_limit); | |||
662 | * Enables a low level driver to set an upper limit on the size of | 664 | * Enables a low level driver to set an upper limit on the size of |
663 | * received requests. | 665 | * received requests. |
664 | **/ | 666 | **/ |
665 | void blk_queue_max_sectors(request_queue_t *q, unsigned short max_sectors) | 667 | void blk_queue_max_sectors(request_queue_t *q, unsigned int max_sectors) |
666 | { | 668 | { |
667 | if ((max_sectors << 9) < PAGE_CACHE_SIZE) { | 669 | if ((max_sectors << 9) < PAGE_CACHE_SIZE) { |
668 | max_sectors = 1 << (PAGE_CACHE_SHIFT - 9); | 670 | max_sectors = 1 << (PAGE_CACHE_SHIFT - 9); |
@@ -2632,6 +2634,7 @@ EXPORT_SYMBOL(blk_put_request); | |||
2632 | /** | 2634 | /** |
2633 | * blk_end_sync_rq - executes a completion event on a request | 2635 | * blk_end_sync_rq - executes a completion event on a request |
2634 | * @rq: request to complete | 2636 | * @rq: request to complete |
2637 | * @error: end io status of the request | ||
2635 | */ | 2638 | */ |
2636 | void blk_end_sync_rq(struct request *rq, int error) | 2639 | void blk_end_sync_rq(struct request *rq, int error) |
2637 | { | 2640 | { |
@@ -3153,7 +3156,7 @@ static int __end_that_request_first(struct request *req, int uptodate, | |||
3153 | if (blk_fs_request(req) && req->rq_disk) { | 3156 | if (blk_fs_request(req) && req->rq_disk) { |
3154 | const int rw = rq_data_dir(req); | 3157 | const int rw = rq_data_dir(req); |
3155 | 3158 | ||
3156 | __disk_stat_add(req->rq_disk, sectors[rw], nr_bytes >> 9); | 3159 | disk_stat_add(req->rq_disk, sectors[rw], nr_bytes >> 9); |
3157 | } | 3160 | } |
3158 | 3161 | ||
3159 | total_bytes = bio_nbytes = 0; | 3162 | total_bytes = bio_nbytes = 0; |
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index dd8c6a9ffc76..b45a45ca7cc9 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c | |||
@@ -29,9 +29,6 @@ | |||
29 | #ifdef CONFIG_ARCH_OMAP | 29 | #ifdef CONFIG_ARCH_OMAP |
30 | #include <asm/arch/gpio.h> | 30 | #include <asm/arch/gpio.h> |
31 | #endif | 31 | #endif |
32 | |||
33 | #else | ||
34 | #define set_irq_type(irq,type) do{}while(0) | ||
35 | #endif | 32 | #endif |
36 | 33 | ||
37 | 34 | ||
@@ -509,14 +506,14 @@ static int __devinit ads7846_probe(struct spi_device *spi) | |||
509 | ts->msg.complete = ads7846_rx; | 506 | ts->msg.complete = ads7846_rx; |
510 | ts->msg.context = ts; | 507 | ts->msg.context = ts; |
511 | 508 | ||
512 | if (request_irq(spi->irq, ads7846_irq, SA_SAMPLE_RANDOM, | 509 | if (request_irq(spi->irq, ads7846_irq, |
513 | spi->dev.bus_id, ts)) { | 510 | SA_SAMPLE_RANDOM | SA_TRIGGER_FALLING, |
511 | spi->dev.bus_id, ts)) { | ||
514 | dev_dbg(&spi->dev, "irq %d busy?\n", spi->irq); | 512 | dev_dbg(&spi->dev, "irq %d busy?\n", spi->irq); |
515 | input_unregister_device(&ts->input); | 513 | input_unregister_device(&ts->input); |
516 | kfree(ts); | 514 | kfree(ts); |
517 | return -EBUSY; | 515 | return -EBUSY; |
518 | } | 516 | } |
519 | set_irq_type(spi->irq, IRQT_FALLING); | ||
520 | 517 | ||
521 | dev_info(&spi->dev, "touchscreen, irq %d\n", spi->irq); | 518 | dev_info(&spi->dev, "touchscreen, irq %d\n", spi->irq); |
522 | 519 | ||
diff --git a/drivers/misc/ibmasm/uart.c b/drivers/misc/ibmasm/uart.c index 7e98434cfa37..9783caf49696 100644 --- a/drivers/misc/ibmasm/uart.c +++ b/drivers/misc/ibmasm/uart.c | |||
@@ -50,7 +50,7 @@ void ibmasm_register_uart(struct service_processor *sp) | |||
50 | memset(&uport, 0, sizeof(struct uart_port)); | 50 | memset(&uport, 0, sizeof(struct uart_port)); |
51 | uport.irq = sp->irq; | 51 | uport.irq = sp->irq; |
52 | uport.uartclk = 3686400; | 52 | uport.uartclk = 3686400; |
53 | uport.flags = UPF_AUTOPROBE | UPF_SHARE_IRQ; | 53 | uport.flags = UPF_SHARE_IRQ; |
54 | uport.iotype = UPIO_MEM; | 54 | uport.iotype = UPIO_MEM; |
55 | uport.membase = iomem_base; | 55 | uport.membase = iomem_base; |
56 | 56 | ||
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 626508afe1b1..6a6a08441804 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -2034,13 +2034,28 @@ config SKGE | |||
2034 | It does not support the link failover and network management | 2034 | It does not support the link failover and network management |
2035 | features that "portable" vendor supplied sk98lin driver does. | 2035 | features that "portable" vendor supplied sk98lin driver does. |
2036 | 2036 | ||
2037 | This driver supports adapters based on the original Yukon chipset: | ||
2038 | Marvell 88E8001, Belkin F5D5005, CNet GigaCard, DLink DGE-530T, | ||
2039 | Linksys EG1032/EG1064, 3Com 3C940/3C940B, SysKonnect SK-9871/9872. | ||
2040 | |||
2041 | It does not support the newer Yukon2 chipset: a separate driver, | ||
2042 | sky2, is provided for Yukon2-based adapters. | ||
2043 | |||
2044 | To compile this driver as a module, choose M here: the module | ||
2045 | will be called skge. This is recommended. | ||
2037 | 2046 | ||
2038 | config SKY2 | 2047 | config SKY2 |
2039 | tristate "SysKonnect Yukon2 support (EXPERIMENTAL)" | 2048 | tristate "SysKonnect Yukon2 support (EXPERIMENTAL)" |
2040 | depends on PCI && EXPERIMENTAL | 2049 | depends on PCI && EXPERIMENTAL |
2041 | select CRC32 | 2050 | select CRC32 |
2042 | ---help--- | 2051 | ---help--- |
2043 | This driver support the Marvell Yukon 2 Gigabit Ethernet adapter. | 2052 | This driver supports Gigabit Ethernet adapters based on the the |
2053 | Marvell Yukon 2 chipset: | ||
2054 | Marvell 88E8021/88E8022/88E8035/88E8036/88E8038/88E8050/88E8052/ | ||
2055 | 88E8053/88E8055/88E8061/88E8062, SysKonnect SK-9E21D/SK-9S21 | ||
2056 | |||
2057 | This driver does not support the original Yukon chipset: a seperate | ||
2058 | driver, skge, is provided for Yukon-based adapters. | ||
2044 | 2059 | ||
2045 | To compile this driver as a module, choose M here: the module | 2060 | To compile this driver as a module, choose M here: the module |
2046 | will be called sky2. This is recommended. | 2061 | will be called sky2. This is recommended. |
@@ -2050,8 +2065,15 @@ config SK98LIN | |||
2050 | depends on PCI | 2065 | depends on PCI |
2051 | ---help--- | 2066 | ---help--- |
2052 | Say Y here if you have a Marvell Yukon or SysKonnect SK-98xx/SK-95xx | 2067 | Say Y here if you have a Marvell Yukon or SysKonnect SK-98xx/SK-95xx |
2053 | compliant Gigabit Ethernet Adapter. The following adapters are supported | 2068 | compliant Gigabit Ethernet Adapter. |
2054 | by this driver: | 2069 | |
2070 | This driver supports the original Yukon chipset. A cleaner driver is | ||
2071 | also available (skge) which seems to work better than this one. | ||
2072 | |||
2073 | This driver does not support the newer Yukon2 chipset. A seperate | ||
2074 | driver, sky2, is provided to support Yukon2-based adapters. | ||
2075 | |||
2076 | The following adapters are supported by this driver: | ||
2055 | - 3Com 3C940 Gigabit LOM Ethernet Adapter | 2077 | - 3Com 3C940 Gigabit LOM Ethernet Adapter |
2056 | - 3Com 3C941 Gigabit LOM Ethernet Adapter | 2078 | - 3Com 3C941 Gigabit LOM Ethernet Adapter |
2057 | - Allied Telesyn AT-2970LX Gigabit Ethernet Adapter | 2079 | - Allied Telesyn AT-2970LX Gigabit Ethernet Adapter |
diff --git a/drivers/net/acenic.c b/drivers/net/acenic.c index b8953de5664a..b508812e97ac 100644 --- a/drivers/net/acenic.c +++ b/drivers/net/acenic.c | |||
@@ -1002,6 +1002,8 @@ static int __devinit ace_init(struct net_device *dev) | |||
1002 | 1002 | ||
1003 | mac1 = 0; | 1003 | mac1 = 0; |
1004 | for(i = 0; i < 4; i++) { | 1004 | for(i = 0; i < 4; i++) { |
1005 | int tmp; | ||
1006 | |||
1005 | mac1 = mac1 << 8; | 1007 | mac1 = mac1 << 8; |
1006 | tmp = read_eeprom_byte(dev, 0x8c+i); | 1008 | tmp = read_eeprom_byte(dev, 0x8c+i); |
1007 | if (tmp < 0) { | 1009 | if (tmp < 0) { |
@@ -1012,6 +1014,8 @@ static int __devinit ace_init(struct net_device *dev) | |||
1012 | } | 1014 | } |
1013 | mac2 = 0; | 1015 | mac2 = 0; |
1014 | for(i = 4; i < 8; i++) { | 1016 | for(i = 4; i < 8; i++) { |
1017 | int tmp; | ||
1018 | |||
1015 | mac2 = mac2 << 8; | 1019 | mac2 = mac2 << 8; |
1016 | tmp = read_eeprom_byte(dev, 0x8c+i); | 1020 | tmp = read_eeprom_byte(dev, 0x8c+i); |
1017 | if (tmp < 0) { | 1021 | if (tmp < 0) { |
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index df9d6e80c4f2..c3267e4e1bb0 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
@@ -1399,7 +1399,6 @@ static int b44_open(struct net_device *dev) | |||
1399 | b44_init_rings(bp); | 1399 | b44_init_rings(bp); |
1400 | b44_init_hw(bp); | 1400 | b44_init_hw(bp); |
1401 | 1401 | ||
1402 | netif_carrier_off(dev); | ||
1403 | b44_check_phy(bp); | 1402 | b44_check_phy(bp); |
1404 | 1403 | ||
1405 | err = request_irq(dev->irq, b44_interrupt, SA_SHIRQ, dev->name, dev); | 1404 | err = request_irq(dev->irq, b44_interrupt, SA_SHIRQ, dev->name, dev); |
@@ -1464,7 +1463,7 @@ static int b44_close(struct net_device *dev) | |||
1464 | #endif | 1463 | #endif |
1465 | b44_halt(bp); | 1464 | b44_halt(bp); |
1466 | b44_free_rings(bp); | 1465 | b44_free_rings(bp); |
1467 | netif_carrier_off(bp->dev); | 1466 | netif_carrier_off(dev); |
1468 | 1467 | ||
1469 | spin_unlock_irq(&bp->lock); | 1468 | spin_unlock_irq(&bp->lock); |
1470 | 1469 | ||
@@ -2000,6 +1999,8 @@ static int __devinit b44_init_one(struct pci_dev *pdev, | |||
2000 | dev->irq = pdev->irq; | 1999 | dev->irq = pdev->irq; |
2001 | SET_ETHTOOL_OPS(dev, &b44_ethtool_ops); | 2000 | SET_ETHTOOL_OPS(dev, &b44_ethtool_ops); |
2002 | 2001 | ||
2002 | netif_carrier_off(dev); | ||
2003 | |||
2003 | err = b44_get_invariants(bp); | 2004 | err = b44_get_invariants(bp); |
2004 | if (err) { | 2005 | if (err) { |
2005 | printk(KERN_ERR PFX "Problem fetching invariants of chip, " | 2006 | printk(KERN_ERR PFX "Problem fetching invariants of chip, " |
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 2582d98ef5c3..4ff006c37626 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
@@ -576,7 +576,7 @@ static int bond_update_speed_duplex(struct slave *slave) | |||
576 | slave->duplex = DUPLEX_FULL; | 576 | slave->duplex = DUPLEX_FULL; |
577 | 577 | ||
578 | if (slave_dev->ethtool_ops) { | 578 | if (slave_dev->ethtool_ops) { |
579 | u32 res; | 579 | int res; |
580 | 580 | ||
581 | if (!slave_dev->ethtool_ops->get_settings) { | 581 | if (!slave_dev->ethtool_ops->get_settings) { |
582 | return -1; | 582 | return -1; |
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index 40ae36b20c9d..7ef4b0434a3f 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c | |||
@@ -444,6 +444,7 @@ static int mv643xx_eth_receive_queue(struct net_device *dev) | |||
444 | netif_rx(skb); | 444 | netif_rx(skb); |
445 | #endif | 445 | #endif |
446 | } | 446 | } |
447 | dev->last_rx = jiffies; | ||
447 | } | 448 | } |
448 | 449 | ||
449 | return received_packets; | 450 | return received_packets; |
@@ -461,7 +462,7 @@ static int mv643xx_eth_receive_queue(struct net_device *dev) | |||
461 | */ | 462 | */ |
462 | 463 | ||
463 | static irqreturn_t mv643xx_eth_int_handler(int irq, void *dev_id, | 464 | static irqreturn_t mv643xx_eth_int_handler(int irq, void *dev_id, |
464 | struct pt_regs *regs) | 465 | struct pt_regs *regs) |
465 | { | 466 | { |
466 | struct net_device *dev = (struct net_device *)dev_id; | 467 | struct net_device *dev = (struct net_device *)dev_id; |
467 | struct mv643xx_private *mp = netdev_priv(dev); | 468 | struct mv643xx_private *mp = netdev_priv(dev); |
@@ -1047,16 +1048,15 @@ static int mv643xx_poll(struct net_device *dev, int *budget) | |||
1047 | 1048 | ||
1048 | static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb) | 1049 | static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb) |
1049 | { | 1050 | { |
1050 | unsigned int frag; | 1051 | unsigned int frag; |
1051 | skb_frag_t *fragp; | 1052 | skb_frag_t *fragp; |
1052 | 1053 | ||
1053 | for (frag = 0; frag < skb_shinfo(skb)->nr_frags; frag++) { | 1054 | for (frag = 0; frag < skb_shinfo(skb)->nr_frags; frag++) { |
1054 | fragp = &skb_shinfo(skb)->frags[frag]; | 1055 | fragp = &skb_shinfo(skb)->frags[frag]; |
1055 | if (fragp->size <= 8 && fragp->page_offset & 0x7) | 1056 | if (fragp->size <= 8 && fragp->page_offset & 0x7) |
1056 | return 1; | 1057 | return 1; |
1057 | 1058 | } | |
1058 | } | 1059 | return 0; |
1059 | return 0; | ||
1060 | } | 1060 | } |
1061 | 1061 | ||
1062 | 1062 | ||
@@ -2137,26 +2137,26 @@ static void eth_port_set_multicast_list(struct net_device *dev) | |||
2137 | */ | 2137 | */ |
2138 | if ((dev->flags & IFF_PROMISC) || (dev->flags & IFF_ALLMULTI)) { | 2138 | if ((dev->flags & IFF_PROMISC) || (dev->flags & IFF_ALLMULTI)) { |
2139 | for (table_index = 0; table_index <= 0xFC; table_index += 4) { | 2139 | for (table_index = 0; table_index <= 0xFC; table_index += 4) { |
2140 | /* Set all entries in DA filter special multicast | 2140 | /* Set all entries in DA filter special multicast |
2141 | * table (Ex_dFSMT) | 2141 | * table (Ex_dFSMT) |
2142 | * Set for ETH_Q0 for now | 2142 | * Set for ETH_Q0 for now |
2143 | * Bits | 2143 | * Bits |
2144 | * 0 Accept=1, Drop=0 | 2144 | * 0 Accept=1, Drop=0 |
2145 | * 3-1 Queue ETH_Q0=0 | 2145 | * 3-1 Queue ETH_Q0=0 |
2146 | * 7-4 Reserved = 0; | 2146 | * 7-4 Reserved = 0; |
2147 | */ | 2147 | */ |
2148 | mv_write(MV643XX_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE(eth_port_num) + table_index, 0x01010101); | 2148 | mv_write(MV643XX_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE(eth_port_num) + table_index, 0x01010101); |
2149 | 2149 | ||
2150 | /* Set all entries in DA filter other multicast | 2150 | /* Set all entries in DA filter other multicast |
2151 | * table (Ex_dFOMT) | 2151 | * table (Ex_dFOMT) |
2152 | * Set for ETH_Q0 for now | 2152 | * Set for ETH_Q0 for now |
2153 | * Bits | 2153 | * Bits |
2154 | * 0 Accept=1, Drop=0 | 2154 | * 0 Accept=1, Drop=0 |
2155 | * 3-1 Queue ETH_Q0=0 | 2155 | * 3-1 Queue ETH_Q0=0 |
2156 | * 7-4 Reserved = 0; | 2156 | * 7-4 Reserved = 0; |
2157 | */ | 2157 | */ |
2158 | mv_write(MV643XX_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE(eth_port_num) + table_index, 0x01010101); | 2158 | mv_write(MV643XX_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE(eth_port_num) + table_index, 0x01010101); |
2159 | } | 2159 | } |
2160 | return; | 2160 | return; |
2161 | } | 2161 | } |
2162 | 2162 | ||
@@ -2617,7 +2617,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp, | |||
2617 | struct eth_tx_desc *current_descriptor; | 2617 | struct eth_tx_desc *current_descriptor; |
2618 | struct eth_tx_desc *first_descriptor; | 2618 | struct eth_tx_desc *first_descriptor; |
2619 | u32 command; | 2619 | u32 command; |
2620 | unsigned long flags; | ||
2621 | 2620 | ||
2622 | /* Do not process Tx ring in case of Tx ring resource error */ | 2621 | /* Do not process Tx ring in case of Tx ring resource error */ |
2623 | if (mp->tx_resource_err) | 2622 | if (mp->tx_resource_err) |
@@ -2634,8 +2633,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp, | |||
2634 | return ETH_ERROR; | 2633 | return ETH_ERROR; |
2635 | } | 2634 | } |
2636 | 2635 | ||
2637 | spin_lock_irqsave(&mp->lock, flags); | ||
2638 | |||
2639 | mp->tx_ring_skbs++; | 2636 | mp->tx_ring_skbs++; |
2640 | BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); | 2637 | BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); |
2641 | 2638 | ||
@@ -2685,15 +2682,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp, | |||
2685 | mp->tx_resource_err = 1; | 2682 | mp->tx_resource_err = 1; |
2686 | mp->tx_curr_desc_q = tx_first_desc; | 2683 | mp->tx_curr_desc_q = tx_first_desc; |
2687 | 2684 | ||
2688 | spin_unlock_irqrestore(&mp->lock, flags); | ||
2689 | |||
2690 | return ETH_QUEUE_LAST_RESOURCE; | 2685 | return ETH_QUEUE_LAST_RESOURCE; |
2691 | } | 2686 | } |
2692 | 2687 | ||
2693 | mp->tx_curr_desc_q = tx_next_desc; | 2688 | mp->tx_curr_desc_q = tx_next_desc; |
2694 | 2689 | ||
2695 | spin_unlock_irqrestore(&mp->lock, flags); | ||
2696 | |||
2697 | return ETH_OK; | 2690 | return ETH_OK; |
2698 | } | 2691 | } |
2699 | #else | 2692 | #else |
@@ -2704,14 +2697,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp, | |||
2704 | int tx_desc_used; | 2697 | int tx_desc_used; |
2705 | struct eth_tx_desc *current_descriptor; | 2698 | struct eth_tx_desc *current_descriptor; |
2706 | unsigned int command_status; | 2699 | unsigned int command_status; |
2707 | unsigned long flags; | ||
2708 | 2700 | ||
2709 | /* Do not process Tx ring in case of Tx ring resource error */ | 2701 | /* Do not process Tx ring in case of Tx ring resource error */ |
2710 | if (mp->tx_resource_err) | 2702 | if (mp->tx_resource_err) |
2711 | return ETH_QUEUE_FULL; | 2703 | return ETH_QUEUE_FULL; |
2712 | 2704 | ||
2713 | spin_lock_irqsave(&mp->lock, flags); | ||
2714 | |||
2715 | mp->tx_ring_skbs++; | 2705 | mp->tx_ring_skbs++; |
2716 | BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); | 2706 | BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size); |
2717 | 2707 | ||
@@ -2742,12 +2732,9 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp, | |||
2742 | /* Check for ring index overlap in the Tx desc ring */ | 2732 | /* Check for ring index overlap in the Tx desc ring */ |
2743 | if (tx_desc_curr == tx_desc_used) { | 2733 | if (tx_desc_curr == tx_desc_used) { |
2744 | mp->tx_resource_err = 1; | 2734 | mp->tx_resource_err = 1; |
2745 | |||
2746 | spin_unlock_irqrestore(&mp->lock, flags); | ||
2747 | return ETH_QUEUE_LAST_RESOURCE; | 2735 | return ETH_QUEUE_LAST_RESOURCE; |
2748 | } | 2736 | } |
2749 | 2737 | ||
2750 | spin_unlock_irqrestore(&mp->lock, flags); | ||
2751 | return ETH_OK; | 2738 | return ETH_OK; |
2752 | } | 2739 | } |
2753 | #endif | 2740 | #endif |
@@ -2898,8 +2885,10 @@ static ETH_FUNC_RET_STATUS eth_port_receive(struct mv643xx_private *mp, | |||
2898 | p_pkt_info->return_info = mp->rx_skb[rx_curr_desc]; | 2885 | p_pkt_info->return_info = mp->rx_skb[rx_curr_desc]; |
2899 | p_pkt_info->l4i_chk = p_rx_desc->buf_size; | 2886 | p_pkt_info->l4i_chk = p_rx_desc->buf_size; |
2900 | 2887 | ||
2901 | /* Clean the return info field to indicate that the packet has been */ | 2888 | /* |
2902 | /* moved to the upper layers */ | 2889 | * Clean the return info field to indicate that the |
2890 | * packet has been moved to the upper layers | ||
2891 | */ | ||
2903 | mp->rx_skb[rx_curr_desc] = NULL; | 2892 | mp->rx_skb[rx_curr_desc] = NULL; |
2904 | 2893 | ||
2905 | /* Update current index in data structure */ | 2894 | /* Update current index in data structure */ |
@@ -2980,7 +2969,7 @@ struct mv643xx_stats { | |||
2980 | }; | 2969 | }; |
2981 | 2970 | ||
2982 | #define MV643XX_STAT(m) sizeof(((struct mv643xx_private *)0)->m), \ | 2971 | #define MV643XX_STAT(m) sizeof(((struct mv643xx_private *)0)->m), \ |
2983 | offsetof(struct mv643xx_private, m) | 2972 | offsetof(struct mv643xx_private, m) |
2984 | 2973 | ||
2985 | static const struct mv643xx_stats mv643xx_gstrings_stats[] = { | 2974 | static const struct mv643xx_stats mv643xx_gstrings_stats[] = { |
2986 | { "rx_packets", MV643XX_STAT(stats.rx_packets) }, | 2975 | { "rx_packets", MV643XX_STAT(stats.rx_packets) }, |
@@ -3131,9 +3120,8 @@ mv643xx_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) | |||
3131 | return 0; | 3120 | return 0; |
3132 | } | 3121 | } |
3133 | 3122 | ||
3134 | static void | 3123 | static void mv643xx_get_drvinfo(struct net_device *netdev, |
3135 | mv643xx_get_drvinfo(struct net_device *netdev, | 3124 | struct ethtool_drvinfo *drvinfo) |
3136 | struct ethtool_drvinfo *drvinfo) | ||
3137 | { | 3125 | { |
3138 | strncpy(drvinfo->driver, mv643xx_driver_name, 32); | 3126 | strncpy(drvinfo->driver, mv643xx_driver_name, 32); |
3139 | strncpy(drvinfo->version, mv643xx_driver_version, 32); | 3127 | strncpy(drvinfo->version, mv643xx_driver_version, 32); |
@@ -3142,39 +3130,37 @@ mv643xx_get_drvinfo(struct net_device *netdev, | |||
3142 | drvinfo->n_stats = MV643XX_STATS_LEN; | 3130 | drvinfo->n_stats = MV643XX_STATS_LEN; |
3143 | } | 3131 | } |
3144 | 3132 | ||
3145 | static int | 3133 | static int mv643xx_get_stats_count(struct net_device *netdev) |
3146 | mv643xx_get_stats_count(struct net_device *netdev) | ||
3147 | { | 3134 | { |
3148 | return MV643XX_STATS_LEN; | 3135 | return MV643XX_STATS_LEN; |
3149 | } | 3136 | } |
3150 | 3137 | ||
3151 | static void | 3138 | static void mv643xx_get_ethtool_stats(struct net_device *netdev, |
3152 | mv643xx_get_ethtool_stats(struct net_device *netdev, | 3139 | struct ethtool_stats *stats, uint64_t *data) |
3153 | struct ethtool_stats *stats, uint64_t *data) | ||
3154 | { | 3140 | { |
3155 | struct mv643xx_private *mp = netdev->priv; | 3141 | struct mv643xx_private *mp = netdev->priv; |
3156 | int i; | 3142 | int i; |
3157 | 3143 | ||
3158 | eth_update_mib_counters(mp); | 3144 | eth_update_mib_counters(mp); |
3159 | 3145 | ||
3160 | for(i = 0; i < MV643XX_STATS_LEN; i++) { | 3146 | for (i = 0; i < MV643XX_STATS_LEN; i++) { |
3161 | char *p = (char *)mp+mv643xx_gstrings_stats[i].stat_offset; | 3147 | char *p = (char *)mp+mv643xx_gstrings_stats[i].stat_offset; |
3162 | data[i] = (mv643xx_gstrings_stats[i].sizeof_stat == | 3148 | data[i] = (mv643xx_gstrings_stats[i].sizeof_stat == |
3163 | sizeof(uint64_t)) ? *(uint64_t *)p : *(uint32_t *)p; | 3149 | sizeof(uint64_t)) ? *(uint64_t *)p : *(uint32_t *)p; |
3164 | } | 3150 | } |
3165 | } | 3151 | } |
3166 | 3152 | ||
3167 | static void | 3153 | static void mv643xx_get_strings(struct net_device *netdev, uint32_t stringset, |
3168 | mv643xx_get_strings(struct net_device *netdev, uint32_t stringset, uint8_t *data) | 3154 | uint8_t *data) |
3169 | { | 3155 | { |
3170 | int i; | 3156 | int i; |
3171 | 3157 | ||
3172 | switch(stringset) { | 3158 | switch(stringset) { |
3173 | case ETH_SS_STATS: | 3159 | case ETH_SS_STATS: |
3174 | for (i=0; i < MV643XX_STATS_LEN; i++) { | 3160 | for (i=0; i < MV643XX_STATS_LEN; i++) { |
3175 | memcpy(data + i * ETH_GSTRING_LEN, | 3161 | memcpy(data + i * ETH_GSTRING_LEN, |
3176 | mv643xx_gstrings_stats[i].stat_string, | 3162 | mv643xx_gstrings_stats[i].stat_string, |
3177 | ETH_GSTRING_LEN); | 3163 | ETH_GSTRING_LEN); |
3178 | } | 3164 | } |
3179 | break; | 3165 | break; |
3180 | } | 3166 | } |
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index 89c46787676c..49b597cbc19a 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
@@ -3586,7 +3586,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev) | |||
3586 | txdp->Buffer_Pointer = (u64) pci_map_page | 3586 | txdp->Buffer_Pointer = (u64) pci_map_page |
3587 | (sp->pdev, frag->page, frag->page_offset, | 3587 | (sp->pdev, frag->page, frag->page_offset, |
3588 | frag->size, PCI_DMA_TODEVICE); | 3588 | frag->size, PCI_DMA_TODEVICE); |
3589 | txdp->Control_1 |= TXD_BUFFER0_SIZE(frag->size); | 3589 | txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size); |
3590 | if (skb_shinfo(skb)->ufo_size) | 3590 | if (skb_shinfo(skb)->ufo_size) |
3591 | txdp->Control_1 |= TXD_UFO_EN; | 3591 | txdp->Control_1 |= TXD_UFO_EN; |
3592 | } | 3592 | } |
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c index 28ce47a02408..55f3b856236e 100644 --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c | |||
@@ -1653,36 +1653,40 @@ static void gem_init_rings(struct gem *gp) | |||
1653 | /* Init PHY interface and start link poll state machine */ | 1653 | /* Init PHY interface and start link poll state machine */ |
1654 | static void gem_init_phy(struct gem *gp) | 1654 | static void gem_init_phy(struct gem *gp) |
1655 | { | 1655 | { |
1656 | u32 mifcfg; | 1656 | u32 mif_cfg; |
1657 | 1657 | ||
1658 | /* Revert MIF CFG setting done on stop_phy */ | 1658 | /* Revert MIF CFG setting done on stop_phy */ |
1659 | mifcfg = readl(gp->regs + MIF_CFG); | 1659 | mif_cfg = readl(gp->regs + MIF_CFG); |
1660 | mifcfg &= ~MIF_CFG_BBMODE; | 1660 | mif_cfg &= ~(MIF_CFG_PSELECT|MIF_CFG_POLL|MIF_CFG_BBMODE|MIF_CFG_MDI1); |
1661 | writel(mifcfg, gp->regs + MIF_CFG); | 1661 | mif_cfg |= MIF_CFG_MDI0; |
1662 | writel(mif_cfg, gp->regs + MIF_CFG); | ||
1663 | writel(PCS_DMODE_MGM, gp->regs + PCS_DMODE); | ||
1664 | writel(MAC_XIFCFG_OE, gp->regs + MAC_XIFCFG); | ||
1662 | 1665 | ||
1663 | if (gp->pdev->vendor == PCI_VENDOR_ID_APPLE) { | 1666 | if (gp->pdev->vendor == PCI_VENDOR_ID_APPLE) { |
1664 | int i; | 1667 | int i; |
1668 | u16 ctrl; | ||
1665 | 1669 | ||
1666 | /* Those delay sucks, the HW seem to love them though, I'll | ||
1667 | * serisouly consider breaking some locks here to be able | ||
1668 | * to schedule instead | ||
1669 | */ | ||
1670 | for (i = 0; i < 3; i++) { | ||
1671 | #ifdef CONFIG_PPC_PMAC | 1670 | #ifdef CONFIG_PPC_PMAC |
1672 | pmac_call_feature(PMAC_FTR_GMAC_PHY_RESET, gp->of_node, 0, 0); | 1671 | pmac_call_feature(PMAC_FTR_GMAC_PHY_RESET, gp->of_node, 0, 0); |
1673 | msleep(20); | ||
1674 | #endif | 1672 | #endif |
1675 | /* Some PHYs used by apple have problem getting back to us, | 1673 | |
1676 | * we do an additional reset here | 1674 | /* Some PHYs used by apple have problem getting back |
1677 | */ | 1675 | * to us, we do an additional reset here |
1678 | phy_write(gp, MII_BMCR, BMCR_RESET); | 1676 | */ |
1679 | msleep(20); | 1677 | phy_write(gp, MII_BMCR, BMCR_RESET); |
1680 | if (phy_read(gp, MII_BMCR) != 0xffff) | 1678 | for (i = 0; i < 50; i++) { |
1679 | if ((phy_read(gp, MII_BMCR) & BMCR_RESET) == 0) | ||
1681 | break; | 1680 | break; |
1682 | if (i == 2) | 1681 | msleep(10); |
1683 | printk(KERN_WARNING "%s: GMAC PHY not responding !\n", | ||
1684 | gp->dev->name); | ||
1685 | } | 1682 | } |
1683 | if (i == 50) | ||
1684 | printk(KERN_WARNING "%s: GMAC PHY not responding !\n", | ||
1685 | gp->dev->name); | ||
1686 | /* Make sure isolate is off */ | ||
1687 | ctrl = phy_read(gp, MII_BMCR); | ||
1688 | if (ctrl & BMCR_ISOLATE) | ||
1689 | phy_write(gp, MII_BMCR, ctrl & ~BMCR_ISOLATE); | ||
1686 | } | 1690 | } |
1687 | 1691 | ||
1688 | if (gp->pdev->vendor == PCI_VENDOR_ID_SUN && | 1692 | if (gp->pdev->vendor == PCI_VENDOR_ID_SUN && |
@@ -2119,7 +2123,7 @@ static void gem_reinit_chip(struct gem *gp) | |||
2119 | /* Must be invoked with no lock held. */ | 2123 | /* Must be invoked with no lock held. */ |
2120 | static void gem_stop_phy(struct gem *gp, int wol) | 2124 | static void gem_stop_phy(struct gem *gp, int wol) |
2121 | { | 2125 | { |
2122 | u32 mifcfg; | 2126 | u32 mif_cfg; |
2123 | unsigned long flags; | 2127 | unsigned long flags; |
2124 | 2128 | ||
2125 | /* Let the chip settle down a bit, it seems that helps | 2129 | /* Let the chip settle down a bit, it seems that helps |
@@ -2130,9 +2134,9 @@ static void gem_stop_phy(struct gem *gp, int wol) | |||
2130 | /* Make sure we aren't polling PHY status change. We | 2134 | /* Make sure we aren't polling PHY status change. We |
2131 | * don't currently use that feature though | 2135 | * don't currently use that feature though |
2132 | */ | 2136 | */ |
2133 | mifcfg = readl(gp->regs + MIF_CFG); | 2137 | mif_cfg = readl(gp->regs + MIF_CFG); |
2134 | mifcfg &= ~MIF_CFG_POLL; | 2138 | mif_cfg &= ~MIF_CFG_POLL; |
2135 | writel(mifcfg, gp->regs + MIF_CFG); | 2139 | writel(mif_cfg, gp->regs + MIF_CFG); |
2136 | 2140 | ||
2137 | if (wol && gp->has_wol) { | 2141 | if (wol && gp->has_wol) { |
2138 | unsigned char *e = &gp->dev->dev_addr[0]; | 2142 | unsigned char *e = &gp->dev->dev_addr[0]; |
@@ -2182,7 +2186,8 @@ static void gem_stop_phy(struct gem *gp, int wol) | |||
2182 | /* According to Apple, we must set the MDIO pins to this begnign | 2186 | /* According to Apple, we must set the MDIO pins to this begnign |
2183 | * state or we may 1) eat more current, 2) damage some PHYs | 2187 | * state or we may 1) eat more current, 2) damage some PHYs |
2184 | */ | 2188 | */ |
2185 | writel(mifcfg | MIF_CFG_BBMODE, gp->regs + MIF_CFG); | 2189 | mif_cfg = 0; |
2190 | writel(mif_cfg | MIF_CFG_BBMODE, gp->regs + MIF_CFG); | ||
2186 | writel(0, gp->regs + MIF_BBCLK); | 2191 | writel(0, gp->regs + MIF_BBCLK); |
2187 | writel(0, gp->regs + MIF_BBDATA); | 2192 | writel(0, gp->regs + MIF_BBDATA); |
2188 | writel(0, gp->regs + MIF_BBOENAB); | 2193 | writel(0, gp->regs + MIF_BBOENAB); |
diff --git a/drivers/net/wireless/hostap/Kconfig b/drivers/net/wireless/hostap/Kconfig index c8f6286dd35f..308f773ad566 100644 --- a/drivers/net/wireless/hostap/Kconfig +++ b/drivers/net/wireless/hostap/Kconfig | |||
@@ -75,7 +75,7 @@ config HOSTAP_PCI | |||
75 | 75 | ||
76 | config HOSTAP_CS | 76 | config HOSTAP_CS |
77 | tristate "Host AP driver for Prism2/2.5/3 PC Cards" | 77 | tristate "Host AP driver for Prism2/2.5/3 PC Cards" |
78 | depends on PCMCIA!=n && HOSTAP | 78 | depends on PCMCIA && HOSTAP |
79 | ---help--- | 79 | ---help--- |
80 | Host AP driver's version for Prism2/2.5/3 PC Cards. | 80 | Host AP driver's version for Prism2/2.5/3 PC Cards. |
81 | 81 | ||
diff --git a/drivers/net/wireless/ipw2100.c b/drivers/net/wireless/ipw2100.c index 8bf02763b5c7..6290c9f7e939 100644 --- a/drivers/net/wireless/ipw2100.c +++ b/drivers/net/wireless/ipw2100.c | |||
@@ -2201,6 +2201,17 @@ static int ipw2100_alloc_skb(struct ipw2100_priv *priv, | |||
2201 | #define SEARCH_SNAPSHOT 1 | 2201 | #define SEARCH_SNAPSHOT 1 |
2202 | 2202 | ||
2203 | #define SNAPSHOT_ADDR(ofs) (priv->snapshot[((ofs) >> 12) & 0xff] + ((ofs) & 0xfff)) | 2203 | #define SNAPSHOT_ADDR(ofs) (priv->snapshot[((ofs) >> 12) & 0xff] + ((ofs) & 0xfff)) |
2204 | static void ipw2100_snapshot_free(struct ipw2100_priv *priv) | ||
2205 | { | ||
2206 | int i; | ||
2207 | if (!priv->snapshot[0]) | ||
2208 | return; | ||
2209 | for (i = 0; i < 0x30; i++) | ||
2210 | kfree(priv->snapshot[i]); | ||
2211 | priv->snapshot[0] = NULL; | ||
2212 | } | ||
2213 | |||
2214 | #ifdef CONFIG_IPW2100_DEBUG_C3 | ||
2204 | static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv) | 2215 | static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv) |
2205 | { | 2216 | { |
2206 | int i; | 2217 | int i; |
@@ -2221,16 +2232,6 @@ static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv) | |||
2221 | return 1; | 2232 | return 1; |
2222 | } | 2233 | } |
2223 | 2234 | ||
2224 | static void ipw2100_snapshot_free(struct ipw2100_priv *priv) | ||
2225 | { | ||
2226 | int i; | ||
2227 | if (!priv->snapshot[0]) | ||
2228 | return; | ||
2229 | for (i = 0; i < 0x30; i++) | ||
2230 | kfree(priv->snapshot[i]); | ||
2231 | priv->snapshot[0] = NULL; | ||
2232 | } | ||
2233 | |||
2234 | static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf, | 2235 | static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf, |
2235 | size_t len, int mode) | 2236 | size_t len, int mode) |
2236 | { | 2237 | { |
@@ -2269,6 +2270,7 @@ static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf, | |||
2269 | 2270 | ||
2270 | return ret; | 2271 | return ret; |
2271 | } | 2272 | } |
2273 | #endif | ||
2272 | 2274 | ||
2273 | /* | 2275 | /* |
2274 | * | 2276 | * |
@@ -7112,11 +7114,17 @@ static int ipw2100_wx_set_txpow(struct net_device *dev, | |||
7112 | { | 7114 | { |
7113 | struct ipw2100_priv *priv = ieee80211_priv(dev); | 7115 | struct ipw2100_priv *priv = ieee80211_priv(dev); |
7114 | int err = 0, value; | 7116 | int err = 0, value; |
7117 | |||
7118 | if (ipw_radio_kill_sw(priv, wrqu->txpower.disabled)) | ||
7119 | return -EINPROGRESS; | ||
7115 | 7120 | ||
7116 | if (priv->ieee->iw_mode != IW_MODE_ADHOC) | 7121 | if (priv->ieee->iw_mode != IW_MODE_ADHOC) |
7122 | return 0; | ||
7123 | |||
7124 | if ((wrqu->txpower.flags & IW_TXPOW_TYPE) != IW_TXPOW_DBM) | ||
7117 | return -EINVAL; | 7125 | return -EINVAL; |
7118 | 7126 | ||
7119 | if (wrqu->txpower.disabled == 1 || wrqu->txpower.fixed == 0) | 7127 | if (wrqu->txpower.fixed == 0) |
7120 | value = IPW_TX_POWER_DEFAULT; | 7128 | value = IPW_TX_POWER_DEFAULT; |
7121 | else { | 7129 | else { |
7122 | if (wrqu->txpower.value < IPW_TX_POWER_MIN_DBM || | 7130 | if (wrqu->txpower.value < IPW_TX_POWER_MIN_DBM || |
@@ -7151,24 +7159,19 @@ static int ipw2100_wx_get_txpow(struct net_device *dev, | |||
7151 | 7159 | ||
7152 | struct ipw2100_priv *priv = ieee80211_priv(dev); | 7160 | struct ipw2100_priv *priv = ieee80211_priv(dev); |
7153 | 7161 | ||
7154 | if (priv->ieee->iw_mode != IW_MODE_ADHOC) { | 7162 | wrqu->txpower.disabled = (priv->status & STATUS_RF_KILL_MASK) ? 1 : 0; |
7155 | wrqu->power.disabled = 1; | ||
7156 | return 0; | ||
7157 | } | ||
7158 | 7163 | ||
7159 | if (priv->tx_power == IPW_TX_POWER_DEFAULT) { | 7164 | if (priv->tx_power == IPW_TX_POWER_DEFAULT) { |
7160 | wrqu->power.fixed = 0; | 7165 | wrqu->txpower.fixed = 0; |
7161 | wrqu->power.value = IPW_TX_POWER_MAX_DBM; | 7166 | wrqu->txpower.value = IPW_TX_POWER_MAX_DBM; |
7162 | wrqu->power.disabled = 1; | ||
7163 | } else { | 7167 | } else { |
7164 | wrqu->power.disabled = 0; | 7168 | wrqu->txpower.fixed = 1; |
7165 | wrqu->power.fixed = 1; | 7169 | wrqu->txpower.value = priv->tx_power; |
7166 | wrqu->power.value = priv->tx_power; | ||
7167 | } | 7170 | } |
7168 | 7171 | ||
7169 | wrqu->power.flags = IW_TXPOW_DBM; | 7172 | wrqu->txpower.flags = IW_TXPOW_DBM; |
7170 | 7173 | ||
7171 | IPW_DEBUG_WX("GET TX Power -> %d \n", wrqu->power.value); | 7174 | IPW_DEBUG_WX("GET TX Power -> %d \n", wrqu->txpower.value); |
7172 | 7175 | ||
7173 | return 0; | 7176 | return 0; |
7174 | } | 7177 | } |
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c index 4c28e332ecc3..916b24c544e2 100644 --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c | |||
@@ -8012,6 +8012,10 @@ static int ipw_sw_reset(struct ipw_priv *priv, int init) | |||
8012 | else | 8012 | else |
8013 | IPW_DEBUG_INFO("Auto adhoc creation disabled.\n"); | 8013 | IPW_DEBUG_INFO("Auto adhoc creation disabled.\n"); |
8014 | 8014 | ||
8015 | priv->config &= ~CFG_STATIC_ESSID; | ||
8016 | priv->essid_len = 0; | ||
8017 | memset(priv->essid, 0, IW_ESSID_MAX_SIZE); | ||
8018 | |||
8015 | if (disable) { | 8019 | if (disable) { |
8016 | priv->status |= STATUS_RF_KILL_SW; | 8020 | priv->status |= STATUS_RF_KILL_SW; |
8017 | IPW_DEBUG_INFO("Radio disabled.\n"); | 8021 | IPW_DEBUG_INFO("Radio disabled.\n"); |
@@ -11035,7 +11039,6 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
11035 | net_dev->set_multicast_list = ipw_net_set_multicast_list; | 11039 | net_dev->set_multicast_list = ipw_net_set_multicast_list; |
11036 | net_dev->set_mac_address = ipw_net_set_mac_address; | 11040 | net_dev->set_mac_address = ipw_net_set_mac_address; |
11037 | priv->wireless_data.spy_data = &priv->ieee->spy_data; | 11041 | priv->wireless_data.spy_data = &priv->ieee->spy_data; |
11038 | priv->wireless_data.ieee80211 = priv->ieee; | ||
11039 | net_dev->wireless_data = &priv->wireless_data; | 11042 | net_dev->wireless_data = &priv->wireless_data; |
11040 | net_dev->wireless_handlers = &ipw_wx_handler_def; | 11043 | net_dev->wireless_handlers = &ipw_wx_handler_def; |
11041 | net_dev->ethtool_ops = &ipw_ethtool_ops; | 11044 | net_dev->ethtool_ops = &ipw_ethtool_ops; |
@@ -11121,8 +11124,8 @@ static void ipw_pci_remove(struct pci_dev *pdev) | |||
11121 | /* Free MAC hash list for ADHOC */ | 11124 | /* Free MAC hash list for ADHOC */ |
11122 | for (i = 0; i < IPW_IBSS_MAC_HASH_SIZE; i++) { | 11125 | for (i = 0; i < IPW_IBSS_MAC_HASH_SIZE; i++) { |
11123 | list_for_each_safe(p, q, &priv->ibss_mac_hash[i]) { | 11126 | list_for_each_safe(p, q, &priv->ibss_mac_hash[i]) { |
11124 | kfree(list_entry(p, struct ipw_ibss_seq, list)); | ||
11125 | list_del(p); | 11127 | list_del(p); |
11128 | kfree(list_entry(p, struct ipw_ibss_seq, list)); | ||
11126 | } | 11129 | } |
11127 | } | 11130 | } |
11128 | 11131 | ||
diff --git a/drivers/net/wireless/orinoco_cs.c b/drivers/net/wireless/orinoco_cs.c index b664708481cc..3c128b692bce 100644 --- a/drivers/net/wireless/orinoco_cs.c +++ b/drivers/net/wireless/orinoco_cs.c | |||
@@ -261,13 +261,13 @@ orinoco_cs_config(dev_link_t *link) | |||
261 | /* Note that the CIS values need to be rescaled */ | 261 | /* Note that the CIS values need to be rescaled */ |
262 | if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) { | 262 | if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) { |
263 | if (conf.Vcc != cfg->vcc.param[CISTPL_POWER_VNOM] / 10000) { | 263 | if (conf.Vcc != cfg->vcc.param[CISTPL_POWER_VNOM] / 10000) { |
264 | DEBUG(2, "orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, CIS = %d)\n", conf.Vcc, cfg->vcc.param[CISTPL_POWER_VNOM] / 10000); | 264 | DEBUG(2, "orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, cfg CIS = %d)\n", conf.Vcc, cfg->vcc.param[CISTPL_POWER_VNOM] / 10000); |
265 | if (!ignore_cis_vcc) | 265 | if (!ignore_cis_vcc) |
266 | goto next_entry; | 266 | goto next_entry; |
267 | } | 267 | } |
268 | } else if (dflt.vcc.present & (1 << CISTPL_POWER_VNOM)) { | 268 | } else if (dflt.vcc.present & (1 << CISTPL_POWER_VNOM)) { |
269 | if (conf.Vcc != dflt.vcc.param[CISTPL_POWER_VNOM] / 10000) { | 269 | if (conf.Vcc != dflt.vcc.param[CISTPL_POWER_VNOM] / 10000) { |
270 | DEBUG(2, "orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, CIS = %d)\n", conf.Vcc, dflt.vcc.param[CISTPL_POWER_VNOM] / 10000); | 270 | DEBUG(2, "orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, dflt CIS = %d)\n", conf.Vcc, dflt.vcc.param[CISTPL_POWER_VNOM] / 10000); |
271 | if(!ignore_cis_vcc) | 271 | if(!ignore_cis_vcc) |
272 | goto next_entry; | 272 | goto next_entry; |
273 | } | 273 | } |
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index 202b7507a357..8e1ba0b7a8e4 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c | |||
@@ -416,7 +416,9 @@ static void attach_msi_entry(struct msi_desc *entry, int vector) | |||
416 | 416 | ||
417 | static void irq_handler_init(int cap_id, int pos, int mask) | 417 | static void irq_handler_init(int cap_id, int pos, int mask) |
418 | { | 418 | { |
419 | spin_lock(&irq_desc[pos].lock); | 419 | unsigned long flags; |
420 | |||
421 | spin_lock_irqsave(&irq_desc[pos].lock, flags); | ||
420 | if (cap_id == PCI_CAP_ID_MSIX) | 422 | if (cap_id == PCI_CAP_ID_MSIX) |
421 | irq_desc[pos].handler = &msix_irq_type; | 423 | irq_desc[pos].handler = &msix_irq_type; |
422 | else { | 424 | else { |
@@ -425,7 +427,7 @@ static void irq_handler_init(int cap_id, int pos, int mask) | |||
425 | else | 427 | else |
426 | irq_desc[pos].handler = &msi_irq_w_maskbit_type; | 428 | irq_desc[pos].handler = &msi_irq_w_maskbit_type; |
427 | } | 429 | } |
428 | spin_unlock(&irq_desc[pos].lock); | 430 | spin_unlock_irqrestore(&irq_desc[pos].lock, flags); |
429 | } | 431 | } |
430 | 432 | ||
431 | static void enable_msi_mode(struct pci_dev *dev, int pos, int type) | 433 | static void enable_msi_mode(struct pci_dev *dev, int pos, int type) |
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c index cfbceb504718..07b1e7cc61df 100644 --- a/drivers/scsi/libata-scsi.c +++ b/drivers/scsi/libata-scsi.c | |||
@@ -1700,6 +1700,31 @@ static unsigned int ata_msense_rw_recovery(u8 **ptr_io, const u8 *last) | |||
1700 | return sizeof(def_rw_recovery_mpage); | 1700 | return sizeof(def_rw_recovery_mpage); |
1701 | } | 1701 | } |
1702 | 1702 | ||
1703 | /* | ||
1704 | * We can turn this into a real blacklist if it's needed, for now just | ||
1705 | * blacklist any Maxtor BANC1G10 revision firmware | ||
1706 | */ | ||
1707 | static int ata_dev_supports_fua(u16 *id) | ||
1708 | { | ||
1709 | unsigned char model[41], fw[9]; | ||
1710 | |||
1711 | if (!ata_id_has_fua(id)) | ||
1712 | return 0; | ||
1713 | |||
1714 | model[40] = '\0'; | ||
1715 | fw[8] = '\0'; | ||
1716 | |||
1717 | ata_dev_id_string(id, model, ATA_ID_PROD_OFS, sizeof(model) - 1); | ||
1718 | ata_dev_id_string(id, fw, ATA_ID_FW_REV_OFS, sizeof(fw) - 1); | ||
1719 | |||
1720 | if (strncmp(model, "Maxtor", 6)) | ||
1721 | return 1; | ||
1722 | if (strncmp(fw, "BANC1G10", 8)) | ||
1723 | return 1; | ||
1724 | |||
1725 | return 0; /* blacklisted */ | ||
1726 | } | ||
1727 | |||
1703 | /** | 1728 | /** |
1704 | * ata_scsiop_mode_sense - Simulate MODE SENSE 6, 10 commands | 1729 | * ata_scsiop_mode_sense - Simulate MODE SENSE 6, 10 commands |
1705 | * @args: device IDENTIFY data / SCSI command of interest. | 1730 | * @args: device IDENTIFY data / SCSI command of interest. |
@@ -1797,7 +1822,7 @@ unsigned int ata_scsiop_mode_sense(struct ata_scsi_args *args, u8 *rbuf, | |||
1797 | return 0; | 1822 | return 0; |
1798 | 1823 | ||
1799 | dpofua = 0; | 1824 | dpofua = 0; |
1800 | if (ata_id_has_fua(args->id) && dev->flags & ATA_DFLAG_LBA48 && | 1825 | if (ata_dev_supports_fua(args->id) && dev->flags & ATA_DFLAG_LBA48 && |
1801 | (!(dev->flags & ATA_DFLAG_PIO) || dev->multi_count)) | 1826 | (!(dev->flags & ATA_DFLAG_PIO) || dev->multi_count)) |
1802 | dpofua = 1 << 4; | 1827 | dpofua = 1 << 4; |
1803 | 1828 | ||
diff --git a/drivers/serial/21285.c b/drivers/serial/21285.c index 221999bcf8fe..7aef7518b0d1 100644 --- a/drivers/serial/21285.c +++ b/drivers/serial/21285.c | |||
@@ -366,7 +366,7 @@ static struct uart_port serial21285_port = { | |||
366 | .irq = NO_IRQ, | 366 | .irq = NO_IRQ, |
367 | .fifosize = 16, | 367 | .fifosize = 16, |
368 | .ops = &serial21285_ops, | 368 | .ops = &serial21285_ops, |
369 | .flags = ASYNC_BOOT_AUTOCONF, | 369 | .flags = UPF_BOOT_AUTOCONF, |
370 | }; | 370 | }; |
371 | 371 | ||
372 | static void serial21285_setup_ports(void) | 372 | static void serial21285_setup_ports(void) |
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index bc36edff2058..179c1f065e60 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <linux/init.h> | 31 | #include <linux/init.h> |
32 | #include <linux/console.h> | 32 | #include <linux/console.h> |
33 | #include <linux/sysrq.h> | 33 | #include <linux/sysrq.h> |
34 | #include <linux/mca.h> | ||
35 | #include <linux/delay.h> | 34 | #include <linux/delay.h> |
36 | #include <linux/platform_device.h> | 35 | #include <linux/platform_device.h> |
37 | #include <linux/tty.h> | 36 | #include <linux/tty.h> |
@@ -2027,12 +2026,6 @@ static void serial8250_config_port(struct uart_port *port, int flags) | |||
2027 | int ret; | 2026 | int ret; |
2028 | 2027 | ||
2029 | /* | 2028 | /* |
2030 | * Don't probe for MCA ports on non-MCA machines. | ||
2031 | */ | ||
2032 | if (up->port.flags & UPF_BOOT_ONLYMCA && !MCA_bus) | ||
2033 | return; | ||
2034 | |||
2035 | /* | ||
2036 | * Find the region that we can probe for. This in turn | 2029 | * Find the region that we can probe for. This in turn |
2037 | * tells us whether we can probe for the type of port. | 2030 | * tells us whether we can probe for the type of port. |
2038 | */ | 2031 | */ |
@@ -2164,7 +2157,7 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev) | |||
2164 | /* | 2157 | /* |
2165 | * Wait for transmitter & holding register to empty | 2158 | * Wait for transmitter & holding register to empty |
2166 | */ | 2159 | */ |
2167 | static inline void wait_for_xmitr(struct uart_8250_port *up) | 2160 | static inline void wait_for_xmitr(struct uart_8250_port *up, int bits) |
2168 | { | 2161 | { |
2169 | unsigned int status, tmout = 10000; | 2162 | unsigned int status, tmout = 10000; |
2170 | 2163 | ||
@@ -2178,7 +2171,7 @@ static inline void wait_for_xmitr(struct uart_8250_port *up) | |||
2178 | if (--tmout == 0) | 2171 | if (--tmout == 0) |
2179 | break; | 2172 | break; |
2180 | udelay(1); | 2173 | udelay(1); |
2181 | } while ((status & BOTH_EMPTY) != BOTH_EMPTY); | 2174 | } while ((status & bits) != bits); |
2182 | 2175 | ||
2183 | /* Wait up to 1s for flow control if necessary */ | 2176 | /* Wait up to 1s for flow control if necessary */ |
2184 | if (up->port.flags & UPF_CONS_FLOW) { | 2177 | if (up->port.flags & UPF_CONS_FLOW) { |
@@ -2218,7 +2211,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) | |||
2218 | * Now, do each character | 2211 | * Now, do each character |
2219 | */ | 2212 | */ |
2220 | for (i = 0; i < count; i++, s++) { | 2213 | for (i = 0; i < count; i++, s++) { |
2221 | wait_for_xmitr(up); | 2214 | wait_for_xmitr(up, UART_LSR_THRE); |
2222 | 2215 | ||
2223 | /* | 2216 | /* |
2224 | * Send the character out. | 2217 | * Send the character out. |
@@ -2226,7 +2219,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) | |||
2226 | */ | 2219 | */ |
2227 | serial_out(up, UART_TX, *s); | 2220 | serial_out(up, UART_TX, *s); |
2228 | if (*s == 10) { | 2221 | if (*s == 10) { |
2229 | wait_for_xmitr(up); | 2222 | wait_for_xmitr(up, UART_LSR_THRE); |
2230 | serial_out(up, UART_TX, 13); | 2223 | serial_out(up, UART_TX, 13); |
2231 | } | 2224 | } |
2232 | } | 2225 | } |
@@ -2235,8 +2228,8 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) | |||
2235 | * Finally, wait for transmitter to become empty | 2228 | * Finally, wait for transmitter to become empty |
2236 | * and restore the IER | 2229 | * and restore the IER |
2237 | */ | 2230 | */ |
2238 | wait_for_xmitr(up); | 2231 | wait_for_xmitr(up, BOTH_EMPTY); |
2239 | serial_out(up, UART_IER, ier); | 2232 | serial_out(up, UART_IER, ier | UART_IER_THRI); |
2240 | } | 2233 | } |
2241 | 2234 | ||
2242 | static int serial8250_console_setup(struct console *co, char *options) | 2235 | static int serial8250_console_setup(struct console *co, char *options) |
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 9fd1925de361..0d38f0f2ae29 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -23,7 +23,7 @@ config SERIAL_8250 | |||
23 | work.) | 23 | work.) |
24 | 24 | ||
25 | To compile this driver as a module, choose M here: the | 25 | To compile this driver as a module, choose M here: the |
26 | module will be called serial. | 26 | module will be called 8250. |
27 | [WARNING: Do not compile this driver as a module if you are using | 27 | [WARNING: Do not compile this driver as a module if you are using |
28 | non-standard serial ports, since the configuration information will | 28 | non-standard serial ports, since the configuration information will |
29 | be lost when the driver is unloaded. This limitation may be lifted | 29 | be lost when the driver is unloaded. This limitation may be lifted |
diff --git a/drivers/serial/amba-pl010.c b/drivers/serial/amba-pl010.c index 3490022e9fdc..429de2723a1c 100644 --- a/drivers/serial/amba-pl010.c +++ b/drivers/serial/amba-pl010.c | |||
@@ -566,7 +566,7 @@ static struct uart_amba_port amba_ports[UART_NR] = { | |||
566 | .uartclk = 14745600, | 566 | .uartclk = 14745600, |
567 | .fifosize = 16, | 567 | .fifosize = 16, |
568 | .ops = &amba_pl010_pops, | 568 | .ops = &amba_pl010_pops, |
569 | .flags = ASYNC_BOOT_AUTOCONF, | 569 | .flags = UPF_BOOT_AUTOCONF, |
570 | .line = 0, | 570 | .line = 0, |
571 | }, | 571 | }, |
572 | .dtr_mask = 1 << 5, | 572 | .dtr_mask = 1 << 5, |
@@ -581,7 +581,7 @@ static struct uart_amba_port amba_ports[UART_NR] = { | |||
581 | .uartclk = 14745600, | 581 | .uartclk = 14745600, |
582 | .fifosize = 16, | 582 | .fifosize = 16, |
583 | .ops = &amba_pl010_pops, | 583 | .ops = &amba_pl010_pops, |
584 | .flags = ASYNC_BOOT_AUTOCONF, | 584 | .flags = UPF_BOOT_AUTOCONF, |
585 | .line = 1, | 585 | .line = 1, |
586 | }, | 586 | }, |
587 | .dtr_mask = 1 << 7, | 587 | .dtr_mask = 1 << 7, |
diff --git a/drivers/serial/clps711x.c b/drivers/serial/clps711x.c index 8ef999481f93..ce7b2e4ecd17 100644 --- a/drivers/serial/clps711x.c +++ b/drivers/serial/clps711x.c | |||
@@ -410,7 +410,7 @@ static struct uart_port clps711x_ports[UART_NR] = { | |||
410 | .fifosize = 16, | 410 | .fifosize = 16, |
411 | .ops = &clps711x_pops, | 411 | .ops = &clps711x_pops, |
412 | .line = 0, | 412 | .line = 0, |
413 | .flags = ASYNC_BOOT_AUTOCONF, | 413 | .flags = UPF_BOOT_AUTOCONF, |
414 | }, | 414 | }, |
415 | { | 415 | { |
416 | .iobase = SYSCON2, | 416 | .iobase = SYSCON2, |
@@ -419,7 +419,7 @@ static struct uart_port clps711x_ports[UART_NR] = { | |||
419 | .fifosize = 16, | 419 | .fifosize = 16, |
420 | .ops = &clps711x_pops, | 420 | .ops = &clps711x_pops, |
421 | .line = 1, | 421 | .line = 1, |
422 | .flags = ASYNC_BOOT_AUTOCONF, | 422 | .flags = UPF_BOOT_AUTOCONF, |
423 | } | 423 | } |
424 | }; | 424 | }; |
425 | 425 | ||
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 587cc6a95114..858048efe1ed 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -402,10 +402,10 @@ static int imx_startup(struct uart_port *port) | |||
402 | DRIVER_NAME, sport); | 402 | DRIVER_NAME, sport); |
403 | if (retval) goto error_out2; | 403 | if (retval) goto error_out2; |
404 | 404 | ||
405 | retval = request_irq(sport->rtsirq, imx_rtsint, 0, | 405 | retval = request_irq(sport->rtsirq, imx_rtsint, |
406 | SA_TRIGGER_FALLING | SA_TRIGGER_RISING, | ||
406 | DRIVER_NAME, sport); | 407 | DRIVER_NAME, sport); |
407 | if (retval) goto error_out3; | 408 | if (retval) goto error_out3; |
408 | set_irq_type(sport->rtsirq, IRQT_BOTHEDGE); | ||
409 | 409 | ||
410 | /* | 410 | /* |
411 | * Finally, clear and enable interrupts | 411 | * Finally, clear and enable interrupts |
@@ -674,7 +674,7 @@ static struct imx_port imx_ports[] = { | |||
674 | .irq = UART1_MINT_RX, | 674 | .irq = UART1_MINT_RX, |
675 | .uartclk = 16000000, | 675 | .uartclk = 16000000, |
676 | .fifosize = 8, | 676 | .fifosize = 8, |
677 | .flags = ASYNC_BOOT_AUTOCONF, | 677 | .flags = UPF_BOOT_AUTOCONF, |
678 | .ops = &imx_pops, | 678 | .ops = &imx_pops, |
679 | .line = 0, | 679 | .line = 0, |
680 | }, | 680 | }, |
@@ -690,7 +690,7 @@ static struct imx_port imx_ports[] = { | |||
690 | .irq = UART2_MINT_RX, | 690 | .irq = UART2_MINT_RX, |
691 | .uartclk = 16000000, | 691 | .uartclk = 16000000, |
692 | .fifosize = 8, | 692 | .fifosize = 8, |
693 | .flags = ASYNC_BOOT_AUTOCONF, | 693 | .flags = UPF_BOOT_AUTOCONF, |
694 | .ops = &imx_pops, | 694 | .ops = &imx_pops, |
695 | .line = 1, | 695 | .line = 1, |
696 | }, | 696 | }, |
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c index eb4883efb7c6..0a2dd6c5b95f 100644 --- a/drivers/serial/s3c2410.c +++ b/drivers/serial/s3c2410.c | |||
@@ -1060,7 +1060,7 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport, | |||
1060 | dbg("resource %p (%lx..%lx)\n", res, res->start, res->end); | 1060 | dbg("resource %p (%lx..%lx)\n", res, res->start, res->end); |
1061 | 1061 | ||
1062 | port->mapbase = res->start; | 1062 | port->mapbase = res->start; |
1063 | port->membase = S3C24XX_VA_UART + (res->start - S3C2410_PA_UART); | 1063 | port->membase = S3C24XX_VA_UART + (res->start - S3C24XX_PA_UART); |
1064 | port->irq = platform_get_irq(platdev, 0); | 1064 | port->irq = platform_get_irq(platdev, 0); |
1065 | 1065 | ||
1066 | ourport->clk = clk_get(&platdev->dev, "uart"); | 1066 | ourport->clk = clk_get(&platdev->dev, "uart"); |
diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c index 1bd93168f504..ff7b60b4de37 100644 --- a/drivers/serial/sa1100.c +++ b/drivers/serial/sa1100.c | |||
@@ -665,21 +665,21 @@ void __init sa1100_register_uart(int idx, int port) | |||
665 | sa1100_ports[idx].port.membase = (void __iomem *)&Ser1UTCR0; | 665 | sa1100_ports[idx].port.membase = (void __iomem *)&Ser1UTCR0; |
666 | sa1100_ports[idx].port.mapbase = _Ser1UTCR0; | 666 | sa1100_ports[idx].port.mapbase = _Ser1UTCR0; |
667 | sa1100_ports[idx].port.irq = IRQ_Ser1UART; | 667 | sa1100_ports[idx].port.irq = IRQ_Ser1UART; |
668 | sa1100_ports[idx].port.flags = ASYNC_BOOT_AUTOCONF; | 668 | sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF; |
669 | break; | 669 | break; |
670 | 670 | ||
671 | case 2: | 671 | case 2: |
672 | sa1100_ports[idx].port.membase = (void __iomem *)&Ser2UTCR0; | 672 | sa1100_ports[idx].port.membase = (void __iomem *)&Ser2UTCR0; |
673 | sa1100_ports[idx].port.mapbase = _Ser2UTCR0; | 673 | sa1100_ports[idx].port.mapbase = _Ser2UTCR0; |
674 | sa1100_ports[idx].port.irq = IRQ_Ser2ICP; | 674 | sa1100_ports[idx].port.irq = IRQ_Ser2ICP; |
675 | sa1100_ports[idx].port.flags = ASYNC_BOOT_AUTOCONF; | 675 | sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF; |
676 | break; | 676 | break; |
677 | 677 | ||
678 | case 3: | 678 | case 3: |
679 | sa1100_ports[idx].port.membase = (void __iomem *)&Ser3UTCR0; | 679 | sa1100_ports[idx].port.membase = (void __iomem *)&Ser3UTCR0; |
680 | sa1100_ports[idx].port.mapbase = _Ser3UTCR0; | 680 | sa1100_ports[idx].port.mapbase = _Ser3UTCR0; |
681 | sa1100_ports[idx].port.irq = IRQ_Ser3UART; | 681 | sa1100_ports[idx].port.irq = IRQ_Ser3UART; |
682 | sa1100_ports[idx].port.flags = ASYNC_BOOT_AUTOCONF; | 682 | sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF; |
683 | break; | 683 | break; |
684 | 684 | ||
685 | default: | 685 | default: |
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index 943770470b9d..0717abfdae06 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c | |||
@@ -332,7 +332,7 @@ uart_get_baud_rate(struct uart_port *port, struct termios *termios, | |||
332 | struct termios *old, unsigned int min, unsigned int max) | 332 | struct termios *old, unsigned int min, unsigned int max) |
333 | { | 333 | { |
334 | unsigned int try, baud, altbaud = 38400; | 334 | unsigned int try, baud, altbaud = 38400; |
335 | unsigned int flags = port->flags & UPF_SPD_MASK; | 335 | upf_t flags = port->flags & UPF_SPD_MASK; |
336 | 336 | ||
337 | if (flags == UPF_SPD_HI) | 337 | if (flags == UPF_SPD_HI) |
338 | altbaud = 57600; | 338 | altbaud = 57600; |
@@ -615,8 +615,9 @@ static int uart_set_info(struct uart_state *state, | |||
615 | struct serial_struct new_serial; | 615 | struct serial_struct new_serial; |
616 | struct uart_port *port = state->port; | 616 | struct uart_port *port = state->port; |
617 | unsigned long new_port; | 617 | unsigned long new_port; |
618 | unsigned int change_irq, change_port, old_flags, closing_wait; | 618 | unsigned int change_irq, change_port, closing_wait; |
619 | unsigned int old_custom_divisor, close_delay; | 619 | unsigned int old_custom_divisor, close_delay; |
620 | upf_t old_flags, new_flags; | ||
620 | int retval = 0; | 621 | int retval = 0; |
621 | 622 | ||
622 | if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) | 623 | if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) |
@@ -655,6 +656,7 @@ static int uart_set_info(struct uart_state *state, | |||
655 | new_serial.type != port->type; | 656 | new_serial.type != port->type; |
656 | 657 | ||
657 | old_flags = port->flags; | 658 | old_flags = port->flags; |
659 | new_flags = new_serial.flags; | ||
658 | old_custom_divisor = port->custom_divisor; | 660 | old_custom_divisor = port->custom_divisor; |
659 | 661 | ||
660 | if (!capable(CAP_SYS_ADMIN)) { | 662 | if (!capable(CAP_SYS_ADMIN)) { |
@@ -664,10 +666,10 @@ static int uart_set_info(struct uart_state *state, | |||
664 | (close_delay != state->close_delay) || | 666 | (close_delay != state->close_delay) || |
665 | (closing_wait != state->closing_wait) || | 667 | (closing_wait != state->closing_wait) || |
666 | (new_serial.xmit_fifo_size != port->fifosize) || | 668 | (new_serial.xmit_fifo_size != port->fifosize) || |
667 | (((new_serial.flags ^ old_flags) & ~UPF_USR_MASK) != 0)) | 669 | (((new_flags ^ old_flags) & ~UPF_USR_MASK) != 0)) |
668 | goto exit; | 670 | goto exit; |
669 | port->flags = ((port->flags & ~UPF_USR_MASK) | | 671 | port->flags = ((port->flags & ~UPF_USR_MASK) | |
670 | (new_serial.flags & UPF_USR_MASK)); | 672 | (new_flags & UPF_USR_MASK)); |
671 | port->custom_divisor = new_serial.custom_divisor; | 673 | port->custom_divisor = new_serial.custom_divisor; |
672 | goto check_and_exit; | 674 | goto check_and_exit; |
673 | } | 675 | } |
@@ -764,7 +766,7 @@ static int uart_set_info(struct uart_state *state, | |||
764 | port->irq = new_serial.irq; | 766 | port->irq = new_serial.irq; |
765 | port->uartclk = new_serial.baud_base * 16; | 767 | port->uartclk = new_serial.baud_base * 16; |
766 | port->flags = (port->flags & ~UPF_CHANGE_MASK) | | 768 | port->flags = (port->flags & ~UPF_CHANGE_MASK) | |
767 | (new_serial.flags & UPF_CHANGE_MASK); | 769 | (new_flags & UPF_CHANGE_MASK); |
768 | port->custom_divisor = new_serial.custom_divisor; | 770 | port->custom_divisor = new_serial.custom_divisor; |
769 | state->close_delay = close_delay; | 771 | state->close_delay = close_delay; |
770 | state->closing_wait = closing_wait; | 772 | state->closing_wait = closing_wait; |
@@ -1870,7 +1872,7 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *port) | |||
1870 | mutex_lock(&state->mutex); | 1872 | mutex_lock(&state->mutex); |
1871 | 1873 | ||
1872 | if (state->info && state->info->flags & UIF_INITIALIZED) { | 1874 | if (state->info && state->info->flags & UIF_INITIALIZED) { |
1873 | struct uart_ops *ops = port->ops; | 1875 | const struct uart_ops *ops = port->ops; |
1874 | 1876 | ||
1875 | spin_lock_irq(&port->lock); | 1877 | spin_lock_irq(&port->lock); |
1876 | ops->stop_tx(port); | 1878 | ops->stop_tx(port); |
@@ -1932,7 +1934,7 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *port) | |||
1932 | } | 1934 | } |
1933 | 1935 | ||
1934 | if (state->info && state->info->flags & UIF_INITIALIZED) { | 1936 | if (state->info && state->info->flags & UIF_INITIALIZED) { |
1935 | struct uart_ops *ops = port->ops; | 1937 | const struct uart_ops *ops = port->ops; |
1936 | int ret; | 1938 | int ret; |
1937 | 1939 | ||
1938 | ops->set_mctrl(port, 0); | 1940 | ops->set_mctrl(port, 0); |
diff --git a/drivers/serial/serial_lh7a40x.c b/drivers/serial/serial_lh7a40x.c index d4a1f0e798c1..d0490f67f597 100644 --- a/drivers/serial/serial_lh7a40x.c +++ b/drivers/serial/serial_lh7a40x.c | |||
@@ -506,7 +506,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = { | |||
506 | .uartclk = 14745600/2, | 506 | .uartclk = 14745600/2, |
507 | .fifosize = 16, | 507 | .fifosize = 16, |
508 | .ops = &lh7a40x_uart_ops, | 508 | .ops = &lh7a40x_uart_ops, |
509 | .flags = ASYNC_BOOT_AUTOCONF, | 509 | .flags = UPF_BOOT_AUTOCONF, |
510 | .line = 0, | 510 | .line = 0, |
511 | }, | 511 | }, |
512 | }, | 512 | }, |
@@ -519,7 +519,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = { | |||
519 | .uartclk = 14745600/2, | 519 | .uartclk = 14745600/2, |
520 | .fifosize = 16, | 520 | .fifosize = 16, |
521 | .ops = &lh7a40x_uart_ops, | 521 | .ops = &lh7a40x_uart_ops, |
522 | .flags = ASYNC_BOOT_AUTOCONF, | 522 | .flags = UPF_BOOT_AUTOCONF, |
523 | .line = 1, | 523 | .line = 1, |
524 | }, | 524 | }, |
525 | }, | 525 | }, |
@@ -532,7 +532,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = { | |||
532 | .uartclk = 14745600/2, | 532 | .uartclk = 14745600/2, |
533 | .fifosize = 16, | 533 | .fifosize = 16, |
534 | .ops = &lh7a40x_uart_ops, | 534 | .ops = &lh7a40x_uart_ops, |
535 | .flags = ASYNC_BOOT_AUTOCONF, | 535 | .flags = UPF_BOOT_AUTOCONF, |
536 | .line = 2, | 536 | .line = 2, |
537 | }, | 537 | }, |
538 | }, | 538 | }, |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index a9e070759628..0111206327ca 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -1113,10 +1113,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1113 | .port = { | 1113 | .port = { |
1114 | .membase = (void *)0xfffffe80, | 1114 | .membase = (void *)0xfffffe80, |
1115 | .mapbase = 0xfffffe80, | 1115 | .mapbase = 0xfffffe80, |
1116 | .iotype = SERIAL_IO_MEM, | 1116 | .iotype = UPIO_MEM, |
1117 | .irq = 25, | 1117 | .irq = 25, |
1118 | .ops = &sci_uart_ops, | 1118 | .ops = &sci_uart_ops, |
1119 | .flags = ASYNC_BOOT_AUTOCONF, | 1119 | .flags = UPF_BOOT_AUTOCONF, |
1120 | .line = 0, | 1120 | .line = 0, |
1121 | }, | 1121 | }, |
1122 | .type = PORT_SCI, | 1122 | .type = PORT_SCI, |
@@ -1128,10 +1128,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1128 | .port = { | 1128 | .port = { |
1129 | .membase = (void *)SCIF0, | 1129 | .membase = (void *)SCIF0, |
1130 | .mapbase = SCIF0, | 1130 | .mapbase = SCIF0, |
1131 | .iotype = SERIAL_IO_MEM, | 1131 | .iotype = UPIO_MEM, |
1132 | .irq = 55, | 1132 | .irq = 55, |
1133 | .ops = &sci_uart_ops, | 1133 | .ops = &sci_uart_ops, |
1134 | .flags = ASYNC_BOOT_AUTOCONF, | 1134 | .flags = UPF_BOOT_AUTOCONF, |
1135 | .line = 0, | 1135 | .line = 0, |
1136 | }, | 1136 | }, |
1137 | .type = PORT_SCIF, | 1137 | .type = PORT_SCIF, |
@@ -1142,10 +1142,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1142 | .port = { | 1142 | .port = { |
1143 | .membase = (void *)SCIF2, | 1143 | .membase = (void *)SCIF2, |
1144 | .mapbase = SCIF2, | 1144 | .mapbase = SCIF2, |
1145 | .iotype = SERIAL_IO_MEM, | 1145 | .iotype = UPIO_MEM, |
1146 | .irq = 59, | 1146 | .irq = 59, |
1147 | .ops = &sci_uart_ops, | 1147 | .ops = &sci_uart_ops, |
1148 | .flags = ASYNC_BOOT_AUTOCONF, | 1148 | .flags = UPF_BOOT_AUTOCONF, |
1149 | .line = 1, | 1149 | .line = 1, |
1150 | }, | 1150 | }, |
1151 | .type = PORT_SCIF, | 1151 | .type = PORT_SCIF, |
@@ -1157,10 +1157,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1157 | .port = { | 1157 | .port = { |
1158 | .membase = (void *)0xfffffe80, | 1158 | .membase = (void *)0xfffffe80, |
1159 | .mapbase = 0xfffffe80, | 1159 | .mapbase = 0xfffffe80, |
1160 | .iotype = SERIAL_IO_MEM, | 1160 | .iotype = UPIO_MEM, |
1161 | .irq = 25, | 1161 | .irq = 25, |
1162 | .ops = &sci_uart_ops, | 1162 | .ops = &sci_uart_ops, |
1163 | .flags = ASYNC_BOOT_AUTOCONF, | 1163 | .flags = UPF_BOOT_AUTOCONF, |
1164 | .line = 0, | 1164 | .line = 0, |
1165 | }, | 1165 | }, |
1166 | .type = PORT_SCI, | 1166 | .type = PORT_SCI, |
@@ -1171,10 +1171,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1171 | .port = { | 1171 | .port = { |
1172 | .membase = (void *)0xa4000150, | 1172 | .membase = (void *)0xa4000150, |
1173 | .mapbase = 0xa4000150, | 1173 | .mapbase = 0xa4000150, |
1174 | .iotype = SERIAL_IO_MEM, | 1174 | .iotype = UPIO_MEM, |
1175 | .irq = 59, | 1175 | .irq = 59, |
1176 | .ops = &sci_uart_ops, | 1176 | .ops = &sci_uart_ops, |
1177 | .flags = ASYNC_BOOT_AUTOCONF, | 1177 | .flags = UPF_BOOT_AUTOCONF, |
1178 | .line = 1, | 1178 | .line = 1, |
1179 | }, | 1179 | }, |
1180 | .type = PORT_SCIF, | 1180 | .type = PORT_SCIF, |
@@ -1185,10 +1185,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1185 | .port = { | 1185 | .port = { |
1186 | .membase = (void *)0xa4000140, | 1186 | .membase = (void *)0xa4000140, |
1187 | .mapbase = 0xa4000140, | 1187 | .mapbase = 0xa4000140, |
1188 | .iotype = SERIAL_IO_MEM, | 1188 | .iotype = UPIO_MEM, |
1189 | .irq = 55, | 1189 | .irq = 55, |
1190 | .ops = &sci_uart_ops, | 1190 | .ops = &sci_uart_ops, |
1191 | .flags = ASYNC_BOOT_AUTOCONF, | 1191 | .flags = UPF_BOOT_AUTOCONF, |
1192 | .line = 2, | 1192 | .line = 2, |
1193 | }, | 1193 | }, |
1194 | .type = PORT_IRDA, | 1194 | .type = PORT_IRDA, |
@@ -1200,10 +1200,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1200 | .port = { | 1200 | .port = { |
1201 | .membase = (void *)0xA4430000, | 1201 | .membase = (void *)0xA4430000, |
1202 | .mapbase = 0xA4430000, | 1202 | .mapbase = 0xA4430000, |
1203 | .iotype = SERIAL_IO_MEM, | 1203 | .iotype = UPIO_MEM, |
1204 | .irq = 25, | 1204 | .irq = 25, |
1205 | .ops = &sci_uart_ops, | 1205 | .ops = &sci_uart_ops, |
1206 | .flags = ASYNC_BOOT_AUTOCONF, | 1206 | .flags = UPF_BOOT_AUTOCONF, |
1207 | .line = 0, | 1207 | .line = 0, |
1208 | }, | 1208 | }, |
1209 | .type = PORT_SCIF, | 1209 | .type = PORT_SCIF, |
@@ -1215,10 +1215,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1215 | .port = { | 1215 | .port = { |
1216 | .membase = (void *)0xffe00000, | 1216 | .membase = (void *)0xffe00000, |
1217 | .mapbase = 0xffe00000, | 1217 | .mapbase = 0xffe00000, |
1218 | .iotype = SERIAL_IO_MEM, | 1218 | .iotype = UPIO_MEM, |
1219 | .irq = 25, | 1219 | .irq = 25, |
1220 | .ops = &sci_uart_ops, | 1220 | .ops = &sci_uart_ops, |
1221 | .flags = ASYNC_BOOT_AUTOCONF, | 1221 | .flags = UPF_BOOT_AUTOCONF, |
1222 | .line = 0, | 1222 | .line = 0, |
1223 | }, | 1223 | }, |
1224 | .type = PORT_SCIF, | 1224 | .type = PORT_SCIF, |
@@ -1230,10 +1230,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1230 | .port = { | 1230 | .port = { |
1231 | .membase = (void *)0xffe80000, | 1231 | .membase = (void *)0xffe80000, |
1232 | .mapbase = 0xffe80000, | 1232 | .mapbase = 0xffe80000, |
1233 | .iotype = SERIAL_IO_MEM, | 1233 | .iotype = UPIO_MEM, |
1234 | .irq = 43, | 1234 | .irq = 43, |
1235 | .ops = &sci_uart_ops, | 1235 | .ops = &sci_uart_ops, |
1236 | .flags = ASYNC_BOOT_AUTOCONF, | 1236 | .flags = UPF_BOOT_AUTOCONF, |
1237 | .line = 0, | 1237 | .line = 0, |
1238 | }, | 1238 | }, |
1239 | .type = PORT_SCIF, | 1239 | .type = PORT_SCIF, |
@@ -1245,10 +1245,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1245 | .port = { | 1245 | .port = { |
1246 | .membase = (void *)0xffe00000, | 1246 | .membase = (void *)0xffe00000, |
1247 | .mapbase = 0xffe00000, | 1247 | .mapbase = 0xffe00000, |
1248 | .iotype = SERIAL_IO_MEM, | 1248 | .iotype = UPIO_MEM, |
1249 | .irq = 25, | 1249 | .irq = 25, |
1250 | .ops = &sci_uart_ops, | 1250 | .ops = &sci_uart_ops, |
1251 | .flags = ASYNC_BOOT_AUTOCONF, | 1251 | .flags = UPF_BOOT_AUTOCONF, |
1252 | .line = 0, | 1252 | .line = 0, |
1253 | }, | 1253 | }, |
1254 | .type = PORT_SCI, | 1254 | .type = PORT_SCI, |
@@ -1259,10 +1259,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1259 | .port = { | 1259 | .port = { |
1260 | .membase = (void *)0xffe80000, | 1260 | .membase = (void *)0xffe80000, |
1261 | .mapbase = 0xffe80000, | 1261 | .mapbase = 0xffe80000, |
1262 | .iotype = SERIAL_IO_MEM, | 1262 | .iotype = UPIO_MEM, |
1263 | .irq = 43, | 1263 | .irq = 43, |
1264 | .ops = &sci_uart_ops, | 1264 | .ops = &sci_uart_ops, |
1265 | .flags = ASYNC_BOOT_AUTOCONF, | 1265 | .flags = UPF_BOOT_AUTOCONF, |
1266 | .line = 1, | 1266 | .line = 1, |
1267 | }, | 1267 | }, |
1268 | .type = PORT_SCIF, | 1268 | .type = PORT_SCIF, |
@@ -1274,10 +1274,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1274 | .port = { | 1274 | .port = { |
1275 | .membase = (void *)0xfe600000, | 1275 | .membase = (void *)0xfe600000, |
1276 | .mapbase = 0xfe600000, | 1276 | .mapbase = 0xfe600000, |
1277 | .iotype = SERIAL_IO_MEM, | 1277 | .iotype = UPIO_MEM, |
1278 | .irq = 55, | 1278 | .irq = 55, |
1279 | .ops = &sci_uart_ops, | 1279 | .ops = &sci_uart_ops, |
1280 | .flags = ASYNC_BOOT_AUTOCONF, | 1280 | .flags = UPF_BOOT_AUTOCONF, |
1281 | .line = 0, | 1281 | .line = 0, |
1282 | }, | 1282 | }, |
1283 | .type = PORT_SCIF, | 1283 | .type = PORT_SCIF, |
@@ -1288,10 +1288,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1288 | .port = { | 1288 | .port = { |
1289 | .membase = (void *)0xfe610000, | 1289 | .membase = (void *)0xfe610000, |
1290 | .mapbase = 0xfe610000, | 1290 | .mapbase = 0xfe610000, |
1291 | .iotype = SERIAL_IO_MEM, | 1291 | .iotype = UPIO_MEM, |
1292 | .irq = 75, | 1292 | .irq = 75, |
1293 | .ops = &sci_uart_ops, | 1293 | .ops = &sci_uart_ops, |
1294 | .flags = ASYNC_BOOT_AUTOCONF, | 1294 | .flags = UPF_BOOT_AUTOCONF, |
1295 | .line = 1, | 1295 | .line = 1, |
1296 | }, | 1296 | }, |
1297 | .type = PORT_SCIF, | 1297 | .type = PORT_SCIF, |
@@ -1302,10 +1302,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1302 | .port = { | 1302 | .port = { |
1303 | .membase = (void *)0xfe620000, | 1303 | .membase = (void *)0xfe620000, |
1304 | .mapbase = 0xfe620000, | 1304 | .mapbase = 0xfe620000, |
1305 | .iotype = SERIAL_IO_MEM, | 1305 | .iotype = UPIO_MEM, |
1306 | .irq = 79, | 1306 | .irq = 79, |
1307 | .ops = &sci_uart_ops, | 1307 | .ops = &sci_uart_ops, |
1308 | .flags = ASYNC_BOOT_AUTOCONF, | 1308 | .flags = UPF_BOOT_AUTOCONF, |
1309 | .line = 2, | 1309 | .line = 2, |
1310 | }, | 1310 | }, |
1311 | .type = PORT_SCIF, | 1311 | .type = PORT_SCIF, |
@@ -1317,10 +1317,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1317 | .port = { | 1317 | .port = { |
1318 | .membase = (void *)0xffe80000, | 1318 | .membase = (void *)0xffe80000, |
1319 | .mapbase = 0xffe80000, | 1319 | .mapbase = 0xffe80000, |
1320 | .iotype = SERIAL_IO_MEM, | 1320 | .iotype = UPIO_MEM, |
1321 | .irq = 43, | 1321 | .irq = 43, |
1322 | .ops = &sci_uart_ops, | 1322 | .ops = &sci_uart_ops, |
1323 | .flags = ASYNC_BOOT_AUTOCONF, | 1323 | .flags = UPF_BOOT_AUTOCONF, |
1324 | .line = 0, | 1324 | .line = 0, |
1325 | }, | 1325 | }, |
1326 | .type = PORT_SCIF, | 1326 | .type = PORT_SCIF, |
@@ -1332,10 +1332,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1332 | .port = { | 1332 | .port = { |
1333 | .membase = (void *)0xffe00000, | 1333 | .membase = (void *)0xffe00000, |
1334 | .mapbase = 0xffe00000, | 1334 | .mapbase = 0xffe00000, |
1335 | .iotype = SERIAL_IO_MEM, | 1335 | .iotype = UPIO_MEM, |
1336 | .irq = 26, | 1336 | .irq = 26, |
1337 | .ops = &sci_uart_ops, | 1337 | .ops = &sci_uart_ops, |
1338 | .flags = ASYNC_BOOT_AUTOCONF, | 1338 | .flags = UPF_BOOT_AUTOCONF, |
1339 | .line = 0, | 1339 | .line = 0, |
1340 | }, | 1340 | }, |
1341 | .type = PORT_SCIF, | 1341 | .type = PORT_SCIF, |
@@ -1346,10 +1346,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1346 | .port = { | 1346 | .port = { |
1347 | .membase = (void *)0xffe80000, | 1347 | .membase = (void *)0xffe80000, |
1348 | .mapbase = 0xffe80000, | 1348 | .mapbase = 0xffe80000, |
1349 | .iotype = SERIAL_IO_MEM, | 1349 | .iotype = UPIO_MEM, |
1350 | .irq = 43, | 1350 | .irq = 43, |
1351 | .ops = &sci_uart_ops, | 1351 | .ops = &sci_uart_ops, |
1352 | .flags = ASYNC_BOOT_AUTOCONF, | 1352 | .flags = UPF_BOOT_AUTOCONF, |
1353 | .line = 1, | 1353 | .line = 1, |
1354 | }, | 1354 | }, |
1355 | .type = PORT_SCIF, | 1355 | .type = PORT_SCIF, |
@@ -1359,10 +1359,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1359 | #elif defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103) | 1359 | #elif defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103) |
1360 | { | 1360 | { |
1361 | .port = { | 1361 | .port = { |
1362 | .iotype = SERIAL_IO_MEM, | 1362 | .iotype = UPIO_MEM, |
1363 | .irq = 42, | 1363 | .irq = 42, |
1364 | .ops = &sci_uart_ops, | 1364 | .ops = &sci_uart_ops, |
1365 | .flags = ASYNC_BOOT_AUTOCONF, | 1365 | .flags = UPF_BOOT_AUTOCONF, |
1366 | .line = 0, | 1366 | .line = 0, |
1367 | }, | 1367 | }, |
1368 | .type = PORT_SCIF, | 1368 | .type = PORT_SCIF, |
@@ -1374,10 +1374,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1374 | .port = { | 1374 | .port = { |
1375 | .membase = (void *)0x00ffffb0, | 1375 | .membase = (void *)0x00ffffb0, |
1376 | .mapbase = 0x00ffffb0, | 1376 | .mapbase = 0x00ffffb0, |
1377 | .iotype = SERIAL_IO_MEM, | 1377 | .iotype = UPIO_MEM, |
1378 | .irq = 54, | 1378 | .irq = 54, |
1379 | .ops = &sci_uart_ops, | 1379 | .ops = &sci_uart_ops, |
1380 | .flags = ASYNC_BOOT_AUTOCONF, | 1380 | .flags = UPF_BOOT_AUTOCONF, |
1381 | .line = 0, | 1381 | .line = 0, |
1382 | }, | 1382 | }, |
1383 | .type = PORT_SCI, | 1383 | .type = PORT_SCI, |
@@ -1388,10 +1388,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1388 | .port = { | 1388 | .port = { |
1389 | .membase = (void *)0x00ffffb8, | 1389 | .membase = (void *)0x00ffffb8, |
1390 | .mapbase = 0x00ffffb8, | 1390 | .mapbase = 0x00ffffb8, |
1391 | .iotype = SERIAL_IO_MEM, | 1391 | .iotype = UPIO_MEM, |
1392 | .irq = 58, | 1392 | .irq = 58, |
1393 | .ops = &sci_uart_ops, | 1393 | .ops = &sci_uart_ops, |
1394 | .flags = ASYNC_BOOT_AUTOCONF, | 1394 | .flags = UPF_BOOT_AUTOCONF, |
1395 | .line = 1, | 1395 | .line = 1, |
1396 | }, | 1396 | }, |
1397 | .type = PORT_SCI, | 1397 | .type = PORT_SCI, |
@@ -1402,10 +1402,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1402 | .port = { | 1402 | .port = { |
1403 | .membase = (void *)0x00ffffc0, | 1403 | .membase = (void *)0x00ffffc0, |
1404 | .mapbase = 0x00ffffc0, | 1404 | .mapbase = 0x00ffffc0, |
1405 | .iotype = SERIAL_IO_MEM, | 1405 | .iotype = UPIO_MEM, |
1406 | .irq = 62, | 1406 | .irq = 62, |
1407 | .ops = &sci_uart_ops, | 1407 | .ops = &sci_uart_ops, |
1408 | .flags = ASYNC_BOOT_AUTOCONF, | 1408 | .flags = UPF_BOOT_AUTOCONF, |
1409 | .line = 2, | 1409 | .line = 2, |
1410 | }, | 1410 | }, |
1411 | .type = PORT_SCI, | 1411 | .type = PORT_SCI, |
@@ -1417,10 +1417,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1417 | .port = { | 1417 | .port = { |
1418 | .membase = (void *)0x00ffff78, | 1418 | .membase = (void *)0x00ffff78, |
1419 | .mapbase = 0x00ffff78, | 1419 | .mapbase = 0x00ffff78, |
1420 | .iotype = SERIAL_IO_MEM, | 1420 | .iotype = UPIO_MEM, |
1421 | .irq = 90, | 1421 | .irq = 90, |
1422 | .ops = &sci_uart_ops, | 1422 | .ops = &sci_uart_ops, |
1423 | .flags = ASYNC_BOOT_AUTOCONF, | 1423 | .flags = UPF_BOOT_AUTOCONF, |
1424 | .line = 0, | 1424 | .line = 0, |
1425 | }, | 1425 | }, |
1426 | .type = PORT_SCI, | 1426 | .type = PORT_SCI, |
@@ -1431,10 +1431,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1431 | .port = { | 1431 | .port = { |
1432 | .membase = (void *)0x00ffff80, | 1432 | .membase = (void *)0x00ffff80, |
1433 | .mapbase = 0x00ffff80, | 1433 | .mapbase = 0x00ffff80, |
1434 | .iotype = SERIAL_IO_MEM, | 1434 | .iotype = UPIO_MEM, |
1435 | .irq = 94, | 1435 | .irq = 94, |
1436 | .ops = &sci_uart_ops, | 1436 | .ops = &sci_uart_ops, |
1437 | .flags = ASYNC_BOOT_AUTOCONF, | 1437 | .flags = UPF_BOOT_AUTOCONF, |
1438 | .line = 1, | 1438 | .line = 1, |
1439 | }, | 1439 | }, |
1440 | .type = PORT_SCI, | 1440 | .type = PORT_SCI, |
@@ -1445,10 +1445,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = { | |||
1445 | .port = { | 1445 | .port = { |
1446 | .membase = (void *)0x00ffff88, | 1446 | .membase = (void *)0x00ffff88, |
1447 | .mapbase = 0x00ffff88, | 1447 | .mapbase = 0x00ffff88, |
1448 | .iotype = SERIAL_IO_MEM, | 1448 | .iotype = UPIO_MEM, |
1449 | .irq = 98, | 1449 | .irq = 98, |
1450 | .ops = &sci_uart_ops, | 1450 | .ops = &sci_uart_ops, |
1451 | .flags = ASYNC_BOOT_AUTOCONF, | 1451 | .flags = UPF_BOOT_AUTOCONF, |
1452 | .line = 2, | 1452 | .line = 2, |
1453 | }, | 1453 | }, |
1454 | .type = PORT_SCI, | 1454 | .type = PORT_SCI, |
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c index 9a3665b34d97..bc67442c6b4c 100644 --- a/drivers/serial/sunsu.c +++ b/drivers/serial/sunsu.c | |||
@@ -669,7 +669,7 @@ static int sunsu_startup(struct uart_port *port) | |||
669 | * if it is, then bail out, because there's likely no UART | 669 | * if it is, then bail out, because there's likely no UART |
670 | * here. | 670 | * here. |
671 | */ | 671 | */ |
672 | if (!(up->port.flags & ASYNC_BUGGY_UART) && | 672 | if (!(up->port.flags & UPF_BUGGY_UART) && |
673 | (serial_inp(up, UART_LSR) == 0xff)) { | 673 | (serial_inp(up, UART_LSR) == 0xff)) { |
674 | printk("ttyS%d: LSR safety check engaged!\n", up->port.line); | 674 | printk("ttyS%d: LSR safety check engaged!\n", up->port.line); |
675 | return -ENODEV; | 675 | return -ENODEV; |
@@ -707,7 +707,7 @@ static int sunsu_startup(struct uart_port *port) | |||
707 | up->ier = UART_IER_RLSI | UART_IER_RDI; | 707 | up->ier = UART_IER_RLSI | UART_IER_RDI; |
708 | serial_outp(up, UART_IER, up->ier); | 708 | serial_outp(up, UART_IER, up->ier); |
709 | 709 | ||
710 | if (up->port.flags & ASYNC_FOURPORT) { | 710 | if (up->port.flags & UPF_FOURPORT) { |
711 | unsigned int icp; | 711 | unsigned int icp; |
712 | /* | 712 | /* |
713 | * Enable interrupts on the AST Fourport board | 713 | * Enable interrupts on the AST Fourport board |
@@ -740,7 +740,7 @@ static void sunsu_shutdown(struct uart_port *port) | |||
740 | serial_outp(up, UART_IER, 0); | 740 | serial_outp(up, UART_IER, 0); |
741 | 741 | ||
742 | spin_lock_irqsave(&up->port.lock, flags); | 742 | spin_lock_irqsave(&up->port.lock, flags); |
743 | if (up->port.flags & ASYNC_FOURPORT) { | 743 | if (up->port.flags & UPF_FOURPORT) { |
744 | /* reset interrupts on the AST Fourport board */ | 744 | /* reset interrupts on the AST Fourport board */ |
745 | inb((up->port.iobase & 0xfe0) | 0x1f); | 745 | inb((up->port.iobase & 0xfe0) | 0x1f); |
746 | up->port.mctrl |= TIOCM_OUT1; | 746 | up->port.mctrl |= TIOCM_OUT1; |
@@ -1132,7 +1132,7 @@ ebus_done: | |||
1132 | 1132 | ||
1133 | spin_lock_irqsave(&up->port.lock, flags); | 1133 | spin_lock_irqsave(&up->port.lock, flags); |
1134 | 1134 | ||
1135 | if (!(up->port.flags & ASYNC_BUGGY_UART)) { | 1135 | if (!(up->port.flags & UPF_BUGGY_UART)) { |
1136 | /* | 1136 | /* |
1137 | * Do a simple existence test first; if we fail this, there's | 1137 | * Do a simple existence test first; if we fail this, there's |
1138 | * no point trying anything else. | 1138 | * no point trying anything else. |
@@ -1170,7 +1170,7 @@ ebus_done: | |||
1170 | * manufacturer would be stupid enough to design a board | 1170 | * manufacturer would be stupid enough to design a board |
1171 | * that conflicts with COM 1-4 --- we hope! | 1171 | * that conflicts with COM 1-4 --- we hope! |
1172 | */ | 1172 | */ |
1173 | if (!(up->port.flags & ASYNC_SKIP_TEST)) { | 1173 | if (!(up->port.flags & UPF_SKIP_TEST)) { |
1174 | serial_outp(up, UART_MCR, UART_MCR_LOOP | 0x0A); | 1174 | serial_outp(up, UART_MCR, UART_MCR_LOOP | 0x0A); |
1175 | status1 = serial_inp(up, UART_MSR) & 0xF0; | 1175 | status1 = serial_inp(up, UART_MSR) & 0xF0; |
1176 | serial_outp(up, UART_MCR, save_mcr); | 1176 | serial_outp(up, UART_MCR, save_mcr); |
@@ -1371,7 +1371,7 @@ static __inline__ void wait_for_xmitr(struct uart_sunsu_port *up) | |||
1371 | } while ((status & BOTH_EMPTY) != BOTH_EMPTY); | 1371 | } while ((status & BOTH_EMPTY) != BOTH_EMPTY); |
1372 | 1372 | ||
1373 | /* Wait up to 1s for flow control if necessary */ | 1373 | /* Wait up to 1s for flow control if necessary */ |
1374 | if (up->port.flags & ASYNC_CONS_FLOW) { | 1374 | if (up->port.flags & UPF_CONS_FLOW) { |
1375 | tmout = 1000000; | 1375 | tmout = 1000000; |
1376 | while (--tmout && | 1376 | while (--tmout && |
1377 | ((serial_in(up, UART_MSR) & UART_MSR_CTS) == 0)) | 1377 | ((serial_in(up, UART_MSR) & UART_MSR_CTS) == 0)) |
@@ -1513,7 +1513,7 @@ static int __init sunsu_serial_init(void) | |||
1513 | up->su_type == SU_PORT_KBD) | 1513 | up->su_type == SU_PORT_KBD) |
1514 | continue; | 1514 | continue; |
1515 | 1515 | ||
1516 | up->port.flags |= ASYNC_BOOT_AUTOCONF; | 1516 | up->port.flags |= UPF_BOOT_AUTOCONF; |
1517 | up->port.type = PORT_UNKNOWN; | 1517 | up->port.type = PORT_UNKNOWN; |
1518 | up->port.uartclk = (SU_BASE_BAUD * 16); | 1518 | up->port.uartclk = (SU_BASE_BAUD * 16); |
1519 | 1519 | ||
diff --git a/drivers/video/amba-clcd.c b/drivers/video/amba-clcd.c index b2187175d03f..6761b68c35e9 100644 --- a/drivers/video/amba-clcd.c +++ b/drivers/video/amba-clcd.c | |||
@@ -116,9 +116,10 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var) | |||
116 | int ret = 0; | 116 | int ret = 0; |
117 | 117 | ||
118 | memset(&var->transp, 0, sizeof(var->transp)); | 118 | memset(&var->transp, 0, sizeof(var->transp)); |
119 | memset(&var->red, 0, sizeof(var->red)); | 119 | |
120 | memset(&var->green, 0, sizeof(var->green)); | 120 | var->red.msb_right = 0; |
121 | memset(&var->blue, 0, sizeof(var->blue)); | 121 | var->green.msb_right = 0; |
122 | var->blue.msb_right = 0; | ||
122 | 123 | ||
123 | switch (var->bits_per_pixel) { | 124 | switch (var->bits_per_pixel) { |
124 | case 1: | 125 | case 1: |
@@ -133,34 +134,20 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var) | |||
133 | var->blue.offset = 0; | 134 | var->blue.offset = 0; |
134 | break; | 135 | break; |
135 | case 16: | 136 | case 16: |
136 | var->red.length = 5; | 137 | var->red.length = 5; |
137 | var->green.length = 6; | 138 | var->blue.length = 5; |
138 | var->blue.length = 5; | 139 | /* |
139 | if (fb->panel->cntl & CNTL_BGR) { | 140 | * Green length can be 5 or 6 depending whether |
140 | var->red.offset = 11; | 141 | * we're operating in RGB555 or RGB565 mode. |
141 | var->green.offset = 5; | 142 | */ |
142 | var->blue.offset = 0; | 143 | if (var->green.length != 5 && var->green.length != 6) |
143 | } else { | 144 | var->green.length = 6; |
144 | var->red.offset = 0; | ||
145 | var->green.offset = 5; | ||
146 | var->blue.offset = 11; | ||
147 | } | ||
148 | break; | 145 | break; |
149 | case 32: | 146 | case 32: |
150 | if (fb->panel->cntl & CNTL_LCDTFT) { | 147 | if (fb->panel->cntl & CNTL_LCDTFT) { |
151 | var->red.length = 8; | 148 | var->red.length = 8; |
152 | var->green.length = 8; | 149 | var->green.length = 8; |
153 | var->blue.length = 8; | 150 | var->blue.length = 8; |
154 | |||
155 | if (fb->panel->cntl & CNTL_BGR) { | ||
156 | var->red.offset = 16; | ||
157 | var->green.offset = 8; | ||
158 | var->blue.offset = 0; | ||
159 | } else { | ||
160 | var->red.offset = 0; | ||
161 | var->green.offset = 8; | ||
162 | var->blue.offset = 16; | ||
163 | } | ||
164 | break; | 151 | break; |
165 | } | 152 | } |
166 | default: | 153 | default: |
@@ -168,6 +155,23 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var) | |||
168 | break; | 155 | break; |
169 | } | 156 | } |
170 | 157 | ||
158 | /* | ||
159 | * >= 16bpp displays have separate colour component bitfields | ||
160 | * encoded in the pixel data. Calculate their position from | ||
161 | * the bitfield length defined above. | ||
162 | */ | ||
163 | if (ret == 0 && var->bits_per_pixel >= 16) { | ||
164 | if (fb->panel->cntl & CNTL_BGR) { | ||
165 | var->blue.offset = 0; | ||
166 | var->green.offset = var->blue.offset + var->blue.length; | ||
167 | var->red.offset = var->green.offset + var->green.length; | ||
168 | } else { | ||
169 | var->red.offset = 0; | ||
170 | var->green.offset = var->red.offset + var->red.length; | ||
171 | var->blue.offset = var->green.offset + var->green.length; | ||
172 | } | ||
173 | } | ||
174 | |||
171 | return ret; | 175 | return ret; |
172 | } | 176 | } |
173 | 177 | ||
@@ -411,6 +411,7 @@ static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page | |||
411 | 411 | ||
412 | /** | 412 | /** |
413 | * bio_add_pc_page - attempt to add page to bio | 413 | * bio_add_pc_page - attempt to add page to bio |
414 | * @q: the target queue | ||
414 | * @bio: destination bio | 415 | * @bio: destination bio |
415 | * @page: page to add | 416 | * @page: page to add |
416 | * @len: vec entry length | 417 | * @len: vec entry length |
diff --git a/include/asm-arm/arch-s3c2410/debug-macro.S b/include/asm-arm/arch-s3c2410/debug-macro.S index abfbe45cd17c..5f8223e700d3 100644 --- a/include/asm-arm/arch-s3c2410/debug-macro.S +++ b/include/asm-arm/arch-s3c2410/debug-macro.S | |||
@@ -25,7 +25,7 @@ | |||
25 | .macro addruart, rx | 25 | .macro addruart, rx |
26 | mrc p15, 0, \rx, c1, c0 | 26 | mrc p15, 0, \rx, c1, c0 |
27 | tst \rx, #1 | 27 | tst \rx, #1 |
28 | ldreq \rx, = S3C2410_PA_UART | 28 | ldreq \rx, = S3C24XX_PA_UART |
29 | ldrne \rx, = S3C24XX_VA_UART | 29 | ldrne \rx, = S3C24XX_VA_UART |
30 | #if CONFIG_DEBUG_S3C2410_UART != 0 | 30 | #if CONFIG_DEBUG_S3C2410_UART != 0 |
31 | add \rx, \rx, #(S3C2410_UART1_OFF * CONFIG_DEBUG_S3C2410_UART) | 31 | add \rx, \rx, #(S3C2410_UART1_OFF * CONFIG_DEBUG_S3C2410_UART) |
@@ -44,7 +44,7 @@ | |||
44 | 1003: | 44 | 1003: |
45 | mrc p15, 0, \rd, c1, c0 | 45 | mrc p15, 0, \rd, c1, c0 |
46 | tst \rd, #1 | 46 | tst \rd, #1 |
47 | addeq \rd, \rx, #(S3C2410_PA_GPIO - S3C2410_PA_UART) | 47 | addeq \rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART) |
48 | addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART) | 48 | addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART) |
49 | bic \rd, \rd, #0xff000 | 49 | bic \rd, \rd, #0xff000 |
50 | ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] | 50 | ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] |
@@ -75,7 +75,7 @@ | |||
75 | 1003: | 75 | 1003: |
76 | mrc p15, 0, \rd, c1, c0 | 76 | mrc p15, 0, \rd, c1, c0 |
77 | tst \rd, #1 | 77 | tst \rd, #1 |
78 | addeq \rd, \rx, #(S3C2410_PA_GPIO - S3C2410_PA_UART) | 78 | addeq \rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART) |
79 | addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART) | 79 | addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART) |
80 | bic \rd, \rd, #0xff000 | 80 | bic \rd, \rd, #0xff000 |
81 | ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] | 81 | ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] |
diff --git a/include/asm-arm/arch-s3c2410/map.h b/include/asm-arm/arch-s3c2410/map.h index 1833ea5c4220..c380d264a847 100644 --- a/include/asm-arm/arch-s3c2410/map.h +++ b/include/asm-arm/arch-s3c2410/map.h | |||
@@ -14,6 +14,7 @@ | |||
14 | * 06-Jan-2003 BJD Linux 2.6.0 version, moved bast specifics out | 14 | * 06-Jan-2003 BJD Linux 2.6.0 version, moved bast specifics out |
15 | * 10-Feb-2005 BJD Added CAMIF definition from guillaume.gourat@nexvision.tv | 15 | * 10-Feb-2005 BJD Added CAMIF definition from guillaume.gourat@nexvision.tv |
16 | * 10-Mar-2005 LCVR Added support to S3C2400, changed {VA,SZ} names | 16 | * 10-Mar-2005 LCVR Added support to S3C2400, changed {VA,SZ} names |
17 | * 15-Jan-2006 LCVR Added S3C24XX_PA macros for common S3C24XX resources | ||
17 | */ | 18 | */ |
18 | 19 | ||
19 | #ifndef __ASM_ARCH_MAP_H | 20 | #ifndef __ASM_ARCH_MAP_H |
@@ -188,5 +189,42 @@ | |||
188 | 189 | ||
189 | #define S3C2400_SDRAM_PA (S3C2400_CS6) | 190 | #define S3C2400_SDRAM_PA (S3C2400_CS6) |
190 | 191 | ||
192 | /* Use a single interface for common resources between S3C24XX cpus */ | ||
193 | |||
194 | #ifdef CONFIG_CPU_S3C2400 | ||
195 | #define S3C24XX_PA_IRQ S3C2400_PA_IRQ | ||
196 | #define S3C24XX_PA_MEMCTRL S3C2400_PA_MEMCTRL | ||
197 | #define S3C24XX_PA_USBHOST S3C2400_PA_USBHOST | ||
198 | #define S3C24XX_PA_DMA S3C2400_PA_DMA | ||
199 | #define S3C24XX_PA_CLKPWR S3C2400_PA_CLKPWR | ||
200 | #define S3C24XX_PA_LCD S3C2400_PA_LCD | ||
201 | #define S3C24XX_PA_UART S3C2400_PA_UART | ||
202 | #define S3C24XX_PA_TIMER S3C2400_PA_TIMER | ||
203 | #define S3C24XX_PA_USBDEV S3C2400_PA_USBDEV | ||
204 | #define S3C24XX_PA_WATCHDOG S3C2400_PA_WATCHDOG | ||
205 | #define S3C24XX_PA_IIC S3C2400_PA_IIC | ||
206 | #define S3C24XX_PA_IIS S3C2400_PA_IIS | ||
207 | #define S3C24XX_PA_GPIO S3C2400_PA_GPIO | ||
208 | #define S3C24XX_PA_RTC S3C2400_PA_RTC | ||
209 | #define S3C24XX_PA_ADC S3C2400_PA_ADC | ||
210 | #define S3C24XX_PA_SPI S3C2400_PA_SPI | ||
211 | #else | ||
212 | #define S3C24XX_PA_IRQ S3C2410_PA_IRQ | ||
213 | #define S3C24XX_PA_MEMCTRL S3C2410_PA_MEMCTRL | ||
214 | #define S3C24XX_PA_USBHOST S3C2410_PA_USBHOST | ||
215 | #define S3C24XX_PA_DMA S3C2410_PA_DMA | ||
216 | #define S3C24XX_PA_CLKPWR S3C2410_PA_CLKPWR | ||
217 | #define S3C24XX_PA_LCD S3C2410_PA_LCD | ||
218 | #define S3C24XX_PA_UART S3C2410_PA_UART | ||
219 | #define S3C24XX_PA_TIMER S3C2410_PA_TIMER | ||
220 | #define S3C24XX_PA_USBDEV S3C2410_PA_USBDEV | ||
221 | #define S3C24XX_PA_WATCHDOG S3C2410_PA_WATCHDOG | ||
222 | #define S3C24XX_PA_IIC S3C2410_PA_IIC | ||
223 | #define S3C24XX_PA_IIS S3C2410_PA_IIS | ||
224 | #define S3C24XX_PA_GPIO S3C2410_PA_GPIO | ||
225 | #define S3C24XX_PA_RTC S3C2410_PA_RTC | ||
226 | #define S3C24XX_PA_ADC S3C2410_PA_ADC | ||
227 | #define S3C24XX_PA_SPI S3C2410_PA_SPI | ||
228 | #endif | ||
191 | 229 | ||
192 | #endif /* __ASM_ARCH_MAP_H */ | 230 | #endif /* __ASM_ARCH_MAP_H */ |
diff --git a/include/asm-arm/arch-s3c2410/regs-serial.h b/include/asm-arm/arch-s3c2410/regs-serial.h index ce1bbbaad6d3..83b01254c4ac 100644 --- a/include/asm-arm/arch-s3c2410/regs-serial.h +++ b/include/asm-arm/arch-s3c2410/regs-serial.h | |||
@@ -39,9 +39,9 @@ | |||
39 | #define S3C24XX_VA_UART1 (S3C24XX_VA_UART + 0x4000 ) | 39 | #define S3C24XX_VA_UART1 (S3C24XX_VA_UART + 0x4000 ) |
40 | #define S3C24XX_VA_UART2 (S3C24XX_VA_UART + 0x8000 ) | 40 | #define S3C24XX_VA_UART2 (S3C24XX_VA_UART + 0x8000 ) |
41 | 41 | ||
42 | #define S3C2410_PA_UART0 (S3C2410_PA_UART) | 42 | #define S3C2410_PA_UART0 (S3C24XX_PA_UART) |
43 | #define S3C2410_PA_UART1 (S3C2410_PA_UART + 0x4000 ) | 43 | #define S3C2410_PA_UART1 (S3C24XX_PA_UART + 0x4000 ) |
44 | #define S3C2410_PA_UART2 (S3C2410_PA_UART + 0x8000 ) | 44 | #define S3C2410_PA_UART2 (S3C24XX_PA_UART + 0x8000 ) |
45 | 45 | ||
46 | #define S3C2410_URXH (0x24) | 46 | #define S3C2410_URXH (0x24) |
47 | #define S3C2410_UTXH (0x20) | 47 | #define S3C2410_UTXH (0x20) |
diff --git a/include/asm-arm/arch-s3c2410/uncompress.h b/include/asm-arm/arch-s3c2410/uncompress.h index ddd1578a7ee0..4367ec054b51 100644 --- a/include/asm-arm/arch-s3c2410/uncompress.h +++ b/include/asm-arm/arch-s3c2410/uncompress.h | |||
@@ -35,13 +35,13 @@ | |||
35 | #undef S3C2410_GPIOREG | 35 | #undef S3C2410_GPIOREG |
36 | #undef S3C2410_WDOGREG | 36 | #undef S3C2410_WDOGREG |
37 | 37 | ||
38 | #define S3C2410_GPIOREG(x) ((S3C2410_PA_GPIO + (x))) | 38 | #define S3C2410_GPIOREG(x) ((S3C24XX_PA_GPIO + (x))) |
39 | #define S3C2410_WDOGREG(x) ((S3C2410_PA_WATCHDOG + (x))) | 39 | #define S3C2410_WDOGREG(x) ((S3C24XX_PA_WATCHDOG + (x))) |
40 | 40 | ||
41 | /* how many bytes we allow into the FIFO at a time in FIFO mode */ | 41 | /* how many bytes we allow into the FIFO at a time in FIFO mode */ |
42 | #define FIFO_MAX (14) | 42 | #define FIFO_MAX (14) |
43 | 43 | ||
44 | #define uart_base S3C2410_PA_UART + (0x4000*CONFIG_S3C2410_LOWLEVEL_UART_PORT) | 44 | #define uart_base S3C24XX_PA_UART + (0x4000*CONFIG_S3C2410_LOWLEVEL_UART_PORT) |
45 | 45 | ||
46 | static __inline__ void | 46 | static __inline__ void |
47 | uart_wr(unsigned int reg, unsigned int val) | 47 | uart_wr(unsigned int reg, unsigned int val) |
diff --git a/include/asm-arm/mach/map.h b/include/asm-arm/mach/map.h index 3351b77fab36..e8ea67c97c73 100644 --- a/include/asm-arm/mach/map.h +++ b/include/asm-arm/mach/map.h | |||
@@ -26,6 +26,7 @@ struct meminfo; | |||
26 | #define MT_MEMORY 5 | 26 | #define MT_MEMORY 5 |
27 | #define MT_ROM 6 | 27 | #define MT_ROM 6 |
28 | #define MT_IXP2000_DEVICE 7 | 28 | #define MT_IXP2000_DEVICE 7 |
29 | #define MT_NONSHARED_DEVICE 8 | ||
29 | 30 | ||
30 | extern void create_memmap_holes(struct meminfo *); | 31 | extern void create_memmap_holes(struct meminfo *); |
31 | extern void memtable_init(struct meminfo *); | 32 | extern void memtable_init(struct meminfo *); |
diff --git a/include/asm-arm/pgtable.h b/include/asm-arm/pgtable.h index 5a0d19b466b0..70e00d08345e 100644 --- a/include/asm-arm/pgtable.h +++ b/include/asm-arm/pgtable.h | |||
@@ -168,6 +168,7 @@ extern void __pgd_error(const char *file, int line, unsigned long val); | |||
168 | #define PMD_SECT_WB (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) | 168 | #define PMD_SECT_WB (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) |
169 | #define PMD_SECT_MINICACHE (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE) | 169 | #define PMD_SECT_MINICACHE (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE) |
170 | #define PMD_SECT_WBWA (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) | 170 | #define PMD_SECT_WBWA (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) |
171 | #define PMD_SECT_NONSHARED_DEV (PMD_SECT_TEX(2)) | ||
171 | 172 | ||
172 | /* | 173 | /* |
173 | * - coarse table (not used) | 174 | * - coarse table (not used) |
diff --git a/include/asm-sparc64/spinlock.h b/include/asm-sparc64/spinlock.h index ec85d12d73b9..508c416e9d6a 100644 --- a/include/asm-sparc64/spinlock.h +++ b/include/asm-sparc64/spinlock.h | |||
@@ -131,6 +131,28 @@ static void inline __read_lock(raw_rwlock_t *lock) | |||
131 | : "memory"); | 131 | : "memory"); |
132 | } | 132 | } |
133 | 133 | ||
134 | static int inline __read_trylock(raw_rwlock_t *lock) | ||
135 | { | ||
136 | int tmp1, tmp2; | ||
137 | |||
138 | __asm__ __volatile__ ( | ||
139 | "1: ldsw [%2], %0\n" | ||
140 | " brlz,a,pn %0, 2f\n" | ||
141 | " mov 0, %0\n" | ||
142 | " add %0, 1, %1\n" | ||
143 | " cas [%2], %0, %1\n" | ||
144 | " cmp %0, %1\n" | ||
145 | " membar #StoreLoad | #StoreStore\n" | ||
146 | " bne,pn %%icc, 1b\n" | ||
147 | " mov 1, %0\n" | ||
148 | "2:" | ||
149 | : "=&r" (tmp1), "=&r" (tmp2) | ||
150 | : "r" (lock) | ||
151 | : "memory"); | ||
152 | |||
153 | return tmp1; | ||
154 | } | ||
155 | |||
134 | static void inline __read_unlock(raw_rwlock_t *lock) | 156 | static void inline __read_unlock(raw_rwlock_t *lock) |
135 | { | 157 | { |
136 | unsigned long tmp1, tmp2; | 158 | unsigned long tmp1, tmp2; |
@@ -211,12 +233,12 @@ static int inline __write_trylock(raw_rwlock_t *lock) | |||
211 | } | 233 | } |
212 | 234 | ||
213 | #define __raw_read_lock(p) __read_lock(p) | 235 | #define __raw_read_lock(p) __read_lock(p) |
236 | #define __raw_read_trylock(p) __read_trylock(p) | ||
214 | #define __raw_read_unlock(p) __read_unlock(p) | 237 | #define __raw_read_unlock(p) __read_unlock(p) |
215 | #define __raw_write_lock(p) __write_lock(p) | 238 | #define __raw_write_lock(p) __write_lock(p) |
216 | #define __raw_write_unlock(p) __write_unlock(p) | 239 | #define __raw_write_unlock(p) __write_unlock(p) |
217 | #define __raw_write_trylock(p) __write_trylock(p) | 240 | #define __raw_write_trylock(p) __write_trylock(p) |
218 | 241 | ||
219 | #define __raw_read_trylock(lock) generic__raw_read_trylock(lock) | ||
220 | #define __raw_read_can_lock(rw) (!((rw)->lock & 0x80000000UL)) | 242 | #define __raw_read_can_lock(rw) (!((rw)->lock & 0x80000000UL)) |
221 | #define __raw_write_can_lock(rw) (!(rw)->lock) | 243 | #define __raw_write_can_lock(rw) (!(rw)->lock) |
222 | 244 | ||
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 02a585faa62c..860e7a485a5f 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -392,8 +392,8 @@ struct request_queue | |||
392 | unsigned int nr_congestion_off; | 392 | unsigned int nr_congestion_off; |
393 | unsigned int nr_batching; | 393 | unsigned int nr_batching; |
394 | 394 | ||
395 | unsigned short max_sectors; | 395 | unsigned int max_sectors; |
396 | unsigned short max_hw_sectors; | 396 | unsigned int max_hw_sectors; |
397 | unsigned short max_phys_segments; | 397 | unsigned short max_phys_segments; |
398 | unsigned short max_hw_segments; | 398 | unsigned short max_hw_segments; |
399 | unsigned short hardsect_size; | 399 | unsigned short hardsect_size; |
@@ -697,7 +697,7 @@ extern request_queue_t *blk_init_queue(request_fn_proc *, spinlock_t *); | |||
697 | extern void blk_cleanup_queue(request_queue_t *); | 697 | extern void blk_cleanup_queue(request_queue_t *); |
698 | extern void blk_queue_make_request(request_queue_t *, make_request_fn *); | 698 | extern void blk_queue_make_request(request_queue_t *, make_request_fn *); |
699 | extern void blk_queue_bounce_limit(request_queue_t *, u64); | 699 | extern void blk_queue_bounce_limit(request_queue_t *, u64); |
700 | extern void blk_queue_max_sectors(request_queue_t *, unsigned short); | 700 | extern void blk_queue_max_sectors(request_queue_t *, unsigned int); |
701 | extern void blk_queue_max_phys_segments(request_queue_t *, unsigned short); | 701 | extern void blk_queue_max_phys_segments(request_queue_t *, unsigned short); |
702 | extern void blk_queue_max_hw_segments(request_queue_t *, unsigned short); | 702 | extern void blk_queue_max_hw_segments(request_queue_t *, unsigned short); |
703 | extern void blk_queue_max_segment_size(request_queue_t *, unsigned int); | 703 | extern void blk_queue_max_segment_size(request_queue_t *, unsigned int); |
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index 59ff6c430cf6..6500d4e59d46 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h | |||
@@ -19,7 +19,21 @@ struct xt_get_revision | |||
19 | /* For standard target */ | 19 | /* For standard target */ |
20 | #define XT_RETURN (-NF_REPEAT - 1) | 20 | #define XT_RETURN (-NF_REPEAT - 1) |
21 | 21 | ||
22 | #define XT_ALIGN(s) (((s) + (__alignof__(u_int64_t)-1)) & ~(__alignof__(u_int64_t)-1)) | 22 | /* this is a dummy structure to find out the alignment requirement for a struct |
23 | * containing all the fundamental data types that are used in ipt_entry, | ||
24 | * ip6t_entry and arpt_entry. This sucks, and it is a hack. It will be my | ||
25 | * personal pleasure to remove it -HW | ||
26 | */ | ||
27 | struct _xt_align | ||
28 | { | ||
29 | u_int8_t u8; | ||
30 | u_int16_t u16; | ||
31 | u_int32_t u32; | ||
32 | u_int64_t u64; | ||
33 | }; | ||
34 | |||
35 | #define XT_ALIGN(s) (((s) + (__alignof__(struct _xt_align)-1)) \ | ||
36 | & ~(__alignof__(struct _xt_align)-1)) | ||
23 | 37 | ||
24 | /* Standard return verdict, or do jump. */ | 38 | /* Standard return verdict, or do jump. */ |
25 | #define XT_STANDARD_TARGET "" | 39 | #define XT_STANDARD_TARGET "" |
diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h index cee302aefdb7..73b464f0926a 100644 --- a/include/linux/serial_8250.h +++ b/include/linux/serial_8250.h | |||
@@ -26,7 +26,7 @@ struct plat_serial8250_port { | |||
26 | unsigned char regshift; /* register shift */ | 26 | unsigned char regshift; /* register shift */ |
27 | unsigned char iotype; /* UPIO_* */ | 27 | unsigned char iotype; /* UPIO_* */ |
28 | unsigned char hub6; | 28 | unsigned char hub6; |
29 | unsigned int flags; /* UPF_* flags */ | 29 | upf_t flags; /* UPF_* flags */ |
30 | }; | 30 | }; |
31 | 31 | ||
32 | /* | 32 | /* |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index ec351005bf9d..4041122dabfc 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
@@ -203,6 +203,8 @@ struct uart_icount { | |||
203 | __u32 buf_overrun; | 203 | __u32 buf_overrun; |
204 | }; | 204 | }; |
205 | 205 | ||
206 | typedef unsigned int __bitwise__ upf_t; | ||
207 | |||
206 | struct uart_port { | 208 | struct uart_port { |
207 | spinlock_t lock; /* port lock */ | 209 | spinlock_t lock; /* port lock */ |
208 | unsigned int iobase; /* in/out[bwl] */ | 210 | unsigned int iobase; /* in/out[bwl] */ |
@@ -230,36 +232,34 @@ struct uart_port { | |||
230 | unsigned long sysrq; /* sysrq timeout */ | 232 | unsigned long sysrq; /* sysrq timeout */ |
231 | #endif | 233 | #endif |
232 | 234 | ||
233 | unsigned int flags; | 235 | upf_t flags; |
234 | 236 | ||
235 | #define UPF_FOURPORT (1 << 1) | 237 | #define UPF_FOURPORT ((__force upf_t) (1 << 1)) |
236 | #define UPF_SAK (1 << 2) | 238 | #define UPF_SAK ((__force upf_t) (1 << 2)) |
237 | #define UPF_SPD_MASK (0x1030) | 239 | #define UPF_SPD_MASK ((__force upf_t) (0x1030)) |
238 | #define UPF_SPD_HI (0x0010) | 240 | #define UPF_SPD_HI ((__force upf_t) (0x0010)) |
239 | #define UPF_SPD_VHI (0x0020) | 241 | #define UPF_SPD_VHI ((__force upf_t) (0x0020)) |
240 | #define UPF_SPD_CUST (0x0030) | 242 | #define UPF_SPD_CUST ((__force upf_t) (0x0030)) |
241 | #define UPF_SPD_SHI (0x1000) | 243 | #define UPF_SPD_SHI ((__force upf_t) (0x1000)) |
242 | #define UPF_SPD_WARP (0x1010) | 244 | #define UPF_SPD_WARP ((__force upf_t) (0x1010)) |
243 | #define UPF_SKIP_TEST (1 << 6) | 245 | #define UPF_SKIP_TEST ((__force upf_t) (1 << 6)) |
244 | #define UPF_AUTO_IRQ (1 << 7) | 246 | #define UPF_AUTO_IRQ ((__force upf_t) (1 << 7)) |
245 | #define UPF_HARDPPS_CD (1 << 11) | 247 | #define UPF_HARDPPS_CD ((__force upf_t) (1 << 11)) |
246 | #define UPF_LOW_LATENCY (1 << 13) | 248 | #define UPF_LOW_LATENCY ((__force upf_t) (1 << 13)) |
247 | #define UPF_BUGGY_UART (1 << 14) | 249 | #define UPF_BUGGY_UART ((__force upf_t) (1 << 14)) |
248 | #define UPF_AUTOPROBE (1 << 15) | 250 | #define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16)) |
249 | #define UPF_MAGIC_MULTIPLIER (1 << 16) | 251 | #define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) |
250 | #define UPF_BOOT_ONLYMCA (1 << 22) | 252 | #define UPF_SHARE_IRQ ((__force upf_t) (1 << 24)) |
251 | #define UPF_CONS_FLOW (1 << 23) | 253 | #define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28)) |
252 | #define UPF_SHARE_IRQ (1 << 24) | 254 | #define UPF_IOREMAP ((__force upf_t) (1 << 31)) |
253 | #define UPF_BOOT_AUTOCONF (1 << 28) | 255 | |
254 | #define UPF_IOREMAP (1 << 31) | 256 | #define UPF_CHANGE_MASK ((__force upf_t) (0x17fff)) |
255 | 257 | #define UPF_USR_MASK ((__force upf_t) (UPF_SPD_MASK|UPF_LOW_LATENCY)) | |
256 | #define UPF_CHANGE_MASK (0x17fff) | ||
257 | #define UPF_USR_MASK (UPF_SPD_MASK|UPF_LOW_LATENCY) | ||
258 | 258 | ||
259 | unsigned int mctrl; /* current modem ctrl settings */ | 259 | unsigned int mctrl; /* current modem ctrl settings */ |
260 | unsigned int timeout; /* character-based timeout */ | 260 | unsigned int timeout; /* character-based timeout */ |
261 | unsigned int type; /* port type */ | 261 | unsigned int type; /* port type */ |
262 | struct uart_ops *ops; | 262 | const struct uart_ops *ops; |
263 | unsigned int custom_divisor; | 263 | unsigned int custom_divisor; |
264 | unsigned int line; /* port index */ | 264 | unsigned int line; /* port index */ |
265 | unsigned long mapbase; /* for ioremap */ | 265 | unsigned long mapbase; /* for ioremap */ |
@@ -289,6 +289,9 @@ struct uart_state { | |||
289 | }; | 289 | }; |
290 | 290 | ||
291 | #define UART_XMIT_SIZE PAGE_SIZE | 291 | #define UART_XMIT_SIZE PAGE_SIZE |
292 | |||
293 | typedef unsigned int __bitwise__ uif_t; | ||
294 | |||
292 | /* | 295 | /* |
293 | * This is the state information which is only valid when the port | 296 | * This is the state information which is only valid when the port |
294 | * is open; it may be freed by the core driver once the device has | 297 | * is open; it may be freed by the core driver once the device has |
@@ -298,17 +301,16 @@ struct uart_state { | |||
298 | struct uart_info { | 301 | struct uart_info { |
299 | struct tty_struct *tty; | 302 | struct tty_struct *tty; |
300 | struct circ_buf xmit; | 303 | struct circ_buf xmit; |
301 | unsigned int flags; | 304 | uif_t flags; |
302 | 305 | ||
303 | /* | 306 | /* |
304 | * These are the flags that specific to info->flags, and reflect our | 307 | * Definitions for info->flags. These are _private_ to serial_core, and |
305 | * internal state. They can not be accessed via port->flags. Low | 308 | * are specific to this structure. They may be queried by low level drivers. |
306 | * level drivers must not change these, but may query them instead. | ||
307 | */ | 309 | */ |
308 | #define UIF_CHECK_CD (1 << 25) | 310 | #define UIF_CHECK_CD ((__force uif_t) (1 << 25)) |
309 | #define UIF_CTS_FLOW (1 << 26) | 311 | #define UIF_CTS_FLOW ((__force uif_t) (1 << 26)) |
310 | #define UIF_NORMAL_ACTIVE (1 << 29) | 312 | #define UIF_NORMAL_ACTIVE ((__force uif_t) (1 << 29)) |
311 | #define UIF_INITIALIZED (1 << 31) | 313 | #define UIF_INITIALIZED ((__force uif_t) (1 << 31)) |
312 | 314 | ||
313 | int blocked_open; | 315 | int blocked_open; |
314 | 316 | ||
@@ -430,7 +432,7 @@ static inline int uart_handle_break(struct uart_port *port) | |||
430 | port->sysrq = 0; | 432 | port->sysrq = 0; |
431 | } | 433 | } |
432 | #endif | 434 | #endif |
433 | if (info->flags & UPF_SAK) | 435 | if (port->flags & UPF_SAK) |
434 | do_SAK(info->tty); | 436 | do_SAK(info->tty); |
435 | return 0; | 437 | return 0; |
436 | } | 438 | } |
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h index df05f468fa5c..9a92aef8b0b2 100644 --- a/include/net/ieee80211.h +++ b/include/net/ieee80211.h | |||
@@ -803,9 +803,9 @@ enum ieee80211_state { | |||
803 | #define IEEE80211_24GHZ_MAX_CHANNEL 14 | 803 | #define IEEE80211_24GHZ_MAX_CHANNEL 14 |
804 | #define IEEE80211_24GHZ_CHANNELS 14 | 804 | #define IEEE80211_24GHZ_CHANNELS 14 |
805 | 805 | ||
806 | #define IEEE80211_52GHZ_MIN_CHANNEL 36 | 806 | #define IEEE80211_52GHZ_MIN_CHANNEL 34 |
807 | #define IEEE80211_52GHZ_MAX_CHANNEL 165 | 807 | #define IEEE80211_52GHZ_MAX_CHANNEL 165 |
808 | #define IEEE80211_52GHZ_CHANNELS 32 | 808 | #define IEEE80211_52GHZ_CHANNELS 131 |
809 | 809 | ||
810 | enum { | 810 | enum { |
811 | IEEE80211_CH_PASSIVE_ONLY = (1 << 0), | 811 | IEEE80211_CH_PASSIVE_ONLY = (1 << 0), |
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 467274a764d1..827992949c4b 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -554,7 +554,6 @@ struct Scsi_Host { | |||
554 | /* | 554 | /* |
555 | * ordered write support | 555 | * ordered write support |
556 | */ | 556 | */ |
557 | unsigned ordered_flush:1; | ||
558 | unsigned ordered_tag:1; | 557 | unsigned ordered_tag:1; |
559 | 558 | ||
560 | /* | 559 | /* |
diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c index 773219907dd8..7712912dbc84 100644 --- a/kernel/rcutorture.c +++ b/kernel/rcutorture.c | |||
@@ -114,16 +114,16 @@ rcu_torture_alloc(void) | |||
114 | { | 114 | { |
115 | struct list_head *p; | 115 | struct list_head *p; |
116 | 116 | ||
117 | spin_lock(&rcu_torture_lock); | 117 | spin_lock_bh(&rcu_torture_lock); |
118 | if (list_empty(&rcu_torture_freelist)) { | 118 | if (list_empty(&rcu_torture_freelist)) { |
119 | atomic_inc(&n_rcu_torture_alloc_fail); | 119 | atomic_inc(&n_rcu_torture_alloc_fail); |
120 | spin_unlock(&rcu_torture_lock); | 120 | spin_unlock_bh(&rcu_torture_lock); |
121 | return NULL; | 121 | return NULL; |
122 | } | 122 | } |
123 | atomic_inc(&n_rcu_torture_alloc); | 123 | atomic_inc(&n_rcu_torture_alloc); |
124 | p = rcu_torture_freelist.next; | 124 | p = rcu_torture_freelist.next; |
125 | list_del_init(p); | 125 | list_del_init(p); |
126 | spin_unlock(&rcu_torture_lock); | 126 | spin_unlock_bh(&rcu_torture_lock); |
127 | return container_of(p, struct rcu_torture, rtort_free); | 127 | return container_of(p, struct rcu_torture, rtort_free); |
128 | } | 128 | } |
129 | 129 | ||
@@ -134,9 +134,9 @@ static void | |||
134 | rcu_torture_free(struct rcu_torture *p) | 134 | rcu_torture_free(struct rcu_torture *p) |
135 | { | 135 | { |
136 | atomic_inc(&n_rcu_torture_free); | 136 | atomic_inc(&n_rcu_torture_free); |
137 | spin_lock(&rcu_torture_lock); | 137 | spin_lock_bh(&rcu_torture_lock); |
138 | list_add_tail(&p->rtort_free, &rcu_torture_freelist); | 138 | list_add_tail(&p->rtort_free, &rcu_torture_freelist); |
139 | spin_unlock(&rcu_torture_lock); | 139 | spin_unlock_bh(&rcu_torture_lock); |
140 | } | 140 | } |
141 | 141 | ||
142 | static void | 142 | static void |
diff --git a/kernel/sched.c b/kernel/sched.c index 3ee2ae45125f..ec7fd9cee306 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -5141,7 +5141,7 @@ static void init_sched_build_groups(struct sched_group groups[], cpumask_t span, | |||
5141 | #define SEARCH_SCOPE 2 | 5141 | #define SEARCH_SCOPE 2 |
5142 | #define MIN_CACHE_SIZE (64*1024U) | 5142 | #define MIN_CACHE_SIZE (64*1024U) |
5143 | #define DEFAULT_CACHE_SIZE (5*1024*1024U) | 5143 | #define DEFAULT_CACHE_SIZE (5*1024*1024U) |
5144 | #define ITERATIONS 2 | 5144 | #define ITERATIONS 1 |
5145 | #define SIZE_THRESH 130 | 5145 | #define SIZE_THRESH 130 |
5146 | #define COST_THRESH 130 | 5146 | #define COST_THRESH 130 |
5147 | 5147 | ||
@@ -5480,9 +5480,9 @@ static unsigned long long measure_migration_cost(int cpu1, int cpu2) | |||
5480 | break; | 5480 | break; |
5481 | } | 5481 | } |
5482 | /* | 5482 | /* |
5483 | * Increase the cachesize in 5% steps: | 5483 | * Increase the cachesize in 10% steps: |
5484 | */ | 5484 | */ |
5485 | size = size * 20 / 19; | 5485 | size = size * 10 / 9; |
5486 | } | 5486 | } |
5487 | 5487 | ||
5488 | if (migration_debug) | 5488 | if (migration_debug) |
diff --git a/kernel/time.c b/kernel/time.c index 7477b1d2079e..1f23e683d6aa 100644 --- a/kernel/time.c +++ b/kernel/time.c | |||
@@ -155,7 +155,7 @@ int do_sys_settimeofday(struct timespec *tv, struct timezone *tz) | |||
155 | static int firsttime = 1; | 155 | static int firsttime = 1; |
156 | int error = 0; | 156 | int error = 0; |
157 | 157 | ||
158 | if (!timespec_valid(tv)) | 158 | if (tv && !timespec_valid(tv)) |
159 | return -EINVAL; | 159 | return -EINVAL; |
160 | 160 | ||
161 | error = security_settime(tv, tz); | 161 | error = security_settime(tv, tz); |
diff --git a/kernel/user.c b/kernel/user.c index 89e562feb1b1..d1ae2349347e 100644 --- a/kernel/user.c +++ b/kernel/user.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
14 | #include <linux/bitops.h> | 14 | #include <linux/bitops.h> |
15 | #include <linux/key.h> | 15 | #include <linux/key.h> |
16 | #include <linux/interrupt.h> | ||
16 | 17 | ||
17 | /* | 18 | /* |
18 | * UID task count cache, to get fast user lookup in "alloc_uid" | 19 | * UID task count cache, to get fast user lookup in "alloc_uid" |
@@ -27,6 +28,12 @@ | |||
27 | 28 | ||
28 | static kmem_cache_t *uid_cachep; | 29 | static kmem_cache_t *uid_cachep; |
29 | static struct list_head uidhash_table[UIDHASH_SZ]; | 30 | static struct list_head uidhash_table[UIDHASH_SZ]; |
31 | |||
32 | /* | ||
33 | * The uidhash_lock is mostly taken from process context, but it is | ||
34 | * occasionally also taken from softirq/tasklet context, when | ||
35 | * task-structs get RCU-freed. Hence all locking must be softirq-safe. | ||
36 | */ | ||
30 | static DEFINE_SPINLOCK(uidhash_lock); | 37 | static DEFINE_SPINLOCK(uidhash_lock); |
31 | 38 | ||
32 | struct user_struct root_user = { | 39 | struct user_struct root_user = { |
@@ -83,14 +90,15 @@ struct user_struct *find_user(uid_t uid) | |||
83 | { | 90 | { |
84 | struct user_struct *ret; | 91 | struct user_struct *ret; |
85 | 92 | ||
86 | spin_lock(&uidhash_lock); | 93 | spin_lock_bh(&uidhash_lock); |
87 | ret = uid_hash_find(uid, uidhashentry(uid)); | 94 | ret = uid_hash_find(uid, uidhashentry(uid)); |
88 | spin_unlock(&uidhash_lock); | 95 | spin_unlock_bh(&uidhash_lock); |
89 | return ret; | 96 | return ret; |
90 | } | 97 | } |
91 | 98 | ||
92 | void free_uid(struct user_struct *up) | 99 | void free_uid(struct user_struct *up) |
93 | { | 100 | { |
101 | local_bh_disable(); | ||
94 | if (up && atomic_dec_and_lock(&up->__count, &uidhash_lock)) { | 102 | if (up && atomic_dec_and_lock(&up->__count, &uidhash_lock)) { |
95 | uid_hash_remove(up); | 103 | uid_hash_remove(up); |
96 | key_put(up->uid_keyring); | 104 | key_put(up->uid_keyring); |
@@ -98,6 +106,7 @@ void free_uid(struct user_struct *up) | |||
98 | kmem_cache_free(uid_cachep, up); | 106 | kmem_cache_free(uid_cachep, up); |
99 | spin_unlock(&uidhash_lock); | 107 | spin_unlock(&uidhash_lock); |
100 | } | 108 | } |
109 | local_bh_enable(); | ||
101 | } | 110 | } |
102 | 111 | ||
103 | struct user_struct * alloc_uid(uid_t uid) | 112 | struct user_struct * alloc_uid(uid_t uid) |
@@ -105,9 +114,9 @@ struct user_struct * alloc_uid(uid_t uid) | |||
105 | struct list_head *hashent = uidhashentry(uid); | 114 | struct list_head *hashent = uidhashentry(uid); |
106 | struct user_struct *up; | 115 | struct user_struct *up; |
107 | 116 | ||
108 | spin_lock(&uidhash_lock); | 117 | spin_lock_bh(&uidhash_lock); |
109 | up = uid_hash_find(uid, hashent); | 118 | up = uid_hash_find(uid, hashent); |
110 | spin_unlock(&uidhash_lock); | 119 | spin_unlock_bh(&uidhash_lock); |
111 | 120 | ||
112 | if (!up) { | 121 | if (!up) { |
113 | struct user_struct *new; | 122 | struct user_struct *new; |
@@ -137,7 +146,7 @@ struct user_struct * alloc_uid(uid_t uid) | |||
137 | * Before adding this, check whether we raced | 146 | * Before adding this, check whether we raced |
138 | * on adding the same user already.. | 147 | * on adding the same user already.. |
139 | */ | 148 | */ |
140 | spin_lock(&uidhash_lock); | 149 | spin_lock_bh(&uidhash_lock); |
141 | up = uid_hash_find(uid, hashent); | 150 | up = uid_hash_find(uid, hashent); |
142 | if (up) { | 151 | if (up) { |
143 | key_put(new->uid_keyring); | 152 | key_put(new->uid_keyring); |
@@ -147,7 +156,7 @@ struct user_struct * alloc_uid(uid_t uid) | |||
147 | uid_hash_insert(new, hashent); | 156 | uid_hash_insert(new, hashent); |
148 | up = new; | 157 | up = new; |
149 | } | 158 | } |
150 | spin_unlock(&uidhash_lock); | 159 | spin_unlock_bh(&uidhash_lock); |
151 | 160 | ||
152 | } | 161 | } |
153 | return up; | 162 | return up; |
@@ -183,9 +192,9 @@ static int __init uid_cache_init(void) | |||
183 | INIT_LIST_HEAD(uidhash_table + n); | 192 | INIT_LIST_HEAD(uidhash_table + n); |
184 | 193 | ||
185 | /* Insert the root user immediately (init already runs as root) */ | 194 | /* Insert the root user immediately (init already runs as root) */ |
186 | spin_lock(&uidhash_lock); | 195 | spin_lock_bh(&uidhash_lock); |
187 | uid_hash_insert(&root_user, uidhashentry(0)); | 196 | uid_hash_insert(&root_user, uidhashentry(0)); |
188 | spin_unlock(&uidhash_lock); | 197 | spin_unlock_bh(&uidhash_lock); |
189 | 198 | ||
190 | return 0; | 199 | return 0; |
191 | } | 200 | } |
diff --git a/net/core/dev.c b/net/core/dev.c index fd070a098f20..ffb82073056e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -2543,13 +2543,14 @@ int dev_ioctl(unsigned int cmd, void __user *arg) | |||
2543 | case SIOCBONDENSLAVE: | 2543 | case SIOCBONDENSLAVE: |
2544 | case SIOCBONDRELEASE: | 2544 | case SIOCBONDRELEASE: |
2545 | case SIOCBONDSETHWADDR: | 2545 | case SIOCBONDSETHWADDR: |
2546 | case SIOCBONDSLAVEINFOQUERY: | ||
2547 | case SIOCBONDINFOQUERY: | ||
2548 | case SIOCBONDCHANGEACTIVE: | 2546 | case SIOCBONDCHANGEACTIVE: |
2549 | case SIOCBRADDIF: | 2547 | case SIOCBRADDIF: |
2550 | case SIOCBRDELIF: | 2548 | case SIOCBRDELIF: |
2551 | if (!capable(CAP_NET_ADMIN)) | 2549 | if (!capable(CAP_NET_ADMIN)) |
2552 | return -EPERM; | 2550 | return -EPERM; |
2551 | /* fall through */ | ||
2552 | case SIOCBONDSLAVEINFOQUERY: | ||
2553 | case SIOCBONDINFOQUERY: | ||
2553 | dev_load(ifr.ifr_name); | 2554 | dev_load(ifr.ifr_name); |
2554 | rtnl_lock(); | 2555 | rtnl_lock(); |
2555 | ret = dev_ifsioc(&ifr, cmd); | 2556 | ret = dev_ifsioc(&ifr, cmd); |
diff --git a/net/core/filter.c b/net/core/filter.c index 9540946a48f3..93fbd01d2259 100644 --- a/net/core/filter.c +++ b/net/core/filter.c | |||
@@ -64,7 +64,7 @@ static inline void *load_pointer(struct sk_buff *skb, int k, | |||
64 | } | 64 | } |
65 | 65 | ||
66 | /** | 66 | /** |
67 | * sk_run_filter - run a filter on a socket | 67 | * sk_run_filter - run a filter on a socket |
68 | * @skb: buffer to run the filter on | 68 | * @skb: buffer to run the filter on |
69 | * @filter: filter to apply | 69 | * @filter: filter to apply |
70 | * @flen: length of filter | 70 | * @flen: length of filter |
@@ -78,8 +78,8 @@ unsigned int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int | |||
78 | { | 78 | { |
79 | struct sock_filter *fentry; /* We walk down these */ | 79 | struct sock_filter *fentry; /* We walk down these */ |
80 | void *ptr; | 80 | void *ptr; |
81 | u32 A = 0; /* Accumulator */ | 81 | u32 A = 0; /* Accumulator */ |
82 | u32 X = 0; /* Index Register */ | 82 | u32 X = 0; /* Index Register */ |
83 | u32 mem[BPF_MEMWORDS]; /* Scratch Memory Store */ | 83 | u32 mem[BPF_MEMWORDS]; /* Scratch Memory Store */ |
84 | u32 tmp; | 84 | u32 tmp; |
85 | int k; | 85 | int k; |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index d0732e9c8560..6766f118f070 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -135,13 +135,15 @@ void skb_under_panic(struct sk_buff *skb, int sz, void *here) | |||
135 | struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, | 135 | struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, |
136 | int fclone) | 136 | int fclone) |
137 | { | 137 | { |
138 | kmem_cache_t *cache; | ||
138 | struct skb_shared_info *shinfo; | 139 | struct skb_shared_info *shinfo; |
139 | struct sk_buff *skb; | 140 | struct sk_buff *skb; |
140 | u8 *data; | 141 | u8 *data; |
141 | 142 | ||
143 | cache = fclone ? skbuff_fclone_cache : skbuff_head_cache; | ||
144 | |||
142 | /* Get the HEAD */ | 145 | /* Get the HEAD */ |
143 | skb = kmem_cache_alloc(fclone ? skbuff_fclone_cache : skbuff_head_cache, | 146 | skb = kmem_cache_alloc(cache, gfp_mask & ~__GFP_DMA); |
144 | gfp_mask & ~__GFP_DMA); | ||
145 | if (!skb) | 147 | if (!skb) |
146 | goto out; | 148 | goto out; |
147 | 149 | ||
@@ -180,7 +182,7 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, | |||
180 | out: | 182 | out: |
181 | return skb; | 183 | return skb; |
182 | nodata: | 184 | nodata: |
183 | kmem_cache_free(skbuff_head_cache, skb); | 185 | kmem_cache_free(cache, skb); |
184 | skb = NULL; | 186 | skb = NULL; |
185 | goto out; | 187 | goto out; |
186 | } | 188 | } |
diff --git a/net/ieee80211/ieee80211_rx.c b/net/ieee80211/ieee80211_rx.c index 7a121802faa9..960aa78cdb97 100644 --- a/net/ieee80211/ieee80211_rx.c +++ b/net/ieee80211/ieee80211_rx.c | |||
@@ -350,6 +350,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
350 | u8 src[ETH_ALEN]; | 350 | u8 src[ETH_ALEN]; |
351 | struct ieee80211_crypt_data *crypt = NULL; | 351 | struct ieee80211_crypt_data *crypt = NULL; |
352 | int keyidx = 0; | 352 | int keyidx = 0; |
353 | int can_be_decrypted = 0; | ||
353 | 354 | ||
354 | hdr = (struct ieee80211_hdr_4addr *)skb->data; | 355 | hdr = (struct ieee80211_hdr_4addr *)skb->data; |
355 | stats = &ieee->stats; | 356 | stats = &ieee->stats; |
@@ -410,12 +411,23 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
410 | return 1; | 411 | return 1; |
411 | } | 412 | } |
412 | 413 | ||
413 | if (is_multicast_ether_addr(hdr->addr1) | 414 | can_be_decrypted = (is_multicast_ether_addr(hdr->addr1) || |
414 | ? ieee->host_mc_decrypt : ieee->host_decrypt) { | 415 | is_broadcast_ether_addr(hdr->addr2)) ? |
416 | ieee->host_mc_decrypt : ieee->host_decrypt; | ||
417 | |||
418 | if (can_be_decrypted) { | ||
415 | int idx = 0; | 419 | int idx = 0; |
416 | if (skb->len >= hdrlen + 3) | 420 | if (skb->len >= hdrlen + 3) { |
421 | /* Top two-bits of byte 3 are the key index */ | ||
417 | idx = skb->data[hdrlen + 3] >> 6; | 422 | idx = skb->data[hdrlen + 3] >> 6; |
423 | } | ||
424 | |||
425 | /* ieee->crypt[] is WEP_KEY (4) in length. Given that idx | ||
426 | * is only allowed 2-bits of storage, no value of idx can | ||
427 | * be provided via above code that would result in idx | ||
428 | * being out of range */ | ||
418 | crypt = ieee->crypt[idx]; | 429 | crypt = ieee->crypt[idx]; |
430 | |||
419 | #ifdef NOT_YET | 431 | #ifdef NOT_YET |
420 | sta = NULL; | 432 | sta = NULL; |
421 | 433 | ||
@@ -553,7 +565,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
553 | 565 | ||
554 | /* skb: hdr + (possibly fragmented, possibly encrypted) payload */ | 566 | /* skb: hdr + (possibly fragmented, possibly encrypted) payload */ |
555 | 567 | ||
556 | if (ieee->host_decrypt && (fc & IEEE80211_FCTL_PROTECTED) && | 568 | if ((fc & IEEE80211_FCTL_PROTECTED) && can_be_decrypted && |
557 | (keyidx = ieee80211_rx_frame_decrypt(ieee, skb, crypt)) < 0) | 569 | (keyidx = ieee80211_rx_frame_decrypt(ieee, skb, crypt)) < 0) |
558 | goto rx_dropped; | 570 | goto rx_dropped; |
559 | 571 | ||
@@ -617,7 +629,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
617 | 629 | ||
618 | /* skb: hdr + (possible reassembled) full MSDU payload; possibly still | 630 | /* skb: hdr + (possible reassembled) full MSDU payload; possibly still |
619 | * encrypted/authenticated */ | 631 | * encrypted/authenticated */ |
620 | if (ieee->host_decrypt && (fc & IEEE80211_FCTL_PROTECTED) && | 632 | if ((fc & IEEE80211_FCTL_PROTECTED) && can_be_decrypted && |
621 | ieee80211_rx_frame_decrypt_msdu(ieee, skb, keyidx, crypt)) | 633 | ieee80211_rx_frame_decrypt_msdu(ieee, skb, keyidx, crypt)) |
622 | goto rx_dropped; | 634 | goto rx_dropped; |
623 | 635 | ||
@@ -1439,7 +1451,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee, | |||
1439 | break; | 1451 | break; |
1440 | 1452 | ||
1441 | case IEEE80211_STYPE_PROBE_REQ: | 1453 | case IEEE80211_STYPE_PROBE_REQ: |
1442 | IEEE80211_DEBUG_MGMT("recieved auth (%d)\n", | 1454 | IEEE80211_DEBUG_MGMT("received auth (%d)\n", |
1443 | WLAN_FC_GET_STYPE(le16_to_cpu | 1455 | WLAN_FC_GET_STYPE(le16_to_cpu |
1444 | (header->frame_ctl))); | 1456 | (header->frame_ctl))); |
1445 | 1457 | ||
@@ -1473,7 +1485,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee, | |||
1473 | break; | 1485 | break; |
1474 | case IEEE80211_STYPE_AUTH: | 1486 | case IEEE80211_STYPE_AUTH: |
1475 | 1487 | ||
1476 | IEEE80211_DEBUG_MGMT("recieved auth (%d)\n", | 1488 | IEEE80211_DEBUG_MGMT("received auth (%d)\n", |
1477 | WLAN_FC_GET_STYPE(le16_to_cpu | 1489 | WLAN_FC_GET_STYPE(le16_to_cpu |
1478 | (header->frame_ctl))); | 1490 | (header->frame_ctl))); |
1479 | 1491 | ||
diff --git a/net/ieee80211/ieee80211_wx.c b/net/ieee80211/ieee80211_wx.c index 23e1630f50b7..f87c6b89f845 100644 --- a/net/ieee80211/ieee80211_wx.c +++ b/net/ieee80211/ieee80211_wx.c | |||
@@ -232,15 +232,18 @@ static char *ipw2100_translate_scan(struct ieee80211_device *ieee, | |||
232 | return start; | 232 | return start; |
233 | } | 233 | } |
234 | 234 | ||
235 | #define SCAN_ITEM_SIZE 128 | ||
236 | |||
235 | int ieee80211_wx_get_scan(struct ieee80211_device *ieee, | 237 | int ieee80211_wx_get_scan(struct ieee80211_device *ieee, |
236 | struct iw_request_info *info, | 238 | struct iw_request_info *info, |
237 | union iwreq_data *wrqu, char *extra) | 239 | union iwreq_data *wrqu, char *extra) |
238 | { | 240 | { |
239 | struct ieee80211_network *network; | 241 | struct ieee80211_network *network; |
240 | unsigned long flags; | 242 | unsigned long flags; |
243 | int err = 0; | ||
241 | 244 | ||
242 | char *ev = extra; | 245 | char *ev = extra; |
243 | char *stop = ev + IW_SCAN_MAX_DATA; | 246 | char *stop = ev + wrqu->data.length; |
244 | int i = 0; | 247 | int i = 0; |
245 | 248 | ||
246 | IEEE80211_DEBUG_WX("Getting scan\n"); | 249 | IEEE80211_DEBUG_WX("Getting scan\n"); |
@@ -249,6 +252,11 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee, | |||
249 | 252 | ||
250 | list_for_each_entry(network, &ieee->network_list, list) { | 253 | list_for_each_entry(network, &ieee->network_list, list) { |
251 | i++; | 254 | i++; |
255 | if (stop - ev < SCAN_ITEM_SIZE) { | ||
256 | err = -E2BIG; | ||
257 | break; | ||
258 | } | ||
259 | |||
252 | if (ieee->scan_age == 0 || | 260 | if (ieee->scan_age == 0 || |
253 | time_after(network->last_scanned + ieee->scan_age, jiffies)) | 261 | time_after(network->last_scanned + ieee->scan_age, jiffies)) |
254 | ev = ipw2100_translate_scan(ieee, ev, stop, network); | 262 | ev = ipw2100_translate_scan(ieee, ev, stop, network); |
@@ -270,7 +278,7 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee, | |||
270 | 278 | ||
271 | IEEE80211_DEBUG_WX("exit: %d networks returned.\n", i); | 279 | IEEE80211_DEBUG_WX("exit: %d networks returned.\n", i); |
272 | 280 | ||
273 | return 0; | 281 | return err; |
274 | } | 282 | } |
275 | 283 | ||
276 | int ieee80211_wx_set_encode(struct ieee80211_device *ieee, | 284 | int ieee80211_wx_set_encode(struct ieee80211_device *ieee, |
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c index d8ce7133cd8f..0b4e95f93dad 100644 --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c | |||
@@ -970,7 +970,7 @@ int igmp_rcv(struct sk_buff *skb) | |||
970 | case IGMP_MTRACE_RESP: | 970 | case IGMP_MTRACE_RESP: |
971 | break; | 971 | break; |
972 | default: | 972 | default: |
973 | NETDEBUG(KERN_DEBUG "New IGMP type=%d, why we do not know about it?\n", ih->type); | 973 | break; |
974 | } | 974 | } |
975 | 975 | ||
976 | drop: | 976 | drop: |
diff --git a/net/ipv4/tcp_htcp.c b/net/ipv4/tcp_htcp.c index 3284cfb993e6..128de4d7c0b7 100644 --- a/net/ipv4/tcp_htcp.c +++ b/net/ipv4/tcp_htcp.c | |||
@@ -230,7 +230,6 @@ static void htcp_cong_avoid(struct sock *sk, u32 ack, u32 rtt, | |||
230 | if (tp->snd_cwnd < tp->snd_cwnd_clamp) | 230 | if (tp->snd_cwnd < tp->snd_cwnd_clamp) |
231 | tp->snd_cwnd++; | 231 | tp->snd_cwnd++; |
232 | tp->snd_cwnd_cnt = 0; | 232 | tp->snd_cwnd_cnt = 0; |
233 | ca->ccount++; | ||
234 | } | 233 | } |
235 | } | 234 | } |
236 | } | 235 | } |
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index 6c05c7978bef..4420948a1bfe 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c | |||
@@ -1252,8 +1252,7 @@ int igmp6_event_query(struct sk_buff *skb) | |||
1252 | } | 1252 | } |
1253 | } else { | 1253 | } else { |
1254 | for (ma = idev->mc_list; ma; ma=ma->next) { | 1254 | for (ma = idev->mc_list; ma; ma=ma->next) { |
1255 | if (group_type != IPV6_ADDR_ANY && | 1255 | if (!ipv6_addr_equal(group, &ma->mca_addr)) |
1256 | !ipv6_addr_equal(group, &ma->mca_addr)) | ||
1257 | continue; | 1256 | continue; |
1258 | spin_lock_bh(&ma->mca_lock); | 1257 | spin_lock_bh(&ma->mca_lock); |
1259 | if (ma->mca_flags & MAF_TIMER_RUNNING) { | 1258 | if (ma->mca_flags & MAF_TIMER_RUNNING) { |
@@ -1268,11 +1267,10 @@ int igmp6_event_query(struct sk_buff *skb) | |||
1268 | ma->mca_flags &= ~MAF_GSQUERY; | 1267 | ma->mca_flags &= ~MAF_GSQUERY; |
1269 | } | 1268 | } |
1270 | if (!(ma->mca_flags & MAF_GSQUERY) || | 1269 | if (!(ma->mca_flags & MAF_GSQUERY) || |
1271 | mld_marksources(ma, ntohs(mlh2->nsrcs), mlh2->srcs)) | 1270 | mld_marksources(ma, ntohs(mlh2->nsrcs), mlh2->srcs)) |
1272 | igmp6_group_queried(ma, max_delay); | 1271 | igmp6_group_queried(ma, max_delay); |
1273 | spin_unlock_bh(&ma->mca_lock); | 1272 | spin_unlock_bh(&ma->mca_lock); |
1274 | if (group_type != IPV6_ADDR_ANY) | 1273 | break; |
1275 | break; | ||
1276 | } | 1274 | } |
1277 | } | 1275 | } |
1278 | read_unlock_bh(&idev->lock); | 1276 | read_unlock_bh(&idev->lock); |
@@ -1351,7 +1349,7 @@ static int is_in(struct ifmcaddr6 *pmc, struct ip6_sf_list *psf, int type, | |||
1351 | * in all filters | 1349 | * in all filters |
1352 | */ | 1350 | */ |
1353 | if (psf->sf_count[MCAST_INCLUDE]) | 1351 | if (psf->sf_count[MCAST_INCLUDE]) |
1354 | return 0; | 1352 | return type == MLD2_MODE_IS_INCLUDE; |
1355 | return pmc->mca_sfcount[MCAST_EXCLUDE] == | 1353 | return pmc->mca_sfcount[MCAST_EXCLUDE] == |
1356 | psf->sf_count[MCAST_EXCLUDE]; | 1354 | psf->sf_count[MCAST_EXCLUDE]; |
1357 | } | 1355 | } |
@@ -1966,7 +1964,7 @@ static void sf_markstate(struct ifmcaddr6 *pmc) | |||
1966 | 1964 | ||
1967 | static int sf_setstate(struct ifmcaddr6 *pmc) | 1965 | static int sf_setstate(struct ifmcaddr6 *pmc) |
1968 | { | 1966 | { |
1969 | struct ip6_sf_list *psf; | 1967 | struct ip6_sf_list *psf, *dpsf; |
1970 | int mca_xcount = pmc->mca_sfcount[MCAST_EXCLUDE]; | 1968 | int mca_xcount = pmc->mca_sfcount[MCAST_EXCLUDE]; |
1971 | int qrv = pmc->idev->mc_qrv; | 1969 | int qrv = pmc->idev->mc_qrv; |
1972 | int new_in, rv; | 1970 | int new_in, rv; |
@@ -1978,8 +1976,48 @@ static int sf_setstate(struct ifmcaddr6 *pmc) | |||
1978 | !psf->sf_count[MCAST_INCLUDE]; | 1976 | !psf->sf_count[MCAST_INCLUDE]; |
1979 | } else | 1977 | } else |
1980 | new_in = psf->sf_count[MCAST_INCLUDE] != 0; | 1978 | new_in = psf->sf_count[MCAST_INCLUDE] != 0; |
1981 | if (new_in != psf->sf_oldin) { | 1979 | if (new_in) { |
1982 | psf->sf_crcount = qrv; | 1980 | if (!psf->sf_oldin) { |
1981 | struct ip6_sf_list *prev = 0; | ||
1982 | |||
1983 | for (dpsf=pmc->mca_tomb; dpsf; | ||
1984 | dpsf=dpsf->sf_next) { | ||
1985 | if (ipv6_addr_equal(&dpsf->sf_addr, | ||
1986 | &psf->sf_addr)) | ||
1987 | break; | ||
1988 | prev = dpsf; | ||
1989 | } | ||
1990 | if (dpsf) { | ||
1991 | if (prev) | ||
1992 | prev->sf_next = dpsf->sf_next; | ||
1993 | else | ||
1994 | pmc->mca_tomb = dpsf->sf_next; | ||
1995 | kfree(dpsf); | ||
1996 | } | ||
1997 | psf->sf_crcount = qrv; | ||
1998 | rv++; | ||
1999 | } | ||
2000 | } else if (psf->sf_oldin) { | ||
2001 | psf->sf_crcount = 0; | ||
2002 | /* | ||
2003 | * add or update "delete" records if an active filter | ||
2004 | * is now inactive | ||
2005 | */ | ||
2006 | for (dpsf=pmc->mca_tomb; dpsf; dpsf=dpsf->sf_next) | ||
2007 | if (ipv6_addr_equal(&dpsf->sf_addr, | ||
2008 | &psf->sf_addr)) | ||
2009 | break; | ||
2010 | if (!dpsf) { | ||
2011 | dpsf = (struct ip6_sf_list *) | ||
2012 | kmalloc(sizeof(*dpsf), GFP_ATOMIC); | ||
2013 | if (!dpsf) | ||
2014 | continue; | ||
2015 | *dpsf = *psf; | ||
2016 | /* pmc->mca_lock held by callers */ | ||
2017 | dpsf->sf_next = pmc->mca_tomb; | ||
2018 | pmc->mca_tomb = dpsf; | ||
2019 | } | ||
2020 | dpsf->sf_crcount = qrv; | ||
1983 | rv++; | 2021 | rv++; |
1984 | } | 2022 | } |
1985 | } | 2023 | } |
diff --git a/net/key/af_key.c b/net/key/af_key.c index 43f1ce74187d..ae86d237a456 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c | |||
@@ -1620,6 +1620,7 @@ static int key_notify_sa_flush(struct km_event *c) | |||
1620 | return -ENOBUFS; | 1620 | return -ENOBUFS; |
1621 | hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); | 1621 | hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); |
1622 | hdr->sadb_msg_satype = pfkey_proto2satype(c->data.proto); | 1622 | hdr->sadb_msg_satype = pfkey_proto2satype(c->data.proto); |
1623 | hdr->sadb_msg_type = SADB_FLUSH; | ||
1623 | hdr->sadb_msg_seq = c->seq; | 1624 | hdr->sadb_msg_seq = c->seq; |
1624 | hdr->sadb_msg_pid = c->pid; | 1625 | hdr->sadb_msg_pid = c->pid; |
1625 | hdr->sadb_msg_version = PF_KEY_V2; | 1626 | hdr->sadb_msg_version = PF_KEY_V2; |
@@ -2385,6 +2386,7 @@ static int key_notify_policy_flush(struct km_event *c) | |||
2385 | if (!skb_out) | 2386 | if (!skb_out) |
2386 | return -ENOBUFS; | 2387 | return -ENOBUFS; |
2387 | hdr = (struct sadb_msg *) skb_put(skb_out, sizeof(struct sadb_msg)); | 2388 | hdr = (struct sadb_msg *) skb_put(skb_out, sizeof(struct sadb_msg)); |
2389 | hdr->sadb_msg_type = SADB_X_SPDFLUSH; | ||
2388 | hdr->sadb_msg_seq = c->seq; | 2390 | hdr->sadb_msg_seq = c->seq; |
2389 | hdr->sadb_msg_pid = c->pid; | 2391 | hdr->sadb_msg_pid = c->pid; |
2390 | hdr->sadb_msg_version = PF_KEY_V2; | 2392 | hdr->sadb_msg_version = PF_KEY_V2; |
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index ee93abc71cb8..9db7dbdb16e6 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c | |||
@@ -365,7 +365,7 @@ static int packet_sendmsg_spkt(struct kiocb *iocb, struct socket *sock, | |||
365 | */ | 365 | */ |
366 | 366 | ||
367 | err = -EMSGSIZE; | 367 | err = -EMSGSIZE; |
368 | if(len>dev->mtu+dev->hard_header_len) | 368 | if (len > dev->mtu + dev->hard_header_len) |
369 | goto out_unlock; | 369 | goto out_unlock; |
370 | 370 | ||
371 | err = -ENOBUFS; | 371 | err = -ENOBUFS; |
@@ -935,7 +935,7 @@ static int packet_bind_spkt(struct socket *sock, struct sockaddr *uaddr, int add | |||
935 | * Check legality | 935 | * Check legality |
936 | */ | 936 | */ |
937 | 937 | ||
938 | if(addr_len!=sizeof(struct sockaddr)) | 938 | if (addr_len != sizeof(struct sockaddr)) |
939 | return -EINVAL; | 939 | return -EINVAL; |
940 | strlcpy(name,uaddr->sa_data,sizeof(name)); | 940 | strlcpy(name,uaddr->sa_data,sizeof(name)); |
941 | 941 | ||
@@ -1092,7 +1092,7 @@ static int packet_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
1092 | * retries. | 1092 | * retries. |
1093 | */ | 1093 | */ |
1094 | 1094 | ||
1095 | if(skb==NULL) | 1095 | if (skb == NULL) |
1096 | goto out; | 1096 | goto out; |
1097 | 1097 | ||
1098 | /* | 1098 | /* |
@@ -1392,8 +1392,8 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, | |||
1392 | if (level != SOL_PACKET) | 1392 | if (level != SOL_PACKET) |
1393 | return -ENOPROTOOPT; | 1393 | return -ENOPROTOOPT; |
1394 | 1394 | ||
1395 | if (get_user(len,optlen)) | 1395 | if (get_user(len, optlen)) |
1396 | return -EFAULT; | 1396 | return -EFAULT; |
1397 | 1397 | ||
1398 | if (len < 0) | 1398 | if (len < 0) |
1399 | return -EINVAL; | 1399 | return -EINVAL; |
@@ -1419,9 +1419,9 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, | |||
1419 | return -ENOPROTOOPT; | 1419 | return -ENOPROTOOPT; |
1420 | } | 1420 | } |
1421 | 1421 | ||
1422 | if (put_user(len, optlen)) | 1422 | if (put_user(len, optlen)) |
1423 | return -EFAULT; | 1423 | return -EFAULT; |
1424 | return 0; | 1424 | return 0; |
1425 | } | 1425 | } |
1426 | 1426 | ||
1427 | 1427 | ||
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c index 71c9a961c321..2b9a832b29a7 100644 --- a/net/sctp/sm_statefuns.c +++ b/net/sctp/sm_statefuns.c | |||
@@ -884,7 +884,7 @@ sctp_disposition_t sctp_sf_sendbeat_8_3(const struct sctp_endpoint *ep, | |||
884 | { | 884 | { |
885 | struct sctp_transport *transport = (struct sctp_transport *) arg; | 885 | struct sctp_transport *transport = (struct sctp_transport *) arg; |
886 | 886 | ||
887 | if (asoc->overall_error_count > asoc->max_retrans) { | 887 | if (asoc->overall_error_count >= asoc->max_retrans) { |
888 | /* CMD_ASSOC_FAILED calls CMD_DELETE_TCB. */ | 888 | /* CMD_ASSOC_FAILED calls CMD_DELETE_TCB. */ |
889 | sctp_add_cmd_sf(commands, SCTP_CMD_ASSOC_FAILED, | 889 | sctp_add_cmd_sf(commands, SCTP_CMD_ASSOC_FAILED, |
890 | SCTP_U32(SCTP_ERROR_NO_ERROR)); | 890 | SCTP_U32(SCTP_ERROR_NO_ERROR)); |
@@ -2122,7 +2122,7 @@ static sctp_disposition_t sctp_sf_do_5_2_6_stale(const struct sctp_endpoint *ep, | |||
2122 | struct sctp_bind_addr *bp; | 2122 | struct sctp_bind_addr *bp; |
2123 | int attempts = asoc->init_err_counter + 1; | 2123 | int attempts = asoc->init_err_counter + 1; |
2124 | 2124 | ||
2125 | if (attempts >= asoc->max_init_attempts) { | 2125 | if (attempts > asoc->max_init_attempts) { |
2126 | sctp_add_cmd_sf(commands, SCTP_CMD_INIT_FAILED, | 2126 | sctp_add_cmd_sf(commands, SCTP_CMD_INIT_FAILED, |
2127 | SCTP_U32(SCTP_ERROR_STALE_COOKIE)); | 2127 | SCTP_U32(SCTP_ERROR_STALE_COOKIE)); |
2128 | return SCTP_DISPOSITION_DELETE_TCB; | 2128 | return SCTP_DISPOSITION_DELETE_TCB; |
@@ -4640,7 +4640,7 @@ sctp_disposition_t sctp_sf_t1_init_timer_expire(const struct sctp_endpoint *ep, | |||
4640 | 4640 | ||
4641 | SCTP_DEBUG_PRINTK("Timer T1 expired (INIT).\n"); | 4641 | SCTP_DEBUG_PRINTK("Timer T1 expired (INIT).\n"); |
4642 | 4642 | ||
4643 | if (attempts < asoc->max_init_attempts) { | 4643 | if (attempts <= asoc->max_init_attempts) { |
4644 | bp = (struct sctp_bind_addr *) &asoc->base.bind_addr; | 4644 | bp = (struct sctp_bind_addr *) &asoc->base.bind_addr; |
4645 | repl = sctp_make_init(asoc, bp, GFP_ATOMIC, 0); | 4645 | repl = sctp_make_init(asoc, bp, GFP_ATOMIC, 0); |
4646 | if (!repl) | 4646 | if (!repl) |
@@ -4697,7 +4697,7 @@ sctp_disposition_t sctp_sf_t1_cookie_timer_expire(const struct sctp_endpoint *ep | |||
4697 | 4697 | ||
4698 | SCTP_DEBUG_PRINTK("Timer T1 expired (COOKIE-ECHO).\n"); | 4698 | SCTP_DEBUG_PRINTK("Timer T1 expired (COOKIE-ECHO).\n"); |
4699 | 4699 | ||
4700 | if (attempts < asoc->max_init_attempts) { | 4700 | if (attempts <= asoc->max_init_attempts) { |
4701 | repl = sctp_make_cookie_echo(asoc, NULL); | 4701 | repl = sctp_make_cookie_echo(asoc, NULL); |
4702 | if (!repl) | 4702 | if (!repl) |
4703 | return SCTP_DISPOSITION_NOMEM; | 4703 | return SCTP_DISPOSITION_NOMEM; |
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index fb1821d9f338..0ea947eb6813 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -5426,7 +5426,7 @@ out: | |||
5426 | return err; | 5426 | return err; |
5427 | 5427 | ||
5428 | do_error: | 5428 | do_error: |
5429 | if (asoc->init_err_counter + 1 >= asoc->max_init_attempts) | 5429 | if (asoc->init_err_counter + 1 > asoc->max_init_attempts) |
5430 | err = -ETIMEDOUT; | 5430 | err = -ETIMEDOUT; |
5431 | else | 5431 | else |
5432 | err = -ECONNREFUSED; | 5432 | err = -ECONNREFUSED; |
diff --git a/security/seclvl.c b/security/seclvl.c index 1caac0164643..8529ea6f7aa8 100644 --- a/security/seclvl.c +++ b/security/seclvl.c | |||
@@ -368,8 +368,8 @@ static int seclvl_capable(struct task_struct *tsk, int cap) | |||
368 | */ | 368 | */ |
369 | static int seclvl_settime(struct timespec *tv, struct timezone *tz) | 369 | static int seclvl_settime(struct timespec *tv, struct timezone *tz) |
370 | { | 370 | { |
371 | struct timespec now; | 371 | if (tv && seclvl > 1) { |
372 | if (seclvl > 1) { | 372 | struct timespec now; |
373 | now = current_kernel_time(); | 373 | now = current_kernel_time(); |
374 | if (tv->tv_sec < now.tv_sec || | 374 | if (tv->tv_sec < now.tv_sec || |
375 | (tv->tv_sec == now.tv_sec && tv->tv_nsec < now.tv_nsec)) { | 375 | (tv->tv_sec == now.tv_sec && tv->tv_nsec < now.tv_nsec)) { |