diff options
Diffstat (limited to 'arch')
425 files changed, 12581 insertions, 7270 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 84caf50725b5..770f717bd250 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig | |||
@@ -41,6 +41,10 @@ config GENERIC_CALIBRATE_DELAY | |||
41 | bool | 41 | bool |
42 | default y | 42 | default y |
43 | 43 | ||
44 | config ZONE_DMA | ||
45 | bool | ||
46 | default y | ||
47 | |||
44 | config GENERIC_ISA_DMA | 48 | config GENERIC_ISA_DMA |
45 | bool | 49 | bool |
46 | default y | 50 | default y |
diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c index 1aea7c7c683c..d352c2b05f1a 100644 --- a/arch/alpha/kernel/setup.c +++ b/arch/alpha/kernel/setup.c | |||
@@ -122,7 +122,7 @@ static void get_sysnames(unsigned long, unsigned long, unsigned long, | |||
122 | char **, char **); | 122 | char **, char **); |
123 | static void determine_cpu_caches (unsigned int); | 123 | static void determine_cpu_caches (unsigned int); |
124 | 124 | ||
125 | static char command_line[COMMAND_LINE_SIZE]; | 125 | static char __initdata command_line[COMMAND_LINE_SIZE]; |
126 | 126 | ||
127 | /* | 127 | /* |
128 | * The format of "screen_info" is strange, and due to early | 128 | * The format of "screen_info" is strange, and due to early |
@@ -547,7 +547,7 @@ setup_arch(char **cmdline_p) | |||
547 | } else { | 547 | } else { |
548 | strlcpy(command_line, COMMAND_LINE, sizeof command_line); | 548 | strlcpy(command_line, COMMAND_LINE, sizeof command_line); |
549 | } | 549 | } |
550 | strcpy(saved_command_line, command_line); | 550 | strcpy(boot_command_line, command_line); |
551 | *cmdline_p = command_line; | 551 | *cmdline_p = command_line; |
552 | 552 | ||
553 | /* | 553 | /* |
@@ -589,7 +589,7 @@ setup_arch(char **cmdline_p) | |||
589 | } | 589 | } |
590 | 590 | ||
591 | /* Replace the command line, now that we've killed it with strsep. */ | 591 | /* Replace the command line, now that we've killed it with strsep. */ |
592 | strcpy(command_line, saved_command_line); | 592 | strcpy(command_line, boot_command_line); |
593 | 593 | ||
594 | /* If we want SRM console printk echoing early, do it now. */ | 594 | /* If we want SRM console printk echoing early, do it now. */ |
595 | if (alpha_using_srm && srmcons_output) { | 595 | if (alpha_using_srm && srmcons_output) { |
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c index d7053eb4ffcf..4748e14a28bc 100644 --- a/arch/alpha/kernel/time.c +++ b/arch/alpha/kernel/time.c | |||
@@ -91,17 +91,6 @@ static inline __u32 rpcc(void) | |||
91 | } | 91 | } |
92 | 92 | ||
93 | /* | 93 | /* |
94 | * Scheduler clock - returns current time in nanosec units. | ||
95 | * | ||
96 | * Copied from ARM code for expediency... ;-} | ||
97 | */ | ||
98 | unsigned long long sched_clock(void) | ||
99 | { | ||
100 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
101 | } | ||
102 | |||
103 | |||
104 | /* | ||
105 | * timer_interrupt() needs to keep up the real-time clock, | 94 | * timer_interrupt() needs to keep up the real-time clock, |
106 | * as well as call the "do_timer()" routine every clocktick | 95 | * as well as call the "do_timer()" routine every clocktick |
107 | */ | 96 | */ |
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S index 76bf071e376c..4cc44bd33d33 100644 --- a/arch/alpha/kernel/vmlinux.lds.S +++ b/arch/alpha/kernel/vmlinux.lds.S | |||
@@ -52,10 +52,12 @@ SECTIONS | |||
52 | } | 52 | } |
53 | __initcall_end = .; | 53 | __initcall_end = .; |
54 | 54 | ||
55 | #ifdef CONFIG_BLK_DEV_INITRD | ||
55 | . = ALIGN(8192); | 56 | . = ALIGN(8192); |
56 | __initramfs_start = .; | 57 | __initramfs_start = .; |
57 | .init.ramfs : { *(.init.ramfs) } | 58 | .init.ramfs : { *(.init.ramfs) } |
58 | __initramfs_end = .; | 59 | __initramfs_end = .; |
60 | #endif | ||
59 | 61 | ||
60 | . = ALIGN(8); | 62 | . = ALIGN(8); |
61 | .con_initcall.init : { | 63 | .con_initcall.init : { |
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 6783c2e5512d..5c795193ebba 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -9,6 +9,7 @@ config ARM | |||
9 | bool | 9 | bool |
10 | default y | 10 | default y |
11 | select RTC_LIB | 11 | select RTC_LIB |
12 | select SYS_SUPPORTS_APM_EMULATION | ||
12 | help | 13 | help |
13 | The ARM series is a line of low-power-consumption RISC chip designs | 14 | The ARM series is a line of low-power-consumption RISC chip designs |
14 | licensed by ARM Ltd and targeted at embedded applications and | 15 | licensed by ARM Ltd and targeted at embedded applications and |
@@ -17,6 +18,9 @@ config ARM | |||
17 | Europe. There is an ARM Linux project with a web page at | 18 | Europe. There is an ARM Linux project with a web page at |
18 | <http://www.arm.linux.org.uk/>. | 19 | <http://www.arm.linux.org.uk/>. |
19 | 20 | ||
21 | config SYS_SUPPORTS_APM_EMULATION | ||
22 | bool | ||
23 | |||
20 | config GENERIC_TIME | 24 | config GENERIC_TIME |
21 | bool | 25 | bool |
22 | default n | 26 | default n |
@@ -25,6 +29,10 @@ config MMU | |||
25 | bool | 29 | bool |
26 | default y | 30 | default y |
27 | 31 | ||
32 | config NO_IOPORT | ||
33 | bool | ||
34 | default n | ||
35 | |||
28 | config EISA | 36 | config EISA |
29 | bool | 37 | bool |
30 | ---help--- | 38 | ---help--- |
@@ -96,6 +104,10 @@ config GENERIC_BUST_SPINLOCK | |||
96 | config ARCH_MAY_HAVE_PC_FDC | 104 | config ARCH_MAY_HAVE_PC_FDC |
97 | bool | 105 | bool |
98 | 106 | ||
107 | config ZONE_DMA | ||
108 | bool | ||
109 | default y | ||
110 | |||
99 | config GENERIC_ISA_DMA | 111 | config GENERIC_ISA_DMA |
100 | bool | 112 | bool |
101 | 113 | ||
@@ -290,6 +302,7 @@ config ARCH_RPC | |||
290 | select TIMER_ACORN | 302 | select TIMER_ACORN |
291 | select ARCH_MAY_HAVE_PC_FDC | 303 | select ARCH_MAY_HAVE_PC_FDC |
292 | select ISA_DMA_API | 304 | select ISA_DMA_API |
305 | select NO_IOPORT | ||
293 | help | 306 | help |
294 | On the Acorn Risc-PC, Linux can support the internal IDE disk and | 307 | On the Acorn Risc-PC, Linux can support the internal IDE disk and |
295 | CD-ROM interface, serial and parallel port, and the floppy drive. | 308 | CD-ROM interface, serial and parallel port, and the floppy drive. |
@@ -856,31 +869,6 @@ menu "Power management options" | |||
856 | 869 | ||
857 | source "kernel/power/Kconfig" | 870 | source "kernel/power/Kconfig" |
858 | 871 | ||
859 | config APM | ||
860 | tristate "Advanced Power Management Emulation" | ||
861 | ---help--- | ||
862 | APM is a BIOS specification for saving power using several different | ||
863 | techniques. This is mostly useful for battery powered laptops with | ||
864 | APM compliant BIOSes. If you say Y here, the system time will be | ||
865 | reset after a RESUME operation, the /proc/apm device will provide | ||
866 | battery status information, and user-space programs will receive | ||
867 | notification of APM "events" (e.g. battery status change). | ||
868 | |||
869 | In order to use APM, you will need supporting software. For location | ||
870 | and more information, read <file:Documentation/pm.txt> and the | ||
871 | Battery Powered Linux mini-HOWTO, available from | ||
872 | <http://www.tldp.org/docs.html#howto>. | ||
873 | |||
874 | This driver does not spin down disk drives (see the hdparm(8) | ||
875 | manpage ("man 8 hdparm") for that), and it doesn't turn off | ||
876 | VESA-compliant "green" monitors. | ||
877 | |||
878 | Generally, if you don't have a battery in your machine, there isn't | ||
879 | much point in using this driver and you should say N. If you get | ||
880 | random kernel OOPSes or reboots that don't seem to be related to | ||
881 | anything, try disabling/enabling this option (or disabling/enabling | ||
882 | APM in your BIOS). | ||
883 | |||
884 | endmenu | 872 | endmenu |
885 | 873 | ||
886 | source "net/Kconfig" | 874 | source "net/Kconfig" |
diff --git a/arch/arm/common/rtctime.c b/arch/arm/common/rtctime.c index 4e5445cfb0ea..bf1075e1f571 100644 --- a/arch/arm/common/rtctime.c +++ b/arch/arm/common/rtctime.c | |||
@@ -329,7 +329,7 @@ static int rtc_fasync(int fd, struct file *file, int on) | |||
329 | return fasync_helper(fd, file, on, &rtc_async_queue); | 329 | return fasync_helper(fd, file, on, &rtc_async_queue); |
330 | } | 330 | } |
331 | 331 | ||
332 | static struct file_operations rtc_fops = { | 332 | static const struct file_operations rtc_fops = { |
333 | .owner = THIS_MODULE, | 333 | .owner = THIS_MODULE, |
334 | .llseek = no_llseek, | 334 | .llseek = no_llseek, |
335 | .read = rtc_read, | 335 | .read = rtc_read, |
diff --git a/arch/arm/common/sharpsl_pm.c b/arch/arm/common/sharpsl_pm.c index b3599743093b..a3b450f8ef17 100644 --- a/arch/arm/common/sharpsl_pm.c +++ b/arch/arm/common/sharpsl_pm.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include <asm/hardware.h> | 27 | #include <asm/hardware.h> |
28 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | #include <asm/apm.h> | 30 | #include <asm/apm-emulation.h> |
31 | #include <asm/arch/pm.h> | 31 | #include <asm/arch/pm.h> |
32 | #include <asm/arch/pxa-regs.h> | 32 | #include <asm/arch/pxa-regs.h> |
33 | #include <asm/arch/sharpsl.h> | 33 | #include <asm/arch/sharpsl.h> |
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile index ab06a86e85d5..1b935fb94b83 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile | |||
@@ -10,7 +10,6 @@ obj-y := compat.o entry-armv.o entry-common.o irq.o \ | |||
10 | process.o ptrace.o semaphore.o setup.o signal.o sys_arm.o \ | 10 | process.o ptrace.o semaphore.o setup.o signal.o sys_arm.o \ |
11 | time.o traps.o | 11 | time.o traps.o |
12 | 12 | ||
13 | obj-$(CONFIG_APM) += apm.o | ||
14 | obj-$(CONFIG_ISA_DMA_API) += dma.o | 13 | obj-$(CONFIG_ISA_DMA_API) += dma.o |
15 | obj-$(CONFIG_ARCH_ACORN) += ecard.o | 14 | obj-$(CONFIG_ARCH_ACORN) += ecard.o |
16 | obj-$(CONFIG_FIQ) += fiq.o | 15 | obj-$(CONFIG_FIQ) += fiq.o |
diff --git a/arch/arm/kernel/apm.c b/arch/arm/kernel/apm.c deleted file mode 100644 index 2c37b70b17ab..000000000000 --- a/arch/arm/kernel/apm.c +++ /dev/null | |||
@@ -1,672 +0,0 @@ | |||
1 | /* | ||
2 | * bios-less APM driver for ARM Linux | ||
3 | * Jamey Hicks <jamey@crl.dec.com> | ||
4 | * adapted from the APM BIOS driver for Linux by Stephen Rothwell (sfr@linuxcare.com) | ||
5 | * | ||
6 | * APM 1.2 Reference: | ||
7 | * Intel Corporation, Microsoft Corporation. Advanced Power Management | ||
8 | * (APM) BIOS Interface Specification, Revision 1.2, February 1996. | ||
9 | * | ||
10 | * [This document is available from Microsoft at: | ||
11 | * http://www.microsoft.com/hwdev/busbios/amp_12.htm] | ||
12 | */ | ||
13 | #include <linux/module.h> | ||
14 | #include <linux/poll.h> | ||
15 | #include <linux/slab.h> | ||
16 | #include <linux/proc_fs.h> | ||
17 | #include <linux/miscdevice.h> | ||
18 | #include <linux/apm_bios.h> | ||
19 | #include <linux/capability.h> | ||
20 | #include <linux/sched.h> | ||
21 | #include <linux/pm.h> | ||
22 | #include <linux/device.h> | ||
23 | #include <linux/kernel.h> | ||
24 | #include <linux/list.h> | ||
25 | #include <linux/init.h> | ||
26 | #include <linux/completion.h> | ||
27 | #include <linux/kthread.h> | ||
28 | #include <linux/delay.h> | ||
29 | |||
30 | #include <asm/apm.h> /* apm_power_info */ | ||
31 | #include <asm/system.h> | ||
32 | |||
33 | /* | ||
34 | * The apm_bios device is one of the misc char devices. | ||
35 | * This is its minor number. | ||
36 | */ | ||
37 | #define APM_MINOR_DEV 134 | ||
38 | |||
39 | /* | ||
40 | * See Documentation/Config.help for the configuration options. | ||
41 | * | ||
42 | * Various options can be changed at boot time as follows: | ||
43 | * (We allow underscores for compatibility with the modules code) | ||
44 | * apm=on/off enable/disable APM | ||
45 | */ | ||
46 | |||
47 | /* | ||
48 | * Maximum number of events stored | ||
49 | */ | ||
50 | #define APM_MAX_EVENTS 16 | ||
51 | |||
52 | struct apm_queue { | ||
53 | unsigned int event_head; | ||
54 | unsigned int event_tail; | ||
55 | apm_event_t events[APM_MAX_EVENTS]; | ||
56 | }; | ||
57 | |||
58 | /* | ||
59 | * The per-file APM data | ||
60 | */ | ||
61 | struct apm_user { | ||
62 | struct list_head list; | ||
63 | |||
64 | unsigned int suser: 1; | ||
65 | unsigned int writer: 1; | ||
66 | unsigned int reader: 1; | ||
67 | |||
68 | int suspend_result; | ||
69 | unsigned int suspend_state; | ||
70 | #define SUSPEND_NONE 0 /* no suspend pending */ | ||
71 | #define SUSPEND_PENDING 1 /* suspend pending read */ | ||
72 | #define SUSPEND_READ 2 /* suspend read, pending ack */ | ||
73 | #define SUSPEND_ACKED 3 /* suspend acked */ | ||
74 | #define SUSPEND_WAIT 4 /* waiting for suspend */ | ||
75 | #define SUSPEND_DONE 5 /* suspend completed */ | ||
76 | |||
77 | struct apm_queue queue; | ||
78 | }; | ||
79 | |||
80 | /* | ||
81 | * Local variables | ||
82 | */ | ||
83 | static int suspends_pending; | ||
84 | static int apm_disabled; | ||
85 | static struct task_struct *kapmd_tsk; | ||
86 | |||
87 | static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue); | ||
88 | static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue); | ||
89 | |||
90 | /* | ||
91 | * This is a list of everyone who has opened /dev/apm_bios | ||
92 | */ | ||
93 | static DECLARE_RWSEM(user_list_lock); | ||
94 | static LIST_HEAD(apm_user_list); | ||
95 | |||
96 | /* | ||
97 | * kapmd info. kapmd provides us a process context to handle | ||
98 | * "APM" events within - specifically necessary if we're going | ||
99 | * to be suspending the system. | ||
100 | */ | ||
101 | static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait); | ||
102 | static DEFINE_SPINLOCK(kapmd_queue_lock); | ||
103 | static struct apm_queue kapmd_queue; | ||
104 | |||
105 | static DEFINE_MUTEX(state_lock); | ||
106 | |||
107 | static const char driver_version[] = "1.13"; /* no spaces */ | ||
108 | |||
109 | |||
110 | |||
111 | /* | ||
112 | * Compatibility cruft until the IPAQ people move over to the new | ||
113 | * interface. | ||
114 | */ | ||
115 | static void __apm_get_power_status(struct apm_power_info *info) | ||
116 | { | ||
117 | } | ||
118 | |||
119 | /* | ||
120 | * This allows machines to provide their own "apm get power status" function. | ||
121 | */ | ||
122 | void (*apm_get_power_status)(struct apm_power_info *) = __apm_get_power_status; | ||
123 | EXPORT_SYMBOL(apm_get_power_status); | ||
124 | |||
125 | |||
126 | /* | ||
127 | * APM event queue management. | ||
128 | */ | ||
129 | static inline int queue_empty(struct apm_queue *q) | ||
130 | { | ||
131 | return q->event_head == q->event_tail; | ||
132 | } | ||
133 | |||
134 | static inline apm_event_t queue_get_event(struct apm_queue *q) | ||
135 | { | ||
136 | q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS; | ||
137 | return q->events[q->event_tail]; | ||
138 | } | ||
139 | |||
140 | static void queue_add_event(struct apm_queue *q, apm_event_t event) | ||
141 | { | ||
142 | q->event_head = (q->event_head + 1) % APM_MAX_EVENTS; | ||
143 | if (q->event_head == q->event_tail) { | ||
144 | static int notified; | ||
145 | |||
146 | if (notified++ == 0) | ||
147 | printk(KERN_ERR "apm: an event queue overflowed\n"); | ||
148 | q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS; | ||
149 | } | ||
150 | q->events[q->event_head] = event; | ||
151 | } | ||
152 | |||
153 | static void queue_event(apm_event_t event) | ||
154 | { | ||
155 | struct apm_user *as; | ||
156 | |||
157 | down_read(&user_list_lock); | ||
158 | list_for_each_entry(as, &apm_user_list, list) { | ||
159 | if (as->reader) | ||
160 | queue_add_event(&as->queue, event); | ||
161 | } | ||
162 | up_read(&user_list_lock); | ||
163 | wake_up_interruptible(&apm_waitqueue); | ||
164 | } | ||
165 | |||
166 | /* | ||
167 | * queue_suspend_event - queue an APM suspend event. | ||
168 | * | ||
169 | * Check that we're in a state where we can suspend. If not, | ||
170 | * return -EBUSY. Otherwise, queue an event to all "writer" | ||
171 | * users. If there are no "writer" users, return '1' to | ||
172 | * indicate that we can immediately suspend. | ||
173 | */ | ||
174 | static int queue_suspend_event(apm_event_t event, struct apm_user *sender) | ||
175 | { | ||
176 | struct apm_user *as; | ||
177 | int ret = 1; | ||
178 | |||
179 | mutex_lock(&state_lock); | ||
180 | down_read(&user_list_lock); | ||
181 | |||
182 | /* | ||
183 | * If a thread is still processing, we can't suspend, so reject | ||
184 | * the request. | ||
185 | */ | ||
186 | list_for_each_entry(as, &apm_user_list, list) { | ||
187 | if (as != sender && as->reader && as->writer && as->suser && | ||
188 | as->suspend_state != SUSPEND_NONE) { | ||
189 | ret = -EBUSY; | ||
190 | goto out; | ||
191 | } | ||
192 | } | ||
193 | |||
194 | list_for_each_entry(as, &apm_user_list, list) { | ||
195 | if (as != sender && as->reader && as->writer && as->suser) { | ||
196 | as->suspend_state = SUSPEND_PENDING; | ||
197 | suspends_pending++; | ||
198 | queue_add_event(&as->queue, event); | ||
199 | ret = 0; | ||
200 | } | ||
201 | } | ||
202 | out: | ||
203 | up_read(&user_list_lock); | ||
204 | mutex_unlock(&state_lock); | ||
205 | wake_up_interruptible(&apm_waitqueue); | ||
206 | return ret; | ||
207 | } | ||
208 | |||
209 | static void apm_suspend(void) | ||
210 | { | ||
211 | struct apm_user *as; | ||
212 | int err = pm_suspend(PM_SUSPEND_MEM); | ||
213 | |||
214 | /* | ||
215 | * Anyone on the APM queues will think we're still suspended. | ||
216 | * Send a message so everyone knows we're now awake again. | ||
217 | */ | ||
218 | queue_event(APM_NORMAL_RESUME); | ||
219 | |||
220 | /* | ||
221 | * Finally, wake up anyone who is sleeping on the suspend. | ||
222 | */ | ||
223 | mutex_lock(&state_lock); | ||
224 | down_read(&user_list_lock); | ||
225 | list_for_each_entry(as, &apm_user_list, list) { | ||
226 | if (as->suspend_state == SUSPEND_WAIT || | ||
227 | as->suspend_state == SUSPEND_ACKED) { | ||
228 | as->suspend_result = err; | ||
229 | as->suspend_state = SUSPEND_DONE; | ||
230 | } | ||
231 | } | ||
232 | up_read(&user_list_lock); | ||
233 | mutex_unlock(&state_lock); | ||
234 | |||
235 | wake_up(&apm_suspend_waitqueue); | ||
236 | } | ||
237 | |||
238 | static ssize_t apm_read(struct file *fp, char __user *buf, size_t count, loff_t *ppos) | ||
239 | { | ||
240 | struct apm_user *as = fp->private_data; | ||
241 | apm_event_t event; | ||
242 | int i = count, ret = 0; | ||
243 | |||
244 | if (count < sizeof(apm_event_t)) | ||
245 | return -EINVAL; | ||
246 | |||
247 | if (queue_empty(&as->queue) && fp->f_flags & O_NONBLOCK) | ||
248 | return -EAGAIN; | ||
249 | |||
250 | wait_event_interruptible(apm_waitqueue, !queue_empty(&as->queue)); | ||
251 | |||
252 | while ((i >= sizeof(event)) && !queue_empty(&as->queue)) { | ||
253 | event = queue_get_event(&as->queue); | ||
254 | |||
255 | ret = -EFAULT; | ||
256 | if (copy_to_user(buf, &event, sizeof(event))) | ||
257 | break; | ||
258 | |||
259 | mutex_lock(&state_lock); | ||
260 | if (as->suspend_state == SUSPEND_PENDING && | ||
261 | (event == APM_SYS_SUSPEND || event == APM_USER_SUSPEND)) | ||
262 | as->suspend_state = SUSPEND_READ; | ||
263 | mutex_unlock(&state_lock); | ||
264 | |||
265 | buf += sizeof(event); | ||
266 | i -= sizeof(event); | ||
267 | } | ||
268 | |||
269 | if (i < count) | ||
270 | ret = count - i; | ||
271 | |||
272 | return ret; | ||
273 | } | ||
274 | |||
275 | static unsigned int apm_poll(struct file *fp, poll_table * wait) | ||
276 | { | ||
277 | struct apm_user *as = fp->private_data; | ||
278 | |||
279 | poll_wait(fp, &apm_waitqueue, wait); | ||
280 | return queue_empty(&as->queue) ? 0 : POLLIN | POLLRDNORM; | ||
281 | } | ||
282 | |||
283 | /* | ||
284 | * apm_ioctl - handle APM ioctl | ||
285 | * | ||
286 | * APM_IOC_SUSPEND | ||
287 | * This IOCTL is overloaded, and performs two functions. It is used to: | ||
288 | * - initiate a suspend | ||
289 | * - acknowledge a suspend read from /dev/apm_bios. | ||
290 | * Only when everyone who has opened /dev/apm_bios with write permission | ||
291 | * has acknowledge does the actual suspend happen. | ||
292 | */ | ||
293 | static int | ||
294 | apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg) | ||
295 | { | ||
296 | struct apm_user *as = filp->private_data; | ||
297 | unsigned long flags; | ||
298 | int err = -EINVAL; | ||
299 | |||
300 | if (!as->suser || !as->writer) | ||
301 | return -EPERM; | ||
302 | |||
303 | switch (cmd) { | ||
304 | case APM_IOC_SUSPEND: | ||
305 | mutex_lock(&state_lock); | ||
306 | |||
307 | as->suspend_result = -EINTR; | ||
308 | |||
309 | if (as->suspend_state == SUSPEND_READ) { | ||
310 | int pending; | ||
311 | |||
312 | /* | ||
313 | * If we read a suspend command from /dev/apm_bios, | ||
314 | * then the corresponding APM_IOC_SUSPEND ioctl is | ||
315 | * interpreted as an acknowledge. | ||
316 | */ | ||
317 | as->suspend_state = SUSPEND_ACKED; | ||
318 | suspends_pending--; | ||
319 | pending = suspends_pending == 0; | ||
320 | mutex_unlock(&state_lock); | ||
321 | |||
322 | /* | ||
323 | * If there are no further acknowledges required, | ||
324 | * suspend the system. | ||
325 | */ | ||
326 | if (pending) | ||
327 | apm_suspend(); | ||
328 | |||
329 | /* | ||
330 | * Wait for the suspend/resume to complete. If there | ||
331 | * are pending acknowledges, we wait here for them. | ||
332 | * | ||
333 | * Note: we need to ensure that the PM subsystem does | ||
334 | * not kick us out of the wait when it suspends the | ||
335 | * threads. | ||
336 | */ | ||
337 | flags = current->flags; | ||
338 | current->flags |= PF_NOFREEZE; | ||
339 | |||
340 | wait_event(apm_suspend_waitqueue, | ||
341 | as->suspend_state == SUSPEND_DONE); | ||
342 | } else { | ||
343 | as->suspend_state = SUSPEND_WAIT; | ||
344 | mutex_unlock(&state_lock); | ||
345 | |||
346 | /* | ||
347 | * Otherwise it is a request to suspend the system. | ||
348 | * Queue an event for all readers, and expect an | ||
349 | * acknowledge from all writers who haven't already | ||
350 | * acknowledged. | ||
351 | */ | ||
352 | err = queue_suspend_event(APM_USER_SUSPEND, as); | ||
353 | if (err < 0) { | ||
354 | /* | ||
355 | * Avoid taking the lock here - this | ||
356 | * should be fine. | ||
357 | */ | ||
358 | as->suspend_state = SUSPEND_NONE; | ||
359 | break; | ||
360 | } | ||
361 | |||
362 | if (err > 0) | ||
363 | apm_suspend(); | ||
364 | |||
365 | /* | ||
366 | * Wait for the suspend/resume to complete. If there | ||
367 | * are pending acknowledges, we wait here for them. | ||
368 | * | ||
369 | * Note: we need to ensure that the PM subsystem does | ||
370 | * not kick us out of the wait when it suspends the | ||
371 | * threads. | ||
372 | */ | ||
373 | flags = current->flags; | ||
374 | current->flags |= PF_NOFREEZE; | ||
375 | |||
376 | wait_event_interruptible(apm_suspend_waitqueue, | ||
377 | as->suspend_state == SUSPEND_DONE); | ||
378 | } | ||
379 | |||
380 | current->flags = flags; | ||
381 | |||
382 | mutex_lock(&state_lock); | ||
383 | err = as->suspend_result; | ||
384 | as->suspend_state = SUSPEND_NONE; | ||
385 | mutex_unlock(&state_lock); | ||
386 | break; | ||
387 | } | ||
388 | |||
389 | return err; | ||
390 | } | ||
391 | |||
392 | static int apm_release(struct inode * inode, struct file * filp) | ||
393 | { | ||
394 | struct apm_user *as = filp->private_data; | ||
395 | int pending = 0; | ||
396 | |||
397 | filp->private_data = NULL; | ||
398 | |||
399 | down_write(&user_list_lock); | ||
400 | list_del(&as->list); | ||
401 | up_write(&user_list_lock); | ||
402 | |||
403 | /* | ||
404 | * We are now unhooked from the chain. As far as new | ||
405 | * events are concerned, we no longer exist. However, we | ||
406 | * need to balance suspends_pending, which means the | ||
407 | * possibility of sleeping. | ||
408 | */ | ||
409 | mutex_lock(&state_lock); | ||
410 | if (as->suspend_state != SUSPEND_NONE) { | ||
411 | suspends_pending -= 1; | ||
412 | pending = suspends_pending == 0; | ||
413 | } | ||
414 | mutex_unlock(&state_lock); | ||
415 | if (pending) | ||
416 | apm_suspend(); | ||
417 | |||
418 | kfree(as); | ||
419 | return 0; | ||
420 | } | ||
421 | |||
422 | static int apm_open(struct inode * inode, struct file * filp) | ||
423 | { | ||
424 | struct apm_user *as; | ||
425 | |||
426 | as = kzalloc(sizeof(*as), GFP_KERNEL); | ||
427 | if (as) { | ||
428 | /* | ||
429 | * XXX - this is a tiny bit broken, when we consider BSD | ||
430 | * process accounting. If the device is opened by root, we | ||
431 | * instantly flag that we used superuser privs. Who knows, | ||
432 | * we might close the device immediately without doing a | ||
433 | * privileged operation -- cevans | ||
434 | */ | ||
435 | as->suser = capable(CAP_SYS_ADMIN); | ||
436 | as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE; | ||
437 | as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ; | ||
438 | |||
439 | down_write(&user_list_lock); | ||
440 | list_add(&as->list, &apm_user_list); | ||
441 | up_write(&user_list_lock); | ||
442 | |||
443 | filp->private_data = as; | ||
444 | } | ||
445 | |||
446 | return as ? 0 : -ENOMEM; | ||
447 | } | ||
448 | |||
449 | static struct file_operations apm_bios_fops = { | ||
450 | .owner = THIS_MODULE, | ||
451 | .read = apm_read, | ||
452 | .poll = apm_poll, | ||
453 | .ioctl = apm_ioctl, | ||
454 | .open = apm_open, | ||
455 | .release = apm_release, | ||
456 | }; | ||
457 | |||
458 | static struct miscdevice apm_device = { | ||
459 | .minor = APM_MINOR_DEV, | ||
460 | .name = "apm_bios", | ||
461 | .fops = &apm_bios_fops | ||
462 | }; | ||
463 | |||
464 | |||
465 | #ifdef CONFIG_PROC_FS | ||
466 | /* | ||
467 | * Arguments, with symbols from linux/apm_bios.h. | ||
468 | * | ||
469 | * 0) Linux driver version (this will change if format changes) | ||
470 | * 1) APM BIOS Version. Usually 1.0, 1.1 or 1.2. | ||
471 | * 2) APM flags from APM Installation Check (0x00): | ||
472 | * bit 0: APM_16_BIT_SUPPORT | ||
473 | * bit 1: APM_32_BIT_SUPPORT | ||
474 | * bit 2: APM_IDLE_SLOWS_CLOCK | ||
475 | * bit 3: APM_BIOS_DISABLED | ||
476 | * bit 4: APM_BIOS_DISENGAGED | ||
477 | * 3) AC line status | ||
478 | * 0x00: Off-line | ||
479 | * 0x01: On-line | ||
480 | * 0x02: On backup power (BIOS >= 1.1 only) | ||
481 | * 0xff: Unknown | ||
482 | * 4) Battery status | ||
483 | * 0x00: High | ||
484 | * 0x01: Low | ||
485 | * 0x02: Critical | ||
486 | * 0x03: Charging | ||
487 | * 0x04: Selected battery not present (BIOS >= 1.2 only) | ||
488 | * 0xff: Unknown | ||
489 | * 5) Battery flag | ||
490 | * bit 0: High | ||
491 | * bit 1: Low | ||
492 | * bit 2: Critical | ||
493 | * bit 3: Charging | ||
494 | * bit 7: No system battery | ||
495 | * 0xff: Unknown | ||
496 | * 6) Remaining battery life (percentage of charge): | ||
497 | * 0-100: valid | ||
498 | * -1: Unknown | ||
499 | * 7) Remaining battery life (time units): | ||
500 | * Number of remaining minutes or seconds | ||
501 | * -1: Unknown | ||
502 | * 8) min = minutes; sec = seconds | ||
503 | */ | ||
504 | static int apm_get_info(char *buf, char **start, off_t fpos, int length) | ||
505 | { | ||
506 | struct apm_power_info info; | ||
507 | char *units; | ||
508 | int ret; | ||
509 | |||
510 | info.ac_line_status = 0xff; | ||
511 | info.battery_status = 0xff; | ||
512 | info.battery_flag = 0xff; | ||
513 | info.battery_life = -1; | ||
514 | info.time = -1; | ||
515 | info.units = -1; | ||
516 | |||
517 | if (apm_get_power_status) | ||
518 | apm_get_power_status(&info); | ||
519 | |||
520 | switch (info.units) { | ||
521 | default: units = "?"; break; | ||
522 | case 0: units = "min"; break; | ||
523 | case 1: units = "sec"; break; | ||
524 | } | ||
525 | |||
526 | ret = sprintf(buf, "%s 1.2 0x%02x 0x%02x 0x%02x 0x%02x %d%% %d %s\n", | ||
527 | driver_version, APM_32_BIT_SUPPORT, | ||
528 | info.ac_line_status, info.battery_status, | ||
529 | info.battery_flag, info.battery_life, | ||
530 | info.time, units); | ||
531 | |||
532 | return ret; | ||
533 | } | ||
534 | #endif | ||
535 | |||
536 | static int kapmd(void *arg) | ||
537 | { | ||
538 | do { | ||
539 | apm_event_t event; | ||
540 | int ret; | ||
541 | |||
542 | wait_event_interruptible(kapmd_wait, | ||
543 | !queue_empty(&kapmd_queue) || kthread_should_stop()); | ||
544 | |||
545 | if (kthread_should_stop()) | ||
546 | break; | ||
547 | |||
548 | spin_lock_irq(&kapmd_queue_lock); | ||
549 | event = 0; | ||
550 | if (!queue_empty(&kapmd_queue)) | ||
551 | event = queue_get_event(&kapmd_queue); | ||
552 | spin_unlock_irq(&kapmd_queue_lock); | ||
553 | |||
554 | switch (event) { | ||
555 | case 0: | ||
556 | break; | ||
557 | |||
558 | case APM_LOW_BATTERY: | ||
559 | case APM_POWER_STATUS_CHANGE: | ||
560 | queue_event(event); | ||
561 | break; | ||
562 | |||
563 | case APM_USER_SUSPEND: | ||
564 | case APM_SYS_SUSPEND: | ||
565 | ret = queue_suspend_event(event, NULL); | ||
566 | if (ret < 0) { | ||
567 | /* | ||
568 | * We were busy. Try again in 50ms. | ||
569 | */ | ||
570 | queue_add_event(&kapmd_queue, event); | ||
571 | msleep(50); | ||
572 | } | ||
573 | if (ret > 0) | ||
574 | apm_suspend(); | ||
575 | break; | ||
576 | |||
577 | case APM_CRITICAL_SUSPEND: | ||
578 | apm_suspend(); | ||
579 | break; | ||
580 | } | ||
581 | } while (1); | ||
582 | |||
583 | return 0; | ||
584 | } | ||
585 | |||
586 | static int __init apm_init(void) | ||
587 | { | ||
588 | int ret; | ||
589 | |||
590 | if (apm_disabled) { | ||
591 | printk(KERN_NOTICE "apm: disabled on user request.\n"); | ||
592 | return -ENODEV; | ||
593 | } | ||
594 | |||
595 | kapmd_tsk = kthread_create(kapmd, NULL, "kapmd"); | ||
596 | if (IS_ERR(kapmd_tsk)) { | ||
597 | ret = PTR_ERR(kapmd_tsk); | ||
598 | kapmd_tsk = NULL; | ||
599 | return ret; | ||
600 | } | ||
601 | kapmd_tsk->flags |= PF_NOFREEZE; | ||
602 | wake_up_process(kapmd_tsk); | ||
603 | |||
604 | #ifdef CONFIG_PROC_FS | ||
605 | create_proc_info_entry("apm", 0, NULL, apm_get_info); | ||
606 | #endif | ||
607 | |||
608 | ret = misc_register(&apm_device); | ||
609 | if (ret != 0) { | ||
610 | remove_proc_entry("apm", NULL); | ||
611 | kthread_stop(kapmd_tsk); | ||
612 | } | ||
613 | |||
614 | return ret; | ||
615 | } | ||
616 | |||
617 | static void __exit apm_exit(void) | ||
618 | { | ||
619 | misc_deregister(&apm_device); | ||
620 | remove_proc_entry("apm", NULL); | ||
621 | |||
622 | kthread_stop(kapmd_tsk); | ||
623 | } | ||
624 | |||
625 | module_init(apm_init); | ||
626 | module_exit(apm_exit); | ||
627 | |||
628 | MODULE_AUTHOR("Stephen Rothwell"); | ||
629 | MODULE_DESCRIPTION("Advanced Power Management"); | ||
630 | MODULE_LICENSE("GPL"); | ||
631 | |||
632 | #ifndef MODULE | ||
633 | static int __init apm_setup(char *str) | ||
634 | { | ||
635 | while ((str != NULL) && (*str != '\0')) { | ||
636 | if (strncmp(str, "off", 3) == 0) | ||
637 | apm_disabled = 1; | ||
638 | if (strncmp(str, "on", 2) == 0) | ||
639 | apm_disabled = 0; | ||
640 | str = strchr(str, ','); | ||
641 | if (str != NULL) | ||
642 | str += strspn(str, ", \t"); | ||
643 | } | ||
644 | return 1; | ||
645 | } | ||
646 | |||
647 | __setup("apm=", apm_setup); | ||
648 | #endif | ||
649 | |||
650 | /** | ||
651 | * apm_queue_event - queue an APM event for kapmd | ||
652 | * @event: APM event | ||
653 | * | ||
654 | * Queue an APM event for kapmd to process and ultimately take the | ||
655 | * appropriate action. Only a subset of events are handled: | ||
656 | * %APM_LOW_BATTERY | ||
657 | * %APM_POWER_STATUS_CHANGE | ||
658 | * %APM_USER_SUSPEND | ||
659 | * %APM_SYS_SUSPEND | ||
660 | * %APM_CRITICAL_SUSPEND | ||
661 | */ | ||
662 | void apm_queue_event(apm_event_t event) | ||
663 | { | ||
664 | unsigned long flags; | ||
665 | |||
666 | spin_lock_irqsave(&kapmd_queue_lock, flags); | ||
667 | queue_add_event(&kapmd_queue, event); | ||
668 | spin_unlock_irqrestore(&kapmd_queue_lock, flags); | ||
669 | |||
670 | wake_up_interruptible(&kapmd_wait); | ||
671 | } | ||
672 | EXPORT_SYMBOL(apm_queue_event); | ||
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index bbab134cd82d..ed522151878b 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -106,7 +106,7 @@ unsigned long phys_initrd_size __initdata = 0; | |||
106 | static struct meminfo meminfo __initdata = { 0, }; | 106 | static struct meminfo meminfo __initdata = { 0, }; |
107 | static const char *cpu_name; | 107 | static const char *cpu_name; |
108 | static const char *machine_name; | 108 | static const char *machine_name; |
109 | static char command_line[COMMAND_LINE_SIZE]; | 109 | static char __initdata command_line[COMMAND_LINE_SIZE]; |
110 | 110 | ||
111 | static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; | 111 | static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; |
112 | static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } }; | 112 | static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } }; |
@@ -803,8 +803,8 @@ void __init setup_arch(char **cmdline_p) | |||
803 | init_mm.end_data = (unsigned long) &_edata; | 803 | init_mm.end_data = (unsigned long) &_edata; |
804 | init_mm.brk = (unsigned long) &_end; | 804 | init_mm.brk = (unsigned long) &_end; |
805 | 805 | ||
806 | memcpy(saved_command_line, from, COMMAND_LINE_SIZE); | 806 | memcpy(boot_command_line, from, COMMAND_LINE_SIZE); |
807 | saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; | 807 | boot_command_line[COMMAND_LINE_SIZE-1] = '\0'; |
808 | parse_cmdline(cmdline_p, from); | 808 | parse_cmdline(cmdline_p, from); |
809 | paging_init(&meminfo, mdesc); | 809 | paging_init(&meminfo, mdesc); |
810 | request_standard_resources(&meminfo, mdesc); | 810 | request_standard_resources(&meminfo, mdesc); |
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index 3c8cdcfe8d4a..ee47c532e210 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -78,16 +78,6 @@ static unsigned long dummy_gettimeoffset(void) | |||
78 | #endif | 78 | #endif |
79 | 79 | ||
80 | /* | 80 | /* |
81 | * Scheduler clock - returns current time in nanosec units. | ||
82 | * This is the default implementation. Sub-architecture | ||
83 | * implementations can override this. | ||
84 | */ | ||
85 | unsigned long long __attribute__((weak)) sched_clock(void) | ||
86 | { | ||
87 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
88 | } | ||
89 | |||
90 | /* | ||
91 | * An implementation of printk_clock() independent from | 81 | * An implementation of printk_clock() independent from |
92 | * sched_clock(). This avoids non-bootable kernels when | 82 | * sched_clock(). This avoids non-bootable kernels when |
93 | * printk_clock is enabled. | 83 | * printk_clock is enabled. |
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index a8fa75ea07a9..b929a60f7547 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -53,10 +53,12 @@ SECTIONS | |||
53 | __security_initcall_start = .; | 53 | __security_initcall_start = .; |
54 | *(.security_initcall.init) | 54 | *(.security_initcall.init) |
55 | __security_initcall_end = .; | 55 | __security_initcall_end = .; |
56 | #ifdef CONFIG_BLK_DEV_INITRD | ||
56 | . = ALIGN(32); | 57 | . = ALIGN(32); |
57 | __initramfs_start = .; | 58 | __initramfs_start = .; |
58 | usr/built-in.o(.init.ramfs) | 59 | usr/built-in.o(.init.ramfs) |
59 | __initramfs_end = .; | 60 | __initramfs_end = .; |
61 | #endif | ||
60 | . = ALIGN(64); | 62 | . = ALIGN(64); |
61 | __per_cpu_start = .; | 63 | __per_cpu_start = .; |
62 | *(.data.percpu) | 64 | *(.data.percpu) |
diff --git a/arch/arm/mach-at91rm9200/clock.c b/arch/arm/mach-at91rm9200/clock.c index 4dee21fefe5a..36a8e4d1cc6d 100644 --- a/arch/arm/mach-at91rm9200/clock.c +++ b/arch/arm/mach-at91rm9200/clock.c | |||
@@ -407,7 +407,7 @@ static int at91_clk_open(struct inode *inode, struct file *file) | |||
407 | return single_open(file, at91_clk_show, NULL); | 407 | return single_open(file, at91_clk_show, NULL); |
408 | } | 408 | } |
409 | 409 | ||
410 | static struct file_operations at91_clk_operations = { | 410 | static const struct file_operations at91_clk_operations = { |
411 | .open = at91_clk_open, | 411 | .open = at91_clk_open, |
412 | .read = seq_read, | 412 | .read = seq_read, |
413 | .llseek = seq_lseek, | 413 | .llseek = seq_lseek, |
diff --git a/arch/arm/mach-at91rm9200/gpio.c b/arch/arm/mach-at91rm9200/gpio.c index af22659c8a28..15eb5b6b29f2 100644 --- a/arch/arm/mach-at91rm9200/gpio.c +++ b/arch/arm/mach-at91rm9200/gpio.c | |||
@@ -65,6 +65,24 @@ static inline unsigned pin_to_mask(unsigned pin) | |||
65 | 65 | ||
66 | 66 | ||
67 | /* | 67 | /* |
68 | * mux the pin to the "GPIO" peripheral role. | ||
69 | */ | ||
70 | int __init_or_module at91_set_GPIO_periph(unsigned pin, int use_pullup) | ||
71 | { | ||
72 | void __iomem *pio = pin_to_controller(pin); | ||
73 | unsigned mask = pin_to_mask(pin); | ||
74 | |||
75 | if (!pio) | ||
76 | return -EINVAL; | ||
77 | __raw_writel(mask, pio + PIO_IDR); | ||
78 | __raw_writel(mask, pio + (use_pullup ? PIO_PUER : PIO_PUDR)); | ||
79 | __raw_writel(mask, pio + PIO_PER); | ||
80 | return 0; | ||
81 | } | ||
82 | EXPORT_SYMBOL(at91_set_GPIO_periph); | ||
83 | |||
84 | |||
85 | /* | ||
68 | * mux the pin to the "A" internal peripheral role. | 86 | * mux the pin to the "A" internal peripheral role. |
69 | */ | 87 | */ |
70 | int __init_or_module at91_set_A_periph(unsigned pin, int use_pullup) | 88 | int __init_or_module at91_set_A_periph(unsigned pin, int use_pullup) |
@@ -181,6 +199,36 @@ EXPORT_SYMBOL(at91_set_multi_drive); | |||
181 | 199 | ||
182 | /*--------------------------------------------------------------------------*/ | 200 | /*--------------------------------------------------------------------------*/ |
183 | 201 | ||
202 | /* new-style GPIO calls; these expect at91_set_GPIO_periph to have been | ||
203 | * called, and maybe at91_set_multi_drive() for putout pins. | ||
204 | */ | ||
205 | |||
206 | int gpio_direction_input(unsigned pin) | ||
207 | { | ||
208 | void __iomem *pio = pin_to_controller(pin); | ||
209 | unsigned mask = pin_to_mask(pin); | ||
210 | |||
211 | if (!pio || !(__raw_readl(pio + PIO_PSR) & mask)) | ||
212 | return -EINVAL; | ||
213 | __raw_writel(mask, pio + PIO_OER); | ||
214 | return 0; | ||
215 | } | ||
216 | EXPORT_SYMBOL(gpio_direction_input); | ||
217 | |||
218 | int gpio_direction_output(unsigned pin) | ||
219 | { | ||
220 | void __iomem *pio = pin_to_controller(pin); | ||
221 | unsigned mask = pin_to_mask(pin); | ||
222 | |||
223 | if (!pio || !(__raw_readl(pio + PIO_PSR) & mask)) | ||
224 | return -EINVAL; | ||
225 | __raw_writel(mask, pio + PIO_OER); | ||
226 | return 0; | ||
227 | } | ||
228 | EXPORT_SYMBOL(gpio_direction_output); | ||
229 | |||
230 | /*--------------------------------------------------------------------------*/ | ||
231 | |||
184 | /* | 232 | /* |
185 | * assuming the pin is muxed as a gpio output, set its value. | 233 | * assuming the pin is muxed as a gpio output, set its value. |
186 | */ | 234 | */ |
diff --git a/arch/arm/mach-pxa/corgi_pm.c b/arch/arm/mach-pxa/corgi_pm.c index 4c3de4008a43..165017de8d0d 100644 --- a/arch/arm/mach-pxa/corgi_pm.c +++ b/arch/arm/mach-pxa/corgi_pm.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | #include <asm/apm.h> | 19 | #include <asm/apm-emulation.h> |
20 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
21 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
22 | #include <asm/hardware.h> | 22 | #include <asm/hardware.h> |
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c index db6e8f56a75f..b1d8cfca245a 100644 --- a/arch/arm/mach-pxa/sharpsl_pm.c +++ b/arch/arm/mach-pxa/sharpsl_pm.c | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | #include <asm/hardware.h> | 24 | #include <asm/hardware.h> |
25 | #include <asm/mach-types.h> | 25 | #include <asm/mach-types.h> |
26 | #include <asm/apm.h> | 26 | #include <asm/apm-emulation.h> |
27 | #include <asm/arch/pm.h> | 27 | #include <asm/arch/pm.h> |
28 | #include <asm/arch/pxa-regs.h> | 28 | #include <asm/arch/pxa-regs.h> |
29 | #include <asm/arch/sharpsl.h> | 29 | #include <asm/arch/sharpsl.h> |
diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c index 40be833079c7..b97d543d9364 100644 --- a/arch/arm/mach-pxa/spitz_pm.c +++ b/arch/arm/mach-pxa/spitz_pm.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | #include <asm/apm.h> | 19 | #include <asm/apm-emulation.h> |
20 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
21 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
22 | #include <asm/hardware.h> | 22 | #include <asm/hardware.h> |
diff --git a/arch/arm26/Kconfig b/arch/arm26/Kconfig index 74eba8b5a8ca..989113dce415 100644 --- a/arch/arm26/Kconfig +++ b/arch/arm26/Kconfig | |||
@@ -60,6 +60,10 @@ config GENERIC_CALIBRATE_DELAY | |||
60 | config GENERIC_BUST_SPINLOCK | 60 | config GENERIC_BUST_SPINLOCK |
61 | bool | 61 | bool |
62 | 62 | ||
63 | config ZONE_DMA | ||
64 | bool | ||
65 | default y | ||
66 | |||
63 | config GENERIC_ISA_DMA | 67 | config GENERIC_ISA_DMA |
64 | bool | 68 | bool |
65 | 69 | ||
diff --git a/arch/arm26/kernel/ecard.c b/arch/arm26/kernel/ecard.c index 9dbc17247c6f..e2bcefc91cc3 100644 --- a/arch/arm26/kernel/ecard.c +++ b/arch/arm26/kernel/ecard.c | |||
@@ -665,7 +665,7 @@ ecard_probe(int slot, card_type_t type) | |||
665 | ec->fiqmask = 4; | 665 | ec->fiqmask = 4; |
666 | } | 666 | } |
667 | 667 | ||
668 | for (i = 0; i < sizeof(blacklist) / sizeof(*blacklist); i++) | 668 | for (i = 0; i < ARRAY_SIZE(blacklist); i++) |
669 | if (blacklist[i].manufacturer == ec->cid.manufacturer && | 669 | if (blacklist[i].manufacturer == ec->cid.manufacturer && |
670 | blacklist[i].product == ec->cid.product) { | 670 | blacklist[i].product == ec->cid.product) { |
671 | ec->card_desc = blacklist[i].type; | 671 | ec->card_desc = blacklist[i].type; |
diff --git a/arch/arm26/kernel/setup.c b/arch/arm26/kernel/setup.c index 466ddb54b44f..0e006c6cd5a0 100644 --- a/arch/arm26/kernel/setup.c +++ b/arch/arm26/kernel/setup.c | |||
@@ -80,7 +80,7 @@ unsigned long phys_initrd_size __initdata = 0; | |||
80 | static struct meminfo meminfo __initdata = { 0, }; | 80 | static struct meminfo meminfo __initdata = { 0, }; |
81 | static struct proc_info_item proc_info; | 81 | static struct proc_info_item proc_info; |
82 | static const char *machine_name; | 82 | static const char *machine_name; |
83 | static char command_line[COMMAND_LINE_SIZE]; | 83 | static char __initdata command_line[COMMAND_LINE_SIZE]; |
84 | 84 | ||
85 | static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; | 85 | static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; |
86 | 86 | ||
@@ -492,8 +492,8 @@ void __init setup_arch(char **cmdline_p) | |||
492 | init_mm.end_data = (unsigned long) &_edata; | 492 | init_mm.end_data = (unsigned long) &_edata; |
493 | init_mm.brk = (unsigned long) &_end; | 493 | init_mm.brk = (unsigned long) &_end; |
494 | 494 | ||
495 | memcpy(saved_command_line, from, COMMAND_LINE_SIZE); | 495 | memcpy(boot_command_line, from, COMMAND_LINE_SIZE); |
496 | saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; | 496 | boot_command_line[COMMAND_LINE_SIZE-1] = '\0'; |
497 | parse_cmdline(&meminfo, cmdline_p, from); | 497 | parse_cmdline(&meminfo, cmdline_p, from); |
498 | bootmem_init(&meminfo); | 498 | bootmem_init(&meminfo); |
499 | paging_init(&meminfo); | 499 | paging_init(&meminfo); |
diff --git a/arch/arm26/kernel/time.c b/arch/arm26/kernel/time.c index 1206469b2b86..0f1d57fbd3d7 100644 --- a/arch/arm26/kernel/time.c +++ b/arch/arm26/kernel/time.c | |||
@@ -89,14 +89,6 @@ static unsigned long gettimeoffset(void) | |||
89 | return (offset + LATCH/2) / LATCH; | 89 | return (offset + LATCH/2) / LATCH; |
90 | } | 90 | } |
91 | 91 | ||
92 | /* | ||
93 | * Scheduler clock - returns current time in nanosec units. | ||
94 | */ | ||
95 | unsigned long long sched_clock(void) | ||
96 | { | ||
97 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
98 | } | ||
99 | |||
100 | static unsigned long next_rtc_update; | 92 | static unsigned long next_rtc_update; |
101 | 93 | ||
102 | /* | 94 | /* |
diff --git a/arch/arm26/kernel/vmlinux-arm26-xip.lds.in b/arch/arm26/kernel/vmlinux-arm26-xip.lds.in index ca61ec8218fe..046a85054018 100644 --- a/arch/arm26/kernel/vmlinux-arm26-xip.lds.in +++ b/arch/arm26/kernel/vmlinux-arm26-xip.lds.in | |||
@@ -46,10 +46,12 @@ SECTIONS | |||
46 | __con_initcall_start = .; | 46 | __con_initcall_start = .; |
47 | *(.con_initcall.init) | 47 | *(.con_initcall.init) |
48 | __con_initcall_end = .; | 48 | __con_initcall_end = .; |
49 | #ifdef CONFIG_BLK_DEV_INITRD | ||
49 | . = ALIGN(32); | 50 | . = ALIGN(32); |
50 | __initramfs_start = .; | 51 | __initramfs_start = .; |
51 | usr/built-in.o(.init.ramfs) | 52 | usr/built-in.o(.init.ramfs) |
52 | __initramfs_end = .; | 53 | __initramfs_end = .; |
54 | #endif | ||
53 | . = ALIGN(32768); | 55 | . = ALIGN(32768); |
54 | __init_end = .; | 56 | __init_end = .; |
55 | } | 57 | } |
diff --git a/arch/arm26/kernel/vmlinux-arm26.lds.in b/arch/arm26/kernel/vmlinux-arm26.lds.in index d1d3418d7eb6..1d2949e83be8 100644 --- a/arch/arm26/kernel/vmlinux-arm26.lds.in +++ b/arch/arm26/kernel/vmlinux-arm26.lds.in | |||
@@ -47,10 +47,12 @@ SECTIONS | |||
47 | __con_initcall_start = .; | 47 | __con_initcall_start = .; |
48 | *(.con_initcall.init) | 48 | *(.con_initcall.init) |
49 | __con_initcall_end = .; | 49 | __con_initcall_end = .; |
50 | #ifdef CONFIG_BLK_DEV_INITRD | ||
50 | . = ALIGN(32); | 51 | . = ALIGN(32); |
51 | __initramfs_start = .; | 52 | __initramfs_start = .; |
52 | usr/built-in.o(.init.ramfs) | 53 | usr/built-in.o(.init.ramfs) |
53 | __initramfs_end = .; | 54 | __initramfs_end = .; |
55 | #endif | ||
54 | . = ALIGN(32768); | 56 | . = ALIGN(32768); |
55 | __init_end = .; | 57 | __init_end = .; |
56 | } | 58 | } |
diff --git a/arch/avr32/boards/atstk1000/Makefile b/arch/avr32/boards/atstk1000/Makefile index df9499480530..8e0992201bb9 100644 --- a/arch/avr32/boards/atstk1000/Makefile +++ b/arch/avr32/boards/atstk1000/Makefile | |||
@@ -1,2 +1,2 @@ | |||
1 | obj-y += setup.o spi.o flash.o | 1 | obj-y += setup.o flash.o |
2 | obj-$(CONFIG_BOARD_ATSTK1002) += atstk1002.o | 2 | obj-$(CONFIG_BOARD_ATSTK1002) += atstk1002.o |
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c index 32b361f31c2c..d47e39f0e971 100644 --- a/arch/avr32/boards/atstk1000/atstk1002.c +++ b/arch/avr32/boards/atstk1000/atstk1002.c | |||
@@ -8,17 +8,24 @@ | |||
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | #include <linux/clk.h> | 10 | #include <linux/clk.h> |
11 | #include <linux/device.h> | ||
11 | #include <linux/etherdevice.h> | 12 | #include <linux/etherdevice.h> |
12 | #include <linux/init.h> | 13 | #include <linux/init.h> |
13 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
14 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
15 | #include <linux/string.h> | 16 | #include <linux/string.h> |
16 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <linux/spi/spi.h> | ||
17 | 19 | ||
18 | #include <asm/io.h> | 20 | #include <asm/io.h> |
19 | #include <asm/setup.h> | 21 | #include <asm/setup.h> |
22 | #include <asm/arch/at32ap7000.h> | ||
20 | #include <asm/arch/board.h> | 23 | #include <asm/arch/board.h> |
21 | #include <asm/arch/init.h> | 24 | #include <asm/arch/init.h> |
25 | #include <asm/arch/portmux.h> | ||
26 | |||
27 | |||
28 | #define SW2_DEFAULT /* MMCI and UART_A available */ | ||
22 | 29 | ||
23 | struct eth_addr { | 30 | struct eth_addr { |
24 | u8 addr[6]; | 31 | u8 addr[6]; |
@@ -29,6 +36,16 @@ static struct eth_addr __initdata hw_addr[2]; | |||
29 | static struct eth_platform_data __initdata eth_data[2]; | 36 | static struct eth_platform_data __initdata eth_data[2]; |
30 | extern struct lcdc_platform_data atstk1000_fb0_data; | 37 | extern struct lcdc_platform_data atstk1000_fb0_data; |
31 | 38 | ||
39 | static struct spi_board_info spi_board_info[] __initdata = { | ||
40 | { | ||
41 | .modalias = "ltv350qv", | ||
42 | .controller_data = (void *)GPIO_PIN_PA(4), | ||
43 | .max_speed_hz = 16000000, | ||
44 | .bus_num = 0, | ||
45 | .chip_select = 1, | ||
46 | }, | ||
47 | }; | ||
48 | |||
32 | /* | 49 | /* |
33 | * The next two functions should go away as the boot loader is | 50 | * The next two functions should go away as the boot loader is |
34 | * supposed to initialize the macb address registers with a valid | 51 | * supposed to initialize the macb address registers with a valid |
@@ -86,23 +103,53 @@ static void __init set_hw_addr(struct platform_device *pdev) | |||
86 | 103 | ||
87 | void __init setup_board(void) | 104 | void __init setup_board(void) |
88 | { | 105 | { |
89 | at32_map_usart(1, 0); /* /dev/ttyS0 */ | 106 | #ifdef SW2_DEFAULT |
90 | at32_map_usart(2, 1); /* /dev/ttyS1 */ | 107 | at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */ |
91 | at32_map_usart(3, 2); /* /dev/ttyS2 */ | 108 | #else |
109 | at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */ | ||
110 | #endif | ||
111 | /* USART 2/unused: expansion connector */ | ||
112 | at32_map_usart(3, 2); /* USART 3/C: /dev/ttyS2, DB9 */ | ||
92 | 113 | ||
93 | at32_setup_serial_console(0); | 114 | at32_setup_serial_console(0); |
94 | } | 115 | } |
95 | 116 | ||
96 | static int __init atstk1002_init(void) | 117 | static int __init atstk1002_init(void) |
97 | { | 118 | { |
119 | /* | ||
120 | * ATSTK1000 uses 32-bit SDRAM interface. Reserve the | ||
121 | * SDRAM-specific pins so that nobody messes with them. | ||
122 | */ | ||
123 | at32_reserve_pin(GPIO_PIN_PE(0)); /* DATA[16] */ | ||
124 | at32_reserve_pin(GPIO_PIN_PE(1)); /* DATA[17] */ | ||
125 | at32_reserve_pin(GPIO_PIN_PE(2)); /* DATA[18] */ | ||
126 | at32_reserve_pin(GPIO_PIN_PE(3)); /* DATA[19] */ | ||
127 | at32_reserve_pin(GPIO_PIN_PE(4)); /* DATA[20] */ | ||
128 | at32_reserve_pin(GPIO_PIN_PE(5)); /* DATA[21] */ | ||
129 | at32_reserve_pin(GPIO_PIN_PE(6)); /* DATA[22] */ | ||
130 | at32_reserve_pin(GPIO_PIN_PE(7)); /* DATA[23] */ | ||
131 | at32_reserve_pin(GPIO_PIN_PE(8)); /* DATA[24] */ | ||
132 | at32_reserve_pin(GPIO_PIN_PE(9)); /* DATA[25] */ | ||
133 | at32_reserve_pin(GPIO_PIN_PE(10)); /* DATA[26] */ | ||
134 | at32_reserve_pin(GPIO_PIN_PE(11)); /* DATA[27] */ | ||
135 | at32_reserve_pin(GPIO_PIN_PE(12)); /* DATA[28] */ | ||
136 | at32_reserve_pin(GPIO_PIN_PE(13)); /* DATA[29] */ | ||
137 | at32_reserve_pin(GPIO_PIN_PE(14)); /* DATA[30] */ | ||
138 | at32_reserve_pin(GPIO_PIN_PE(15)); /* DATA[31] */ | ||
139 | at32_reserve_pin(GPIO_PIN_PE(26)); /* SDCS */ | ||
140 | |||
98 | at32_add_system_devices(); | 141 | at32_add_system_devices(); |
99 | 142 | ||
143 | #ifdef SW2_DEFAULT | ||
100 | at32_add_device_usart(0); | 144 | at32_add_device_usart(0); |
145 | #else | ||
101 | at32_add_device_usart(1); | 146 | at32_add_device_usart(1); |
147 | #endif | ||
102 | at32_add_device_usart(2); | 148 | at32_add_device_usart(2); |
103 | 149 | ||
104 | set_hw_addr(at32_add_device_eth(0, ð_data[0])); | 150 | set_hw_addr(at32_add_device_eth(0, ð_data[0])); |
105 | 151 | ||
152 | spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); | ||
106 | at32_add_device_spi(0); | 153 | at32_add_device_spi(0); |
107 | at32_add_device_lcdc(0, &atstk1000_fb0_data); | 154 | at32_add_device_lcdc(0, &atstk1000_fb0_data); |
108 | 155 | ||
diff --git a/arch/avr32/boards/atstk1000/spi.c b/arch/avr32/boards/atstk1000/spi.c deleted file mode 100644 index 567726c82c6e..000000000000 --- a/arch/avr32/boards/atstk1000/spi.c +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | /* | ||
2 | * ATSTK1000 SPI devices | ||
3 | * | ||
4 | * Copyright (C) 2005 Atmel Norway | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #include <linux/device.h> | ||
11 | #include <linux/spi/spi.h> | ||
12 | |||
13 | static struct spi_board_info spi_board_info[] __initdata = { | ||
14 | { | ||
15 | .modalias = "ltv350qv", | ||
16 | .max_speed_hz = 16000000, | ||
17 | .bus_num = 0, | ||
18 | .chip_select = 1, | ||
19 | }, | ||
20 | }; | ||
21 | |||
22 | static int board_init_spi(void) | ||
23 | { | ||
24 | spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); | ||
25 | return 0; | ||
26 | } | ||
27 | arch_initcall(board_init_spi); | ||
diff --git a/arch/avr32/kernel/cpu.c b/arch/avr32/kernel/cpu.c index 342452ba2049..2e72fd2699df 100644 --- a/arch/avr32/kernel/cpu.c +++ b/arch/avr32/kernel/cpu.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/sysdev.h> | 9 | #include <linux/sysdev.h> |
10 | #include <linux/seq_file.h> | 10 | #include <linux/seq_file.h> |
11 | #include <linux/cpu.h> | 11 | #include <linux/cpu.h> |
12 | #include <linux/module.h> | ||
12 | #include <linux/percpu.h> | 13 | #include <linux/percpu.h> |
13 | #include <linux/param.h> | 14 | #include <linux/param.h> |
14 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
diff --git a/arch/avr32/kernel/irq.c b/arch/avr32/kernel/irq.c index 856f3548e664..fd311248c143 100644 --- a/arch/avr32/kernel/irq.c +++ b/arch/avr32/kernel/irq.c | |||
@@ -57,6 +57,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
57 | seq_printf(p, "%3d: ", i); | 57 | seq_printf(p, "%3d: ", i); |
58 | for_each_online_cpu(cpu) | 58 | for_each_online_cpu(cpu) |
59 | seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[i]); | 59 | seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[i]); |
60 | seq_printf(p, " %8s", irq_desc[i].chip->name ? : "-"); | ||
60 | seq_printf(p, " %s", action->name); | 61 | seq_printf(p, " %s", action->name); |
61 | for (action = action->next; action; action = action->next) | 62 | for (action = action->next; action; action = action->next) |
62 | seq_printf(p, ", %s", action->name); | 63 | seq_printf(p, ", %s", action->name); |
diff --git a/arch/avr32/kernel/setup.c b/arch/avr32/kernel/setup.c index a34211601008..a1a7c3c3f522 100644 --- a/arch/avr32/kernel/setup.c +++ b/arch/avr32/kernel/setup.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
17 | #include <linux/root_dev.h> | 17 | #include <linux/root_dev.h> |
18 | #include <linux/cpu.h> | 18 | #include <linux/cpu.h> |
19 | #include <linux/kernel.h> | ||
19 | 20 | ||
20 | #include <asm/sections.h> | 21 | #include <asm/sections.h> |
21 | #include <asm/processor.h> | 22 | #include <asm/processor.h> |
@@ -44,7 +45,7 @@ struct avr32_cpuinfo boot_cpu_data = { | |||
44 | }; | 45 | }; |
45 | EXPORT_SYMBOL(boot_cpu_data); | 46 | EXPORT_SYMBOL(boot_cpu_data); |
46 | 47 | ||
47 | static char command_line[COMMAND_LINE_SIZE]; | 48 | static char __initdata command_line[COMMAND_LINE_SIZE]; |
48 | 49 | ||
49 | /* | 50 | /* |
50 | * Should be more than enough, but if you have a _really_ complex | 51 | * Should be more than enough, but if you have a _really_ complex |
@@ -174,8 +175,7 @@ static int __init parse_tag_mem_range(struct tag *tag, | |||
174 | * Copy the data so the bootmem init code doesn't need to care | 175 | * Copy the data so the bootmem init code doesn't need to care |
175 | * about it. | 176 | * about it. |
176 | */ | 177 | */ |
177 | if (mem_range_next_free >= | 178 | if (mem_range_next_free >= ARRAY_SIZE(mem_range_cache)) |
178 | (sizeof(mem_range_cache) / sizeof(mem_range_cache[0]))) | ||
179 | panic("Physical memory map too complex!\n"); | 179 | panic("Physical memory map too complex!\n"); |
180 | 180 | ||
181 | new = &mem_range_cache[mem_range_next_free++]; | 181 | new = &mem_range_cache[mem_range_next_free++]; |
@@ -202,7 +202,7 @@ __tagtable(ATAG_MEM, parse_tag_mem); | |||
202 | 202 | ||
203 | static int __init parse_tag_cmdline(struct tag *tag) | 203 | static int __init parse_tag_cmdline(struct tag *tag) |
204 | { | 204 | { |
205 | strlcpy(saved_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE); | 205 | strlcpy(boot_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE); |
206 | return 0; | 206 | return 0; |
207 | } | 207 | } |
208 | __tagtable(ATAG_CMDLINE, parse_tag_cmdline); | 208 | __tagtable(ATAG_CMDLINE, parse_tag_cmdline); |
@@ -294,7 +294,7 @@ void __init setup_arch (char **cmdline_p) | |||
294 | init_mm.end_data = (unsigned long) &_edata; | 294 | init_mm.end_data = (unsigned long) &_edata; |
295 | init_mm.brk = (unsigned long) &_end; | 295 | init_mm.brk = (unsigned long) &_end; |
296 | 296 | ||
297 | strlcpy(command_line, saved_command_line, COMMAND_LINE_SIZE); | 297 | strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); |
298 | *cmdline_p = command_line; | 298 | *cmdline_p = command_line; |
299 | parse_early_param(); | 299 | parse_early_param(); |
300 | 300 | ||
diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c index 5a247ba71a72..a2f74affaa98 100644 --- a/arch/avr32/kernel/time.c +++ b/arch/avr32/kernel/time.c | |||
@@ -110,15 +110,6 @@ static void avr32_hpt_init(unsigned int count) | |||
110 | } | 110 | } |
111 | 111 | ||
112 | /* | 112 | /* |
113 | * Scheduler clock - returns current time in nanosec units. | ||
114 | */ | ||
115 | unsigned long long sched_clock(void) | ||
116 | { | ||
117 | /* There must be better ways...? */ | ||
118 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
119 | } | ||
120 | |||
121 | /* | ||
122 | * local_timer_interrupt() does profiling and process accounting on a | 113 | * local_timer_interrupt() does profiling and process accounting on a |
123 | * per-CPU basis. | 114 | * per-CPU basis. |
124 | * | 115 | * |
diff --git a/arch/avr32/kernel/vmlinux.lds.c b/arch/avr32/kernel/vmlinux.lds.c index 5c4424e362b5..ef13b7c78935 100644 --- a/arch/avr32/kernel/vmlinux.lds.c +++ b/arch/avr32/kernel/vmlinux.lds.c | |||
@@ -46,10 +46,12 @@ SECTIONS | |||
46 | __security_initcall_start = .; | 46 | __security_initcall_start = .; |
47 | *(.security_initcall.init) | 47 | *(.security_initcall.init) |
48 | __security_initcall_end = .; | 48 | __security_initcall_end = .; |
49 | #ifdef CONFIG_BLK_DEV_INITRD | ||
49 | . = ALIGN(32); | 50 | . = ALIGN(32); |
50 | __initramfs_start = .; | 51 | __initramfs_start = .; |
51 | *(.init.ramfs) | 52 | *(.init.ramfs) |
52 | __initramfs_end = .; | 53 | __initramfs_end = .; |
54 | #endif | ||
53 | . = ALIGN(4096); | 55 | . = ALIGN(4096); |
54 | __init_end = .; | 56 | __init_end = .; |
55 | } | 57 | } |
diff --git a/arch/avr32/lib/libgcc.h b/arch/avr32/lib/libgcc.h deleted file mode 100644 index 5a091b5e3618..000000000000 --- a/arch/avr32/lib/libgcc.h +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | /* Definitions for various functions 'borrowed' from gcc-3.4.3 */ | ||
2 | |||
3 | #define BITS_PER_UNIT 8 | ||
4 | |||
5 | typedef int QItype __attribute__ ((mode (QI))); | ||
6 | typedef unsigned int UQItype __attribute__ ((mode (QI))); | ||
7 | typedef int HItype __attribute__ ((mode (HI))); | ||
8 | typedef unsigned int UHItype __attribute__ ((mode (HI))); | ||
9 | typedef int SItype __attribute__ ((mode (SI))); | ||
10 | typedef unsigned int USItype __attribute__ ((mode (SI))); | ||
11 | typedef int DItype __attribute__ ((mode (DI))); | ||
12 | typedef unsigned int UDItype __attribute__ ((mode (DI))); | ||
13 | typedef float SFtype __attribute__ ((mode (SF))); | ||
14 | typedef float DFtype __attribute__ ((mode (DF))); | ||
15 | typedef int word_type __attribute__ ((mode (__word__))); | ||
16 | |||
17 | #define W_TYPE_SIZE (4 * BITS_PER_UNIT) | ||
18 | #define Wtype SItype | ||
19 | #define UWtype USItype | ||
20 | #define HWtype SItype | ||
21 | #define UHWtype USItype | ||
22 | #define DWtype DItype | ||
23 | #define UDWtype UDItype | ||
24 | #define __NW(a,b) __ ## a ## si ## b | ||
25 | #define __NDW(a,b) __ ## a ## di ## b | ||
26 | |||
27 | struct DWstruct {Wtype high, low;}; | ||
28 | |||
29 | typedef union | ||
30 | { | ||
31 | struct DWstruct s; | ||
32 | DWtype ll; | ||
33 | } DWunion; | ||
diff --git a/arch/avr32/lib/longlong.h b/arch/avr32/lib/longlong.h deleted file mode 100644 index cd5e369ac437..000000000000 --- a/arch/avr32/lib/longlong.h +++ /dev/null | |||
@@ -1,98 +0,0 @@ | |||
1 | /* longlong.h -- definitions for mixed size 32/64 bit arithmetic. | ||
2 | Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000 | ||
3 | Free Software Foundation, Inc. | ||
4 | |||
5 | This definition file is free software; you can redistribute it | ||
6 | and/or modify it under the terms of the GNU General Public | ||
7 | License as published by the Free Software Foundation; either | ||
8 | version 2, or (at your option) any later version. | ||
9 | |||
10 | This definition file is distributed in the hope that it will be | ||
11 | useful, but WITHOUT ANY WARRANTY; without even the implied | ||
12 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | See the GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, | ||
18 | Boston, MA 02111-1307, USA. */ | ||
19 | |||
20 | /* Borrowed from gcc-3.4.3 */ | ||
21 | |||
22 | #define __BITS4 (W_TYPE_SIZE / 4) | ||
23 | #define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2)) | ||
24 | #define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1)) | ||
25 | #define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2)) | ||
26 | |||
27 | #define count_leading_zeros(count, x) ((count) = __builtin_clz(x)) | ||
28 | |||
29 | #define __udiv_qrnnd_c(q, r, n1, n0, d) \ | ||
30 | do { \ | ||
31 | UWtype __d1, __d0, __q1, __q0; \ | ||
32 | UWtype __r1, __r0, __m; \ | ||
33 | __d1 = __ll_highpart (d); \ | ||
34 | __d0 = __ll_lowpart (d); \ | ||
35 | \ | ||
36 | __r1 = (n1) % __d1; \ | ||
37 | __q1 = (n1) / __d1; \ | ||
38 | __m = (UWtype) __q1 * __d0; \ | ||
39 | __r1 = __r1 * __ll_B | __ll_highpart (n0); \ | ||
40 | if (__r1 < __m) \ | ||
41 | { \ | ||
42 | __q1--, __r1 += (d); \ | ||
43 | if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\ | ||
44 | if (__r1 < __m) \ | ||
45 | __q1--, __r1 += (d); \ | ||
46 | } \ | ||
47 | __r1 -= __m; \ | ||
48 | \ | ||
49 | __r0 = __r1 % __d1; \ | ||
50 | __q0 = __r1 / __d1; \ | ||
51 | __m = (UWtype) __q0 * __d0; \ | ||
52 | __r0 = __r0 * __ll_B | __ll_lowpart (n0); \ | ||
53 | if (__r0 < __m) \ | ||
54 | { \ | ||
55 | __q0--, __r0 += (d); \ | ||
56 | if (__r0 >= (d)) \ | ||
57 | if (__r0 < __m) \ | ||
58 | __q0--, __r0 += (d); \ | ||
59 | } \ | ||
60 | __r0 -= __m; \ | ||
61 | \ | ||
62 | (q) = (UWtype) __q1 * __ll_B | __q0; \ | ||
63 | (r) = __r0; \ | ||
64 | } while (0) | ||
65 | |||
66 | #define udiv_qrnnd __udiv_qrnnd_c | ||
67 | |||
68 | #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ | ||
69 | do { \ | ||
70 | UWtype __x; \ | ||
71 | __x = (al) - (bl); \ | ||
72 | (sh) = (ah) - (bh) - (__x > (al)); \ | ||
73 | (sl) = __x; \ | ||
74 | } while (0) | ||
75 | |||
76 | #define umul_ppmm(w1, w0, u, v) \ | ||
77 | do { \ | ||
78 | UWtype __x0, __x1, __x2, __x3; \ | ||
79 | UHWtype __ul, __vl, __uh, __vh; \ | ||
80 | \ | ||
81 | __ul = __ll_lowpart (u); \ | ||
82 | __uh = __ll_highpart (u); \ | ||
83 | __vl = __ll_lowpart (v); \ | ||
84 | __vh = __ll_highpart (v); \ | ||
85 | \ | ||
86 | __x0 = (UWtype) __ul * __vl; \ | ||
87 | __x1 = (UWtype) __ul * __vh; \ | ||
88 | __x2 = (UWtype) __uh * __vl; \ | ||
89 | __x3 = (UWtype) __uh * __vh; \ | ||
90 | \ | ||
91 | __x1 += __ll_highpart (__x0);/* this can't give carry */ \ | ||
92 | __x1 += __x2; /* but this indeed can */ \ | ||
93 | if (__x1 < __x2) /* did we get it? */ \ | ||
94 | __x3 += __ll_B; /* yes, add it in the proper pos. */ \ | ||
95 | \ | ||
96 | (w1) = __x3 + __ll_highpart (__x1); \ | ||
97 | (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \ | ||
98 | } while (0) | ||
diff --git a/arch/avr32/mach-at32ap/Makefile b/arch/avr32/mach-at32ap/Makefile index f62eb6915510..b21bea9af8b1 100644 --- a/arch/avr32/mach-at32ap/Makefile +++ b/arch/avr32/mach-at32ap/Makefile | |||
@@ -1,2 +1,2 @@ | |||
1 | obj-y += at32ap.o clock.o pio.o intc.o extint.o hsmc.o | 1 | obj-y += at32ap.o clock.o intc.o extint.o pio.o hsmc.o |
2 | obj-$(CONFIG_CPU_AT32AP7000) += at32ap7000.o | 2 | obj-$(CONFIG_CPU_AT32AP7000) += at32ap7000.o |
diff --git a/arch/avr32/mach-at32ap/at32ap7000.c b/arch/avr32/mach-at32ap/at32ap7000.c index 48f4ef38c70e..c1e477ec7576 100644 --- a/arch/avr32/mach-at32ap/at32ap7000.c +++ b/arch/avr32/mach-at32ap/at32ap7000.c | |||
@@ -496,9 +496,16 @@ static struct resource pio3_resource[] = { | |||
496 | DEFINE_DEV(pio, 3); | 496 | DEFINE_DEV(pio, 3); |
497 | DEV_CLK(mck, pio3, pba, 13); | 497 | DEV_CLK(mck, pio3, pba, 13); |
498 | 498 | ||
499 | static struct resource pio4_resource[] = { | ||
500 | PBMEM(0xffe03800), | ||
501 | IRQ(17), | ||
502 | }; | ||
503 | DEFINE_DEV(pio, 4); | ||
504 | DEV_CLK(mck, pio4, pba, 14); | ||
505 | |||
499 | void __init at32_add_system_devices(void) | 506 | void __init at32_add_system_devices(void) |
500 | { | 507 | { |
501 | system_manager.eim_first_irq = NR_INTERNAL_IRQS; | 508 | system_manager.eim_first_irq = EIM_IRQ_BASE; |
502 | 509 | ||
503 | platform_device_register(&at32_sm_device); | 510 | platform_device_register(&at32_sm_device); |
504 | platform_device_register(&at32_intc0_device); | 511 | platform_device_register(&at32_intc0_device); |
@@ -509,6 +516,7 @@ void __init at32_add_system_devices(void) | |||
509 | platform_device_register(&pio1_device); | 516 | platform_device_register(&pio1_device); |
510 | platform_device_register(&pio2_device); | 517 | platform_device_register(&pio2_device); |
511 | platform_device_register(&pio3_device); | 518 | platform_device_register(&pio3_device); |
519 | platform_device_register(&pio4_device); | ||
512 | } | 520 | } |
513 | 521 | ||
514 | /* -------------------------------------------------------------------- | 522 | /* -------------------------------------------------------------------- |
@@ -521,7 +529,7 @@ static struct atmel_uart_data atmel_usart0_data = { | |||
521 | }; | 529 | }; |
522 | static struct resource atmel_usart0_resource[] = { | 530 | static struct resource atmel_usart0_resource[] = { |
523 | PBMEM(0xffe00c00), | 531 | PBMEM(0xffe00c00), |
524 | IRQ(7), | 532 | IRQ(6), |
525 | }; | 533 | }; |
526 | DEFINE_DEV_DATA(atmel_usart, 0); | 534 | DEFINE_DEV_DATA(atmel_usart, 0); |
527 | DEV_CLK(usart, atmel_usart0, pba, 4); | 535 | DEV_CLK(usart, atmel_usart0, pba, 4); |
@@ -583,7 +591,7 @@ static inline void configure_usart3_pins(void) | |||
583 | select_peripheral(PB(17), PERIPH_B, 0); /* TXD */ | 591 | select_peripheral(PB(17), PERIPH_B, 0); /* TXD */ |
584 | } | 592 | } |
585 | 593 | ||
586 | static struct platform_device *at32_usarts[4]; | 594 | static struct platform_device *__initdata at32_usarts[4]; |
587 | 595 | ||
588 | void __init at32_map_usart(unsigned int hw_id, unsigned int line) | 596 | void __init at32_map_usart(unsigned int hw_id, unsigned int line) |
589 | { | 597 | { |
@@ -728,12 +736,19 @@ at32_add_device_eth(unsigned int id, struct eth_platform_data *data) | |||
728 | /* -------------------------------------------------------------------- | 736 | /* -------------------------------------------------------------------- |
729 | * SPI | 737 | * SPI |
730 | * -------------------------------------------------------------------- */ | 738 | * -------------------------------------------------------------------- */ |
731 | static struct resource spi0_resource[] = { | 739 | static struct resource atmel_spi0_resource[] = { |
732 | PBMEM(0xffe00000), | 740 | PBMEM(0xffe00000), |
733 | IRQ(3), | 741 | IRQ(3), |
734 | }; | 742 | }; |
735 | DEFINE_DEV(spi, 0); | 743 | DEFINE_DEV(atmel_spi, 0); |
736 | DEV_CLK(mck, spi0, pba, 0); | 744 | DEV_CLK(spi_clk, atmel_spi0, pba, 0); |
745 | |||
746 | static struct resource atmel_spi1_resource[] = { | ||
747 | PBMEM(0xffe00400), | ||
748 | IRQ(4), | ||
749 | }; | ||
750 | DEFINE_DEV(atmel_spi, 1); | ||
751 | DEV_CLK(spi_clk, atmel_spi1, pba, 1); | ||
737 | 752 | ||
738 | struct platform_device *__init at32_add_device_spi(unsigned int id) | 753 | struct platform_device *__init at32_add_device_spi(unsigned int id) |
739 | { | 754 | { |
@@ -741,13 +756,33 @@ struct platform_device *__init at32_add_device_spi(unsigned int id) | |||
741 | 756 | ||
742 | switch (id) { | 757 | switch (id) { |
743 | case 0: | 758 | case 0: |
744 | pdev = &spi0_device; | 759 | pdev = &atmel_spi0_device; |
745 | select_peripheral(PA(0), PERIPH_A, 0); /* MISO */ | 760 | select_peripheral(PA(0), PERIPH_A, 0); /* MISO */ |
746 | select_peripheral(PA(1), PERIPH_A, 0); /* MOSI */ | 761 | select_peripheral(PA(1), PERIPH_A, 0); /* MOSI */ |
747 | select_peripheral(PA(2), PERIPH_A, 0); /* SCK */ | 762 | select_peripheral(PA(2), PERIPH_A, 0); /* SCK */ |
748 | select_peripheral(PA(3), PERIPH_A, 0); /* NPCS0 */ | 763 | |
749 | select_peripheral(PA(4), PERIPH_A, 0); /* NPCS1 */ | 764 | /* NPCS[2:0] */ |
750 | select_peripheral(PA(5), PERIPH_A, 0); /* NPCS2 */ | 765 | at32_select_gpio(GPIO_PIN_PA(3), |
766 | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); | ||
767 | at32_select_gpio(GPIO_PIN_PA(4), | ||
768 | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); | ||
769 | at32_select_gpio(GPIO_PIN_PA(5), | ||
770 | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); | ||
771 | break; | ||
772 | |||
773 | case 1: | ||
774 | pdev = &atmel_spi1_device; | ||
775 | select_peripheral(PB(0), PERIPH_B, 0); /* MISO */ | ||
776 | select_peripheral(PB(1), PERIPH_B, 0); /* MOSI */ | ||
777 | select_peripheral(PB(5), PERIPH_B, 0); /* SCK */ | ||
778 | |||
779 | /* NPCS[2:0] */ | ||
780 | at32_select_gpio(GPIO_PIN_PB(2), | ||
781 | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); | ||
782 | at32_select_gpio(GPIO_PIN_PB(3), | ||
783 | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); | ||
784 | at32_select_gpio(GPIO_PIN_PB(4), | ||
785 | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); | ||
751 | break; | 786 | break; |
752 | 787 | ||
753 | default: | 788 | default: |
@@ -860,6 +895,7 @@ struct clk *at32_clock_list[] = { | |||
860 | &pio1_mck, | 895 | &pio1_mck, |
861 | &pio2_mck, | 896 | &pio2_mck, |
862 | &pio3_mck, | 897 | &pio3_mck, |
898 | &pio4_mck, | ||
863 | &atmel_usart0_usart, | 899 | &atmel_usart0_usart, |
864 | &atmel_usart1_usart, | 900 | &atmel_usart1_usart, |
865 | &atmel_usart2_usart, | 901 | &atmel_usart2_usart, |
@@ -868,7 +904,8 @@ struct clk *at32_clock_list[] = { | |||
868 | &macb0_pclk, | 904 | &macb0_pclk, |
869 | &macb1_hclk, | 905 | &macb1_hclk, |
870 | &macb1_pclk, | 906 | &macb1_pclk, |
871 | &spi0_mck, | 907 | &atmel_spi0_spi_clk, |
908 | &atmel_spi1_spi_clk, | ||
872 | &lcdc0_hclk, | 909 | &lcdc0_hclk, |
873 | &lcdc0_pixclk, | 910 | &lcdc0_pixclk, |
874 | }; | 911 | }; |
@@ -880,6 +917,7 @@ void __init at32_portmux_init(void) | |||
880 | at32_init_pio(&pio1_device); | 917 | at32_init_pio(&pio1_device); |
881 | at32_init_pio(&pio2_device); | 918 | at32_init_pio(&pio2_device); |
882 | at32_init_pio(&pio3_device); | 919 | at32_init_pio(&pio3_device); |
920 | at32_init_pio(&pio4_device); | ||
883 | } | 921 | } |
884 | 922 | ||
885 | void __init at32_clock_init(void) | 923 | void __init at32_clock_init(void) |
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c index b59272e81b9a..4a60eccfebd2 100644 --- a/arch/avr32/mach-at32ap/extint.c +++ b/arch/avr32/mach-at32ap/extint.c | |||
@@ -55,20 +55,11 @@ static int eim_set_irq_type(unsigned int irq, unsigned int flow_type) | |||
55 | unsigned long flags; | 55 | unsigned long flags; |
56 | int ret = 0; | 56 | int ret = 0; |
57 | 57 | ||
58 | flow_type &= IRQ_TYPE_SENSE_MASK; | ||
58 | if (flow_type == IRQ_TYPE_NONE) | 59 | if (flow_type == IRQ_TYPE_NONE) |
59 | flow_type = IRQ_TYPE_LEVEL_LOW; | 60 | flow_type = IRQ_TYPE_LEVEL_LOW; |
60 | 61 | ||
61 | desc = &irq_desc[irq]; | 62 | desc = &irq_desc[irq]; |
62 | desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL); | ||
63 | desc->status |= flow_type & IRQ_TYPE_SENSE_MASK; | ||
64 | |||
65 | if (flow_type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) { | ||
66 | desc->status |= IRQ_LEVEL; | ||
67 | set_irq_handler(irq, handle_level_irq); | ||
68 | } else { | ||
69 | set_irq_handler(irq, handle_edge_irq); | ||
70 | } | ||
71 | |||
72 | spin_lock_irqsave(&sm->lock, flags); | 63 | spin_lock_irqsave(&sm->lock, flags); |
73 | 64 | ||
74 | mode = sm_readl(sm, EIM_MODE); | 65 | mode = sm_readl(sm, EIM_MODE); |
@@ -97,9 +88,16 @@ static int eim_set_irq_type(unsigned int irq, unsigned int flow_type) | |||
97 | break; | 88 | break; |
98 | } | 89 | } |
99 | 90 | ||
100 | sm_writel(sm, EIM_MODE, mode); | 91 | if (ret == 0) { |
101 | sm_writel(sm, EIM_EDGE, edge); | 92 | sm_writel(sm, EIM_MODE, mode); |
102 | sm_writel(sm, EIM_LEVEL, level); | 93 | sm_writel(sm, EIM_EDGE, edge); |
94 | sm_writel(sm, EIM_LEVEL, level); | ||
95 | |||
96 | if (flow_type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) | ||
97 | flow_type |= IRQ_LEVEL; | ||
98 | desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL); | ||
99 | desc->status |= flow_type; | ||
100 | } | ||
103 | 101 | ||
104 | spin_unlock_irqrestore(&sm->lock, flags); | 102 | spin_unlock_irqrestore(&sm->lock, flags); |
105 | 103 | ||
@@ -122,8 +120,6 @@ static void demux_eim_irq(unsigned int irq, struct irq_desc *desc) | |||
122 | unsigned long status, pending; | 120 | unsigned long status, pending; |
123 | unsigned int i, ext_irq; | 121 | unsigned int i, ext_irq; |
124 | 122 | ||
125 | spin_lock(&sm->lock); | ||
126 | |||
127 | status = sm_readl(sm, EIM_ISR); | 123 | status = sm_readl(sm, EIM_ISR); |
128 | pending = status & sm_readl(sm, EIM_IMR); | 124 | pending = status & sm_readl(sm, EIM_IMR); |
129 | 125 | ||
@@ -133,10 +129,11 @@ static void demux_eim_irq(unsigned int irq, struct irq_desc *desc) | |||
133 | 129 | ||
134 | ext_irq = i + sm->eim_first_irq; | 130 | ext_irq = i + sm->eim_first_irq; |
135 | ext_desc = irq_desc + ext_irq; | 131 | ext_desc = irq_desc + ext_irq; |
136 | ext_desc->handle_irq(ext_irq, ext_desc); | 132 | if (ext_desc->status & IRQ_LEVEL) |
133 | handle_level_irq(ext_irq, ext_desc); | ||
134 | else | ||
135 | handle_edge_irq(ext_irq, ext_desc); | ||
137 | } | 136 | } |
138 | |||
139 | spin_unlock(&sm->lock); | ||
140 | } | 137 | } |
141 | 138 | ||
142 | static int __init eim_init(void) | 139 | static int __init eim_init(void) |
@@ -168,8 +165,9 @@ static int __init eim_init(void) | |||
168 | sm->eim_chip = &eim_chip; | 165 | sm->eim_chip = &eim_chip; |
169 | 166 | ||
170 | for (i = 0; i < nr_irqs; i++) { | 167 | for (i = 0; i < nr_irqs; i++) { |
168 | /* NOTE the handler we set here is ignored by the demux */ | ||
171 | set_irq_chip_and_handler(sm->eim_first_irq + i, &eim_chip, | 169 | set_irq_chip_and_handler(sm->eim_first_irq + i, &eim_chip, |
172 | handle_edge_irq); | 170 | handle_level_irq); |
173 | set_irq_chip_data(sm->eim_first_irq + i, sm); | 171 | set_irq_chip_data(sm->eim_first_irq + i, sm); |
174 | } | 172 | } |
175 | 173 | ||
diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c index f1280ed8ed6d..9ba5654cde11 100644 --- a/arch/avr32/mach-at32ap/pio.c +++ b/arch/avr32/mach-at32ap/pio.c | |||
@@ -12,7 +12,9 @@ | |||
12 | #include <linux/debugfs.h> | 12 | #include <linux/debugfs.h> |
13 | #include <linux/fs.h> | 13 | #include <linux/fs.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/irq.h> | ||
15 | 16 | ||
17 | #include <asm/gpio.h> | ||
16 | #include <asm/io.h> | 18 | #include <asm/io.h> |
17 | 19 | ||
18 | #include <asm/arch/portmux.h> | 20 | #include <asm/arch/portmux.h> |
@@ -26,7 +28,8 @@ struct pio_device { | |||
26 | const struct platform_device *pdev; | 28 | const struct platform_device *pdev; |
27 | struct clk *clk; | 29 | struct clk *clk; |
28 | u32 pinmux_mask; | 30 | u32 pinmux_mask; |
29 | char name[32]; | 31 | u32 gpio_mask; |
32 | char name[8]; | ||
30 | }; | 33 | }; |
31 | 34 | ||
32 | static struct pio_device pio_dev[MAX_NR_PIO_DEVICES]; | 35 | static struct pio_device pio_dev[MAX_NR_PIO_DEVICES]; |
@@ -76,6 +79,9 @@ void __init at32_select_periph(unsigned int pin, unsigned int periph, | |||
76 | if (!(flags & AT32_GPIOF_PULLUP)) | 79 | if (!(flags & AT32_GPIOF_PULLUP)) |
77 | pio_writel(pio, PUDR, mask); | 80 | pio_writel(pio, PUDR, mask); |
78 | 81 | ||
82 | /* gpio_request NOT allowed */ | ||
83 | set_bit(pin_index, &pio->gpio_mask); | ||
84 | |||
79 | return; | 85 | return; |
80 | 86 | ||
81 | fail: | 87 | fail: |
@@ -99,19 +105,52 @@ void __init at32_select_gpio(unsigned int pin, unsigned long flags) | |||
99 | goto fail; | 105 | goto fail; |
100 | } | 106 | } |
101 | 107 | ||
102 | pio_writel(pio, PUER, mask); | 108 | if (flags & AT32_GPIOF_OUTPUT) { |
103 | if (flags & AT32_GPIOF_HIGH) | 109 | if (flags & AT32_GPIOF_HIGH) |
104 | pio_writel(pio, SODR, mask); | 110 | pio_writel(pio, SODR, mask); |
105 | else | 111 | else |
106 | pio_writel(pio, CODR, mask); | 112 | pio_writel(pio, CODR, mask); |
107 | if (flags & AT32_GPIOF_OUTPUT) | 113 | pio_writel(pio, PUDR, mask); |
108 | pio_writel(pio, OER, mask); | 114 | pio_writel(pio, OER, mask); |
109 | else | 115 | } else { |
116 | if (flags & AT32_GPIOF_PULLUP) | ||
117 | pio_writel(pio, PUER, mask); | ||
118 | else | ||
119 | pio_writel(pio, PUDR, mask); | ||
120 | if (flags & AT32_GPIOF_DEGLITCH) | ||
121 | pio_writel(pio, IFER, mask); | ||
122 | else | ||
123 | pio_writel(pio, IFDR, mask); | ||
110 | pio_writel(pio, ODR, mask); | 124 | pio_writel(pio, ODR, mask); |
125 | } | ||
111 | 126 | ||
112 | pio_writel(pio, PER, mask); | 127 | pio_writel(pio, PER, mask); |
113 | if (!(flags & AT32_GPIOF_PULLUP)) | 128 | |
114 | pio_writel(pio, PUDR, mask); | 129 | /* gpio_request now allowed */ |
130 | clear_bit(pin_index, &pio->gpio_mask); | ||
131 | |||
132 | return; | ||
133 | |||
134 | fail: | ||
135 | dump_stack(); | ||
136 | } | ||
137 | |||
138 | /* Reserve a pin, preventing anyone else from changing its configuration. */ | ||
139 | void __init at32_reserve_pin(unsigned int pin) | ||
140 | { | ||
141 | struct pio_device *pio; | ||
142 | unsigned int pin_index = pin & 0x1f; | ||
143 | |||
144 | pio = gpio_to_pio(pin); | ||
145 | if (unlikely(!pio)) { | ||
146 | printk("pio: invalid pin %u\n", pin); | ||
147 | goto fail; | ||
148 | } | ||
149 | |||
150 | if (unlikely(test_and_set_bit(pin_index, &pio->pinmux_mask))) { | ||
151 | printk("%s: pin %u is busy\n", pio->name, pin_index); | ||
152 | goto fail; | ||
153 | } | ||
115 | 154 | ||
116 | return; | 155 | return; |
117 | 156 | ||
@@ -119,20 +158,197 @@ fail: | |||
119 | dump_stack(); | 158 | dump_stack(); |
120 | } | 159 | } |
121 | 160 | ||
161 | /*--------------------------------------------------------------------------*/ | ||
162 | |||
163 | /* GPIO API */ | ||
164 | |||
165 | int gpio_request(unsigned int gpio, const char *label) | ||
166 | { | ||
167 | struct pio_device *pio; | ||
168 | unsigned int pin; | ||
169 | |||
170 | pio = gpio_to_pio(gpio); | ||
171 | if (!pio) | ||
172 | return -ENODEV; | ||
173 | |||
174 | pin = gpio & 0x1f; | ||
175 | if (test_and_set_bit(pin, &pio->gpio_mask)) | ||
176 | return -EBUSY; | ||
177 | |||
178 | return 0; | ||
179 | } | ||
180 | EXPORT_SYMBOL(gpio_request); | ||
181 | |||
182 | void gpio_free(unsigned int gpio) | ||
183 | { | ||
184 | struct pio_device *pio; | ||
185 | unsigned int pin; | ||
186 | |||
187 | pio = gpio_to_pio(gpio); | ||
188 | if (!pio) { | ||
189 | printk(KERN_ERR | ||
190 | "gpio: attempted to free invalid pin %u\n", gpio); | ||
191 | return; | ||
192 | } | ||
193 | |||
194 | pin = gpio & 0x1f; | ||
195 | if (!test_and_clear_bit(pin, &pio->gpio_mask)) | ||
196 | printk(KERN_ERR "gpio: freeing free or non-gpio pin %s-%u\n", | ||
197 | pio->name, pin); | ||
198 | } | ||
199 | EXPORT_SYMBOL(gpio_free); | ||
200 | |||
201 | int gpio_direction_input(unsigned int gpio) | ||
202 | { | ||
203 | struct pio_device *pio; | ||
204 | unsigned int pin; | ||
205 | |||
206 | pio = gpio_to_pio(gpio); | ||
207 | if (!pio) | ||
208 | return -ENODEV; | ||
209 | |||
210 | pin = gpio & 0x1f; | ||
211 | pio_writel(pio, ODR, 1 << pin); | ||
212 | |||
213 | return 0; | ||
214 | } | ||
215 | EXPORT_SYMBOL(gpio_direction_input); | ||
216 | |||
217 | int gpio_direction_output(unsigned int gpio) | ||
218 | { | ||
219 | struct pio_device *pio; | ||
220 | unsigned int pin; | ||
221 | |||
222 | pio = gpio_to_pio(gpio); | ||
223 | if (!pio) | ||
224 | return -ENODEV; | ||
225 | |||
226 | pin = gpio & 0x1f; | ||
227 | pio_writel(pio, OER, 1 << pin); | ||
228 | |||
229 | return 0; | ||
230 | } | ||
231 | EXPORT_SYMBOL(gpio_direction_output); | ||
232 | |||
233 | int gpio_get_value(unsigned int gpio) | ||
234 | { | ||
235 | struct pio_device *pio = &pio_dev[gpio >> 5]; | ||
236 | |||
237 | return (pio_readl(pio, PDSR) >> (gpio & 0x1f)) & 1; | ||
238 | } | ||
239 | EXPORT_SYMBOL(gpio_get_value); | ||
240 | |||
241 | void gpio_set_value(unsigned int gpio, int value) | ||
242 | { | ||
243 | struct pio_device *pio = &pio_dev[gpio >> 5]; | ||
244 | u32 mask; | ||
245 | |||
246 | mask = 1 << (gpio & 0x1f); | ||
247 | if (value) | ||
248 | pio_writel(pio, SODR, mask); | ||
249 | else | ||
250 | pio_writel(pio, CODR, mask); | ||
251 | } | ||
252 | EXPORT_SYMBOL(gpio_set_value); | ||
253 | |||
254 | /*--------------------------------------------------------------------------*/ | ||
255 | |||
256 | /* GPIO IRQ support */ | ||
257 | |||
258 | static void gpio_irq_mask(unsigned irq) | ||
259 | { | ||
260 | unsigned gpio = irq_to_gpio(irq); | ||
261 | struct pio_device *pio = &pio_dev[gpio >> 5]; | ||
262 | |||
263 | pio_writel(pio, IDR, 1 << (gpio & 0x1f)); | ||
264 | } | ||
265 | |||
266 | static void gpio_irq_unmask(unsigned irq) | ||
267 | { | ||
268 | unsigned gpio = irq_to_gpio(irq); | ||
269 | struct pio_device *pio = &pio_dev[gpio >> 5]; | ||
270 | |||
271 | pio_writel(pio, IER, 1 << (gpio & 0x1f)); | ||
272 | } | ||
273 | |||
274 | static int gpio_irq_type(unsigned irq, unsigned type) | ||
275 | { | ||
276 | if (type != IRQ_TYPE_EDGE_BOTH && type != IRQ_TYPE_NONE) | ||
277 | return -EINVAL; | ||
278 | |||
279 | return 0; | ||
280 | } | ||
281 | |||
282 | static struct irq_chip gpio_irqchip = { | ||
283 | .name = "gpio", | ||
284 | .mask = gpio_irq_mask, | ||
285 | .unmask = gpio_irq_unmask, | ||
286 | .set_type = gpio_irq_type, | ||
287 | }; | ||
288 | |||
289 | static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) | ||
290 | { | ||
291 | struct pio_device *pio = get_irq_chip_data(irq); | ||
292 | unsigned gpio_irq; | ||
293 | |||
294 | gpio_irq = (unsigned) get_irq_data(irq); | ||
295 | for (;;) { | ||
296 | u32 isr; | ||
297 | struct irq_desc *d; | ||
298 | |||
299 | /* ack pending GPIO interrupts */ | ||
300 | isr = pio_readl(pio, ISR) & pio_readl(pio, IMR); | ||
301 | if (!isr) | ||
302 | break; | ||
303 | do { | ||
304 | int i; | ||
305 | |||
306 | i = ffs(isr) - 1; | ||
307 | isr &= ~(1 << i); | ||
308 | |||
309 | i += gpio_irq; | ||
310 | d = &irq_desc[i]; | ||
311 | |||
312 | d->handle_irq(i, d); | ||
313 | } while (isr); | ||
314 | } | ||
315 | } | ||
316 | |||
317 | static void __init | ||
318 | gpio_irq_setup(struct pio_device *pio, int irq, int gpio_irq) | ||
319 | { | ||
320 | unsigned i; | ||
321 | |||
322 | set_irq_chip_data(irq, pio); | ||
323 | set_irq_data(irq, (void *) gpio_irq); | ||
324 | |||
325 | for (i = 0; i < 32; i++, gpio_irq++) { | ||
326 | set_irq_chip_data(gpio_irq, pio); | ||
327 | set_irq_chip_and_handler(gpio_irq, &gpio_irqchip, | ||
328 | handle_simple_irq); | ||
329 | } | ||
330 | |||
331 | set_irq_chained_handler(irq, gpio_irq_handler); | ||
332 | } | ||
333 | |||
334 | /*--------------------------------------------------------------------------*/ | ||
335 | |||
122 | static int __init pio_probe(struct platform_device *pdev) | 336 | static int __init pio_probe(struct platform_device *pdev) |
123 | { | 337 | { |
124 | struct pio_device *pio = NULL; | 338 | struct pio_device *pio = NULL; |
339 | int irq = platform_get_irq(pdev, 0); | ||
340 | int gpio_irq_base = GPIO_IRQ_BASE + pdev->id * 32; | ||
125 | 341 | ||
126 | BUG_ON(pdev->id >= MAX_NR_PIO_DEVICES); | 342 | BUG_ON(pdev->id >= MAX_NR_PIO_DEVICES); |
127 | pio = &pio_dev[pdev->id]; | 343 | pio = &pio_dev[pdev->id]; |
128 | BUG_ON(!pio->regs); | 344 | BUG_ON(!pio->regs); |
129 | 345 | ||
130 | /* TODO: Interrupts */ | 346 | gpio_irq_setup(pio, irq, gpio_irq_base); |
131 | 347 | ||
132 | platform_set_drvdata(pdev, pio); | 348 | platform_set_drvdata(pdev, pio); |
133 | 349 | ||
134 | printk(KERN_INFO "%s: Atmel Port Multiplexer at 0x%p (irq %d)\n", | 350 | printk(KERN_DEBUG "%s: base 0x%p, irq %d chains %d..%d\n", |
135 | pio->name, pio->regs, platform_get_irq(pdev, 0)); | 351 | pio->name, pio->regs, irq, gpio_irq_base, gpio_irq_base + 31); |
136 | 352 | ||
137 | return 0; | 353 | return 0; |
138 | } | 354 | } |
@@ -148,7 +364,7 @@ static int __init pio_init(void) | |||
148 | { | 364 | { |
149 | return platform_driver_register(&pio_driver); | 365 | return platform_driver_register(&pio_driver); |
150 | } | 366 | } |
151 | subsys_initcall(pio_init); | 367 | postcore_initcall(pio_init); |
152 | 368 | ||
153 | void __init at32_init_pio(struct platform_device *pdev) | 369 | void __init at32_init_pio(struct platform_device *pdev) |
154 | { | 370 | { |
@@ -184,6 +400,13 @@ void __init at32_init_pio(struct platform_device *pdev) | |||
184 | pio->pdev = pdev; | 400 | pio->pdev = pdev; |
185 | pio->regs = ioremap(regs->start, regs->end - regs->start + 1); | 401 | pio->regs = ioremap(regs->start, regs->end - regs->start + 1); |
186 | 402 | ||
187 | pio_writel(pio, ODR, ~0UL); | 403 | /* |
188 | pio_writel(pio, PER, ~0UL); | 404 | * request_gpio() is only valid for pins that have been |
405 | * explicitly configured as GPIO and not previously requested | ||
406 | */ | ||
407 | pio->gpio_mask = ~0UL; | ||
408 | |||
409 | /* start with irqs disabled and acked */ | ||
410 | pio_writel(pio, IDR, ~0UL); | ||
411 | (void) pio_readl(pio, ISR); | ||
189 | } | 412 | } |
diff --git a/arch/avr32/mm/cache.c b/arch/avr32/mm/cache.c index 450515b245a0..fb13f72e9a02 100644 --- a/arch/avr32/mm/cache.c +++ b/arch/avr32/mm/cache.c | |||
@@ -22,18 +22,34 @@ | |||
22 | 22 | ||
23 | void invalidate_dcache_region(void *start, size_t size) | 23 | void invalidate_dcache_region(void *start, size_t size) |
24 | { | 24 | { |
25 | unsigned long v, begin, end, linesz; | 25 | unsigned long v, begin, end, linesz, mask; |
26 | int flush = 0; | ||
26 | 27 | ||
27 | linesz = boot_cpu_data.dcache.linesz; | 28 | linesz = boot_cpu_data.dcache.linesz; |
29 | mask = linesz - 1; | ||
30 | |||
31 | /* when first and/or last cachelines are shared, flush them | ||
32 | * instead of invalidating ... never discard valid data! | ||
33 | */ | ||
34 | begin = (unsigned long)start; | ||
35 | end = begin + size - 1; | ||
36 | |||
37 | if (begin & mask) { | ||
38 | flush_dcache_line(start); | ||
39 | begin += linesz; | ||
40 | flush = 1; | ||
41 | } | ||
42 | if ((end & mask) != mask) { | ||
43 | flush_dcache_line((void *)end); | ||
44 | end -= linesz; | ||
45 | flush = 1; | ||
46 | } | ||
28 | 47 | ||
29 | //printk("invalidate dcache: %p + %u\n", start, size); | 48 | /* remaining cachelines only need invalidation */ |
30 | 49 | for (v = begin; v <= end; v += linesz) | |
31 | /* You asked for it, you got it */ | ||
32 | begin = (unsigned long)start & ~(linesz - 1); | ||
33 | end = ((unsigned long)start + size + linesz - 1) & ~(linesz - 1); | ||
34 | |||
35 | for (v = begin; v < end; v += linesz) | ||
36 | invalidate_dcache_line((void *)v); | 50 | invalidate_dcache_line((void *)v); |
51 | if (flush) | ||
52 | flush_write_buffer(); | ||
37 | } | 53 | } |
38 | 54 | ||
39 | void clean_dcache_region(void *start, size_t size) | 55 | void clean_dcache_region(void *start, size_t size) |
diff --git a/arch/avr32/mm/tlb.c b/arch/avr32/mm/tlb.c index 7b073052203d..56672018e42f 100644 --- a/arch/avr32/mm/tlb.c +++ b/arch/avr32/mm/tlb.c | |||
@@ -360,7 +360,7 @@ static int tlb_open(struct inode *inode, struct file *file) | |||
360 | return seq_open(file, &tlb_ops); | 360 | return seq_open(file, &tlb_ops); |
361 | } | 361 | } |
362 | 362 | ||
363 | static struct file_operations proc_tlb_operations = { | 363 | static const struct file_operations proc_tlb_operations = { |
364 | .open = tlb_open, | 364 | .open = tlb_open, |
365 | .read = seq_read, | 365 | .read = seq_read, |
366 | .llseek = seq_lseek, | 366 | .llseek = seq_lseek, |
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index 3474309e049c..4b41248b61ad 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig | |||
@@ -9,6 +9,10 @@ config MMU | |||
9 | bool | 9 | bool |
10 | default y | 10 | default y |
11 | 11 | ||
12 | config ZONE_DMA | ||
13 | bool | ||
14 | default y | ||
15 | |||
12 | config RWSEM_GENERIC_SPINLOCK | 16 | config RWSEM_GENERIC_SPINLOCK |
13 | bool | 17 | bool |
14 | default y | 18 | default y |
@@ -40,6 +44,9 @@ config IRQ_PER_CPU | |||
40 | bool | 44 | bool |
41 | default y | 45 | default y |
42 | 46 | ||
47 | config NO_IOPORT | ||
48 | def_bool y | ||
49 | |||
43 | config CRIS | 50 | config CRIS |
44 | bool | 51 | bool |
45 | default y | 52 | default y |
diff --git a/arch/cris/arch-v10/drivers/axisflashmap.c b/arch/cris/arch-v10/drivers/axisflashmap.c index ffade19a14e6..efd7b0f3a910 100644 --- a/arch/cris/arch-v10/drivers/axisflashmap.c +++ b/arch/cris/arch-v10/drivers/axisflashmap.c | |||
@@ -359,8 +359,7 @@ static struct mtd_info *flash_probe(void) | |||
359 | * So we use the MTD concatenation layer instead of further | 359 | * So we use the MTD concatenation layer instead of further |
360 | * complicating the probing procedure. | 360 | * complicating the probing procedure. |
361 | */ | 361 | */ |
362 | mtd_cse = mtd_concat_create(mtds, | 362 | mtd_cse = mtd_concat_create(mtds, ARRAY_SIZE(mtds), |
363 | sizeof(mtds) / sizeof(mtds[0]), | ||
364 | "cse0+cse1"); | 363 | "cse0+cse1"); |
365 | #else | 364 | #else |
366 | printk(KERN_ERR "%s and %s: Cannot concatenate due to kernel " | 365 | printk(KERN_ERR "%s and %s: Cannot concatenate due to kernel " |
diff --git a/arch/cris/arch-v10/drivers/ds1302.c b/arch/cris/arch-v10/drivers/ds1302.c index 3cf4f23de1d0..88eff7f54ea6 100644 --- a/arch/cris/arch-v10/drivers/ds1302.c +++ b/arch/cris/arch-v10/drivers/ds1302.c | |||
@@ -499,7 +499,7 @@ print_rtc_status(void) | |||
499 | 499 | ||
500 | /* The various file operations we support. */ | 500 | /* The various file operations we support. */ |
501 | 501 | ||
502 | static struct file_operations rtc_fops = { | 502 | static const struct file_operations rtc_fops = { |
503 | .owner = THIS_MODULE, | 503 | .owner = THIS_MODULE, |
504 | .ioctl = rtc_ioctl, | 504 | .ioctl = rtc_ioctl, |
505 | }; | 505 | }; |
diff --git a/arch/cris/arch-v10/drivers/eeprom.c b/arch/cris/arch-v10/drivers/eeprom.c index 284ebfda03f0..be35a70798aa 100644 --- a/arch/cris/arch-v10/drivers/eeprom.c +++ b/arch/cris/arch-v10/drivers/eeprom.c | |||
@@ -172,7 +172,7 @@ static const char eeprom_name[] = "eeprom"; | |||
172 | static struct eeprom_type eeprom; | 172 | static struct eeprom_type eeprom; |
173 | 173 | ||
174 | /* This is the exported file-operations structure for this device. */ | 174 | /* This is the exported file-operations structure for this device. */ |
175 | struct file_operations eeprom_fops = | 175 | const struct file_operations eeprom_fops = |
176 | { | 176 | { |
177 | .llseek = eeprom_lseek, | 177 | .llseek = eeprom_lseek, |
178 | .read = eeprom_read, | 178 | .read = eeprom_read, |
diff --git a/arch/cris/arch-v10/drivers/gpio.c b/arch/cris/arch-v10/drivers/gpio.c index 9aba18b931dd..f389ed6998fe 100644 --- a/arch/cris/arch-v10/drivers/gpio.c +++ b/arch/cris/arch-v10/drivers/gpio.c | |||
@@ -838,7 +838,7 @@ gpio_leds_ioctl(unsigned int cmd, unsigned long arg) | |||
838 | return 0; | 838 | return 0; |
839 | } | 839 | } |
840 | 840 | ||
841 | struct file_operations gpio_fops = { | 841 | const struct file_operations gpio_fops = { |
842 | .owner = THIS_MODULE, | 842 | .owner = THIS_MODULE, |
843 | .poll = gpio_poll, | 843 | .poll = gpio_poll, |
844 | .ioctl = gpio_ioctl, | 844 | .ioctl = gpio_ioctl, |
diff --git a/arch/cris/arch-v10/drivers/i2c.c b/arch/cris/arch-v10/drivers/i2c.c index 092c724a645f..aca81ddaf60f 100644 --- a/arch/cris/arch-v10/drivers/i2c.c +++ b/arch/cris/arch-v10/drivers/i2c.c | |||
@@ -692,7 +692,7 @@ i2c_ioctl(struct inode *inode, struct file *file, | |||
692 | return 0; | 692 | return 0; |
693 | } | 693 | } |
694 | 694 | ||
695 | static struct file_operations i2c_fops = { | 695 | static const struct file_operations i2c_fops = { |
696 | .owner = THIS_MODULE, | 696 | .owner = THIS_MODULE, |
697 | .ioctl = i2c_ioctl, | 697 | .ioctl = i2c_ioctl, |
698 | .open = i2c_open, | 698 | .open = i2c_open, |
diff --git a/arch/cris/arch-v10/drivers/pcf8563.c b/arch/cris/arch-v10/drivers/pcf8563.c index 8c830eefc89c..107796e50149 100644 --- a/arch/cris/arch-v10/drivers/pcf8563.c +++ b/arch/cris/arch-v10/drivers/pcf8563.c | |||
@@ -56,7 +56,7 @@ static const unsigned char days_in_month[] = | |||
56 | 56 | ||
57 | int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long); | 57 | int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long); |
58 | 58 | ||
59 | static struct file_operations pcf8563_fops = { | 59 | static const struct file_operations pcf8563_fops = { |
60 | .owner = THIS_MODULE, | 60 | .owner = THIS_MODULE, |
61 | .ioctl = pcf8563_ioctl, | 61 | .ioctl = pcf8563_ioctl, |
62 | }; | 62 | }; |
diff --git a/arch/cris/arch-v10/kernel/time.c b/arch/cris/arch-v10/kernel/time.c index ebacf1457d91..077e973c33f0 100644 --- a/arch/cris/arch-v10/kernel/time.c +++ b/arch/cris/arch-v10/kernel/time.c | |||
@@ -38,7 +38,6 @@ unsigned long get_ns_in_jiffie(void) | |||
38 | unsigned long flags; | 38 | unsigned long flags; |
39 | 39 | ||
40 | local_irq_save(flags); | 40 | local_irq_save(flags); |
41 | local_irq_disable(); | ||
42 | timer_count = *R_TIMER0_DATA; | 41 | timer_count = *R_TIMER0_DATA; |
43 | presc_count = *R_TIM_PRESC_STATUS; | 42 | presc_count = *R_TIM_PRESC_STATUS; |
44 | /* presc_count might be wrapped */ | 43 | /* presc_count might be wrapped */ |
diff --git a/arch/cris/arch-v10/mm/tlb.c b/arch/cris/arch-v10/mm/tlb.c index 70a5523eff78..7d9fec88dee5 100644 --- a/arch/cris/arch-v10/mm/tlb.c +++ b/arch/cris/arch-v10/mm/tlb.c | |||
@@ -42,8 +42,7 @@ flush_tlb_all(void) | |||
42 | * in the same 4-way entry group. details.. | 42 | * in the same 4-way entry group. details.. |
43 | */ | 43 | */ |
44 | 44 | ||
45 | local_save_flags(flags); | 45 | local_irq_save(flags); |
46 | local_irq_disable(); | ||
47 | for(i = 0; i < NUM_TLB_ENTRIES; i++) { | 46 | for(i = 0; i < NUM_TLB_ENTRIES; i++) { |
48 | *R_TLB_SELECT = ( IO_FIELD(R_TLB_SELECT, index, i) ); | 47 | *R_TLB_SELECT = ( IO_FIELD(R_TLB_SELECT, index, i) ); |
49 | *R_TLB_HI = ( IO_FIELD(R_TLB_HI, page_id, INVALID_PAGEID ) | | 48 | *R_TLB_HI = ( IO_FIELD(R_TLB_HI, page_id, INVALID_PAGEID ) | |
@@ -78,8 +77,7 @@ flush_tlb_mm(struct mm_struct *mm) | |||
78 | * global pages. is it worth the extra I/O ? | 77 | * global pages. is it worth the extra I/O ? |
79 | */ | 78 | */ |
80 | 79 | ||
81 | local_save_flags(flags); | 80 | local_irq_save(flags); |
82 | local_irq_disable(); | ||
83 | for(i = 0; i < NUM_TLB_ENTRIES; i++) { | 81 | for(i = 0; i < NUM_TLB_ENTRIES; i++) { |
84 | *R_TLB_SELECT = IO_FIELD(R_TLB_SELECT, index, i); | 82 | *R_TLB_SELECT = IO_FIELD(R_TLB_SELECT, index, i); |
85 | if (IO_EXTRACT(R_TLB_HI, page_id, *R_TLB_HI) == page_id) { | 83 | if (IO_EXTRACT(R_TLB_HI, page_id, *R_TLB_HI) == page_id) { |
@@ -118,8 +116,7 @@ flush_tlb_page(struct vm_area_struct *vma, | |||
118 | * and the virtual address requested | 116 | * and the virtual address requested |
119 | */ | 117 | */ |
120 | 118 | ||
121 | local_save_flags(flags); | 119 | local_irq_save(flags); |
122 | local_irq_disable(); | ||
123 | for(i = 0; i < NUM_TLB_ENTRIES; i++) { | 120 | for(i = 0; i < NUM_TLB_ENTRIES; i++) { |
124 | unsigned long tlb_hi; | 121 | unsigned long tlb_hi; |
125 | *R_TLB_SELECT = IO_FIELD(R_TLB_SELECT, index, i); | 122 | *R_TLB_SELECT = IO_FIELD(R_TLB_SELECT, index, i); |
diff --git a/arch/cris/arch-v10/vmlinux.lds.S b/arch/cris/arch-v10/vmlinux.lds.S index 689729a7e66e..4b348b38cf33 100644 --- a/arch/cris/arch-v10/vmlinux.lds.S +++ b/arch/cris/arch-v10/vmlinux.lds.S | |||
@@ -82,7 +82,8 @@ SECTIONS | |||
82 | __con_initcall_end = .; | 82 | __con_initcall_end = .; |
83 | } | 83 | } |
84 | SECURITY_INIT | 84 | SECURITY_INIT |
85 | 85 | ||
86 | #ifdef CONFIG_BLK_DEV_INITRD | ||
86 | .init.ramfs : { | 87 | .init.ramfs : { |
87 | __initramfs_start = .; | 88 | __initramfs_start = .; |
88 | *(.init.ramfs) | 89 | *(.init.ramfs) |
@@ -93,6 +94,7 @@ SECTIONS | |||
93 | FILL (0); | 94 | FILL (0); |
94 | . = ALIGN (8192); | 95 | . = ALIGN (8192); |
95 | } | 96 | } |
97 | #endif | ||
96 | 98 | ||
97 | __vmlinux_end = .; /* last address of the physical file */ | 99 | __vmlinux_end = .; /* last address of the physical file */ |
98 | __init_end = .; | 100 | __init_end = .; |
diff --git a/arch/cris/arch-v32/drivers/cryptocop.c b/arch/cris/arch-v32/drivers/cryptocop.c index 2449637e6fc0..1a071f17446d 100644 --- a/arch/cris/arch-v32/drivers/cryptocop.c +++ b/arch/cris/arch-v32/drivers/cryptocop.c | |||
@@ -266,7 +266,7 @@ static void print_user_dma_lists(struct cryptocop_dma_list_operation *dma_op); | |||
266 | 266 | ||
267 | 267 | ||
268 | 268 | ||
269 | struct file_operations cryptocop_fops = { | 269 | const struct file_operations cryptocop_fops = { |
270 | owner: THIS_MODULE, | 270 | owner: THIS_MODULE, |
271 | open: cryptocop_open, | 271 | open: cryptocop_open, |
272 | release: cryptocop_release, | 272 | release: cryptocop_release, |
diff --git a/arch/cris/arch-v32/drivers/gpio.c b/arch/cris/arch-v32/drivers/gpio.c index 08d36f0955c6..d82c5c561135 100644 --- a/arch/cris/arch-v32/drivers/gpio.c +++ b/arch/cris/arch-v32/drivers/gpio.c | |||
@@ -705,7 +705,7 @@ gpio_leds_ioctl(unsigned int cmd, unsigned long arg) | |||
705 | return 0; | 705 | return 0; |
706 | } | 706 | } |
707 | 707 | ||
708 | struct file_operations gpio_fops = { | 708 | const struct file_operations gpio_fops = { |
709 | .owner = THIS_MODULE, | 709 | .owner = THIS_MODULE, |
710 | .poll = gpio_poll, | 710 | .poll = gpio_poll, |
711 | .ioctl = gpio_ioctl, | 711 | .ioctl = gpio_ioctl, |
diff --git a/arch/cris/arch-v32/drivers/i2c.c b/arch/cris/arch-v32/drivers/i2c.c index 95f00188c628..5d6c52737df3 100644 --- a/arch/cris/arch-v32/drivers/i2c.c +++ b/arch/cris/arch-v32/drivers/i2c.c | |||
@@ -573,7 +573,7 @@ i2c_ioctl(struct inode *inode, struct file *file, | |||
573 | return 0; | 573 | return 0; |
574 | } | 574 | } |
575 | 575 | ||
576 | static struct file_operations i2c_fops = { | 576 | static const struct file_operations i2c_fops = { |
577 | owner: THIS_MODULE, | 577 | owner: THIS_MODULE, |
578 | ioctl: i2c_ioctl, | 578 | ioctl: i2c_ioctl, |
579 | open: i2c_open, | 579 | open: i2c_open, |
diff --git a/arch/cris/arch-v32/drivers/pcf8563.c b/arch/cris/arch-v32/drivers/pcf8563.c index 2fc7d75a35de..544ab0179411 100644 --- a/arch/cris/arch-v32/drivers/pcf8563.c +++ b/arch/cris/arch-v32/drivers/pcf8563.c | |||
@@ -50,7 +50,7 @@ int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long); | |||
50 | int pcf8563_open(struct inode *, struct file *); | 50 | int pcf8563_open(struct inode *, struct file *); |
51 | int pcf8563_release(struct inode *, struct file *); | 51 | int pcf8563_release(struct inode *, struct file *); |
52 | 52 | ||
53 | static struct file_operations pcf8563_fops = { | 53 | static const struct file_operations pcf8563_fops = { |
54 | owner: THIS_MODULE, | 54 | owner: THIS_MODULE, |
55 | ioctl: pcf8563_ioctl, | 55 | ioctl: pcf8563_ioctl, |
56 | open: pcf8563_open, | 56 | open: pcf8563_open, |
diff --git a/arch/cris/arch-v32/drivers/sync_serial.c b/arch/cris/arch-v32/drivers/sync_serial.c index 424eb0eb1cd5..df89298aafc4 100644 --- a/arch/cris/arch-v32/drivers/sync_serial.c +++ b/arch/cris/arch-v32/drivers/sync_serial.c | |||
@@ -187,7 +187,7 @@ static struct sync_port ports[]= | |||
187 | 187 | ||
188 | #define NUMBER_OF_PORTS (sizeof(ports)/sizeof(sync_port)) | 188 | #define NUMBER_OF_PORTS (sizeof(ports)/sizeof(sync_port)) |
189 | 189 | ||
190 | static struct file_operations sync_serial_fops = { | 190 | static const struct file_operations sync_serial_fops = { |
191 | .owner = THIS_MODULE, | 191 | .owner = THIS_MODULE, |
192 | .write = sync_serial_write, | 192 | .write = sync_serial_write, |
193 | .read = sync_serial_read, | 193 | .read = sync_serial_read, |
diff --git a/arch/cris/arch-v32/mm/tlb.c b/arch/cris/arch-v32/mm/tlb.c index 9d75d7692303..c2d12e9c40d7 100644 --- a/arch/cris/arch-v32/mm/tlb.c +++ b/arch/cris/arch-v32/mm/tlb.c | |||
@@ -54,8 +54,7 @@ __flush_tlb_all(void) | |||
54 | * Mask with 0xf so similar TLB entries aren't written in the same 4-way | 54 | * Mask with 0xf so similar TLB entries aren't written in the same 4-way |
55 | * entry group. | 55 | * entry group. |
56 | */ | 56 | */ |
57 | local_save_flags(flags); | 57 | local_irq_save(flags); |
58 | local_irq_disable(); | ||
59 | 58 | ||
60 | for (mmu = 1; mmu <= 2; mmu++) { | 59 | for (mmu = 1; mmu <= 2; mmu++) { |
61 | SUPP_BANK_SEL(mmu); /* Select the MMU */ | 60 | SUPP_BANK_SEL(mmu); /* Select the MMU */ |
@@ -92,8 +91,7 @@ __flush_tlb_mm(struct mm_struct *mm) | |||
92 | return; | 91 | return; |
93 | 92 | ||
94 | /* Mark the TLB entries that match the page_id as invalid. */ | 93 | /* Mark the TLB entries that match the page_id as invalid. */ |
95 | local_save_flags(flags); | 94 | local_irq_save(flags); |
96 | local_irq_disable(); | ||
97 | 95 | ||
98 | for (mmu = 1; mmu <= 2; mmu++) { | 96 | for (mmu = 1; mmu <= 2; mmu++) { |
99 | SUPP_BANK_SEL(mmu); | 97 | SUPP_BANK_SEL(mmu); |
@@ -140,8 +138,7 @@ __flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) | |||
140 | * Invalidate those TLB entries that match both the mm context and the | 138 | * Invalidate those TLB entries that match both the mm context and the |
141 | * requested virtual address. | 139 | * requested virtual address. |
142 | */ | 140 | */ |
143 | local_save_flags(flags); | 141 | local_irq_save(flags); |
144 | local_irq_disable(); | ||
145 | 142 | ||
146 | for (mmu = 1; mmu <= 2; mmu++) { | 143 | for (mmu = 1; mmu <= 2; mmu++) { |
147 | SUPP_BANK_SEL(mmu); | 144 | SUPP_BANK_SEL(mmu); |
diff --git a/arch/cris/arch-v32/vmlinux.lds.S b/arch/cris/arch-v32/vmlinux.lds.S index 472d4b3c4cf4..e124fcd766d5 100644 --- a/arch/cris/arch-v32/vmlinux.lds.S +++ b/arch/cris/arch-v32/vmlinux.lds.S | |||
@@ -95,6 +95,7 @@ SECTIONS | |||
95 | .data.percpu : { *(.data.percpu) } | 95 | .data.percpu : { *(.data.percpu) } |
96 | __per_cpu_end = .; | 96 | __per_cpu_end = .; |
97 | 97 | ||
98 | #ifdef CONFIG_BLK_DEV_INITRD | ||
98 | .init.ramfs : { | 99 | .init.ramfs : { |
99 | __initramfs_start = .; | 100 | __initramfs_start = .; |
100 | *(.init.ramfs) | 101 | *(.init.ramfs) |
@@ -107,6 +108,7 @@ SECTIONS | |||
107 | FILL (0); | 108 | FILL (0); |
108 | . = ALIGN (8192); | 109 | . = ALIGN (8192); |
109 | } | 110 | } |
111 | #endif | ||
110 | 112 | ||
111 | __vmlinux_end = .; /* Last address of the physical file. */ | 113 | __vmlinux_end = .; /* Last address of the physical file. */ |
112 | __init_end = .; | 114 | __init_end = .; |
diff --git a/arch/cris/kernel/profile.c b/arch/cris/kernel/profile.c index f60ab785f235..4cfcae620507 100644 --- a/arch/cris/kernel/profile.c +++ b/arch/cris/kernel/profile.c | |||
@@ -50,7 +50,7 @@ write_cris_profile(struct file *file, const char __user *buf, | |||
50 | memset(sample_buffer, 0, SAMPLE_BUFFER_SIZE); | 50 | memset(sample_buffer, 0, SAMPLE_BUFFER_SIZE); |
51 | } | 51 | } |
52 | 52 | ||
53 | static struct file_operations cris_proc_profile_operations = { | 53 | static const struct file_operations cris_proc_profile_operations = { |
54 | .read = read_cris_profile, | 54 | .read = read_cris_profile, |
55 | .write = write_cris_profile, | 55 | .write = write_cris_profile, |
56 | }; | 56 | }; |
diff --git a/arch/cris/kernel/setup.c b/arch/cris/kernel/setup.c index ca8b45a0fe2e..65466c49d7a9 100644 --- a/arch/cris/kernel/setup.c +++ b/arch/cris/kernel/setup.c | |||
@@ -29,7 +29,7 @@ struct screen_info screen_info; | |||
29 | extern int root_mountflags; | 29 | extern int root_mountflags; |
30 | extern char _etext, _edata, _end; | 30 | extern char _etext, _edata, _end; |
31 | 31 | ||
32 | char cris_command_line[COMMAND_LINE_SIZE] = { 0, }; | 32 | char __initdata cris_command_line[COMMAND_LINE_SIZE] = { 0, }; |
33 | 33 | ||
34 | extern const unsigned long text_start, edata; /* set by the linker script */ | 34 | extern const unsigned long text_start, edata; /* set by the linker script */ |
35 | extern unsigned long dram_start, dram_end; | 35 | extern unsigned long dram_start, dram_end; |
@@ -153,8 +153,8 @@ setup_arch(char **cmdline_p) | |||
153 | #endif | 153 | #endif |
154 | 154 | ||
155 | /* Save command line for future references. */ | 155 | /* Save command line for future references. */ |
156 | memcpy(saved_command_line, cris_command_line, COMMAND_LINE_SIZE); | 156 | memcpy(boot_command_line, cris_command_line, COMMAND_LINE_SIZE); |
157 | saved_command_line[COMMAND_LINE_SIZE - 1] = '\0'; | 157 | boot_command_line[COMMAND_LINE_SIZE - 1] = '\0'; |
158 | 158 | ||
159 | /* give credit for the CRIS port */ | 159 | /* give credit for the CRIS port */ |
160 | show_etrax_copyright(); | 160 | show_etrax_copyright(); |
diff --git a/arch/cris/kernel/time.c b/arch/cris/kernel/time.c index 0f9213cbd48e..acfd04559405 100644 --- a/arch/cris/kernel/time.c +++ b/arch/cris/kernel/time.c | |||
@@ -55,7 +55,6 @@ void do_gettimeofday(struct timeval *tv) | |||
55 | unsigned long flags; | 55 | unsigned long flags; |
56 | signed long usec, sec; | 56 | signed long usec, sec; |
57 | local_irq_save(flags); | 57 | local_irq_save(flags); |
58 | local_irq_disable(); | ||
59 | usec = do_gettimeoffset(); | 58 | usec = do_gettimeoffset(); |
60 | 59 | ||
61 | /* | 60 | /* |
@@ -217,14 +216,6 @@ cris_do_profile(struct pt_regs* regs) | |||
217 | #endif | 216 | #endif |
218 | } | 217 | } |
219 | 218 | ||
220 | /* | ||
221 | * Scheduler clock - returns current time in nanosec units. | ||
222 | */ | ||
223 | unsigned long long sched_clock(void) | ||
224 | { | ||
225 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
226 | } | ||
227 | |||
228 | static int | 219 | static int |
229 | __init init_udelay(void) | 220 | __init init_udelay(void) |
230 | { | 221 | { |
diff --git a/arch/cris/mm/tlb.c b/arch/cris/mm/tlb.c index 0df390a656cd..c4a98e2e529e 100644 --- a/arch/cris/mm/tlb.c +++ b/arch/cris/mm/tlb.c | |||
@@ -8,6 +8,7 @@ | |||
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
11 | #include <linux/kernel.h> | ||
11 | #include <asm/tlb.h> | 12 | #include <asm/tlb.h> |
12 | 13 | ||
13 | #define D(x) | 14 | #define D(x) |
@@ -100,7 +101,7 @@ tlb_init(void) | |||
100 | 101 | ||
101 | /* clear the page_id map */ | 102 | /* clear the page_id map */ |
102 | 103 | ||
103 | for (i = 1; i < sizeof (page_id_map) / sizeof (page_id_map[0]); i++) | 104 | for (i = 1; i < ARRAY_SIZE(page_id_map); i++) |
104 | page_id_map[i] = NULL; | 105 | page_id_map[i] = NULL; |
105 | 106 | ||
106 | /* invalidate the entire TLB */ | 107 | /* invalidate the entire TLB */ |
diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig index 7561d7b72e75..cea237413aa2 100644 --- a/arch/frv/Kconfig +++ b/arch/frv/Kconfig | |||
@@ -6,6 +6,10 @@ config FRV | |||
6 | bool | 6 | bool |
7 | default y | 7 | default y |
8 | 8 | ||
9 | config ZONE_DMA | ||
10 | bool | ||
11 | default y | ||
12 | |||
9 | config RWSEM_GENERIC_SPINLOCK | 13 | config RWSEM_GENERIC_SPINLOCK |
10 | bool | 14 | bool |
11 | default y | 15 | default y |
diff --git a/arch/frv/kernel/setup.c b/arch/frv/kernel/setup.c index 1a5eb6c301c9..8ea3ca2aba62 100644 --- a/arch/frv/kernel/setup.c +++ b/arch/frv/kernel/setup.c | |||
@@ -110,7 +110,7 @@ unsigned long __initdata num_mappedpages; | |||
110 | 110 | ||
111 | struct cpuinfo_frv __nongprelbss boot_cpu_data; | 111 | struct cpuinfo_frv __nongprelbss boot_cpu_data; |
112 | 112 | ||
113 | char command_line[COMMAND_LINE_SIZE]; | 113 | char __initdata command_line[COMMAND_LINE_SIZE]; |
114 | char __initdata redboot_command_line[COMMAND_LINE_SIZE]; | 114 | char __initdata redboot_command_line[COMMAND_LINE_SIZE]; |
115 | 115 | ||
116 | #ifdef CONFIG_PM | 116 | #ifdef CONFIG_PM |
@@ -762,7 +762,7 @@ void __init setup_arch(char **cmdline_p) | |||
762 | printk("uClinux FR-V port done by Red Hat Inc <dhowells@redhat.com>\n"); | 762 | printk("uClinux FR-V port done by Red Hat Inc <dhowells@redhat.com>\n"); |
763 | #endif | 763 | #endif |
764 | 764 | ||
765 | memcpy(saved_command_line, redboot_command_line, COMMAND_LINE_SIZE); | 765 | memcpy(boot_command_line, redboot_command_line, COMMAND_LINE_SIZE); |
766 | 766 | ||
767 | determine_cpu(); | 767 | determine_cpu(); |
768 | determine_clocks(1); | 768 | determine_clocks(1); |
@@ -803,7 +803,7 @@ void __init setup_arch(char **cmdline_p) | |||
803 | #endif | 803 | #endif |
804 | 804 | ||
805 | /* deal with the command line - RedBoot may have passed one to the kernel */ | 805 | /* deal with the command line - RedBoot may have passed one to the kernel */ |
806 | memcpy(command_line, saved_command_line, sizeof(command_line)); | 806 | memcpy(command_line, boot_command_line, sizeof(command_line)); |
807 | *cmdline_p = &command_line[0]; | 807 | *cmdline_p = &command_line[0]; |
808 | parse_cmdline_early(command_line); | 808 | parse_cmdline_early(command_line); |
809 | 809 | ||
diff --git a/arch/frv/kernel/vmlinux.lds.S b/arch/frv/kernel/vmlinux.lds.S index 9c1fb12367fa..97910e016825 100644 --- a/arch/frv/kernel/vmlinux.lds.S +++ b/arch/frv/kernel/vmlinux.lds.S | |||
@@ -61,10 +61,12 @@ SECTIONS | |||
61 | .data.percpu : { *(.data.percpu) } | 61 | .data.percpu : { *(.data.percpu) } |
62 | __per_cpu_end = .; | 62 | __per_cpu_end = .; |
63 | 63 | ||
64 | #ifdef CONFIG_BLK_DEV_INITRD | ||
64 | . = ALIGN(4096); | 65 | . = ALIGN(4096); |
65 | __initramfs_start = .; | 66 | __initramfs_start = .; |
66 | .init.ramfs : { *(.init.ramfs) } | 67 | .init.ramfs : { *(.init.ramfs) } |
67 | __initramfs_end = .; | 68 | __initramfs_end = .; |
69 | #endif | ||
68 | 70 | ||
69 | . = ALIGN(THREAD_SIZE); | 71 | . = ALIGN(THREAD_SIZE); |
70 | __init_end = .; | 72 | __init_end = .; |
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig index 34a84bc4baf5..1734d96422c6 100644 --- a/arch/h8300/Kconfig +++ b/arch/h8300/Kconfig | |||
@@ -17,6 +17,10 @@ config SWAP | |||
17 | bool | 17 | bool |
18 | default n | 18 | default n |
19 | 19 | ||
20 | config ZONE_DMA | ||
21 | bool | ||
22 | default y | ||
23 | |||
20 | config FPU | 24 | config FPU |
21 | bool | 25 | bool |
22 | default n | 26 | default n |
@@ -53,6 +57,9 @@ config TIME_LOW_RES | |||
53 | bool | 57 | bool |
54 | default y | 58 | default y |
55 | 59 | ||
60 | config NO_IOPORT | ||
61 | def_bool y | ||
62 | |||
56 | config ISA | 63 | config ISA |
57 | bool | 64 | bool |
58 | default y | 65 | default y |
diff --git a/arch/h8300/kernel/Makefile b/arch/h8300/kernel/Makefile index 71b6131e98b8..4edbc2ef6ca2 100644 --- a/arch/h8300/kernel/Makefile +++ b/arch/h8300/kernel/Makefile | |||
@@ -6,6 +6,8 @@ extra-y := vmlinux.lds | |||
6 | 6 | ||
7 | obj-y := process.o traps.o ptrace.o ints.o \ | 7 | obj-y := process.o traps.o ptrace.o ints.o \ |
8 | sys_h8300.o time.o semaphore.o signal.o \ | 8 | sys_h8300.o time.o semaphore.o signal.o \ |
9 | setup.o gpio.o init_task.o syscalls.o | 9 | setup.o gpio.o init_task.o syscalls.o devres.o |
10 | |||
11 | devres-y = ../../../kernel/irq/devres.o | ||
10 | 12 | ||
11 | obj-$(CONFIG_MODULES) += module.o h8300_ksyms.o | 13 | obj-$(CONFIG_MODULES) += module.o h8300_ksyms.o |
diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c index 6adf8f41d2a1..313cd8081044 100644 --- a/arch/h8300/kernel/setup.c +++ b/arch/h8300/kernel/setup.c | |||
@@ -54,7 +54,7 @@ unsigned long rom_length; | |||
54 | unsigned long memory_start; | 54 | unsigned long memory_start; |
55 | unsigned long memory_end; | 55 | unsigned long memory_end; |
56 | 56 | ||
57 | char command_line[COMMAND_LINE_SIZE]; | 57 | char __initdata command_line[COMMAND_LINE_SIZE]; |
58 | 58 | ||
59 | extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; | 59 | extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; |
60 | extern int _ramstart, _ramend; | 60 | extern int _ramstart, _ramend; |
@@ -154,8 +154,8 @@ void __init setup_arch(char **cmdline_p) | |||
154 | #endif | 154 | #endif |
155 | /* Keep a copy of command line */ | 155 | /* Keep a copy of command line */ |
156 | *cmdline_p = &command_line[0]; | 156 | *cmdline_p = &command_line[0]; |
157 | memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); | 157 | memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); |
158 | saved_command_line[COMMAND_LINE_SIZE-1] = 0; | 158 | boot_command_line[COMMAND_LINE_SIZE-1] = 0; |
159 | 159 | ||
160 | #ifdef DEBUG | 160 | #ifdef DEBUG |
161 | if (strlen(*cmdline_p)) | 161 | if (strlen(*cmdline_p)) |
diff --git a/arch/h8300/kernel/time.c b/arch/h8300/kernel/time.c index 8abab3bc2b6f..d1ef615ba895 100644 --- a/arch/h8300/kernel/time.c +++ b/arch/h8300/kernel/time.c | |||
@@ -118,9 +118,3 @@ int do_settimeofday(struct timespec *tv) | |||
118 | } | 118 | } |
119 | 119 | ||
120 | EXPORT_SYMBOL(do_settimeofday); | 120 | EXPORT_SYMBOL(do_settimeofday); |
121 | |||
122 | unsigned long long sched_clock(void) | ||
123 | { | ||
124 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
125 | |||
126 | } | ||
diff --git a/arch/h8300/kernel/vmlinux.lds.S b/arch/h8300/kernel/vmlinux.lds.S index f05288be8878..65f1cdc5ee04 100644 --- a/arch/h8300/kernel/vmlinux.lds.S +++ b/arch/h8300/kernel/vmlinux.lds.S | |||
@@ -126,10 +126,12 @@ SECTIONS | |||
126 | ___con_initcall_end = .; | 126 | ___con_initcall_end = .; |
127 | *(.exit.text) | 127 | *(.exit.text) |
128 | *(.exit.data) | 128 | *(.exit.data) |
129 | #if defined(CONFIG_BLK_DEV_INITRD) | ||
129 | . = ALIGN(4); | 130 | . = ALIGN(4); |
130 | ___initramfs_start = .; | 131 | ___initramfs_start = .; |
131 | *(.init.ramfs) | 132 | *(.init.ramfs) |
132 | ___initramfs_end = .; | 133 | ___initramfs_end = .; |
134 | #endif | ||
133 | . = ALIGN(0x4) ; | 135 | . = ALIGN(0x4) ; |
134 | ___init_end = .; | 136 | ___init_end = .; |
135 | __edata = . ; | 137 | __edata = . ; |
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index 0dfee812811a..63d5e841caf5 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig | |||
@@ -38,6 +38,10 @@ config MMU | |||
38 | bool | 38 | bool |
39 | default y | 39 | default y |
40 | 40 | ||
41 | config ZONE_DMA | ||
42 | bool | ||
43 | default y | ||
44 | |||
41 | config SBUS | 45 | config SBUS |
42 | bool | 46 | bool |
43 | 47 | ||
diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c index 199016927541..db99a8948dae 100644 --- a/arch/i386/kernel/apm.c +++ b/arch/i386/kernel/apm.c | |||
@@ -1894,7 +1894,7 @@ static int __init apm_setup(char *str) | |||
1894 | __setup("apm=", apm_setup); | 1894 | __setup("apm=", apm_setup); |
1895 | #endif | 1895 | #endif |
1896 | 1896 | ||
1897 | static struct file_operations apm_bios_fops = { | 1897 | static const struct file_operations apm_bios_fops = { |
1898 | .owner = THIS_MODULE, | 1898 | .owner = THIS_MODULE, |
1899 | .read = do_read, | 1899 | .read = do_read, |
1900 | .poll = do_poll, | 1900 | .poll = do_poll, |
diff --git a/arch/i386/kernel/cpu/mtrr/if.c b/arch/i386/kernel/cpu/mtrr/if.c index 5ae1705eafa6..ee771f305f96 100644 --- a/arch/i386/kernel/cpu/mtrr/if.c +++ b/arch/i386/kernel/cpu/mtrr/if.c | |||
@@ -339,7 +339,7 @@ static int mtrr_open(struct inode *inode, struct file *file) | |||
339 | return single_open(file, mtrr_seq_show, NULL); | 339 | return single_open(file, mtrr_seq_show, NULL); |
340 | } | 340 | } |
341 | 341 | ||
342 | static struct file_operations mtrr_fops = { | 342 | static const struct file_operations mtrr_fops = { |
343 | .owner = THIS_MODULE, | 343 | .owner = THIS_MODULE, |
344 | .open = mtrr_open, | 344 | .open = mtrr_open, |
345 | .read = seq_read, | 345 | .read = seq_read, |
diff --git a/arch/i386/kernel/cpuid.c b/arch/i386/kernel/cpuid.c index 51130b39cd2e..4da75fa3208d 100644 --- a/arch/i386/kernel/cpuid.c +++ b/arch/i386/kernel/cpuid.c | |||
@@ -148,7 +148,7 @@ static int cpuid_open(struct inode *inode, struct file *file) | |||
148 | /* | 148 | /* |
149 | * File operations we support | 149 | * File operations we support |
150 | */ | 150 | */ |
151 | static struct file_operations cpuid_fops = { | 151 | static const struct file_operations cpuid_fops = { |
152 | .owner = THIS_MODULE, | 152 | .owner = THIS_MODULE, |
153 | .llseek = cpuid_seek, | 153 | .llseek = cpuid_seek, |
154 | .read = cpuid_read, | 154 | .read = cpuid_read, |
diff --git a/arch/i386/kernel/head.S b/arch/i386/kernel/head.S index edef5084ce17..cb9abdfced9b 100644 --- a/arch/i386/kernel/head.S +++ b/arch/i386/kernel/head.S | |||
@@ -103,7 +103,7 @@ ENTRY(startup_32) | |||
103 | movzwl OLD_CL_OFFSET,%esi | 103 | movzwl OLD_CL_OFFSET,%esi |
104 | addl $(OLD_CL_BASE_ADDR),%esi | 104 | addl $(OLD_CL_BASE_ADDR),%esi |
105 | 2: | 105 | 2: |
106 | movl $(saved_command_line - __PAGE_OFFSET),%edi | 106 | movl $(boot_command_line - __PAGE_OFFSET),%edi |
107 | movl $(COMMAND_LINE_SIZE/4),%ecx | 107 | movl $(COMMAND_LINE_SIZE/4),%ecx |
108 | rep | 108 | rep |
109 | movsl | 109 | movsl |
diff --git a/arch/i386/kernel/hpet.c b/arch/i386/kernel/hpet.c index 45a8685bb60b..0b29d41322a2 100644 --- a/arch/i386/kernel/hpet.c +++ b/arch/i386/kernel/hpet.c | |||
@@ -12,7 +12,7 @@ | |||
12 | /* FSEC = 10^-15 NSEC = 10^-9 */ | 12 | /* FSEC = 10^-15 NSEC = 10^-9 */ |
13 | #define FSEC_PER_NSEC 1000000 | 13 | #define FSEC_PER_NSEC 1000000 |
14 | 14 | ||
15 | static void *hpet_ptr; | 15 | static void __iomem *hpet_ptr; |
16 | 16 | ||
17 | static cycle_t read_hpet(void) | 17 | static cycle_t read_hpet(void) |
18 | { | 18 | { |
@@ -40,8 +40,7 @@ static int __init init_hpet_clocksource(void) | |||
40 | return -ENODEV; | 40 | return -ENODEV; |
41 | 41 | ||
42 | /* calculate the hpet address: */ | 42 | /* calculate the hpet address: */ |
43 | hpet_base = | 43 | hpet_base = ioremap_nocache(hpet_address, HPET_MMAP_SIZE); |
44 | (void __iomem*)ioremap_nocache(hpet_address, HPET_MMAP_SIZE); | ||
45 | hpet_ptr = hpet_base + HPET_COUNTER; | 44 | hpet_ptr = hpet_base + HPET_COUNTER; |
46 | 45 | ||
47 | /* calculate the frequency: */ | 46 | /* calculate the frequency: */ |
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c index 5592fa6e1fa1..ba8d302a0b72 100644 --- a/arch/i386/kernel/io_apic.c +++ b/arch/i386/kernel/io_apic.c | |||
@@ -126,7 +126,7 @@ static inline void io_apic_write(unsigned int apic, unsigned int reg, unsigned i | |||
126 | */ | 126 | */ |
127 | static inline void io_apic_modify(unsigned int apic, unsigned int reg, unsigned int value) | 127 | static inline void io_apic_modify(unsigned int apic, unsigned int reg, unsigned int value) |
128 | { | 128 | { |
129 | volatile struct io_apic *io_apic = io_apic_base(apic); | 129 | volatile struct io_apic __iomem *io_apic = io_apic_base(apic); |
130 | if (sis_apic_bug) | 130 | if (sis_apic_bug) |
131 | writel(reg, &io_apic->index); | 131 | writel(reg, &io_apic->index); |
132 | writel(value, &io_apic->data); | 132 | writel(value, &io_apic->data); |
diff --git a/arch/i386/kernel/microcode.c b/arch/i386/kernel/microcode.c index c8fa13721bcb..381252bae3d8 100644 --- a/arch/i386/kernel/microcode.c +++ b/arch/i386/kernel/microcode.c | |||
@@ -451,7 +451,7 @@ static ssize_t microcode_write (struct file *file, const char __user *buf, size_ | |||
451 | return ret; | 451 | return ret; |
452 | } | 452 | } |
453 | 453 | ||
454 | static struct file_operations microcode_fops = { | 454 | static const struct file_operations microcode_fops = { |
455 | .owner = THIS_MODULE, | 455 | .owner = THIS_MODULE, |
456 | .write = microcode_write, | 456 | .write = microcode_write, |
457 | .open = microcode_open, | 457 | .open = microcode_open, |
diff --git a/arch/i386/kernel/msr.c b/arch/i386/kernel/msr.c index 4a472a17d1c6..4e14264f392a 100644 --- a/arch/i386/kernel/msr.c +++ b/arch/i386/kernel/msr.c | |||
@@ -230,7 +230,7 @@ static int msr_open(struct inode *inode, struct file *file) | |||
230 | /* | 230 | /* |
231 | * File operations we support | 231 | * File operations we support |
232 | */ | 232 | */ |
233 | static struct file_operations msr_fops = { | 233 | static const struct file_operations msr_fops = { |
234 | .owner = THIS_MODULE, | 234 | .owner = THIS_MODULE, |
235 | .llseek = msr_seek, | 235 | .llseek = msr_seek, |
236 | .read = msr_read, | 236 | .read = msr_read, |
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c index 4b31ad70c1ac..4694ac980cd2 100644 --- a/arch/i386/kernel/setup.c +++ b/arch/i386/kernel/setup.c | |||
@@ -132,7 +132,7 @@ unsigned long saved_videomode; | |||
132 | #define RAMDISK_PROMPT_FLAG 0x8000 | 132 | #define RAMDISK_PROMPT_FLAG 0x8000 |
133 | #define RAMDISK_LOAD_FLAG 0x4000 | 133 | #define RAMDISK_LOAD_FLAG 0x4000 |
134 | 134 | ||
135 | static char command_line[COMMAND_LINE_SIZE]; | 135 | static char __initdata command_line[COMMAND_LINE_SIZE]; |
136 | 136 | ||
137 | unsigned char __initdata boot_params[PARAM_SIZE]; | 137 | unsigned char __initdata boot_params[PARAM_SIZE]; |
138 | 138 | ||
@@ -576,7 +576,7 @@ void __init setup_arch(char **cmdline_p) | |||
576 | print_memory_map("user"); | 576 | print_memory_map("user"); |
577 | } | 577 | } |
578 | 578 | ||
579 | strlcpy(command_line, saved_command_line, COMMAND_LINE_SIZE); | 579 | strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); |
580 | *cmdline_p = command_line; | 580 | *cmdline_p = command_line; |
581 | 581 | ||
582 | max_low_pfn = setup_memory(); | 582 | max_low_pfn = setup_memory(); |
diff --git a/arch/i386/kernel/sysenter.c b/arch/i386/kernel/sysenter.c index 5da744204d10..bc882a2b1db6 100644 --- a/arch/i386/kernel/sysenter.c +++ b/arch/i386/kernel/sysenter.c | |||
@@ -70,11 +70,12 @@ void enable_sep_cpu(void) | |||
70 | */ | 70 | */ |
71 | extern const char vsyscall_int80_start, vsyscall_int80_end; | 71 | extern const char vsyscall_int80_start, vsyscall_int80_end; |
72 | extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; | 72 | extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; |
73 | static void *syscall_page; | 73 | static struct page *syscall_pages[1]; |
74 | 74 | ||
75 | int __init sysenter_setup(void) | 75 | int __init sysenter_setup(void) |
76 | { | 76 | { |
77 | syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); | 77 | void *syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); |
78 | syscall_pages[0] = virt_to_page(syscall_page); | ||
78 | 79 | ||
79 | #ifdef CONFIG_COMPAT_VDSO | 80 | #ifdef CONFIG_COMPAT_VDSO |
80 | __set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY); | 81 | __set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY); |
@@ -96,31 +97,12 @@ int __init sysenter_setup(void) | |||
96 | } | 97 | } |
97 | 98 | ||
98 | #ifndef CONFIG_COMPAT_VDSO | 99 | #ifndef CONFIG_COMPAT_VDSO |
99 | static struct page *syscall_nopage(struct vm_area_struct *vma, | ||
100 | unsigned long adr, int *type) | ||
101 | { | ||
102 | struct page *p = virt_to_page(adr - vma->vm_start + syscall_page); | ||
103 | get_page(p); | ||
104 | return p; | ||
105 | } | ||
106 | |||
107 | /* Prevent VMA merging */ | ||
108 | static void syscall_vma_close(struct vm_area_struct *vma) | ||
109 | { | ||
110 | } | ||
111 | |||
112 | static struct vm_operations_struct syscall_vm_ops = { | ||
113 | .close = syscall_vma_close, | ||
114 | .nopage = syscall_nopage, | ||
115 | }; | ||
116 | |||
117 | /* Defined in vsyscall-sysenter.S */ | 100 | /* Defined in vsyscall-sysenter.S */ |
118 | extern void SYSENTER_RETURN; | 101 | extern void SYSENTER_RETURN; |
119 | 102 | ||
120 | /* Setup a VMA at program startup for the vsyscall page */ | 103 | /* Setup a VMA at program startup for the vsyscall page */ |
121 | int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack) | 104 | int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack) |
122 | { | 105 | { |
123 | struct vm_area_struct *vma; | ||
124 | struct mm_struct *mm = current->mm; | 106 | struct mm_struct *mm = current->mm; |
125 | unsigned long addr; | 107 | unsigned long addr; |
126 | int ret; | 108 | int ret; |
@@ -132,38 +114,25 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack) | |||
132 | goto up_fail; | 114 | goto up_fail; |
133 | } | 115 | } |
134 | 116 | ||
135 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); | ||
136 | if (!vma) { | ||
137 | ret = -ENOMEM; | ||
138 | goto up_fail; | ||
139 | } | ||
140 | |||
141 | vma->vm_start = addr; | ||
142 | vma->vm_end = addr + PAGE_SIZE; | ||
143 | /* MAYWRITE to allow gdb to COW and set breakpoints */ | ||
144 | vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE; | ||
145 | /* | 117 | /* |
118 | * MAYWRITE to allow gdb to COW and set breakpoints | ||
119 | * | ||
146 | * Make sure the vDSO gets into every core dump. | 120 | * Make sure the vDSO gets into every core dump. |
147 | * Dumping its contents makes post-mortem fully interpretable later | 121 | * Dumping its contents makes post-mortem fully interpretable later |
148 | * without matching up the same kernel and hardware config to see | 122 | * without matching up the same kernel and hardware config to see |
149 | * what PC values meant. | 123 | * what PC values meant. |
150 | */ | 124 | */ |
151 | vma->vm_flags |= VM_ALWAYSDUMP; | 125 | ret = install_special_mapping(mm, addr, PAGE_SIZE, |
152 | vma->vm_flags |= mm->def_flags; | 126 | VM_READ|VM_EXEC| |
153 | vma->vm_page_prot = protection_map[vma->vm_flags & 7]; | 127 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| |
154 | vma->vm_ops = &syscall_vm_ops; | 128 | VM_ALWAYSDUMP, |
155 | vma->vm_mm = mm; | 129 | syscall_pages); |
156 | 130 | if (ret) | |
157 | ret = insert_vm_struct(mm, vma); | ||
158 | if (unlikely(ret)) { | ||
159 | kmem_cache_free(vm_area_cachep, vma); | ||
160 | goto up_fail; | 131 | goto up_fail; |
161 | } | ||
162 | 132 | ||
163 | current->mm->context.vdso = (void *)addr; | 133 | current->mm->context.vdso = (void *)addr; |
164 | current_thread_info()->sysenter_return = | 134 | current_thread_info()->sysenter_return = |
165 | (void *)VDSO_SYM(&SYSENTER_RETURN); | 135 | (void *)VDSO_SYM(&SYSENTER_RETURN); |
166 | mm->total_vm++; | ||
167 | up_fail: | 136 | up_fail: |
168 | up_write(&mm->mmap_sem); | 137 | up_write(&mm->mmap_sem); |
169 | return ret; | 138 | return ret; |
diff --git a/arch/i386/kernel/vmlinux.lds.S b/arch/i386/kernel/vmlinux.lds.S index a53c8b1854b5..5038a73d554e 100644 --- a/arch/i386/kernel/vmlinux.lds.S +++ b/arch/i386/kernel/vmlinux.lds.S | |||
@@ -181,12 +181,14 @@ SECTIONS | |||
181 | from .altinstructions and .eh_frame */ | 181 | from .altinstructions and .eh_frame */ |
182 | .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } | 182 | .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } |
183 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } | 183 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } |
184 | #if defined(CONFIG_BLK_DEV_INITRD) | ||
184 | . = ALIGN(4096); | 185 | . = ALIGN(4096); |
185 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { | 186 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { |
186 | __initramfs_start = .; | 187 | __initramfs_start = .; |
187 | *(.init.ramfs) | 188 | *(.init.ramfs) |
188 | __initramfs_end = .; | 189 | __initramfs_end = .; |
189 | } | 190 | } |
191 | #endif | ||
190 | . = ALIGN(L1_CACHE_BYTES); | 192 | . = ALIGN(L1_CACHE_BYTES); |
191 | .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { | 193 | .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { |
192 | __per_cpu_start = .; | 194 | __per_cpu_start = .; |
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c index aaaa4d225f7e..cba9b3894a33 100644 --- a/arch/i386/mm/fault.c +++ b/arch/i386/mm/fault.c | |||
@@ -60,32 +60,6 @@ static inline int notify_page_fault(enum die_val val, const char *str, | |||
60 | } | 60 | } |
61 | 61 | ||
62 | /* | 62 | /* |
63 | * Unlock any spinlocks which will prevent us from getting the | ||
64 | * message out | ||
65 | */ | ||
66 | void bust_spinlocks(int yes) | ||
67 | { | ||
68 | int loglevel_save = console_loglevel; | ||
69 | |||
70 | if (yes) { | ||
71 | oops_in_progress = 1; | ||
72 | return; | ||
73 | } | ||
74 | #ifdef CONFIG_VT | ||
75 | unblank_screen(); | ||
76 | #endif | ||
77 | oops_in_progress = 0; | ||
78 | /* | ||
79 | * OK, the message is on the console. Now we call printk() | ||
80 | * without oops_in_progress set so that printk will give klogd | ||
81 | * a poke. Hold onto your hats... | ||
82 | */ | ||
83 | console_loglevel = 15; /* NMI oopser may have shut the console up */ | ||
84 | printk(" "); | ||
85 | console_loglevel = loglevel_save; | ||
86 | } | ||
87 | |||
88 | /* | ||
89 | * Return EIP plus the CS segment base. The segment limit is also | 63 | * Return EIP plus the CS segment base. The segment limit is also |
90 | * adjusted, clamped to the kernel/user address space (whichever is | 64 | * adjusted, clamped to the kernel/user address space (whichever is |
91 | * appropriate), and returned in *eip_limit. | 65 | * appropriate), and returned in *eip_limit. |
diff --git a/arch/i386/mm/highmem.c b/arch/i386/mm/highmem.c index e0fa6cb655a8..bb2de1089add 100644 --- a/arch/i386/mm/highmem.c +++ b/arch/i386/mm/highmem.c | |||
@@ -33,13 +33,14 @@ void *kmap_atomic(struct page *page, enum km_type type) | |||
33 | 33 | ||
34 | /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ | 34 | /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ |
35 | pagefault_disable(); | 35 | pagefault_disable(); |
36 | |||
37 | idx = type + KM_TYPE_NR*smp_processor_id(); | ||
38 | BUG_ON(!pte_none(*(kmap_pte-idx))); | ||
39 | |||
36 | if (!PageHighMem(page)) | 40 | if (!PageHighMem(page)) |
37 | return page_address(page); | 41 | return page_address(page); |
38 | 42 | ||
39 | idx = type + KM_TYPE_NR*smp_processor_id(); | ||
40 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | 43 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); |
41 | if (!pte_none(*(kmap_pte-idx))) | ||
42 | BUG(); | ||
43 | set_pte(kmap_pte-idx, mk_pte(page, kmap_prot)); | 44 | set_pte(kmap_pte-idx, mk_pte(page, kmap_prot)); |
44 | 45 | ||
45 | return (void*) vaddr; | 46 | return (void*) vaddr; |
diff --git a/arch/i386/mm/pageattr.c b/arch/i386/mm/pageattr.c index ad91528bdc14..e223b1d4981c 100644 --- a/arch/i386/mm/pageattr.c +++ b/arch/i386/mm/pageattr.c | |||
@@ -224,7 +224,7 @@ void global_flush_tlb(void) | |||
224 | list_replace_init(&df_list, &l); | 224 | list_replace_init(&df_list, &l); |
225 | spin_unlock_irq(&cpa_lock); | 225 | spin_unlock_irq(&cpa_lock); |
226 | if (!cpu_has_clflush) | 226 | if (!cpu_has_clflush) |
227 | flush_map(0); | 227 | flush_map(NULL); |
228 | list_for_each_entry_safe(pg, next, &l, lru) { | 228 | list_for_each_entry_safe(pg, next, &l, lru) { |
229 | if (cpu_has_clflush) | 229 | if (cpu_has_clflush) |
230 | flush_map(page_address(pg)); | 230 | flush_map(page_address(pg)); |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index f1d2899e9a62..db185f34e341 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -24,6 +24,10 @@ config 64BIT | |||
24 | bool | 24 | bool |
25 | default y | 25 | default y |
26 | 26 | ||
27 | config ZONE_DMA | ||
28 | def_bool y | ||
29 | depends on !IA64_SGI_SN2 | ||
30 | |||
27 | config MMU | 31 | config MMU |
28 | bool | 32 | bool |
29 | default y | 33 | default y |
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index ce49fe3a3b56..c1dca226b479 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c | |||
@@ -1881,7 +1881,7 @@ ioc_open(struct inode *inode, struct file *file) | |||
1881 | return seq_open(file, &ioc_seq_ops); | 1881 | return seq_open(file, &ioc_seq_ops); |
1882 | } | 1882 | } |
1883 | 1883 | ||
1884 | static struct file_operations ioc_fops = { | 1884 | static const struct file_operations ioc_fops = { |
1885 | .open = ioc_open, | 1885 | .open = ioc_open, |
1886 | .read = seq_read, | 1886 | .read = seq_read, |
1887 | .llseek = seq_lseek, | 1887 | .llseek = seq_lseek, |
diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c index 578737ec7629..c05bda662364 100644 --- a/arch/ia64/ia32/binfmt_elf32.c +++ b/arch/ia64/ia32/binfmt_elf32.c | |||
@@ -91,9 +91,8 @@ ia64_elf32_init (struct pt_regs *regs) | |||
91 | * it with privilege level 3 because the IVE uses non-privileged accesses to these | 91 | * it with privilege level 3 because the IVE uses non-privileged accesses to these |
92 | * tables. IA-32 segmentation is used to protect against IA-32 accesses to them. | 92 | * tables. IA-32 segmentation is used to protect against IA-32 accesses to them. |
93 | */ | 93 | */ |
94 | vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); | 94 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); |
95 | if (vma) { | 95 | if (vma) { |
96 | memset(vma, 0, sizeof(*vma)); | ||
97 | vma->vm_mm = current->mm; | 96 | vma->vm_mm = current->mm; |
98 | vma->vm_start = IA32_GDT_OFFSET; | 97 | vma->vm_start = IA32_GDT_OFFSET; |
99 | vma->vm_end = vma->vm_start + PAGE_SIZE; | 98 | vma->vm_end = vma->vm_start + PAGE_SIZE; |
@@ -117,9 +116,8 @@ ia64_elf32_init (struct pt_regs *regs) | |||
117 | * code is locked in specific gate page, which is pointed by pretcode | 116 | * code is locked in specific gate page, which is pointed by pretcode |
118 | * when setup_frame_ia32 | 117 | * when setup_frame_ia32 |
119 | */ | 118 | */ |
120 | vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); | 119 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); |
121 | if (vma) { | 120 | if (vma) { |
122 | memset(vma, 0, sizeof(*vma)); | ||
123 | vma->vm_mm = current->mm; | 121 | vma->vm_mm = current->mm; |
124 | vma->vm_start = IA32_GATE_OFFSET; | 122 | vma->vm_start = IA32_GATE_OFFSET; |
125 | vma->vm_end = vma->vm_start + PAGE_SIZE; | 123 | vma->vm_end = vma->vm_start + PAGE_SIZE; |
@@ -142,9 +140,8 @@ ia64_elf32_init (struct pt_regs *regs) | |||
142 | * Install LDT as anonymous memory. This gives us all-zero segment descriptors | 140 | * Install LDT as anonymous memory. This gives us all-zero segment descriptors |
143 | * until a task modifies them via modify_ldt(). | 141 | * until a task modifies them via modify_ldt(). |
144 | */ | 142 | */ |
145 | vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); | 143 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); |
146 | if (vma) { | 144 | if (vma) { |
147 | memset(vma, 0, sizeof(*vma)); | ||
148 | vma->vm_mm = current->mm; | 145 | vma->vm_mm = current->mm; |
149 | vma->vm_start = IA32_LDT_OFFSET; | 146 | vma->vm_start = IA32_LDT_OFFSET; |
150 | vma->vm_end = vma->vm_start + PAGE_ALIGN(IA32_LDT_ENTRIES*IA32_LDT_ENTRY_SIZE); | 147 | vma->vm_end = vma->vm_start + PAGE_ALIGN(IA32_LDT_ENTRIES*IA32_LDT_ENTRY_SIZE); |
@@ -214,12 +211,10 @@ ia32_setup_arg_pages (struct linux_binprm *bprm, int executable_stack) | |||
214 | bprm->loader += stack_base; | 211 | bprm->loader += stack_base; |
215 | bprm->exec += stack_base; | 212 | bprm->exec += stack_base; |
216 | 213 | ||
217 | mpnt = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); | 214 | mpnt = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); |
218 | if (!mpnt) | 215 | if (!mpnt) |
219 | return -ENOMEM; | 216 | return -ENOMEM; |
220 | 217 | ||
221 | memset(mpnt, 0, sizeof(*mpnt)); | ||
222 | |||
223 | down_write(¤t->mm->mmap_sem); | 218 | down_write(¤t->mm->mmap_sem); |
224 | { | 219 | { |
225 | mpnt->vm_mm = current->mm; | 220 | mpnt->vm_mm = current->mm; |
diff --git a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S index a32cd59b81ed..687e5fdc9683 100644 --- a/arch/ia64/ia32/ia32_entry.S +++ b/arch/ia64/ia32/ia32_entry.S | |||
@@ -326,7 +326,7 @@ ia32_syscall_table: | |||
326 | data8 sys_ni_syscall | 326 | data8 sys_ni_syscall |
327 | data8 compat_sys_wait4 | 327 | data8 compat_sys_wait4 |
328 | data8 sys_swapoff /* 115 */ | 328 | data8 sys_swapoff /* 115 */ |
329 | data8 sys32_sysinfo | 329 | data8 compat_sys_sysinfo |
330 | data8 sys32_ipc | 330 | data8 sys32_ipc |
331 | data8 sys_fsync | 331 | data8 sys_fsync |
332 | data8 sys32_sigreturn | 332 | data8 sys32_sigreturn |
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c index 957681c39ad9..d430d36ae49d 100644 --- a/arch/ia64/ia32/sys_ia32.c +++ b/arch/ia64/ia32/sys_ia32.c | |||
@@ -2209,74 +2209,6 @@ sys32_fstat64 (unsigned int fd, struct stat64 __user *statbuf) | |||
2209 | return ret; | 2209 | return ret; |
2210 | } | 2210 | } |
2211 | 2211 | ||
2212 | struct sysinfo32 { | ||
2213 | s32 uptime; | ||
2214 | u32 loads[3]; | ||
2215 | u32 totalram; | ||
2216 | u32 freeram; | ||
2217 | u32 sharedram; | ||
2218 | u32 bufferram; | ||
2219 | u32 totalswap; | ||
2220 | u32 freeswap; | ||
2221 | u16 procs; | ||
2222 | u16 pad; | ||
2223 | u32 totalhigh; | ||
2224 | u32 freehigh; | ||
2225 | u32 mem_unit; | ||
2226 | char _f[8]; | ||
2227 | }; | ||
2228 | |||
2229 | asmlinkage long | ||
2230 | sys32_sysinfo (struct sysinfo32 __user *info) | ||
2231 | { | ||
2232 | struct sysinfo s; | ||
2233 | long ret, err; | ||
2234 | int bitcount = 0; | ||
2235 | mm_segment_t old_fs = get_fs(); | ||
2236 | |||
2237 | set_fs(KERNEL_DS); | ||
2238 | ret = sys_sysinfo((struct sysinfo __user *) &s); | ||
2239 | set_fs(old_fs); | ||
2240 | /* Check to see if any memory value is too large for 32-bit and | ||
2241 | * scale down if needed. | ||
2242 | */ | ||
2243 | if ((s.totalram >> 32) || (s.totalswap >> 32)) { | ||
2244 | while (s.mem_unit < PAGE_SIZE) { | ||
2245 | s.mem_unit <<= 1; | ||
2246 | bitcount++; | ||
2247 | } | ||
2248 | s.totalram >>= bitcount; | ||
2249 | s.freeram >>= bitcount; | ||
2250 | s.sharedram >>= bitcount; | ||
2251 | s.bufferram >>= bitcount; | ||
2252 | s.totalswap >>= bitcount; | ||
2253 | s.freeswap >>= bitcount; | ||
2254 | s.totalhigh >>= bitcount; | ||
2255 | s.freehigh >>= bitcount; | ||
2256 | } | ||
2257 | |||
2258 | if (!access_ok(VERIFY_WRITE, info, sizeof(*info))) | ||
2259 | return -EFAULT; | ||
2260 | |||
2261 | err = __put_user(s.uptime, &info->uptime); | ||
2262 | err |= __put_user(s.loads[0], &info->loads[0]); | ||
2263 | err |= __put_user(s.loads[1], &info->loads[1]); | ||
2264 | err |= __put_user(s.loads[2], &info->loads[2]); | ||
2265 | err |= __put_user(s.totalram, &info->totalram); | ||
2266 | err |= __put_user(s.freeram, &info->freeram); | ||
2267 | err |= __put_user(s.sharedram, &info->sharedram); | ||
2268 | err |= __put_user(s.bufferram, &info->bufferram); | ||
2269 | err |= __put_user(s.totalswap, &info->totalswap); | ||
2270 | err |= __put_user(s.freeswap, &info->freeswap); | ||
2271 | err |= __put_user(s.procs, &info->procs); | ||
2272 | err |= __put_user (s.totalhigh, &info->totalhigh); | ||
2273 | err |= __put_user (s.freehigh, &info->freehigh); | ||
2274 | err |= __put_user (s.mem_unit, &info->mem_unit); | ||
2275 | if (err) | ||
2276 | return -EFAULT; | ||
2277 | return ret; | ||
2278 | } | ||
2279 | |||
2280 | asmlinkage long | 2212 | asmlinkage long |
2281 | sys32_sched_rr_get_interval (pid_t pid, struct compat_timespec __user *interval) | 2213 | sys32_sched_rr_get_interval (pid_t pid, struct compat_timespec __user *interval) |
2282 | { | 2214 | { |
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c index 9d92097ce96d..37bb16f07fc3 100644 --- a/arch/ia64/kernel/crash.c +++ b/arch/ia64/kernel/crash.c | |||
@@ -52,7 +52,7 @@ extern void ia64_dump_cpu_regs(void *); | |||
52 | static DEFINE_PER_CPU(struct elf_prstatus, elf_prstatus); | 52 | static DEFINE_PER_CPU(struct elf_prstatus, elf_prstatus); |
53 | 53 | ||
54 | void | 54 | void |
55 | crash_save_this_cpu() | 55 | crash_save_this_cpu(void) |
56 | { | 56 | { |
57 | void *buf; | 57 | void *buf; |
58 | unsigned long cfm, sof, sol; | 58 | unsigned long cfm, sof, sol; |
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c index 6c03928544c2..772ba6fe110f 100644 --- a/arch/ia64/kernel/efi.c +++ b/arch/ia64/kernel/efi.c | |||
@@ -413,11 +413,10 @@ efi_init (void) | |||
413 | efi_char16_t *c16; | 413 | efi_char16_t *c16; |
414 | u64 efi_desc_size; | 414 | u64 efi_desc_size; |
415 | char *cp, vendor[100] = "unknown"; | 415 | char *cp, vendor[100] = "unknown"; |
416 | extern char saved_command_line[]; | ||
417 | int i; | 416 | int i; |
418 | 417 | ||
419 | /* it's too early to be able to use the standard kernel command line support... */ | 418 | /* it's too early to be able to use the standard kernel command line support... */ |
420 | for (cp = saved_command_line; *cp; ) { | 419 | for (cp = boot_command_line; *cp; ) { |
421 | if (memcmp(cp, "mem=", 4) == 0) { | 420 | if (memcmp(cp, "mem=", 4) == 0) { |
422 | mem_limit = memparse(cp + 4, &cp); | 421 | mem_limit = memparse(cp + 4, &cp); |
423 | } else if (memcmp(cp, "max_addr=", 9) == 0) { | 422 | } else if (memcmp(cp, "max_addr=", 9) == 0) { |
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index aa94f60fa8e7..9860794a68fb 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
@@ -621,7 +621,7 @@ EXPORT_PER_CPU_SYMBOL_GPL(pfm_syst_info); | |||
621 | 621 | ||
622 | 622 | ||
623 | /* forward declaration */ | 623 | /* forward declaration */ |
624 | static struct file_operations pfm_file_ops; | 624 | static const struct file_operations pfm_file_ops; |
625 | 625 | ||
626 | /* | 626 | /* |
627 | * forward declarations | 627 | * forward declarations |
@@ -2126,7 +2126,7 @@ pfm_no_open(struct inode *irrelevant, struct file *dontcare) | |||
2126 | 2126 | ||
2127 | 2127 | ||
2128 | 2128 | ||
2129 | static struct file_operations pfm_file_ops = { | 2129 | static const struct file_operations pfm_file_ops = { |
2130 | .llseek = no_llseek, | 2130 | .llseek = no_llseek, |
2131 | .read = pfm_read, | 2131 | .read = pfm_read, |
2132 | .write = pfm_write, | 2132 | .write = pfm_write, |
@@ -2301,12 +2301,11 @@ pfm_smpl_buffer_alloc(struct task_struct *task, pfm_context_t *ctx, unsigned lon | |||
2301 | DPRINT(("smpl_buf @%p\n", smpl_buf)); | 2301 | DPRINT(("smpl_buf @%p\n", smpl_buf)); |
2302 | 2302 | ||
2303 | /* allocate vma */ | 2303 | /* allocate vma */ |
2304 | vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); | 2304 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); |
2305 | if (!vma) { | 2305 | if (!vma) { |
2306 | DPRINT(("Cannot allocate vma\n")); | 2306 | DPRINT(("Cannot allocate vma\n")); |
2307 | goto error_kmem; | 2307 | goto error_kmem; |
2308 | } | 2308 | } |
2309 | memset(vma, 0, sizeof(*vma)); | ||
2310 | 2309 | ||
2311 | /* | 2310 | /* |
2312 | * partially initialize the vma for the sampling buffer | 2311 | * partially initialize the vma for the sampling buffer |
@@ -6597,7 +6596,7 @@ found: | |||
6597 | return 0; | 6596 | return 0; |
6598 | } | 6597 | } |
6599 | 6598 | ||
6600 | static struct file_operations pfm_proc_fops = { | 6599 | static const struct file_operations pfm_proc_fops = { |
6601 | .open = pfm_proc_open, | 6600 | .open = pfm_proc_open, |
6602 | .read = seq_read, | 6601 | .read = seq_read, |
6603 | .llseek = seq_lseek, | 6602 | .llseek = seq_lseek, |
diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c index 20bad78b5073..37c876f95dba 100644 --- a/arch/ia64/kernel/sal.c +++ b/arch/ia64/kernel/sal.c | |||
@@ -194,9 +194,8 @@ static void __init | |||
194 | chk_nointroute_opt(void) | 194 | chk_nointroute_opt(void) |
195 | { | 195 | { |
196 | char *cp; | 196 | char *cp; |
197 | extern char saved_command_line[]; | ||
198 | 197 | ||
199 | for (cp = saved_command_line; *cp; ) { | 198 | for (cp = boot_command_line; *cp; ) { |
200 | if (memcmp(cp, "nointroute", 10) == 0) { | 199 | if (memcmp(cp, "nointroute", 10) == 0) { |
201 | no_int_routing = 1; | 200 | no_int_routing = 1; |
202 | printk ("no_int_routing on\n"); | 201 | printk ("no_int_routing on\n"); |
diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c index e375a2f0f2c3..af9f8754d847 100644 --- a/arch/ia64/kernel/salinfo.c +++ b/arch/ia64/kernel/salinfo.c | |||
@@ -352,7 +352,7 @@ retry: | |||
352 | return size; | 352 | return size; |
353 | } | 353 | } |
354 | 354 | ||
355 | static struct file_operations salinfo_event_fops = { | 355 | static const struct file_operations salinfo_event_fops = { |
356 | .open = salinfo_event_open, | 356 | .open = salinfo_event_open, |
357 | .read = salinfo_event_read, | 357 | .read = salinfo_event_read, |
358 | }; | 358 | }; |
@@ -568,7 +568,7 @@ salinfo_log_write(struct file *file, const char __user *buffer, size_t count, lo | |||
568 | return count; | 568 | return count; |
569 | } | 569 | } |
570 | 570 | ||
571 | static struct file_operations salinfo_data_fops = { | 571 | static const struct file_operations salinfo_data_fops = { |
572 | .open = salinfo_log_open, | 572 | .open = salinfo_log_open, |
573 | .release = salinfo_log_release, | 573 | .release = salinfo_log_release, |
574 | .read = salinfo_log_read, | 574 | .read = salinfo_log_read, |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 83c2629e1c4c..5fa09d141ab7 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -262,7 +262,7 @@ reserve_memory (void) | |||
262 | * appropriate after a kernel panic. | 262 | * appropriate after a kernel panic. |
263 | */ | 263 | */ |
264 | { | 264 | { |
265 | char *from = strstr(saved_command_line, "crashkernel="); | 265 | char *from = strstr(boot_command_line, "crashkernel="); |
266 | unsigned long base, size; | 266 | unsigned long base, size; |
267 | if (from) { | 267 | if (from) { |
268 | size = memparse(from + 12, &from); | 268 | size = memparse(from + 12, &from); |
@@ -463,7 +463,7 @@ setup_arch (char **cmdline_p) | |||
463 | ia64_patch_vtop((u64) __start___vtop_patchlist, (u64) __end___vtop_patchlist); | 463 | ia64_patch_vtop((u64) __start___vtop_patchlist, (u64) __end___vtop_patchlist); |
464 | 464 | ||
465 | *cmdline_p = __va(ia64_boot_param->command_line); | 465 | *cmdline_p = __va(ia64_boot_param->command_line); |
466 | strlcpy(saved_command_line, *cmdline_p, COMMAND_LINE_SIZE); | 466 | strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE); |
467 | 467 | ||
468 | efi_init(); | 468 | efi_init(); |
469 | io_port_init(); | 469 | io_port_init(); |
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c index f4c7f7769cf7..55ddd809b02d 100644 --- a/arch/ia64/kernel/smp.c +++ b/arch/ia64/kernel/smp.c | |||
@@ -221,13 +221,13 @@ send_IPI_self (int op) | |||
221 | 221 | ||
222 | #ifdef CONFIG_KEXEC | 222 | #ifdef CONFIG_KEXEC |
223 | void | 223 | void |
224 | kdump_smp_send_stop() | 224 | kdump_smp_send_stop(void) |
225 | { | 225 | { |
226 | send_IPI_allbutself(IPI_KDUMP_CPU_STOP); | 226 | send_IPI_allbutself(IPI_KDUMP_CPU_STOP); |
227 | } | 227 | } |
228 | 228 | ||
229 | void | 229 | void |
230 | kdump_smp_send_init() | 230 | kdump_smp_send_init(void) |
231 | { | 231 | { |
232 | unsigned int cpu, self_cpu; | 232 | unsigned int cpu, self_cpu; |
233 | self_cpu = smp_processor_id(); | 233 | self_cpu = smp_processor_id(); |
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index ab684747036f..765cbe5ba6ae 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c | |||
@@ -24,8 +24,6 @@ | |||
24 | #include <asm/uaccess.h> | 24 | #include <asm/uaccess.h> |
25 | #include <asm/kdebug.h> | 25 | #include <asm/kdebug.h> |
26 | 26 | ||
27 | extern spinlock_t timerlist_lock; | ||
28 | |||
29 | fpswa_interface_t *fpswa_interface; | 27 | fpswa_interface_t *fpswa_interface; |
30 | EXPORT_SYMBOL(fpswa_interface); | 28 | EXPORT_SYMBOL(fpswa_interface); |
31 | 29 | ||
@@ -53,34 +51,6 @@ trap_init (void) | |||
53 | fpswa_interface = __va(ia64_boot_param->fpswa); | 51 | fpswa_interface = __va(ia64_boot_param->fpswa); |
54 | } | 52 | } |
55 | 53 | ||
56 | /* | ||
57 | * Unlock any spinlocks which will prevent us from getting the message out (timerlist_lock | ||
58 | * is acquired through the console unblank code) | ||
59 | */ | ||
60 | void | ||
61 | bust_spinlocks (int yes) | ||
62 | { | ||
63 | int loglevel_save = console_loglevel; | ||
64 | |||
65 | if (yes) { | ||
66 | oops_in_progress = 1; | ||
67 | return; | ||
68 | } | ||
69 | |||
70 | #ifdef CONFIG_VT | ||
71 | unblank_screen(); | ||
72 | #endif | ||
73 | oops_in_progress = 0; | ||
74 | /* | ||
75 | * OK, the message is on the console. Now we call printk() without | ||
76 | * oops_in_progress set so that printk will give klogd a poke. Hold onto | ||
77 | * your hats... | ||
78 | */ | ||
79 | console_loglevel = 15; /* NMI oopser may have shut the console up */ | ||
80 | printk(" "); | ||
81 | console_loglevel = loglevel_save; | ||
82 | } | ||
83 | |||
84 | void | 54 | void |
85 | die (const char *str, struct pt_regs *regs, long err) | 55 | die (const char *str, struct pt_regs *regs, long err) |
86 | { | 56 | { |
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 8f3d0066f446..25dd55e4db24 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
@@ -111,12 +111,14 @@ SECTIONS | |||
111 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) | 111 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) |
112 | { *(.init.data) } | 112 | { *(.init.data) } |
113 | 113 | ||
114 | #ifdef CONFIG_BLK_DEV_INITRD | ||
114 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) | 115 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) |
115 | { | 116 | { |
116 | __initramfs_start = .; | 117 | __initramfs_start = .; |
117 | *(.init.ramfs) | 118 | *(.init.ramfs) |
118 | __initramfs_end = .; | 119 | __initramfs_end = .; |
119 | } | 120 | } |
121 | #endif | ||
120 | 122 | ||
121 | . = ALIGN(16); | 123 | . = ALIGN(16); |
122 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) | 124 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) |
diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c index 63e6d49c5813..ca4d41e5f177 100644 --- a/arch/ia64/mm/contig.c +++ b/arch/ia64/mm/contig.c | |||
@@ -259,9 +259,11 @@ paging_init (void) | |||
259 | num_physpages = 0; | 259 | num_physpages = 0; |
260 | efi_memmap_walk(count_pages, &num_physpages); | 260 | efi_memmap_walk(count_pages, &num_physpages); |
261 | 261 | ||
262 | max_dma = virt_to_phys((void *) MAX_DMA_ADDRESS) >> PAGE_SHIFT; | ||
263 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); | 262 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); |
263 | #ifdef CONFIG_ZONE_DMA | ||
264 | max_dma = virt_to_phys((void *) MAX_DMA_ADDRESS) >> PAGE_SHIFT; | ||
264 | max_zone_pfns[ZONE_DMA] = max_dma; | 265 | max_zone_pfns[ZONE_DMA] = max_dma; |
266 | #endif | ||
265 | max_zone_pfns[ZONE_NORMAL] = max_low_pfn; | 267 | max_zone_pfns[ZONE_NORMAL] = max_low_pfn; |
266 | 268 | ||
267 | #ifdef CONFIG_VIRTUAL_MEM_MAP | 269 | #ifdef CONFIG_VIRTUAL_MEM_MAP |
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 6eae596c509d..16835108bb5b 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
@@ -37,7 +37,9 @@ struct early_node_data { | |||
37 | unsigned long pernode_size; | 37 | unsigned long pernode_size; |
38 | struct bootmem_data bootmem_data; | 38 | struct bootmem_data bootmem_data; |
39 | unsigned long num_physpages; | 39 | unsigned long num_physpages; |
40 | #ifdef CONFIG_ZONE_DMA | ||
40 | unsigned long num_dma_physpages; | 41 | unsigned long num_dma_physpages; |
42 | #endif | ||
41 | unsigned long min_pfn; | 43 | unsigned long min_pfn; |
42 | unsigned long max_pfn; | 44 | unsigned long max_pfn; |
43 | }; | 45 | }; |
@@ -633,9 +635,11 @@ static __init int count_node_pages(unsigned long start, unsigned long len, int n | |||
633 | unsigned long end = start + len; | 635 | unsigned long end = start + len; |
634 | 636 | ||
635 | mem_data[node].num_physpages += len >> PAGE_SHIFT; | 637 | mem_data[node].num_physpages += len >> PAGE_SHIFT; |
638 | #ifdef CONFIG_ZONE_DMA | ||
636 | if (start <= __pa(MAX_DMA_ADDRESS)) | 639 | if (start <= __pa(MAX_DMA_ADDRESS)) |
637 | mem_data[node].num_dma_physpages += | 640 | mem_data[node].num_dma_physpages += |
638 | (min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT; | 641 | (min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT; |
642 | #endif | ||
639 | start = GRANULEROUNDDOWN(start); | 643 | start = GRANULEROUNDDOWN(start); |
640 | start = ORDERROUNDDOWN(start); | 644 | start = ORDERROUNDDOWN(start); |
641 | end = GRANULEROUNDUP(end); | 645 | end = GRANULEROUNDUP(end); |
@@ -688,7 +692,9 @@ void __init paging_init(void) | |||
688 | } | 692 | } |
689 | 693 | ||
690 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); | 694 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); |
695 | #ifdef CONFIG_ZONE_DMA | ||
691 | max_zone_pfns[ZONE_DMA] = max_dma; | 696 | max_zone_pfns[ZONE_DMA] = max_dma; |
697 | #endif | ||
692 | max_zone_pfns[ZONE_NORMAL] = max_pfn; | 698 | max_zone_pfns[ZONE_NORMAL] = max_pfn; |
693 | free_area_init_nodes(max_zone_pfns); | 699 | free_area_init_nodes(max_zone_pfns); |
694 | 700 | ||
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index faaca21a3718..f225dd72968b 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -68,7 +68,7 @@ max_pgt_pages(void) | |||
68 | #ifndef CONFIG_NUMA | 68 | #ifndef CONFIG_NUMA |
69 | node_free_pages = nr_free_pages(); | 69 | node_free_pages = nr_free_pages(); |
70 | #else | 70 | #else |
71 | node_free_pages = nr_free_pages_pgdat(NODE_DATA(numa_node_id())); | 71 | node_free_pages = node_page_state(numa_node_id(), NR_FREE_PAGES); |
72 | #endif | 72 | #endif |
73 | max_pgt_pages = node_free_pages / PGT_FRACTION_OF_NODE_MEM; | 73 | max_pgt_pages = node_free_pages / PGT_FRACTION_OF_NODE_MEM; |
74 | max_pgt_pages = max(max_pgt_pages, MIN_PGT_PAGES); | 74 | max_pgt_pages = max(max_pgt_pages, MIN_PGT_PAGES); |
@@ -176,9 +176,8 @@ ia64_init_addr_space (void) | |||
176 | * the problem. When the process attempts to write to the register backing store | 176 | * the problem. When the process attempts to write to the register backing store |
177 | * for the first time, it will get a SEGFAULT in this case. | 177 | * for the first time, it will get a SEGFAULT in this case. |
178 | */ | 178 | */ |
179 | vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); | 179 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); |
180 | if (vma) { | 180 | if (vma) { |
181 | memset(vma, 0, sizeof(*vma)); | ||
182 | vma->vm_mm = current->mm; | 181 | vma->vm_mm = current->mm; |
183 | vma->vm_start = current->thread.rbs_bot & PAGE_MASK; | 182 | vma->vm_start = current->thread.rbs_bot & PAGE_MASK; |
184 | vma->vm_end = vma->vm_start + PAGE_SIZE; | 183 | vma->vm_end = vma->vm_start + PAGE_SIZE; |
@@ -195,9 +194,8 @@ ia64_init_addr_space (void) | |||
195 | 194 | ||
196 | /* map NaT-page at address zero to speed up speculative dereferencing of NULL: */ | 195 | /* map NaT-page at address zero to speed up speculative dereferencing of NULL: */ |
197 | if (!(current->personality & MMAP_PAGE_ZERO)) { | 196 | if (!(current->personality & MMAP_PAGE_ZERO)) { |
198 | vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); | 197 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); |
199 | if (vma) { | 198 | if (vma) { |
200 | memset(vma, 0, sizeof(*vma)); | ||
201 | vma->vm_mm = current->mm; | 199 | vma->vm_mm = current->mm; |
202 | vma->vm_end = PAGE_SIZE; | 200 | vma->vm_end = PAGE_SIZE; |
203 | vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT); | 201 | vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT); |
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c index d9d306c79f2d..601747b1e22a 100644 --- a/arch/ia64/sn/kernel/sn2/sn2_smp.c +++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c | |||
@@ -455,7 +455,7 @@ static int sn2_ptc_proc_open(struct inode *inode, struct file *file) | |||
455 | return seq_open(file, &sn2_ptc_seq_ops); | 455 | return seq_open(file, &sn2_ptc_seq_ops); |
456 | } | 456 | } |
457 | 457 | ||
458 | static struct file_operations proc_sn2_ptc_operations = { | 458 | static const struct file_operations proc_sn2_ptc_operations = { |
459 | .open = sn2_ptc_proc_open, | 459 | .open = sn2_ptc_proc_open, |
460 | .read = seq_read, | 460 | .read = seq_read, |
461 | .llseek = seq_lseek, | 461 | .llseek = seq_lseek, |
diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c index 33367996d72d..6da9854751cd 100644 --- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c +++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c | |||
@@ -865,7 +865,7 @@ error: | |||
865 | return r; | 865 | return r; |
866 | } | 866 | } |
867 | 867 | ||
868 | static struct file_operations sn_hwperf_fops = { | 868 | static const struct file_operations sn_hwperf_fops = { |
869 | .ioctl = sn_hwperf_ioctl, | 869 | .ioctl = sn_hwperf_ioctl, |
870 | }; | 870 | }; |
871 | 871 | ||
diff --git a/arch/ia64/sn/kernel/sn2/sn_proc_fs.c b/arch/ia64/sn/kernel/sn2/sn_proc_fs.c index 43ddc2eccb96..62b3e9a496ac 100644 --- a/arch/ia64/sn/kernel/sn2/sn_proc_fs.c +++ b/arch/ia64/sn/kernel/sn2/sn_proc_fs.c | |||
@@ -89,61 +89,80 @@ static int coherence_id_open(struct inode *inode, struct file *file) | |||
89 | return single_open(file, coherence_id_show, NULL); | 89 | return single_open(file, coherence_id_show, NULL); |
90 | } | 90 | } |
91 | 91 | ||
92 | static struct proc_dir_entry | ||
93 | *sn_procfs_create_entry(const char *name, struct proc_dir_entry *parent, | ||
94 | int (*openfunc)(struct inode *, struct file *), | ||
95 | int (*releasefunc)(struct inode *, struct file *), | ||
96 | ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *)) | ||
97 | { | ||
98 | struct proc_dir_entry *e = create_proc_entry(name, 0444, parent); | ||
99 | |||
100 | if (e) { | ||
101 | struct file_operations *f; | ||
102 | |||
103 | f = kzalloc(sizeof(*f), GFP_KERNEL); | ||
104 | if (f) { | ||
105 | f->open = openfunc; | ||
106 | f->read = seq_read; | ||
107 | f->llseek = seq_lseek; | ||
108 | f->release = releasefunc; | ||
109 | f->write = write; | ||
110 | e->proc_fops = f; | ||
111 | } | ||
112 | } | ||
113 | |||
114 | return e; | ||
115 | } | ||
116 | |||
117 | /* /proc/sgi_sn/sn_topology uses seq_file, see sn_hwperf.c */ | 92 | /* /proc/sgi_sn/sn_topology uses seq_file, see sn_hwperf.c */ |
118 | extern int sn_topology_open(struct inode *, struct file *); | 93 | extern int sn_topology_open(struct inode *, struct file *); |
119 | extern int sn_topology_release(struct inode *, struct file *); | 94 | extern int sn_topology_release(struct inode *, struct file *); |
120 | 95 | ||
96 | static const struct file_operations proc_partition_id_fops = { | ||
97 | .open = partition_id_open, | ||
98 | .read = seq_read, | ||
99 | .llseek = seq_lseek, | ||
100 | .release = single_release, | ||
101 | }; | ||
102 | |||
103 | static const struct file_operations proc_system_sn_fops = { | ||
104 | .open = system_serial_number_open, | ||
105 | .read = seq_read, | ||
106 | .llseek = seq_lseek, | ||
107 | .release = single_release, | ||
108 | }; | ||
109 | |||
110 | static const struct file_operations proc_license_id_fops = { | ||
111 | .open = licenseID_open, | ||
112 | .read = seq_read, | ||
113 | .llseek = seq_lseek, | ||
114 | .release = single_release, | ||
115 | }; | ||
116 | |||
117 | static const struct file_operations proc_sn_force_intr_fops = { | ||
118 | .open = sn_force_interrupt_open, | ||
119 | .read = seq_read, | ||
120 | .write = sn_force_interrupt_write_proc, | ||
121 | .llseek = seq_lseek, | ||
122 | .release = single_release, | ||
123 | }; | ||
124 | |||
125 | static const struct file_operations proc_coherence_id_fops = { | ||
126 | .open = coherence_id_open, | ||
127 | .read = seq_read, | ||
128 | .llseek = seq_lseek, | ||
129 | .release = single_release, | ||
130 | }; | ||
131 | |||
132 | static const struct file_operations proc_sn_topo_fops = { | ||
133 | .open = sn_topology_open, | ||
134 | .read = seq_read, | ||
135 | .llseek = seq_lseek, | ||
136 | .release = sn_topology_release, | ||
137 | }; | ||
138 | |||
121 | void register_sn_procfs(void) | 139 | void register_sn_procfs(void) |
122 | { | 140 | { |
123 | static struct proc_dir_entry *sgi_proc_dir = NULL; | 141 | static struct proc_dir_entry *sgi_proc_dir = NULL; |
142 | struct proc_dir_entry *pde; | ||
124 | 143 | ||
125 | BUG_ON(sgi_proc_dir != NULL); | 144 | BUG_ON(sgi_proc_dir != NULL); |
126 | if (!(sgi_proc_dir = proc_mkdir("sgi_sn", NULL))) | 145 | if (!(sgi_proc_dir = proc_mkdir("sgi_sn", NULL))) |
127 | return; | 146 | return; |
128 | 147 | ||
129 | sn_procfs_create_entry("partition_id", sgi_proc_dir, | 148 | pde = create_proc_entry("partition_id", 0444, sgi_proc_dir); |
130 | partition_id_open, single_release, NULL); | 149 | if (pde) |
131 | 150 | pde->proc_fops = &proc_partition_id_fops; | |
132 | sn_procfs_create_entry("system_serial_number", sgi_proc_dir, | 151 | pde = create_proc_entry("system_serial_number", 0444, sgi_proc_dir); |
133 | system_serial_number_open, single_release, NULL); | 152 | if (pde) |
134 | 153 | pde->proc_fops = &proc_system_sn_fops; | |
135 | sn_procfs_create_entry("licenseID", sgi_proc_dir, | 154 | pde = create_proc_entry("licenseID", 0444, sgi_proc_dir); |
136 | licenseID_open, single_release, NULL); | 155 | if (pde) |
137 | 156 | pde->proc_fops = &proc_license_id_fops; | |
138 | sn_procfs_create_entry("sn_force_interrupt", sgi_proc_dir, | 157 | pde = create_proc_entry("sn_force_interrupt", 0644, sgi_proc_dir); |
139 | sn_force_interrupt_open, single_release, | 158 | if (pde) |
140 | sn_force_interrupt_write_proc); | 159 | pde->proc_fops = &proc_sn_force_intr_fops; |
141 | 160 | pde = create_proc_entry("coherence_id", 0444, sgi_proc_dir); | |
142 | sn_procfs_create_entry("coherence_id", sgi_proc_dir, | 161 | if (pde) |
143 | coherence_id_open, single_release, NULL); | 162 | pde->proc_fops = &proc_coherence_id_fops; |
144 | 163 | pde = create_proc_entry("sn_topology", 0444, sgi_proc_dir); | |
145 | sn_procfs_create_entry("sn_topology", sgi_proc_dir, | 164 | if (pde) |
146 | sn_topology_open, sn_topology_release, NULL); | 165 | pde->proc_fops = &proc_sn_topo_fops; |
147 | } | 166 | } |
148 | 167 | ||
149 | #endif /* CONFIG_PROC_FS */ | 168 | #endif /* CONFIG_PROC_FS */ |
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig index f383dab973f5..9740d6b8ae11 100644 --- a/arch/m32r/Kconfig +++ b/arch/m32r/Kconfig | |||
@@ -16,6 +16,10 @@ config GENERIC_ISA_DMA | |||
16 | bool | 16 | bool |
17 | default y | 17 | default y |
18 | 18 | ||
19 | config ZONE_DMA | ||
20 | bool | ||
21 | default y | ||
22 | |||
19 | config GENERIC_HARDIRQS | 23 | config GENERIC_HARDIRQS |
20 | bool | 24 | bool |
21 | default y | 25 | default y |
@@ -24,6 +28,9 @@ config GENERIC_IRQ_PROBE | |||
24 | bool | 28 | bool |
25 | default y | 29 | default y |
26 | 30 | ||
31 | config NO_IOPORT | ||
32 | def_bool y | ||
33 | |||
27 | source "init/Kconfig" | 34 | source "init/Kconfig" |
28 | 35 | ||
29 | 36 | ||
diff --git a/arch/m32r/Makefile b/arch/m32r/Makefile index f219c47d334f..cdf63b210c53 100644 --- a/arch/m32r/Makefile +++ b/arch/m32r/Makefile | |||
@@ -7,7 +7,7 @@ | |||
7 | 7 | ||
8 | LDFLAGS := | 8 | LDFLAGS := |
9 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S | 9 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S |
10 | LDFLAGS_vmlinux := -e startup_32 | 10 | LDFLAGS_vmlinux := |
11 | 11 | ||
12 | CFLAGS += -pipe -fno-schedule-insns | 12 | CFLAGS += -pipe -fno-schedule-insns |
13 | CFLAGS_KERNEL += -mmodel=medium | 13 | CFLAGS_KERNEL += -mmodel=medium |
diff --git a/arch/m32r/defconfig b/arch/m32r/defconfig index 853093093168..13579917afef 100644 --- a/arch/m32r/defconfig +++ b/arch/m32r/defconfig | |||
@@ -1,20 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Fri Jun 3 16:20:11 2005 | 4 | # Tue Dec 12 17:52:38 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | ||
18 | CONFIG_LOCK_KERNEL=y | 16 | CONFIG_LOCK_KERNEL=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 17 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
20 | 18 | ||
@@ -22,32 +20,40 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
22 | # General setup | 20 | # General setup |
23 | # | 21 | # |
24 | CONFIG_LOCALVERSION="" | 22 | CONFIG_LOCALVERSION="" |
23 | CONFIG_LOCALVERSION_AUTO=y | ||
25 | CONFIG_SWAP=y | 24 | CONFIG_SWAP=y |
26 | CONFIG_SYSVIPC=y | 25 | CONFIG_SYSVIPC=y |
26 | # CONFIG_IPC_NS is not set | ||
27 | # CONFIG_POSIX_MQUEUE is not set | 27 | # CONFIG_POSIX_MQUEUE is not set |
28 | CONFIG_BSD_PROCESS_ACCT=y | 28 | CONFIG_BSD_PROCESS_ACCT=y |
29 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 29 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
30 | CONFIG_SYSCTL=y | 30 | # CONFIG_TASKSTATS is not set |
31 | # CONFIG_UTS_NS is not set | ||
31 | # CONFIG_AUDIT is not set | 32 | # CONFIG_AUDIT is not set |
32 | CONFIG_HOTPLUG=y | ||
33 | CONFIG_KOBJECT_UEVENT=y | ||
34 | CONFIG_IKCONFIG=y | 33 | CONFIG_IKCONFIG=y |
35 | # CONFIG_IKCONFIG_PROC is not set | 34 | CONFIG_IKCONFIG_PROC=y |
35 | # CONFIG_CPUSETS is not set | ||
36 | CONFIG_SYSFS_DEPRECATED=y | ||
37 | # CONFIG_RELAY is not set | ||
38 | CONFIG_INITRAMFS_SOURCE="" | ||
39 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
40 | CONFIG_SYSCTL=y | ||
36 | CONFIG_EMBEDDED=y | 41 | CONFIG_EMBEDDED=y |
42 | CONFIG_SYSCTL_SYSCALL=y | ||
37 | # CONFIG_KALLSYMS is not set | 43 | # CONFIG_KALLSYMS is not set |
44 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 45 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 46 | CONFIG_BUG=y |
47 | CONFIG_ELF_CORE=y | ||
40 | CONFIG_BASE_FULL=y | 48 | CONFIG_BASE_FULL=y |
41 | # CONFIG_FUTEX is not set | 49 | # CONFIG_FUTEX is not set |
42 | # CONFIG_EPOLL is not set | 50 | # CONFIG_EPOLL is not set |
43 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
44 | CONFIG_SHMEM=y | 51 | CONFIG_SHMEM=y |
45 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 52 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LABELS=0 | 53 | CONFIG_VM_EVENT_COUNTERS=y |
47 | CONFIG_CC_ALIGN_LOOPS=0 | ||
48 | CONFIG_CC_ALIGN_JUMPS=0 | ||
49 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
50 | CONFIG_BASE_SMALL=0 | 55 | CONFIG_BASE_SMALL=0 |
56 | # CONFIG_SLOB is not set | ||
51 | 57 | ||
52 | # | 58 | # |
53 | # Loadable module support | 59 | # Loadable module support |
@@ -55,10 +61,29 @@ CONFIG_BASE_SMALL=0 | |||
55 | CONFIG_MODULES=y | 61 | CONFIG_MODULES=y |
56 | CONFIG_MODULE_UNLOAD=y | 62 | CONFIG_MODULE_UNLOAD=y |
57 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 63 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
58 | CONFIG_OBSOLETE_MODPARM=y | ||
59 | # CONFIG_MODVERSIONS is not set | 64 | # CONFIG_MODVERSIONS is not set |
60 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 65 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
61 | CONFIG_KMOD=y | 66 | CONFIG_KMOD=y |
67 | CONFIG_STOP_MACHINE=y | ||
68 | |||
69 | # | ||
70 | # Block layer | ||
71 | # | ||
72 | CONFIG_BLOCK=y | ||
73 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
74 | |||
75 | # | ||
76 | # IO Schedulers | ||
77 | # | ||
78 | CONFIG_IOSCHED_NOOP=y | ||
79 | # CONFIG_IOSCHED_AS is not set | ||
80 | CONFIG_IOSCHED_DEADLINE=y | ||
81 | CONFIG_IOSCHED_CFQ=y | ||
82 | # CONFIG_DEFAULT_AS is not set | ||
83 | # CONFIG_DEFAULT_DEADLINE is not set | ||
84 | CONFIG_DEFAULT_CFQ=y | ||
85 | # CONFIG_DEFAULT_NOOP is not set | ||
86 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
62 | 87 | ||
63 | # | 88 | # |
64 | # Processor type and features | 89 | # Processor type and features |
@@ -70,8 +95,10 @@ CONFIG_PLAT_M32700UT=y | |||
70 | # CONFIG_PLAT_OAKS32R is not set | 95 | # CONFIG_PLAT_OAKS32R is not set |
71 | # CONFIG_PLAT_MAPPI2 is not set | 96 | # CONFIG_PLAT_MAPPI2 is not set |
72 | # CONFIG_PLAT_MAPPI3 is not set | 97 | # CONFIG_PLAT_MAPPI3 is not set |
98 | # CONFIG_PLAT_M32104UT is not set | ||
73 | CONFIG_CHIP_M32700=y | 99 | CONFIG_CHIP_M32700=y |
74 | # CONFIG_CHIP_M32102 is not set | 100 | # CONFIG_CHIP_M32102 is not set |
101 | # CONFIG_CHIP_M32104 is not set | ||
75 | # CONFIG_CHIP_VDEC2 is not set | 102 | # CONFIG_CHIP_VDEC2 is not set |
76 | # CONFIG_CHIP_OPSP is not set | 103 | # CONFIG_CHIP_OPSP is not set |
77 | CONFIG_MMU=y | 104 | CONFIG_MMU=y |
@@ -85,34 +112,39 @@ CONFIG_TIMER_DIVIDE=128 | |||
85 | CONFIG_MEMORY_START=0x08000000 | 112 | CONFIG_MEMORY_START=0x08000000 |
86 | CONFIG_MEMORY_SIZE=0x01000000 | 113 | CONFIG_MEMORY_SIZE=0x01000000 |
87 | CONFIG_NOHIGHMEM=y | 114 | CONFIG_NOHIGHMEM=y |
88 | # CONFIG_DISCONTIGMEM is not set | 115 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
116 | CONFIG_SELECT_MEMORY_MODEL=y | ||
117 | # CONFIG_FLATMEM_MANUAL is not set | ||
118 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
119 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
120 | CONFIG_DISCONTIGMEM=y | ||
121 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
122 | CONFIG_NEED_MULTIPLE_NODES=y | ||
123 | # CONFIG_SPARSEMEM_STATIC is not set | ||
124 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
125 | # CONFIG_RESOURCES_64BIT is not set | ||
126 | CONFIG_IRAM_START=0x00f00000 | ||
127 | CONFIG_IRAM_SIZE=0x00080000 | ||
89 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 128 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
90 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 129 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
130 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
131 | CONFIG_GENERIC_HWEIGHT=y | ||
91 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 132 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
92 | CONFIG_PREEMPT=y | 133 | CONFIG_PREEMPT=y |
93 | # CONFIG_HAVE_DEC_LOCK is not set | 134 | CONFIG_SMP=y |
94 | # CONFIG_SMP is not set | 135 | # CONFIG_CHIP_M32700_TS1 is not set |
136 | CONFIG_NR_CPUS=2 | ||
137 | CONFIG_NODES_SHIFT=1 | ||
95 | 138 | ||
96 | # | 139 | # |
97 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 140 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
98 | # | 141 | # |
99 | # CONFIG_PCI is not set | ||
100 | # CONFIG_ISA is not set | 142 | # CONFIG_ISA is not set |
101 | 143 | ||
102 | # | 144 | # |
103 | # PCCARD (PCMCIA/CardBus) support | 145 | # PCCARD (PCMCIA/CardBus) support |
104 | # | 146 | # |
105 | CONFIG_PCCARD=y | 147 | # CONFIG_PCCARD is not set |
106 | # CONFIG_PCMCIA_DEBUG is not set | ||
107 | CONFIG_PCMCIA=y | ||
108 | |||
109 | # | ||
110 | # PC-card bridges | ||
111 | # | ||
112 | # CONFIG_TCIC is not set | ||
113 | # CONFIG_M32R_PCC is not set | ||
114 | CONFIG_M32R_CFC=y | ||
115 | CONFIG_M32R_CFC_NUM=1 | ||
116 | 148 | ||
117 | # | 149 | # |
118 | # PCI Hotplug Support | 150 | # PCI Hotplug Support |
@@ -125,6 +157,94 @@ CONFIG_BINFMT_ELF=y | |||
125 | # CONFIG_BINFMT_MISC is not set | 157 | # CONFIG_BINFMT_MISC is not set |
126 | 158 | ||
127 | # | 159 | # |
160 | # Networking | ||
161 | # | ||
162 | CONFIG_NET=y | ||
163 | |||
164 | # | ||
165 | # Networking options | ||
166 | # | ||
167 | # CONFIG_NETDEBUG is not set | ||
168 | CONFIG_PACKET=y | ||
169 | # CONFIG_PACKET_MMAP is not set | ||
170 | CONFIG_UNIX=y | ||
171 | CONFIG_XFRM=y | ||
172 | # CONFIG_XFRM_USER is not set | ||
173 | # CONFIG_XFRM_SUB_POLICY is not set | ||
174 | # CONFIG_NET_KEY is not set | ||
175 | CONFIG_INET=y | ||
176 | # CONFIG_IP_MULTICAST is not set | ||
177 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
178 | CONFIG_IP_FIB_HASH=y | ||
179 | CONFIG_IP_PNP=y | ||
180 | CONFIG_IP_PNP_DHCP=y | ||
181 | # CONFIG_IP_PNP_BOOTP is not set | ||
182 | # CONFIG_IP_PNP_RARP is not set | ||
183 | # CONFIG_NET_IPIP is not set | ||
184 | # CONFIG_NET_IPGRE is not set | ||
185 | # CONFIG_ARPD is not set | ||
186 | # CONFIG_SYN_COOKIES is not set | ||
187 | # CONFIG_INET_AH is not set | ||
188 | # CONFIG_INET_ESP is not set | ||
189 | # CONFIG_INET_IPCOMP is not set | ||
190 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
191 | # CONFIG_INET_TUNNEL is not set | ||
192 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
193 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
194 | CONFIG_INET_XFRM_MODE_BEET=y | ||
195 | CONFIG_INET_DIAG=y | ||
196 | CONFIG_INET_TCP_DIAG=y | ||
197 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
198 | CONFIG_TCP_CONG_CUBIC=y | ||
199 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
200 | # CONFIG_TCP_MD5SIG is not set | ||
201 | # CONFIG_IPV6 is not set | ||
202 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
203 | # CONFIG_INET6_TUNNEL is not set | ||
204 | # CONFIG_NETWORK_SECMARK is not set | ||
205 | # CONFIG_NETFILTER is not set | ||
206 | |||
207 | # | ||
208 | # DCCP Configuration (EXPERIMENTAL) | ||
209 | # | ||
210 | # CONFIG_IP_DCCP is not set | ||
211 | |||
212 | # | ||
213 | # SCTP Configuration (EXPERIMENTAL) | ||
214 | # | ||
215 | # CONFIG_IP_SCTP is not set | ||
216 | |||
217 | # | ||
218 | # TIPC Configuration (EXPERIMENTAL) | ||
219 | # | ||
220 | # CONFIG_TIPC is not set | ||
221 | # CONFIG_ATM is not set | ||
222 | # CONFIG_BRIDGE is not set | ||
223 | # CONFIG_VLAN_8021Q is not set | ||
224 | # CONFIG_DECNET is not set | ||
225 | # CONFIG_LLC2 is not set | ||
226 | # CONFIG_IPX is not set | ||
227 | # CONFIG_ATALK is not set | ||
228 | # CONFIG_X25 is not set | ||
229 | # CONFIG_LAPB is not set | ||
230 | # CONFIG_ECONET is not set | ||
231 | # CONFIG_WAN_ROUTER is not set | ||
232 | |||
233 | # | ||
234 | # QoS and/or fair queueing | ||
235 | # | ||
236 | # CONFIG_NET_SCHED is not set | ||
237 | |||
238 | # | ||
239 | # Network testing | ||
240 | # | ||
241 | # CONFIG_NET_PKTGEN is not set | ||
242 | # CONFIG_HAMRADIO is not set | ||
243 | # CONFIG_IRDA is not set | ||
244 | # CONFIG_BT is not set | ||
245 | # CONFIG_IEEE80211 is not set | ||
246 | |||
247 | # | ||
128 | # Device Drivers | 248 | # Device Drivers |
129 | # | 249 | # |
130 | 250 | ||
@@ -133,12 +253,100 @@ CONFIG_BINFMT_ELF=y | |||
133 | # | 253 | # |
134 | CONFIG_STANDALONE=y | 254 | CONFIG_STANDALONE=y |
135 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 255 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
136 | # CONFIG_FW_LOADER is not set | 256 | CONFIG_FW_LOADER=y |
257 | # CONFIG_SYS_HYPERVISOR is not set | ||
258 | |||
259 | # | ||
260 | # Connector - unified userspace <-> kernelspace linker | ||
261 | # | ||
262 | # CONFIG_CONNECTOR is not set | ||
137 | 263 | ||
138 | # | 264 | # |
139 | # Memory Technology Devices (MTD) | 265 | # Memory Technology Devices (MTD) |
140 | # | 266 | # |
141 | # CONFIG_MTD is not set | 267 | CONFIG_MTD=y |
268 | # CONFIG_MTD_DEBUG is not set | ||
269 | # CONFIG_MTD_CONCAT is not set | ||
270 | CONFIG_MTD_PARTITIONS=y | ||
271 | CONFIG_MTD_REDBOOT_PARTS=y | ||
272 | CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 | ||
273 | # CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set | ||
274 | # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set | ||
275 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
276 | |||
277 | # | ||
278 | # User Modules And Translation Layers | ||
279 | # | ||
280 | # CONFIG_MTD_CHAR is not set | ||
281 | CONFIG_MTD_BLOCK=y | ||
282 | # CONFIG_FTL is not set | ||
283 | # CONFIG_NFTL is not set | ||
284 | # CONFIG_INFTL is not set | ||
285 | # CONFIG_RFD_FTL is not set | ||
286 | # CONFIG_SSFDC is not set | ||
287 | |||
288 | # | ||
289 | # RAM/ROM/Flash chip drivers | ||
290 | # | ||
291 | CONFIG_MTD_CFI=m | ||
292 | CONFIG_MTD_JEDECPROBE=m | ||
293 | CONFIG_MTD_GEN_PROBE=m | ||
294 | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
295 | # CONFIG_MTD_CFI_NOSWAP is not set | ||
296 | CONFIG_MTD_CFI_BE_BYTE_SWAP=y | ||
297 | # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set | ||
298 | CONFIG_MTD_CFI_GEOMETRY=y | ||
299 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
300 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
301 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
302 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
303 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
304 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
305 | CONFIG_MTD_CFI_I1=y | ||
306 | # CONFIG_MTD_CFI_I2 is not set | ||
307 | # CONFIG_MTD_CFI_I4 is not set | ||
308 | # CONFIG_MTD_CFI_I8 is not set | ||
309 | # CONFIG_MTD_OTP is not set | ||
310 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
311 | CONFIG_MTD_CFI_AMDSTD=m | ||
312 | # CONFIG_MTD_CFI_STAA is not set | ||
313 | CONFIG_MTD_CFI_UTIL=m | ||
314 | # CONFIG_MTD_RAM is not set | ||
315 | # CONFIG_MTD_ROM is not set | ||
316 | # CONFIG_MTD_ABSENT is not set | ||
317 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
318 | |||
319 | # | ||
320 | # Mapping drivers for chip access | ||
321 | # | ||
322 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
323 | # CONFIG_MTD_PHYSMAP is not set | ||
324 | # CONFIG_MTD_PLATRAM is not set | ||
325 | |||
326 | # | ||
327 | # Self-contained MTD device drivers | ||
328 | # | ||
329 | # CONFIG_MTD_SLRAM is not set | ||
330 | # CONFIG_MTD_PHRAM is not set | ||
331 | # CONFIG_MTD_MTDRAM is not set | ||
332 | # CONFIG_MTD_BLOCK2MTD is not set | ||
333 | |||
334 | # | ||
335 | # Disk-On-Chip Device Drivers | ||
336 | # | ||
337 | # CONFIG_MTD_DOC2000 is not set | ||
338 | # CONFIG_MTD_DOC2001 is not set | ||
339 | # CONFIG_MTD_DOC2001PLUS is not set | ||
340 | |||
341 | # | ||
342 | # NAND Flash Device Drivers | ||
343 | # | ||
344 | # CONFIG_MTD_NAND is not set | ||
345 | |||
346 | # | ||
347 | # OneNAND Flash Device Drivers | ||
348 | # | ||
349 | # CONFIG_MTD_ONENAND is not set | ||
142 | 350 | ||
143 | # | 351 | # |
144 | # Parallel port support | 352 | # Parallel port support |
@@ -152,7 +360,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
152 | # | 360 | # |
153 | # Block devices | 361 | # Block devices |
154 | # | 362 | # |
155 | # CONFIG_BLK_DEV_FD is not set | ||
156 | # CONFIG_BLK_DEV_COW_COMMON is not set | 363 | # CONFIG_BLK_DEV_COW_COMMON is not set |
157 | CONFIG_BLK_DEV_LOOP=y | 364 | CONFIG_BLK_DEV_LOOP=y |
158 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 365 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -160,23 +367,21 @@ CONFIG_BLK_DEV_NBD=y | |||
160 | CONFIG_BLK_DEV_RAM=y | 367 | CONFIG_BLK_DEV_RAM=y |
161 | CONFIG_BLK_DEV_RAM_COUNT=16 | 368 | CONFIG_BLK_DEV_RAM_COUNT=16 |
162 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 369 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
370 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
163 | # CONFIG_BLK_DEV_INITRD is not set | 371 | # CONFIG_BLK_DEV_INITRD is not set |
164 | CONFIG_INITRAMFS_SOURCE="" | ||
165 | # CONFIG_CDROM_PKTCDVD is not set | 372 | # CONFIG_CDROM_PKTCDVD is not set |
373 | CONFIG_ATA_OVER_ETH=m | ||
166 | 374 | ||
167 | # | 375 | # |
168 | # IO Schedulers | 376 | # Misc devices |
169 | # | 377 | # |
170 | CONFIG_IOSCHED_NOOP=y | 378 | # CONFIG_TIFM_CORE is not set |
171 | # CONFIG_IOSCHED_AS is not set | ||
172 | CONFIG_IOSCHED_DEADLINE=y | ||
173 | CONFIG_IOSCHED_CFQ=y | ||
174 | # CONFIG_ATA_OVER_ETH is not set | ||
175 | 379 | ||
176 | # | 380 | # |
177 | # ATA/ATAPI/MFM/RLL support | 381 | # ATA/ATAPI/MFM/RLL support |
178 | # | 382 | # |
179 | CONFIG_IDE=y | 383 | CONFIG_IDE=y |
384 | CONFIG_IDE_MAX_HWIFS=4 | ||
180 | CONFIG_BLK_DEV_IDE=y | 385 | CONFIG_BLK_DEV_IDE=y |
181 | 386 | ||
182 | # | 387 | # |
@@ -185,7 +390,6 @@ CONFIG_BLK_DEV_IDE=y | |||
185 | # CONFIG_BLK_DEV_IDE_SATA is not set | 390 | # CONFIG_BLK_DEV_IDE_SATA is not set |
186 | CONFIG_BLK_DEV_IDEDISK=y | 391 | CONFIG_BLK_DEV_IDEDISK=y |
187 | # CONFIG_IDEDISK_MULTI_MODE is not set | 392 | # CONFIG_IDEDISK_MULTI_MODE is not set |
188 | CONFIG_BLK_DEV_IDECS=y | ||
189 | CONFIG_BLK_DEV_IDECD=m | 393 | CONFIG_BLK_DEV_IDECD=m |
190 | # CONFIG_BLK_DEV_IDETAPE is not set | 394 | # CONFIG_BLK_DEV_IDETAPE is not set |
191 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 395 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
@@ -204,7 +408,9 @@ CONFIG_IDE_GENERIC=y | |||
204 | # | 408 | # |
205 | # SCSI device support | 409 | # SCSI device support |
206 | # | 410 | # |
411 | # CONFIG_RAID_ATTRS is not set | ||
207 | CONFIG_SCSI=m | 412 | CONFIG_SCSI=m |
413 | # CONFIG_SCSI_NETLINK is not set | ||
208 | CONFIG_SCSI_PROC_FS=y | 414 | CONFIG_SCSI_PROC_FS=y |
209 | 415 | ||
210 | # | 416 | # |
@@ -216,6 +422,7 @@ CONFIG_BLK_DEV_SD=m | |||
216 | CONFIG_BLK_DEV_SR=m | 422 | CONFIG_BLK_DEV_SR=m |
217 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 423 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
218 | CONFIG_CHR_DEV_SG=m | 424 | CONFIG_CHR_DEV_SG=m |
425 | # CONFIG_CHR_DEV_SCH is not set | ||
219 | 426 | ||
220 | # | 427 | # |
221 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 428 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -225,26 +432,23 @@ CONFIG_SCSI_MULTI_LUN=y | |||
225 | # CONFIG_SCSI_LOGGING is not set | 432 | # CONFIG_SCSI_LOGGING is not set |
226 | 433 | ||
227 | # | 434 | # |
228 | # SCSI Transport Attributes | 435 | # SCSI Transports |
229 | # | 436 | # |
230 | # CONFIG_SCSI_SPI_ATTRS is not set | 437 | # CONFIG_SCSI_SPI_ATTRS is not set |
231 | # CONFIG_SCSI_FC_ATTRS is not set | 438 | # CONFIG_SCSI_FC_ATTRS is not set |
232 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 439 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
440 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
441 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
233 | 442 | ||
234 | # | 443 | # |
235 | # SCSI low-level drivers | 444 | # SCSI low-level drivers |
236 | # | 445 | # |
237 | # CONFIG_SCSI_SATA is not set | 446 | # CONFIG_ISCSI_TCP is not set |
238 | # CONFIG_SCSI_DEBUG is not set | 447 | # CONFIG_SCSI_DEBUG is not set |
239 | 448 | ||
240 | # | 449 | # |
241 | # PCMCIA SCSI adapter support | 450 | # Serial ATA (prod) and Parallel ATA (experimental) drivers |
242 | # | 451 | # |
243 | # CONFIG_PCMCIA_AHA152X is not set | ||
244 | # CONFIG_PCMCIA_FDOMAIN is not set | ||
245 | # CONFIG_PCMCIA_NINJA_SCSI is not set | ||
246 | # CONFIG_PCMCIA_QLOGIC is not set | ||
247 | # CONFIG_PCMCIA_SYM53C500 is not set | ||
248 | 452 | ||
249 | # | 453 | # |
250 | # Multi-device support (RAID and LVM) | 454 | # Multi-device support (RAID and LVM) |
@@ -254,6 +458,7 @@ CONFIG_SCSI_MULTI_LUN=y | |||
254 | # | 458 | # |
255 | # Fusion MPT device support | 459 | # Fusion MPT device support |
256 | # | 460 | # |
461 | # CONFIG_FUSION is not set | ||
257 | 462 | ||
258 | # | 463 | # |
259 | # IEEE 1394 (FireWire) support | 464 | # IEEE 1394 (FireWire) support |
@@ -264,69 +469,8 @@ CONFIG_SCSI_MULTI_LUN=y | |||
264 | # | 469 | # |
265 | 470 | ||
266 | # | 471 | # |
267 | # Networking support | 472 | # Network device support |
268 | # | ||
269 | CONFIG_NET=y | ||
270 | |||
271 | # | ||
272 | # Networking options | ||
273 | # | ||
274 | CONFIG_PACKET=y | ||
275 | # CONFIG_PACKET_MMAP is not set | ||
276 | CONFIG_UNIX=y | ||
277 | # CONFIG_NET_KEY is not set | ||
278 | CONFIG_INET=y | ||
279 | # CONFIG_IP_MULTICAST is not set | ||
280 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
281 | CONFIG_IP_PNP=y | ||
282 | CONFIG_IP_PNP_DHCP=y | ||
283 | # CONFIG_IP_PNP_BOOTP is not set | ||
284 | # CONFIG_IP_PNP_RARP is not set | ||
285 | # CONFIG_NET_IPIP is not set | ||
286 | # CONFIG_NET_IPGRE is not set | ||
287 | # CONFIG_ARPD is not set | ||
288 | # CONFIG_SYN_COOKIES is not set | ||
289 | # CONFIG_INET_AH is not set | ||
290 | # CONFIG_INET_ESP is not set | ||
291 | # CONFIG_INET_IPCOMP is not set | ||
292 | # CONFIG_INET_TUNNEL is not set | ||
293 | CONFIG_IP_TCPDIAG=y | ||
294 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
295 | # CONFIG_IPV6 is not set | ||
296 | # CONFIG_NETFILTER is not set | ||
297 | |||
298 | # | ||
299 | # SCTP Configuration (EXPERIMENTAL) | ||
300 | # | ||
301 | # CONFIG_IP_SCTP is not set | ||
302 | # CONFIG_ATM is not set | ||
303 | # CONFIG_BRIDGE is not set | ||
304 | # CONFIG_VLAN_8021Q is not set | ||
305 | # CONFIG_DECNET is not set | ||
306 | # CONFIG_LLC2 is not set | ||
307 | # CONFIG_IPX is not set | ||
308 | # CONFIG_ATALK is not set | ||
309 | # CONFIG_X25 is not set | ||
310 | # CONFIG_LAPB is not set | ||
311 | # CONFIG_NET_DIVERT is not set | ||
312 | # CONFIG_ECONET is not set | ||
313 | # CONFIG_WAN_ROUTER is not set | ||
314 | |||
315 | # | ||
316 | # QoS and/or fair queueing | ||
317 | # | ||
318 | # CONFIG_NET_SCHED is not set | ||
319 | # CONFIG_NET_CLS_ROUTE is not set | ||
320 | |||
321 | # | ||
322 | # Network testing | ||
323 | # | 473 | # |
324 | # CONFIG_NET_PKTGEN is not set | ||
325 | # CONFIG_NETPOLL is not set | ||
326 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
327 | # CONFIG_HAMRADIO is not set | ||
328 | # CONFIG_IRDA is not set | ||
329 | # CONFIG_BT is not set | ||
330 | CONFIG_NETDEVICES=y | 474 | CONFIG_NETDEVICES=y |
331 | # CONFIG_DUMMY is not set | 475 | # CONFIG_DUMMY is not set |
332 | # CONFIG_BONDING is not set | 476 | # CONFIG_BONDING is not set |
@@ -334,6 +478,11 @@ CONFIG_NETDEVICES=y | |||
334 | # CONFIG_TUN is not set | 478 | # CONFIG_TUN is not set |
335 | 479 | ||
336 | # | 480 | # |
481 | # PHY device support | ||
482 | # | ||
483 | # CONFIG_PHYLIB is not set | ||
484 | |||
485 | # | ||
337 | # Ethernet (10 or 100Mbit) | 486 | # Ethernet (10 or 100Mbit) |
338 | # | 487 | # |
339 | CONFIG_NET_ETHERNET=y | 488 | CONFIG_NET_ETHERNET=y |
@@ -359,11 +508,6 @@ CONFIG_SMC91X=y | |||
359 | # CONFIG_NET_RADIO is not set | 508 | # CONFIG_NET_RADIO is not set |
360 | 509 | ||
361 | # | 510 | # |
362 | # PCMCIA network device support | ||
363 | # | ||
364 | # CONFIG_NET_PCMCIA is not set | ||
365 | |||
366 | # | ||
367 | # Wan interfaces | 511 | # Wan interfaces |
368 | # | 512 | # |
369 | # CONFIG_WAN is not set | 513 | # CONFIG_WAN is not set |
@@ -371,6 +515,8 @@ CONFIG_SMC91X=y | |||
371 | # CONFIG_SLIP is not set | 515 | # CONFIG_SLIP is not set |
372 | # CONFIG_SHAPER is not set | 516 | # CONFIG_SHAPER is not set |
373 | # CONFIG_NETCONSOLE is not set | 517 | # CONFIG_NETCONSOLE is not set |
518 | # CONFIG_NETPOLL is not set | ||
519 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
374 | 520 | ||
375 | # | 521 | # |
376 | # ISDN subsystem | 522 | # ISDN subsystem |
@@ -386,6 +532,7 @@ CONFIG_SMC91X=y | |||
386 | # Input device support | 532 | # Input device support |
387 | # | 533 | # |
388 | CONFIG_INPUT=y | 534 | CONFIG_INPUT=y |
535 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
389 | 536 | ||
390 | # | 537 | # |
391 | # Userland interfaces | 538 | # Userland interfaces |
@@ -414,7 +561,6 @@ CONFIG_SERIO_SERPORT=y | |||
414 | # CONFIG_SERIO_LIBPS2 is not set | 561 | # CONFIG_SERIO_LIBPS2 is not set |
415 | # CONFIG_SERIO_RAW is not set | 562 | # CONFIG_SERIO_RAW is not set |
416 | # CONFIG_GAMEPORT is not set | 563 | # CONFIG_GAMEPORT is not set |
417 | CONFIG_SOUND_GAMEPORT=y | ||
418 | 564 | ||
419 | # | 565 | # |
420 | # Character devices | 566 | # Character devices |
@@ -422,6 +568,7 @@ CONFIG_SOUND_GAMEPORT=y | |||
422 | CONFIG_VT=y | 568 | CONFIG_VT=y |
423 | CONFIG_VT_CONSOLE=y | 569 | CONFIG_VT_CONSOLE=y |
424 | CONFIG_HW_CONSOLE=y | 570 | CONFIG_HW_CONSOLE=y |
571 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
425 | # CONFIG_SERIAL_NONSTANDARD is not set | 572 | # CONFIG_SERIAL_NONSTANDARD is not set |
426 | 573 | ||
427 | # | 574 | # |
@@ -450,8 +597,8 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
450 | # Watchdog Cards | 597 | # Watchdog Cards |
451 | # | 598 | # |
452 | # CONFIG_WATCHDOG is not set | 599 | # CONFIG_WATCHDOG is not set |
600 | CONFIG_HW_RANDOM=y | ||
453 | # CONFIG_RTC is not set | 601 | # CONFIG_RTC is not set |
454 | # CONFIG_GEN_RTC is not set | ||
455 | CONFIG_DS1302=y | 602 | CONFIG_DS1302=y |
456 | # CONFIG_DTLK is not set | 603 | # CONFIG_DTLK is not set |
457 | # CONFIG_R3964 is not set | 604 | # CONFIG_R3964 is not set |
@@ -459,17 +606,12 @@ CONFIG_DS1302=y | |||
459 | # | 606 | # |
460 | # Ftape, the floppy tape device driver | 607 | # Ftape, the floppy tape device driver |
461 | # | 608 | # |
462 | # CONFIG_DRM is not set | ||
463 | |||
464 | # | ||
465 | # PCMCIA character devices | ||
466 | # | ||
467 | # CONFIG_SYNCLINK_CS is not set | ||
468 | # CONFIG_RAW_DRIVER is not set | 609 | # CONFIG_RAW_DRIVER is not set |
469 | 610 | ||
470 | # | 611 | # |
471 | # TPM devices | 612 | # TPM devices |
472 | # | 613 | # |
614 | # CONFIG_TCG_TPM is not set | ||
473 | 615 | ||
474 | # | 616 | # |
475 | # I2C support | 617 | # I2C support |
@@ -477,34 +619,51 @@ CONFIG_DS1302=y | |||
477 | # CONFIG_I2C is not set | 619 | # CONFIG_I2C is not set |
478 | 620 | ||
479 | # | 621 | # |
622 | # SPI support | ||
623 | # | ||
624 | # CONFIG_SPI is not set | ||
625 | # CONFIG_SPI_MASTER is not set | ||
626 | |||
627 | # | ||
480 | # Dallas's 1-wire bus | 628 | # Dallas's 1-wire bus |
481 | # | 629 | # |
482 | # CONFIG_W1 is not set | 630 | # CONFIG_W1 is not set |
483 | 631 | ||
484 | # | 632 | # |
485 | # Misc devices | 633 | # Hardware Monitoring support |
486 | # | 634 | # |
635 | CONFIG_HWMON=y | ||
636 | # CONFIG_HWMON_VID is not set | ||
637 | # CONFIG_SENSORS_ABITUGURU is not set | ||
638 | # CONFIG_SENSORS_F71805F is not set | ||
639 | # CONFIG_SENSORS_VT1211 is not set | ||
640 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
487 | 641 | ||
488 | # | 642 | # |
489 | # Multimedia devices | 643 | # Multimedia devices |
490 | # | 644 | # |
491 | CONFIG_VIDEO_DEV=y | 645 | CONFIG_VIDEO_DEV=m |
646 | CONFIG_VIDEO_V4L1=y | ||
647 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
648 | CONFIG_VIDEO_V4L2=y | ||
492 | 649 | ||
493 | # | 650 | # |
494 | # Video For Linux | 651 | # Video Capture Adapters |
495 | # | 652 | # |
496 | 653 | ||
497 | # | 654 | # |
498 | # Video Adapters | 655 | # Video Capture Adapters |
499 | # | 656 | # |
657 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
658 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
659 | # CONFIG_VIDEO_VIVI is not set | ||
500 | # CONFIG_VIDEO_CPIA is not set | 660 | # CONFIG_VIDEO_CPIA is not set |
501 | CONFIG_VIDEO_M32R_AR=y | 661 | CONFIG_VIDEO_M32R_AR=m |
502 | CONFIG_VIDEO_M32R_AR_M64278=y | 662 | CONFIG_VIDEO_M32R_AR_M64278=m |
503 | 663 | ||
504 | # | 664 | # |
505 | # Radio Adapters | 665 | # Radio Adapters |
506 | # | 666 | # |
507 | # CONFIG_RADIO_MAESTRO is not set | ||
508 | 667 | ||
509 | # | 668 | # |
510 | # Digital Video Broadcasting Devices | 669 | # Digital Video Broadcasting Devices |
@@ -514,15 +673,16 @@ CONFIG_VIDEO_M32R_AR_M64278=y | |||
514 | # | 673 | # |
515 | # Graphics support | 674 | # Graphics support |
516 | # | 675 | # |
676 | CONFIG_FIRMWARE_EDID=y | ||
517 | CONFIG_FB=y | 677 | CONFIG_FB=y |
518 | # CONFIG_FB_CFB_FILLRECT is not set | 678 | CONFIG_FB_CFB_FILLRECT=y |
519 | # CONFIG_FB_CFB_COPYAREA is not set | 679 | CONFIG_FB_CFB_COPYAREA=y |
520 | # CONFIG_FB_CFB_IMAGEBLIT is not set | 680 | CONFIG_FB_CFB_IMAGEBLIT=y |
521 | # CONFIG_FB_SOFT_CURSOR is not set | ||
522 | # CONFIG_FB_MACMODES is not set | 681 | # CONFIG_FB_MACMODES is not set |
682 | # CONFIG_FB_BACKLIGHT is not set | ||
523 | # CONFIG_FB_MODE_HELPERS is not set | 683 | # CONFIG_FB_MODE_HELPERS is not set |
524 | # CONFIG_FB_TILEBLITTING is not set | 684 | # CONFIG_FB_TILEBLITTING is not set |
525 | # CONFIG_FB_S1D13XXX is not set | 685 | CONFIG_FB_S1D13XXX=y |
526 | # CONFIG_FB_VIRTUAL is not set | 686 | # CONFIG_FB_VIRTUAL is not set |
527 | 687 | ||
528 | # | 688 | # |
@@ -531,6 +691,7 @@ CONFIG_FB=y | |||
531 | # CONFIG_VGA_CONSOLE is not set | 691 | # CONFIG_VGA_CONSOLE is not set |
532 | CONFIG_DUMMY_CONSOLE=y | 692 | CONFIG_DUMMY_CONSOLE=y |
533 | CONFIG_FRAMEBUFFER_CONSOLE=y | 693 | CONFIG_FRAMEBUFFER_CONSOLE=y |
694 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
534 | # CONFIG_FONTS is not set | 695 | # CONFIG_FONTS is not set |
535 | CONFIG_FONT_8x8=y | 696 | CONFIG_FONT_8x8=y |
536 | CONFIG_FONT_8x16=y | 697 | CONFIG_FONT_8x16=y |
@@ -542,6 +703,7 @@ CONFIG_LOGO=y | |||
542 | CONFIG_LOGO_LINUX_MONO=y | 703 | CONFIG_LOGO_LINUX_MONO=y |
543 | CONFIG_LOGO_LINUX_VGA16=y | 704 | CONFIG_LOGO_LINUX_VGA16=y |
544 | CONFIG_LOGO_LINUX_CLUT224=y | 705 | CONFIG_LOGO_LINUX_CLUT224=y |
706 | CONFIG_LOGO_M32R_CLUT224=y | ||
545 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 707 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
546 | 708 | ||
547 | # | 709 | # |
@@ -554,6 +716,11 @@ CONFIG_LOGO_LINUX_CLUT224=y | |||
554 | # | 716 | # |
555 | # CONFIG_USB_ARCH_HAS_HCD is not set | 717 | # CONFIG_USB_ARCH_HAS_HCD is not set |
556 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 718 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
719 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
720 | |||
721 | # | ||
722 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
723 | # | ||
557 | 724 | ||
558 | # | 725 | # |
559 | # USB Gadget Support | 726 | # USB Gadget Support |
@@ -563,23 +730,62 @@ CONFIG_LOGO_LINUX_CLUT224=y | |||
563 | # | 730 | # |
564 | # MMC/SD Card support | 731 | # MMC/SD Card support |
565 | # | 732 | # |
566 | # CONFIG_MMC is not set | 733 | CONFIG_MMC=y |
734 | CONFIG_MMC_DEBUG=y | ||
735 | CONFIG_MMC_BLOCK=y | ||
736 | # CONFIG_MMC_TIFM_SD is not set | ||
737 | |||
738 | # | ||
739 | # LED devices | ||
740 | # | ||
741 | # CONFIG_NEW_LEDS is not set | ||
742 | |||
743 | # | ||
744 | # LED drivers | ||
745 | # | ||
746 | |||
747 | # | ||
748 | # LED Triggers | ||
749 | # | ||
567 | 750 | ||
568 | # | 751 | # |
569 | # InfiniBand support | 752 | # InfiniBand support |
570 | # | 753 | # |
571 | # CONFIG_INFINIBAND is not set | 754 | |
755 | # | ||
756 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
757 | # | ||
758 | |||
759 | # | ||
760 | # Real Time Clock | ||
761 | # | ||
762 | # CONFIG_RTC_CLASS is not set | ||
763 | |||
764 | # | ||
765 | # DMA Engine support | ||
766 | # | ||
767 | # CONFIG_DMA_ENGINE is not set | ||
768 | |||
769 | # | ||
770 | # DMA Clients | ||
771 | # | ||
772 | |||
773 | # | ||
774 | # DMA Devices | ||
775 | # | ||
572 | 776 | ||
573 | # | 777 | # |
574 | # File systems | 778 | # File systems |
575 | # | 779 | # |
576 | CONFIG_EXT2_FS=y | 780 | CONFIG_EXT2_FS=y |
577 | # CONFIG_EXT2_FS_XATTR is not set | 781 | # CONFIG_EXT2_FS_XATTR is not set |
578 | CONFIG_EXT3_FS=m | 782 | # CONFIG_EXT2_FS_XIP is not set |
783 | CONFIG_EXT3_FS=y | ||
579 | CONFIG_EXT3_FS_XATTR=y | 784 | CONFIG_EXT3_FS_XATTR=y |
580 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 785 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
581 | # CONFIG_EXT3_FS_SECURITY is not set | 786 | # CONFIG_EXT3_FS_SECURITY is not set |
582 | CONFIG_JBD=m | 787 | # CONFIG_EXT4DEV_FS is not set |
788 | CONFIG_JBD=y | ||
583 | CONFIG_JBD_DEBUG=y | 789 | CONFIG_JBD_DEBUG=y |
584 | CONFIG_FS_MBCACHE=y | 790 | CONFIG_FS_MBCACHE=y |
585 | CONFIG_REISERFS_FS=m | 791 | CONFIG_REISERFS_FS=m |
@@ -587,17 +793,19 @@ CONFIG_REISERFS_FS=m | |||
587 | # CONFIG_REISERFS_PROC_INFO is not set | 793 | # CONFIG_REISERFS_PROC_INFO is not set |
588 | # CONFIG_REISERFS_FS_XATTR is not set | 794 | # CONFIG_REISERFS_FS_XATTR is not set |
589 | # CONFIG_JFS_FS is not set | 795 | # CONFIG_JFS_FS is not set |
590 | 796 | # CONFIG_FS_POSIX_ACL is not set | |
591 | # | ||
592 | # XFS support | ||
593 | # | ||
594 | # CONFIG_XFS_FS is not set | 797 | # CONFIG_XFS_FS is not set |
798 | # CONFIG_GFS2_FS is not set | ||
799 | # CONFIG_OCFS2_FS is not set | ||
595 | # CONFIG_MINIX_FS is not set | 800 | # CONFIG_MINIX_FS is not set |
596 | # CONFIG_ROMFS_FS is not set | 801 | # CONFIG_ROMFS_FS is not set |
802 | CONFIG_INOTIFY=y | ||
803 | CONFIG_INOTIFY_USER=y | ||
597 | # CONFIG_QUOTA is not set | 804 | # CONFIG_QUOTA is not set |
598 | CONFIG_DNOTIFY=y | 805 | CONFIG_DNOTIFY=y |
599 | # CONFIG_AUTOFS_FS is not set | 806 | # CONFIG_AUTOFS_FS is not set |
600 | # CONFIG_AUTOFS4_FS is not set | 807 | # CONFIG_AUTOFS4_FS is not set |
808 | # CONFIG_FUSE_FS is not set | ||
601 | 809 | ||
602 | # | 810 | # |
603 | # CD-ROM/DVD Filesystems | 811 | # CD-ROM/DVD Filesystems |
@@ -623,15 +831,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
623 | # | 831 | # |
624 | CONFIG_PROC_FS=y | 832 | CONFIG_PROC_FS=y |
625 | CONFIG_PROC_KCORE=y | 833 | CONFIG_PROC_KCORE=y |
834 | CONFIG_PROC_SYSCTL=y | ||
626 | CONFIG_SYSFS=y | 835 | CONFIG_SYSFS=y |
627 | CONFIG_DEVFS_FS=y | ||
628 | CONFIG_DEVFS_MOUNT=y | ||
629 | # CONFIG_DEVFS_DEBUG is not set | ||
630 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
631 | CONFIG_TMPFS=y | 836 | CONFIG_TMPFS=y |
632 | # CONFIG_TMPFS_XATTR is not set | 837 | # CONFIG_TMPFS_POSIX_ACL is not set |
633 | # CONFIG_HUGETLB_PAGE is not set | 838 | # CONFIG_HUGETLB_PAGE is not set |
634 | CONFIG_RAMFS=y | 839 | CONFIG_RAMFS=y |
840 | # CONFIG_CONFIGFS_FS is not set | ||
635 | 841 | ||
636 | # | 842 | # |
637 | # Miscellaneous filesystems | 843 | # Miscellaneous filesystems |
@@ -643,6 +849,8 @@ CONFIG_RAMFS=y | |||
643 | # CONFIG_BEFS_FS is not set | 849 | # CONFIG_BEFS_FS is not set |
644 | # CONFIG_BFS_FS is not set | 850 | # CONFIG_BFS_FS is not set |
645 | # CONFIG_EFS_FS is not set | 851 | # CONFIG_EFS_FS is not set |
852 | # CONFIG_JFFS_FS is not set | ||
853 | # CONFIG_JFFS2_FS is not set | ||
646 | # CONFIG_CRAMFS is not set | 854 | # CONFIG_CRAMFS is not set |
647 | # CONFIG_VXFS_FS is not set | 855 | # CONFIG_VXFS_FS is not set |
648 | # CONFIG_HPFS_FS is not set | 856 | # CONFIG_HPFS_FS is not set |
@@ -655,12 +863,14 @@ CONFIG_RAMFS=y | |||
655 | # | 863 | # |
656 | CONFIG_NFS_FS=y | 864 | CONFIG_NFS_FS=y |
657 | CONFIG_NFS_V3=y | 865 | CONFIG_NFS_V3=y |
866 | # CONFIG_NFS_V3_ACL is not set | ||
658 | # CONFIG_NFS_V4 is not set | 867 | # CONFIG_NFS_V4 is not set |
659 | # CONFIG_NFS_DIRECTIO is not set | 868 | # CONFIG_NFS_DIRECTIO is not set |
660 | # CONFIG_NFSD is not set | 869 | # CONFIG_NFSD is not set |
661 | CONFIG_ROOT_NFS=y | 870 | CONFIG_ROOT_NFS=y |
662 | CONFIG_LOCKD=y | 871 | CONFIG_LOCKD=y |
663 | CONFIG_LOCKD_V4=y | 872 | CONFIG_LOCKD_V4=y |
873 | CONFIG_NFS_COMMON=y | ||
664 | CONFIG_SUNRPC=y | 874 | CONFIG_SUNRPC=y |
665 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 875 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
666 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 876 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -669,6 +879,7 @@ CONFIG_SUNRPC=y | |||
669 | # CONFIG_NCP_FS is not set | 879 | # CONFIG_NCP_FS is not set |
670 | # CONFIG_CODA_FS is not set | 880 | # CONFIG_CODA_FS is not set |
671 | # CONFIG_AFS_FS is not set | 881 | # CONFIG_AFS_FS is not set |
882 | # CONFIG_9P_FS is not set | ||
672 | 883 | ||
673 | # | 884 | # |
674 | # Partition Types | 885 | # Partition Types |
@@ -723,16 +934,23 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
723 | # | 934 | # |
724 | # Profiling support | 935 | # Profiling support |
725 | # | 936 | # |
726 | # CONFIG_PROFILING is not set | 937 | CONFIG_PROFILING=y |
938 | CONFIG_OPROFILE=y | ||
727 | 939 | ||
728 | # | 940 | # |
729 | # Kernel hacking | 941 | # Kernel hacking |
730 | # | 942 | # |
731 | # CONFIG_PRINTK_TIME is not set | 943 | # CONFIG_PRINTK_TIME is not set |
944 | CONFIG_ENABLE_MUST_CHECK=y | ||
945 | # CONFIG_MAGIC_SYSRQ is not set | ||
946 | # CONFIG_UNUSED_SYMBOLS is not set | ||
732 | # CONFIG_DEBUG_KERNEL is not set | 947 | # CONFIG_DEBUG_KERNEL is not set |
733 | CONFIG_LOG_BUF_SHIFT=14 | 948 | CONFIG_LOG_BUF_SHIFT=15 |
734 | # CONFIG_DEBUG_BUGVERBOSE is not set | 949 | # CONFIG_DEBUG_BUGVERBOSE is not set |
950 | # CONFIG_DEBUG_FS is not set | ||
735 | # CONFIG_FRAME_POINTER is not set | 951 | # CONFIG_FRAME_POINTER is not set |
952 | # CONFIG_UNWIND_INFO is not set | ||
953 | # CONFIG_HEADERS_CHECK is not set | ||
736 | 954 | ||
737 | # | 955 | # |
738 | # Security options | 956 | # Security options |
@@ -746,12 +964,9 @@ CONFIG_LOG_BUF_SHIFT=14 | |||
746 | # CONFIG_CRYPTO is not set | 964 | # CONFIG_CRYPTO is not set |
747 | 965 | ||
748 | # | 966 | # |
749 | # Hardware crypto devices | ||
750 | # | ||
751 | |||
752 | # | ||
753 | # Library routines | 967 | # Library routines |
754 | # | 968 | # |
755 | # CONFIG_CRC_CCITT is not set | 969 | # CONFIG_CRC_CCITT is not set |
970 | # CONFIG_CRC16 is not set | ||
756 | CONFIG_CRC32=y | 971 | CONFIG_CRC32=y |
757 | # CONFIG_LIBCRC32C is not set | 972 | # CONFIG_LIBCRC32C is not set |
diff --git a/arch/m32r/kernel/head.S b/arch/m32r/kernel/head.S index 0d3c8ee0e03d..dab7436d7bbe 100644 --- a/arch/m32r/kernel/head.S +++ b/arch/m32r/kernel/head.S | |||
@@ -7,8 +7,6 @@ | |||
7 | * Hitoshi Yamamoto | 7 | * Hitoshi Yamamoto |
8 | */ | 8 | */ |
9 | 9 | ||
10 | /* $Id$ */ | ||
11 | |||
12 | #include <linux/init.h> | 10 | #include <linux/init.h> |
13 | __INIT | 11 | __INIT |
14 | __INITDATA | 12 | __INITDATA |
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c index 44cbe0ce0f8f..a689e2978b6e 100644 --- a/arch/m32r/kernel/process.c +++ b/arch/m32r/kernel/process.c | |||
@@ -174,7 +174,7 @@ void show_regs(struct pt_regs * regs) | |||
174 | regs->acc1h, regs->acc1l); | 174 | regs->acc1h, regs->acc1l); |
175 | #elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R) | 175 | #elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R) |
176 | printk("ACCH[%08lx]:ACCL[%08lx]\n", \ | 176 | printk("ACCH[%08lx]:ACCL[%08lx]\n", \ |
177 | regs->acch, regs->accl); | 177 | regs->acc0h, regs->acc0l); |
178 | #else | 178 | #else |
179 | #error unknown isa configuration | 179 | #error unknown isa configuration |
180 | #endif | 180 | #endif |
diff --git a/arch/m32r/kernel/setup.c b/arch/m32r/kernel/setup.c index 936205f7aba0..d64814385d70 100644 --- a/arch/m32r/kernel/setup.c +++ b/arch/m32r/kernel/setup.c | |||
@@ -64,7 +64,7 @@ struct screen_info screen_info = { | |||
64 | 64 | ||
65 | extern int root_mountflags; | 65 | extern int root_mountflags; |
66 | 66 | ||
67 | static char command_line[COMMAND_LINE_SIZE]; | 67 | static char __initdata command_line[COMMAND_LINE_SIZE]; |
68 | 68 | ||
69 | static struct resource data_resource = { | 69 | static struct resource data_resource = { |
70 | .name = "Kernel data", | 70 | .name = "Kernel data", |
@@ -95,8 +95,8 @@ static __inline__ void parse_mem_cmdline(char ** cmdline_p) | |||
95 | int usermem = 0; | 95 | int usermem = 0; |
96 | 96 | ||
97 | /* Save unparsed command line copy for /proc/cmdline */ | 97 | /* Save unparsed command line copy for /proc/cmdline */ |
98 | memcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); | 98 | memcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); |
99 | saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; | 99 | boot_command_line[COMMAND_LINE_SIZE-1] = '\0'; |
100 | 100 | ||
101 | memory_start = (unsigned long)CONFIG_MEMORY_START+PAGE_OFFSET; | 101 | memory_start = (unsigned long)CONFIG_MEMORY_START+PAGE_OFFSET; |
102 | memory_end = memory_start+(unsigned long)CONFIG_MEMORY_SIZE; | 102 | memory_end = memory_start+(unsigned long)CONFIG_MEMORY_SIZE; |
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c index 092ea86bb079..4b156054baa6 100644 --- a/arch/m32r/kernel/signal.c +++ b/arch/m32r/kernel/signal.c | |||
@@ -109,19 +109,10 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, | |||
109 | COPY(r10); | 109 | COPY(r10); |
110 | COPY(r11); | 110 | COPY(r11); |
111 | COPY(r12); | 111 | COPY(r12); |
112 | #if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2) | ||
113 | COPY(acc0h); | 112 | COPY(acc0h); |
114 | COPY(acc0l); | 113 | COPY(acc0l); |
115 | COPY(acc1h); | 114 | COPY(acc1h); /* ISA_DSP_LEVEL2 only */ |
116 | COPY(acc1l); | 115 | COPY(acc1l); /* ISA_DSP_LEVEL2 only */ |
117 | #elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R) | ||
118 | COPY(acch); | ||
119 | COPY(accl); | ||
120 | COPY(dummy_acc1h); | ||
121 | COPY(dummy_acc1l); | ||
122 | #else | ||
123 | #error unknown isa configuration | ||
124 | #endif | ||
125 | COPY(psw); | 116 | COPY(psw); |
126 | COPY(bpc); | 117 | COPY(bpc); |
127 | COPY(bbpsw); | 118 | COPY(bbpsw); |
@@ -196,19 +187,10 @@ setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, | |||
196 | COPY(r10); | 187 | COPY(r10); |
197 | COPY(r11); | 188 | COPY(r11); |
198 | COPY(r12); | 189 | COPY(r12); |
199 | #if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2) | ||
200 | COPY(acc0h); | 190 | COPY(acc0h); |
201 | COPY(acc0l); | 191 | COPY(acc0l); |
202 | COPY(acc1h); | 192 | COPY(acc1h); /* ISA_DSP_LEVEL2 only */ |
203 | COPY(acc1l); | 193 | COPY(acc1l); /* ISA_DSP_LEVEL2 only */ |
204 | #elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R) | ||
205 | COPY(acch); | ||
206 | COPY(accl); | ||
207 | COPY(dummy_acc1h); | ||
208 | COPY(dummy_acc1l); | ||
209 | #else | ||
210 | #error unknown isa configuration | ||
211 | #endif | ||
212 | COPY(psw); | 194 | COPY(psw); |
213 | COPY(bpc); | 195 | COPY(bpc); |
214 | COPY(bbpsw); | 196 | COPY(bbpsw); |
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c index a09038282c78..3858c9f39ba5 100644 --- a/arch/m32r/kernel/time.c +++ b/arch/m32r/kernel/time.c | |||
@@ -286,11 +286,3 @@ void __init time_init(void) | |||
286 | #error no chip configuration | 286 | #error no chip configuration |
287 | #endif | 287 | #endif |
288 | } | 288 | } |
289 | |||
290 | /* | ||
291 | * Scheduler clock - returns current time in nanosec units. | ||
292 | */ | ||
293 | unsigned long long sched_clock(void) | ||
294 | { | ||
295 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
296 | } | ||
diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S index 358b9cee2c65..439cc257cd1d 100644 --- a/arch/m32r/kernel/vmlinux.lds.S +++ b/arch/m32r/kernel/vmlinux.lds.S | |||
@@ -6,12 +6,15 @@ | |||
6 | #include <asm/page.h> | 6 | #include <asm/page.h> |
7 | 7 | ||
8 | OUTPUT_ARCH(m32r) | 8 | OUTPUT_ARCH(m32r) |
9 | ENTRY(startup_32) | ||
10 | #if defined(__LITTLE_ENDIAN__) | 9 | #if defined(__LITTLE_ENDIAN__) |
11 | jiffies = jiffies_64; | 10 | jiffies = jiffies_64; |
12 | #else | 11 | #else |
13 | jiffies = jiffies_64 + 4; | 12 | jiffies = jiffies_64 + 4; |
14 | #endif | 13 | #endif |
14 | |||
15 | kernel_entry = boot - 0x80000000; | ||
16 | ENTRY(kernel_entry) | ||
17 | |||
15 | SECTIONS | 18 | SECTIONS |
16 | { | 19 | { |
17 | . = CONFIG_MEMORY_START + __PAGE_OFFSET; | 20 | . = CONFIG_MEMORY_START + __PAGE_OFFSET; |
@@ -99,10 +102,14 @@ SECTIONS | |||
99 | from .altinstructions and .eh_frame */ | 102 | from .altinstructions and .eh_frame */ |
100 | .exit.text : { *(.exit.text) } | 103 | .exit.text : { *(.exit.text) } |
101 | .exit.data : { *(.exit.data) } | 104 | .exit.data : { *(.exit.data) } |
105 | |||
106 | #ifdef CONFIG_BLK_DEV_INITRD | ||
102 | . = ALIGN(4096); | 107 | . = ALIGN(4096); |
103 | __initramfs_start = .; | 108 | __initramfs_start = .; |
104 | .init.ramfs : { *(.init.ramfs) } | 109 | .init.ramfs : { *(.init.ramfs) } |
105 | __initramfs_end = .; | 110 | __initramfs_end = .; |
111 | #endif | ||
112 | |||
106 | . = ALIGN(32); | 113 | . = ALIGN(32); |
107 | __per_cpu_start = .; | 114 | __per_cpu_start = .; |
108 | .data.percpu : { *(.data.percpu) } | 115 | .data.percpu : { *(.data.percpu) } |
diff --git a/arch/m32r/lib/ashxdi3.S b/arch/m32r/lib/ashxdi3.S index 107594b65d58..7fc0c19801ba 100644 --- a/arch/m32r/lib/ashxdi3.S +++ b/arch/m32r/lib/ashxdi3.S | |||
@@ -4,8 +4,6 @@ | |||
4 | * Copyright (C) 2001,2002 Hiroyuki Kondo, and Hirokazu Takata | 4 | * Copyright (C) 2001,2002 Hiroyuki Kondo, and Hirokazu Takata |
5 | * | 5 | * |
6 | */ | 6 | */ |
7 | /* $Id$ */ | ||
8 | |||
9 | 7 | ||
10 | ; | 8 | ; |
11 | ; input (r0,r1) src | 9 | ; input (r0,r1) src |
@@ -293,4 +291,3 @@ __lshrdi3: | |||
293 | #endif /* not CONFIG_ISA_DUAL_ISSUE */ | 291 | #endif /* not CONFIG_ISA_DUAL_ISSUE */ |
294 | 292 | ||
295 | .end | 293 | .end |
296 | |||
diff --git a/arch/m32r/lib/checksum.S b/arch/m32r/lib/checksum.S index cfbe00e5184a..0af0360c76d9 100644 --- a/arch/m32r/lib/checksum.S +++ b/arch/m32r/lib/checksum.S | |||
@@ -25,8 +25,6 @@ | |||
25 | * as published by the Free Software Foundation; either version | 25 | * as published by the Free Software Foundation; either version |
26 | * 2 of the License, or (at your option) any later version. | 26 | * 2 of the License, or (at your option) any later version. |
27 | */ | 27 | */ |
28 | /* $Id$ */ | ||
29 | |||
30 | 28 | ||
31 | #include <linux/linkage.h> | 29 | #include <linux/linkage.h> |
32 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
@@ -319,3 +317,4 @@ ENTRY(csum_partial_copy_generic) | |||
319 | nop | 317 | nop |
320 | nop | 318 | nop |
321 | 319 | ||
320 | .end | ||
diff --git a/arch/m32r/lib/delay.c b/arch/m32r/lib/delay.c index 06382a38c318..59bfc34e0d9f 100644 --- a/arch/m32r/lib/delay.c +++ b/arch/m32r/lib/delay.c | |||
@@ -5,8 +5,6 @@ | |||
5 | * Copyright (c) 2004 Hirokazu Takata | 5 | * Copyright (c) 2004 Hirokazu Takata |
6 | */ | 6 | */ |
7 | 7 | ||
8 | /* $Id$ */ | ||
9 | |||
10 | #include <linux/param.h> | 8 | #include <linux/param.h> |
11 | #ifdef CONFIG_SMP | 9 | #ifdef CONFIG_SMP |
12 | #include <linux/sched.h> | 10 | #include <linux/sched.h> |
diff --git a/arch/m32r/lib/memcpy.S b/arch/m32r/lib/memcpy.S index 2089a215314e..05987cd639ef 100644 --- a/arch/m32r/lib/memcpy.S +++ b/arch/m32r/lib/memcpy.S | |||
@@ -10,8 +10,6 @@ | |||
10 | * src: r1 | 10 | * src: r1 |
11 | * n : r2 | 11 | * n : r2 |
12 | */ | 12 | */ |
13 | /* $Id$ */ | ||
14 | |||
15 | 13 | ||
16 | .text | 14 | .text |
17 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
diff --git a/arch/m32r/lib/memset.S b/arch/m32r/lib/memset.S index b47fa3537aa4..2b2831a37927 100644 --- a/arch/m32r/lib/memset.S +++ b/arch/m32r/lib/memset.S | |||
@@ -12,8 +12,6 @@ | |||
12 | * ret: r0 | 12 | * ret: r0 |
13 | * | 13 | * |
14 | */ | 14 | */ |
15 | /* $Id$ */ | ||
16 | |||
17 | 15 | ||
18 | .text | 16 | .text |
19 | .global memset | 17 | .global memset |
diff --git a/arch/m32r/lib/strlen.S b/arch/m32r/lib/strlen.S index 5f41aacd7b3e..916de9e8f801 100644 --- a/arch/m32r/lib/strlen.S +++ b/arch/m32r/lib/strlen.S | |||
@@ -6,8 +6,6 @@ | |||
6 | * size_t strlen(const char *s); | 6 | * size_t strlen(const char *s); |
7 | * | 7 | * |
8 | */ | 8 | */ |
9 | /* $Id$ */ | ||
10 | |||
11 | 9 | ||
12 | #include <linux/linkage.h> | 10 | #include <linux/linkage.h> |
13 | #include <asm/assembler.h> | 11 | #include <asm/assembler.h> |
diff --git a/arch/m32r/m32104ut/defconfig.m32104ut b/arch/m32r/m32104ut/defconfig.m32104ut index 454de336803a..7b68fe8d921e 100644 --- a/arch/m32r/m32104ut/defconfig.m32104ut +++ b/arch/m32r/m32104ut/defconfig.m32104ut | |||
@@ -1,20 +1,20 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.14 | 3 | # Linux kernel version: 2.6.19 |
4 | # Wed Nov 9 16:04:51 2005 | 4 | # Wed Dec 13 17:22:20 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 16 | CONFIG_BROKEN_ON_SMP=y |
17 | CONFIG_LOCK_KERNEL=y | ||
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | 19 | ||
20 | # | 20 | # |
@@ -22,33 +22,66 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
22 | # | 22 | # |
23 | CONFIG_LOCALVERSION="" | 23 | CONFIG_LOCALVERSION="" |
24 | CONFIG_LOCALVERSION_AUTO=y | 24 | CONFIG_LOCALVERSION_AUTO=y |
25 | CONFIG_SYSVIPC=y | ||
26 | # CONFIG_IPC_NS is not set | ||
25 | # CONFIG_POSIX_MQUEUE is not set | 27 | # CONFIG_POSIX_MQUEUE is not set |
26 | # CONFIG_BSD_PROCESS_ACCT is not set | 28 | # CONFIG_BSD_PROCESS_ACCT is not set |
27 | CONFIG_SYSCTL=y | 29 | # CONFIG_TASKSTATS is not set |
30 | # CONFIG_UTS_NS is not set | ||
28 | # CONFIG_AUDIT is not set | 31 | # CONFIG_AUDIT is not set |
29 | CONFIG_HOTPLUG=y | 32 | CONFIG_IKCONFIG=y |
30 | # CONFIG_KOBJECT_UEVENT is not set | 33 | CONFIG_IKCONFIG_PROC=y |
31 | # CONFIG_IKCONFIG is not set | 34 | CONFIG_SYSFS_DEPRECATED=y |
35 | # CONFIG_RELAY is not set | ||
32 | CONFIG_INITRAMFS_SOURCE="" | 36 | CONFIG_INITRAMFS_SOURCE="" |
33 | CONFIG_EMBEDDED=y | 37 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
34 | # CONFIG_KALLSYMS is not set | 38 | CONFIG_SYSCTL=y |
39 | # CONFIG_EMBEDDED is not set | ||
40 | CONFIG_SYSCTL_SYSCALL=y | ||
41 | CONFIG_KALLSYMS=y | ||
42 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
43 | CONFIG_HOTPLUG=y | ||
35 | CONFIG_PRINTK=y | 44 | CONFIG_PRINTK=y |
36 | CONFIG_BUG=y | 45 | CONFIG_BUG=y |
46 | CONFIG_ELF_CORE=y | ||
37 | CONFIG_BASE_FULL=y | 47 | CONFIG_BASE_FULL=y |
38 | # CONFIG_FUTEX is not set | 48 | CONFIG_FUTEX=y |
39 | # CONFIG_EPOLL is not set | 49 | CONFIG_EPOLL=y |
40 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 50 | CONFIG_SLAB=y |
41 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 51 | CONFIG_VM_EVENT_COUNTERS=y |
42 | CONFIG_CC_ALIGN_LABELS=0 | 52 | CONFIG_RT_MUTEXES=y |
43 | CONFIG_CC_ALIGN_LOOPS=0 | ||
44 | CONFIG_CC_ALIGN_JUMPS=0 | ||
45 | CONFIG_TINY_SHMEM=y | 53 | CONFIG_TINY_SHMEM=y |
46 | CONFIG_BASE_SMALL=0 | 54 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
47 | 56 | ||
48 | # | 57 | # |
49 | # Loadable module support | 58 | # Loadable module support |
50 | # | 59 | # |
51 | # CONFIG_MODULES is not set | 60 | CONFIG_MODULES=y |
61 | CONFIG_MODULE_UNLOAD=y | ||
62 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
63 | # CONFIG_MODVERSIONS is not set | ||
64 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
65 | CONFIG_KMOD=y | ||
66 | |||
67 | # | ||
68 | # Block layer | ||
69 | # | ||
70 | CONFIG_BLOCK=y | ||
71 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
72 | |||
73 | # | ||
74 | # IO Schedulers | ||
75 | # | ||
76 | CONFIG_IOSCHED_NOOP=y | ||
77 | CONFIG_IOSCHED_AS=y | ||
78 | CONFIG_IOSCHED_DEADLINE=y | ||
79 | CONFIG_IOSCHED_CFQ=y | ||
80 | CONFIG_DEFAULT_AS=y | ||
81 | # CONFIG_DEFAULT_DEADLINE is not set | ||
82 | # CONFIG_DEFAULT_CFQ is not set | ||
83 | # CONFIG_DEFAULT_NOOP is not set | ||
84 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
52 | 85 | ||
53 | # | 86 | # |
54 | # Processor type and features | 87 | # Processor type and features |
@@ -70,40 +103,40 @@ CONFIG_ISA_M32R=y | |||
70 | CONFIG_BUS_CLOCK=54000000 | 103 | CONFIG_BUS_CLOCK=54000000 |
71 | CONFIG_TIMER_DIVIDE=128 | 104 | CONFIG_TIMER_DIVIDE=128 |
72 | # CONFIG_CPU_LITTLE_ENDIAN is not set | 105 | # CONFIG_CPU_LITTLE_ENDIAN is not set |
73 | CONFIG_MEMORY_START=04000000 | 106 | CONFIG_MEMORY_START=0x04000000 |
74 | CONFIG_MEMORY_SIZE=01000000 | 107 | CONFIG_MEMORY_SIZE=0x01000000 |
75 | CONFIG_NOHIGHMEM=y | 108 | CONFIG_NOHIGHMEM=y |
76 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | 109 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
77 | CONFIG_SELECT_MEMORY_MODEL=y | 110 | CONFIG_SELECT_MEMORY_MODEL=y |
78 | CONFIG_FLATMEM_MANUAL=y | 111 | # CONFIG_FLATMEM_MANUAL is not set |
79 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 112 | CONFIG_DISCONTIGMEM_MANUAL=y |
80 | # CONFIG_SPARSEMEM_MANUAL is not set | 113 | # CONFIG_SPARSEMEM_MANUAL is not set |
81 | CONFIG_FLATMEM=y | 114 | CONFIG_DISCONTIGMEM=y |
82 | CONFIG_FLAT_NODE_MEM_MAP=y | 115 | CONFIG_FLAT_NODE_MEM_MAP=y |
116 | CONFIG_NEED_MULTIPLE_NODES=y | ||
83 | # CONFIG_SPARSEMEM_STATIC is not set | 117 | # CONFIG_SPARSEMEM_STATIC is not set |
118 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
119 | # CONFIG_RESOURCES_64BIT is not set | ||
120 | CONFIG_IRAM_START=0x00700000 | ||
121 | CONFIG_IRAM_SIZE=0x00010000 | ||
84 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 122 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
85 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 123 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
124 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
125 | CONFIG_GENERIC_HWEIGHT=y | ||
86 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 126 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
87 | # CONFIG_PREEMPT is not set | 127 | CONFIG_PREEMPT=y |
88 | # CONFIG_SMP is not set | 128 | # CONFIG_SMP is not set |
129 | CONFIG_NODES_SHIFT=1 | ||
89 | 130 | ||
90 | # | 131 | # |
91 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 132 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
92 | # | 133 | # |
93 | # CONFIG_ISA is not set | 134 | CONFIG_ISA=y |
94 | 135 | ||
95 | # | 136 | # |
96 | # PCCARD (PCMCIA/CardBus) support | 137 | # PCCARD (PCMCIA/CardBus) support |
97 | # | 138 | # |
98 | CONFIG_PCCARD=y | 139 | # CONFIG_PCCARD is not set |
99 | # CONFIG_PCMCIA_DEBUG is not set | ||
100 | CONFIG_PCMCIA=y | ||
101 | CONFIG_PCMCIA_LOAD_CIS=y | ||
102 | CONFIG_PCMCIA_IOCTL=y | ||
103 | |||
104 | # | ||
105 | # PC-card bridges | ||
106 | # | ||
107 | 140 | ||
108 | # | 141 | # |
109 | # PCI Hotplug Support | 142 | # PCI Hotplug Support |
@@ -112,10 +145,8 @@ CONFIG_PCMCIA_IOCTL=y | |||
112 | # | 145 | # |
113 | # Executable file formats | 146 | # Executable file formats |
114 | # | 147 | # |
115 | CONFIG_BINFMT_FLAT=y | 148 | # CONFIG_BINFMT_FLAT is not set |
116 | # CONFIG_BINFMT_ZFLAT is not set | 149 | CONFIG_BINFMT_MISC=y |
117 | # CONFIG_BINFMT_SHARED_FLAT is not set | ||
118 | # CONFIG_BINFMT_MISC is not set | ||
119 | 150 | ||
120 | # | 151 | # |
121 | # Networking | 152 | # Networking |
@@ -125,17 +156,19 @@ CONFIG_NET=y | |||
125 | # | 156 | # |
126 | # Networking options | 157 | # Networking options |
127 | # | 158 | # |
128 | # CONFIG_PACKET is not set | 159 | # CONFIG_NETDEBUG is not set |
160 | CONFIG_PACKET=y | ||
161 | # CONFIG_PACKET_MMAP is not set | ||
129 | CONFIG_UNIX=y | 162 | CONFIG_UNIX=y |
163 | CONFIG_XFRM=y | ||
164 | # CONFIG_XFRM_USER is not set | ||
165 | # CONFIG_XFRM_SUB_POLICY is not set | ||
130 | # CONFIG_NET_KEY is not set | 166 | # CONFIG_NET_KEY is not set |
131 | CONFIG_INET=y | 167 | CONFIG_INET=y |
132 | # CONFIG_IP_MULTICAST is not set | 168 | # CONFIG_IP_MULTICAST is not set |
133 | # CONFIG_IP_ADVANCED_ROUTER is not set | 169 | # CONFIG_IP_ADVANCED_ROUTER is not set |
134 | CONFIG_IP_FIB_HASH=y | 170 | CONFIG_IP_FIB_HASH=y |
135 | CONFIG_IP_PNP=y | 171 | # CONFIG_IP_PNP is not set |
136 | CONFIG_IP_PNP_DHCP=y | ||
137 | # CONFIG_IP_PNP_BOOTP is not set | ||
138 | # CONFIG_IP_PNP_RARP is not set | ||
139 | # CONFIG_NET_IPIP is not set | 172 | # CONFIG_NET_IPIP is not set |
140 | # CONFIG_NET_IPGRE is not set | 173 | # CONFIG_NET_IPGRE is not set |
141 | # CONFIG_ARPD is not set | 174 | # CONFIG_ARPD is not set |
@@ -143,13 +176,87 @@ CONFIG_IP_PNP_DHCP=y | |||
143 | # CONFIG_INET_AH is not set | 176 | # CONFIG_INET_AH is not set |
144 | # CONFIG_INET_ESP is not set | 177 | # CONFIG_INET_ESP is not set |
145 | # CONFIG_INET_IPCOMP is not set | 178 | # CONFIG_INET_IPCOMP is not set |
179 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
146 | # CONFIG_INET_TUNNEL is not set | 180 | # CONFIG_INET_TUNNEL is not set |
181 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
182 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
183 | CONFIG_INET_XFRM_MODE_BEET=y | ||
147 | CONFIG_INET_DIAG=y | 184 | CONFIG_INET_DIAG=y |
148 | CONFIG_INET_TCP_DIAG=y | 185 | CONFIG_INET_TCP_DIAG=y |
149 | # CONFIG_TCP_CONG_ADVANCED is not set | 186 | # CONFIG_TCP_CONG_ADVANCED is not set |
150 | CONFIG_TCP_CONG_BIC=y | 187 | CONFIG_TCP_CONG_CUBIC=y |
188 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
189 | # CONFIG_TCP_MD5SIG is not set | ||
190 | |||
191 | # | ||
192 | # IP: Virtual Server Configuration | ||
193 | # | ||
194 | # CONFIG_IP_VS is not set | ||
151 | # CONFIG_IPV6 is not set | 195 | # CONFIG_IPV6 is not set |
152 | # CONFIG_NETFILTER is not set | 196 | # CONFIG_INET6_XFRM_TUNNEL is not set |
197 | # CONFIG_INET6_TUNNEL is not set | ||
198 | # CONFIG_NETWORK_SECMARK is not set | ||
199 | CONFIG_NETFILTER=y | ||
200 | # CONFIG_NETFILTER_DEBUG is not set | ||
201 | |||
202 | # | ||
203 | # Core Netfilter Configuration | ||
204 | # | ||
205 | CONFIG_NETFILTER_NETLINK=m | ||
206 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
207 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
208 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
209 | CONFIG_NETFILTER_XTABLES=m | ||
210 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
211 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | ||
212 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
213 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
214 | # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set | ||
215 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
216 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
217 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set | ||
218 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set | ||
219 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
220 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
221 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
222 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
223 | # CONFIG_NETFILTER_XT_MATCH_POLICY is not set | ||
224 | # CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set | ||
225 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
226 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set | ||
227 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
228 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
229 | # CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set | ||
230 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
231 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
232 | # CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set | ||
233 | |||
234 | # | ||
235 | # IP: Netfilter Configuration | ||
236 | # | ||
237 | CONFIG_IP_NF_QUEUE=m | ||
238 | CONFIG_IP_NF_IPTABLES=m | ||
239 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
240 | CONFIG_IP_NF_MATCH_TOS=m | ||
241 | CONFIG_IP_NF_MATCH_RECENT=m | ||
242 | CONFIG_IP_NF_MATCH_ECN=m | ||
243 | # CONFIG_IP_NF_MATCH_AH is not set | ||
244 | CONFIG_IP_NF_MATCH_TTL=m | ||
245 | CONFIG_IP_NF_MATCH_OWNER=m | ||
246 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
247 | CONFIG_IP_NF_FILTER=m | ||
248 | CONFIG_IP_NF_TARGET_REJECT=m | ||
249 | CONFIG_IP_NF_TARGET_LOG=m | ||
250 | CONFIG_IP_NF_TARGET_ULOG=m | ||
251 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
252 | CONFIG_IP_NF_MANGLE=m | ||
253 | CONFIG_IP_NF_TARGET_TOS=m | ||
254 | CONFIG_IP_NF_TARGET_ECN=m | ||
255 | CONFIG_IP_NF_TARGET_TTL=m | ||
256 | CONFIG_IP_NF_RAW=m | ||
257 | CONFIG_IP_NF_ARPTABLES=m | ||
258 | CONFIG_IP_NF_ARPFILTER=m | ||
259 | CONFIG_IP_NF_ARP_MANGLE=m | ||
153 | 260 | ||
154 | # | 261 | # |
155 | # DCCP Configuration (EXPERIMENTAL) | 262 | # DCCP Configuration (EXPERIMENTAL) |
@@ -160,6 +267,11 @@ CONFIG_TCP_CONG_BIC=y | |||
160 | # SCTP Configuration (EXPERIMENTAL) | 267 | # SCTP Configuration (EXPERIMENTAL) |
161 | # | 268 | # |
162 | # CONFIG_IP_SCTP is not set | 269 | # CONFIG_IP_SCTP is not set |
270 | |||
271 | # | ||
272 | # TIPC Configuration (EXPERIMENTAL) | ||
273 | # | ||
274 | # CONFIG_TIPC is not set | ||
163 | # CONFIG_ATM is not set | 275 | # CONFIG_ATM is not set |
164 | # CONFIG_BRIDGE is not set | 276 | # CONFIG_BRIDGE is not set |
165 | # CONFIG_VLAN_8021Q is not set | 277 | # CONFIG_VLAN_8021Q is not set |
@@ -169,11 +281,14 @@ CONFIG_TCP_CONG_BIC=y | |||
169 | # CONFIG_ATALK is not set | 281 | # CONFIG_ATALK is not set |
170 | # CONFIG_X25 is not set | 282 | # CONFIG_X25 is not set |
171 | # CONFIG_LAPB is not set | 283 | # CONFIG_LAPB is not set |
172 | # CONFIG_NET_DIVERT is not set | ||
173 | # CONFIG_ECONET is not set | 284 | # CONFIG_ECONET is not set |
174 | # CONFIG_WAN_ROUTER is not set | 285 | # CONFIG_WAN_ROUTER is not set |
286 | |||
287 | # | ||
288 | # QoS and/or fair queueing | ||
289 | # | ||
175 | # CONFIG_NET_SCHED is not set | 290 | # CONFIG_NET_SCHED is not set |
176 | # CONFIG_NET_CLS_ROUTE is not set | 291 | CONFIG_NET_CLS_ROUTE=y |
177 | 292 | ||
178 | # | 293 | # |
179 | # Network testing | 294 | # Network testing |
@@ -193,8 +308,8 @@ CONFIG_TCP_CONG_BIC=y | |||
193 | # | 308 | # |
194 | CONFIG_STANDALONE=y | 309 | CONFIG_STANDALONE=y |
195 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 310 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
196 | CONFIG_FW_LOADER=y | 311 | # CONFIG_FW_LOADER is not set |
197 | # CONFIG_DEBUG_DRIVER is not set | 312 | # CONFIG_SYS_HYPERVISOR is not set |
198 | 313 | ||
199 | # | 314 | # |
200 | # Connector - unified userspace <-> kernelspace linker | 315 | # Connector - unified userspace <-> kernelspace linker |
@@ -209,11 +324,21 @@ CONFIG_FW_LOADER=y | |||
209 | # | 324 | # |
210 | # Parallel port support | 325 | # Parallel port support |
211 | # | 326 | # |
212 | # CONFIG_PARPORT is not set | 327 | CONFIG_PARPORT=m |
328 | # CONFIG_PARPORT_GSC is not set | ||
329 | # CONFIG_PARPORT_AX88796 is not set | ||
330 | CONFIG_PARPORT_1284=y | ||
213 | 331 | ||
214 | # | 332 | # |
215 | # Plug and Play support | 333 | # Plug and Play support |
216 | # | 334 | # |
335 | CONFIG_PNP=y | ||
336 | # CONFIG_PNP_DEBUG is not set | ||
337 | |||
338 | # | ||
339 | # Protocols | ||
340 | # | ||
341 | CONFIG_ISAPNP=y | ||
217 | 342 | ||
218 | # | 343 | # |
219 | # Block devices | 344 | # Block devices |
@@ -221,37 +346,130 @@ CONFIG_FW_LOADER=y | |||
221 | # CONFIG_BLK_DEV_COW_COMMON is not set | 346 | # CONFIG_BLK_DEV_COW_COMMON is not set |
222 | CONFIG_BLK_DEV_LOOP=y | 347 | CONFIG_BLK_DEV_LOOP=y |
223 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 348 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
224 | CONFIG_BLK_DEV_NBD=y | 349 | CONFIG_BLK_DEV_NBD=m |
225 | CONFIG_BLK_DEV_RAM=y | 350 | # CONFIG_BLK_DEV_RAM is not set |
226 | CONFIG_BLK_DEV_RAM_COUNT=16 | 351 | # CONFIG_BLK_DEV_INITRD is not set |
227 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 352 | CONFIG_CDROM_PKTCDVD=m |
228 | CONFIG_BLK_DEV_INITRD=y | 353 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
229 | # CONFIG_CDROM_PKTCDVD is not set | 354 | CONFIG_CDROM_PKTCDVD_WCACHE=y |
355 | # CONFIG_ATA_OVER_ETH is not set | ||
230 | 356 | ||
231 | # | 357 | # |
232 | # IO Schedulers | 358 | # Misc devices |
233 | # | 359 | # |
234 | CONFIG_IOSCHED_NOOP=y | 360 | # CONFIG_TIFM_CORE is not set |
235 | # CONFIG_IOSCHED_AS is not set | ||
236 | # CONFIG_IOSCHED_DEADLINE is not set | ||
237 | # CONFIG_IOSCHED_CFQ is not set | ||
238 | # CONFIG_ATA_OVER_ETH is not set | ||
239 | 361 | ||
240 | # | 362 | # |
241 | # ATA/ATAPI/MFM/RLL support | 363 | # ATA/ATAPI/MFM/RLL support |
242 | # | 364 | # |
243 | # CONFIG_IDE is not set | 365 | CONFIG_IDE=y |
366 | CONFIG_BLK_DEV_IDE=y | ||
367 | |||
368 | # | ||
369 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
370 | # | ||
371 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
372 | CONFIG_BLK_DEV_IDEDISK=y | ||
373 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
374 | CONFIG_BLK_DEV_IDECD=y | ||
375 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
376 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
377 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
378 | # CONFIG_IDE_TASK_IOCTL is not set | ||
379 | |||
380 | # | ||
381 | # IDE chipset support/bugfixes | ||
382 | # | ||
383 | CONFIG_IDE_GENERIC=y | ||
384 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
385 | # CONFIG_IDE_ARM is not set | ||
386 | # CONFIG_IDE_CHIPSETS is not set | ||
387 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
388 | # CONFIG_IDEDMA_AUTO is not set | ||
389 | # CONFIG_BLK_DEV_HD is not set | ||
244 | 390 | ||
245 | # | 391 | # |
246 | # SCSI device support | 392 | # SCSI device support |
247 | # | 393 | # |
248 | # CONFIG_RAID_ATTRS is not set | 394 | # CONFIG_RAID_ATTRS is not set |
249 | # CONFIG_SCSI is not set | 395 | CONFIG_SCSI=y |
396 | # CONFIG_SCSI_NETLINK is not set | ||
397 | CONFIG_SCSI_PROC_FS=y | ||
398 | |||
399 | # | ||
400 | # SCSI support type (disk, tape, CD-ROM) | ||
401 | # | ||
402 | CONFIG_BLK_DEV_SD=y | ||
403 | CONFIG_CHR_DEV_ST=m | ||
404 | # CONFIG_CHR_DEV_OSST is not set | ||
405 | CONFIG_BLK_DEV_SR=m | ||
406 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
407 | CONFIG_CHR_DEV_SG=m | ||
408 | # CONFIG_CHR_DEV_SCH is not set | ||
409 | |||
410 | # | ||
411 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
412 | # | ||
413 | CONFIG_SCSI_MULTI_LUN=y | ||
414 | CONFIG_SCSI_CONSTANTS=y | ||
415 | # CONFIG_SCSI_LOGGING is not set | ||
416 | |||
417 | # | ||
418 | # SCSI Transports | ||
419 | # | ||
420 | CONFIG_SCSI_SPI_ATTRS=y | ||
421 | # CONFIG_SCSI_FC_ATTRS is not set | ||
422 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
423 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
424 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
425 | |||
426 | # | ||
427 | # SCSI low-level drivers | ||
428 | # | ||
429 | # CONFIG_ISCSI_TCP is not set | ||
430 | # CONFIG_SCSI_AHA152X is not set | ||
431 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
432 | # CONFIG_SCSI_IN2000 is not set | ||
433 | # CONFIG_SCSI_DTC3280 is not set | ||
434 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
435 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | ||
436 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | ||
437 | # CONFIG_SCSI_NCR53C406A is not set | ||
438 | # CONFIG_SCSI_PAS16 is not set | ||
439 | # CONFIG_SCSI_PSI240I is not set | ||
440 | # CONFIG_SCSI_QLOGIC_FAS is not set | ||
441 | # CONFIG_SCSI_SYM53C416 is not set | ||
442 | # CONFIG_SCSI_T128 is not set | ||
443 | # CONFIG_SCSI_DEBUG is not set | ||
444 | |||
445 | # | ||
446 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
447 | # | ||
448 | |||
449 | # | ||
450 | # Old CD-ROM drivers (not SCSI, not IDE) | ||
451 | # | ||
452 | # CONFIG_CD_NO_IDESCSI is not set | ||
250 | 453 | ||
251 | # | 454 | # |
252 | # Multi-device support (RAID and LVM) | 455 | # Multi-device support (RAID and LVM) |
253 | # | 456 | # |
254 | # CONFIG_MD is not set | 457 | CONFIG_MD=y |
458 | CONFIG_BLK_DEV_MD=y | ||
459 | # CONFIG_MD_LINEAR is not set | ||
460 | # CONFIG_MD_RAID0 is not set | ||
461 | CONFIG_MD_RAID1=y | ||
462 | # CONFIG_MD_RAID10 is not set | ||
463 | # CONFIG_MD_RAID456 is not set | ||
464 | # CONFIG_MD_MULTIPATH is not set | ||
465 | # CONFIG_MD_FAULTY is not set | ||
466 | CONFIG_BLK_DEV_DM=m | ||
467 | # CONFIG_DM_DEBUG is not set | ||
468 | CONFIG_DM_CRYPT=m | ||
469 | CONFIG_DM_SNAPSHOT=m | ||
470 | # CONFIG_DM_MIRROR is not set | ||
471 | # CONFIG_DM_ZERO is not set | ||
472 | # CONFIG_DM_MULTIPATH is not set | ||
255 | 473 | ||
256 | # | 474 | # |
257 | # Fusion MPT device support | 475 | # Fusion MPT device support |
@@ -270,10 +488,16 @@ CONFIG_IOSCHED_NOOP=y | |||
270 | # Network device support | 488 | # Network device support |
271 | # | 489 | # |
272 | CONFIG_NETDEVICES=y | 490 | CONFIG_NETDEVICES=y |
273 | CONFIG_DUMMY=y | 491 | CONFIG_DUMMY=m |
274 | # CONFIG_BONDING is not set | 492 | # CONFIG_BONDING is not set |
275 | # CONFIG_EQUALIZER is not set | 493 | # CONFIG_EQUALIZER is not set |
276 | # CONFIG_TUN is not set | 494 | # CONFIG_TUN is not set |
495 | # CONFIG_NET_SB1000 is not set | ||
496 | |||
497 | # | ||
498 | # ARCnet devices | ||
499 | # | ||
500 | # CONFIG_ARCNET is not set | ||
277 | 501 | ||
278 | # | 502 | # |
279 | # PHY device support | 503 | # PHY device support |
@@ -285,8 +509,33 @@ CONFIG_DUMMY=y | |||
285 | # | 509 | # |
286 | CONFIG_NET_ETHERNET=y | 510 | CONFIG_NET_ETHERNET=y |
287 | CONFIG_MII=y | 511 | CONFIG_MII=y |
288 | CONFIG_SMC91X=y | 512 | CONFIG_NET_VENDOR_3COM=y |
289 | # CONFIG_NE2000 is not set | 513 | # CONFIG_EL1 is not set |
514 | # CONFIG_EL2 is not set | ||
515 | # CONFIG_EL16 is not set | ||
516 | # CONFIG_EL3 is not set | ||
517 | # CONFIG_NET_VENDOR_SMC is not set | ||
518 | # CONFIG_SMC91X is not set | ||
519 | # CONFIG_NET_VENDOR_RACAL is not set | ||
520 | # CONFIG_AT1700 is not set | ||
521 | # CONFIG_DEPCA is not set | ||
522 | # CONFIG_HP100 is not set | ||
523 | CONFIG_NET_ISA=y | ||
524 | # CONFIG_E2100 is not set | ||
525 | # CONFIG_EWRK3 is not set | ||
526 | # CONFIG_EEXPRESS is not set | ||
527 | # CONFIG_EEXPRESS_PRO is not set | ||
528 | # CONFIG_HPLAN_PLUS is not set | ||
529 | # CONFIG_HPLAN is not set | ||
530 | # CONFIG_LP486E is not set | ||
531 | # CONFIG_ETH16I is not set | ||
532 | CONFIG_NE2000=m | ||
533 | # CONFIG_SEEQ8005 is not set | ||
534 | CONFIG_NET_PCI=y | ||
535 | # CONFIG_AC3200 is not set | ||
536 | # CONFIG_APRICOT is not set | ||
537 | # CONFIG_CS89x0 is not set | ||
538 | # CONFIG_NET_POCKET is not set | ||
290 | 539 | ||
291 | # | 540 | # |
292 | # Ethernet (1000 Mbit) | 541 | # Ethernet (1000 Mbit) |
@@ -299,6 +548,7 @@ CONFIG_SMC91X=y | |||
299 | # | 548 | # |
300 | # Token Ring devices | 549 | # Token Ring devices |
301 | # | 550 | # |
551 | # CONFIG_TR is not set | ||
302 | 552 | ||
303 | # | 553 | # |
304 | # Wireless LAN (non-hamradio) | 554 | # Wireless LAN (non-hamradio) |
@@ -306,14 +556,10 @@ CONFIG_SMC91X=y | |||
306 | # CONFIG_NET_RADIO is not set | 556 | # CONFIG_NET_RADIO is not set |
307 | 557 | ||
308 | # | 558 | # |
309 | # PCMCIA network device support | ||
310 | # | ||
311 | # CONFIG_NET_PCMCIA is not set | ||
312 | |||
313 | # | ||
314 | # Wan interfaces | 559 | # Wan interfaces |
315 | # | 560 | # |
316 | # CONFIG_WAN is not set | 561 | # CONFIG_WAN is not set |
562 | # CONFIG_PLIP is not set | ||
317 | # CONFIG_PPP is not set | 563 | # CONFIG_PPP is not set |
318 | # CONFIG_SLIP is not set | 564 | # CONFIG_SLIP is not set |
319 | # CONFIG_SHAPER is not set | 565 | # CONFIG_SHAPER is not set |
@@ -334,35 +580,83 @@ CONFIG_SMC91X=y | |||
334 | # | 580 | # |
335 | # Input device support | 581 | # Input device support |
336 | # | 582 | # |
337 | # CONFIG_INPUT is not set | 583 | CONFIG_INPUT=y |
584 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
585 | |||
586 | # | ||
587 | # Userland interfaces | ||
588 | # | ||
589 | CONFIG_INPUT_MOUSEDEV=y | ||
590 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
591 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
592 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
593 | # CONFIG_INPUT_JOYDEV is not set | ||
594 | # CONFIG_INPUT_TSDEV is not set | ||
595 | # CONFIG_INPUT_EVDEV is not set | ||
596 | # CONFIG_INPUT_EVBUG is not set | ||
597 | |||
598 | # | ||
599 | # Input Device Drivers | ||
600 | # | ||
601 | CONFIG_INPUT_KEYBOARD=y | ||
602 | CONFIG_KEYBOARD_ATKBD=y | ||
603 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
604 | # CONFIG_KEYBOARD_LKKBD is not set | ||
605 | # CONFIG_KEYBOARD_XTKBD is not set | ||
606 | # CONFIG_KEYBOARD_NEWTON is not set | ||
607 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
608 | CONFIG_INPUT_MOUSE=y | ||
609 | CONFIG_MOUSE_PS2=y | ||
610 | # CONFIG_MOUSE_SERIAL is not set | ||
611 | # CONFIG_MOUSE_INPORT is not set | ||
612 | # CONFIG_MOUSE_LOGIBM is not set | ||
613 | # CONFIG_MOUSE_PC110PAD is not set | ||
614 | # CONFIG_MOUSE_VSXXXAA is not set | ||
615 | # CONFIG_INPUT_JOYSTICK is not set | ||
616 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
617 | # CONFIG_INPUT_MISC is not set | ||
338 | 618 | ||
339 | # | 619 | # |
340 | # Hardware I/O ports | 620 | # Hardware I/O ports |
341 | # | 621 | # |
342 | # CONFIG_SERIO is not set | 622 | CONFIG_SERIO=y |
623 | CONFIG_SERIO_I8042=y | ||
624 | CONFIG_SERIO_SERPORT=y | ||
625 | # CONFIG_SERIO_PARKBD is not set | ||
626 | CONFIG_SERIO_LIBPS2=y | ||
627 | # CONFIG_SERIO_RAW is not set | ||
343 | # CONFIG_GAMEPORT is not set | 628 | # CONFIG_GAMEPORT is not set |
344 | 629 | ||
345 | # | 630 | # |
346 | # Character devices | 631 | # Character devices |
347 | # | 632 | # |
348 | # CONFIG_VT is not set | 633 | CONFIG_VT=y |
634 | CONFIG_VT_CONSOLE=y | ||
635 | CONFIG_HW_CONSOLE=y | ||
636 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
349 | # CONFIG_SERIAL_NONSTANDARD is not set | 637 | # CONFIG_SERIAL_NONSTANDARD is not set |
350 | 638 | ||
351 | # | 639 | # |
352 | # Serial drivers | 640 | # Serial drivers |
353 | # | 641 | # |
354 | # CONFIG_SERIAL_8250 is not set | 642 | CONFIG_SERIAL_8250=m |
643 | CONFIG_SERIAL_8250_PNP=m | ||
644 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
645 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
646 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
355 | 647 | ||
356 | # | 648 | # |
357 | # Non-8250 serial port support | 649 | # Non-8250 serial port support |
358 | # | 650 | # |
359 | CONFIG_SERIAL_CORE=y | 651 | CONFIG_SERIAL_CORE=y |
360 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
361 | CONFIG_SERIAL_M32R_SIO=y | 652 | CONFIG_SERIAL_M32R_SIO=y |
362 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y | 653 | # CONFIG_SERIAL_M32R_SIO_CONSOLE is not set |
363 | CONFIG_UNIX98_PTYS=y | 654 | CONFIG_UNIX98_PTYS=y |
364 | CONFIG_LEGACY_PTYS=y | 655 | CONFIG_LEGACY_PTYS=y |
365 | CONFIG_LEGACY_PTY_COUNT=256 | 656 | CONFIG_LEGACY_PTY_COUNT=256 |
657 | # CONFIG_PRINTER is not set | ||
658 | # CONFIG_PPDEV is not set | ||
659 | # CONFIG_TIPAR is not set | ||
366 | 660 | ||
367 | # | 661 | # |
368 | # IPMI | 662 | # IPMI |
@@ -372,13 +666,8 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
372 | # | 666 | # |
373 | # Watchdog Cards | 667 | # Watchdog Cards |
374 | # | 668 | # |
375 | CONFIG_WATCHDOG=y | 669 | # CONFIG_WATCHDOG is not set |
376 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 670 | # CONFIG_HW_RANDOM is not set |
377 | |||
378 | # | ||
379 | # Watchdog Device Drivers | ||
380 | # | ||
381 | CONFIG_SOFT_WATCHDOG=y | ||
382 | # CONFIG_RTC is not set | 671 | # CONFIG_RTC is not set |
383 | # CONFIG_DTLK is not set | 672 | # CONFIG_DTLK is not set |
384 | # CONFIG_R3964 is not set | 673 | # CONFIG_R3964 is not set |
@@ -386,21 +675,57 @@ CONFIG_SOFT_WATCHDOG=y | |||
386 | # | 675 | # |
387 | # Ftape, the floppy tape device driver | 676 | # Ftape, the floppy tape device driver |
388 | # | 677 | # |
389 | |||
390 | # | ||
391 | # PCMCIA character devices | ||
392 | # | ||
393 | # CONFIG_SYNCLINK_CS is not set | ||
394 | # CONFIG_RAW_DRIVER is not set | 678 | # CONFIG_RAW_DRIVER is not set |
395 | 679 | ||
396 | # | 680 | # |
397 | # TPM devices | 681 | # TPM devices |
398 | # | 682 | # |
683 | # CONFIG_TCG_TPM is not set | ||
399 | 684 | ||
400 | # | 685 | # |
401 | # I2C support | 686 | # I2C support |
402 | # | 687 | # |
403 | # CONFIG_I2C is not set | 688 | CONFIG_I2C=m |
689 | CONFIG_I2C_CHARDEV=m | ||
690 | |||
691 | # | ||
692 | # I2C Algorithms | ||
693 | # | ||
694 | CONFIG_I2C_ALGOBIT=m | ||
695 | CONFIG_I2C_ALGOPCF=m | ||
696 | # CONFIG_I2C_ALGOPCA is not set | ||
697 | |||
698 | # | ||
699 | # I2C Hardware Bus support | ||
700 | # | ||
701 | CONFIG_I2C_ELEKTOR=m | ||
702 | CONFIG_I2C_ISA=m | ||
703 | # CONFIG_I2C_OCORES is not set | ||
704 | # CONFIG_I2C_PARPORT is not set | ||
705 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
706 | # CONFIG_I2C_STUB is not set | ||
707 | # CONFIG_I2C_PCA_ISA is not set | ||
708 | |||
709 | # | ||
710 | # Miscellaneous I2C Chip support | ||
711 | # | ||
712 | # CONFIG_SENSORS_DS1337 is not set | ||
713 | # CONFIG_SENSORS_DS1374 is not set | ||
714 | # CONFIG_SENSORS_EEPROM is not set | ||
715 | # CONFIG_SENSORS_PCF8574 is not set | ||
716 | # CONFIG_SENSORS_PCA9539 is not set | ||
717 | # CONFIG_SENSORS_PCF8591 is not set | ||
718 | # CONFIG_SENSORS_MAX6875 is not set | ||
719 | # CONFIG_I2C_DEBUG_CORE is not set | ||
720 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
721 | # CONFIG_I2C_DEBUG_BUS is not set | ||
722 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
723 | |||
724 | # | ||
725 | # SPI support | ||
726 | # | ||
727 | # CONFIG_SPI is not set | ||
728 | # CONFIG_SPI_MASTER is not set | ||
404 | 729 | ||
405 | # | 730 | # |
406 | # Dallas's 1-wire bus | 731 | # Dallas's 1-wire bus |
@@ -410,21 +735,89 @@ CONFIG_SOFT_WATCHDOG=y | |||
410 | # | 735 | # |
411 | # Hardware Monitoring support | 736 | # Hardware Monitoring support |
412 | # | 737 | # |
413 | # CONFIG_HWMON is not set | 738 | CONFIG_HWMON=y |
414 | # CONFIG_HWMON_VID is not set | 739 | CONFIG_HWMON_VID=m |
740 | # CONFIG_SENSORS_ABITUGURU is not set | ||
741 | CONFIG_SENSORS_ADM1021=m | ||
742 | CONFIG_SENSORS_ADM1025=m | ||
743 | # CONFIG_SENSORS_ADM1026 is not set | ||
744 | CONFIG_SENSORS_ADM1031=m | ||
745 | # CONFIG_SENSORS_ADM9240 is not set | ||
746 | CONFIG_SENSORS_ASB100=m | ||
747 | # CONFIG_SENSORS_ATXP1 is not set | ||
748 | CONFIG_SENSORS_DS1621=m | ||
749 | # CONFIG_SENSORS_F71805F is not set | ||
750 | CONFIG_SENSORS_FSCHER=m | ||
751 | # CONFIG_SENSORS_FSCPOS is not set | ||
752 | CONFIG_SENSORS_GL518SM=m | ||
753 | # CONFIG_SENSORS_GL520SM is not set | ||
754 | CONFIG_SENSORS_IT87=m | ||
755 | # CONFIG_SENSORS_LM63 is not set | ||
756 | CONFIG_SENSORS_LM75=m | ||
757 | CONFIG_SENSORS_LM77=m | ||
758 | CONFIG_SENSORS_LM78=m | ||
759 | CONFIG_SENSORS_LM80=m | ||
760 | CONFIG_SENSORS_LM83=m | ||
761 | CONFIG_SENSORS_LM85=m | ||
762 | # CONFIG_SENSORS_LM87 is not set | ||
763 | CONFIG_SENSORS_LM90=m | ||
764 | # CONFIG_SENSORS_LM92 is not set | ||
765 | CONFIG_SENSORS_MAX1619=m | ||
766 | # CONFIG_SENSORS_PC87360 is not set | ||
767 | CONFIG_SENSORS_SMSC47M1=m | ||
768 | # CONFIG_SENSORS_SMSC47M192 is not set | ||
769 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
770 | # CONFIG_SENSORS_VT1211 is not set | ||
771 | CONFIG_SENSORS_W83781D=m | ||
772 | # CONFIG_SENSORS_W83791D is not set | ||
773 | # CONFIG_SENSORS_W83792D is not set | ||
774 | CONFIG_SENSORS_W83L785TS=m | ||
775 | CONFIG_SENSORS_W83627HF=m | ||
776 | # CONFIG_SENSORS_W83627EHF is not set | ||
777 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
415 | 778 | ||
416 | # | 779 | # |
417 | # Misc devices | 780 | # Multimedia devices |
418 | # | 781 | # |
782 | CONFIG_VIDEO_DEV=m | ||
783 | CONFIG_VIDEO_V4L1=y | ||
784 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
785 | CONFIG_VIDEO_V4L2=y | ||
419 | 786 | ||
420 | # | 787 | # |
421 | # Multimedia Capabilities Port drivers | 788 | # Video Capture Adapters |
422 | # | 789 | # |
423 | 790 | ||
424 | # | 791 | # |
425 | # Multimedia devices | 792 | # Video Capture Adapters |
426 | # | 793 | # |
427 | # CONFIG_VIDEO_DEV is not set | 794 | # CONFIG_VIDEO_ADV_DEBUG is not set |
795 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
796 | # CONFIG_VIDEO_VIVI is not set | ||
797 | # CONFIG_VIDEO_PMS is not set | ||
798 | CONFIG_VIDEO_BWQCAM=m | ||
799 | CONFIG_VIDEO_CQCAM=m | ||
800 | # CONFIG_VIDEO_W9966 is not set | ||
801 | # CONFIG_VIDEO_CPIA is not set | ||
802 | # CONFIG_VIDEO_SAA5246A is not set | ||
803 | # CONFIG_VIDEO_SAA5249 is not set | ||
804 | # CONFIG_TUNER_3036 is not set | ||
805 | # CONFIG_VIDEO_M32R_AR is not set | ||
806 | |||
807 | # | ||
808 | # Radio Adapters | ||
809 | # | ||
810 | # CONFIG_RADIO_CADET is not set | ||
811 | # CONFIG_RADIO_RTRACK is not set | ||
812 | # CONFIG_RADIO_RTRACK2 is not set | ||
813 | # CONFIG_RADIO_AZTECH is not set | ||
814 | # CONFIG_RADIO_GEMTEK is not set | ||
815 | # CONFIG_RADIO_SF16FMI is not set | ||
816 | # CONFIG_RADIO_SF16FMR2 is not set | ||
817 | # CONFIG_RADIO_TERRATEC is not set | ||
818 | # CONFIG_RADIO_TRUST is not set | ||
819 | # CONFIG_RADIO_TYPHOON is not set | ||
820 | # CONFIG_RADIO_ZOLTRIX is not set | ||
428 | 821 | ||
429 | # | 822 | # |
430 | # Digital Video Broadcasting Devices | 823 | # Digital Video Broadcasting Devices |
@@ -434,9 +827,19 @@ CONFIG_SOFT_WATCHDOG=y | |||
434 | # | 827 | # |
435 | # Graphics support | 828 | # Graphics support |
436 | # | 829 | # |
830 | CONFIG_FIRMWARE_EDID=y | ||
437 | # CONFIG_FB is not set | 831 | # CONFIG_FB is not set |
438 | 832 | ||
439 | # | 833 | # |
834 | # Console display driver support | ||
835 | # | ||
836 | CONFIG_VGA_CONSOLE=y | ||
837 | # CONFIG_VGACON_SOFT_SCROLLBACK is not set | ||
838 | # CONFIG_MDA_CONSOLE is not set | ||
839 | CONFIG_DUMMY_CONSOLE=y | ||
840 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
841 | |||
842 | # | ||
440 | # Sound | 843 | # Sound |
441 | # | 844 | # |
442 | # CONFIG_SOUND is not set | 845 | # CONFIG_SOUND is not set |
@@ -446,6 +849,11 @@ CONFIG_SOFT_WATCHDOG=y | |||
446 | # | 849 | # |
447 | # CONFIG_USB_ARCH_HAS_HCD is not set | 850 | # CONFIG_USB_ARCH_HAS_HCD is not set |
448 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 851 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
852 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
853 | |||
854 | # | ||
855 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
856 | # | ||
449 | 857 | ||
450 | # | 858 | # |
451 | # USB Gadget Support | 859 | # USB Gadget Support |
@@ -458,33 +866,69 @@ CONFIG_SOFT_WATCHDOG=y | |||
458 | # CONFIG_MMC is not set | 866 | # CONFIG_MMC is not set |
459 | 867 | ||
460 | # | 868 | # |
869 | # LED devices | ||
870 | # | ||
871 | # CONFIG_NEW_LEDS is not set | ||
872 | |||
873 | # | ||
874 | # LED drivers | ||
875 | # | ||
876 | |||
877 | # | ||
878 | # LED Triggers | ||
879 | # | ||
880 | |||
881 | # | ||
461 | # InfiniBand support | 882 | # InfiniBand support |
462 | # | 883 | # |
463 | 884 | ||
464 | # | 885 | # |
465 | # SN Devices | 886 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) |
887 | # | ||
888 | |||
889 | # | ||
890 | # Real Time Clock | ||
891 | # | ||
892 | # CONFIG_RTC_CLASS is not set | ||
893 | |||
894 | # | ||
895 | # DMA Engine support | ||
896 | # | ||
897 | # CONFIG_DMA_ENGINE is not set | ||
898 | |||
899 | # | ||
900 | # DMA Clients | ||
901 | # | ||
902 | |||
903 | # | ||
904 | # DMA Devices | ||
466 | # | 905 | # |
467 | 906 | ||
468 | # | 907 | # |
469 | # File systems | 908 | # File systems |
470 | # | 909 | # |
471 | CONFIG_EXT2_FS=y | 910 | CONFIG_EXT2_FS=y |
472 | # CONFIG_EXT2_FS_XATTR is not set | 911 | CONFIG_EXT2_FS_XATTR=y |
473 | # CONFIG_EXT2_FS_XIP is not set | 912 | CONFIG_EXT2_FS_POSIX_ACL=y |
913 | CONFIG_EXT2_FS_SECURITY=y | ||
474 | CONFIG_EXT3_FS=y | 914 | CONFIG_EXT3_FS=y |
475 | CONFIG_EXT3_FS_XATTR=y | 915 | CONFIG_EXT3_FS_XATTR=y |
476 | CONFIG_EXT3_FS_POSIX_ACL=y | 916 | CONFIG_EXT3_FS_POSIX_ACL=y |
477 | # CONFIG_EXT3_FS_SECURITY is not set | 917 | CONFIG_EXT3_FS_SECURITY=y |
918 | # CONFIG_EXT4DEV_FS is not set | ||
478 | CONFIG_JBD=y | 919 | CONFIG_JBD=y |
479 | # CONFIG_JBD_DEBUG is not set | 920 | CONFIG_JBD_DEBUG=y |
480 | CONFIG_FS_MBCACHE=y | 921 | CONFIG_FS_MBCACHE=y |
481 | # CONFIG_REISERFS_FS is not set | 922 | # CONFIG_REISERFS_FS is not set |
482 | # CONFIG_JFS_FS is not set | 923 | # CONFIG_JFS_FS is not set |
483 | CONFIG_FS_POSIX_ACL=y | 924 | CONFIG_FS_POSIX_ACL=y |
484 | # CONFIG_XFS_FS is not set | 925 | # CONFIG_XFS_FS is not set |
926 | # CONFIG_GFS2_FS is not set | ||
927 | # CONFIG_OCFS2_FS is not set | ||
485 | # CONFIG_MINIX_FS is not set | 928 | # CONFIG_MINIX_FS is not set |
486 | # CONFIG_ROMFS_FS is not set | 929 | CONFIG_ROMFS_FS=y |
487 | # CONFIG_INOTIFY is not set | 930 | CONFIG_INOTIFY=y |
931 | CONFIG_INOTIFY_USER=y | ||
488 | # CONFIG_QUOTA is not set | 932 | # CONFIG_QUOTA is not set |
489 | CONFIG_DNOTIFY=y | 933 | CONFIG_DNOTIFY=y |
490 | # CONFIG_AUTOFS_FS is not set | 934 | # CONFIG_AUTOFS_FS is not set |
@@ -494,8 +938,11 @@ CONFIG_DNOTIFY=y | |||
494 | # | 938 | # |
495 | # CD-ROM/DVD Filesystems | 939 | # CD-ROM/DVD Filesystems |
496 | # | 940 | # |
497 | # CONFIG_ISO9660_FS is not set | 941 | CONFIG_ISO9660_FS=y |
498 | # CONFIG_UDF_FS is not set | 942 | CONFIG_JOLIET=y |
943 | # CONFIG_ZISOFS is not set | ||
944 | CONFIG_UDF_FS=m | ||
945 | CONFIG_UDF_NLS=y | ||
499 | 946 | ||
500 | # | 947 | # |
501 | # DOS/FAT/NT Filesystems | 948 | # DOS/FAT/NT Filesystems |
@@ -503,7 +950,7 @@ CONFIG_DNOTIFY=y | |||
503 | CONFIG_FAT_FS=y | 950 | CONFIG_FAT_FS=y |
504 | CONFIG_MSDOS_FS=y | 951 | CONFIG_MSDOS_FS=y |
505 | CONFIG_VFAT_FS=y | 952 | CONFIG_VFAT_FS=y |
506 | CONFIG_FAT_DEFAULT_CODEPAGE=932 | 953 | CONFIG_FAT_DEFAULT_CODEPAGE=437 |
507 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | 954 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" |
508 | # CONFIG_NTFS_FS is not set | 955 | # CONFIG_NTFS_FS is not set |
509 | 956 | ||
@@ -511,11 +958,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
511 | # Pseudo filesystems | 958 | # Pseudo filesystems |
512 | # | 959 | # |
513 | CONFIG_PROC_FS=y | 960 | CONFIG_PROC_FS=y |
961 | CONFIG_PROC_SYSCTL=y | ||
514 | CONFIG_SYSFS=y | 962 | CONFIG_SYSFS=y |
515 | CONFIG_TMPFS=y | 963 | CONFIG_TMPFS=y |
964 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
516 | # CONFIG_HUGETLB_PAGE is not set | 965 | # CONFIG_HUGETLB_PAGE is not set |
517 | CONFIG_RAMFS=y | 966 | CONFIG_RAMFS=y |
518 | # CONFIG_RELAYFS_FS is not set | 967 | CONFIG_CONFIGFS_FS=m |
519 | 968 | ||
520 | # | 969 | # |
521 | # Miscellaneous filesystems | 970 | # Miscellaneous filesystems |
@@ -527,7 +976,7 @@ CONFIG_RAMFS=y | |||
527 | # CONFIG_BEFS_FS is not set | 976 | # CONFIG_BEFS_FS is not set |
528 | # CONFIG_BFS_FS is not set | 977 | # CONFIG_BFS_FS is not set |
529 | # CONFIG_EFS_FS is not set | 978 | # CONFIG_EFS_FS is not set |
530 | CONFIG_CRAMFS=y | 979 | # CONFIG_CRAMFS is not set |
531 | # CONFIG_VXFS_FS is not set | 980 | # CONFIG_VXFS_FS is not set |
532 | # CONFIG_HPFS_FS is not set | 981 | # CONFIG_HPFS_FS is not set |
533 | # CONFIG_QNX4FS_FS is not set | 982 | # CONFIG_QNX4FS_FS is not set |
@@ -542,10 +991,14 @@ CONFIG_NFS_V3=y | |||
542 | # CONFIG_NFS_V3_ACL is not set | 991 | # CONFIG_NFS_V3_ACL is not set |
543 | # CONFIG_NFS_V4 is not set | 992 | # CONFIG_NFS_V4 is not set |
544 | # CONFIG_NFS_DIRECTIO is not set | 993 | # CONFIG_NFS_DIRECTIO is not set |
545 | # CONFIG_NFSD is not set | 994 | CONFIG_NFSD=m |
546 | CONFIG_ROOT_NFS=y | 995 | CONFIG_NFSD_V3=y |
996 | # CONFIG_NFSD_V3_ACL is not set | ||
997 | # CONFIG_NFSD_V4 is not set | ||
998 | # CONFIG_NFSD_TCP is not set | ||
547 | CONFIG_LOCKD=y | 999 | CONFIG_LOCKD=y |
548 | CONFIG_LOCKD_V4=y | 1000 | CONFIG_LOCKD_V4=y |
1001 | CONFIG_EXPORTFS=m | ||
549 | CONFIG_NFS_COMMON=y | 1002 | CONFIG_NFS_COMMON=y |
550 | CONFIG_SUNRPC=y | 1003 | CONFIG_SUNRPC=y |
551 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 1004 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
@@ -567,7 +1020,7 @@ CONFIG_MSDOS_PARTITION=y | |||
567 | # Native Language Support | 1020 | # Native Language Support |
568 | # | 1021 | # |
569 | CONFIG_NLS=y | 1022 | CONFIG_NLS=y |
570 | CONFIG_NLS_DEFAULT="iso8859-1" | 1023 | CONFIG_NLS_DEFAULT="cp437" |
571 | CONFIG_NLS_CODEPAGE_437=y | 1024 | CONFIG_NLS_CODEPAGE_437=y |
572 | # CONFIG_NLS_CODEPAGE_737 is not set | 1025 | # CONFIG_NLS_CODEPAGE_737 is not set |
573 | # CONFIG_NLS_CODEPAGE_775 is not set | 1026 | # CONFIG_NLS_CODEPAGE_775 is not set |
@@ -592,7 +1045,7 @@ CONFIG_NLS_CODEPAGE_932=y | |||
592 | # CONFIG_NLS_CODEPAGE_1250 is not set | 1045 | # CONFIG_NLS_CODEPAGE_1250 is not set |
593 | # CONFIG_NLS_CODEPAGE_1251 is not set | 1046 | # CONFIG_NLS_CODEPAGE_1251 is not set |
594 | # CONFIG_NLS_ASCII is not set | 1047 | # CONFIG_NLS_ASCII is not set |
595 | # CONFIG_NLS_ISO8859_1 is not set | 1048 | CONFIG_NLS_ISO8859_1=y |
596 | # CONFIG_NLS_ISO8859_2 is not set | 1049 | # CONFIG_NLS_ISO8859_2 is not set |
597 | # CONFIG_NLS_ISO8859_3 is not set | 1050 | # CONFIG_NLS_ISO8859_3 is not set |
598 | # CONFIG_NLS_ISO8859_4 is not set | 1051 | # CONFIG_NLS_ISO8859_4 is not set |
@@ -605,32 +1058,28 @@ CONFIG_NLS_CODEPAGE_932=y | |||
605 | # CONFIG_NLS_ISO8859_15 is not set | 1058 | # CONFIG_NLS_ISO8859_15 is not set |
606 | # CONFIG_NLS_KOI8_R is not set | 1059 | # CONFIG_NLS_KOI8_R is not set |
607 | # CONFIG_NLS_KOI8_U is not set | 1060 | # CONFIG_NLS_KOI8_U is not set |
608 | CONFIG_NLS_UTF8=y | 1061 | # CONFIG_NLS_UTF8 is not set |
609 | 1062 | ||
610 | # | 1063 | # |
611 | # Profiling support | 1064 | # Profiling support |
612 | # | 1065 | # |
613 | # CONFIG_PROFILING is not set | 1066 | CONFIG_PROFILING=y |
1067 | CONFIG_OPROFILE=m | ||
614 | 1068 | ||
615 | # | 1069 | # |
616 | # Kernel hacking | 1070 | # Kernel hacking |
617 | # | 1071 | # |
618 | # CONFIG_PRINTK_TIME is not set | 1072 | # CONFIG_PRINTK_TIME is not set |
619 | CONFIG_DEBUG_KERNEL=y | 1073 | CONFIG_ENABLE_MUST_CHECK=y |
620 | CONFIG_MAGIC_SYSRQ=y | 1074 | # CONFIG_MAGIC_SYSRQ is not set |
1075 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1076 | # CONFIG_DEBUG_KERNEL is not set | ||
621 | CONFIG_LOG_BUF_SHIFT=14 | 1077 | CONFIG_LOG_BUF_SHIFT=14 |
622 | CONFIG_DETECT_SOFTLOCKUP=y | 1078 | CONFIG_DEBUG_BUGVERBOSE=y |
623 | # CONFIG_SCHEDSTATS is not set | ||
624 | # CONFIG_DEBUG_SLAB is not set | ||
625 | # CONFIG_DEBUG_SPINLOCK is not set | ||
626 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
627 | # CONFIG_DEBUG_KOBJECT is not set | ||
628 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
629 | CONFIG_DEBUG_INFO=y | ||
630 | # CONFIG_DEBUG_FS is not set | 1079 | # CONFIG_DEBUG_FS is not set |
631 | # CONFIG_FRAME_POINTER is not set | 1080 | # CONFIG_FRAME_POINTER is not set |
632 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 1081 | # CONFIG_UNWIND_INFO is not set |
633 | # CONFIG_DEBUG_STACK_USAGE is not set | 1082 | # CONFIG_HEADERS_CHECK is not set |
634 | 1083 | ||
635 | # | 1084 | # |
636 | # Security options | 1085 | # Security options |
@@ -641,7 +1090,38 @@ CONFIG_DEBUG_INFO=y | |||
641 | # | 1090 | # |
642 | # Cryptographic options | 1091 | # Cryptographic options |
643 | # | 1092 | # |
644 | # CONFIG_CRYPTO is not set | 1093 | CONFIG_CRYPTO=y |
1094 | CONFIG_CRYPTO_ALGAPI=y | ||
1095 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1096 | CONFIG_CRYPTO_HASH=y | ||
1097 | CONFIG_CRYPTO_MANAGER=y | ||
1098 | CONFIG_CRYPTO_HMAC=y | ||
1099 | CONFIG_CRYPTO_NULL=m | ||
1100 | CONFIG_CRYPTO_MD4=m | ||
1101 | CONFIG_CRYPTO_MD5=m | ||
1102 | CONFIG_CRYPTO_SHA1=m | ||
1103 | CONFIG_CRYPTO_SHA256=m | ||
1104 | CONFIG_CRYPTO_SHA512=m | ||
1105 | CONFIG_CRYPTO_WP512=m | ||
1106 | # CONFIG_CRYPTO_TGR192 is not set | ||
1107 | CONFIG_CRYPTO_ECB=m | ||
1108 | CONFIG_CRYPTO_CBC=m | ||
1109 | CONFIG_CRYPTO_DES=m | ||
1110 | CONFIG_CRYPTO_BLOWFISH=m | ||
1111 | CONFIG_CRYPTO_TWOFISH=m | ||
1112 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1113 | CONFIG_CRYPTO_SERPENT=m | ||
1114 | CONFIG_CRYPTO_AES=m | ||
1115 | # CONFIG_CRYPTO_CAST5 is not set | ||
1116 | # CONFIG_CRYPTO_CAST6 is not set | ||
1117 | # CONFIG_CRYPTO_TEA is not set | ||
1118 | # CONFIG_CRYPTO_ARC4 is not set | ||
1119 | # CONFIG_CRYPTO_KHAZAD is not set | ||
1120 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1121 | # CONFIG_CRYPTO_DEFLATE is not set | ||
1122 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1123 | CONFIG_CRYPTO_CRC32C=m | ||
1124 | # CONFIG_CRYPTO_TEST is not set | ||
645 | 1125 | ||
646 | # | 1126 | # |
647 | # Hardware crypto devices | 1127 | # Hardware crypto devices |
@@ -650,8 +1130,12 @@ CONFIG_DEBUG_INFO=y | |||
650 | # | 1130 | # |
651 | # Library routines | 1131 | # Library routines |
652 | # | 1132 | # |
653 | # CONFIG_CRC_CCITT is not set | 1133 | CONFIG_CRC_CCITT=m |
654 | # CONFIG_CRC16 is not set | 1134 | CONFIG_CRC16=m |
655 | CONFIG_CRC32=y | 1135 | CONFIG_CRC32=y |
656 | CONFIG_LIBCRC32C=y | 1136 | CONFIG_LIBCRC32C=m |
657 | CONFIG_ZLIB_INFLATE=y | 1137 | CONFIG_TEXTSEARCH=y |
1138 | CONFIG_TEXTSEARCH_KMP=m | ||
1139 | CONFIG_TEXTSEARCH_BM=m | ||
1140 | CONFIG_TEXTSEARCH_FSM=m | ||
1141 | CONFIG_PLIST=y | ||
diff --git a/arch/m32r/m32700ut/defconfig.m32700ut.smp b/arch/m32r/m32700ut/defconfig.m32700ut.smp index 3e607d90b5f4..13579917afef 100644 --- a/arch/m32r/m32700ut/defconfig.m32700ut.smp +++ b/arch/m32r/m32700ut/defconfig.m32700ut.smp | |||
@@ -1,19 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Fri Jun 3 16:20:58 2005 | 4 | # Tue Dec 12 17:52:38 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_LOCK_KERNEL=y | 16 | CONFIG_LOCK_KERNEL=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 17 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | 18 | ||
@@ -21,33 +20,40 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
21 | # General setup | 20 | # General setup |
22 | # | 21 | # |
23 | CONFIG_LOCALVERSION="" | 22 | CONFIG_LOCALVERSION="" |
23 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 24 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 25 | CONFIG_SYSVIPC=y |
26 | # CONFIG_IPC_NS is not set | ||
26 | # CONFIG_POSIX_MQUEUE is not set | 27 | # CONFIG_POSIX_MQUEUE is not set |
27 | CONFIG_BSD_PROCESS_ACCT=y | 28 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 29 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 30 | # CONFIG_TASKSTATS is not set |
31 | # CONFIG_UTS_NS is not set | ||
30 | # CONFIG_AUDIT is not set | 32 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | CONFIG_IKCONFIG=y | 33 | CONFIG_IKCONFIG=y |
34 | # CONFIG_IKCONFIG_PROC is not set | 34 | CONFIG_IKCONFIG_PROC=y |
35 | # CONFIG_CPUSETS is not set | 35 | # CONFIG_CPUSETS is not set |
36 | CONFIG_SYSFS_DEPRECATED=y | ||
37 | # CONFIG_RELAY is not set | ||
38 | CONFIG_INITRAMFS_SOURCE="" | ||
39 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
40 | CONFIG_SYSCTL=y | ||
36 | CONFIG_EMBEDDED=y | 41 | CONFIG_EMBEDDED=y |
42 | CONFIG_SYSCTL_SYSCALL=y | ||
37 | # CONFIG_KALLSYMS is not set | 43 | # CONFIG_KALLSYMS is not set |
44 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 45 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 46 | CONFIG_BUG=y |
47 | CONFIG_ELF_CORE=y | ||
40 | CONFIG_BASE_FULL=y | 48 | CONFIG_BASE_FULL=y |
41 | # CONFIG_FUTEX is not set | 49 | # CONFIG_FUTEX is not set |
42 | # CONFIG_EPOLL is not set | 50 | # CONFIG_EPOLL is not set |
43 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
44 | CONFIG_SHMEM=y | 51 | CONFIG_SHMEM=y |
45 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 52 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LABELS=0 | 53 | CONFIG_VM_EVENT_COUNTERS=y |
47 | CONFIG_CC_ALIGN_LOOPS=0 | ||
48 | CONFIG_CC_ALIGN_JUMPS=0 | ||
49 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
50 | CONFIG_BASE_SMALL=0 | 55 | CONFIG_BASE_SMALL=0 |
56 | # CONFIG_SLOB is not set | ||
51 | 57 | ||
52 | # | 58 | # |
53 | # Loadable module support | 59 | # Loadable module support |
@@ -55,13 +61,31 @@ CONFIG_BASE_SMALL=0 | |||
55 | CONFIG_MODULES=y | 61 | CONFIG_MODULES=y |
56 | CONFIG_MODULE_UNLOAD=y | 62 | CONFIG_MODULE_UNLOAD=y |
57 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 63 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
58 | CONFIG_OBSOLETE_MODPARM=y | ||
59 | # CONFIG_MODVERSIONS is not set | 64 | # CONFIG_MODVERSIONS is not set |
60 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 65 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
61 | CONFIG_KMOD=y | 66 | CONFIG_KMOD=y |
62 | CONFIG_STOP_MACHINE=y | 67 | CONFIG_STOP_MACHINE=y |
63 | 68 | ||
64 | # | 69 | # |
70 | # Block layer | ||
71 | # | ||
72 | CONFIG_BLOCK=y | ||
73 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
74 | |||
75 | # | ||
76 | # IO Schedulers | ||
77 | # | ||
78 | CONFIG_IOSCHED_NOOP=y | ||
79 | # CONFIG_IOSCHED_AS is not set | ||
80 | CONFIG_IOSCHED_DEADLINE=y | ||
81 | CONFIG_IOSCHED_CFQ=y | ||
82 | # CONFIG_DEFAULT_AS is not set | ||
83 | # CONFIG_DEFAULT_DEADLINE is not set | ||
84 | CONFIG_DEFAULT_CFQ=y | ||
85 | # CONFIG_DEFAULT_NOOP is not set | ||
86 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
87 | |||
88 | # | ||
65 | # Processor type and features | 89 | # Processor type and features |
66 | # | 90 | # |
67 | # CONFIG_PLAT_MAPPI is not set | 91 | # CONFIG_PLAT_MAPPI is not set |
@@ -71,8 +95,10 @@ CONFIG_PLAT_M32700UT=y | |||
71 | # CONFIG_PLAT_OAKS32R is not set | 95 | # CONFIG_PLAT_OAKS32R is not set |
72 | # CONFIG_PLAT_MAPPI2 is not set | 96 | # CONFIG_PLAT_MAPPI2 is not set |
73 | # CONFIG_PLAT_MAPPI3 is not set | 97 | # CONFIG_PLAT_MAPPI3 is not set |
98 | # CONFIG_PLAT_M32104UT is not set | ||
74 | CONFIG_CHIP_M32700=y | 99 | CONFIG_CHIP_M32700=y |
75 | # CONFIG_CHIP_M32102 is not set | 100 | # CONFIG_CHIP_M32102 is not set |
101 | # CONFIG_CHIP_M32104 is not set | ||
76 | # CONFIG_CHIP_VDEC2 is not set | 102 | # CONFIG_CHIP_VDEC2 is not set |
77 | # CONFIG_CHIP_OPSP is not set | 103 | # CONFIG_CHIP_OPSP is not set |
78 | CONFIG_MMU=y | 104 | CONFIG_MMU=y |
@@ -86,37 +112,39 @@ CONFIG_TIMER_DIVIDE=128 | |||
86 | CONFIG_MEMORY_START=0x08000000 | 112 | CONFIG_MEMORY_START=0x08000000 |
87 | CONFIG_MEMORY_SIZE=0x01000000 | 113 | CONFIG_MEMORY_SIZE=0x01000000 |
88 | CONFIG_NOHIGHMEM=y | 114 | CONFIG_NOHIGHMEM=y |
89 | # CONFIG_DISCONTIGMEM is not set | 115 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
116 | CONFIG_SELECT_MEMORY_MODEL=y | ||
117 | # CONFIG_FLATMEM_MANUAL is not set | ||
118 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
119 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
120 | CONFIG_DISCONTIGMEM=y | ||
121 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
122 | CONFIG_NEED_MULTIPLE_NODES=y | ||
123 | # CONFIG_SPARSEMEM_STATIC is not set | ||
124 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
125 | # CONFIG_RESOURCES_64BIT is not set | ||
126 | CONFIG_IRAM_START=0x00f00000 | ||
127 | CONFIG_IRAM_SIZE=0x00080000 | ||
90 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 128 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
91 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 129 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
130 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
131 | CONFIG_GENERIC_HWEIGHT=y | ||
92 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 132 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
93 | CONFIG_PREEMPT=y | 133 | CONFIG_PREEMPT=y |
94 | # CONFIG_HAVE_DEC_LOCK is not set | ||
95 | CONFIG_SMP=y | 134 | CONFIG_SMP=y |
96 | CONFIG_CHIP_M32700_TS1=y | 135 | # CONFIG_CHIP_M32700_TS1 is not set |
97 | CONFIG_NR_CPUS=2 | 136 | CONFIG_NR_CPUS=2 |
98 | # CONFIG_NUMA is not set | 137 | CONFIG_NODES_SHIFT=1 |
99 | 138 | ||
100 | # | 139 | # |
101 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 140 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
102 | # | 141 | # |
103 | # CONFIG_PCI is not set | ||
104 | # CONFIG_ISA is not set | 142 | # CONFIG_ISA is not set |
105 | 143 | ||
106 | # | 144 | # |
107 | # PCCARD (PCMCIA/CardBus) support | 145 | # PCCARD (PCMCIA/CardBus) support |
108 | # | 146 | # |
109 | CONFIG_PCCARD=y | 147 | # CONFIG_PCCARD is not set |
110 | # CONFIG_PCMCIA_DEBUG is not set | ||
111 | CONFIG_PCMCIA=y | ||
112 | |||
113 | # | ||
114 | # PC-card bridges | ||
115 | # | ||
116 | # CONFIG_TCIC is not set | ||
117 | # CONFIG_M32R_PCC is not set | ||
118 | CONFIG_M32R_CFC=y | ||
119 | CONFIG_M32R_CFC_NUM=1 | ||
120 | 148 | ||
121 | # | 149 | # |
122 | # PCI Hotplug Support | 150 | # PCI Hotplug Support |
@@ -129,6 +157,94 @@ CONFIG_BINFMT_ELF=y | |||
129 | # CONFIG_BINFMT_MISC is not set | 157 | # CONFIG_BINFMT_MISC is not set |
130 | 158 | ||
131 | # | 159 | # |
160 | # Networking | ||
161 | # | ||
162 | CONFIG_NET=y | ||
163 | |||
164 | # | ||
165 | # Networking options | ||
166 | # | ||
167 | # CONFIG_NETDEBUG is not set | ||
168 | CONFIG_PACKET=y | ||
169 | # CONFIG_PACKET_MMAP is not set | ||
170 | CONFIG_UNIX=y | ||
171 | CONFIG_XFRM=y | ||
172 | # CONFIG_XFRM_USER is not set | ||
173 | # CONFIG_XFRM_SUB_POLICY is not set | ||
174 | # CONFIG_NET_KEY is not set | ||
175 | CONFIG_INET=y | ||
176 | # CONFIG_IP_MULTICAST is not set | ||
177 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
178 | CONFIG_IP_FIB_HASH=y | ||
179 | CONFIG_IP_PNP=y | ||
180 | CONFIG_IP_PNP_DHCP=y | ||
181 | # CONFIG_IP_PNP_BOOTP is not set | ||
182 | # CONFIG_IP_PNP_RARP is not set | ||
183 | # CONFIG_NET_IPIP is not set | ||
184 | # CONFIG_NET_IPGRE is not set | ||
185 | # CONFIG_ARPD is not set | ||
186 | # CONFIG_SYN_COOKIES is not set | ||
187 | # CONFIG_INET_AH is not set | ||
188 | # CONFIG_INET_ESP is not set | ||
189 | # CONFIG_INET_IPCOMP is not set | ||
190 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
191 | # CONFIG_INET_TUNNEL is not set | ||
192 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
193 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
194 | CONFIG_INET_XFRM_MODE_BEET=y | ||
195 | CONFIG_INET_DIAG=y | ||
196 | CONFIG_INET_TCP_DIAG=y | ||
197 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
198 | CONFIG_TCP_CONG_CUBIC=y | ||
199 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
200 | # CONFIG_TCP_MD5SIG is not set | ||
201 | # CONFIG_IPV6 is not set | ||
202 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
203 | # CONFIG_INET6_TUNNEL is not set | ||
204 | # CONFIG_NETWORK_SECMARK is not set | ||
205 | # CONFIG_NETFILTER is not set | ||
206 | |||
207 | # | ||
208 | # DCCP Configuration (EXPERIMENTAL) | ||
209 | # | ||
210 | # CONFIG_IP_DCCP is not set | ||
211 | |||
212 | # | ||
213 | # SCTP Configuration (EXPERIMENTAL) | ||
214 | # | ||
215 | # CONFIG_IP_SCTP is not set | ||
216 | |||
217 | # | ||
218 | # TIPC Configuration (EXPERIMENTAL) | ||
219 | # | ||
220 | # CONFIG_TIPC is not set | ||
221 | # CONFIG_ATM is not set | ||
222 | # CONFIG_BRIDGE is not set | ||
223 | # CONFIG_VLAN_8021Q is not set | ||
224 | # CONFIG_DECNET is not set | ||
225 | # CONFIG_LLC2 is not set | ||
226 | # CONFIG_IPX is not set | ||
227 | # CONFIG_ATALK is not set | ||
228 | # CONFIG_X25 is not set | ||
229 | # CONFIG_LAPB is not set | ||
230 | # CONFIG_ECONET is not set | ||
231 | # CONFIG_WAN_ROUTER is not set | ||
232 | |||
233 | # | ||
234 | # QoS and/or fair queueing | ||
235 | # | ||
236 | # CONFIG_NET_SCHED is not set | ||
237 | |||
238 | # | ||
239 | # Network testing | ||
240 | # | ||
241 | # CONFIG_NET_PKTGEN is not set | ||
242 | # CONFIG_HAMRADIO is not set | ||
243 | # CONFIG_IRDA is not set | ||
244 | # CONFIG_BT is not set | ||
245 | # CONFIG_IEEE80211 is not set | ||
246 | |||
247 | # | ||
132 | # Device Drivers | 248 | # Device Drivers |
133 | # | 249 | # |
134 | 250 | ||
@@ -137,12 +253,100 @@ CONFIG_BINFMT_ELF=y | |||
137 | # | 253 | # |
138 | CONFIG_STANDALONE=y | 254 | CONFIG_STANDALONE=y |
139 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 255 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
140 | # CONFIG_FW_LOADER is not set | 256 | CONFIG_FW_LOADER=y |
257 | # CONFIG_SYS_HYPERVISOR is not set | ||
258 | |||
259 | # | ||
260 | # Connector - unified userspace <-> kernelspace linker | ||
261 | # | ||
262 | # CONFIG_CONNECTOR is not set | ||
141 | 263 | ||
142 | # | 264 | # |
143 | # Memory Technology Devices (MTD) | 265 | # Memory Technology Devices (MTD) |
144 | # | 266 | # |
145 | # CONFIG_MTD is not set | 267 | CONFIG_MTD=y |
268 | # CONFIG_MTD_DEBUG is not set | ||
269 | # CONFIG_MTD_CONCAT is not set | ||
270 | CONFIG_MTD_PARTITIONS=y | ||
271 | CONFIG_MTD_REDBOOT_PARTS=y | ||
272 | CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 | ||
273 | # CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set | ||
274 | # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set | ||
275 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
276 | |||
277 | # | ||
278 | # User Modules And Translation Layers | ||
279 | # | ||
280 | # CONFIG_MTD_CHAR is not set | ||
281 | CONFIG_MTD_BLOCK=y | ||
282 | # CONFIG_FTL is not set | ||
283 | # CONFIG_NFTL is not set | ||
284 | # CONFIG_INFTL is not set | ||
285 | # CONFIG_RFD_FTL is not set | ||
286 | # CONFIG_SSFDC is not set | ||
287 | |||
288 | # | ||
289 | # RAM/ROM/Flash chip drivers | ||
290 | # | ||
291 | CONFIG_MTD_CFI=m | ||
292 | CONFIG_MTD_JEDECPROBE=m | ||
293 | CONFIG_MTD_GEN_PROBE=m | ||
294 | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
295 | # CONFIG_MTD_CFI_NOSWAP is not set | ||
296 | CONFIG_MTD_CFI_BE_BYTE_SWAP=y | ||
297 | # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set | ||
298 | CONFIG_MTD_CFI_GEOMETRY=y | ||
299 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
300 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
301 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
302 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
303 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
304 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
305 | CONFIG_MTD_CFI_I1=y | ||
306 | # CONFIG_MTD_CFI_I2 is not set | ||
307 | # CONFIG_MTD_CFI_I4 is not set | ||
308 | # CONFIG_MTD_CFI_I8 is not set | ||
309 | # CONFIG_MTD_OTP is not set | ||
310 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
311 | CONFIG_MTD_CFI_AMDSTD=m | ||
312 | # CONFIG_MTD_CFI_STAA is not set | ||
313 | CONFIG_MTD_CFI_UTIL=m | ||
314 | # CONFIG_MTD_RAM is not set | ||
315 | # CONFIG_MTD_ROM is not set | ||
316 | # CONFIG_MTD_ABSENT is not set | ||
317 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
318 | |||
319 | # | ||
320 | # Mapping drivers for chip access | ||
321 | # | ||
322 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
323 | # CONFIG_MTD_PHYSMAP is not set | ||
324 | # CONFIG_MTD_PLATRAM is not set | ||
325 | |||
326 | # | ||
327 | # Self-contained MTD device drivers | ||
328 | # | ||
329 | # CONFIG_MTD_SLRAM is not set | ||
330 | # CONFIG_MTD_PHRAM is not set | ||
331 | # CONFIG_MTD_MTDRAM is not set | ||
332 | # CONFIG_MTD_BLOCK2MTD is not set | ||
333 | |||
334 | # | ||
335 | # Disk-On-Chip Device Drivers | ||
336 | # | ||
337 | # CONFIG_MTD_DOC2000 is not set | ||
338 | # CONFIG_MTD_DOC2001 is not set | ||
339 | # CONFIG_MTD_DOC2001PLUS is not set | ||
340 | |||
341 | # | ||
342 | # NAND Flash Device Drivers | ||
343 | # | ||
344 | # CONFIG_MTD_NAND is not set | ||
345 | |||
346 | # | ||
347 | # OneNAND Flash Device Drivers | ||
348 | # | ||
349 | # CONFIG_MTD_ONENAND is not set | ||
146 | 350 | ||
147 | # | 351 | # |
148 | # Parallel port support | 352 | # Parallel port support |
@@ -156,7 +360,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
156 | # | 360 | # |
157 | # Block devices | 361 | # Block devices |
158 | # | 362 | # |
159 | # CONFIG_BLK_DEV_FD is not set | ||
160 | # CONFIG_BLK_DEV_COW_COMMON is not set | 363 | # CONFIG_BLK_DEV_COW_COMMON is not set |
161 | CONFIG_BLK_DEV_LOOP=y | 364 | CONFIG_BLK_DEV_LOOP=y |
162 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 365 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -164,23 +367,21 @@ CONFIG_BLK_DEV_NBD=y | |||
164 | CONFIG_BLK_DEV_RAM=y | 367 | CONFIG_BLK_DEV_RAM=y |
165 | CONFIG_BLK_DEV_RAM_COUNT=16 | 368 | CONFIG_BLK_DEV_RAM_COUNT=16 |
166 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 369 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
370 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
167 | # CONFIG_BLK_DEV_INITRD is not set | 371 | # CONFIG_BLK_DEV_INITRD is not set |
168 | CONFIG_INITRAMFS_SOURCE="" | ||
169 | # CONFIG_CDROM_PKTCDVD is not set | 372 | # CONFIG_CDROM_PKTCDVD is not set |
373 | CONFIG_ATA_OVER_ETH=m | ||
170 | 374 | ||
171 | # | 375 | # |
172 | # IO Schedulers | 376 | # Misc devices |
173 | # | 377 | # |
174 | CONFIG_IOSCHED_NOOP=y | 378 | # CONFIG_TIFM_CORE is not set |
175 | # CONFIG_IOSCHED_AS is not set | ||
176 | CONFIG_IOSCHED_DEADLINE=y | ||
177 | CONFIG_IOSCHED_CFQ=y | ||
178 | # CONFIG_ATA_OVER_ETH is not set | ||
179 | 379 | ||
180 | # | 380 | # |
181 | # ATA/ATAPI/MFM/RLL support | 381 | # ATA/ATAPI/MFM/RLL support |
182 | # | 382 | # |
183 | CONFIG_IDE=y | 383 | CONFIG_IDE=y |
384 | CONFIG_IDE_MAX_HWIFS=4 | ||
184 | CONFIG_BLK_DEV_IDE=y | 385 | CONFIG_BLK_DEV_IDE=y |
185 | 386 | ||
186 | # | 387 | # |
@@ -189,7 +390,6 @@ CONFIG_BLK_DEV_IDE=y | |||
189 | # CONFIG_BLK_DEV_IDE_SATA is not set | 390 | # CONFIG_BLK_DEV_IDE_SATA is not set |
190 | CONFIG_BLK_DEV_IDEDISK=y | 391 | CONFIG_BLK_DEV_IDEDISK=y |
191 | # CONFIG_IDEDISK_MULTI_MODE is not set | 392 | # CONFIG_IDEDISK_MULTI_MODE is not set |
192 | CONFIG_BLK_DEV_IDECS=y | ||
193 | CONFIG_BLK_DEV_IDECD=m | 393 | CONFIG_BLK_DEV_IDECD=m |
194 | # CONFIG_BLK_DEV_IDETAPE is not set | 394 | # CONFIG_BLK_DEV_IDETAPE is not set |
195 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 395 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
@@ -208,7 +408,9 @@ CONFIG_IDE_GENERIC=y | |||
208 | # | 408 | # |
209 | # SCSI device support | 409 | # SCSI device support |
210 | # | 410 | # |
411 | # CONFIG_RAID_ATTRS is not set | ||
211 | CONFIG_SCSI=m | 412 | CONFIG_SCSI=m |
413 | # CONFIG_SCSI_NETLINK is not set | ||
212 | CONFIG_SCSI_PROC_FS=y | 414 | CONFIG_SCSI_PROC_FS=y |
213 | 415 | ||
214 | # | 416 | # |
@@ -220,6 +422,7 @@ CONFIG_BLK_DEV_SD=m | |||
220 | CONFIG_BLK_DEV_SR=m | 422 | CONFIG_BLK_DEV_SR=m |
221 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 423 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
222 | CONFIG_CHR_DEV_SG=m | 424 | CONFIG_CHR_DEV_SG=m |
425 | # CONFIG_CHR_DEV_SCH is not set | ||
223 | 426 | ||
224 | # | 427 | # |
225 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 428 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -229,26 +432,23 @@ CONFIG_SCSI_MULTI_LUN=y | |||
229 | # CONFIG_SCSI_LOGGING is not set | 432 | # CONFIG_SCSI_LOGGING is not set |
230 | 433 | ||
231 | # | 434 | # |
232 | # SCSI Transport Attributes | 435 | # SCSI Transports |
233 | # | 436 | # |
234 | # CONFIG_SCSI_SPI_ATTRS is not set | 437 | # CONFIG_SCSI_SPI_ATTRS is not set |
235 | # CONFIG_SCSI_FC_ATTRS is not set | 438 | # CONFIG_SCSI_FC_ATTRS is not set |
236 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 439 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
440 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
441 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
237 | 442 | ||
238 | # | 443 | # |
239 | # SCSI low-level drivers | 444 | # SCSI low-level drivers |
240 | # | 445 | # |
241 | # CONFIG_SCSI_SATA is not set | 446 | # CONFIG_ISCSI_TCP is not set |
242 | # CONFIG_SCSI_DEBUG is not set | 447 | # CONFIG_SCSI_DEBUG is not set |
243 | 448 | ||
244 | # | 449 | # |
245 | # PCMCIA SCSI adapter support | 450 | # Serial ATA (prod) and Parallel ATA (experimental) drivers |
246 | # | 451 | # |
247 | # CONFIG_PCMCIA_AHA152X is not set | ||
248 | # CONFIG_PCMCIA_FDOMAIN is not set | ||
249 | # CONFIG_PCMCIA_NINJA_SCSI is not set | ||
250 | # CONFIG_PCMCIA_QLOGIC is not set | ||
251 | # CONFIG_PCMCIA_SYM53C500 is not set | ||
252 | 452 | ||
253 | # | 453 | # |
254 | # Multi-device support (RAID and LVM) | 454 | # Multi-device support (RAID and LVM) |
@@ -258,6 +458,7 @@ CONFIG_SCSI_MULTI_LUN=y | |||
258 | # | 458 | # |
259 | # Fusion MPT device support | 459 | # Fusion MPT device support |
260 | # | 460 | # |
461 | # CONFIG_FUSION is not set | ||
261 | 462 | ||
262 | # | 463 | # |
263 | # IEEE 1394 (FireWire) support | 464 | # IEEE 1394 (FireWire) support |
@@ -268,69 +469,8 @@ CONFIG_SCSI_MULTI_LUN=y | |||
268 | # | 469 | # |
269 | 470 | ||
270 | # | 471 | # |
271 | # Networking support | 472 | # Network device support |
272 | # | ||
273 | CONFIG_NET=y | ||
274 | |||
275 | # | ||
276 | # Networking options | ||
277 | # | ||
278 | CONFIG_PACKET=y | ||
279 | # CONFIG_PACKET_MMAP is not set | ||
280 | CONFIG_UNIX=y | ||
281 | # CONFIG_NET_KEY is not set | ||
282 | CONFIG_INET=y | ||
283 | # CONFIG_IP_MULTICAST is not set | ||
284 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
285 | CONFIG_IP_PNP=y | ||
286 | CONFIG_IP_PNP_DHCP=y | ||
287 | # CONFIG_IP_PNP_BOOTP is not set | ||
288 | # CONFIG_IP_PNP_RARP is not set | ||
289 | # CONFIG_NET_IPIP is not set | ||
290 | # CONFIG_NET_IPGRE is not set | ||
291 | # CONFIG_ARPD is not set | ||
292 | # CONFIG_SYN_COOKIES is not set | ||
293 | # CONFIG_INET_AH is not set | ||
294 | # CONFIG_INET_ESP is not set | ||
295 | # CONFIG_INET_IPCOMP is not set | ||
296 | # CONFIG_INET_TUNNEL is not set | ||
297 | CONFIG_IP_TCPDIAG=y | ||
298 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
299 | # CONFIG_IPV6 is not set | ||
300 | # CONFIG_NETFILTER is not set | ||
301 | |||
302 | # | ||
303 | # SCTP Configuration (EXPERIMENTAL) | ||
304 | # | ||
305 | # CONFIG_IP_SCTP is not set | ||
306 | # CONFIG_ATM is not set | ||
307 | # CONFIG_BRIDGE is not set | ||
308 | # CONFIG_VLAN_8021Q is not set | ||
309 | # CONFIG_DECNET is not set | ||
310 | # CONFIG_LLC2 is not set | ||
311 | # CONFIG_IPX is not set | ||
312 | # CONFIG_ATALK is not set | ||
313 | # CONFIG_X25 is not set | ||
314 | # CONFIG_LAPB is not set | ||
315 | # CONFIG_NET_DIVERT is not set | ||
316 | # CONFIG_ECONET is not set | ||
317 | # CONFIG_WAN_ROUTER is not set | ||
318 | |||
319 | # | ||
320 | # QoS and/or fair queueing | ||
321 | # | ||
322 | # CONFIG_NET_SCHED is not set | ||
323 | # CONFIG_NET_CLS_ROUTE is not set | ||
324 | |||
325 | # | ||
326 | # Network testing | ||
327 | # | 473 | # |
328 | # CONFIG_NET_PKTGEN is not set | ||
329 | # CONFIG_NETPOLL is not set | ||
330 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
331 | # CONFIG_HAMRADIO is not set | ||
332 | # CONFIG_IRDA is not set | ||
333 | # CONFIG_BT is not set | ||
334 | CONFIG_NETDEVICES=y | 474 | CONFIG_NETDEVICES=y |
335 | # CONFIG_DUMMY is not set | 475 | # CONFIG_DUMMY is not set |
336 | # CONFIG_BONDING is not set | 476 | # CONFIG_BONDING is not set |
@@ -338,6 +478,11 @@ CONFIG_NETDEVICES=y | |||
338 | # CONFIG_TUN is not set | 478 | # CONFIG_TUN is not set |
339 | 479 | ||
340 | # | 480 | # |
481 | # PHY device support | ||
482 | # | ||
483 | # CONFIG_PHYLIB is not set | ||
484 | |||
485 | # | ||
341 | # Ethernet (10 or 100Mbit) | 486 | # Ethernet (10 or 100Mbit) |
342 | # | 487 | # |
343 | CONFIG_NET_ETHERNET=y | 488 | CONFIG_NET_ETHERNET=y |
@@ -363,11 +508,6 @@ CONFIG_SMC91X=y | |||
363 | # CONFIG_NET_RADIO is not set | 508 | # CONFIG_NET_RADIO is not set |
364 | 509 | ||
365 | # | 510 | # |
366 | # PCMCIA network device support | ||
367 | # | ||
368 | # CONFIG_NET_PCMCIA is not set | ||
369 | |||
370 | # | ||
371 | # Wan interfaces | 511 | # Wan interfaces |
372 | # | 512 | # |
373 | # CONFIG_WAN is not set | 513 | # CONFIG_WAN is not set |
@@ -375,6 +515,8 @@ CONFIG_SMC91X=y | |||
375 | # CONFIG_SLIP is not set | 515 | # CONFIG_SLIP is not set |
376 | # CONFIG_SHAPER is not set | 516 | # CONFIG_SHAPER is not set |
377 | # CONFIG_NETCONSOLE is not set | 517 | # CONFIG_NETCONSOLE is not set |
518 | # CONFIG_NETPOLL is not set | ||
519 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
378 | 520 | ||
379 | # | 521 | # |
380 | # ISDN subsystem | 522 | # ISDN subsystem |
@@ -390,6 +532,7 @@ CONFIG_SMC91X=y | |||
390 | # Input device support | 532 | # Input device support |
391 | # | 533 | # |
392 | CONFIG_INPUT=y | 534 | CONFIG_INPUT=y |
535 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
393 | 536 | ||
394 | # | 537 | # |
395 | # Userland interfaces | 538 | # Userland interfaces |
@@ -418,7 +561,6 @@ CONFIG_SERIO_SERPORT=y | |||
418 | # CONFIG_SERIO_LIBPS2 is not set | 561 | # CONFIG_SERIO_LIBPS2 is not set |
419 | # CONFIG_SERIO_RAW is not set | 562 | # CONFIG_SERIO_RAW is not set |
420 | # CONFIG_GAMEPORT is not set | 563 | # CONFIG_GAMEPORT is not set |
421 | CONFIG_SOUND_GAMEPORT=y | ||
422 | 564 | ||
423 | # | 565 | # |
424 | # Character devices | 566 | # Character devices |
@@ -426,6 +568,7 @@ CONFIG_SOUND_GAMEPORT=y | |||
426 | CONFIG_VT=y | 568 | CONFIG_VT=y |
427 | CONFIG_VT_CONSOLE=y | 569 | CONFIG_VT_CONSOLE=y |
428 | CONFIG_HW_CONSOLE=y | 570 | CONFIG_HW_CONSOLE=y |
571 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
429 | # CONFIG_SERIAL_NONSTANDARD is not set | 572 | # CONFIG_SERIAL_NONSTANDARD is not set |
430 | 573 | ||
431 | # | 574 | # |
@@ -454,8 +597,8 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
454 | # Watchdog Cards | 597 | # Watchdog Cards |
455 | # | 598 | # |
456 | # CONFIG_WATCHDOG is not set | 599 | # CONFIG_WATCHDOG is not set |
600 | CONFIG_HW_RANDOM=y | ||
457 | # CONFIG_RTC is not set | 601 | # CONFIG_RTC is not set |
458 | # CONFIG_GEN_RTC is not set | ||
459 | CONFIG_DS1302=y | 602 | CONFIG_DS1302=y |
460 | # CONFIG_DTLK is not set | 603 | # CONFIG_DTLK is not set |
461 | # CONFIG_R3964 is not set | 604 | # CONFIG_R3964 is not set |
@@ -463,17 +606,12 @@ CONFIG_DS1302=y | |||
463 | # | 606 | # |
464 | # Ftape, the floppy tape device driver | 607 | # Ftape, the floppy tape device driver |
465 | # | 608 | # |
466 | # CONFIG_DRM is not set | ||
467 | |||
468 | # | ||
469 | # PCMCIA character devices | ||
470 | # | ||
471 | # CONFIG_SYNCLINK_CS is not set | ||
472 | # CONFIG_RAW_DRIVER is not set | 609 | # CONFIG_RAW_DRIVER is not set |
473 | 610 | ||
474 | # | 611 | # |
475 | # TPM devices | 612 | # TPM devices |
476 | # | 613 | # |
614 | # CONFIG_TCG_TPM is not set | ||
477 | 615 | ||
478 | # | 616 | # |
479 | # I2C support | 617 | # I2C support |
@@ -481,34 +619,51 @@ CONFIG_DS1302=y | |||
481 | # CONFIG_I2C is not set | 619 | # CONFIG_I2C is not set |
482 | 620 | ||
483 | # | 621 | # |
622 | # SPI support | ||
623 | # | ||
624 | # CONFIG_SPI is not set | ||
625 | # CONFIG_SPI_MASTER is not set | ||
626 | |||
627 | # | ||
484 | # Dallas's 1-wire bus | 628 | # Dallas's 1-wire bus |
485 | # | 629 | # |
486 | # CONFIG_W1 is not set | 630 | # CONFIG_W1 is not set |
487 | 631 | ||
488 | # | 632 | # |
489 | # Misc devices | 633 | # Hardware Monitoring support |
490 | # | 634 | # |
635 | CONFIG_HWMON=y | ||
636 | # CONFIG_HWMON_VID is not set | ||
637 | # CONFIG_SENSORS_ABITUGURU is not set | ||
638 | # CONFIG_SENSORS_F71805F is not set | ||
639 | # CONFIG_SENSORS_VT1211 is not set | ||
640 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
491 | 641 | ||
492 | # | 642 | # |
493 | # Multimedia devices | 643 | # Multimedia devices |
494 | # | 644 | # |
495 | CONFIG_VIDEO_DEV=y | 645 | CONFIG_VIDEO_DEV=m |
646 | CONFIG_VIDEO_V4L1=y | ||
647 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
648 | CONFIG_VIDEO_V4L2=y | ||
496 | 649 | ||
497 | # | 650 | # |
498 | # Video For Linux | 651 | # Video Capture Adapters |
499 | # | 652 | # |
500 | 653 | ||
501 | # | 654 | # |
502 | # Video Adapters | 655 | # Video Capture Adapters |
503 | # | 656 | # |
657 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
658 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
659 | # CONFIG_VIDEO_VIVI is not set | ||
504 | # CONFIG_VIDEO_CPIA is not set | 660 | # CONFIG_VIDEO_CPIA is not set |
505 | CONFIG_VIDEO_M32R_AR=y | 661 | CONFIG_VIDEO_M32R_AR=m |
506 | CONFIG_VIDEO_M32R_AR_M64278=y | 662 | CONFIG_VIDEO_M32R_AR_M64278=m |
507 | 663 | ||
508 | # | 664 | # |
509 | # Radio Adapters | 665 | # Radio Adapters |
510 | # | 666 | # |
511 | # CONFIG_RADIO_MAESTRO is not set | ||
512 | 667 | ||
513 | # | 668 | # |
514 | # Digital Video Broadcasting Devices | 669 | # Digital Video Broadcasting Devices |
@@ -518,15 +673,16 @@ CONFIG_VIDEO_M32R_AR_M64278=y | |||
518 | # | 673 | # |
519 | # Graphics support | 674 | # Graphics support |
520 | # | 675 | # |
676 | CONFIG_FIRMWARE_EDID=y | ||
521 | CONFIG_FB=y | 677 | CONFIG_FB=y |
522 | # CONFIG_FB_CFB_FILLRECT is not set | 678 | CONFIG_FB_CFB_FILLRECT=y |
523 | # CONFIG_FB_CFB_COPYAREA is not set | 679 | CONFIG_FB_CFB_COPYAREA=y |
524 | # CONFIG_FB_CFB_IMAGEBLIT is not set | 680 | CONFIG_FB_CFB_IMAGEBLIT=y |
525 | # CONFIG_FB_SOFT_CURSOR is not set | ||
526 | # CONFIG_FB_MACMODES is not set | 681 | # CONFIG_FB_MACMODES is not set |
682 | # CONFIG_FB_BACKLIGHT is not set | ||
527 | # CONFIG_FB_MODE_HELPERS is not set | 683 | # CONFIG_FB_MODE_HELPERS is not set |
528 | # CONFIG_FB_TILEBLITTING is not set | 684 | # CONFIG_FB_TILEBLITTING is not set |
529 | # CONFIG_FB_S1D13XXX is not set | 685 | CONFIG_FB_S1D13XXX=y |
530 | # CONFIG_FB_VIRTUAL is not set | 686 | # CONFIG_FB_VIRTUAL is not set |
531 | 687 | ||
532 | # | 688 | # |
@@ -535,6 +691,7 @@ CONFIG_FB=y | |||
535 | # CONFIG_VGA_CONSOLE is not set | 691 | # CONFIG_VGA_CONSOLE is not set |
536 | CONFIG_DUMMY_CONSOLE=y | 692 | CONFIG_DUMMY_CONSOLE=y |
537 | CONFIG_FRAMEBUFFER_CONSOLE=y | 693 | CONFIG_FRAMEBUFFER_CONSOLE=y |
694 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
538 | # CONFIG_FONTS is not set | 695 | # CONFIG_FONTS is not set |
539 | CONFIG_FONT_8x8=y | 696 | CONFIG_FONT_8x8=y |
540 | CONFIG_FONT_8x16=y | 697 | CONFIG_FONT_8x16=y |
@@ -546,6 +703,7 @@ CONFIG_LOGO=y | |||
546 | CONFIG_LOGO_LINUX_MONO=y | 703 | CONFIG_LOGO_LINUX_MONO=y |
547 | CONFIG_LOGO_LINUX_VGA16=y | 704 | CONFIG_LOGO_LINUX_VGA16=y |
548 | CONFIG_LOGO_LINUX_CLUT224=y | 705 | CONFIG_LOGO_LINUX_CLUT224=y |
706 | CONFIG_LOGO_M32R_CLUT224=y | ||
549 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 707 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
550 | 708 | ||
551 | # | 709 | # |
@@ -558,6 +716,11 @@ CONFIG_LOGO_LINUX_CLUT224=y | |||
558 | # | 716 | # |
559 | # CONFIG_USB_ARCH_HAS_HCD is not set | 717 | # CONFIG_USB_ARCH_HAS_HCD is not set |
560 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 718 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
719 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
720 | |||
721 | # | ||
722 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
723 | # | ||
561 | 724 | ||
562 | # | 725 | # |
563 | # USB Gadget Support | 726 | # USB Gadget Support |
@@ -567,23 +730,62 @@ CONFIG_LOGO_LINUX_CLUT224=y | |||
567 | # | 730 | # |
568 | # MMC/SD Card support | 731 | # MMC/SD Card support |
569 | # | 732 | # |
570 | # CONFIG_MMC is not set | 733 | CONFIG_MMC=y |
734 | CONFIG_MMC_DEBUG=y | ||
735 | CONFIG_MMC_BLOCK=y | ||
736 | # CONFIG_MMC_TIFM_SD is not set | ||
737 | |||
738 | # | ||
739 | # LED devices | ||
740 | # | ||
741 | # CONFIG_NEW_LEDS is not set | ||
742 | |||
743 | # | ||
744 | # LED drivers | ||
745 | # | ||
746 | |||
747 | # | ||
748 | # LED Triggers | ||
749 | # | ||
571 | 750 | ||
572 | # | 751 | # |
573 | # InfiniBand support | 752 | # InfiniBand support |
574 | # | 753 | # |
575 | # CONFIG_INFINIBAND is not set | 754 | |
755 | # | ||
756 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
757 | # | ||
758 | |||
759 | # | ||
760 | # Real Time Clock | ||
761 | # | ||
762 | # CONFIG_RTC_CLASS is not set | ||
763 | |||
764 | # | ||
765 | # DMA Engine support | ||
766 | # | ||
767 | # CONFIG_DMA_ENGINE is not set | ||
768 | |||
769 | # | ||
770 | # DMA Clients | ||
771 | # | ||
772 | |||
773 | # | ||
774 | # DMA Devices | ||
775 | # | ||
576 | 776 | ||
577 | # | 777 | # |
578 | # File systems | 778 | # File systems |
579 | # | 779 | # |
580 | CONFIG_EXT2_FS=y | 780 | CONFIG_EXT2_FS=y |
581 | # CONFIG_EXT2_FS_XATTR is not set | 781 | # CONFIG_EXT2_FS_XATTR is not set |
582 | CONFIG_EXT3_FS=m | 782 | # CONFIG_EXT2_FS_XIP is not set |
783 | CONFIG_EXT3_FS=y | ||
583 | CONFIG_EXT3_FS_XATTR=y | 784 | CONFIG_EXT3_FS_XATTR=y |
584 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 785 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
585 | # CONFIG_EXT3_FS_SECURITY is not set | 786 | # CONFIG_EXT3_FS_SECURITY is not set |
586 | CONFIG_JBD=m | 787 | # CONFIG_EXT4DEV_FS is not set |
788 | CONFIG_JBD=y | ||
587 | CONFIG_JBD_DEBUG=y | 789 | CONFIG_JBD_DEBUG=y |
588 | CONFIG_FS_MBCACHE=y | 790 | CONFIG_FS_MBCACHE=y |
589 | CONFIG_REISERFS_FS=m | 791 | CONFIG_REISERFS_FS=m |
@@ -591,17 +793,19 @@ CONFIG_REISERFS_FS=m | |||
591 | # CONFIG_REISERFS_PROC_INFO is not set | 793 | # CONFIG_REISERFS_PROC_INFO is not set |
592 | # CONFIG_REISERFS_FS_XATTR is not set | 794 | # CONFIG_REISERFS_FS_XATTR is not set |
593 | # CONFIG_JFS_FS is not set | 795 | # CONFIG_JFS_FS is not set |
594 | 796 | # CONFIG_FS_POSIX_ACL is not set | |
595 | # | ||
596 | # XFS support | ||
597 | # | ||
598 | # CONFIG_XFS_FS is not set | 797 | # CONFIG_XFS_FS is not set |
798 | # CONFIG_GFS2_FS is not set | ||
799 | # CONFIG_OCFS2_FS is not set | ||
599 | # CONFIG_MINIX_FS is not set | 800 | # CONFIG_MINIX_FS is not set |
600 | # CONFIG_ROMFS_FS is not set | 801 | # CONFIG_ROMFS_FS is not set |
802 | CONFIG_INOTIFY=y | ||
803 | CONFIG_INOTIFY_USER=y | ||
601 | # CONFIG_QUOTA is not set | 804 | # CONFIG_QUOTA is not set |
602 | CONFIG_DNOTIFY=y | 805 | CONFIG_DNOTIFY=y |
603 | # CONFIG_AUTOFS_FS is not set | 806 | # CONFIG_AUTOFS_FS is not set |
604 | # CONFIG_AUTOFS4_FS is not set | 807 | # CONFIG_AUTOFS4_FS is not set |
808 | # CONFIG_FUSE_FS is not set | ||
605 | 809 | ||
606 | # | 810 | # |
607 | # CD-ROM/DVD Filesystems | 811 | # CD-ROM/DVD Filesystems |
@@ -627,15 +831,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
627 | # | 831 | # |
628 | CONFIG_PROC_FS=y | 832 | CONFIG_PROC_FS=y |
629 | CONFIG_PROC_KCORE=y | 833 | CONFIG_PROC_KCORE=y |
834 | CONFIG_PROC_SYSCTL=y | ||
630 | CONFIG_SYSFS=y | 835 | CONFIG_SYSFS=y |
631 | CONFIG_DEVFS_FS=y | ||
632 | CONFIG_DEVFS_MOUNT=y | ||
633 | # CONFIG_DEVFS_DEBUG is not set | ||
634 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
635 | CONFIG_TMPFS=y | 836 | CONFIG_TMPFS=y |
636 | # CONFIG_TMPFS_XATTR is not set | 837 | # CONFIG_TMPFS_POSIX_ACL is not set |
637 | # CONFIG_HUGETLB_PAGE is not set | 838 | # CONFIG_HUGETLB_PAGE is not set |
638 | CONFIG_RAMFS=y | 839 | CONFIG_RAMFS=y |
840 | # CONFIG_CONFIGFS_FS is not set | ||
639 | 841 | ||
640 | # | 842 | # |
641 | # Miscellaneous filesystems | 843 | # Miscellaneous filesystems |
@@ -647,6 +849,8 @@ CONFIG_RAMFS=y | |||
647 | # CONFIG_BEFS_FS is not set | 849 | # CONFIG_BEFS_FS is not set |
648 | # CONFIG_BFS_FS is not set | 850 | # CONFIG_BFS_FS is not set |
649 | # CONFIG_EFS_FS is not set | 851 | # CONFIG_EFS_FS is not set |
852 | # CONFIG_JFFS_FS is not set | ||
853 | # CONFIG_JFFS2_FS is not set | ||
650 | # CONFIG_CRAMFS is not set | 854 | # CONFIG_CRAMFS is not set |
651 | # CONFIG_VXFS_FS is not set | 855 | # CONFIG_VXFS_FS is not set |
652 | # CONFIG_HPFS_FS is not set | 856 | # CONFIG_HPFS_FS is not set |
@@ -659,12 +863,14 @@ CONFIG_RAMFS=y | |||
659 | # | 863 | # |
660 | CONFIG_NFS_FS=y | 864 | CONFIG_NFS_FS=y |
661 | CONFIG_NFS_V3=y | 865 | CONFIG_NFS_V3=y |
866 | # CONFIG_NFS_V3_ACL is not set | ||
662 | # CONFIG_NFS_V4 is not set | 867 | # CONFIG_NFS_V4 is not set |
663 | # CONFIG_NFS_DIRECTIO is not set | 868 | # CONFIG_NFS_DIRECTIO is not set |
664 | # CONFIG_NFSD is not set | 869 | # CONFIG_NFSD is not set |
665 | CONFIG_ROOT_NFS=y | 870 | CONFIG_ROOT_NFS=y |
666 | CONFIG_LOCKD=y | 871 | CONFIG_LOCKD=y |
667 | CONFIG_LOCKD_V4=y | 872 | CONFIG_LOCKD_V4=y |
873 | CONFIG_NFS_COMMON=y | ||
668 | CONFIG_SUNRPC=y | 874 | CONFIG_SUNRPC=y |
669 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 875 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
670 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 876 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -673,6 +879,7 @@ CONFIG_SUNRPC=y | |||
673 | # CONFIG_NCP_FS is not set | 879 | # CONFIG_NCP_FS is not set |
674 | # CONFIG_CODA_FS is not set | 880 | # CONFIG_CODA_FS is not set |
675 | # CONFIG_AFS_FS is not set | 881 | # CONFIG_AFS_FS is not set |
882 | # CONFIG_9P_FS is not set | ||
676 | 883 | ||
677 | # | 884 | # |
678 | # Partition Types | 885 | # Partition Types |
@@ -727,16 +934,23 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
727 | # | 934 | # |
728 | # Profiling support | 935 | # Profiling support |
729 | # | 936 | # |
730 | # CONFIG_PROFILING is not set | 937 | CONFIG_PROFILING=y |
938 | CONFIG_OPROFILE=y | ||
731 | 939 | ||
732 | # | 940 | # |
733 | # Kernel hacking | 941 | # Kernel hacking |
734 | # | 942 | # |
735 | # CONFIG_PRINTK_TIME is not set | 943 | # CONFIG_PRINTK_TIME is not set |
944 | CONFIG_ENABLE_MUST_CHECK=y | ||
945 | # CONFIG_MAGIC_SYSRQ is not set | ||
946 | # CONFIG_UNUSED_SYMBOLS is not set | ||
736 | # CONFIG_DEBUG_KERNEL is not set | 947 | # CONFIG_DEBUG_KERNEL is not set |
737 | CONFIG_LOG_BUF_SHIFT=15 | 948 | CONFIG_LOG_BUF_SHIFT=15 |
738 | # CONFIG_DEBUG_BUGVERBOSE is not set | 949 | # CONFIG_DEBUG_BUGVERBOSE is not set |
950 | # CONFIG_DEBUG_FS is not set | ||
739 | # CONFIG_FRAME_POINTER is not set | 951 | # CONFIG_FRAME_POINTER is not set |
952 | # CONFIG_UNWIND_INFO is not set | ||
953 | # CONFIG_HEADERS_CHECK is not set | ||
740 | 954 | ||
741 | # | 955 | # |
742 | # Security options | 956 | # Security options |
@@ -750,12 +964,9 @@ CONFIG_LOG_BUF_SHIFT=15 | |||
750 | # CONFIG_CRYPTO is not set | 964 | # CONFIG_CRYPTO is not set |
751 | 965 | ||
752 | # | 966 | # |
753 | # Hardware crypto devices | ||
754 | # | ||
755 | |||
756 | # | ||
757 | # Library routines | 967 | # Library routines |
758 | # | 968 | # |
759 | # CONFIG_CRC_CCITT is not set | 969 | # CONFIG_CRC_CCITT is not set |
970 | # CONFIG_CRC16 is not set | ||
760 | CONFIG_CRC32=y | 971 | CONFIG_CRC32=y |
761 | # CONFIG_LIBCRC32C is not set | 972 | # CONFIG_LIBCRC32C is not set |
diff --git a/arch/m32r/m32700ut/defconfig.m32700ut.up b/arch/m32r/m32700ut/defconfig.m32700ut.up index 2d3e7cda8f46..190f961d33e2 100644 --- a/arch/m32r/m32700ut/defconfig.m32700ut.up +++ b/arch/m32r/m32700ut/defconfig.m32700ut.up | |||
@@ -1,19 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Fri Jun 3 16:21:34 2005 | 4 | # Tue Dec 12 12:07:08 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 16 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_LOCK_KERNEL=y | 17 | CONFIG_LOCK_KERNEL=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
@@ -22,32 +21,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
22 | # General setup | 21 | # General setup |
23 | # | 22 | # |
24 | CONFIG_LOCALVERSION="" | 23 | CONFIG_LOCALVERSION="" |
24 | CONFIG_LOCALVERSION_AUTO=y | ||
25 | CONFIG_SWAP=y | 25 | CONFIG_SWAP=y |
26 | CONFIG_SYSVIPC=y | 26 | CONFIG_SYSVIPC=y |
27 | # CONFIG_IPC_NS is not set | ||
27 | # CONFIG_POSIX_MQUEUE is not set | 28 | # CONFIG_POSIX_MQUEUE is not set |
28 | CONFIG_BSD_PROCESS_ACCT=y | 29 | CONFIG_BSD_PROCESS_ACCT=y |
29 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 30 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
30 | CONFIG_SYSCTL=y | 31 | # CONFIG_TASKSTATS is not set |
32 | # CONFIG_UTS_NS is not set | ||
31 | # CONFIG_AUDIT is not set | 33 | # CONFIG_AUDIT is not set |
32 | CONFIG_HOTPLUG=y | ||
33 | CONFIG_KOBJECT_UEVENT=y | ||
34 | CONFIG_IKCONFIG=y | 34 | CONFIG_IKCONFIG=y |
35 | # CONFIG_IKCONFIG_PROC is not set | 35 | CONFIG_IKCONFIG_PROC=y |
36 | CONFIG_SYSFS_DEPRECATED=y | ||
37 | # CONFIG_RELAY is not set | ||
38 | CONFIG_INITRAMFS_SOURCE="" | ||
39 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
40 | CONFIG_SYSCTL=y | ||
36 | CONFIG_EMBEDDED=y | 41 | CONFIG_EMBEDDED=y |
42 | CONFIG_SYSCTL_SYSCALL=y | ||
37 | # CONFIG_KALLSYMS is not set | 43 | # CONFIG_KALLSYMS is not set |
44 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 45 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 46 | CONFIG_BUG=y |
47 | CONFIG_ELF_CORE=y | ||
40 | CONFIG_BASE_FULL=y | 48 | CONFIG_BASE_FULL=y |
41 | # CONFIG_FUTEX is not set | 49 | # CONFIG_FUTEX is not set |
42 | # CONFIG_EPOLL is not set | 50 | # CONFIG_EPOLL is not set |
43 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
44 | CONFIG_SHMEM=y | 51 | CONFIG_SHMEM=y |
45 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 52 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LABELS=0 | 53 | CONFIG_VM_EVENT_COUNTERS=y |
47 | CONFIG_CC_ALIGN_LOOPS=0 | ||
48 | CONFIG_CC_ALIGN_JUMPS=0 | ||
49 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
50 | CONFIG_BASE_SMALL=0 | 55 | CONFIG_BASE_SMALL=0 |
56 | # CONFIG_SLOB is not set | ||
51 | 57 | ||
52 | # | 58 | # |
53 | # Loadable module support | 59 | # Loadable module support |
@@ -55,12 +61,30 @@ CONFIG_BASE_SMALL=0 | |||
55 | CONFIG_MODULES=y | 61 | CONFIG_MODULES=y |
56 | CONFIG_MODULE_UNLOAD=y | 62 | CONFIG_MODULE_UNLOAD=y |
57 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 63 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
58 | CONFIG_OBSOLETE_MODPARM=y | ||
59 | # CONFIG_MODVERSIONS is not set | 64 | # CONFIG_MODVERSIONS is not set |
60 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 65 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
61 | CONFIG_KMOD=y | 66 | CONFIG_KMOD=y |
62 | 67 | ||
63 | # | 68 | # |
69 | # Block layer | ||
70 | # | ||
71 | CONFIG_BLOCK=y | ||
72 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
73 | |||
74 | # | ||
75 | # IO Schedulers | ||
76 | # | ||
77 | CONFIG_IOSCHED_NOOP=y | ||
78 | # CONFIG_IOSCHED_AS is not set | ||
79 | CONFIG_IOSCHED_DEADLINE=y | ||
80 | CONFIG_IOSCHED_CFQ=y | ||
81 | # CONFIG_DEFAULT_AS is not set | ||
82 | # CONFIG_DEFAULT_DEADLINE is not set | ||
83 | CONFIG_DEFAULT_CFQ=y | ||
84 | # CONFIG_DEFAULT_NOOP is not set | ||
85 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
86 | |||
87 | # | ||
64 | # Processor type and features | 88 | # Processor type and features |
65 | # | 89 | # |
66 | # CONFIG_PLAT_MAPPI is not set | 90 | # CONFIG_PLAT_MAPPI is not set |
@@ -70,8 +94,10 @@ CONFIG_PLAT_M32700UT=y | |||
70 | # CONFIG_PLAT_OAKS32R is not set | 94 | # CONFIG_PLAT_OAKS32R is not set |
71 | # CONFIG_PLAT_MAPPI2 is not set | 95 | # CONFIG_PLAT_MAPPI2 is not set |
72 | # CONFIG_PLAT_MAPPI3 is not set | 96 | # CONFIG_PLAT_MAPPI3 is not set |
97 | # CONFIG_PLAT_M32104UT is not set | ||
73 | CONFIG_CHIP_M32700=y | 98 | CONFIG_CHIP_M32700=y |
74 | # CONFIG_CHIP_M32102 is not set | 99 | # CONFIG_CHIP_M32102 is not set |
100 | # CONFIG_CHIP_M32104 is not set | ||
75 | # CONFIG_CHIP_VDEC2 is not set | 101 | # CONFIG_CHIP_VDEC2 is not set |
76 | # CONFIG_CHIP_OPSP is not set | 102 | # CONFIG_CHIP_OPSP is not set |
77 | CONFIG_MMU=y | 103 | CONFIG_MMU=y |
@@ -85,34 +111,37 @@ CONFIG_TIMER_DIVIDE=128 | |||
85 | CONFIG_MEMORY_START=0x08000000 | 111 | CONFIG_MEMORY_START=0x08000000 |
86 | CONFIG_MEMORY_SIZE=0x01000000 | 112 | CONFIG_MEMORY_SIZE=0x01000000 |
87 | CONFIG_NOHIGHMEM=y | 113 | CONFIG_NOHIGHMEM=y |
88 | # CONFIG_DISCONTIGMEM is not set | 114 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
115 | CONFIG_SELECT_MEMORY_MODEL=y | ||
116 | # CONFIG_FLATMEM_MANUAL is not set | ||
117 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
118 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
119 | CONFIG_DISCONTIGMEM=y | ||
120 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
121 | CONFIG_NEED_MULTIPLE_NODES=y | ||
122 | # CONFIG_SPARSEMEM_STATIC is not set | ||
123 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
124 | # CONFIG_RESOURCES_64BIT is not set | ||
125 | CONFIG_IRAM_START=0x00f00000 | ||
126 | CONFIG_IRAM_SIZE=0x00080000 | ||
89 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 127 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
90 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 128 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
129 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
130 | CONFIG_GENERIC_HWEIGHT=y | ||
91 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 131 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
92 | CONFIG_PREEMPT=y | 132 | CONFIG_PREEMPT=y |
93 | # CONFIG_HAVE_DEC_LOCK is not set | ||
94 | # CONFIG_SMP is not set | 133 | # CONFIG_SMP is not set |
134 | CONFIG_NODES_SHIFT=1 | ||
95 | 135 | ||
96 | # | 136 | # |
97 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 137 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
98 | # | 138 | # |
99 | # CONFIG_PCI is not set | ||
100 | # CONFIG_ISA is not set | 139 | # CONFIG_ISA is not set |
101 | 140 | ||
102 | # | 141 | # |
103 | # PCCARD (PCMCIA/CardBus) support | 142 | # PCCARD (PCMCIA/CardBus) support |
104 | # | 143 | # |
105 | CONFIG_PCCARD=y | 144 | # CONFIG_PCCARD is not set |
106 | # CONFIG_PCMCIA_DEBUG is not set | ||
107 | CONFIG_PCMCIA=y | ||
108 | |||
109 | # | ||
110 | # PC-card bridges | ||
111 | # | ||
112 | # CONFIG_TCIC is not set | ||
113 | # CONFIG_M32R_PCC is not set | ||
114 | CONFIG_M32R_CFC=y | ||
115 | CONFIG_M32R_CFC_NUM=1 | ||
116 | 145 | ||
117 | # | 146 | # |
118 | # PCI Hotplug Support | 147 | # PCI Hotplug Support |
@@ -125,6 +154,94 @@ CONFIG_BINFMT_ELF=y | |||
125 | # CONFIG_BINFMT_MISC is not set | 154 | # CONFIG_BINFMT_MISC is not set |
126 | 155 | ||
127 | # | 156 | # |
157 | # Networking | ||
158 | # | ||
159 | CONFIG_NET=y | ||
160 | |||
161 | # | ||
162 | # Networking options | ||
163 | # | ||
164 | # CONFIG_NETDEBUG is not set | ||
165 | CONFIG_PACKET=y | ||
166 | # CONFIG_PACKET_MMAP is not set | ||
167 | CONFIG_UNIX=y | ||
168 | CONFIG_XFRM=y | ||
169 | # CONFIG_XFRM_USER is not set | ||
170 | # CONFIG_XFRM_SUB_POLICY is not set | ||
171 | # CONFIG_NET_KEY is not set | ||
172 | CONFIG_INET=y | ||
173 | # CONFIG_IP_MULTICAST is not set | ||
174 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
175 | CONFIG_IP_FIB_HASH=y | ||
176 | CONFIG_IP_PNP=y | ||
177 | CONFIG_IP_PNP_DHCP=y | ||
178 | # CONFIG_IP_PNP_BOOTP is not set | ||
179 | # CONFIG_IP_PNP_RARP is not set | ||
180 | # CONFIG_NET_IPIP is not set | ||
181 | # CONFIG_NET_IPGRE is not set | ||
182 | # CONFIG_ARPD is not set | ||
183 | # CONFIG_SYN_COOKIES is not set | ||
184 | # CONFIG_INET_AH is not set | ||
185 | # CONFIG_INET_ESP is not set | ||
186 | # CONFIG_INET_IPCOMP is not set | ||
187 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
188 | # CONFIG_INET_TUNNEL is not set | ||
189 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
190 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
191 | CONFIG_INET_XFRM_MODE_BEET=y | ||
192 | CONFIG_INET_DIAG=y | ||
193 | CONFIG_INET_TCP_DIAG=y | ||
194 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
195 | CONFIG_TCP_CONG_CUBIC=y | ||
196 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
197 | # CONFIG_TCP_MD5SIG is not set | ||
198 | # CONFIG_IPV6 is not set | ||
199 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
200 | # CONFIG_INET6_TUNNEL is not set | ||
201 | # CONFIG_NETWORK_SECMARK is not set | ||
202 | # CONFIG_NETFILTER is not set | ||
203 | |||
204 | # | ||
205 | # DCCP Configuration (EXPERIMENTAL) | ||
206 | # | ||
207 | # CONFIG_IP_DCCP is not set | ||
208 | |||
209 | # | ||
210 | # SCTP Configuration (EXPERIMENTAL) | ||
211 | # | ||
212 | # CONFIG_IP_SCTP is not set | ||
213 | |||
214 | # | ||
215 | # TIPC Configuration (EXPERIMENTAL) | ||
216 | # | ||
217 | # CONFIG_TIPC is not set | ||
218 | # CONFIG_ATM is not set | ||
219 | # CONFIG_BRIDGE is not set | ||
220 | # CONFIG_VLAN_8021Q is not set | ||
221 | # CONFIG_DECNET is not set | ||
222 | # CONFIG_LLC2 is not set | ||
223 | # CONFIG_IPX is not set | ||
224 | # CONFIG_ATALK is not set | ||
225 | # CONFIG_X25 is not set | ||
226 | # CONFIG_LAPB is not set | ||
227 | # CONFIG_ECONET is not set | ||
228 | # CONFIG_WAN_ROUTER is not set | ||
229 | |||
230 | # | ||
231 | # QoS and/or fair queueing | ||
232 | # | ||
233 | # CONFIG_NET_SCHED is not set | ||
234 | |||
235 | # | ||
236 | # Network testing | ||
237 | # | ||
238 | # CONFIG_NET_PKTGEN is not set | ||
239 | # CONFIG_HAMRADIO is not set | ||
240 | # CONFIG_IRDA is not set | ||
241 | # CONFIG_BT is not set | ||
242 | # CONFIG_IEEE80211 is not set | ||
243 | |||
244 | # | ||
128 | # Device Drivers | 245 | # Device Drivers |
129 | # | 246 | # |
130 | 247 | ||
@@ -133,12 +250,100 @@ CONFIG_BINFMT_ELF=y | |||
133 | # | 250 | # |
134 | CONFIG_STANDALONE=y | 251 | CONFIG_STANDALONE=y |
135 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 252 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
136 | # CONFIG_FW_LOADER is not set | 253 | CONFIG_FW_LOADER=y |
254 | # CONFIG_SYS_HYPERVISOR is not set | ||
255 | |||
256 | # | ||
257 | # Connector - unified userspace <-> kernelspace linker | ||
258 | # | ||
259 | # CONFIG_CONNECTOR is not set | ||
137 | 260 | ||
138 | # | 261 | # |
139 | # Memory Technology Devices (MTD) | 262 | # Memory Technology Devices (MTD) |
140 | # | 263 | # |
141 | # CONFIG_MTD is not set | 264 | CONFIG_MTD=y |
265 | # CONFIG_MTD_DEBUG is not set | ||
266 | # CONFIG_MTD_CONCAT is not set | ||
267 | CONFIG_MTD_PARTITIONS=y | ||
268 | CONFIG_MTD_REDBOOT_PARTS=y | ||
269 | CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 | ||
270 | # CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set | ||
271 | # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set | ||
272 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
273 | |||
274 | # | ||
275 | # User Modules And Translation Layers | ||
276 | # | ||
277 | # CONFIG_MTD_CHAR is not set | ||
278 | CONFIG_MTD_BLOCK=y | ||
279 | # CONFIG_FTL is not set | ||
280 | # CONFIG_NFTL is not set | ||
281 | # CONFIG_INFTL is not set | ||
282 | # CONFIG_RFD_FTL is not set | ||
283 | # CONFIG_SSFDC is not set | ||
284 | |||
285 | # | ||
286 | # RAM/ROM/Flash chip drivers | ||
287 | # | ||
288 | CONFIG_MTD_CFI=m | ||
289 | CONFIG_MTD_JEDECPROBE=m | ||
290 | CONFIG_MTD_GEN_PROBE=m | ||
291 | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
292 | # CONFIG_MTD_CFI_NOSWAP is not set | ||
293 | CONFIG_MTD_CFI_BE_BYTE_SWAP=y | ||
294 | # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set | ||
295 | CONFIG_MTD_CFI_GEOMETRY=y | ||
296 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
297 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
298 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
299 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
300 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
301 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
302 | CONFIG_MTD_CFI_I1=y | ||
303 | # CONFIG_MTD_CFI_I2 is not set | ||
304 | # CONFIG_MTD_CFI_I4 is not set | ||
305 | # CONFIG_MTD_CFI_I8 is not set | ||
306 | # CONFIG_MTD_OTP is not set | ||
307 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
308 | CONFIG_MTD_CFI_AMDSTD=m | ||
309 | # CONFIG_MTD_CFI_STAA is not set | ||
310 | CONFIG_MTD_CFI_UTIL=m | ||
311 | # CONFIG_MTD_RAM is not set | ||
312 | # CONFIG_MTD_ROM is not set | ||
313 | # CONFIG_MTD_ABSENT is not set | ||
314 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
315 | |||
316 | # | ||
317 | # Mapping drivers for chip access | ||
318 | # | ||
319 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
320 | # CONFIG_MTD_PHYSMAP is not set | ||
321 | # CONFIG_MTD_PLATRAM is not set | ||
322 | |||
323 | # | ||
324 | # Self-contained MTD device drivers | ||
325 | # | ||
326 | # CONFIG_MTD_SLRAM is not set | ||
327 | # CONFIG_MTD_PHRAM is not set | ||
328 | # CONFIG_MTD_MTDRAM is not set | ||
329 | # CONFIG_MTD_BLOCK2MTD is not set | ||
330 | |||
331 | # | ||
332 | # Disk-On-Chip Device Drivers | ||
333 | # | ||
334 | # CONFIG_MTD_DOC2000 is not set | ||
335 | # CONFIG_MTD_DOC2001 is not set | ||
336 | # CONFIG_MTD_DOC2001PLUS is not set | ||
337 | |||
338 | # | ||
339 | # NAND Flash Device Drivers | ||
340 | # | ||
341 | # CONFIG_MTD_NAND is not set | ||
342 | |||
343 | # | ||
344 | # OneNAND Flash Device Drivers | ||
345 | # | ||
346 | # CONFIG_MTD_ONENAND is not set | ||
142 | 347 | ||
143 | # | 348 | # |
144 | # Parallel port support | 349 | # Parallel port support |
@@ -152,7 +357,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
152 | # | 357 | # |
153 | # Block devices | 358 | # Block devices |
154 | # | 359 | # |
155 | # CONFIG_BLK_DEV_FD is not set | ||
156 | # CONFIG_BLK_DEV_COW_COMMON is not set | 360 | # CONFIG_BLK_DEV_COW_COMMON is not set |
157 | CONFIG_BLK_DEV_LOOP=y | 361 | CONFIG_BLK_DEV_LOOP=y |
158 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 362 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -160,23 +364,21 @@ CONFIG_BLK_DEV_NBD=y | |||
160 | CONFIG_BLK_DEV_RAM=y | 364 | CONFIG_BLK_DEV_RAM=y |
161 | CONFIG_BLK_DEV_RAM_COUNT=16 | 365 | CONFIG_BLK_DEV_RAM_COUNT=16 |
162 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 366 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
367 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
163 | # CONFIG_BLK_DEV_INITRD is not set | 368 | # CONFIG_BLK_DEV_INITRD is not set |
164 | CONFIG_INITRAMFS_SOURCE="" | ||
165 | # CONFIG_CDROM_PKTCDVD is not set | 369 | # CONFIG_CDROM_PKTCDVD is not set |
370 | CONFIG_ATA_OVER_ETH=m | ||
166 | 371 | ||
167 | # | 372 | # |
168 | # IO Schedulers | 373 | # Misc devices |
169 | # | 374 | # |
170 | CONFIG_IOSCHED_NOOP=y | 375 | # CONFIG_TIFM_CORE is not set |
171 | # CONFIG_IOSCHED_AS is not set | ||
172 | CONFIG_IOSCHED_DEADLINE=y | ||
173 | CONFIG_IOSCHED_CFQ=y | ||
174 | # CONFIG_ATA_OVER_ETH is not set | ||
175 | 376 | ||
176 | # | 377 | # |
177 | # ATA/ATAPI/MFM/RLL support | 378 | # ATA/ATAPI/MFM/RLL support |
178 | # | 379 | # |
179 | CONFIG_IDE=y | 380 | CONFIG_IDE=y |
381 | CONFIG_IDE_MAX_HWIFS=4 | ||
180 | CONFIG_BLK_DEV_IDE=y | 382 | CONFIG_BLK_DEV_IDE=y |
181 | 383 | ||
182 | # | 384 | # |
@@ -185,7 +387,6 @@ CONFIG_BLK_DEV_IDE=y | |||
185 | # CONFIG_BLK_DEV_IDE_SATA is not set | 387 | # CONFIG_BLK_DEV_IDE_SATA is not set |
186 | CONFIG_BLK_DEV_IDEDISK=y | 388 | CONFIG_BLK_DEV_IDEDISK=y |
187 | # CONFIG_IDEDISK_MULTI_MODE is not set | 389 | # CONFIG_IDEDISK_MULTI_MODE is not set |
188 | CONFIG_BLK_DEV_IDECS=y | ||
189 | CONFIG_BLK_DEV_IDECD=m | 390 | CONFIG_BLK_DEV_IDECD=m |
190 | # CONFIG_BLK_DEV_IDETAPE is not set | 391 | # CONFIG_BLK_DEV_IDETAPE is not set |
191 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 392 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
@@ -204,7 +405,9 @@ CONFIG_IDE_GENERIC=y | |||
204 | # | 405 | # |
205 | # SCSI device support | 406 | # SCSI device support |
206 | # | 407 | # |
408 | # CONFIG_RAID_ATTRS is not set | ||
207 | CONFIG_SCSI=m | 409 | CONFIG_SCSI=m |
410 | # CONFIG_SCSI_NETLINK is not set | ||
208 | CONFIG_SCSI_PROC_FS=y | 411 | CONFIG_SCSI_PROC_FS=y |
209 | 412 | ||
210 | # | 413 | # |
@@ -216,6 +419,7 @@ CONFIG_BLK_DEV_SD=m | |||
216 | CONFIG_BLK_DEV_SR=m | 419 | CONFIG_BLK_DEV_SR=m |
217 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 420 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
218 | CONFIG_CHR_DEV_SG=m | 421 | CONFIG_CHR_DEV_SG=m |
422 | # CONFIG_CHR_DEV_SCH is not set | ||
219 | 423 | ||
220 | # | 424 | # |
221 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 425 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -225,26 +429,23 @@ CONFIG_SCSI_MULTI_LUN=y | |||
225 | # CONFIG_SCSI_LOGGING is not set | 429 | # CONFIG_SCSI_LOGGING is not set |
226 | 430 | ||
227 | # | 431 | # |
228 | # SCSI Transport Attributes | 432 | # SCSI Transports |
229 | # | 433 | # |
230 | # CONFIG_SCSI_SPI_ATTRS is not set | 434 | # CONFIG_SCSI_SPI_ATTRS is not set |
231 | # CONFIG_SCSI_FC_ATTRS is not set | 435 | # CONFIG_SCSI_FC_ATTRS is not set |
232 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 436 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
437 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
438 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
233 | 439 | ||
234 | # | 440 | # |
235 | # SCSI low-level drivers | 441 | # SCSI low-level drivers |
236 | # | 442 | # |
237 | # CONFIG_SCSI_SATA is not set | 443 | # CONFIG_ISCSI_TCP is not set |
238 | # CONFIG_SCSI_DEBUG is not set | 444 | # CONFIG_SCSI_DEBUG is not set |
239 | 445 | ||
240 | # | 446 | # |
241 | # PCMCIA SCSI adapter support | 447 | # Serial ATA (prod) and Parallel ATA (experimental) drivers |
242 | # | 448 | # |
243 | # CONFIG_PCMCIA_AHA152X is not set | ||
244 | # CONFIG_PCMCIA_FDOMAIN is not set | ||
245 | # CONFIG_PCMCIA_NINJA_SCSI is not set | ||
246 | # CONFIG_PCMCIA_QLOGIC is not set | ||
247 | # CONFIG_PCMCIA_SYM53C500 is not set | ||
248 | 449 | ||
249 | # | 450 | # |
250 | # Multi-device support (RAID and LVM) | 451 | # Multi-device support (RAID and LVM) |
@@ -254,6 +455,7 @@ CONFIG_SCSI_MULTI_LUN=y | |||
254 | # | 455 | # |
255 | # Fusion MPT device support | 456 | # Fusion MPT device support |
256 | # | 457 | # |
458 | # CONFIG_FUSION is not set | ||
257 | 459 | ||
258 | # | 460 | # |
259 | # IEEE 1394 (FireWire) support | 461 | # IEEE 1394 (FireWire) support |
@@ -264,69 +466,8 @@ CONFIG_SCSI_MULTI_LUN=y | |||
264 | # | 466 | # |
265 | 467 | ||
266 | # | 468 | # |
267 | # Networking support | 469 | # Network device support |
268 | # | ||
269 | CONFIG_NET=y | ||
270 | |||
271 | # | ||
272 | # Networking options | ||
273 | # | ||
274 | CONFIG_PACKET=y | ||
275 | # CONFIG_PACKET_MMAP is not set | ||
276 | CONFIG_UNIX=y | ||
277 | # CONFIG_NET_KEY is not set | ||
278 | CONFIG_INET=y | ||
279 | # CONFIG_IP_MULTICAST is not set | ||
280 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
281 | CONFIG_IP_PNP=y | ||
282 | CONFIG_IP_PNP_DHCP=y | ||
283 | # CONFIG_IP_PNP_BOOTP is not set | ||
284 | # CONFIG_IP_PNP_RARP is not set | ||
285 | # CONFIG_NET_IPIP is not set | ||
286 | # CONFIG_NET_IPGRE is not set | ||
287 | # CONFIG_ARPD is not set | ||
288 | # CONFIG_SYN_COOKIES is not set | ||
289 | # CONFIG_INET_AH is not set | ||
290 | # CONFIG_INET_ESP is not set | ||
291 | # CONFIG_INET_IPCOMP is not set | ||
292 | # CONFIG_INET_TUNNEL is not set | ||
293 | CONFIG_IP_TCPDIAG=y | ||
294 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
295 | # CONFIG_IPV6 is not set | ||
296 | # CONFIG_NETFILTER is not set | ||
297 | |||
298 | # | ||
299 | # SCTP Configuration (EXPERIMENTAL) | ||
300 | # | ||
301 | # CONFIG_IP_SCTP is not set | ||
302 | # CONFIG_ATM is not set | ||
303 | # CONFIG_BRIDGE is not set | ||
304 | # CONFIG_VLAN_8021Q is not set | ||
305 | # CONFIG_DECNET is not set | ||
306 | # CONFIG_LLC2 is not set | ||
307 | # CONFIG_IPX is not set | ||
308 | # CONFIG_ATALK is not set | ||
309 | # CONFIG_X25 is not set | ||
310 | # CONFIG_LAPB is not set | ||
311 | # CONFIG_NET_DIVERT is not set | ||
312 | # CONFIG_ECONET is not set | ||
313 | # CONFIG_WAN_ROUTER is not set | ||
314 | |||
315 | # | ||
316 | # QoS and/or fair queueing | ||
317 | # | ||
318 | # CONFIG_NET_SCHED is not set | ||
319 | # CONFIG_NET_CLS_ROUTE is not set | ||
320 | |||
321 | # | ||
322 | # Network testing | ||
323 | # | 470 | # |
324 | # CONFIG_NET_PKTGEN is not set | ||
325 | # CONFIG_NETPOLL is not set | ||
326 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
327 | # CONFIG_HAMRADIO is not set | ||
328 | # CONFIG_IRDA is not set | ||
329 | # CONFIG_BT is not set | ||
330 | CONFIG_NETDEVICES=y | 471 | CONFIG_NETDEVICES=y |
331 | # CONFIG_DUMMY is not set | 472 | # CONFIG_DUMMY is not set |
332 | # CONFIG_BONDING is not set | 473 | # CONFIG_BONDING is not set |
@@ -334,6 +475,11 @@ CONFIG_NETDEVICES=y | |||
334 | # CONFIG_TUN is not set | 475 | # CONFIG_TUN is not set |
335 | 476 | ||
336 | # | 477 | # |
478 | # PHY device support | ||
479 | # | ||
480 | # CONFIG_PHYLIB is not set | ||
481 | |||
482 | # | ||
337 | # Ethernet (10 or 100Mbit) | 483 | # Ethernet (10 or 100Mbit) |
338 | # | 484 | # |
339 | CONFIG_NET_ETHERNET=y | 485 | CONFIG_NET_ETHERNET=y |
@@ -359,11 +505,6 @@ CONFIG_SMC91X=y | |||
359 | # CONFIG_NET_RADIO is not set | 505 | # CONFIG_NET_RADIO is not set |
360 | 506 | ||
361 | # | 507 | # |
362 | # PCMCIA network device support | ||
363 | # | ||
364 | # CONFIG_NET_PCMCIA is not set | ||
365 | |||
366 | # | ||
367 | # Wan interfaces | 508 | # Wan interfaces |
368 | # | 509 | # |
369 | # CONFIG_WAN is not set | 510 | # CONFIG_WAN is not set |
@@ -371,6 +512,8 @@ CONFIG_SMC91X=y | |||
371 | # CONFIG_SLIP is not set | 512 | # CONFIG_SLIP is not set |
372 | # CONFIG_SHAPER is not set | 513 | # CONFIG_SHAPER is not set |
373 | # CONFIG_NETCONSOLE is not set | 514 | # CONFIG_NETCONSOLE is not set |
515 | # CONFIG_NETPOLL is not set | ||
516 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
374 | 517 | ||
375 | # | 518 | # |
376 | # ISDN subsystem | 519 | # ISDN subsystem |
@@ -386,6 +529,7 @@ CONFIG_SMC91X=y | |||
386 | # Input device support | 529 | # Input device support |
387 | # | 530 | # |
388 | CONFIG_INPUT=y | 531 | CONFIG_INPUT=y |
532 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
389 | 533 | ||
390 | # | 534 | # |
391 | # Userland interfaces | 535 | # Userland interfaces |
@@ -414,7 +558,6 @@ CONFIG_SERIO_SERPORT=y | |||
414 | # CONFIG_SERIO_LIBPS2 is not set | 558 | # CONFIG_SERIO_LIBPS2 is not set |
415 | # CONFIG_SERIO_RAW is not set | 559 | # CONFIG_SERIO_RAW is not set |
416 | # CONFIG_GAMEPORT is not set | 560 | # CONFIG_GAMEPORT is not set |
417 | CONFIG_SOUND_GAMEPORT=y | ||
418 | 561 | ||
419 | # | 562 | # |
420 | # Character devices | 563 | # Character devices |
@@ -422,6 +565,7 @@ CONFIG_SOUND_GAMEPORT=y | |||
422 | CONFIG_VT=y | 565 | CONFIG_VT=y |
423 | CONFIG_VT_CONSOLE=y | 566 | CONFIG_VT_CONSOLE=y |
424 | CONFIG_HW_CONSOLE=y | 567 | CONFIG_HW_CONSOLE=y |
568 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
425 | # CONFIG_SERIAL_NONSTANDARD is not set | 569 | # CONFIG_SERIAL_NONSTANDARD is not set |
426 | 570 | ||
427 | # | 571 | # |
@@ -450,8 +594,8 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
450 | # Watchdog Cards | 594 | # Watchdog Cards |
451 | # | 595 | # |
452 | # CONFIG_WATCHDOG is not set | 596 | # CONFIG_WATCHDOG is not set |
597 | CONFIG_HW_RANDOM=y | ||
453 | # CONFIG_RTC is not set | 598 | # CONFIG_RTC is not set |
454 | # CONFIG_GEN_RTC is not set | ||
455 | CONFIG_DS1302=y | 599 | CONFIG_DS1302=y |
456 | # CONFIG_DTLK is not set | 600 | # CONFIG_DTLK is not set |
457 | # CONFIG_R3964 is not set | 601 | # CONFIG_R3964 is not set |
@@ -459,17 +603,12 @@ CONFIG_DS1302=y | |||
459 | # | 603 | # |
460 | # Ftape, the floppy tape device driver | 604 | # Ftape, the floppy tape device driver |
461 | # | 605 | # |
462 | # CONFIG_DRM is not set | ||
463 | |||
464 | # | ||
465 | # PCMCIA character devices | ||
466 | # | ||
467 | # CONFIG_SYNCLINK_CS is not set | ||
468 | # CONFIG_RAW_DRIVER is not set | 606 | # CONFIG_RAW_DRIVER is not set |
469 | 607 | ||
470 | # | 608 | # |
471 | # TPM devices | 609 | # TPM devices |
472 | # | 610 | # |
611 | # CONFIG_TCG_TPM is not set | ||
473 | 612 | ||
474 | # | 613 | # |
475 | # I2C support | 614 | # I2C support |
@@ -477,34 +616,51 @@ CONFIG_DS1302=y | |||
477 | # CONFIG_I2C is not set | 616 | # CONFIG_I2C is not set |
478 | 617 | ||
479 | # | 618 | # |
619 | # SPI support | ||
620 | # | ||
621 | # CONFIG_SPI is not set | ||
622 | # CONFIG_SPI_MASTER is not set | ||
623 | |||
624 | # | ||
480 | # Dallas's 1-wire bus | 625 | # Dallas's 1-wire bus |
481 | # | 626 | # |
482 | # CONFIG_W1 is not set | 627 | # CONFIG_W1 is not set |
483 | 628 | ||
484 | # | 629 | # |
485 | # Misc devices | 630 | # Hardware Monitoring support |
486 | # | 631 | # |
632 | CONFIG_HWMON=y | ||
633 | # CONFIG_HWMON_VID is not set | ||
634 | # CONFIG_SENSORS_ABITUGURU is not set | ||
635 | # CONFIG_SENSORS_F71805F is not set | ||
636 | # CONFIG_SENSORS_VT1211 is not set | ||
637 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
487 | 638 | ||
488 | # | 639 | # |
489 | # Multimedia devices | 640 | # Multimedia devices |
490 | # | 641 | # |
491 | CONFIG_VIDEO_DEV=y | 642 | CONFIG_VIDEO_DEV=m |
643 | CONFIG_VIDEO_V4L1=y | ||
644 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
645 | CONFIG_VIDEO_V4L2=y | ||
492 | 646 | ||
493 | # | 647 | # |
494 | # Video For Linux | 648 | # Video Capture Adapters |
495 | # | 649 | # |
496 | 650 | ||
497 | # | 651 | # |
498 | # Video Adapters | 652 | # Video Capture Adapters |
499 | # | 653 | # |
654 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
655 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
656 | # CONFIG_VIDEO_VIVI is not set | ||
500 | # CONFIG_VIDEO_CPIA is not set | 657 | # CONFIG_VIDEO_CPIA is not set |
501 | CONFIG_VIDEO_M32R_AR=y | 658 | CONFIG_VIDEO_M32R_AR=m |
502 | CONFIG_VIDEO_M32R_AR_M64278=y | 659 | CONFIG_VIDEO_M32R_AR_M64278=m |
503 | 660 | ||
504 | # | 661 | # |
505 | # Radio Adapters | 662 | # Radio Adapters |
506 | # | 663 | # |
507 | # CONFIG_RADIO_MAESTRO is not set | ||
508 | 664 | ||
509 | # | 665 | # |
510 | # Digital Video Broadcasting Devices | 666 | # Digital Video Broadcasting Devices |
@@ -514,15 +670,16 @@ CONFIG_VIDEO_M32R_AR_M64278=y | |||
514 | # | 670 | # |
515 | # Graphics support | 671 | # Graphics support |
516 | # | 672 | # |
673 | CONFIG_FIRMWARE_EDID=y | ||
517 | CONFIG_FB=y | 674 | CONFIG_FB=y |
518 | # CONFIG_FB_CFB_FILLRECT is not set | 675 | CONFIG_FB_CFB_FILLRECT=y |
519 | # CONFIG_FB_CFB_COPYAREA is not set | 676 | CONFIG_FB_CFB_COPYAREA=y |
520 | # CONFIG_FB_CFB_IMAGEBLIT is not set | 677 | CONFIG_FB_CFB_IMAGEBLIT=y |
521 | # CONFIG_FB_SOFT_CURSOR is not set | ||
522 | # CONFIG_FB_MACMODES is not set | 678 | # CONFIG_FB_MACMODES is not set |
679 | # CONFIG_FB_BACKLIGHT is not set | ||
523 | # CONFIG_FB_MODE_HELPERS is not set | 680 | # CONFIG_FB_MODE_HELPERS is not set |
524 | # CONFIG_FB_TILEBLITTING is not set | 681 | # CONFIG_FB_TILEBLITTING is not set |
525 | # CONFIG_FB_S1D13XXX is not set | 682 | CONFIG_FB_S1D13XXX=y |
526 | # CONFIG_FB_VIRTUAL is not set | 683 | # CONFIG_FB_VIRTUAL is not set |
527 | 684 | ||
528 | # | 685 | # |
@@ -531,6 +688,7 @@ CONFIG_FB=y | |||
531 | # CONFIG_VGA_CONSOLE is not set | 688 | # CONFIG_VGA_CONSOLE is not set |
532 | CONFIG_DUMMY_CONSOLE=y | 689 | CONFIG_DUMMY_CONSOLE=y |
533 | CONFIG_FRAMEBUFFER_CONSOLE=y | 690 | CONFIG_FRAMEBUFFER_CONSOLE=y |
691 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
534 | # CONFIG_FONTS is not set | 692 | # CONFIG_FONTS is not set |
535 | CONFIG_FONT_8x8=y | 693 | CONFIG_FONT_8x8=y |
536 | CONFIG_FONT_8x16=y | 694 | CONFIG_FONT_8x16=y |
@@ -542,6 +700,7 @@ CONFIG_LOGO=y | |||
542 | CONFIG_LOGO_LINUX_MONO=y | 700 | CONFIG_LOGO_LINUX_MONO=y |
543 | CONFIG_LOGO_LINUX_VGA16=y | 701 | CONFIG_LOGO_LINUX_VGA16=y |
544 | CONFIG_LOGO_LINUX_CLUT224=y | 702 | CONFIG_LOGO_LINUX_CLUT224=y |
703 | CONFIG_LOGO_M32R_CLUT224=y | ||
545 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 704 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
546 | 705 | ||
547 | # | 706 | # |
@@ -554,6 +713,11 @@ CONFIG_LOGO_LINUX_CLUT224=y | |||
554 | # | 713 | # |
555 | # CONFIG_USB_ARCH_HAS_HCD is not set | 714 | # CONFIG_USB_ARCH_HAS_HCD is not set |
556 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 715 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
716 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
717 | |||
718 | # | ||
719 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
720 | # | ||
557 | 721 | ||
558 | # | 722 | # |
559 | # USB Gadget Support | 723 | # USB Gadget Support |
@@ -563,23 +727,62 @@ CONFIG_LOGO_LINUX_CLUT224=y | |||
563 | # | 727 | # |
564 | # MMC/SD Card support | 728 | # MMC/SD Card support |
565 | # | 729 | # |
566 | # CONFIG_MMC is not set | 730 | CONFIG_MMC=y |
731 | CONFIG_MMC_DEBUG=y | ||
732 | CONFIG_MMC_BLOCK=y | ||
733 | # CONFIG_MMC_TIFM_SD is not set | ||
734 | |||
735 | # | ||
736 | # LED devices | ||
737 | # | ||
738 | # CONFIG_NEW_LEDS is not set | ||
739 | |||
740 | # | ||
741 | # LED drivers | ||
742 | # | ||
743 | |||
744 | # | ||
745 | # LED Triggers | ||
746 | # | ||
567 | 747 | ||
568 | # | 748 | # |
569 | # InfiniBand support | 749 | # InfiniBand support |
570 | # | 750 | # |
571 | # CONFIG_INFINIBAND is not set | 751 | |
752 | # | ||
753 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
754 | # | ||
755 | |||
756 | # | ||
757 | # Real Time Clock | ||
758 | # | ||
759 | # CONFIG_RTC_CLASS is not set | ||
760 | |||
761 | # | ||
762 | # DMA Engine support | ||
763 | # | ||
764 | # CONFIG_DMA_ENGINE is not set | ||
765 | |||
766 | # | ||
767 | # DMA Clients | ||
768 | # | ||
769 | |||
770 | # | ||
771 | # DMA Devices | ||
772 | # | ||
572 | 773 | ||
573 | # | 774 | # |
574 | # File systems | 775 | # File systems |
575 | # | 776 | # |
576 | CONFIG_EXT2_FS=y | 777 | CONFIG_EXT2_FS=y |
577 | # CONFIG_EXT2_FS_XATTR is not set | 778 | # CONFIG_EXT2_FS_XATTR is not set |
578 | CONFIG_EXT3_FS=m | 779 | # CONFIG_EXT2_FS_XIP is not set |
780 | CONFIG_EXT3_FS=y | ||
579 | CONFIG_EXT3_FS_XATTR=y | 781 | CONFIG_EXT3_FS_XATTR=y |
580 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 782 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
581 | # CONFIG_EXT3_FS_SECURITY is not set | 783 | # CONFIG_EXT3_FS_SECURITY is not set |
582 | CONFIG_JBD=m | 784 | # CONFIG_EXT4DEV_FS is not set |
785 | CONFIG_JBD=y | ||
583 | CONFIG_JBD_DEBUG=y | 786 | CONFIG_JBD_DEBUG=y |
584 | CONFIG_FS_MBCACHE=y | 787 | CONFIG_FS_MBCACHE=y |
585 | CONFIG_REISERFS_FS=m | 788 | CONFIG_REISERFS_FS=m |
@@ -587,17 +790,19 @@ CONFIG_REISERFS_FS=m | |||
587 | # CONFIG_REISERFS_PROC_INFO is not set | 790 | # CONFIG_REISERFS_PROC_INFO is not set |
588 | # CONFIG_REISERFS_FS_XATTR is not set | 791 | # CONFIG_REISERFS_FS_XATTR is not set |
589 | # CONFIG_JFS_FS is not set | 792 | # CONFIG_JFS_FS is not set |
590 | 793 | # CONFIG_FS_POSIX_ACL is not set | |
591 | # | ||
592 | # XFS support | ||
593 | # | ||
594 | # CONFIG_XFS_FS is not set | 794 | # CONFIG_XFS_FS is not set |
795 | # CONFIG_GFS2_FS is not set | ||
796 | # CONFIG_OCFS2_FS is not set | ||
595 | # CONFIG_MINIX_FS is not set | 797 | # CONFIG_MINIX_FS is not set |
596 | # CONFIG_ROMFS_FS is not set | 798 | # CONFIG_ROMFS_FS is not set |
799 | CONFIG_INOTIFY=y | ||
800 | CONFIG_INOTIFY_USER=y | ||
597 | # CONFIG_QUOTA is not set | 801 | # CONFIG_QUOTA is not set |
598 | CONFIG_DNOTIFY=y | 802 | CONFIG_DNOTIFY=y |
599 | # CONFIG_AUTOFS_FS is not set | 803 | # CONFIG_AUTOFS_FS is not set |
600 | # CONFIG_AUTOFS4_FS is not set | 804 | # CONFIG_AUTOFS4_FS is not set |
805 | # CONFIG_FUSE_FS is not set | ||
601 | 806 | ||
602 | # | 807 | # |
603 | # CD-ROM/DVD Filesystems | 808 | # CD-ROM/DVD Filesystems |
@@ -623,15 +828,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
623 | # | 828 | # |
624 | CONFIG_PROC_FS=y | 829 | CONFIG_PROC_FS=y |
625 | CONFIG_PROC_KCORE=y | 830 | CONFIG_PROC_KCORE=y |
831 | CONFIG_PROC_SYSCTL=y | ||
626 | CONFIG_SYSFS=y | 832 | CONFIG_SYSFS=y |
627 | CONFIG_DEVFS_FS=y | ||
628 | CONFIG_DEVFS_MOUNT=y | ||
629 | # CONFIG_DEVFS_DEBUG is not set | ||
630 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
631 | CONFIG_TMPFS=y | 833 | CONFIG_TMPFS=y |
632 | # CONFIG_TMPFS_XATTR is not set | 834 | # CONFIG_TMPFS_POSIX_ACL is not set |
633 | # CONFIG_HUGETLB_PAGE is not set | 835 | # CONFIG_HUGETLB_PAGE is not set |
634 | CONFIG_RAMFS=y | 836 | CONFIG_RAMFS=y |
837 | # CONFIG_CONFIGFS_FS is not set | ||
635 | 838 | ||
636 | # | 839 | # |
637 | # Miscellaneous filesystems | 840 | # Miscellaneous filesystems |
@@ -643,6 +846,8 @@ CONFIG_RAMFS=y | |||
643 | # CONFIG_BEFS_FS is not set | 846 | # CONFIG_BEFS_FS is not set |
644 | # CONFIG_BFS_FS is not set | 847 | # CONFIG_BFS_FS is not set |
645 | # CONFIG_EFS_FS is not set | 848 | # CONFIG_EFS_FS is not set |
849 | # CONFIG_JFFS_FS is not set | ||
850 | # CONFIG_JFFS2_FS is not set | ||
646 | # CONFIG_CRAMFS is not set | 851 | # CONFIG_CRAMFS is not set |
647 | # CONFIG_VXFS_FS is not set | 852 | # CONFIG_VXFS_FS is not set |
648 | # CONFIG_HPFS_FS is not set | 853 | # CONFIG_HPFS_FS is not set |
@@ -655,12 +860,14 @@ CONFIG_RAMFS=y | |||
655 | # | 860 | # |
656 | CONFIG_NFS_FS=y | 861 | CONFIG_NFS_FS=y |
657 | CONFIG_NFS_V3=y | 862 | CONFIG_NFS_V3=y |
863 | # CONFIG_NFS_V3_ACL is not set | ||
658 | # CONFIG_NFS_V4 is not set | 864 | # CONFIG_NFS_V4 is not set |
659 | # CONFIG_NFS_DIRECTIO is not set | 865 | # CONFIG_NFS_DIRECTIO is not set |
660 | # CONFIG_NFSD is not set | 866 | # CONFIG_NFSD is not set |
661 | CONFIG_ROOT_NFS=y | 867 | CONFIG_ROOT_NFS=y |
662 | CONFIG_LOCKD=y | 868 | CONFIG_LOCKD=y |
663 | CONFIG_LOCKD_V4=y | 869 | CONFIG_LOCKD_V4=y |
870 | CONFIG_NFS_COMMON=y | ||
664 | CONFIG_SUNRPC=y | 871 | CONFIG_SUNRPC=y |
665 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 872 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
666 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 873 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -669,6 +876,7 @@ CONFIG_SUNRPC=y | |||
669 | # CONFIG_NCP_FS is not set | 876 | # CONFIG_NCP_FS is not set |
670 | # CONFIG_CODA_FS is not set | 877 | # CONFIG_CODA_FS is not set |
671 | # CONFIG_AFS_FS is not set | 878 | # CONFIG_AFS_FS is not set |
879 | # CONFIG_9P_FS is not set | ||
672 | 880 | ||
673 | # | 881 | # |
674 | # Partition Types | 882 | # Partition Types |
@@ -723,16 +931,23 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
723 | # | 931 | # |
724 | # Profiling support | 932 | # Profiling support |
725 | # | 933 | # |
726 | # CONFIG_PROFILING is not set | 934 | CONFIG_PROFILING=y |
935 | CONFIG_OPROFILE=y | ||
727 | 936 | ||
728 | # | 937 | # |
729 | # Kernel hacking | 938 | # Kernel hacking |
730 | # | 939 | # |
731 | # CONFIG_PRINTK_TIME is not set | 940 | # CONFIG_PRINTK_TIME is not set |
941 | CONFIG_ENABLE_MUST_CHECK=y | ||
942 | # CONFIG_MAGIC_SYSRQ is not set | ||
943 | # CONFIG_UNUSED_SYMBOLS is not set | ||
732 | # CONFIG_DEBUG_KERNEL is not set | 944 | # CONFIG_DEBUG_KERNEL is not set |
733 | CONFIG_LOG_BUF_SHIFT=14 | 945 | CONFIG_LOG_BUF_SHIFT=14 |
734 | # CONFIG_DEBUG_BUGVERBOSE is not set | 946 | # CONFIG_DEBUG_BUGVERBOSE is not set |
947 | # CONFIG_DEBUG_FS is not set | ||
735 | # CONFIG_FRAME_POINTER is not set | 948 | # CONFIG_FRAME_POINTER is not set |
949 | # CONFIG_UNWIND_INFO is not set | ||
950 | # CONFIG_HEADERS_CHECK is not set | ||
736 | 951 | ||
737 | # | 952 | # |
738 | # Security options | 953 | # Security options |
@@ -746,12 +961,9 @@ CONFIG_LOG_BUF_SHIFT=14 | |||
746 | # CONFIG_CRYPTO is not set | 961 | # CONFIG_CRYPTO is not set |
747 | 962 | ||
748 | # | 963 | # |
749 | # Hardware crypto devices | ||
750 | # | ||
751 | |||
752 | # | ||
753 | # Library routines | 964 | # Library routines |
754 | # | 965 | # |
755 | # CONFIG_CRC_CCITT is not set | 966 | # CONFIG_CRC_CCITT is not set |
967 | # CONFIG_CRC16 is not set | ||
756 | CONFIG_CRC32=y | 968 | CONFIG_CRC32=y |
757 | # CONFIG_LIBCRC32C is not set | 969 | # CONFIG_LIBCRC32C is not set |
diff --git a/arch/m32r/mappi/defconfig.nommu b/arch/m32r/mappi/defconfig.nommu index a8425fba340b..fbf6c384c9d0 100644 --- a/arch/m32r/mappi/defconfig.nommu +++ b/arch/m32r/mappi/defconfig.nommu | |||
@@ -1,19 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Fri Jun 3 16:21:46 2005 | 4 | # Wed Dec 13 17:57:45 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 16 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_LOCK_KERNEL=y | 17 | CONFIG_LOCK_KERNEL=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
@@ -22,29 +21,36 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
22 | # General setup | 21 | # General setup |
23 | # | 22 | # |
24 | CONFIG_LOCALVERSION="" | 23 | CONFIG_LOCALVERSION="" |
24 | CONFIG_LOCALVERSION_AUTO=y | ||
25 | # CONFIG_SYSVIPC is not set | ||
25 | # CONFIG_POSIX_MQUEUE is not set | 26 | # CONFIG_POSIX_MQUEUE is not set |
26 | CONFIG_BSD_PROCESS_ACCT=y | 27 | CONFIG_BSD_PROCESS_ACCT=y |
27 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
28 | CONFIG_SYSCTL=y | 29 | # CONFIG_TASKSTATS is not set |
30 | # CONFIG_UTS_NS is not set | ||
29 | # CONFIG_AUDIT is not set | 31 | # CONFIG_AUDIT is not set |
30 | CONFIG_HOTPLUG=y | ||
31 | CONFIG_KOBJECT_UEVENT=y | ||
32 | CONFIG_IKCONFIG=y | 32 | CONFIG_IKCONFIG=y |
33 | # CONFIG_IKCONFIG_PROC is not set | 33 | # CONFIG_IKCONFIG_PROC is not set |
34 | CONFIG_SYSFS_DEPRECATED=y | ||
35 | # CONFIG_RELAY is not set | ||
36 | CONFIG_INITRAMFS_SOURCE="" | ||
37 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
38 | CONFIG_SYSCTL=y | ||
34 | CONFIG_EMBEDDED=y | 39 | CONFIG_EMBEDDED=y |
40 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | # CONFIG_KALLSYMS is not set | 41 | # CONFIG_KALLSYMS is not set |
42 | CONFIG_HOTPLUG=y | ||
36 | CONFIG_PRINTK=y | 43 | CONFIG_PRINTK=y |
37 | CONFIG_BUG=y | 44 | CONFIG_BUG=y |
45 | CONFIG_ELF_CORE=y | ||
38 | CONFIG_BASE_FULL=y | 46 | CONFIG_BASE_FULL=y |
39 | # CONFIG_FUTEX is not set | 47 | # CONFIG_FUTEX is not set |
40 | # CONFIG_EPOLL is not set | 48 | # CONFIG_EPOLL is not set |
41 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 49 | CONFIG_SLAB=y |
42 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 50 | CONFIG_VM_EVENT_COUNTERS=y |
43 | CONFIG_CC_ALIGN_LABELS=0 | ||
44 | CONFIG_CC_ALIGN_LOOPS=0 | ||
45 | CONFIG_CC_ALIGN_JUMPS=0 | ||
46 | CONFIG_TINY_SHMEM=y | 51 | CONFIG_TINY_SHMEM=y |
47 | CONFIG_BASE_SMALL=0 | 52 | CONFIG_BASE_SMALL=0 |
53 | # CONFIG_SLOB is not set | ||
48 | 54 | ||
49 | # | 55 | # |
50 | # Loadable module support | 56 | # Loadable module support |
@@ -52,12 +58,30 @@ CONFIG_BASE_SMALL=0 | |||
52 | CONFIG_MODULES=y | 58 | CONFIG_MODULES=y |
53 | CONFIG_MODULE_UNLOAD=y | 59 | CONFIG_MODULE_UNLOAD=y |
54 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 60 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
55 | CONFIG_OBSOLETE_MODPARM=y | ||
56 | # CONFIG_MODVERSIONS is not set | 61 | # CONFIG_MODVERSIONS is not set |
57 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 62 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
58 | CONFIG_KMOD=y | 63 | CONFIG_KMOD=y |
59 | 64 | ||
60 | # | 65 | # |
66 | # Block layer | ||
67 | # | ||
68 | CONFIG_BLOCK=y | ||
69 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
70 | |||
71 | # | ||
72 | # IO Schedulers | ||
73 | # | ||
74 | CONFIG_IOSCHED_NOOP=y | ||
75 | # CONFIG_IOSCHED_AS is not set | ||
76 | CONFIG_IOSCHED_DEADLINE=y | ||
77 | CONFIG_IOSCHED_CFQ=y | ||
78 | # CONFIG_DEFAULT_AS is not set | ||
79 | # CONFIG_DEFAULT_DEADLINE is not set | ||
80 | CONFIG_DEFAULT_CFQ=y | ||
81 | # CONFIG_DEFAULT_NOOP is not set | ||
82 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
83 | |||
84 | # | ||
61 | # Processor type and features | 85 | # Processor type and features |
62 | # | 86 | # |
63 | CONFIG_PLAT_MAPPI=y | 87 | CONFIG_PLAT_MAPPI=y |
@@ -67,8 +91,10 @@ CONFIG_PLAT_MAPPI=y | |||
67 | # CONFIG_PLAT_OAKS32R is not set | 91 | # CONFIG_PLAT_OAKS32R is not set |
68 | # CONFIG_PLAT_MAPPI2 is not set | 92 | # CONFIG_PLAT_MAPPI2 is not set |
69 | # CONFIG_PLAT_MAPPI3 is not set | 93 | # CONFIG_PLAT_MAPPI3 is not set |
94 | # CONFIG_PLAT_M32104UT is not set | ||
70 | CONFIG_CHIP_M32700=y | 95 | CONFIG_CHIP_M32700=y |
71 | # CONFIG_CHIP_M32102 is not set | 96 | # CONFIG_CHIP_M32102 is not set |
97 | # CONFIG_CHIP_M32104 is not set | ||
72 | # CONFIG_CHIP_VDEC2 is not set | 98 | # CONFIG_CHIP_VDEC2 is not set |
73 | # CONFIG_CHIP_OPSP is not set | 99 | # CONFIG_CHIP_OPSP is not set |
74 | # CONFIG_MMU is not set | 100 | # CONFIG_MMU is not set |
@@ -82,18 +108,31 @@ CONFIG_TIMER_DIVIDE=128 | |||
82 | CONFIG_MEMORY_START=0x00000000 | 108 | CONFIG_MEMORY_START=0x00000000 |
83 | CONFIG_MEMORY_SIZE=0x00E00000 | 109 | CONFIG_MEMORY_SIZE=0x00E00000 |
84 | CONFIG_NOHIGHMEM=y | 110 | CONFIG_NOHIGHMEM=y |
85 | # CONFIG_DISCONTIGMEM is not set | 111 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
112 | CONFIG_SELECT_MEMORY_MODEL=y | ||
113 | # CONFIG_FLATMEM_MANUAL is not set | ||
114 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
115 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
116 | CONFIG_DISCONTIGMEM=y | ||
117 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
118 | CONFIG_NEED_MULTIPLE_NODES=y | ||
119 | # CONFIG_SPARSEMEM_STATIC is not set | ||
120 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
121 | # CONFIG_RESOURCES_64BIT is not set | ||
122 | CONFIG_IRAM_START=0x00f00000 | ||
123 | CONFIG_IRAM_SIZE=0x00080000 | ||
86 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 124 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
87 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 125 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
126 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
127 | CONFIG_GENERIC_HWEIGHT=y | ||
88 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 128 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
89 | CONFIG_PREEMPT=y | 129 | CONFIG_PREEMPT=y |
90 | # CONFIG_HAVE_DEC_LOCK is not set | ||
91 | # CONFIG_SMP is not set | 130 | # CONFIG_SMP is not set |
131 | CONFIG_NODES_SHIFT=1 | ||
92 | 132 | ||
93 | # | 133 | # |
94 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 134 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
95 | # | 135 | # |
96 | # CONFIG_PCI is not set | ||
97 | # CONFIG_ISA is not set | 136 | # CONFIG_ISA is not set |
98 | 137 | ||
99 | # | 138 | # |
@@ -102,12 +141,14 @@ CONFIG_PREEMPT=y | |||
102 | CONFIG_PCCARD=y | 141 | CONFIG_PCCARD=y |
103 | # CONFIG_PCMCIA_DEBUG is not set | 142 | # CONFIG_PCMCIA_DEBUG is not set |
104 | CONFIG_PCMCIA=y | 143 | CONFIG_PCMCIA=y |
144 | CONFIG_PCMCIA_LOAD_CIS=y | ||
145 | CONFIG_PCMCIA_IOCTL=y | ||
105 | 146 | ||
106 | # | 147 | # |
107 | # PC-card bridges | 148 | # PC-card bridges |
108 | # | 149 | # |
109 | # CONFIG_TCIC is not set | ||
110 | CONFIG_M32R_PCC=y | 150 | CONFIG_M32R_PCC=y |
151 | CONFIG_PCCARD_NONSTATIC=y | ||
111 | 152 | ||
112 | # | 153 | # |
113 | # PCI Hotplug Support | 154 | # PCI Hotplug Support |
@@ -122,6 +163,94 @@ CONFIG_BINFMT_FLAT=y | |||
122 | # CONFIG_BINFMT_MISC is not set | 163 | # CONFIG_BINFMT_MISC is not set |
123 | 164 | ||
124 | # | 165 | # |
166 | # Networking | ||
167 | # | ||
168 | CONFIG_NET=y | ||
169 | |||
170 | # | ||
171 | # Networking options | ||
172 | # | ||
173 | # CONFIG_NETDEBUG is not set | ||
174 | CONFIG_PACKET=y | ||
175 | # CONFIG_PACKET_MMAP is not set | ||
176 | CONFIG_UNIX=y | ||
177 | CONFIG_XFRM=y | ||
178 | # CONFIG_XFRM_USER is not set | ||
179 | # CONFIG_XFRM_SUB_POLICY is not set | ||
180 | # CONFIG_NET_KEY is not set | ||
181 | CONFIG_INET=y | ||
182 | # CONFIG_IP_MULTICAST is not set | ||
183 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
184 | CONFIG_IP_FIB_HASH=y | ||
185 | CONFIG_IP_PNP=y | ||
186 | CONFIG_IP_PNP_DHCP=y | ||
187 | # CONFIG_IP_PNP_BOOTP is not set | ||
188 | # CONFIG_IP_PNP_RARP is not set | ||
189 | # CONFIG_NET_IPIP is not set | ||
190 | # CONFIG_NET_IPGRE is not set | ||
191 | # CONFIG_ARPD is not set | ||
192 | # CONFIG_SYN_COOKIES is not set | ||
193 | # CONFIG_INET_AH is not set | ||
194 | # CONFIG_INET_ESP is not set | ||
195 | # CONFIG_INET_IPCOMP is not set | ||
196 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
197 | # CONFIG_INET_TUNNEL is not set | ||
198 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
199 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
200 | CONFIG_INET_XFRM_MODE_BEET=y | ||
201 | CONFIG_INET_DIAG=y | ||
202 | CONFIG_INET_TCP_DIAG=y | ||
203 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
204 | CONFIG_TCP_CONG_CUBIC=y | ||
205 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
206 | # CONFIG_TCP_MD5SIG is not set | ||
207 | # CONFIG_IPV6 is not set | ||
208 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
209 | # CONFIG_INET6_TUNNEL is not set | ||
210 | # CONFIG_NETWORK_SECMARK is not set | ||
211 | # CONFIG_NETFILTER is not set | ||
212 | |||
213 | # | ||
214 | # DCCP Configuration (EXPERIMENTAL) | ||
215 | # | ||
216 | # CONFIG_IP_DCCP is not set | ||
217 | |||
218 | # | ||
219 | # SCTP Configuration (EXPERIMENTAL) | ||
220 | # | ||
221 | # CONFIG_IP_SCTP is not set | ||
222 | |||
223 | # | ||
224 | # TIPC Configuration (EXPERIMENTAL) | ||
225 | # | ||
226 | # CONFIG_TIPC is not set | ||
227 | # CONFIG_ATM is not set | ||
228 | # CONFIG_BRIDGE is not set | ||
229 | # CONFIG_VLAN_8021Q is not set | ||
230 | # CONFIG_DECNET is not set | ||
231 | # CONFIG_LLC2 is not set | ||
232 | # CONFIG_IPX is not set | ||
233 | # CONFIG_ATALK is not set | ||
234 | # CONFIG_X25 is not set | ||
235 | # CONFIG_LAPB is not set | ||
236 | # CONFIG_ECONET is not set | ||
237 | # CONFIG_WAN_ROUTER is not set | ||
238 | |||
239 | # | ||
240 | # QoS and/or fair queueing | ||
241 | # | ||
242 | # CONFIG_NET_SCHED is not set | ||
243 | |||
244 | # | ||
245 | # Network testing | ||
246 | # | ||
247 | # CONFIG_NET_PKTGEN is not set | ||
248 | # CONFIG_HAMRADIO is not set | ||
249 | # CONFIG_IRDA is not set | ||
250 | # CONFIG_BT is not set | ||
251 | # CONFIG_IEEE80211 is not set | ||
252 | |||
253 | # | ||
125 | # Device Drivers | 254 | # Device Drivers |
126 | # | 255 | # |
127 | 256 | ||
@@ -130,7 +259,13 @@ CONFIG_BINFMT_FLAT=y | |||
130 | # | 259 | # |
131 | CONFIG_STANDALONE=y | 260 | CONFIG_STANDALONE=y |
132 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 261 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
133 | # CONFIG_FW_LOADER is not set | 262 | CONFIG_FW_LOADER=y |
263 | # CONFIG_SYS_HYPERVISOR is not set | ||
264 | |||
265 | # | ||
266 | # Connector - unified userspace <-> kernelspace linker | ||
267 | # | ||
268 | # CONFIG_CONNECTOR is not set | ||
134 | 269 | ||
135 | # | 270 | # |
136 | # Memory Technology Devices (MTD) | 271 | # Memory Technology Devices (MTD) |
@@ -149,7 +284,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
149 | # | 284 | # |
150 | # Block devices | 285 | # Block devices |
151 | # | 286 | # |
152 | # CONFIG_BLK_DEV_FD is not set | ||
153 | # CONFIG_BLK_DEV_COW_COMMON is not set | 287 | # CONFIG_BLK_DEV_COW_COMMON is not set |
154 | CONFIG_BLK_DEV_LOOP=y | 288 | CONFIG_BLK_DEV_LOOP=y |
155 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 289 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -157,18 +291,15 @@ CONFIG_BLK_DEV_NBD=y | |||
157 | CONFIG_BLK_DEV_RAM=y | 291 | CONFIG_BLK_DEV_RAM=y |
158 | CONFIG_BLK_DEV_RAM_COUNT=16 | 292 | CONFIG_BLK_DEV_RAM_COUNT=16 |
159 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 293 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
294 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
160 | # CONFIG_BLK_DEV_INITRD is not set | 295 | # CONFIG_BLK_DEV_INITRD is not set |
161 | CONFIG_INITRAMFS_SOURCE="" | ||
162 | # CONFIG_CDROM_PKTCDVD is not set | 296 | # CONFIG_CDROM_PKTCDVD is not set |
297 | # CONFIG_ATA_OVER_ETH is not set | ||
163 | 298 | ||
164 | # | 299 | # |
165 | # IO Schedulers | 300 | # Misc devices |
166 | # | 301 | # |
167 | CONFIG_IOSCHED_NOOP=y | 302 | # CONFIG_TIFM_CORE is not set |
168 | # CONFIG_IOSCHED_AS is not set | ||
169 | CONFIG_IOSCHED_DEADLINE=y | ||
170 | CONFIG_IOSCHED_CFQ=y | ||
171 | # CONFIG_ATA_OVER_ETH is not set | ||
172 | 303 | ||
173 | # | 304 | # |
174 | # ATA/ATAPI/MFM/RLL support | 305 | # ATA/ATAPI/MFM/RLL support |
@@ -178,7 +309,13 @@ CONFIG_IOSCHED_CFQ=y | |||
178 | # | 309 | # |
179 | # SCSI device support | 310 | # SCSI device support |
180 | # | 311 | # |
312 | # CONFIG_RAID_ATTRS is not set | ||
181 | # CONFIG_SCSI is not set | 313 | # CONFIG_SCSI is not set |
314 | # CONFIG_SCSI_NETLINK is not set | ||
315 | |||
316 | # | ||
317 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
318 | # | ||
182 | 319 | ||
183 | # | 320 | # |
184 | # Multi-device support (RAID and LVM) | 321 | # Multi-device support (RAID and LVM) |
@@ -188,6 +325,7 @@ CONFIG_IOSCHED_CFQ=y | |||
188 | # | 325 | # |
189 | # Fusion MPT device support | 326 | # Fusion MPT device support |
190 | # | 327 | # |
328 | # CONFIG_FUSION is not set | ||
191 | 329 | ||
192 | # | 330 | # |
193 | # IEEE 1394 (FireWire) support | 331 | # IEEE 1394 (FireWire) support |
@@ -198,69 +336,8 @@ CONFIG_IOSCHED_CFQ=y | |||
198 | # | 336 | # |
199 | 337 | ||
200 | # | 338 | # |
201 | # Networking support | 339 | # Network device support |
202 | # | ||
203 | CONFIG_NET=y | ||
204 | |||
205 | # | ||
206 | # Networking options | ||
207 | # | ||
208 | CONFIG_PACKET=y | ||
209 | # CONFIG_PACKET_MMAP is not set | ||
210 | CONFIG_UNIX=y | ||
211 | # CONFIG_NET_KEY is not set | ||
212 | CONFIG_INET=y | ||
213 | # CONFIG_IP_MULTICAST is not set | ||
214 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
215 | CONFIG_IP_PNP=y | ||
216 | CONFIG_IP_PNP_DHCP=y | ||
217 | # CONFIG_IP_PNP_BOOTP is not set | ||
218 | # CONFIG_IP_PNP_RARP is not set | ||
219 | # CONFIG_NET_IPIP is not set | ||
220 | # CONFIG_NET_IPGRE is not set | ||
221 | # CONFIG_ARPD is not set | ||
222 | # CONFIG_SYN_COOKIES is not set | ||
223 | # CONFIG_INET_AH is not set | ||
224 | # CONFIG_INET_ESP is not set | ||
225 | # CONFIG_INET_IPCOMP is not set | ||
226 | # CONFIG_INET_TUNNEL is not set | ||
227 | CONFIG_IP_TCPDIAG=y | ||
228 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
229 | # CONFIG_IPV6 is not set | ||
230 | # CONFIG_NETFILTER is not set | ||
231 | |||
232 | # | ||
233 | # SCTP Configuration (EXPERIMENTAL) | ||
234 | # | ||
235 | # CONFIG_IP_SCTP is not set | ||
236 | # CONFIG_ATM is not set | ||
237 | # CONFIG_BRIDGE is not set | ||
238 | # CONFIG_VLAN_8021Q is not set | ||
239 | # CONFIG_DECNET is not set | ||
240 | # CONFIG_LLC2 is not set | ||
241 | # CONFIG_IPX is not set | ||
242 | # CONFIG_ATALK is not set | ||
243 | # CONFIG_X25 is not set | ||
244 | # CONFIG_LAPB is not set | ||
245 | # CONFIG_NET_DIVERT is not set | ||
246 | # CONFIG_ECONET is not set | ||
247 | # CONFIG_WAN_ROUTER is not set | ||
248 | |||
249 | # | ||
250 | # QoS and/or fair queueing | ||
251 | # | ||
252 | # CONFIG_NET_SCHED is not set | ||
253 | # CONFIG_NET_CLS_ROUTE is not set | ||
254 | |||
255 | # | ||
256 | # Network testing | ||
257 | # | 340 | # |
258 | # CONFIG_NET_PKTGEN is not set | ||
259 | # CONFIG_NETPOLL is not set | ||
260 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
261 | # CONFIG_HAMRADIO is not set | ||
262 | # CONFIG_IRDA is not set | ||
263 | # CONFIG_BT is not set | ||
264 | CONFIG_NETDEVICES=y | 341 | CONFIG_NETDEVICES=y |
265 | # CONFIG_DUMMY is not set | 342 | # CONFIG_DUMMY is not set |
266 | # CONFIG_BONDING is not set | 343 | # CONFIG_BONDING is not set |
@@ -268,6 +345,10 @@ CONFIG_NETDEVICES=y | |||
268 | # CONFIG_TUN is not set | 345 | # CONFIG_TUN is not set |
269 | 346 | ||
270 | # | 347 | # |
348 | # PHY device support | ||
349 | # | ||
350 | |||
351 | # | ||
271 | # Ethernet (10 or 100Mbit) | 352 | # Ethernet (10 or 100Mbit) |
272 | # | 353 | # |
273 | # CONFIG_NET_ETHERNET is not set | 354 | # CONFIG_NET_ETHERNET is not set |
@@ -303,6 +384,8 @@ CONFIG_NE2000=y | |||
303 | # CONFIG_SLIP is not set | 384 | # CONFIG_SLIP is not set |
304 | # CONFIG_SHAPER is not set | 385 | # CONFIG_SHAPER is not set |
305 | # CONFIG_NETCONSOLE is not set | 386 | # CONFIG_NETCONSOLE is not set |
387 | # CONFIG_NETPOLL is not set | ||
388 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
306 | 389 | ||
307 | # | 390 | # |
308 | # ISDN subsystem | 391 | # ISDN subsystem |
@@ -318,6 +401,7 @@ CONFIG_NE2000=y | |||
318 | # Input device support | 401 | # Input device support |
319 | # | 402 | # |
320 | CONFIG_INPUT=y | 403 | CONFIG_INPUT=y |
404 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
321 | 405 | ||
322 | # | 406 | # |
323 | # Userland interfaces | 407 | # Userland interfaces |
@@ -346,7 +430,6 @@ CONFIG_SERIO_SERPORT=y | |||
346 | # CONFIG_SERIO_LIBPS2 is not set | 430 | # CONFIG_SERIO_LIBPS2 is not set |
347 | # CONFIG_SERIO_RAW is not set | 431 | # CONFIG_SERIO_RAW is not set |
348 | # CONFIG_GAMEPORT is not set | 432 | # CONFIG_GAMEPORT is not set |
349 | CONFIG_SOUND_GAMEPORT=y | ||
350 | 433 | ||
351 | # | 434 | # |
352 | # Character devices | 435 | # Character devices |
@@ -366,7 +449,6 @@ CONFIG_SERIAL_CORE=y | |||
366 | CONFIG_SERIAL_CORE_CONSOLE=y | 449 | CONFIG_SERIAL_CORE_CONSOLE=y |
367 | CONFIG_SERIAL_M32R_SIO=y | 450 | CONFIG_SERIAL_M32R_SIO=y |
368 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y | 451 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y |
369 | # CONFIG_SERIAL_M32R_PLDSIO is not set | ||
370 | CONFIG_UNIX98_PTYS=y | 452 | CONFIG_UNIX98_PTYS=y |
371 | CONFIG_LEGACY_PTYS=y | 453 | CONFIG_LEGACY_PTYS=y |
372 | CONFIG_LEGACY_PTY_COUNT=256 | 454 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -380,25 +462,27 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
380 | # Watchdog Cards | 462 | # Watchdog Cards |
381 | # | 463 | # |
382 | # CONFIG_WATCHDOG is not set | 464 | # CONFIG_WATCHDOG is not set |
465 | CONFIG_HW_RANDOM=y | ||
383 | # CONFIG_RTC is not set | 466 | # CONFIG_RTC is not set |
384 | # CONFIG_GEN_RTC is not set | ||
385 | # CONFIG_DTLK is not set | 467 | # CONFIG_DTLK is not set |
386 | # CONFIG_R3964 is not set | 468 | # CONFIG_R3964 is not set |
387 | 469 | ||
388 | # | 470 | # |
389 | # Ftape, the floppy tape device driver | 471 | # Ftape, the floppy tape device driver |
390 | # | 472 | # |
391 | # CONFIG_DRM is not set | ||
392 | 473 | ||
393 | # | 474 | # |
394 | # PCMCIA character devices | 475 | # PCMCIA character devices |
395 | # | 476 | # |
396 | # CONFIG_SYNCLINK_CS is not set | 477 | # CONFIG_SYNCLINK_CS is not set |
478 | # CONFIG_CARDMAN_4000 is not set | ||
479 | # CONFIG_CARDMAN_4040 is not set | ||
397 | # CONFIG_RAW_DRIVER is not set | 480 | # CONFIG_RAW_DRIVER is not set |
398 | 481 | ||
399 | # | 482 | # |
400 | # TPM devices | 483 | # TPM devices |
401 | # | 484 | # |
485 | # CONFIG_TCG_TPM is not set | ||
402 | 486 | ||
403 | # | 487 | # |
404 | # I2C support | 488 | # I2C support |
@@ -406,13 +490,25 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
406 | # CONFIG_I2C is not set | 490 | # CONFIG_I2C is not set |
407 | 491 | ||
408 | # | 492 | # |
493 | # SPI support | ||
494 | # | ||
495 | # CONFIG_SPI is not set | ||
496 | # CONFIG_SPI_MASTER is not set | ||
497 | |||
498 | # | ||
409 | # Dallas's 1-wire bus | 499 | # Dallas's 1-wire bus |
410 | # | 500 | # |
411 | # CONFIG_W1 is not set | 501 | # CONFIG_W1 is not set |
412 | 502 | ||
413 | # | 503 | # |
414 | # Misc devices | 504 | # Hardware Monitoring support |
415 | # | 505 | # |
506 | CONFIG_HWMON=y | ||
507 | # CONFIG_HWMON_VID is not set | ||
508 | # CONFIG_SENSORS_ABITUGURU is not set | ||
509 | # CONFIG_SENSORS_F71805F is not set | ||
510 | # CONFIG_SENSORS_VT1211 is not set | ||
511 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
416 | 512 | ||
417 | # | 513 | # |
418 | # Multimedia devices | 514 | # Multimedia devices |
@@ -427,7 +523,9 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
427 | # | 523 | # |
428 | # Graphics support | 524 | # Graphics support |
429 | # | 525 | # |
526 | CONFIG_FIRMWARE_EDID=y | ||
430 | # CONFIG_FB is not set | 527 | # CONFIG_FB is not set |
528 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
431 | 529 | ||
432 | # | 530 | # |
433 | # Sound | 531 | # Sound |
@@ -439,6 +537,11 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
439 | # | 537 | # |
440 | # CONFIG_USB_ARCH_HAS_HCD is not set | 538 | # CONFIG_USB_ARCH_HAS_HCD is not set |
441 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 539 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
540 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
541 | |||
542 | # | ||
543 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
544 | # | ||
442 | 545 | ||
443 | # | 546 | # |
444 | # USB Gadget Support | 547 | # USB Gadget Support |
@@ -451,30 +554,72 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
451 | # CONFIG_MMC is not set | 554 | # CONFIG_MMC is not set |
452 | 555 | ||
453 | # | 556 | # |
557 | # LED devices | ||
558 | # | ||
559 | # CONFIG_NEW_LEDS is not set | ||
560 | |||
561 | # | ||
562 | # LED drivers | ||
563 | # | ||
564 | |||
565 | # | ||
566 | # LED Triggers | ||
567 | # | ||
568 | |||
569 | # | ||
454 | # InfiniBand support | 570 | # InfiniBand support |
455 | # | 571 | # |
456 | # CONFIG_INFINIBAND is not set | 572 | |
573 | # | ||
574 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
575 | # | ||
576 | |||
577 | # | ||
578 | # Real Time Clock | ||
579 | # | ||
580 | # CONFIG_RTC_CLASS is not set | ||
581 | |||
582 | # | ||
583 | # DMA Engine support | ||
584 | # | ||
585 | # CONFIG_DMA_ENGINE is not set | ||
586 | |||
587 | # | ||
588 | # DMA Clients | ||
589 | # | ||
590 | |||
591 | # | ||
592 | # DMA Devices | ||
593 | # | ||
457 | 594 | ||
458 | # | 595 | # |
459 | # File systems | 596 | # File systems |
460 | # | 597 | # |
461 | CONFIG_EXT2_FS=y | 598 | CONFIG_EXT2_FS=y |
462 | # CONFIG_EXT2_FS_XATTR is not set | 599 | # CONFIG_EXT2_FS_XATTR is not set |
463 | # CONFIG_EXT3_FS is not set | 600 | CONFIG_EXT3_FS=y |
464 | # CONFIG_JBD is not set | 601 | CONFIG_EXT3_FS_XATTR=y |
602 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
603 | # CONFIG_EXT3_FS_SECURITY is not set | ||
604 | # CONFIG_EXT4DEV_FS is not set | ||
605 | CONFIG_JBD=y | ||
606 | # CONFIG_JBD_DEBUG is not set | ||
607 | CONFIG_FS_MBCACHE=y | ||
465 | # CONFIG_REISERFS_FS is not set | 608 | # CONFIG_REISERFS_FS is not set |
466 | # CONFIG_JFS_FS is not set | 609 | # CONFIG_JFS_FS is not set |
467 | 610 | # CONFIG_FS_POSIX_ACL is not set | |
468 | # | ||
469 | # XFS support | ||
470 | # | ||
471 | # CONFIG_XFS_FS is not set | 611 | # CONFIG_XFS_FS is not set |
612 | # CONFIG_GFS2_FS is not set | ||
613 | # CONFIG_OCFS2_FS is not set | ||
472 | # CONFIG_MINIX_FS is not set | 614 | # CONFIG_MINIX_FS is not set |
473 | # CONFIG_ROMFS_FS is not set | 615 | # CONFIG_ROMFS_FS is not set |
616 | CONFIG_INOTIFY=y | ||
617 | CONFIG_INOTIFY_USER=y | ||
474 | # CONFIG_QUOTA is not set | 618 | # CONFIG_QUOTA is not set |
475 | CONFIG_DNOTIFY=y | 619 | CONFIG_DNOTIFY=y |
476 | # CONFIG_AUTOFS_FS is not set | 620 | # CONFIG_AUTOFS_FS is not set |
477 | # CONFIG_AUTOFS4_FS is not set | 621 | # CONFIG_AUTOFS4_FS is not set |
622 | # CONFIG_FUSE_FS is not set | ||
478 | 623 | ||
479 | # | 624 | # |
480 | # CD-ROM/DVD Filesystems | 625 | # CD-ROM/DVD Filesystems |
@@ -493,15 +638,12 @@ CONFIG_DNOTIFY=y | |||
493 | # Pseudo filesystems | 638 | # Pseudo filesystems |
494 | # | 639 | # |
495 | CONFIG_PROC_FS=y | 640 | CONFIG_PROC_FS=y |
641 | CONFIG_PROC_SYSCTL=y | ||
496 | CONFIG_SYSFS=y | 642 | CONFIG_SYSFS=y |
497 | CONFIG_DEVFS_FS=y | ||
498 | CONFIG_DEVFS_MOUNT=y | ||
499 | # CONFIG_DEVFS_DEBUG is not set | ||
500 | CONFIG_DEVPTS_FS_XATTR=y | ||
501 | CONFIG_DEVPTS_FS_SECURITY=y | ||
502 | # CONFIG_TMPFS is not set | 643 | # CONFIG_TMPFS is not set |
503 | # CONFIG_HUGETLB_PAGE is not set | 644 | # CONFIG_HUGETLB_PAGE is not set |
504 | CONFIG_RAMFS=y | 645 | CONFIG_RAMFS=y |
646 | # CONFIG_CONFIGFS_FS is not set | ||
505 | 647 | ||
506 | # | 648 | # |
507 | # Miscellaneous filesystems | 649 | # Miscellaneous filesystems |
@@ -525,12 +667,14 @@ CONFIG_RAMFS=y | |||
525 | # | 667 | # |
526 | CONFIG_NFS_FS=y | 668 | CONFIG_NFS_FS=y |
527 | CONFIG_NFS_V3=y | 669 | CONFIG_NFS_V3=y |
670 | # CONFIG_NFS_V3_ACL is not set | ||
528 | # CONFIG_NFS_V4 is not set | 671 | # CONFIG_NFS_V4 is not set |
529 | # CONFIG_NFS_DIRECTIO is not set | 672 | # CONFIG_NFS_DIRECTIO is not set |
530 | # CONFIG_NFSD is not set | 673 | # CONFIG_NFSD is not set |
531 | CONFIG_ROOT_NFS=y | 674 | CONFIG_ROOT_NFS=y |
532 | CONFIG_LOCKD=y | 675 | CONFIG_LOCKD=y |
533 | CONFIG_LOCKD_V4=y | 676 | CONFIG_LOCKD_V4=y |
677 | CONFIG_NFS_COMMON=y | ||
534 | CONFIG_SUNRPC=y | 678 | CONFIG_SUNRPC=y |
535 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 679 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
536 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 680 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -539,6 +683,7 @@ CONFIG_SUNRPC=y | |||
539 | # CONFIG_NCP_FS is not set | 683 | # CONFIG_NCP_FS is not set |
540 | # CONFIG_CODA_FS is not set | 684 | # CONFIG_CODA_FS is not set |
541 | # CONFIG_AFS_FS is not set | 685 | # CONFIG_AFS_FS is not set |
686 | # CONFIG_9P_FS is not set | ||
542 | 687 | ||
543 | # | 688 | # |
544 | # Partition Types | 689 | # Partition Types |
@@ -599,10 +744,16 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
599 | # Kernel hacking | 744 | # Kernel hacking |
600 | # | 745 | # |
601 | # CONFIG_PRINTK_TIME is not set | 746 | # CONFIG_PRINTK_TIME is not set |
747 | CONFIG_ENABLE_MUST_CHECK=y | ||
748 | # CONFIG_MAGIC_SYSRQ is not set | ||
749 | # CONFIG_UNUSED_SYMBOLS is not set | ||
602 | # CONFIG_DEBUG_KERNEL is not set | 750 | # CONFIG_DEBUG_KERNEL is not set |
603 | CONFIG_LOG_BUF_SHIFT=14 | 751 | CONFIG_LOG_BUF_SHIFT=14 |
604 | # CONFIG_DEBUG_BUGVERBOSE is not set | 752 | # CONFIG_DEBUG_BUGVERBOSE is not set |
753 | # CONFIG_DEBUG_FS is not set | ||
605 | # CONFIG_FRAME_POINTER is not set | 754 | # CONFIG_FRAME_POINTER is not set |
755 | # CONFIG_UNWIND_INFO is not set | ||
756 | # CONFIG_HEADERS_CHECK is not set | ||
606 | 757 | ||
607 | # | 758 | # |
608 | # Security options | 759 | # Security options |
@@ -616,12 +767,9 @@ CONFIG_LOG_BUF_SHIFT=14 | |||
616 | # CONFIG_CRYPTO is not set | 767 | # CONFIG_CRYPTO is not set |
617 | 768 | ||
618 | # | 769 | # |
619 | # Hardware crypto devices | ||
620 | # | ||
621 | |||
622 | # | ||
623 | # Library routines | 770 | # Library routines |
624 | # | 771 | # |
625 | # CONFIG_CRC_CCITT is not set | 772 | # CONFIG_CRC_CCITT is not set |
773 | # CONFIG_CRC16 is not set | ||
626 | CONFIG_CRC32=y | 774 | CONFIG_CRC32=y |
627 | # CONFIG_LIBCRC32C is not set | 775 | # CONFIG_LIBCRC32C is not set |
diff --git a/arch/m32r/mappi/defconfig.smp b/arch/m32r/mappi/defconfig.smp index 1a7f3cd42246..168669202b94 100644 --- a/arch/m32r/mappi/defconfig.smp +++ b/arch/m32r/mappi/defconfig.smp | |||
@@ -1,21 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Fri Jun 3 16:21:52 2005 | 4 | # Wed Dec 13 17:50:59 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
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 | ||
17 | CONFIG_BROKEN=y | ||
18 | CONFIG_BROKEN_ON_SMP=y | ||
19 | CONFIG_LOCK_KERNEL=y | 16 | CONFIG_LOCK_KERNEL=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 17 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
21 | 18 | ||
@@ -23,32 +20,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
23 | # General setup | 20 | # General setup |
24 | # | 21 | # |
25 | CONFIG_LOCALVERSION="" | 22 | CONFIG_LOCALVERSION="" |
23 | CONFIG_LOCALVERSION_AUTO=y | ||
26 | CONFIG_SWAP=y | 24 | CONFIG_SWAP=y |
27 | CONFIG_SYSVIPC=y | 25 | CONFIG_SYSVIPC=y |
26 | # CONFIG_IPC_NS is not set | ||
28 | # CONFIG_POSIX_MQUEUE is not set | 27 | # CONFIG_POSIX_MQUEUE is not set |
29 | # CONFIG_BSD_PROCESS_ACCT is not set | 28 | # CONFIG_BSD_PROCESS_ACCT is not set |
30 | CONFIG_SYSCTL=y | 29 | # CONFIG_TASKSTATS is not set |
30 | # CONFIG_UTS_NS is not set | ||
31 | # CONFIG_AUDIT is not set | 31 | # CONFIG_AUDIT is not set |
32 | CONFIG_HOTPLUG=y | ||
33 | CONFIG_KOBJECT_UEVENT=y | ||
34 | CONFIG_IKCONFIG=y | 32 | CONFIG_IKCONFIG=y |
35 | CONFIG_IKCONFIG_PROC=y | 33 | CONFIG_IKCONFIG_PROC=y |
36 | # CONFIG_CPUSETS is not set | 34 | # CONFIG_CPUSETS is not set |
35 | CONFIG_SYSFS_DEPRECATED=y | ||
36 | # CONFIG_RELAY is not set | ||
37 | CONFIG_INITRAMFS_SOURCE="" | ||
38 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
39 | CONFIG_SYSCTL=y | ||
37 | CONFIG_EMBEDDED=y | 40 | CONFIG_EMBEDDED=y |
41 | CONFIG_SYSCTL_SYSCALL=y | ||
38 | # CONFIG_KALLSYMS is not set | 42 | # CONFIG_KALLSYMS is not set |
43 | CONFIG_HOTPLUG=y | ||
39 | CONFIG_PRINTK=y | 44 | CONFIG_PRINTK=y |
40 | CONFIG_BUG=y | 45 | CONFIG_BUG=y |
46 | CONFIG_ELF_CORE=y | ||
41 | CONFIG_BASE_FULL=y | 47 | CONFIG_BASE_FULL=y |
42 | # CONFIG_FUTEX is not set | 48 | # CONFIG_FUTEX is not set |
43 | # CONFIG_EPOLL is not set | 49 | # CONFIG_EPOLL is not set |
44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
45 | CONFIG_SHMEM=y | 50 | CONFIG_SHMEM=y |
46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 51 | CONFIG_SLAB=y |
47 | CONFIG_CC_ALIGN_LABELS=0 | 52 | CONFIG_VM_EVENT_COUNTERS=y |
48 | CONFIG_CC_ALIGN_LOOPS=0 | ||
49 | CONFIG_CC_ALIGN_JUMPS=0 | ||
50 | # CONFIG_TINY_SHMEM is not set | 53 | # CONFIG_TINY_SHMEM is not set |
51 | CONFIG_BASE_SMALL=0 | 54 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
52 | 56 | ||
53 | # | 57 | # |
54 | # Loadable module support | 58 | # Loadable module support |
@@ -56,13 +60,31 @@ CONFIG_BASE_SMALL=0 | |||
56 | CONFIG_MODULES=y | 60 | CONFIG_MODULES=y |
57 | CONFIG_MODULE_UNLOAD=y | 61 | CONFIG_MODULE_UNLOAD=y |
58 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 62 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
59 | CONFIG_OBSOLETE_MODPARM=y | ||
60 | # CONFIG_MODVERSIONS is not set | 63 | # CONFIG_MODVERSIONS is not set |
61 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 64 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
62 | CONFIG_KMOD=y | 65 | CONFIG_KMOD=y |
63 | CONFIG_STOP_MACHINE=y | 66 | CONFIG_STOP_MACHINE=y |
64 | 67 | ||
65 | # | 68 | # |
69 | # Block layer | ||
70 | # | ||
71 | CONFIG_BLOCK=y | ||
72 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
73 | |||
74 | # | ||
75 | # IO Schedulers | ||
76 | # | ||
77 | CONFIG_IOSCHED_NOOP=y | ||
78 | # CONFIG_IOSCHED_AS is not set | ||
79 | CONFIG_IOSCHED_DEADLINE=y | ||
80 | CONFIG_IOSCHED_CFQ=y | ||
81 | # CONFIG_DEFAULT_AS is not set | ||
82 | # CONFIG_DEFAULT_DEADLINE is not set | ||
83 | CONFIG_DEFAULT_CFQ=y | ||
84 | # CONFIG_DEFAULT_NOOP is not set | ||
85 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
86 | |||
87 | # | ||
66 | # Processor type and features | 88 | # Processor type and features |
67 | # | 89 | # |
68 | CONFIG_PLAT_MAPPI=y | 90 | CONFIG_PLAT_MAPPI=y |
@@ -72,8 +94,10 @@ CONFIG_PLAT_MAPPI=y | |||
72 | # CONFIG_PLAT_OAKS32R is not set | 94 | # CONFIG_PLAT_OAKS32R is not set |
73 | # CONFIG_PLAT_MAPPI2 is not set | 95 | # CONFIG_PLAT_MAPPI2 is not set |
74 | # CONFIG_PLAT_MAPPI3 is not set | 96 | # CONFIG_PLAT_MAPPI3 is not set |
97 | # CONFIG_PLAT_M32104UT is not set | ||
75 | CONFIG_CHIP_M32700=y | 98 | CONFIG_CHIP_M32700=y |
76 | # CONFIG_CHIP_M32102 is not set | 99 | # CONFIG_CHIP_M32102 is not set |
100 | # CONFIG_CHIP_M32104 is not set | ||
77 | # CONFIG_CHIP_VDEC2 is not set | 101 | # CONFIG_CHIP_VDEC2 is not set |
78 | # CONFIG_CHIP_OPSP is not set | 102 | # CONFIG_CHIP_OPSP is not set |
79 | CONFIG_MMU=y | 103 | CONFIG_MMU=y |
@@ -87,23 +111,33 @@ CONFIG_TIMER_DIVIDE=128 | |||
87 | CONFIG_MEMORY_START=0x08000000 | 111 | CONFIG_MEMORY_START=0x08000000 |
88 | CONFIG_MEMORY_SIZE=0x04000000 | 112 | CONFIG_MEMORY_SIZE=0x04000000 |
89 | CONFIG_NOHIGHMEM=y | 113 | CONFIG_NOHIGHMEM=y |
114 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
115 | CONFIG_SELECT_MEMORY_MODEL=y | ||
116 | # CONFIG_FLATMEM_MANUAL is not set | ||
117 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
118 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
90 | CONFIG_DISCONTIGMEM=y | 119 | CONFIG_DISCONTIGMEM=y |
120 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
121 | CONFIG_NEED_MULTIPLE_NODES=y | ||
122 | # CONFIG_SPARSEMEM_STATIC is not set | ||
123 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
124 | # CONFIG_RESOURCES_64BIT is not set | ||
91 | CONFIG_IRAM_START=0x00f00000 | 125 | CONFIG_IRAM_START=0x00f00000 |
92 | CONFIG_IRAM_SIZE=0x00080000 | 126 | CONFIG_IRAM_SIZE=0x00080000 |
93 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 127 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
94 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 128 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
129 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
130 | CONFIG_GENERIC_HWEIGHT=y | ||
95 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 131 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
96 | CONFIG_PREEMPT=y | 132 | CONFIG_PREEMPT=y |
97 | # CONFIG_HAVE_DEC_LOCK is not set | ||
98 | CONFIG_SMP=y | 133 | CONFIG_SMP=y |
99 | CONFIG_CHIP_M32700_TS1=y | 134 | CONFIG_CHIP_M32700_TS1=y |
100 | CONFIG_NR_CPUS=2 | 135 | CONFIG_NR_CPUS=2 |
101 | # CONFIG_NUMA is not set | 136 | CONFIG_NODES_SHIFT=1 |
102 | 137 | ||
103 | # | 138 | # |
104 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 139 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
105 | # | 140 | # |
106 | # CONFIG_PCI is not set | ||
107 | # CONFIG_ISA is not set | 141 | # CONFIG_ISA is not set |
108 | 142 | ||
109 | # | 143 | # |
@@ -112,12 +146,14 @@ CONFIG_NR_CPUS=2 | |||
112 | CONFIG_PCCARD=y | 146 | CONFIG_PCCARD=y |
113 | # CONFIG_PCMCIA_DEBUG is not set | 147 | # CONFIG_PCMCIA_DEBUG is not set |
114 | CONFIG_PCMCIA=y | 148 | CONFIG_PCMCIA=y |
149 | CONFIG_PCMCIA_LOAD_CIS=y | ||
150 | CONFIG_PCMCIA_IOCTL=y | ||
115 | 151 | ||
116 | # | 152 | # |
117 | # PC-card bridges | 153 | # PC-card bridges |
118 | # | 154 | # |
119 | # CONFIG_TCIC is not set | ||
120 | CONFIG_M32R_PCC=y | 155 | CONFIG_M32R_PCC=y |
156 | CONFIG_PCCARD_NONSTATIC=y | ||
121 | 157 | ||
122 | # | 158 | # |
123 | # PCI Hotplug Support | 159 | # PCI Hotplug Support |
@@ -130,6 +166,93 @@ CONFIG_BINFMT_ELF=y | |||
130 | # CONFIG_BINFMT_MISC is not set | 166 | # CONFIG_BINFMT_MISC is not set |
131 | 167 | ||
132 | # | 168 | # |
169 | # Networking | ||
170 | # | ||
171 | CONFIG_NET=y | ||
172 | |||
173 | # | ||
174 | # Networking options | ||
175 | # | ||
176 | # CONFIG_NETDEBUG is not set | ||
177 | # CONFIG_PACKET is not set | ||
178 | CONFIG_UNIX=y | ||
179 | CONFIG_XFRM=y | ||
180 | # CONFIG_XFRM_USER is not set | ||
181 | # CONFIG_XFRM_SUB_POLICY is not set | ||
182 | # CONFIG_NET_KEY is not set | ||
183 | CONFIG_INET=y | ||
184 | # CONFIG_IP_MULTICAST is not set | ||
185 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
186 | CONFIG_IP_FIB_HASH=y | ||
187 | CONFIG_IP_PNP=y | ||
188 | CONFIG_IP_PNP_DHCP=y | ||
189 | # CONFIG_IP_PNP_BOOTP is not set | ||
190 | # CONFIG_IP_PNP_RARP is not set | ||
191 | # CONFIG_NET_IPIP is not set | ||
192 | # CONFIG_NET_IPGRE is not set | ||
193 | # CONFIG_ARPD is not set | ||
194 | # CONFIG_SYN_COOKIES is not set | ||
195 | # CONFIG_INET_AH is not set | ||
196 | # CONFIG_INET_ESP is not set | ||
197 | # CONFIG_INET_IPCOMP is not set | ||
198 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
199 | # CONFIG_INET_TUNNEL is not set | ||
200 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
201 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
202 | CONFIG_INET_XFRM_MODE_BEET=y | ||
203 | CONFIG_INET_DIAG=y | ||
204 | CONFIG_INET_TCP_DIAG=y | ||
205 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
206 | CONFIG_TCP_CONG_CUBIC=y | ||
207 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
208 | # CONFIG_TCP_MD5SIG is not set | ||
209 | # CONFIG_IPV6 is not set | ||
210 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
211 | # CONFIG_INET6_TUNNEL is not set | ||
212 | # CONFIG_NETWORK_SECMARK is not set | ||
213 | # CONFIG_NETFILTER is not set | ||
214 | |||
215 | # | ||
216 | # DCCP Configuration (EXPERIMENTAL) | ||
217 | # | ||
218 | # CONFIG_IP_DCCP is not set | ||
219 | |||
220 | # | ||
221 | # SCTP Configuration (EXPERIMENTAL) | ||
222 | # | ||
223 | # CONFIG_IP_SCTP is not set | ||
224 | |||
225 | # | ||
226 | # TIPC Configuration (EXPERIMENTAL) | ||
227 | # | ||
228 | # CONFIG_TIPC is not set | ||
229 | # CONFIG_ATM is not set | ||
230 | # CONFIG_BRIDGE is not set | ||
231 | # CONFIG_VLAN_8021Q is not set | ||
232 | # CONFIG_DECNET is not set | ||
233 | # CONFIG_LLC2 is not set | ||
234 | # CONFIG_IPX is not set | ||
235 | # CONFIG_ATALK is not set | ||
236 | # CONFIG_X25 is not set | ||
237 | # CONFIG_LAPB is not set | ||
238 | # CONFIG_ECONET is not set | ||
239 | # CONFIG_WAN_ROUTER is not set | ||
240 | |||
241 | # | ||
242 | # QoS and/or fair queueing | ||
243 | # | ||
244 | # CONFIG_NET_SCHED is not set | ||
245 | |||
246 | # | ||
247 | # Network testing | ||
248 | # | ||
249 | # CONFIG_NET_PKTGEN is not set | ||
250 | # CONFIG_HAMRADIO is not set | ||
251 | # CONFIG_IRDA is not set | ||
252 | # CONFIG_BT is not set | ||
253 | # CONFIG_IEEE80211 is not set | ||
254 | |||
255 | # | ||
133 | # Device Drivers | 256 | # Device Drivers |
134 | # | 257 | # |
135 | 258 | ||
@@ -138,7 +261,13 @@ CONFIG_BINFMT_ELF=y | |||
138 | # | 261 | # |
139 | # CONFIG_STANDALONE is not set | 262 | # CONFIG_STANDALONE is not set |
140 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 263 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
141 | # CONFIG_FW_LOADER is not set | 264 | CONFIG_FW_LOADER=y |
265 | # CONFIG_SYS_HYPERVISOR is not set | ||
266 | |||
267 | # | ||
268 | # Connector - unified userspace <-> kernelspace linker | ||
269 | # | ||
270 | # CONFIG_CONNECTOR is not set | ||
142 | 271 | ||
143 | # | 272 | # |
144 | # Memory Technology Devices (MTD) | 273 | # Memory Technology Devices (MTD) |
@@ -161,6 +290,8 @@ CONFIG_MTD_BLOCK=y | |||
161 | # CONFIG_FTL is not set | 290 | # CONFIG_FTL is not set |
162 | # CONFIG_NFTL is not set | 291 | # CONFIG_NFTL is not set |
163 | # CONFIG_INFTL is not set | 292 | # CONFIG_INFTL is not set |
293 | # CONFIG_RFD_FTL is not set | ||
294 | # CONFIG_SSFDC is not set | ||
164 | 295 | ||
165 | # | 296 | # |
166 | # RAM/ROM/Flash chip drivers | 297 | # RAM/ROM/Flash chip drivers |
@@ -186,6 +317,7 @@ CONFIG_MTD_CFI_I2=y | |||
186 | # Mapping drivers for chip access | 317 | # Mapping drivers for chip access |
187 | # | 318 | # |
188 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | 319 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set |
320 | # CONFIG_MTD_PLATRAM is not set | ||
189 | 321 | ||
190 | # | 322 | # |
191 | # Self-contained MTD device drivers | 323 | # Self-contained MTD device drivers |
@@ -193,7 +325,6 @@ CONFIG_MTD_CFI_I2=y | |||
193 | # CONFIG_MTD_SLRAM is not set | 325 | # CONFIG_MTD_SLRAM is not set |
194 | # CONFIG_MTD_PHRAM is not set | 326 | # CONFIG_MTD_PHRAM is not set |
195 | # CONFIG_MTD_MTDRAM is not set | 327 | # CONFIG_MTD_MTDRAM is not set |
196 | # CONFIG_MTD_BLKMTD is not set | ||
197 | # CONFIG_MTD_BLOCK2MTD is not set | 328 | # CONFIG_MTD_BLOCK2MTD is not set |
198 | 329 | ||
199 | # | 330 | # |
@@ -209,6 +340,11 @@ CONFIG_MTD_CFI_I2=y | |||
209 | # CONFIG_MTD_NAND is not set | 340 | # CONFIG_MTD_NAND is not set |
210 | 341 | ||
211 | # | 342 | # |
343 | # OneNAND Flash Device Drivers | ||
344 | # | ||
345 | # CONFIG_MTD_ONENAND is not set | ||
346 | |||
347 | # | ||
212 | # Parallel port support | 348 | # Parallel port support |
213 | # | 349 | # |
214 | # CONFIG_PARPORT is not set | 350 | # CONFIG_PARPORT is not set |
@@ -220,7 +356,6 @@ CONFIG_MTD_CFI_I2=y | |||
220 | # | 356 | # |
221 | # Block devices | 357 | # Block devices |
222 | # | 358 | # |
223 | # CONFIG_BLK_DEV_FD is not set | ||
224 | # CONFIG_BLK_DEV_COW_COMMON is not set | 359 | # CONFIG_BLK_DEV_COW_COMMON is not set |
225 | CONFIG_BLK_DEV_LOOP=y | 360 | CONFIG_BLK_DEV_LOOP=y |
226 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 361 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -228,23 +363,21 @@ CONFIG_BLK_DEV_NBD=m | |||
228 | CONFIG_BLK_DEV_RAM=y | 363 | CONFIG_BLK_DEV_RAM=y |
229 | CONFIG_BLK_DEV_RAM_COUNT=16 | 364 | CONFIG_BLK_DEV_RAM_COUNT=16 |
230 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 365 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
366 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
231 | CONFIG_BLK_DEV_INITRD=y | 367 | CONFIG_BLK_DEV_INITRD=y |
232 | CONFIG_INITRAMFS_SOURCE="" | ||
233 | # CONFIG_CDROM_PKTCDVD is not set | 368 | # CONFIG_CDROM_PKTCDVD is not set |
369 | # CONFIG_ATA_OVER_ETH is not set | ||
234 | 370 | ||
235 | # | 371 | # |
236 | # IO Schedulers | 372 | # Misc devices |
237 | # | 373 | # |
238 | CONFIG_IOSCHED_NOOP=y | 374 | # CONFIG_TIFM_CORE is not set |
239 | # CONFIG_IOSCHED_AS is not set | ||
240 | CONFIG_IOSCHED_DEADLINE=y | ||
241 | CONFIG_IOSCHED_CFQ=y | ||
242 | # CONFIG_ATA_OVER_ETH is not set | ||
243 | 375 | ||
244 | # | 376 | # |
245 | # ATA/ATAPI/MFM/RLL support | 377 | # ATA/ATAPI/MFM/RLL support |
246 | # | 378 | # |
247 | CONFIG_IDE=m | 379 | CONFIG_IDE=m |
380 | CONFIG_IDE_MAX_HWIFS=4 | ||
248 | CONFIG_BLK_DEV_IDE=m | 381 | CONFIG_BLK_DEV_IDE=m |
249 | 382 | ||
250 | # | 383 | # |
@@ -271,7 +404,13 @@ CONFIG_IDE_GENERIC=m | |||
271 | # | 404 | # |
272 | # SCSI device support | 405 | # SCSI device support |
273 | # | 406 | # |
407 | # CONFIG_RAID_ATTRS is not set | ||
274 | # CONFIG_SCSI is not set | 408 | # CONFIG_SCSI is not set |
409 | # CONFIG_SCSI_NETLINK is not set | ||
410 | |||
411 | # | ||
412 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
413 | # | ||
275 | 414 | ||
276 | # | 415 | # |
277 | # Multi-device support (RAID and LVM) | 416 | # Multi-device support (RAID and LVM) |
@@ -281,79 +420,19 @@ CONFIG_IDE_GENERIC=m | |||
281 | # | 420 | # |
282 | # Fusion MPT device support | 421 | # Fusion MPT device support |
283 | # | 422 | # |
423 | # CONFIG_FUSION is not set | ||
284 | 424 | ||
285 | # | 425 | # |
286 | # IEEE 1394 (FireWire) support | 426 | # IEEE 1394 (FireWire) support |
287 | # | 427 | # |
288 | # CONFIG_IEEE1394 is not set | ||
289 | 428 | ||
290 | # | 429 | # |
291 | # I2O device support | 430 | # I2O device support |
292 | # | 431 | # |
293 | 432 | ||
294 | # | 433 | # |
295 | # Networking support | 434 | # Network device support |
296 | # | 435 | # |
297 | CONFIG_NET=y | ||
298 | |||
299 | # | ||
300 | # Networking options | ||
301 | # | ||
302 | # CONFIG_PACKET is not set | ||
303 | CONFIG_UNIX=y | ||
304 | # CONFIG_NET_KEY is not set | ||
305 | CONFIG_INET=y | ||
306 | # CONFIG_IP_MULTICAST is not set | ||
307 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
308 | CONFIG_IP_PNP=y | ||
309 | CONFIG_IP_PNP_DHCP=y | ||
310 | # CONFIG_IP_PNP_BOOTP is not set | ||
311 | # CONFIG_IP_PNP_RARP is not set | ||
312 | # CONFIG_NET_IPIP is not set | ||
313 | # CONFIG_NET_IPGRE is not set | ||
314 | # CONFIG_ARPD is not set | ||
315 | # CONFIG_SYN_COOKIES is not set | ||
316 | # CONFIG_INET_AH is not set | ||
317 | # CONFIG_INET_ESP is not set | ||
318 | # CONFIG_INET_IPCOMP is not set | ||
319 | # CONFIG_INET_TUNNEL is not set | ||
320 | CONFIG_IP_TCPDIAG=y | ||
321 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
322 | # CONFIG_IPV6 is not set | ||
323 | # CONFIG_NETFILTER is not set | ||
324 | |||
325 | # | ||
326 | # SCTP Configuration (EXPERIMENTAL) | ||
327 | # | ||
328 | # CONFIG_IP_SCTP is not set | ||
329 | # CONFIG_ATM is not set | ||
330 | # CONFIG_BRIDGE is not set | ||
331 | # CONFIG_VLAN_8021Q is not set | ||
332 | # CONFIG_DECNET is not set | ||
333 | # CONFIG_LLC2 is not set | ||
334 | # CONFIG_IPX is not set | ||
335 | # CONFIG_ATALK is not set | ||
336 | # CONFIG_X25 is not set | ||
337 | # CONFIG_LAPB is not set | ||
338 | # CONFIG_NET_DIVERT is not set | ||
339 | # CONFIG_ECONET is not set | ||
340 | # CONFIG_WAN_ROUTER is not set | ||
341 | |||
342 | # | ||
343 | # QoS and/or fair queueing | ||
344 | # | ||
345 | # CONFIG_NET_SCHED is not set | ||
346 | # CONFIG_NET_CLS_ROUTE is not set | ||
347 | |||
348 | # | ||
349 | # Network testing | ||
350 | # | ||
351 | # CONFIG_NET_PKTGEN is not set | ||
352 | # CONFIG_NETPOLL is not set | ||
353 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
354 | # CONFIG_HAMRADIO is not set | ||
355 | # CONFIG_IRDA is not set | ||
356 | # CONFIG_BT is not set | ||
357 | CONFIG_NETDEVICES=y | 436 | CONFIG_NETDEVICES=y |
358 | # CONFIG_DUMMY is not set | 437 | # CONFIG_DUMMY is not set |
359 | # CONFIG_BONDING is not set | 438 | # CONFIG_BONDING is not set |
@@ -361,6 +440,10 @@ CONFIG_NETDEVICES=y | |||
361 | # CONFIG_TUN is not set | 440 | # CONFIG_TUN is not set |
362 | 441 | ||
363 | # | 442 | # |
443 | # PHY device support | ||
444 | # | ||
445 | |||
446 | # | ||
364 | # Ethernet (10 or 100Mbit) | 447 | # Ethernet (10 or 100Mbit) |
365 | # | 448 | # |
366 | # CONFIG_NET_ETHERNET is not set | 449 | # CONFIG_NET_ETHERNET is not set |
@@ -396,6 +479,8 @@ CONFIG_NE2000=y | |||
396 | # CONFIG_SLIP is not set | 479 | # CONFIG_SLIP is not set |
397 | # CONFIG_SHAPER is not set | 480 | # CONFIG_SHAPER is not set |
398 | # CONFIG_NETCONSOLE is not set | 481 | # CONFIG_NETCONSOLE is not set |
482 | # CONFIG_NETPOLL is not set | ||
483 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
399 | 484 | ||
400 | # | 485 | # |
401 | # ISDN subsystem | 486 | # ISDN subsystem |
@@ -411,6 +496,7 @@ CONFIG_NE2000=y | |||
411 | # Input device support | 496 | # Input device support |
412 | # | 497 | # |
413 | CONFIG_INPUT=y | 498 | CONFIG_INPUT=y |
499 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
414 | 500 | ||
415 | # | 501 | # |
416 | # Userland interfaces | 502 | # Userland interfaces |
@@ -442,7 +528,6 @@ CONFIG_SERIO=y | |||
442 | # CONFIG_SERIO_LIBPS2 is not set | 528 | # CONFIG_SERIO_LIBPS2 is not set |
443 | # CONFIG_SERIO_RAW is not set | 529 | # CONFIG_SERIO_RAW is not set |
444 | # CONFIG_GAMEPORT is not set | 530 | # CONFIG_GAMEPORT is not set |
445 | CONFIG_SOUND_GAMEPORT=y | ||
446 | 531 | ||
447 | # | 532 | # |
448 | # Character devices | 533 | # Character devices |
@@ -462,7 +547,6 @@ CONFIG_SERIAL_CORE=y | |||
462 | CONFIG_SERIAL_CORE_CONSOLE=y | 547 | CONFIG_SERIAL_CORE_CONSOLE=y |
463 | CONFIG_SERIAL_M32R_SIO=y | 548 | CONFIG_SERIAL_M32R_SIO=y |
464 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y | 549 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y |
465 | # CONFIG_SERIAL_M32R_PLDSIO is not set | ||
466 | CONFIG_UNIX98_PTYS=y | 550 | CONFIG_UNIX98_PTYS=y |
467 | CONFIG_LEGACY_PTYS=y | 551 | CONFIG_LEGACY_PTYS=y |
468 | CONFIG_LEGACY_PTY_COUNT=256 | 552 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -476,25 +560,27 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
476 | # Watchdog Cards | 560 | # Watchdog Cards |
477 | # | 561 | # |
478 | # CONFIG_WATCHDOG is not set | 562 | # CONFIG_WATCHDOG is not set |
563 | CONFIG_HW_RANDOM=y | ||
479 | # CONFIG_RTC is not set | 564 | # CONFIG_RTC is not set |
480 | # CONFIG_GEN_RTC is not set | ||
481 | # CONFIG_DTLK is not set | 565 | # CONFIG_DTLK is not set |
482 | # CONFIG_R3964 is not set | 566 | # CONFIG_R3964 is not set |
483 | 567 | ||
484 | # | 568 | # |
485 | # Ftape, the floppy tape device driver | 569 | # Ftape, the floppy tape device driver |
486 | # | 570 | # |
487 | # CONFIG_DRM is not set | ||
488 | 571 | ||
489 | # | 572 | # |
490 | # PCMCIA character devices | 573 | # PCMCIA character devices |
491 | # | 574 | # |
492 | # CONFIG_SYNCLINK_CS is not set | 575 | # CONFIG_SYNCLINK_CS is not set |
576 | # CONFIG_CARDMAN_4000 is not set | ||
577 | # CONFIG_CARDMAN_4040 is not set | ||
493 | # CONFIG_RAW_DRIVER is not set | 578 | # CONFIG_RAW_DRIVER is not set |
494 | 579 | ||
495 | # | 580 | # |
496 | # TPM devices | 581 | # TPM devices |
497 | # | 582 | # |
583 | # CONFIG_TCG_TPM is not set | ||
498 | 584 | ||
499 | # | 585 | # |
500 | # I2C support | 586 | # I2C support |
@@ -502,13 +588,25 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
502 | # CONFIG_I2C is not set | 588 | # CONFIG_I2C is not set |
503 | 589 | ||
504 | # | 590 | # |
591 | # SPI support | ||
592 | # | ||
593 | # CONFIG_SPI is not set | ||
594 | # CONFIG_SPI_MASTER is not set | ||
595 | |||
596 | # | ||
505 | # Dallas's 1-wire bus | 597 | # Dallas's 1-wire bus |
506 | # | 598 | # |
507 | # CONFIG_W1 is not set | 599 | # CONFIG_W1 is not set |
508 | 600 | ||
509 | # | 601 | # |
510 | # Misc devices | 602 | # Hardware Monitoring support |
511 | # | 603 | # |
604 | CONFIG_HWMON=y | ||
605 | # CONFIG_HWMON_VID is not set | ||
606 | # CONFIG_SENSORS_ABITUGURU is not set | ||
607 | # CONFIG_SENSORS_F71805F is not set | ||
608 | # CONFIG_SENSORS_VT1211 is not set | ||
609 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
512 | 610 | ||
513 | # | 611 | # |
514 | # Multimedia devices | 612 | # Multimedia devices |
@@ -523,7 +621,9 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
523 | # | 621 | # |
524 | # Graphics support | 622 | # Graphics support |
525 | # | 623 | # |
624 | CONFIG_FIRMWARE_EDID=y | ||
526 | # CONFIG_FB is not set | 625 | # CONFIG_FB is not set |
626 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
527 | 627 | ||
528 | # | 628 | # |
529 | # Sound | 629 | # Sound |
@@ -535,6 +635,11 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
535 | # | 635 | # |
536 | # CONFIG_USB_ARCH_HAS_HCD is not set | 636 | # CONFIG_USB_ARCH_HAS_HCD is not set |
537 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 637 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
638 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
639 | |||
640 | # | ||
641 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
642 | # | ||
538 | 643 | ||
539 | # | 644 | # |
540 | # USB Gadget Support | 645 | # USB Gadget Support |
@@ -547,30 +652,73 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
547 | # CONFIG_MMC is not set | 652 | # CONFIG_MMC is not set |
548 | 653 | ||
549 | # | 654 | # |
655 | # LED devices | ||
656 | # | ||
657 | # CONFIG_NEW_LEDS is not set | ||
658 | |||
659 | # | ||
660 | # LED drivers | ||
661 | # | ||
662 | |||
663 | # | ||
664 | # LED Triggers | ||
665 | # | ||
666 | |||
667 | # | ||
550 | # InfiniBand support | 668 | # InfiniBand support |
551 | # | 669 | # |
552 | # CONFIG_INFINIBAND is not set | 670 | |
671 | # | ||
672 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
673 | # | ||
674 | |||
675 | # | ||
676 | # Real Time Clock | ||
677 | # | ||
678 | # CONFIG_RTC_CLASS is not set | ||
679 | |||
680 | # | ||
681 | # DMA Engine support | ||
682 | # | ||
683 | # CONFIG_DMA_ENGINE is not set | ||
684 | |||
685 | # | ||
686 | # DMA Clients | ||
687 | # | ||
688 | |||
689 | # | ||
690 | # DMA Devices | ||
691 | # | ||
553 | 692 | ||
554 | # | 693 | # |
555 | # File systems | 694 | # File systems |
556 | # | 695 | # |
557 | CONFIG_EXT2_FS=y | 696 | CONFIG_EXT2_FS=y |
558 | # CONFIG_EXT2_FS_XATTR is not set | 697 | # CONFIG_EXT2_FS_XATTR is not set |
559 | # CONFIG_EXT3_FS is not set | 698 | # CONFIG_EXT2_FS_XIP is not set |
560 | # CONFIG_JBD is not set | 699 | CONFIG_EXT3_FS=y |
700 | CONFIG_EXT3_FS_XATTR=y | ||
701 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
702 | # CONFIG_EXT3_FS_SECURITY is not set | ||
703 | # CONFIG_EXT4DEV_FS is not set | ||
704 | CONFIG_JBD=y | ||
705 | # CONFIG_JBD_DEBUG is not set | ||
706 | CONFIG_FS_MBCACHE=y | ||
561 | # CONFIG_REISERFS_FS is not set | 707 | # CONFIG_REISERFS_FS is not set |
562 | # CONFIG_JFS_FS is not set | 708 | # CONFIG_JFS_FS is not set |
563 | 709 | # CONFIG_FS_POSIX_ACL is not set | |
564 | # | ||
565 | # XFS support | ||
566 | # | ||
567 | # CONFIG_XFS_FS is not set | 710 | # CONFIG_XFS_FS is not set |
711 | # CONFIG_GFS2_FS is not set | ||
712 | # CONFIG_OCFS2_FS is not set | ||
568 | # CONFIG_MINIX_FS is not set | 713 | # CONFIG_MINIX_FS is not set |
569 | CONFIG_ROMFS_FS=y | 714 | CONFIG_ROMFS_FS=y |
715 | CONFIG_INOTIFY=y | ||
716 | CONFIG_INOTIFY_USER=y | ||
570 | # CONFIG_QUOTA is not set | 717 | # CONFIG_QUOTA is not set |
571 | CONFIG_DNOTIFY=y | 718 | CONFIG_DNOTIFY=y |
572 | # CONFIG_AUTOFS_FS is not set | 719 | # CONFIG_AUTOFS_FS is not set |
573 | # CONFIG_AUTOFS4_FS is not set | 720 | # CONFIG_AUTOFS4_FS is not set |
721 | # CONFIG_FUSE_FS is not set | ||
574 | 722 | ||
575 | # | 723 | # |
576 | # CD-ROM/DVD Filesystems | 724 | # CD-ROM/DVD Filesystems |
@@ -595,16 +743,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
595 | # | 743 | # |
596 | CONFIG_PROC_FS=y | 744 | CONFIG_PROC_FS=y |
597 | CONFIG_PROC_KCORE=y | 745 | CONFIG_PROC_KCORE=y |
746 | CONFIG_PROC_SYSCTL=y | ||
598 | CONFIG_SYSFS=y | 747 | CONFIG_SYSFS=y |
599 | CONFIG_DEVFS_FS=y | ||
600 | CONFIG_DEVFS_MOUNT=y | ||
601 | # CONFIG_DEVFS_DEBUG is not set | ||
602 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
603 | CONFIG_TMPFS=y | 748 | CONFIG_TMPFS=y |
604 | # CONFIG_TMPFS_XATTR is not set | 749 | # CONFIG_TMPFS_POSIX_ACL is not set |
605 | # CONFIG_HUGETLBFS is not set | ||
606 | # CONFIG_HUGETLB_PAGE is not set | 750 | # CONFIG_HUGETLB_PAGE is not set |
607 | CONFIG_RAMFS=y | 751 | CONFIG_RAMFS=y |
752 | # CONFIG_CONFIGFS_FS is not set | ||
608 | 753 | ||
609 | # | 754 | # |
610 | # Miscellaneous filesystems | 755 | # Miscellaneous filesystems |
@@ -621,8 +766,9 @@ CONFIG_JFFS_FS_VERBOSE=0 | |||
621 | CONFIG_JFFS_PROC_FS=y | 766 | CONFIG_JFFS_PROC_FS=y |
622 | CONFIG_JFFS2_FS=y | 767 | CONFIG_JFFS2_FS=y |
623 | CONFIG_JFFS2_FS_DEBUG=0 | 768 | CONFIG_JFFS2_FS_DEBUG=0 |
624 | # CONFIG_JFFS2_FS_NAND is not set | 769 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
625 | # CONFIG_JFFS2_FS_NOR_ECC is not set | 770 | # CONFIG_JFFS2_SUMMARY is not set |
771 | # CONFIG_JFFS2_FS_XATTR is not set | ||
626 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | 772 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set |
627 | CONFIG_JFFS2_ZLIB=y | 773 | CONFIG_JFFS2_ZLIB=y |
628 | CONFIG_JFFS2_RTIME=y | 774 | CONFIG_JFFS2_RTIME=y |
@@ -639,12 +785,14 @@ CONFIG_JFFS2_RTIME=y | |||
639 | # | 785 | # |
640 | CONFIG_NFS_FS=y | 786 | CONFIG_NFS_FS=y |
641 | CONFIG_NFS_V3=y | 787 | CONFIG_NFS_V3=y |
788 | # CONFIG_NFS_V3_ACL is not set | ||
642 | # CONFIG_NFS_V4 is not set | 789 | # CONFIG_NFS_V4 is not set |
643 | # CONFIG_NFS_DIRECTIO is not set | 790 | # CONFIG_NFS_DIRECTIO is not set |
644 | # CONFIG_NFSD is not set | 791 | # CONFIG_NFSD is not set |
645 | CONFIG_ROOT_NFS=y | 792 | CONFIG_ROOT_NFS=y |
646 | CONFIG_LOCKD=y | 793 | CONFIG_LOCKD=y |
647 | CONFIG_LOCKD_V4=y | 794 | CONFIG_LOCKD_V4=y |
795 | CONFIG_NFS_COMMON=y | ||
648 | CONFIG_SUNRPC=y | 796 | CONFIG_SUNRPC=y |
649 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 797 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
650 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 798 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -653,6 +801,7 @@ CONFIG_SUNRPC=y | |||
653 | # CONFIG_NCP_FS is not set | 801 | # CONFIG_NCP_FS is not set |
654 | # CONFIG_CODA_FS is not set | 802 | # CONFIG_CODA_FS is not set |
655 | # CONFIG_AFS_FS is not set | 803 | # CONFIG_AFS_FS is not set |
804 | # CONFIG_9P_FS is not set | ||
656 | 805 | ||
657 | # | 806 | # |
658 | # Partition Types | 807 | # Partition Types |
@@ -713,10 +862,16 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
713 | # Kernel hacking | 862 | # Kernel hacking |
714 | # | 863 | # |
715 | # CONFIG_PRINTK_TIME is not set | 864 | # CONFIG_PRINTK_TIME is not set |
865 | CONFIG_ENABLE_MUST_CHECK=y | ||
866 | # CONFIG_MAGIC_SYSRQ is not set | ||
867 | # CONFIG_UNUSED_SYMBOLS is not set | ||
716 | # CONFIG_DEBUG_KERNEL is not set | 868 | # CONFIG_DEBUG_KERNEL is not set |
717 | CONFIG_LOG_BUF_SHIFT=15 | 869 | CONFIG_LOG_BUF_SHIFT=15 |
718 | # CONFIG_DEBUG_BUGVERBOSE is not set | 870 | # CONFIG_DEBUG_BUGVERBOSE is not set |
871 | # CONFIG_DEBUG_FS is not set | ||
719 | # CONFIG_FRAME_POINTER is not set | 872 | # CONFIG_FRAME_POINTER is not set |
873 | # CONFIG_UNWIND_INFO is not set | ||
874 | # CONFIG_HEADERS_CHECK is not set | ||
720 | 875 | ||
721 | # | 876 | # |
722 | # Security options | 877 | # Security options |
@@ -730,13 +885,10 @@ CONFIG_LOG_BUF_SHIFT=15 | |||
730 | # CONFIG_CRYPTO is not set | 885 | # CONFIG_CRYPTO is not set |
731 | 886 | ||
732 | # | 887 | # |
733 | # Hardware crypto devices | ||
734 | # | ||
735 | |||
736 | # | ||
737 | # Library routines | 888 | # Library routines |
738 | # | 889 | # |
739 | # CONFIG_CRC_CCITT is not set | 890 | # CONFIG_CRC_CCITT is not set |
891 | # CONFIG_CRC16 is not set | ||
740 | CONFIG_CRC32=y | 892 | CONFIG_CRC32=y |
741 | # CONFIG_LIBCRC32C is not set | 893 | # CONFIG_LIBCRC32C is not set |
742 | CONFIG_ZLIB_INFLATE=y | 894 | CONFIG_ZLIB_INFLATE=y |
diff --git a/arch/m32r/mappi/defconfig.up b/arch/m32r/mappi/defconfig.up index 38910fb76692..5ba00603c1a0 100644 --- a/arch/m32r/mappi/defconfig.up +++ b/arch/m32r/mappi/defconfig.up | |||
@@ -1,20 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Fri Jun 3 16:21:59 2005 | 4 | # Wed Dec 13 17:51:20 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
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 | ||
17 | CONFIG_BROKEN=y | ||
18 | CONFIG_BROKEN_ON_SMP=y | 16 | CONFIG_BROKEN_ON_SMP=y |
19 | CONFIG_LOCK_KERNEL=y | 17 | CONFIG_LOCK_KERNEL=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
@@ -23,31 +21,38 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
23 | # General setup | 21 | # General setup |
24 | # | 22 | # |
25 | CONFIG_LOCALVERSION="" | 23 | CONFIG_LOCALVERSION="" |
24 | CONFIG_LOCALVERSION_AUTO=y | ||
26 | CONFIG_SWAP=y | 25 | CONFIG_SWAP=y |
27 | CONFIG_SYSVIPC=y | 26 | CONFIG_SYSVIPC=y |
27 | # CONFIG_IPC_NS is not set | ||
28 | # CONFIG_POSIX_MQUEUE is not set | 28 | # CONFIG_POSIX_MQUEUE is not set |
29 | # CONFIG_BSD_PROCESS_ACCT is not set | 29 | # CONFIG_BSD_PROCESS_ACCT is not set |
30 | CONFIG_SYSCTL=y | 30 | # CONFIG_TASKSTATS is not set |
31 | # CONFIG_UTS_NS is not set | ||
31 | # CONFIG_AUDIT is not set | 32 | # CONFIG_AUDIT is not set |
32 | CONFIG_HOTPLUG=y | ||
33 | CONFIG_KOBJECT_UEVENT=y | ||
34 | CONFIG_IKCONFIG=y | 33 | CONFIG_IKCONFIG=y |
35 | CONFIG_IKCONFIG_PROC=y | 34 | CONFIG_IKCONFIG_PROC=y |
35 | CONFIG_SYSFS_DEPRECATED=y | ||
36 | # CONFIG_RELAY is not set | ||
37 | CONFIG_INITRAMFS_SOURCE="" | ||
38 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
39 | CONFIG_SYSCTL=y | ||
36 | CONFIG_EMBEDDED=y | 40 | CONFIG_EMBEDDED=y |
41 | CONFIG_SYSCTL_SYSCALL=y | ||
37 | # CONFIG_KALLSYMS is not set | 42 | # CONFIG_KALLSYMS is not set |
43 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 44 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 45 | CONFIG_BUG=y |
46 | CONFIG_ELF_CORE=y | ||
40 | CONFIG_BASE_FULL=y | 47 | CONFIG_BASE_FULL=y |
41 | # CONFIG_FUTEX is not set | 48 | # CONFIG_FUTEX is not set |
42 | # CONFIG_EPOLL is not set | 49 | # CONFIG_EPOLL is not set |
43 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
44 | CONFIG_SHMEM=y | 50 | CONFIG_SHMEM=y |
45 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 51 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LABELS=0 | 52 | CONFIG_VM_EVENT_COUNTERS=y |
47 | CONFIG_CC_ALIGN_LOOPS=0 | ||
48 | CONFIG_CC_ALIGN_JUMPS=0 | ||
49 | # CONFIG_TINY_SHMEM is not set | 53 | # CONFIG_TINY_SHMEM is not set |
50 | CONFIG_BASE_SMALL=0 | 54 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
51 | 56 | ||
52 | # | 57 | # |
53 | # Loadable module support | 58 | # Loadable module support |
@@ -55,12 +60,30 @@ CONFIG_BASE_SMALL=0 | |||
55 | CONFIG_MODULES=y | 60 | CONFIG_MODULES=y |
56 | CONFIG_MODULE_UNLOAD=y | 61 | CONFIG_MODULE_UNLOAD=y |
57 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 62 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
58 | CONFIG_OBSOLETE_MODPARM=y | ||
59 | # CONFIG_MODVERSIONS is not set | 63 | # CONFIG_MODVERSIONS is not set |
60 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 64 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
61 | CONFIG_KMOD=y | 65 | CONFIG_KMOD=y |
62 | 66 | ||
63 | # | 67 | # |
68 | # Block layer | ||
69 | # | ||
70 | CONFIG_BLOCK=y | ||
71 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
72 | |||
73 | # | ||
74 | # IO Schedulers | ||
75 | # | ||
76 | CONFIG_IOSCHED_NOOP=y | ||
77 | # CONFIG_IOSCHED_AS is not set | ||
78 | CONFIG_IOSCHED_DEADLINE=y | ||
79 | CONFIG_IOSCHED_CFQ=y | ||
80 | # CONFIG_DEFAULT_AS is not set | ||
81 | # CONFIG_DEFAULT_DEADLINE is not set | ||
82 | CONFIG_DEFAULT_CFQ=y | ||
83 | # CONFIG_DEFAULT_NOOP is not set | ||
84 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
85 | |||
86 | # | ||
64 | # Processor type and features | 87 | # Processor type and features |
65 | # | 88 | # |
66 | CONFIG_PLAT_MAPPI=y | 89 | CONFIG_PLAT_MAPPI=y |
@@ -70,8 +93,10 @@ CONFIG_PLAT_MAPPI=y | |||
70 | # CONFIG_PLAT_OAKS32R is not set | 93 | # CONFIG_PLAT_OAKS32R is not set |
71 | # CONFIG_PLAT_MAPPI2 is not set | 94 | # CONFIG_PLAT_MAPPI2 is not set |
72 | # CONFIG_PLAT_MAPPI3 is not set | 95 | # CONFIG_PLAT_MAPPI3 is not set |
96 | # CONFIG_PLAT_M32104UT is not set | ||
73 | CONFIG_CHIP_M32700=y | 97 | CONFIG_CHIP_M32700=y |
74 | # CONFIG_CHIP_M32102 is not set | 98 | # CONFIG_CHIP_M32102 is not set |
99 | # CONFIG_CHIP_M32104 is not set | ||
75 | # CONFIG_CHIP_VDEC2 is not set | 100 | # CONFIG_CHIP_VDEC2 is not set |
76 | # CONFIG_CHIP_OPSP is not set | 101 | # CONFIG_CHIP_OPSP is not set |
77 | CONFIG_MMU=y | 102 | CONFIG_MMU=y |
@@ -85,20 +110,31 @@ CONFIG_TIMER_DIVIDE=128 | |||
85 | CONFIG_MEMORY_START=0x08000000 | 110 | CONFIG_MEMORY_START=0x08000000 |
86 | CONFIG_MEMORY_SIZE=0x04000000 | 111 | CONFIG_MEMORY_SIZE=0x04000000 |
87 | CONFIG_NOHIGHMEM=y | 112 | CONFIG_NOHIGHMEM=y |
113 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
114 | CONFIG_SELECT_MEMORY_MODEL=y | ||
115 | # CONFIG_FLATMEM_MANUAL is not set | ||
116 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
117 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
88 | CONFIG_DISCONTIGMEM=y | 118 | CONFIG_DISCONTIGMEM=y |
119 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
120 | CONFIG_NEED_MULTIPLE_NODES=y | ||
121 | # CONFIG_SPARSEMEM_STATIC is not set | ||
122 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
123 | # CONFIG_RESOURCES_64BIT is not set | ||
89 | CONFIG_IRAM_START=0x00f00000 | 124 | CONFIG_IRAM_START=0x00f00000 |
90 | CONFIG_IRAM_SIZE=0x00080000 | 125 | CONFIG_IRAM_SIZE=0x00080000 |
91 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 126 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
92 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 127 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
128 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
129 | CONFIG_GENERIC_HWEIGHT=y | ||
93 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 130 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
94 | CONFIG_PREEMPT=y | 131 | CONFIG_PREEMPT=y |
95 | # CONFIG_HAVE_DEC_LOCK is not set | ||
96 | # CONFIG_SMP is not set | 132 | # CONFIG_SMP is not set |
133 | CONFIG_NODES_SHIFT=1 | ||
97 | 134 | ||
98 | # | 135 | # |
99 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 136 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
100 | # | 137 | # |
101 | # CONFIG_PCI is not set | ||
102 | # CONFIG_ISA is not set | 138 | # CONFIG_ISA is not set |
103 | 139 | ||
104 | # | 140 | # |
@@ -107,12 +143,14 @@ CONFIG_PREEMPT=y | |||
107 | CONFIG_PCCARD=y | 143 | CONFIG_PCCARD=y |
108 | # CONFIG_PCMCIA_DEBUG is not set | 144 | # CONFIG_PCMCIA_DEBUG is not set |
109 | CONFIG_PCMCIA=y | 145 | CONFIG_PCMCIA=y |
146 | CONFIG_PCMCIA_LOAD_CIS=y | ||
147 | CONFIG_PCMCIA_IOCTL=y | ||
110 | 148 | ||
111 | # | 149 | # |
112 | # PC-card bridges | 150 | # PC-card bridges |
113 | # | 151 | # |
114 | # CONFIG_TCIC is not set | ||
115 | CONFIG_M32R_PCC=y | 152 | CONFIG_M32R_PCC=y |
153 | CONFIG_PCCARD_NONSTATIC=y | ||
116 | 154 | ||
117 | # | 155 | # |
118 | # PCI Hotplug Support | 156 | # PCI Hotplug Support |
@@ -125,6 +163,93 @@ CONFIG_BINFMT_ELF=y | |||
125 | # CONFIG_BINFMT_MISC is not set | 163 | # CONFIG_BINFMT_MISC is not set |
126 | 164 | ||
127 | # | 165 | # |
166 | # Networking | ||
167 | # | ||
168 | CONFIG_NET=y | ||
169 | |||
170 | # | ||
171 | # Networking options | ||
172 | # | ||
173 | # CONFIG_NETDEBUG is not set | ||
174 | # CONFIG_PACKET is not set | ||
175 | CONFIG_UNIX=y | ||
176 | CONFIG_XFRM=y | ||
177 | # CONFIG_XFRM_USER is not set | ||
178 | # CONFIG_XFRM_SUB_POLICY is not set | ||
179 | # CONFIG_NET_KEY is not set | ||
180 | CONFIG_INET=y | ||
181 | # CONFIG_IP_MULTICAST is not set | ||
182 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
183 | CONFIG_IP_FIB_HASH=y | ||
184 | CONFIG_IP_PNP=y | ||
185 | CONFIG_IP_PNP_DHCP=y | ||
186 | # CONFIG_IP_PNP_BOOTP is not set | ||
187 | # CONFIG_IP_PNP_RARP is not set | ||
188 | # CONFIG_NET_IPIP is not set | ||
189 | # CONFIG_NET_IPGRE is not set | ||
190 | # CONFIG_ARPD is not set | ||
191 | # CONFIG_SYN_COOKIES is not set | ||
192 | # CONFIG_INET_AH is not set | ||
193 | # CONFIG_INET_ESP is not set | ||
194 | # CONFIG_INET_IPCOMP is not set | ||
195 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
196 | # CONFIG_INET_TUNNEL is not set | ||
197 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
198 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
199 | CONFIG_INET_XFRM_MODE_BEET=y | ||
200 | CONFIG_INET_DIAG=y | ||
201 | CONFIG_INET_TCP_DIAG=y | ||
202 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
203 | CONFIG_TCP_CONG_CUBIC=y | ||
204 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
205 | # CONFIG_TCP_MD5SIG is not set | ||
206 | # CONFIG_IPV6 is not set | ||
207 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
208 | # CONFIG_INET6_TUNNEL is not set | ||
209 | # CONFIG_NETWORK_SECMARK is not set | ||
210 | # CONFIG_NETFILTER is not set | ||
211 | |||
212 | # | ||
213 | # DCCP Configuration (EXPERIMENTAL) | ||
214 | # | ||
215 | # CONFIG_IP_DCCP is not set | ||
216 | |||
217 | # | ||
218 | # SCTP Configuration (EXPERIMENTAL) | ||
219 | # | ||
220 | # CONFIG_IP_SCTP is not set | ||
221 | |||
222 | # | ||
223 | # TIPC Configuration (EXPERIMENTAL) | ||
224 | # | ||
225 | # CONFIG_TIPC is not set | ||
226 | # CONFIG_ATM is not set | ||
227 | # CONFIG_BRIDGE is not set | ||
228 | # CONFIG_VLAN_8021Q is not set | ||
229 | # CONFIG_DECNET is not set | ||
230 | # CONFIG_LLC2 is not set | ||
231 | # CONFIG_IPX is not set | ||
232 | # CONFIG_ATALK is not set | ||
233 | # CONFIG_X25 is not set | ||
234 | # CONFIG_LAPB is not set | ||
235 | # CONFIG_ECONET is not set | ||
236 | # CONFIG_WAN_ROUTER is not set | ||
237 | |||
238 | # | ||
239 | # QoS and/or fair queueing | ||
240 | # | ||
241 | # CONFIG_NET_SCHED is not set | ||
242 | |||
243 | # | ||
244 | # Network testing | ||
245 | # | ||
246 | # CONFIG_NET_PKTGEN is not set | ||
247 | # CONFIG_HAMRADIO is not set | ||
248 | # CONFIG_IRDA is not set | ||
249 | # CONFIG_BT is not set | ||
250 | # CONFIG_IEEE80211 is not set | ||
251 | |||
252 | # | ||
128 | # Device Drivers | 253 | # Device Drivers |
129 | # | 254 | # |
130 | 255 | ||
@@ -133,7 +258,13 @@ CONFIG_BINFMT_ELF=y | |||
133 | # | 258 | # |
134 | # CONFIG_STANDALONE is not set | 259 | # CONFIG_STANDALONE is not set |
135 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 260 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
136 | # CONFIG_FW_LOADER is not set | 261 | CONFIG_FW_LOADER=y |
262 | # CONFIG_SYS_HYPERVISOR is not set | ||
263 | |||
264 | # | ||
265 | # Connector - unified userspace <-> kernelspace linker | ||
266 | # | ||
267 | # CONFIG_CONNECTOR is not set | ||
137 | 268 | ||
138 | # | 269 | # |
139 | # Memory Technology Devices (MTD) | 270 | # Memory Technology Devices (MTD) |
@@ -156,6 +287,8 @@ CONFIG_MTD_BLOCK=y | |||
156 | # CONFIG_FTL is not set | 287 | # CONFIG_FTL is not set |
157 | # CONFIG_NFTL is not set | 288 | # CONFIG_NFTL is not set |
158 | # CONFIG_INFTL is not set | 289 | # CONFIG_INFTL is not set |
290 | # CONFIG_RFD_FTL is not set | ||
291 | # CONFIG_SSFDC is not set | ||
159 | 292 | ||
160 | # | 293 | # |
161 | # RAM/ROM/Flash chip drivers | 294 | # RAM/ROM/Flash chip drivers |
@@ -181,6 +314,7 @@ CONFIG_MTD_CFI_I2=y | |||
181 | # Mapping drivers for chip access | 314 | # Mapping drivers for chip access |
182 | # | 315 | # |
183 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | 316 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set |
317 | # CONFIG_MTD_PLATRAM is not set | ||
184 | 318 | ||
185 | # | 319 | # |
186 | # Self-contained MTD device drivers | 320 | # Self-contained MTD device drivers |
@@ -188,7 +322,6 @@ CONFIG_MTD_CFI_I2=y | |||
188 | # CONFIG_MTD_SLRAM is not set | 322 | # CONFIG_MTD_SLRAM is not set |
189 | # CONFIG_MTD_PHRAM is not set | 323 | # CONFIG_MTD_PHRAM is not set |
190 | # CONFIG_MTD_MTDRAM is not set | 324 | # CONFIG_MTD_MTDRAM is not set |
191 | # CONFIG_MTD_BLKMTD is not set | ||
192 | # CONFIG_MTD_BLOCK2MTD is not set | 325 | # CONFIG_MTD_BLOCK2MTD is not set |
193 | 326 | ||
194 | # | 327 | # |
@@ -204,6 +337,11 @@ CONFIG_MTD_CFI_I2=y | |||
204 | # CONFIG_MTD_NAND is not set | 337 | # CONFIG_MTD_NAND is not set |
205 | 338 | ||
206 | # | 339 | # |
340 | # OneNAND Flash Device Drivers | ||
341 | # | ||
342 | # CONFIG_MTD_ONENAND is not set | ||
343 | |||
344 | # | ||
207 | # Parallel port support | 345 | # Parallel port support |
208 | # | 346 | # |
209 | # CONFIG_PARPORT is not set | 347 | # CONFIG_PARPORT is not set |
@@ -215,7 +353,6 @@ CONFIG_MTD_CFI_I2=y | |||
215 | # | 353 | # |
216 | # Block devices | 354 | # Block devices |
217 | # | 355 | # |
218 | # CONFIG_BLK_DEV_FD is not set | ||
219 | # CONFIG_BLK_DEV_COW_COMMON is not set | 356 | # CONFIG_BLK_DEV_COW_COMMON is not set |
220 | CONFIG_BLK_DEV_LOOP=y | 357 | CONFIG_BLK_DEV_LOOP=y |
221 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 358 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -223,23 +360,21 @@ CONFIG_BLK_DEV_NBD=m | |||
223 | CONFIG_BLK_DEV_RAM=y | 360 | CONFIG_BLK_DEV_RAM=y |
224 | CONFIG_BLK_DEV_RAM_COUNT=16 | 361 | CONFIG_BLK_DEV_RAM_COUNT=16 |
225 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 362 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
363 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
226 | CONFIG_BLK_DEV_INITRD=y | 364 | CONFIG_BLK_DEV_INITRD=y |
227 | CONFIG_INITRAMFS_SOURCE="" | ||
228 | # CONFIG_CDROM_PKTCDVD is not set | 365 | # CONFIG_CDROM_PKTCDVD is not set |
366 | # CONFIG_ATA_OVER_ETH is not set | ||
229 | 367 | ||
230 | # | 368 | # |
231 | # IO Schedulers | 369 | # Misc devices |
232 | # | 370 | # |
233 | CONFIG_IOSCHED_NOOP=y | 371 | # CONFIG_TIFM_CORE is not set |
234 | # CONFIG_IOSCHED_AS is not set | ||
235 | CONFIG_IOSCHED_DEADLINE=y | ||
236 | CONFIG_IOSCHED_CFQ=y | ||
237 | # CONFIG_ATA_OVER_ETH is not set | ||
238 | 372 | ||
239 | # | 373 | # |
240 | # ATA/ATAPI/MFM/RLL support | 374 | # ATA/ATAPI/MFM/RLL support |
241 | # | 375 | # |
242 | CONFIG_IDE=m | 376 | CONFIG_IDE=m |
377 | CONFIG_IDE_MAX_HWIFS=4 | ||
243 | CONFIG_BLK_DEV_IDE=m | 378 | CONFIG_BLK_DEV_IDE=m |
244 | 379 | ||
245 | # | 380 | # |
@@ -266,7 +401,13 @@ CONFIG_IDE_GENERIC=m | |||
266 | # | 401 | # |
267 | # SCSI device support | 402 | # SCSI device support |
268 | # | 403 | # |
404 | # CONFIG_RAID_ATTRS is not set | ||
269 | # CONFIG_SCSI is not set | 405 | # CONFIG_SCSI is not set |
406 | # CONFIG_SCSI_NETLINK is not set | ||
407 | |||
408 | # | ||
409 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
410 | # | ||
270 | 411 | ||
271 | # | 412 | # |
272 | # Multi-device support (RAID and LVM) | 413 | # Multi-device support (RAID and LVM) |
@@ -276,79 +417,19 @@ CONFIG_IDE_GENERIC=m | |||
276 | # | 417 | # |
277 | # Fusion MPT device support | 418 | # Fusion MPT device support |
278 | # | 419 | # |
420 | # CONFIG_FUSION is not set | ||
279 | 421 | ||
280 | # | 422 | # |
281 | # IEEE 1394 (FireWire) support | 423 | # IEEE 1394 (FireWire) support |
282 | # | 424 | # |
283 | # CONFIG_IEEE1394 is not set | ||
284 | 425 | ||
285 | # | 426 | # |
286 | # I2O device support | 427 | # I2O device support |
287 | # | 428 | # |
288 | 429 | ||
289 | # | 430 | # |
290 | # Networking support | 431 | # Network device support |
291 | # | 432 | # |
292 | CONFIG_NET=y | ||
293 | |||
294 | # | ||
295 | # Networking options | ||
296 | # | ||
297 | # CONFIG_PACKET is not set | ||
298 | CONFIG_UNIX=y | ||
299 | # CONFIG_NET_KEY is not set | ||
300 | CONFIG_INET=y | ||
301 | # CONFIG_IP_MULTICAST is not set | ||
302 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
303 | CONFIG_IP_PNP=y | ||
304 | CONFIG_IP_PNP_DHCP=y | ||
305 | # CONFIG_IP_PNP_BOOTP is not set | ||
306 | # CONFIG_IP_PNP_RARP is not set | ||
307 | # CONFIG_NET_IPIP is not set | ||
308 | # CONFIG_NET_IPGRE is not set | ||
309 | # CONFIG_ARPD is not set | ||
310 | # CONFIG_SYN_COOKIES is not set | ||
311 | # CONFIG_INET_AH is not set | ||
312 | # CONFIG_INET_ESP is not set | ||
313 | # CONFIG_INET_IPCOMP is not set | ||
314 | # CONFIG_INET_TUNNEL is not set | ||
315 | CONFIG_IP_TCPDIAG=y | ||
316 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
317 | # CONFIG_IPV6 is not set | ||
318 | # CONFIG_NETFILTER is not set | ||
319 | |||
320 | # | ||
321 | # SCTP Configuration (EXPERIMENTAL) | ||
322 | # | ||
323 | # CONFIG_IP_SCTP is not set | ||
324 | # CONFIG_ATM is not set | ||
325 | # CONFIG_BRIDGE is not set | ||
326 | # CONFIG_VLAN_8021Q is not set | ||
327 | # CONFIG_DECNET is not set | ||
328 | # CONFIG_LLC2 is not set | ||
329 | # CONFIG_IPX is not set | ||
330 | # CONFIG_ATALK is not set | ||
331 | # CONFIG_X25 is not set | ||
332 | # CONFIG_LAPB is not set | ||
333 | # CONFIG_NET_DIVERT is not set | ||
334 | # CONFIG_ECONET is not set | ||
335 | # CONFIG_WAN_ROUTER is not set | ||
336 | |||
337 | # | ||
338 | # QoS and/or fair queueing | ||
339 | # | ||
340 | # CONFIG_NET_SCHED is not set | ||
341 | # CONFIG_NET_CLS_ROUTE is not set | ||
342 | |||
343 | # | ||
344 | # Network testing | ||
345 | # | ||
346 | # CONFIG_NET_PKTGEN is not set | ||
347 | # CONFIG_NETPOLL is not set | ||
348 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
349 | # CONFIG_HAMRADIO is not set | ||
350 | # CONFIG_IRDA is not set | ||
351 | # CONFIG_BT is not set | ||
352 | CONFIG_NETDEVICES=y | 433 | CONFIG_NETDEVICES=y |
353 | # CONFIG_DUMMY is not set | 434 | # CONFIG_DUMMY is not set |
354 | # CONFIG_BONDING is not set | 435 | # CONFIG_BONDING is not set |
@@ -356,6 +437,10 @@ CONFIG_NETDEVICES=y | |||
356 | # CONFIG_TUN is not set | 437 | # CONFIG_TUN is not set |
357 | 438 | ||
358 | # | 439 | # |
440 | # PHY device support | ||
441 | # | ||
442 | |||
443 | # | ||
359 | # Ethernet (10 or 100Mbit) | 444 | # Ethernet (10 or 100Mbit) |
360 | # | 445 | # |
361 | # CONFIG_NET_ETHERNET is not set | 446 | # CONFIG_NET_ETHERNET is not set |
@@ -391,6 +476,8 @@ CONFIG_NE2000=y | |||
391 | # CONFIG_SLIP is not set | 476 | # CONFIG_SLIP is not set |
392 | # CONFIG_SHAPER is not set | 477 | # CONFIG_SHAPER is not set |
393 | # CONFIG_NETCONSOLE is not set | 478 | # CONFIG_NETCONSOLE is not set |
479 | # CONFIG_NETPOLL is not set | ||
480 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
394 | 481 | ||
395 | # | 482 | # |
396 | # ISDN subsystem | 483 | # ISDN subsystem |
@@ -406,6 +493,7 @@ CONFIG_NE2000=y | |||
406 | # Input device support | 493 | # Input device support |
407 | # | 494 | # |
408 | CONFIG_INPUT=y | 495 | CONFIG_INPUT=y |
496 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
409 | 497 | ||
410 | # | 498 | # |
411 | # Userland interfaces | 499 | # Userland interfaces |
@@ -437,7 +525,6 @@ CONFIG_SERIO=y | |||
437 | # CONFIG_SERIO_LIBPS2 is not set | 525 | # CONFIG_SERIO_LIBPS2 is not set |
438 | # CONFIG_SERIO_RAW is not set | 526 | # CONFIG_SERIO_RAW is not set |
439 | # CONFIG_GAMEPORT is not set | 527 | # CONFIG_GAMEPORT is not set |
440 | CONFIG_SOUND_GAMEPORT=y | ||
441 | 528 | ||
442 | # | 529 | # |
443 | # Character devices | 530 | # Character devices |
@@ -457,7 +544,6 @@ CONFIG_SERIAL_CORE=y | |||
457 | CONFIG_SERIAL_CORE_CONSOLE=y | 544 | CONFIG_SERIAL_CORE_CONSOLE=y |
458 | CONFIG_SERIAL_M32R_SIO=y | 545 | CONFIG_SERIAL_M32R_SIO=y |
459 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y | 546 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y |
460 | # CONFIG_SERIAL_M32R_PLDSIO is not set | ||
461 | CONFIG_UNIX98_PTYS=y | 547 | CONFIG_UNIX98_PTYS=y |
462 | CONFIG_LEGACY_PTYS=y | 548 | CONFIG_LEGACY_PTYS=y |
463 | CONFIG_LEGACY_PTY_COUNT=256 | 549 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -471,25 +557,27 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
471 | # Watchdog Cards | 557 | # Watchdog Cards |
472 | # | 558 | # |
473 | # CONFIG_WATCHDOG is not set | 559 | # CONFIG_WATCHDOG is not set |
560 | CONFIG_HW_RANDOM=y | ||
474 | # CONFIG_RTC is not set | 561 | # CONFIG_RTC is not set |
475 | # CONFIG_GEN_RTC is not set | ||
476 | # CONFIG_DTLK is not set | 562 | # CONFIG_DTLK is not set |
477 | # CONFIG_R3964 is not set | 563 | # CONFIG_R3964 is not set |
478 | 564 | ||
479 | # | 565 | # |
480 | # Ftape, the floppy tape device driver | 566 | # Ftape, the floppy tape device driver |
481 | # | 567 | # |
482 | # CONFIG_DRM is not set | ||
483 | 568 | ||
484 | # | 569 | # |
485 | # PCMCIA character devices | 570 | # PCMCIA character devices |
486 | # | 571 | # |
487 | # CONFIG_SYNCLINK_CS is not set | 572 | # CONFIG_SYNCLINK_CS is not set |
573 | # CONFIG_CARDMAN_4000 is not set | ||
574 | # CONFIG_CARDMAN_4040 is not set | ||
488 | # CONFIG_RAW_DRIVER is not set | 575 | # CONFIG_RAW_DRIVER is not set |
489 | 576 | ||
490 | # | 577 | # |
491 | # TPM devices | 578 | # TPM devices |
492 | # | 579 | # |
580 | # CONFIG_TCG_TPM is not set | ||
493 | 581 | ||
494 | # | 582 | # |
495 | # I2C support | 583 | # I2C support |
@@ -497,13 +585,25 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
497 | # CONFIG_I2C is not set | 585 | # CONFIG_I2C is not set |
498 | 586 | ||
499 | # | 587 | # |
588 | # SPI support | ||
589 | # | ||
590 | # CONFIG_SPI is not set | ||
591 | # CONFIG_SPI_MASTER is not set | ||
592 | |||
593 | # | ||
500 | # Dallas's 1-wire bus | 594 | # Dallas's 1-wire bus |
501 | # | 595 | # |
502 | # CONFIG_W1 is not set | 596 | # CONFIG_W1 is not set |
503 | 597 | ||
504 | # | 598 | # |
505 | # Misc devices | 599 | # Hardware Monitoring support |
506 | # | 600 | # |
601 | CONFIG_HWMON=y | ||
602 | # CONFIG_HWMON_VID is not set | ||
603 | # CONFIG_SENSORS_ABITUGURU is not set | ||
604 | # CONFIG_SENSORS_F71805F is not set | ||
605 | # CONFIG_SENSORS_VT1211 is not set | ||
606 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
507 | 607 | ||
508 | # | 608 | # |
509 | # Multimedia devices | 609 | # Multimedia devices |
@@ -518,7 +618,9 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
518 | # | 618 | # |
519 | # Graphics support | 619 | # Graphics support |
520 | # | 620 | # |
621 | CONFIG_FIRMWARE_EDID=y | ||
521 | # CONFIG_FB is not set | 622 | # CONFIG_FB is not set |
623 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
522 | 624 | ||
523 | # | 625 | # |
524 | # Sound | 626 | # Sound |
@@ -530,6 +632,11 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
530 | # | 632 | # |
531 | # CONFIG_USB_ARCH_HAS_HCD is not set | 633 | # CONFIG_USB_ARCH_HAS_HCD is not set |
532 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 634 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
635 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
636 | |||
637 | # | ||
638 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
639 | # | ||
533 | 640 | ||
534 | # | 641 | # |
535 | # USB Gadget Support | 642 | # USB Gadget Support |
@@ -542,30 +649,73 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
542 | # CONFIG_MMC is not set | 649 | # CONFIG_MMC is not set |
543 | 650 | ||
544 | # | 651 | # |
652 | # LED devices | ||
653 | # | ||
654 | # CONFIG_NEW_LEDS is not set | ||
655 | |||
656 | # | ||
657 | # LED drivers | ||
658 | # | ||
659 | |||
660 | # | ||
661 | # LED Triggers | ||
662 | # | ||
663 | |||
664 | # | ||
545 | # InfiniBand support | 665 | # InfiniBand support |
546 | # | 666 | # |
547 | # CONFIG_INFINIBAND is not set | 667 | |
668 | # | ||
669 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
670 | # | ||
671 | |||
672 | # | ||
673 | # Real Time Clock | ||
674 | # | ||
675 | # CONFIG_RTC_CLASS is not set | ||
676 | |||
677 | # | ||
678 | # DMA Engine support | ||
679 | # | ||
680 | # CONFIG_DMA_ENGINE is not set | ||
681 | |||
682 | # | ||
683 | # DMA Clients | ||
684 | # | ||
685 | |||
686 | # | ||
687 | # DMA Devices | ||
688 | # | ||
548 | 689 | ||
549 | # | 690 | # |
550 | # File systems | 691 | # File systems |
551 | # | 692 | # |
552 | CONFIG_EXT2_FS=y | 693 | CONFIG_EXT2_FS=y |
553 | # CONFIG_EXT2_FS_XATTR is not set | 694 | # CONFIG_EXT2_FS_XATTR is not set |
554 | # CONFIG_EXT3_FS is not set | 695 | # CONFIG_EXT2_FS_XIP is not set |
555 | # CONFIG_JBD is not set | 696 | CONFIG_EXT3_FS=y |
697 | CONFIG_EXT3_FS_XATTR=y | ||
698 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
699 | # CONFIG_EXT3_FS_SECURITY is not set | ||
700 | # CONFIG_EXT4DEV_FS is not set | ||
701 | CONFIG_JBD=y | ||
702 | # CONFIG_JBD_DEBUG is not set | ||
703 | CONFIG_FS_MBCACHE=y | ||
556 | # CONFIG_REISERFS_FS is not set | 704 | # CONFIG_REISERFS_FS is not set |
557 | # CONFIG_JFS_FS is not set | 705 | # CONFIG_JFS_FS is not set |
558 | 706 | # CONFIG_FS_POSIX_ACL is not set | |
559 | # | ||
560 | # XFS support | ||
561 | # | ||
562 | # CONFIG_XFS_FS is not set | 707 | # CONFIG_XFS_FS is not set |
708 | # CONFIG_GFS2_FS is not set | ||
709 | # CONFIG_OCFS2_FS is not set | ||
563 | # CONFIG_MINIX_FS is not set | 710 | # CONFIG_MINIX_FS is not set |
564 | CONFIG_ROMFS_FS=y | 711 | CONFIG_ROMFS_FS=y |
712 | CONFIG_INOTIFY=y | ||
713 | CONFIG_INOTIFY_USER=y | ||
565 | # CONFIG_QUOTA is not set | 714 | # CONFIG_QUOTA is not set |
566 | CONFIG_DNOTIFY=y | 715 | CONFIG_DNOTIFY=y |
567 | # CONFIG_AUTOFS_FS is not set | 716 | # CONFIG_AUTOFS_FS is not set |
568 | # CONFIG_AUTOFS4_FS is not set | 717 | # CONFIG_AUTOFS4_FS is not set |
718 | # CONFIG_FUSE_FS is not set | ||
569 | 719 | ||
570 | # | 720 | # |
571 | # CD-ROM/DVD Filesystems | 721 | # CD-ROM/DVD Filesystems |
@@ -590,16 +740,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
590 | # | 740 | # |
591 | CONFIG_PROC_FS=y | 741 | CONFIG_PROC_FS=y |
592 | CONFIG_PROC_KCORE=y | 742 | CONFIG_PROC_KCORE=y |
743 | CONFIG_PROC_SYSCTL=y | ||
593 | CONFIG_SYSFS=y | 744 | CONFIG_SYSFS=y |
594 | CONFIG_DEVFS_FS=y | ||
595 | CONFIG_DEVFS_MOUNT=y | ||
596 | # CONFIG_DEVFS_DEBUG is not set | ||
597 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
598 | CONFIG_TMPFS=y | 745 | CONFIG_TMPFS=y |
599 | # CONFIG_TMPFS_XATTR is not set | 746 | # CONFIG_TMPFS_POSIX_ACL is not set |
600 | # CONFIG_HUGETLBFS is not set | ||
601 | # CONFIG_HUGETLB_PAGE is not set | 747 | # CONFIG_HUGETLB_PAGE is not set |
602 | CONFIG_RAMFS=y | 748 | CONFIG_RAMFS=y |
749 | # CONFIG_CONFIGFS_FS is not set | ||
603 | 750 | ||
604 | # | 751 | # |
605 | # Miscellaneous filesystems | 752 | # Miscellaneous filesystems |
@@ -616,8 +763,9 @@ CONFIG_JFFS_FS_VERBOSE=0 | |||
616 | CONFIG_JFFS_PROC_FS=y | 763 | CONFIG_JFFS_PROC_FS=y |
617 | CONFIG_JFFS2_FS=y | 764 | CONFIG_JFFS2_FS=y |
618 | CONFIG_JFFS2_FS_DEBUG=0 | 765 | CONFIG_JFFS2_FS_DEBUG=0 |
619 | # CONFIG_JFFS2_FS_NAND is not set | 766 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
620 | # CONFIG_JFFS2_FS_NOR_ECC is not set | 767 | # CONFIG_JFFS2_SUMMARY is not set |
768 | # CONFIG_JFFS2_FS_XATTR is not set | ||
621 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | 769 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set |
622 | CONFIG_JFFS2_ZLIB=y | 770 | CONFIG_JFFS2_ZLIB=y |
623 | CONFIG_JFFS2_RTIME=y | 771 | CONFIG_JFFS2_RTIME=y |
@@ -634,12 +782,14 @@ CONFIG_JFFS2_RTIME=y | |||
634 | # | 782 | # |
635 | CONFIG_NFS_FS=y | 783 | CONFIG_NFS_FS=y |
636 | CONFIG_NFS_V3=y | 784 | CONFIG_NFS_V3=y |
785 | # CONFIG_NFS_V3_ACL is not set | ||
637 | # CONFIG_NFS_V4 is not set | 786 | # CONFIG_NFS_V4 is not set |
638 | # CONFIG_NFS_DIRECTIO is not set | 787 | # CONFIG_NFS_DIRECTIO is not set |
639 | # CONFIG_NFSD is not set | 788 | # CONFIG_NFSD is not set |
640 | CONFIG_ROOT_NFS=y | 789 | CONFIG_ROOT_NFS=y |
641 | CONFIG_LOCKD=y | 790 | CONFIG_LOCKD=y |
642 | CONFIG_LOCKD_V4=y | 791 | CONFIG_LOCKD_V4=y |
792 | CONFIG_NFS_COMMON=y | ||
643 | CONFIG_SUNRPC=y | 793 | CONFIG_SUNRPC=y |
644 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 794 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
645 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 795 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -648,6 +798,7 @@ CONFIG_SUNRPC=y | |||
648 | # CONFIG_NCP_FS is not set | 798 | # CONFIG_NCP_FS is not set |
649 | # CONFIG_CODA_FS is not set | 799 | # CONFIG_CODA_FS is not set |
650 | # CONFIG_AFS_FS is not set | 800 | # CONFIG_AFS_FS is not set |
801 | # CONFIG_9P_FS is not set | ||
651 | 802 | ||
652 | # | 803 | # |
653 | # Partition Types | 804 | # Partition Types |
@@ -708,10 +859,16 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
708 | # Kernel hacking | 859 | # Kernel hacking |
709 | # | 860 | # |
710 | # CONFIG_PRINTK_TIME is not set | 861 | # CONFIG_PRINTK_TIME is not set |
862 | CONFIG_ENABLE_MUST_CHECK=y | ||
863 | # CONFIG_MAGIC_SYSRQ is not set | ||
864 | # CONFIG_UNUSED_SYMBOLS is not set | ||
711 | # CONFIG_DEBUG_KERNEL is not set | 865 | # CONFIG_DEBUG_KERNEL is not set |
712 | CONFIG_LOG_BUF_SHIFT=14 | 866 | CONFIG_LOG_BUF_SHIFT=14 |
713 | # CONFIG_DEBUG_BUGVERBOSE is not set | 867 | # CONFIG_DEBUG_BUGVERBOSE is not set |
868 | # CONFIG_DEBUG_FS is not set | ||
714 | # CONFIG_FRAME_POINTER is not set | 869 | # CONFIG_FRAME_POINTER is not set |
870 | # CONFIG_UNWIND_INFO is not set | ||
871 | # CONFIG_HEADERS_CHECK is not set | ||
715 | 872 | ||
716 | # | 873 | # |
717 | # Security options | 874 | # Security options |
@@ -725,13 +882,10 @@ CONFIG_LOG_BUF_SHIFT=14 | |||
725 | # CONFIG_CRYPTO is not set | 882 | # CONFIG_CRYPTO is not set |
726 | 883 | ||
727 | # | 884 | # |
728 | # Hardware crypto devices | ||
729 | # | ||
730 | |||
731 | # | ||
732 | # Library routines | 885 | # Library routines |
733 | # | 886 | # |
734 | # CONFIG_CRC_CCITT is not set | 887 | # CONFIG_CRC_CCITT is not set |
888 | # CONFIG_CRC16 is not set | ||
735 | CONFIG_CRC32=y | 889 | CONFIG_CRC32=y |
736 | # CONFIG_LIBCRC32C is not set | 890 | # CONFIG_LIBCRC32C is not set |
737 | CONFIG_ZLIB_INFLATE=y | 891 | CONFIG_ZLIB_INFLATE=y |
diff --git a/arch/m32r/mappi2/defconfig.opsp b/arch/m32r/mappi2/defconfig.opsp new file mode 100644 index 000000000000..b379ae96e6a7 --- /dev/null +++ b/arch/m32r/mappi2/defconfig.opsp | |||
@@ -0,0 +1,883 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.19 | ||
4 | # Wed Dec 13 19:40:30 2006 | ||
5 | # | ||
6 | CONFIG_M32R=y | ||
7 | CONFIG_GENERIC_ISA_DMA=y | ||
8 | CONFIG_GENERIC_HARDIRQS=y | ||
9 | CONFIG_GENERIC_IRQ_PROBE=y | ||
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | |||
12 | # | ||
13 | # Code maturity level options | ||
14 | # | ||
15 | CONFIG_EXPERIMENTAL=y | ||
16 | CONFIG_BROKEN_ON_SMP=y | ||
17 | CONFIG_LOCK_KERNEL=y | ||
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="" | ||
24 | CONFIG_LOCALVERSION_AUTO=y | ||
25 | CONFIG_SWAP=y | ||
26 | CONFIG_SYSVIPC=y | ||
27 | # CONFIG_IPC_NS is not set | ||
28 | # CONFIG_POSIX_MQUEUE is not set | ||
29 | CONFIG_BSD_PROCESS_ACCT=y | ||
30 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
31 | # CONFIG_TASKSTATS is not set | ||
32 | # CONFIG_UTS_NS is not set | ||
33 | # CONFIG_AUDIT is not set | ||
34 | CONFIG_IKCONFIG=y | ||
35 | # CONFIG_IKCONFIG_PROC is not set | ||
36 | CONFIG_SYSFS_DEPRECATED=y | ||
37 | # CONFIG_RELAY is not set | ||
38 | CONFIG_INITRAMFS_SOURCE="" | ||
39 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
40 | CONFIG_SYSCTL=y | ||
41 | CONFIG_EMBEDDED=y | ||
42 | CONFIG_SYSCTL_SYSCALL=y | ||
43 | # CONFIG_KALLSYMS is not set | ||
44 | CONFIG_HOTPLUG=y | ||
45 | CONFIG_PRINTK=y | ||
46 | CONFIG_BUG=y | ||
47 | CONFIG_ELF_CORE=y | ||
48 | CONFIG_BASE_FULL=y | ||
49 | # CONFIG_FUTEX is not set | ||
50 | # CONFIG_EPOLL is not set | ||
51 | CONFIG_SHMEM=y | ||
52 | CONFIG_SLAB=y | ||
53 | CONFIG_VM_EVENT_COUNTERS=y | ||
54 | # CONFIG_TINY_SHMEM is not set | ||
55 | CONFIG_BASE_SMALL=0 | ||
56 | # CONFIG_SLOB is not set | ||
57 | |||
58 | # | ||
59 | # Loadable module support | ||
60 | # | ||
61 | CONFIG_MODULES=y | ||
62 | CONFIG_MODULE_UNLOAD=y | ||
63 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
64 | # CONFIG_MODVERSIONS is not set | ||
65 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
66 | CONFIG_KMOD=y | ||
67 | |||
68 | # | ||
69 | # Block layer | ||
70 | # | ||
71 | CONFIG_BLOCK=y | ||
72 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
73 | |||
74 | # | ||
75 | # IO Schedulers | ||
76 | # | ||
77 | CONFIG_IOSCHED_NOOP=y | ||
78 | # CONFIG_IOSCHED_AS is not set | ||
79 | CONFIG_IOSCHED_DEADLINE=y | ||
80 | CONFIG_IOSCHED_CFQ=y | ||
81 | # CONFIG_DEFAULT_AS is not set | ||
82 | # CONFIG_DEFAULT_DEADLINE is not set | ||
83 | CONFIG_DEFAULT_CFQ=y | ||
84 | # CONFIG_DEFAULT_NOOP is not set | ||
85 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
86 | |||
87 | # | ||
88 | # Processor type and features | ||
89 | # | ||
90 | # CONFIG_PLAT_MAPPI is not set | ||
91 | # CONFIG_PLAT_USRV is not set | ||
92 | # CONFIG_PLAT_M32700UT is not set | ||
93 | # CONFIG_PLAT_OPSPUT is not set | ||
94 | # CONFIG_PLAT_OAKS32R is not set | ||
95 | CONFIG_PLAT_MAPPI2=y | ||
96 | # CONFIG_PLAT_MAPPI3 is not set | ||
97 | # CONFIG_PLAT_M32104UT is not set | ||
98 | # CONFIG_CHIP_M32700 is not set | ||
99 | # CONFIG_CHIP_M32102 is not set | ||
100 | # CONFIG_CHIP_M32104 is not set | ||
101 | # CONFIG_CHIP_VDEC2 is not set | ||
102 | CONFIG_CHIP_OPSP=y | ||
103 | CONFIG_MMU=y | ||
104 | CONFIG_TLB_ENTRIES=16 | ||
105 | CONFIG_ISA_M32R2=y | ||
106 | CONFIG_ISA_DSP_LEVEL2=y | ||
107 | CONFIG_ISA_DUAL_ISSUE=y | ||
108 | CONFIG_BUS_CLOCK=50000000 | ||
109 | CONFIG_TIMER_DIVIDE=128 | ||
110 | # CONFIG_CPU_LITTLE_ENDIAN is not set | ||
111 | CONFIG_MEMORY_START=0x08000000 | ||
112 | CONFIG_MEMORY_SIZE=0x01000000 | ||
113 | CONFIG_NOHIGHMEM=y | ||
114 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
115 | CONFIG_SELECT_MEMORY_MODEL=y | ||
116 | # CONFIG_FLATMEM_MANUAL is not set | ||
117 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
118 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
119 | CONFIG_DISCONTIGMEM=y | ||
120 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
121 | CONFIG_NEED_MULTIPLE_NODES=y | ||
122 | # CONFIG_SPARSEMEM_STATIC is not set | ||
123 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
124 | # CONFIG_RESOURCES_64BIT is not set | ||
125 | CONFIG_IRAM_START=0x00f00000 | ||
126 | CONFIG_IRAM_SIZE=0x00008000 | ||
127 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
128 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
129 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
130 | CONFIG_GENERIC_HWEIGHT=y | ||
131 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
132 | CONFIG_PREEMPT=y | ||
133 | # CONFIG_SMP is not set | ||
134 | CONFIG_NODES_SHIFT=1 | ||
135 | |||
136 | # | ||
137 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | ||
138 | # | ||
139 | # CONFIG_ISA is not set | ||
140 | |||
141 | # | ||
142 | # PCCARD (PCMCIA/CardBus) support | ||
143 | # | ||
144 | CONFIG_PCCARD=y | ||
145 | # CONFIG_PCMCIA_DEBUG is not set | ||
146 | CONFIG_PCMCIA=y | ||
147 | CONFIG_PCMCIA_LOAD_CIS=y | ||
148 | CONFIG_PCMCIA_IOCTL=y | ||
149 | |||
150 | # | ||
151 | # PC-card bridges | ||
152 | # | ||
153 | # CONFIG_M32R_CFC is not set | ||
154 | |||
155 | # | ||
156 | # PCI Hotplug Support | ||
157 | # | ||
158 | |||
159 | # | ||
160 | # Executable file formats | ||
161 | # | ||
162 | CONFIG_BINFMT_ELF=y | ||
163 | # CONFIG_BINFMT_MISC is not set | ||
164 | |||
165 | # | ||
166 | # Networking | ||
167 | # | ||
168 | CONFIG_NET=y | ||
169 | |||
170 | # | ||
171 | # Networking options | ||
172 | # | ||
173 | # CONFIG_NETDEBUG is not set | ||
174 | CONFIG_PACKET=y | ||
175 | # CONFIG_PACKET_MMAP is not set | ||
176 | CONFIG_UNIX=y | ||
177 | CONFIG_XFRM=y | ||
178 | # CONFIG_XFRM_USER is not set | ||
179 | # CONFIG_XFRM_SUB_POLICY is not set | ||
180 | # CONFIG_NET_KEY is not set | ||
181 | CONFIG_INET=y | ||
182 | # CONFIG_IP_MULTICAST is not set | ||
183 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
184 | CONFIG_IP_FIB_HASH=y | ||
185 | CONFIG_IP_PNP=y | ||
186 | CONFIG_IP_PNP_DHCP=y | ||
187 | # CONFIG_IP_PNP_BOOTP is not set | ||
188 | # CONFIG_IP_PNP_RARP is not set | ||
189 | # CONFIG_NET_IPIP is not set | ||
190 | # CONFIG_NET_IPGRE is not set | ||
191 | # CONFIG_ARPD is not set | ||
192 | # CONFIG_SYN_COOKIES is not set | ||
193 | # CONFIG_INET_AH is not set | ||
194 | # CONFIG_INET_ESP is not set | ||
195 | # CONFIG_INET_IPCOMP is not set | ||
196 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
197 | # CONFIG_INET_TUNNEL is not set | ||
198 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
199 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
200 | CONFIG_INET_XFRM_MODE_BEET=y | ||
201 | CONFIG_INET_DIAG=y | ||
202 | CONFIG_INET_TCP_DIAG=y | ||
203 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
204 | CONFIG_TCP_CONG_CUBIC=y | ||
205 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
206 | # CONFIG_TCP_MD5SIG is not set | ||
207 | # CONFIG_IPV6 is not set | ||
208 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
209 | # CONFIG_INET6_TUNNEL is not set | ||
210 | # CONFIG_NETWORK_SECMARK is not set | ||
211 | # CONFIG_NETFILTER is not set | ||
212 | |||
213 | # | ||
214 | # DCCP Configuration (EXPERIMENTAL) | ||
215 | # | ||
216 | # CONFIG_IP_DCCP is not set | ||
217 | |||
218 | # | ||
219 | # SCTP Configuration (EXPERIMENTAL) | ||
220 | # | ||
221 | # CONFIG_IP_SCTP is not set | ||
222 | |||
223 | # | ||
224 | # TIPC Configuration (EXPERIMENTAL) | ||
225 | # | ||
226 | # CONFIG_TIPC is not set | ||
227 | # CONFIG_ATM is not set | ||
228 | # CONFIG_BRIDGE is not set | ||
229 | # CONFIG_VLAN_8021Q is not set | ||
230 | # CONFIG_DECNET is not set | ||
231 | # CONFIG_LLC2 is not set | ||
232 | # CONFIG_IPX is not set | ||
233 | # CONFIG_ATALK is not set | ||
234 | # CONFIG_X25 is not set | ||
235 | # CONFIG_LAPB is not set | ||
236 | # CONFIG_ECONET is not set | ||
237 | # CONFIG_WAN_ROUTER is not set | ||
238 | |||
239 | # | ||
240 | # QoS and/or fair queueing | ||
241 | # | ||
242 | # CONFIG_NET_SCHED is not set | ||
243 | |||
244 | # | ||
245 | # Network testing | ||
246 | # | ||
247 | # CONFIG_NET_PKTGEN is not set | ||
248 | # CONFIG_HAMRADIO is not set | ||
249 | # CONFIG_IRDA is not set | ||
250 | # CONFIG_BT is not set | ||
251 | # CONFIG_IEEE80211 is not set | ||
252 | |||
253 | # | ||
254 | # Device Drivers | ||
255 | # | ||
256 | |||
257 | # | ||
258 | # Generic Driver Options | ||
259 | # | ||
260 | CONFIG_STANDALONE=y | ||
261 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
262 | CONFIG_FW_LOADER=y | ||
263 | # CONFIG_SYS_HYPERVISOR is not set | ||
264 | |||
265 | # | ||
266 | # Connector - unified userspace <-> kernelspace linker | ||
267 | # | ||
268 | # CONFIG_CONNECTOR is not set | ||
269 | |||
270 | # | ||
271 | # Memory Technology Devices (MTD) | ||
272 | # | ||
273 | # CONFIG_MTD is not set | ||
274 | |||
275 | # | ||
276 | # Parallel port support | ||
277 | # | ||
278 | # CONFIG_PARPORT is not set | ||
279 | |||
280 | # | ||
281 | # Plug and Play support | ||
282 | # | ||
283 | |||
284 | # | ||
285 | # Block devices | ||
286 | # | ||
287 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
288 | CONFIG_BLK_DEV_LOOP=y | ||
289 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
290 | CONFIG_BLK_DEV_NBD=y | ||
291 | CONFIG_BLK_DEV_RAM=y | ||
292 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
293 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
294 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
295 | # CONFIG_BLK_DEV_INITRD is not set | ||
296 | # CONFIG_CDROM_PKTCDVD is not set | ||
297 | # CONFIG_ATA_OVER_ETH is not set | ||
298 | |||
299 | # | ||
300 | # Misc devices | ||
301 | # | ||
302 | # CONFIG_TIFM_CORE is not set | ||
303 | |||
304 | # | ||
305 | # ATA/ATAPI/MFM/RLL support | ||
306 | # | ||
307 | CONFIG_IDE=y | ||
308 | CONFIG_IDE_MAX_HWIFS=4 | ||
309 | CONFIG_BLK_DEV_IDE=y | ||
310 | |||
311 | # | ||
312 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
313 | # | ||
314 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
315 | CONFIG_BLK_DEV_IDEDISK=y | ||
316 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
317 | CONFIG_BLK_DEV_IDECS=y | ||
318 | CONFIG_BLK_DEV_IDECD=m | ||
319 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
320 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
321 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
322 | # CONFIG_IDE_TASK_IOCTL is not set | ||
323 | |||
324 | # | ||
325 | # IDE chipset support/bugfixes | ||
326 | # | ||
327 | CONFIG_IDE_GENERIC=y | ||
328 | # CONFIG_IDE_ARM is not set | ||
329 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
330 | # CONFIG_IDEDMA_AUTO is not set | ||
331 | # CONFIG_BLK_DEV_HD is not set | ||
332 | |||
333 | # | ||
334 | # SCSI device support | ||
335 | # | ||
336 | # CONFIG_RAID_ATTRS is not set | ||
337 | CONFIG_SCSI=m | ||
338 | # CONFIG_SCSI_NETLINK is not set | ||
339 | CONFIG_SCSI_PROC_FS=y | ||
340 | |||
341 | # | ||
342 | # SCSI support type (disk, tape, CD-ROM) | ||
343 | # | ||
344 | CONFIG_BLK_DEV_SD=m | ||
345 | # CONFIG_CHR_DEV_ST is not set | ||
346 | # CONFIG_CHR_DEV_OSST is not set | ||
347 | CONFIG_BLK_DEV_SR=m | ||
348 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
349 | CONFIG_CHR_DEV_SG=m | ||
350 | # CONFIG_CHR_DEV_SCH is not set | ||
351 | |||
352 | # | ||
353 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
354 | # | ||
355 | CONFIG_SCSI_MULTI_LUN=y | ||
356 | # CONFIG_SCSI_CONSTANTS is not set | ||
357 | # CONFIG_SCSI_LOGGING is not set | ||
358 | |||
359 | # | ||
360 | # SCSI Transports | ||
361 | # | ||
362 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
363 | # CONFIG_SCSI_FC_ATTRS is not set | ||
364 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
365 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
366 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
367 | |||
368 | # | ||
369 | # SCSI low-level drivers | ||
370 | # | ||
371 | # CONFIG_ISCSI_TCP is not set | ||
372 | # CONFIG_SCSI_DEBUG is not set | ||
373 | |||
374 | # | ||
375 | # PCMCIA SCSI adapter support | ||
376 | # | ||
377 | # CONFIG_PCMCIA_AHA152X is not set | ||
378 | # CONFIG_PCMCIA_FDOMAIN is not set | ||
379 | # CONFIG_PCMCIA_NINJA_SCSI is not set | ||
380 | # CONFIG_PCMCIA_QLOGIC is not set | ||
381 | # CONFIG_PCMCIA_SYM53C500 is not set | ||
382 | |||
383 | # | ||
384 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
385 | # | ||
386 | |||
387 | # | ||
388 | # Multi-device support (RAID and LVM) | ||
389 | # | ||
390 | # CONFIG_MD is not set | ||
391 | |||
392 | # | ||
393 | # Fusion MPT device support | ||
394 | # | ||
395 | # CONFIG_FUSION is not set | ||
396 | |||
397 | # | ||
398 | # IEEE 1394 (FireWire) support | ||
399 | # | ||
400 | |||
401 | # | ||
402 | # I2O device support | ||
403 | # | ||
404 | |||
405 | # | ||
406 | # Network device support | ||
407 | # | ||
408 | CONFIG_NETDEVICES=y | ||
409 | # CONFIG_DUMMY is not set | ||
410 | # CONFIG_BONDING is not set | ||
411 | # CONFIG_EQUALIZER is not set | ||
412 | # CONFIG_TUN is not set | ||
413 | |||
414 | # | ||
415 | # PHY device support | ||
416 | # | ||
417 | # CONFIG_PHYLIB is not set | ||
418 | |||
419 | # | ||
420 | # Ethernet (10 or 100Mbit) | ||
421 | # | ||
422 | CONFIG_NET_ETHERNET=y | ||
423 | CONFIG_MII=y | ||
424 | CONFIG_SMC91X=y | ||
425 | # CONFIG_NE2000 is not set | ||
426 | |||
427 | # | ||
428 | # Ethernet (1000 Mbit) | ||
429 | # | ||
430 | |||
431 | # | ||
432 | # Ethernet (10000 Mbit) | ||
433 | # | ||
434 | |||
435 | # | ||
436 | # Token Ring devices | ||
437 | # | ||
438 | |||
439 | # | ||
440 | # Wireless LAN (non-hamradio) | ||
441 | # | ||
442 | # CONFIG_NET_RADIO is not set | ||
443 | |||
444 | # | ||
445 | # PCMCIA network device support | ||
446 | # | ||
447 | # CONFIG_NET_PCMCIA is not set | ||
448 | |||
449 | # | ||
450 | # Wan interfaces | ||
451 | # | ||
452 | # CONFIG_WAN is not set | ||
453 | # CONFIG_PPP is not set | ||
454 | # CONFIG_SLIP is not set | ||
455 | # CONFIG_SHAPER is not set | ||
456 | # CONFIG_NETCONSOLE is not set | ||
457 | # CONFIG_NETPOLL is not set | ||
458 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
459 | |||
460 | # | ||
461 | # ISDN subsystem | ||
462 | # | ||
463 | # CONFIG_ISDN is not set | ||
464 | |||
465 | # | ||
466 | # Telephony Support | ||
467 | # | ||
468 | # CONFIG_PHONE is not set | ||
469 | |||
470 | # | ||
471 | # Input device support | ||
472 | # | ||
473 | CONFIG_INPUT=y | ||
474 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
475 | |||
476 | # | ||
477 | # Userland interfaces | ||
478 | # | ||
479 | # CONFIG_INPUT_MOUSEDEV is not set | ||
480 | # CONFIG_INPUT_JOYDEV is not set | ||
481 | # CONFIG_INPUT_TSDEV is not set | ||
482 | # CONFIG_INPUT_EVDEV is not set | ||
483 | # CONFIG_INPUT_EVBUG is not set | ||
484 | |||
485 | # | ||
486 | # Input Device Drivers | ||
487 | # | ||
488 | # CONFIG_INPUT_KEYBOARD is not set | ||
489 | # CONFIG_INPUT_MOUSE is not set | ||
490 | # CONFIG_INPUT_JOYSTICK is not set | ||
491 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
492 | # CONFIG_INPUT_MISC is not set | ||
493 | |||
494 | # | ||
495 | # Hardware I/O ports | ||
496 | # | ||
497 | CONFIG_SERIO=y | ||
498 | # CONFIG_SERIO_I8042 is not set | ||
499 | CONFIG_SERIO_SERPORT=y | ||
500 | # CONFIG_SERIO_LIBPS2 is not set | ||
501 | # CONFIG_SERIO_RAW is not set | ||
502 | # CONFIG_GAMEPORT is not set | ||
503 | |||
504 | # | ||
505 | # Character devices | ||
506 | # | ||
507 | CONFIG_VT=y | ||
508 | CONFIG_VT_CONSOLE=y | ||
509 | CONFIG_HW_CONSOLE=y | ||
510 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
511 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
512 | |||
513 | # | ||
514 | # Serial drivers | ||
515 | # | ||
516 | # CONFIG_SERIAL_8250 is not set | ||
517 | |||
518 | # | ||
519 | # Non-8250 serial port support | ||
520 | # | ||
521 | CONFIG_SERIAL_CORE=y | ||
522 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
523 | CONFIG_SERIAL_M32R_SIO=y | ||
524 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y | ||
525 | CONFIG_UNIX98_PTYS=y | ||
526 | CONFIG_LEGACY_PTYS=y | ||
527 | CONFIG_LEGACY_PTY_COUNT=256 | ||
528 | |||
529 | # | ||
530 | # IPMI | ||
531 | # | ||
532 | # CONFIG_IPMI_HANDLER is not set | ||
533 | |||
534 | # | ||
535 | # Watchdog Cards | ||
536 | # | ||
537 | # CONFIG_WATCHDOG is not set | ||
538 | CONFIG_HW_RANDOM=y | ||
539 | # CONFIG_RTC is not set | ||
540 | # CONFIG_DTLK is not set | ||
541 | # CONFIG_R3964 is not set | ||
542 | |||
543 | # | ||
544 | # Ftape, the floppy tape device driver | ||
545 | # | ||
546 | |||
547 | # | ||
548 | # PCMCIA character devices | ||
549 | # | ||
550 | # CONFIG_SYNCLINK_CS is not set | ||
551 | # CONFIG_CARDMAN_4000 is not set | ||
552 | # CONFIG_CARDMAN_4040 is not set | ||
553 | # CONFIG_RAW_DRIVER is not set | ||
554 | |||
555 | # | ||
556 | # TPM devices | ||
557 | # | ||
558 | # CONFIG_TCG_TPM is not set | ||
559 | |||
560 | # | ||
561 | # I2C support | ||
562 | # | ||
563 | # CONFIG_I2C is not set | ||
564 | |||
565 | # | ||
566 | # SPI support | ||
567 | # | ||
568 | # CONFIG_SPI is not set | ||
569 | # CONFIG_SPI_MASTER is not set | ||
570 | |||
571 | # | ||
572 | # Dallas's 1-wire bus | ||
573 | # | ||
574 | # CONFIG_W1 is not set | ||
575 | |||
576 | # | ||
577 | # Hardware Monitoring support | ||
578 | # | ||
579 | CONFIG_HWMON=y | ||
580 | # CONFIG_HWMON_VID is not set | ||
581 | # CONFIG_SENSORS_ABITUGURU is not set | ||
582 | # CONFIG_SENSORS_F71805F is not set | ||
583 | # CONFIG_SENSORS_VT1211 is not set | ||
584 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
585 | |||
586 | # | ||
587 | # Multimedia devices | ||
588 | # | ||
589 | CONFIG_VIDEO_DEV=y | ||
590 | CONFIG_VIDEO_V4L1=y | ||
591 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
592 | CONFIG_VIDEO_V4L2=y | ||
593 | |||
594 | # | ||
595 | # Video Capture Adapters | ||
596 | # | ||
597 | |||
598 | # | ||
599 | # Video Capture Adapters | ||
600 | # | ||
601 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
602 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
603 | # CONFIG_VIDEO_VIVI is not set | ||
604 | # CONFIG_VIDEO_CPIA is not set | ||
605 | # CONFIG_VIDEO_M32R_AR is not set | ||
606 | |||
607 | # | ||
608 | # Radio Adapters | ||
609 | # | ||
610 | |||
611 | # | ||
612 | # Digital Video Broadcasting Devices | ||
613 | # | ||
614 | # CONFIG_DVB is not set | ||
615 | |||
616 | # | ||
617 | # Graphics support | ||
618 | # | ||
619 | CONFIG_FIRMWARE_EDID=y | ||
620 | # CONFIG_FB is not set | ||
621 | |||
622 | # | ||
623 | # Console display driver support | ||
624 | # | ||
625 | # CONFIG_VGA_CONSOLE is not set | ||
626 | CONFIG_DUMMY_CONSOLE=y | ||
627 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
628 | |||
629 | # | ||
630 | # Sound | ||
631 | # | ||
632 | # CONFIG_SOUND is not set | ||
633 | |||
634 | # | ||
635 | # USB support | ||
636 | # | ||
637 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
638 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
639 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
640 | |||
641 | # | ||
642 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
643 | # | ||
644 | |||
645 | # | ||
646 | # USB Gadget Support | ||
647 | # | ||
648 | # CONFIG_USB_GADGET is not set | ||
649 | |||
650 | # | ||
651 | # MMC/SD Card support | ||
652 | # | ||
653 | # CONFIG_MMC is not set | ||
654 | |||
655 | # | ||
656 | # LED devices | ||
657 | # | ||
658 | # CONFIG_NEW_LEDS is not set | ||
659 | |||
660 | # | ||
661 | # LED drivers | ||
662 | # | ||
663 | |||
664 | # | ||
665 | # LED Triggers | ||
666 | # | ||
667 | |||
668 | # | ||
669 | # InfiniBand support | ||
670 | # | ||
671 | |||
672 | # | ||
673 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
674 | # | ||
675 | |||
676 | # | ||
677 | # Real Time Clock | ||
678 | # | ||
679 | # CONFIG_RTC_CLASS is not set | ||
680 | |||
681 | # | ||
682 | # DMA Engine support | ||
683 | # | ||
684 | # CONFIG_DMA_ENGINE is not set | ||
685 | |||
686 | # | ||
687 | # DMA Clients | ||
688 | # | ||
689 | |||
690 | # | ||
691 | # DMA Devices | ||
692 | # | ||
693 | |||
694 | # | ||
695 | # File systems | ||
696 | # | ||
697 | CONFIG_EXT2_FS=y | ||
698 | # CONFIG_EXT2_FS_XATTR is not set | ||
699 | # CONFIG_EXT2_FS_XIP is not set | ||
700 | CONFIG_EXT3_FS=y | ||
701 | CONFIG_EXT3_FS_XATTR=y | ||
702 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
703 | # CONFIG_EXT3_FS_SECURITY is not set | ||
704 | # CONFIG_EXT4DEV_FS is not set | ||
705 | CONFIG_JBD=y | ||
706 | CONFIG_JBD_DEBUG=y | ||
707 | CONFIG_FS_MBCACHE=y | ||
708 | # CONFIG_REISERFS_FS is not set | ||
709 | # CONFIG_JFS_FS is not set | ||
710 | # CONFIG_FS_POSIX_ACL is not set | ||
711 | # CONFIG_XFS_FS is not set | ||
712 | # CONFIG_GFS2_FS is not set | ||
713 | # CONFIG_OCFS2_FS is not set | ||
714 | # CONFIG_MINIX_FS is not set | ||
715 | # CONFIG_ROMFS_FS is not set | ||
716 | CONFIG_INOTIFY=y | ||
717 | CONFIG_INOTIFY_USER=y | ||
718 | # CONFIG_QUOTA is not set | ||
719 | CONFIG_DNOTIFY=y | ||
720 | # CONFIG_AUTOFS_FS is not set | ||
721 | # CONFIG_AUTOFS4_FS is not set | ||
722 | # CONFIG_FUSE_FS is not set | ||
723 | |||
724 | # | ||
725 | # CD-ROM/DVD Filesystems | ||
726 | # | ||
727 | CONFIG_ISO9660_FS=m | ||
728 | CONFIG_JOLIET=y | ||
729 | # CONFIG_ZISOFS is not set | ||
730 | CONFIG_UDF_FS=m | ||
731 | CONFIG_UDF_NLS=y | ||
732 | |||
733 | # | ||
734 | # DOS/FAT/NT Filesystems | ||
735 | # | ||
736 | CONFIG_FAT_FS=m | ||
737 | CONFIG_MSDOS_FS=m | ||
738 | CONFIG_VFAT_FS=m | ||
739 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
740 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
741 | # CONFIG_NTFS_FS is not set | ||
742 | |||
743 | # | ||
744 | # Pseudo filesystems | ||
745 | # | ||
746 | CONFIG_PROC_FS=y | ||
747 | CONFIG_PROC_KCORE=y | ||
748 | CONFIG_PROC_SYSCTL=y | ||
749 | CONFIG_SYSFS=y | ||
750 | CONFIG_TMPFS=y | ||
751 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
752 | # CONFIG_HUGETLB_PAGE is not set | ||
753 | CONFIG_RAMFS=y | ||
754 | # CONFIG_CONFIGFS_FS is not set | ||
755 | |||
756 | # | ||
757 | # Miscellaneous filesystems | ||
758 | # | ||
759 | # CONFIG_ADFS_FS is not set | ||
760 | # CONFIG_AFFS_FS is not set | ||
761 | # CONFIG_HFS_FS is not set | ||
762 | # CONFIG_HFSPLUS_FS is not set | ||
763 | # CONFIG_BEFS_FS is not set | ||
764 | # CONFIG_BFS_FS is not set | ||
765 | # CONFIG_EFS_FS is not set | ||
766 | # CONFIG_CRAMFS is not set | ||
767 | # CONFIG_VXFS_FS is not set | ||
768 | # CONFIG_HPFS_FS is not set | ||
769 | # CONFIG_QNX4FS_FS is not set | ||
770 | # CONFIG_SYSV_FS is not set | ||
771 | # CONFIG_UFS_FS is not set | ||
772 | |||
773 | # | ||
774 | # Network File Systems | ||
775 | # | ||
776 | CONFIG_NFS_FS=y | ||
777 | CONFIG_NFS_V3=y | ||
778 | # CONFIG_NFS_V3_ACL is not set | ||
779 | # CONFIG_NFS_V4 is not set | ||
780 | # CONFIG_NFS_DIRECTIO is not set | ||
781 | # CONFIG_NFSD is not set | ||
782 | CONFIG_ROOT_NFS=y | ||
783 | CONFIG_LOCKD=y | ||
784 | CONFIG_LOCKD_V4=y | ||
785 | CONFIG_NFS_COMMON=y | ||
786 | CONFIG_SUNRPC=y | ||
787 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
788 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
789 | # CONFIG_SMB_FS is not set | ||
790 | # CONFIG_CIFS is not set | ||
791 | # CONFIG_NCP_FS is not set | ||
792 | # CONFIG_CODA_FS is not set | ||
793 | # CONFIG_AFS_FS is not set | ||
794 | # CONFIG_9P_FS is not set | ||
795 | |||
796 | # | ||
797 | # Partition Types | ||
798 | # | ||
799 | # CONFIG_PARTITION_ADVANCED is not set | ||
800 | CONFIG_MSDOS_PARTITION=y | ||
801 | |||
802 | # | ||
803 | # Native Language Support | ||
804 | # | ||
805 | CONFIG_NLS=y | ||
806 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
807 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
808 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
809 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
810 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
811 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
812 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
813 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
814 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
815 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
816 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
817 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
818 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
819 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
820 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
821 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
822 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
823 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
824 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
825 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
826 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
827 | # CONFIG_NLS_ISO8859_8 is not set | ||
828 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
829 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
830 | # CONFIG_NLS_ASCII is not set | ||
831 | # CONFIG_NLS_ISO8859_1 is not set | ||
832 | # CONFIG_NLS_ISO8859_2 is not set | ||
833 | # CONFIG_NLS_ISO8859_3 is not set | ||
834 | # CONFIG_NLS_ISO8859_4 is not set | ||
835 | # CONFIG_NLS_ISO8859_5 is not set | ||
836 | # CONFIG_NLS_ISO8859_6 is not set | ||
837 | # CONFIG_NLS_ISO8859_7 is not set | ||
838 | # CONFIG_NLS_ISO8859_9 is not set | ||
839 | # CONFIG_NLS_ISO8859_13 is not set | ||
840 | # CONFIG_NLS_ISO8859_14 is not set | ||
841 | # CONFIG_NLS_ISO8859_15 is not set | ||
842 | # CONFIG_NLS_KOI8_R is not set | ||
843 | # CONFIG_NLS_KOI8_U is not set | ||
844 | # CONFIG_NLS_UTF8 is not set | ||
845 | |||
846 | # | ||
847 | # Profiling support | ||
848 | # | ||
849 | # CONFIG_PROFILING is not set | ||
850 | |||
851 | # | ||
852 | # Kernel hacking | ||
853 | # | ||
854 | # CONFIG_PRINTK_TIME is not set | ||
855 | CONFIG_ENABLE_MUST_CHECK=y | ||
856 | # CONFIG_MAGIC_SYSRQ is not set | ||
857 | # CONFIG_UNUSED_SYMBOLS is not set | ||
858 | # CONFIG_DEBUG_KERNEL is not set | ||
859 | CONFIG_LOG_BUF_SHIFT=14 | ||
860 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
861 | # CONFIG_DEBUG_FS is not set | ||
862 | # CONFIG_FRAME_POINTER is not set | ||
863 | # CONFIG_UNWIND_INFO is not set | ||
864 | # CONFIG_HEADERS_CHECK is not set | ||
865 | |||
866 | # | ||
867 | # Security options | ||
868 | # | ||
869 | # CONFIG_KEYS is not set | ||
870 | # CONFIG_SECURITY is not set | ||
871 | |||
872 | # | ||
873 | # Cryptographic options | ||
874 | # | ||
875 | # CONFIG_CRYPTO is not set | ||
876 | |||
877 | # | ||
878 | # Library routines | ||
879 | # | ||
880 | # CONFIG_CRC_CCITT is not set | ||
881 | # CONFIG_CRC16 is not set | ||
882 | CONFIG_CRC32=y | ||
883 | # CONFIG_LIBCRC32C is not set | ||
diff --git a/arch/m32r/mappi2/defconfig.vdec2 b/arch/m32r/mappi2/defconfig.vdec2 index 56f287b65898..fe5b2a63cd68 100644 --- a/arch/m32r/mappi2/defconfig.vdec2 +++ b/arch/m32r/mappi2/defconfig.vdec2 | |||
@@ -1,19 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Fri Jun 3 16:22:02 2005 | 4 | # Wed Dec 13 19:31:44 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 16 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_LOCK_KERNEL=y | 17 | CONFIG_LOCK_KERNEL=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
@@ -22,32 +21,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
22 | # General setup | 21 | # General setup |
23 | # | 22 | # |
24 | CONFIG_LOCALVERSION="" | 23 | CONFIG_LOCALVERSION="" |
24 | CONFIG_LOCALVERSION_AUTO=y | ||
25 | CONFIG_SWAP=y | 25 | CONFIG_SWAP=y |
26 | CONFIG_SYSVIPC=y | 26 | CONFIG_SYSVIPC=y |
27 | # CONFIG_IPC_NS is not set | ||
27 | # CONFIG_POSIX_MQUEUE is not set | 28 | # CONFIG_POSIX_MQUEUE is not set |
28 | CONFIG_BSD_PROCESS_ACCT=y | 29 | CONFIG_BSD_PROCESS_ACCT=y |
29 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 30 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
30 | CONFIG_SYSCTL=y | 31 | # CONFIG_TASKSTATS is not set |
32 | # CONFIG_UTS_NS is not set | ||
31 | # CONFIG_AUDIT is not set | 33 | # CONFIG_AUDIT is not set |
32 | CONFIG_HOTPLUG=y | ||
33 | CONFIG_KOBJECT_UEVENT=y | ||
34 | CONFIG_IKCONFIG=y | 34 | CONFIG_IKCONFIG=y |
35 | # CONFIG_IKCONFIG_PROC is not set | 35 | # CONFIG_IKCONFIG_PROC is not set |
36 | CONFIG_SYSFS_DEPRECATED=y | ||
37 | # CONFIG_RELAY is not set | ||
38 | CONFIG_INITRAMFS_SOURCE="" | ||
39 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
40 | CONFIG_SYSCTL=y | ||
36 | CONFIG_EMBEDDED=y | 41 | CONFIG_EMBEDDED=y |
42 | CONFIG_SYSCTL_SYSCALL=y | ||
37 | # CONFIG_KALLSYMS is not set | 43 | # CONFIG_KALLSYMS is not set |
44 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 45 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 46 | CONFIG_BUG=y |
47 | CONFIG_ELF_CORE=y | ||
40 | CONFIG_BASE_FULL=y | 48 | CONFIG_BASE_FULL=y |
41 | # CONFIG_FUTEX is not set | 49 | # CONFIG_FUTEX is not set |
42 | # CONFIG_EPOLL is not set | 50 | # CONFIG_EPOLL is not set |
43 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
44 | CONFIG_SHMEM=y | 51 | CONFIG_SHMEM=y |
45 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 52 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LABELS=0 | 53 | CONFIG_VM_EVENT_COUNTERS=y |
47 | CONFIG_CC_ALIGN_LOOPS=0 | ||
48 | CONFIG_CC_ALIGN_JUMPS=0 | ||
49 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
50 | CONFIG_BASE_SMALL=0 | 55 | CONFIG_BASE_SMALL=0 |
56 | # CONFIG_SLOB is not set | ||
51 | 57 | ||
52 | # | 58 | # |
53 | # Loadable module support | 59 | # Loadable module support |
@@ -55,12 +61,30 @@ CONFIG_BASE_SMALL=0 | |||
55 | CONFIG_MODULES=y | 61 | CONFIG_MODULES=y |
56 | CONFIG_MODULE_UNLOAD=y | 62 | CONFIG_MODULE_UNLOAD=y |
57 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 63 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
58 | CONFIG_OBSOLETE_MODPARM=y | ||
59 | # CONFIG_MODVERSIONS is not set | 64 | # CONFIG_MODVERSIONS is not set |
60 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 65 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
61 | CONFIG_KMOD=y | 66 | CONFIG_KMOD=y |
62 | 67 | ||
63 | # | 68 | # |
69 | # Block layer | ||
70 | # | ||
71 | CONFIG_BLOCK=y | ||
72 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
73 | |||
74 | # | ||
75 | # IO Schedulers | ||
76 | # | ||
77 | CONFIG_IOSCHED_NOOP=y | ||
78 | # CONFIG_IOSCHED_AS is not set | ||
79 | CONFIG_IOSCHED_DEADLINE=y | ||
80 | CONFIG_IOSCHED_CFQ=y | ||
81 | # CONFIG_DEFAULT_AS is not set | ||
82 | # CONFIG_DEFAULT_DEADLINE is not set | ||
83 | CONFIG_DEFAULT_CFQ=y | ||
84 | # CONFIG_DEFAULT_NOOP is not set | ||
85 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
86 | |||
87 | # | ||
64 | # Processor type and features | 88 | # Processor type and features |
65 | # | 89 | # |
66 | # CONFIG_PLAT_MAPPI is not set | 90 | # CONFIG_PLAT_MAPPI is not set |
@@ -70,8 +94,10 @@ CONFIG_KMOD=y | |||
70 | # CONFIG_PLAT_OAKS32R is not set | 94 | # CONFIG_PLAT_OAKS32R is not set |
71 | CONFIG_PLAT_MAPPI2=y | 95 | CONFIG_PLAT_MAPPI2=y |
72 | # CONFIG_PLAT_MAPPI3 is not set | 96 | # CONFIG_PLAT_MAPPI3 is not set |
97 | # CONFIG_PLAT_M32104UT is not set | ||
73 | # CONFIG_CHIP_M32700 is not set | 98 | # CONFIG_CHIP_M32700 is not set |
74 | # CONFIG_CHIP_M32102 is not set | 99 | # CONFIG_CHIP_M32102 is not set |
100 | # CONFIG_CHIP_M32104 is not set | ||
75 | CONFIG_CHIP_VDEC2=y | 101 | CONFIG_CHIP_VDEC2=y |
76 | # CONFIG_CHIP_OPSP is not set | 102 | # CONFIG_CHIP_OPSP is not set |
77 | CONFIG_MMU=y | 103 | CONFIG_MMU=y |
@@ -83,18 +109,31 @@ CONFIG_TIMER_DIVIDE=128 | |||
83 | CONFIG_MEMORY_START=0x08000000 | 109 | CONFIG_MEMORY_START=0x08000000 |
84 | CONFIG_MEMORY_SIZE=0x01000000 | 110 | CONFIG_MEMORY_SIZE=0x01000000 |
85 | CONFIG_NOHIGHMEM=y | 111 | CONFIG_NOHIGHMEM=y |
86 | # CONFIG_DISCONTIGMEM is not set | 112 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
113 | CONFIG_SELECT_MEMORY_MODEL=y | ||
114 | # CONFIG_FLATMEM_MANUAL is not set | ||
115 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
116 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
117 | CONFIG_DISCONTIGMEM=y | ||
118 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
119 | CONFIG_NEED_MULTIPLE_NODES=y | ||
120 | # CONFIG_SPARSEMEM_STATIC is not set | ||
121 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
122 | # CONFIG_RESOURCES_64BIT is not set | ||
123 | CONFIG_IRAM_START=0x00f00000 | ||
124 | CONFIG_IRAM_SIZE=0x00008000 | ||
87 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 125 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
88 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 126 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
127 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
128 | CONFIG_GENERIC_HWEIGHT=y | ||
89 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 129 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
90 | CONFIG_PREEMPT=y | 130 | CONFIG_PREEMPT=y |
91 | # CONFIG_HAVE_DEC_LOCK is not set | ||
92 | # CONFIG_SMP is not set | 131 | # CONFIG_SMP is not set |
132 | CONFIG_NODES_SHIFT=1 | ||
93 | 133 | ||
94 | # | 134 | # |
95 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 135 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
96 | # | 136 | # |
97 | # CONFIG_PCI is not set | ||
98 | # CONFIG_ISA is not set | 137 | # CONFIG_ISA is not set |
99 | 138 | ||
100 | # | 139 | # |
@@ -103,11 +142,12 @@ CONFIG_PREEMPT=y | |||
103 | CONFIG_PCCARD=y | 142 | CONFIG_PCCARD=y |
104 | # CONFIG_PCMCIA_DEBUG is not set | 143 | # CONFIG_PCMCIA_DEBUG is not set |
105 | CONFIG_PCMCIA=y | 144 | CONFIG_PCMCIA=y |
145 | CONFIG_PCMCIA_LOAD_CIS=y | ||
146 | CONFIG_PCMCIA_IOCTL=y | ||
106 | 147 | ||
107 | # | 148 | # |
108 | # PC-card bridges | 149 | # PC-card bridges |
109 | # | 150 | # |
110 | # CONFIG_TCIC is not set | ||
111 | # CONFIG_M32R_CFC is not set | 151 | # CONFIG_M32R_CFC is not set |
112 | 152 | ||
113 | # | 153 | # |
@@ -121,6 +161,94 @@ CONFIG_BINFMT_ELF=y | |||
121 | # CONFIG_BINFMT_MISC is not set | 161 | # CONFIG_BINFMT_MISC is not set |
122 | 162 | ||
123 | # | 163 | # |
164 | # Networking | ||
165 | # | ||
166 | CONFIG_NET=y | ||
167 | |||
168 | # | ||
169 | # Networking options | ||
170 | # | ||
171 | # CONFIG_NETDEBUG is not set | ||
172 | CONFIG_PACKET=y | ||
173 | # CONFIG_PACKET_MMAP is not set | ||
174 | CONFIG_UNIX=y | ||
175 | CONFIG_XFRM=y | ||
176 | # CONFIG_XFRM_USER is not set | ||
177 | # CONFIG_XFRM_SUB_POLICY is not set | ||
178 | # CONFIG_NET_KEY is not set | ||
179 | CONFIG_INET=y | ||
180 | # CONFIG_IP_MULTICAST is not set | ||
181 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
182 | CONFIG_IP_FIB_HASH=y | ||
183 | CONFIG_IP_PNP=y | ||
184 | CONFIG_IP_PNP_DHCP=y | ||
185 | # CONFIG_IP_PNP_BOOTP is not set | ||
186 | # CONFIG_IP_PNP_RARP is not set | ||
187 | # CONFIG_NET_IPIP is not set | ||
188 | # CONFIG_NET_IPGRE is not set | ||
189 | # CONFIG_ARPD is not set | ||
190 | # CONFIG_SYN_COOKIES is not set | ||
191 | # CONFIG_INET_AH is not set | ||
192 | # CONFIG_INET_ESP is not set | ||
193 | # CONFIG_INET_IPCOMP is not set | ||
194 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
195 | # CONFIG_INET_TUNNEL is not set | ||
196 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
197 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
198 | CONFIG_INET_XFRM_MODE_BEET=y | ||
199 | CONFIG_INET_DIAG=y | ||
200 | CONFIG_INET_TCP_DIAG=y | ||
201 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
202 | CONFIG_TCP_CONG_CUBIC=y | ||
203 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
204 | # CONFIG_TCP_MD5SIG is not set | ||
205 | # CONFIG_IPV6 is not set | ||
206 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
207 | # CONFIG_INET6_TUNNEL is not set | ||
208 | # CONFIG_NETWORK_SECMARK is not set | ||
209 | # CONFIG_NETFILTER is not set | ||
210 | |||
211 | # | ||
212 | # DCCP Configuration (EXPERIMENTAL) | ||
213 | # | ||
214 | # CONFIG_IP_DCCP is not set | ||
215 | |||
216 | # | ||
217 | # SCTP Configuration (EXPERIMENTAL) | ||
218 | # | ||
219 | # CONFIG_IP_SCTP is not set | ||
220 | |||
221 | # | ||
222 | # TIPC Configuration (EXPERIMENTAL) | ||
223 | # | ||
224 | # CONFIG_TIPC is not set | ||
225 | # CONFIG_ATM is not set | ||
226 | # CONFIG_BRIDGE is not set | ||
227 | # CONFIG_VLAN_8021Q is not set | ||
228 | # CONFIG_DECNET is not set | ||
229 | # CONFIG_LLC2 is not set | ||
230 | # CONFIG_IPX is not set | ||
231 | # CONFIG_ATALK is not set | ||
232 | # CONFIG_X25 is not set | ||
233 | # CONFIG_LAPB is not set | ||
234 | # CONFIG_ECONET is not set | ||
235 | # CONFIG_WAN_ROUTER is not set | ||
236 | |||
237 | # | ||
238 | # QoS and/or fair queueing | ||
239 | # | ||
240 | # CONFIG_NET_SCHED is not set | ||
241 | |||
242 | # | ||
243 | # Network testing | ||
244 | # | ||
245 | # CONFIG_NET_PKTGEN is not set | ||
246 | # CONFIG_HAMRADIO is not set | ||
247 | # CONFIG_IRDA is not set | ||
248 | # CONFIG_BT is not set | ||
249 | # CONFIG_IEEE80211 is not set | ||
250 | |||
251 | # | ||
124 | # Device Drivers | 252 | # Device Drivers |
125 | # | 253 | # |
126 | 254 | ||
@@ -129,7 +257,13 @@ CONFIG_BINFMT_ELF=y | |||
129 | # | 257 | # |
130 | CONFIG_STANDALONE=y | 258 | CONFIG_STANDALONE=y |
131 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 259 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
132 | # CONFIG_FW_LOADER is not set | 260 | CONFIG_FW_LOADER=y |
261 | # CONFIG_SYS_HYPERVISOR is not set | ||
262 | |||
263 | # | ||
264 | # Connector - unified userspace <-> kernelspace linker | ||
265 | # | ||
266 | # CONFIG_CONNECTOR is not set | ||
133 | 267 | ||
134 | # | 268 | # |
135 | # Memory Technology Devices (MTD) | 269 | # Memory Technology Devices (MTD) |
@@ -148,7 +282,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
148 | # | 282 | # |
149 | # Block devices | 283 | # Block devices |
150 | # | 284 | # |
151 | # CONFIG_BLK_DEV_FD is not set | ||
152 | # CONFIG_BLK_DEV_COW_COMMON is not set | 285 | # CONFIG_BLK_DEV_COW_COMMON is not set |
153 | CONFIG_BLK_DEV_LOOP=y | 286 | CONFIG_BLK_DEV_LOOP=y |
154 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 287 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -156,23 +289,21 @@ CONFIG_BLK_DEV_NBD=y | |||
156 | CONFIG_BLK_DEV_RAM=y | 289 | CONFIG_BLK_DEV_RAM=y |
157 | CONFIG_BLK_DEV_RAM_COUNT=16 | 290 | CONFIG_BLK_DEV_RAM_COUNT=16 |
158 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 291 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
292 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
159 | # CONFIG_BLK_DEV_INITRD is not set | 293 | # CONFIG_BLK_DEV_INITRD is not set |
160 | CONFIG_INITRAMFS_SOURCE="" | ||
161 | # CONFIG_CDROM_PKTCDVD is not set | 294 | # CONFIG_CDROM_PKTCDVD is not set |
295 | # CONFIG_ATA_OVER_ETH is not set | ||
162 | 296 | ||
163 | # | 297 | # |
164 | # IO Schedulers | 298 | # Misc devices |
165 | # | 299 | # |
166 | CONFIG_IOSCHED_NOOP=y | 300 | # CONFIG_TIFM_CORE is not set |
167 | # CONFIG_IOSCHED_AS is not set | ||
168 | CONFIG_IOSCHED_DEADLINE=y | ||
169 | CONFIG_IOSCHED_CFQ=y | ||
170 | # CONFIG_ATA_OVER_ETH is not set | ||
171 | 301 | ||
172 | # | 302 | # |
173 | # ATA/ATAPI/MFM/RLL support | 303 | # ATA/ATAPI/MFM/RLL support |
174 | # | 304 | # |
175 | CONFIG_IDE=y | 305 | CONFIG_IDE=y |
306 | CONFIG_IDE_MAX_HWIFS=4 | ||
176 | CONFIG_BLK_DEV_IDE=y | 307 | CONFIG_BLK_DEV_IDE=y |
177 | 308 | ||
178 | # | 309 | # |
@@ -200,7 +331,9 @@ CONFIG_IDE_GENERIC=y | |||
200 | # | 331 | # |
201 | # SCSI device support | 332 | # SCSI device support |
202 | # | 333 | # |
334 | # CONFIG_RAID_ATTRS is not set | ||
203 | CONFIG_SCSI=m | 335 | CONFIG_SCSI=m |
336 | # CONFIG_SCSI_NETLINK is not set | ||
204 | CONFIG_SCSI_PROC_FS=y | 337 | CONFIG_SCSI_PROC_FS=y |
205 | 338 | ||
206 | # | 339 | # |
@@ -212,6 +345,7 @@ CONFIG_BLK_DEV_SD=m | |||
212 | CONFIG_BLK_DEV_SR=m | 345 | CONFIG_BLK_DEV_SR=m |
213 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 346 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
214 | CONFIG_CHR_DEV_SG=m | 347 | CONFIG_CHR_DEV_SG=m |
348 | # CONFIG_CHR_DEV_SCH is not set | ||
215 | 349 | ||
216 | # | 350 | # |
217 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 351 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -221,16 +355,18 @@ CONFIG_SCSI_MULTI_LUN=y | |||
221 | # CONFIG_SCSI_LOGGING is not set | 355 | # CONFIG_SCSI_LOGGING is not set |
222 | 356 | ||
223 | # | 357 | # |
224 | # SCSI Transport Attributes | 358 | # SCSI Transports |
225 | # | 359 | # |
226 | # CONFIG_SCSI_SPI_ATTRS is not set | 360 | # CONFIG_SCSI_SPI_ATTRS is not set |
227 | # CONFIG_SCSI_FC_ATTRS is not set | 361 | # CONFIG_SCSI_FC_ATTRS is not set |
228 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 362 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
363 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
364 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
229 | 365 | ||
230 | # | 366 | # |
231 | # SCSI low-level drivers | 367 | # SCSI low-level drivers |
232 | # | 368 | # |
233 | # CONFIG_SCSI_SATA is not set | 369 | # CONFIG_ISCSI_TCP is not set |
234 | # CONFIG_SCSI_DEBUG is not set | 370 | # CONFIG_SCSI_DEBUG is not set |
235 | 371 | ||
236 | # | 372 | # |
@@ -243,6 +379,10 @@ CONFIG_SCSI_MULTI_LUN=y | |||
243 | # CONFIG_PCMCIA_SYM53C500 is not set | 379 | # CONFIG_PCMCIA_SYM53C500 is not set |
244 | 380 | ||
245 | # | 381 | # |
382 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
383 | # | ||
384 | |||
385 | # | ||
246 | # Multi-device support (RAID and LVM) | 386 | # Multi-device support (RAID and LVM) |
247 | # | 387 | # |
248 | # CONFIG_MD is not set | 388 | # CONFIG_MD is not set |
@@ -250,6 +390,7 @@ CONFIG_SCSI_MULTI_LUN=y | |||
250 | # | 390 | # |
251 | # Fusion MPT device support | 391 | # Fusion MPT device support |
252 | # | 392 | # |
393 | # CONFIG_FUSION is not set | ||
253 | 394 | ||
254 | # | 395 | # |
255 | # IEEE 1394 (FireWire) support | 396 | # IEEE 1394 (FireWire) support |
@@ -260,69 +401,8 @@ CONFIG_SCSI_MULTI_LUN=y | |||
260 | # | 401 | # |
261 | 402 | ||
262 | # | 403 | # |
263 | # Networking support | 404 | # Network device support |
264 | # | ||
265 | CONFIG_NET=y | ||
266 | |||
267 | # | ||
268 | # Networking options | ||
269 | # | ||
270 | CONFIG_PACKET=y | ||
271 | # CONFIG_PACKET_MMAP is not set | ||
272 | CONFIG_UNIX=y | ||
273 | # CONFIG_NET_KEY is not set | ||
274 | CONFIG_INET=y | ||
275 | # CONFIG_IP_MULTICAST is not set | ||
276 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
277 | CONFIG_IP_PNP=y | ||
278 | CONFIG_IP_PNP_DHCP=y | ||
279 | # CONFIG_IP_PNP_BOOTP is not set | ||
280 | # CONFIG_IP_PNP_RARP is not set | ||
281 | # CONFIG_NET_IPIP is not set | ||
282 | # CONFIG_NET_IPGRE is not set | ||
283 | # CONFIG_ARPD is not set | ||
284 | # CONFIG_SYN_COOKIES is not set | ||
285 | # CONFIG_INET_AH is not set | ||
286 | # CONFIG_INET_ESP is not set | ||
287 | # CONFIG_INET_IPCOMP is not set | ||
288 | # CONFIG_INET_TUNNEL is not set | ||
289 | CONFIG_IP_TCPDIAG=y | ||
290 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
291 | # CONFIG_IPV6 is not set | ||
292 | # CONFIG_NETFILTER is not set | ||
293 | |||
294 | # | ||
295 | # SCTP Configuration (EXPERIMENTAL) | ||
296 | # | ||
297 | # CONFIG_IP_SCTP is not set | ||
298 | # CONFIG_ATM is not set | ||
299 | # CONFIG_BRIDGE is not set | ||
300 | # CONFIG_VLAN_8021Q is not set | ||
301 | # CONFIG_DECNET is not set | ||
302 | # CONFIG_LLC2 is not set | ||
303 | # CONFIG_IPX is not set | ||
304 | # CONFIG_ATALK is not set | ||
305 | # CONFIG_X25 is not set | ||
306 | # CONFIG_LAPB is not set | ||
307 | # CONFIG_NET_DIVERT is not set | ||
308 | # CONFIG_ECONET is not set | ||
309 | # CONFIG_WAN_ROUTER is not set | ||
310 | |||
311 | # | ||
312 | # QoS and/or fair queueing | ||
313 | # | ||
314 | # CONFIG_NET_SCHED is not set | ||
315 | # CONFIG_NET_CLS_ROUTE is not set | ||
316 | |||
317 | # | ||
318 | # Network testing | ||
319 | # | 405 | # |
320 | # CONFIG_NET_PKTGEN is not set | ||
321 | # CONFIG_NETPOLL is not set | ||
322 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
323 | # CONFIG_HAMRADIO is not set | ||
324 | # CONFIG_IRDA is not set | ||
325 | # CONFIG_BT is not set | ||
326 | CONFIG_NETDEVICES=y | 406 | CONFIG_NETDEVICES=y |
327 | # CONFIG_DUMMY is not set | 407 | # CONFIG_DUMMY is not set |
328 | # CONFIG_BONDING is not set | 408 | # CONFIG_BONDING is not set |
@@ -330,6 +410,11 @@ CONFIG_NETDEVICES=y | |||
330 | # CONFIG_TUN is not set | 410 | # CONFIG_TUN is not set |
331 | 411 | ||
332 | # | 412 | # |
413 | # PHY device support | ||
414 | # | ||
415 | # CONFIG_PHYLIB is not set | ||
416 | |||
417 | # | ||
333 | # Ethernet (10 or 100Mbit) | 418 | # Ethernet (10 or 100Mbit) |
334 | # | 419 | # |
335 | CONFIG_NET_ETHERNET=y | 420 | CONFIG_NET_ETHERNET=y |
@@ -367,6 +452,8 @@ CONFIG_SMC91X=y | |||
367 | # CONFIG_SLIP is not set | 452 | # CONFIG_SLIP is not set |
368 | # CONFIG_SHAPER is not set | 453 | # CONFIG_SHAPER is not set |
369 | # CONFIG_NETCONSOLE is not set | 454 | # CONFIG_NETCONSOLE is not set |
455 | # CONFIG_NETPOLL is not set | ||
456 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
370 | 457 | ||
371 | # | 458 | # |
372 | # ISDN subsystem | 459 | # ISDN subsystem |
@@ -382,6 +469,7 @@ CONFIG_SMC91X=y | |||
382 | # Input device support | 469 | # Input device support |
383 | # | 470 | # |
384 | CONFIG_INPUT=y | 471 | CONFIG_INPUT=y |
472 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
385 | 473 | ||
386 | # | 474 | # |
387 | # Userland interfaces | 475 | # Userland interfaces |
@@ -410,7 +498,6 @@ CONFIG_SERIO_SERPORT=y | |||
410 | # CONFIG_SERIO_LIBPS2 is not set | 498 | # CONFIG_SERIO_LIBPS2 is not set |
411 | # CONFIG_SERIO_RAW is not set | 499 | # CONFIG_SERIO_RAW is not set |
412 | # CONFIG_GAMEPORT is not set | 500 | # CONFIG_GAMEPORT is not set |
413 | CONFIG_SOUND_GAMEPORT=y | ||
414 | 501 | ||
415 | # | 502 | # |
416 | # Character devices | 503 | # Character devices |
@@ -418,6 +505,7 @@ CONFIG_SOUND_GAMEPORT=y | |||
418 | CONFIG_VT=y | 505 | CONFIG_VT=y |
419 | CONFIG_VT_CONSOLE=y | 506 | CONFIG_VT_CONSOLE=y |
420 | CONFIG_HW_CONSOLE=y | 507 | CONFIG_HW_CONSOLE=y |
508 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
421 | # CONFIG_SERIAL_NONSTANDARD is not set | 509 | # CONFIG_SERIAL_NONSTANDARD is not set |
422 | 510 | ||
423 | # | 511 | # |
@@ -432,7 +520,6 @@ CONFIG_SERIAL_CORE=y | |||
432 | CONFIG_SERIAL_CORE_CONSOLE=y | 520 | CONFIG_SERIAL_CORE_CONSOLE=y |
433 | CONFIG_SERIAL_M32R_SIO=y | 521 | CONFIG_SERIAL_M32R_SIO=y |
434 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y | 522 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y |
435 | # CONFIG_SERIAL_M32R_PLDSIO is not set | ||
436 | CONFIG_UNIX98_PTYS=y | 523 | CONFIG_UNIX98_PTYS=y |
437 | CONFIG_LEGACY_PTYS=y | 524 | CONFIG_LEGACY_PTYS=y |
438 | CONFIG_LEGACY_PTY_COUNT=256 | 525 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -446,25 +533,27 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
446 | # Watchdog Cards | 533 | # Watchdog Cards |
447 | # | 534 | # |
448 | # CONFIG_WATCHDOG is not set | 535 | # CONFIG_WATCHDOG is not set |
536 | CONFIG_HW_RANDOM=y | ||
449 | # CONFIG_RTC is not set | 537 | # CONFIG_RTC is not set |
450 | # CONFIG_GEN_RTC is not set | ||
451 | # CONFIG_DTLK is not set | 538 | # CONFIG_DTLK is not set |
452 | # CONFIG_R3964 is not set | 539 | # CONFIG_R3964 is not set |
453 | 540 | ||
454 | # | 541 | # |
455 | # Ftape, the floppy tape device driver | 542 | # Ftape, the floppy tape device driver |
456 | # | 543 | # |
457 | # CONFIG_DRM is not set | ||
458 | 544 | ||
459 | # | 545 | # |
460 | # PCMCIA character devices | 546 | # PCMCIA character devices |
461 | # | 547 | # |
462 | # CONFIG_SYNCLINK_CS is not set | 548 | # CONFIG_SYNCLINK_CS is not set |
549 | # CONFIG_CARDMAN_4000 is not set | ||
550 | # CONFIG_CARDMAN_4040 is not set | ||
463 | # CONFIG_RAW_DRIVER is not set | 551 | # CONFIG_RAW_DRIVER is not set |
464 | 552 | ||
465 | # | 553 | # |
466 | # TPM devices | 554 | # TPM devices |
467 | # | 555 | # |
556 | # CONFIG_TCG_TPM is not set | ||
468 | 557 | ||
469 | # | 558 | # |
470 | # I2C support | 559 | # I2C support |
@@ -472,33 +561,50 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
472 | # CONFIG_I2C is not set | 561 | # CONFIG_I2C is not set |
473 | 562 | ||
474 | # | 563 | # |
564 | # SPI support | ||
565 | # | ||
566 | # CONFIG_SPI is not set | ||
567 | # CONFIG_SPI_MASTER is not set | ||
568 | |||
569 | # | ||
475 | # Dallas's 1-wire bus | 570 | # Dallas's 1-wire bus |
476 | # | 571 | # |
477 | # CONFIG_W1 is not set | 572 | # CONFIG_W1 is not set |
478 | 573 | ||
479 | # | 574 | # |
480 | # Misc devices | 575 | # Hardware Monitoring support |
481 | # | 576 | # |
577 | CONFIG_HWMON=y | ||
578 | # CONFIG_HWMON_VID is not set | ||
579 | # CONFIG_SENSORS_ABITUGURU is not set | ||
580 | # CONFIG_SENSORS_F71805F is not set | ||
581 | # CONFIG_SENSORS_VT1211 is not set | ||
582 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
482 | 583 | ||
483 | # | 584 | # |
484 | # Multimedia devices | 585 | # Multimedia devices |
485 | # | 586 | # |
486 | CONFIG_VIDEO_DEV=y | 587 | CONFIG_VIDEO_DEV=y |
588 | CONFIG_VIDEO_V4L1=y | ||
589 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
590 | CONFIG_VIDEO_V4L2=y | ||
487 | 591 | ||
488 | # | 592 | # |
489 | # Video For Linux | 593 | # Video Capture Adapters |
490 | # | 594 | # |
491 | 595 | ||
492 | # | 596 | # |
493 | # Video Adapters | 597 | # Video Capture Adapters |
494 | # | 598 | # |
599 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
600 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
601 | # CONFIG_VIDEO_VIVI is not set | ||
495 | # CONFIG_VIDEO_CPIA is not set | 602 | # CONFIG_VIDEO_CPIA is not set |
496 | # CONFIG_VIDEO_M32R_AR is not set | 603 | # CONFIG_VIDEO_M32R_AR is not set |
497 | 604 | ||
498 | # | 605 | # |
499 | # Radio Adapters | 606 | # Radio Adapters |
500 | # | 607 | # |
501 | # CONFIG_RADIO_MAESTRO is not set | ||
502 | 608 | ||
503 | # | 609 | # |
504 | # Digital Video Broadcasting Devices | 610 | # Digital Video Broadcasting Devices |
@@ -508,6 +614,7 @@ CONFIG_VIDEO_DEV=y | |||
508 | # | 614 | # |
509 | # Graphics support | 615 | # Graphics support |
510 | # | 616 | # |
617 | CONFIG_FIRMWARE_EDID=y | ||
511 | # CONFIG_FB is not set | 618 | # CONFIG_FB is not set |
512 | 619 | ||
513 | # | 620 | # |
@@ -515,6 +622,7 @@ CONFIG_VIDEO_DEV=y | |||
515 | # | 622 | # |
516 | # CONFIG_VGA_CONSOLE is not set | 623 | # CONFIG_VGA_CONSOLE is not set |
517 | CONFIG_DUMMY_CONSOLE=y | 624 | CONFIG_DUMMY_CONSOLE=y |
625 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
518 | 626 | ||
519 | # | 627 | # |
520 | # Sound | 628 | # Sound |
@@ -526,6 +634,11 @@ CONFIG_DUMMY_CONSOLE=y | |||
526 | # | 634 | # |
527 | # CONFIG_USB_ARCH_HAS_HCD is not set | 635 | # CONFIG_USB_ARCH_HAS_HCD is not set |
528 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 636 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
637 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
638 | |||
639 | # | ||
640 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
641 | # | ||
529 | 642 | ||
530 | # | 643 | # |
531 | # USB Gadget Support | 644 | # USB Gadget Support |
@@ -538,38 +651,73 @@ CONFIG_DUMMY_CONSOLE=y | |||
538 | # CONFIG_MMC is not set | 651 | # CONFIG_MMC is not set |
539 | 652 | ||
540 | # | 653 | # |
654 | # LED devices | ||
655 | # | ||
656 | # CONFIG_NEW_LEDS is not set | ||
657 | |||
658 | # | ||
659 | # LED drivers | ||
660 | # | ||
661 | |||
662 | # | ||
663 | # LED Triggers | ||
664 | # | ||
665 | |||
666 | # | ||
541 | # InfiniBand support | 667 | # InfiniBand support |
542 | # | 668 | # |
543 | # CONFIG_INFINIBAND is not set | 669 | |
670 | # | ||
671 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
672 | # | ||
673 | |||
674 | # | ||
675 | # Real Time Clock | ||
676 | # | ||
677 | # CONFIG_RTC_CLASS is not set | ||
678 | |||
679 | # | ||
680 | # DMA Engine support | ||
681 | # | ||
682 | # CONFIG_DMA_ENGINE is not set | ||
683 | |||
684 | # | ||
685 | # DMA Clients | ||
686 | # | ||
687 | |||
688 | # | ||
689 | # DMA Devices | ||
690 | # | ||
544 | 691 | ||
545 | # | 692 | # |
546 | # File systems | 693 | # File systems |
547 | # | 694 | # |
548 | CONFIG_EXT2_FS=y | 695 | CONFIG_EXT2_FS=y |
549 | # CONFIG_EXT2_FS_XATTR is not set | 696 | # CONFIG_EXT2_FS_XATTR is not set |
550 | CONFIG_EXT3_FS=m | 697 | # CONFIG_EXT2_FS_XIP is not set |
698 | CONFIG_EXT3_FS=y | ||
551 | CONFIG_EXT3_FS_XATTR=y | 699 | CONFIG_EXT3_FS_XATTR=y |
552 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 700 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
553 | # CONFIG_EXT3_FS_SECURITY is not set | 701 | # CONFIG_EXT3_FS_SECURITY is not set |
554 | CONFIG_JBD=m | 702 | # CONFIG_EXT4DEV_FS is not set |
703 | CONFIG_JBD=y | ||
555 | CONFIG_JBD_DEBUG=y | 704 | CONFIG_JBD_DEBUG=y |
556 | CONFIG_FS_MBCACHE=y | 705 | CONFIG_FS_MBCACHE=y |
557 | CONFIG_REISERFS_FS=m | 706 | # CONFIG_REISERFS_FS is not set |
558 | # CONFIG_REISERFS_CHECK is not set | ||
559 | # CONFIG_REISERFS_PROC_INFO is not set | ||
560 | # CONFIG_REISERFS_FS_XATTR is not set | ||
561 | # CONFIG_JFS_FS is not set | 707 | # CONFIG_JFS_FS is not set |
562 | 708 | # CONFIG_FS_POSIX_ACL is not set | |
563 | # | ||
564 | # XFS support | ||
565 | # | ||
566 | # CONFIG_XFS_FS is not set | 709 | # CONFIG_XFS_FS is not set |
710 | # CONFIG_GFS2_FS is not set | ||
711 | # CONFIG_OCFS2_FS is not set | ||
567 | # CONFIG_MINIX_FS is not set | 712 | # CONFIG_MINIX_FS is not set |
568 | # CONFIG_ROMFS_FS is not set | 713 | # CONFIG_ROMFS_FS is not set |
714 | CONFIG_INOTIFY=y | ||
715 | CONFIG_INOTIFY_USER=y | ||
569 | # CONFIG_QUOTA is not set | 716 | # CONFIG_QUOTA is not set |
570 | CONFIG_DNOTIFY=y | 717 | CONFIG_DNOTIFY=y |
571 | # CONFIG_AUTOFS_FS is not set | 718 | # CONFIG_AUTOFS_FS is not set |
572 | # CONFIG_AUTOFS4_FS is not set | 719 | # CONFIG_AUTOFS4_FS is not set |
720 | # CONFIG_FUSE_FS is not set | ||
573 | 721 | ||
574 | # | 722 | # |
575 | # CD-ROM/DVD Filesystems | 723 | # CD-ROM/DVD Filesystems |
@@ -595,15 +743,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
595 | # | 743 | # |
596 | CONFIG_PROC_FS=y | 744 | CONFIG_PROC_FS=y |
597 | CONFIG_PROC_KCORE=y | 745 | CONFIG_PROC_KCORE=y |
746 | CONFIG_PROC_SYSCTL=y | ||
598 | CONFIG_SYSFS=y | 747 | CONFIG_SYSFS=y |
599 | CONFIG_DEVFS_FS=y | ||
600 | CONFIG_DEVFS_MOUNT=y | ||
601 | # CONFIG_DEVFS_DEBUG is not set | ||
602 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
603 | CONFIG_TMPFS=y | 748 | CONFIG_TMPFS=y |
604 | # CONFIG_TMPFS_XATTR is not set | 749 | # CONFIG_TMPFS_POSIX_ACL is not set |
605 | # CONFIG_HUGETLB_PAGE is not set | 750 | # CONFIG_HUGETLB_PAGE is not set |
606 | CONFIG_RAMFS=y | 751 | CONFIG_RAMFS=y |
752 | # CONFIG_CONFIGFS_FS is not set | ||
607 | 753 | ||
608 | # | 754 | # |
609 | # Miscellaneous filesystems | 755 | # Miscellaneous filesystems |
@@ -627,12 +773,14 @@ CONFIG_RAMFS=y | |||
627 | # | 773 | # |
628 | CONFIG_NFS_FS=y | 774 | CONFIG_NFS_FS=y |
629 | CONFIG_NFS_V3=y | 775 | CONFIG_NFS_V3=y |
776 | # CONFIG_NFS_V3_ACL is not set | ||
630 | # CONFIG_NFS_V4 is not set | 777 | # CONFIG_NFS_V4 is not set |
631 | # CONFIG_NFS_DIRECTIO is not set | 778 | # CONFIG_NFS_DIRECTIO is not set |
632 | # CONFIG_NFSD is not set | 779 | # CONFIG_NFSD is not set |
633 | CONFIG_ROOT_NFS=y | 780 | CONFIG_ROOT_NFS=y |
634 | CONFIG_LOCKD=y | 781 | CONFIG_LOCKD=y |
635 | CONFIG_LOCKD_V4=y | 782 | CONFIG_LOCKD_V4=y |
783 | CONFIG_NFS_COMMON=y | ||
636 | CONFIG_SUNRPC=y | 784 | CONFIG_SUNRPC=y |
637 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 785 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
638 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 786 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -641,6 +789,7 @@ CONFIG_SUNRPC=y | |||
641 | # CONFIG_NCP_FS is not set | 789 | # CONFIG_NCP_FS is not set |
642 | # CONFIG_CODA_FS is not set | 790 | # CONFIG_CODA_FS is not set |
643 | # CONFIG_AFS_FS is not set | 791 | # CONFIG_AFS_FS is not set |
792 | # CONFIG_9P_FS is not set | ||
644 | 793 | ||
645 | # | 794 | # |
646 | # Partition Types | 795 | # Partition Types |
@@ -701,10 +850,16 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
701 | # Kernel hacking | 850 | # Kernel hacking |
702 | # | 851 | # |
703 | # CONFIG_PRINTK_TIME is not set | 852 | # CONFIG_PRINTK_TIME is not set |
853 | CONFIG_ENABLE_MUST_CHECK=y | ||
854 | # CONFIG_MAGIC_SYSRQ is not set | ||
855 | # CONFIG_UNUSED_SYMBOLS is not set | ||
704 | # CONFIG_DEBUG_KERNEL is not set | 856 | # CONFIG_DEBUG_KERNEL is not set |
705 | CONFIG_LOG_BUF_SHIFT=14 | 857 | CONFIG_LOG_BUF_SHIFT=14 |
706 | # CONFIG_DEBUG_BUGVERBOSE is not set | 858 | # CONFIG_DEBUG_BUGVERBOSE is not set |
859 | # CONFIG_DEBUG_FS is not set | ||
707 | # CONFIG_FRAME_POINTER is not set | 860 | # CONFIG_FRAME_POINTER is not set |
861 | # CONFIG_UNWIND_INFO is not set | ||
862 | # CONFIG_HEADERS_CHECK is not set | ||
708 | 863 | ||
709 | # | 864 | # |
710 | # Security options | 865 | # Security options |
@@ -718,12 +873,9 @@ CONFIG_LOG_BUF_SHIFT=14 | |||
718 | # CONFIG_CRYPTO is not set | 873 | # CONFIG_CRYPTO is not set |
719 | 874 | ||
720 | # | 875 | # |
721 | # Hardware crypto devices | ||
722 | # | ||
723 | |||
724 | # | ||
725 | # Library routines | 876 | # Library routines |
726 | # | 877 | # |
727 | # CONFIG_CRC_CCITT is not set | 878 | # CONFIG_CRC_CCITT is not set |
879 | # CONFIG_CRC16 is not set | ||
728 | CONFIG_CRC32=y | 880 | CONFIG_CRC32=y |
729 | # CONFIG_LIBCRC32C is not set | 881 | # CONFIG_LIBCRC32C is not set |
diff --git a/arch/m32r/mappi3/defconfig.smp b/arch/m32r/mappi3/defconfig.smp index 2eebe75fc071..2f352267a6d9 100644 --- a/arch/m32r/mappi3/defconfig.smp +++ b/arch/m32r/mappi3/defconfig.smp | |||
@@ -1,21 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Tue May 31 17:55:34 2005 | 4 | # Mon Dec 11 19:57:33 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
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 | ||
17 | CONFIG_BROKEN=y | ||
18 | CONFIG_BROKEN_ON_SMP=y | ||
19 | CONFIG_LOCK_KERNEL=y | 16 | CONFIG_LOCK_KERNEL=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 17 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
21 | 18 | ||
@@ -23,32 +20,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
23 | # General setup | 20 | # General setup |
24 | # | 21 | # |
25 | CONFIG_LOCALVERSION="" | 22 | CONFIG_LOCALVERSION="" |
23 | CONFIG_LOCALVERSION_AUTO=y | ||
26 | CONFIG_SWAP=y | 24 | CONFIG_SWAP=y |
27 | CONFIG_SYSVIPC=y | 25 | CONFIG_SYSVIPC=y |
26 | # CONFIG_IPC_NS is not set | ||
28 | # CONFIG_POSIX_MQUEUE is not set | 27 | # CONFIG_POSIX_MQUEUE is not set |
29 | # CONFIG_BSD_PROCESS_ACCT is not set | 28 | # CONFIG_BSD_PROCESS_ACCT is not set |
30 | CONFIG_SYSCTL=y | 29 | # CONFIG_TASKSTATS is not set |
30 | # CONFIG_UTS_NS is not set | ||
31 | # CONFIG_AUDIT is not set | 31 | # CONFIG_AUDIT is not set |
32 | CONFIG_HOTPLUG=y | ||
33 | CONFIG_KOBJECT_UEVENT=y | ||
34 | CONFIG_IKCONFIG=y | 32 | CONFIG_IKCONFIG=y |
35 | CONFIG_IKCONFIG_PROC=y | 33 | CONFIG_IKCONFIG_PROC=y |
36 | # CONFIG_CPUSETS is not set | 34 | # CONFIG_CPUSETS is not set |
35 | CONFIG_SYSFS_DEPRECATED=y | ||
36 | # CONFIG_RELAY is not set | ||
37 | CONFIG_INITRAMFS_SOURCE="" | ||
38 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
39 | CONFIG_SYSCTL=y | ||
37 | CONFIG_EMBEDDED=y | 40 | CONFIG_EMBEDDED=y |
41 | CONFIG_SYSCTL_SYSCALL=y | ||
38 | # CONFIG_KALLSYMS is not set | 42 | # CONFIG_KALLSYMS is not set |
43 | CONFIG_HOTPLUG=y | ||
39 | CONFIG_PRINTK=y | 44 | CONFIG_PRINTK=y |
40 | CONFIG_BUG=y | 45 | CONFIG_BUG=y |
46 | CONFIG_ELF_CORE=y | ||
41 | CONFIG_BASE_FULL=y | 47 | CONFIG_BASE_FULL=y |
42 | # CONFIG_FUTEX is not set | 48 | # CONFIG_FUTEX is not set |
43 | # CONFIG_EPOLL is not set | 49 | # CONFIG_EPOLL is not set |
44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
45 | CONFIG_SHMEM=y | 50 | CONFIG_SHMEM=y |
46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 51 | CONFIG_SLAB=y |
47 | CONFIG_CC_ALIGN_LABELS=0 | 52 | CONFIG_VM_EVENT_COUNTERS=y |
48 | CONFIG_CC_ALIGN_LOOPS=0 | ||
49 | CONFIG_CC_ALIGN_JUMPS=0 | ||
50 | # CONFIG_TINY_SHMEM is not set | 53 | # CONFIG_TINY_SHMEM is not set |
51 | CONFIG_BASE_SMALL=0 | 54 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
52 | 56 | ||
53 | # | 57 | # |
54 | # Loadable module support | 58 | # Loadable module support |
@@ -56,13 +60,31 @@ CONFIG_BASE_SMALL=0 | |||
56 | CONFIG_MODULES=y | 60 | CONFIG_MODULES=y |
57 | CONFIG_MODULE_UNLOAD=y | 61 | CONFIG_MODULE_UNLOAD=y |
58 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 62 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
59 | CONFIG_OBSOLETE_MODPARM=y | ||
60 | # CONFIG_MODVERSIONS is not set | 63 | # CONFIG_MODVERSIONS is not set |
61 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 64 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
62 | CONFIG_KMOD=y | 65 | CONFIG_KMOD=y |
63 | CONFIG_STOP_MACHINE=y | 66 | CONFIG_STOP_MACHINE=y |
64 | 67 | ||
65 | # | 68 | # |
69 | # Block layer | ||
70 | # | ||
71 | CONFIG_BLOCK=y | ||
72 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
73 | |||
74 | # | ||
75 | # IO Schedulers | ||
76 | # | ||
77 | CONFIG_IOSCHED_NOOP=y | ||
78 | # CONFIG_IOSCHED_AS is not set | ||
79 | CONFIG_IOSCHED_DEADLINE=y | ||
80 | CONFIG_IOSCHED_CFQ=y | ||
81 | # CONFIG_DEFAULT_AS is not set | ||
82 | # CONFIG_DEFAULT_DEADLINE is not set | ||
83 | CONFIG_DEFAULT_CFQ=y | ||
84 | # CONFIG_DEFAULT_NOOP is not set | ||
85 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
86 | |||
87 | # | ||
66 | # Processor type and features | 88 | # Processor type and features |
67 | # | 89 | # |
68 | # CONFIG_PLAT_MAPPI is not set | 90 | # CONFIG_PLAT_MAPPI is not set |
@@ -72,8 +94,10 @@ CONFIG_STOP_MACHINE=y | |||
72 | # CONFIG_PLAT_OAKS32R is not set | 94 | # CONFIG_PLAT_OAKS32R is not set |
73 | # CONFIG_PLAT_MAPPI2 is not set | 95 | # CONFIG_PLAT_MAPPI2 is not set |
74 | CONFIG_PLAT_MAPPI3=y | 96 | CONFIG_PLAT_MAPPI3=y |
97 | # CONFIG_PLAT_M32104UT is not set | ||
75 | CONFIG_CHIP_M32700=y | 98 | CONFIG_CHIP_M32700=y |
76 | # CONFIG_CHIP_M32102 is not set | 99 | # CONFIG_CHIP_M32102 is not set |
100 | # CONFIG_CHIP_M32104 is not set | ||
77 | # CONFIG_CHIP_VDEC2 is not set | 101 | # CONFIG_CHIP_VDEC2 is not set |
78 | # CONFIG_CHIP_OPSP is not set | 102 | # CONFIG_CHIP_OPSP is not set |
79 | CONFIG_MMU=y | 103 | CONFIG_MMU=y |
@@ -87,23 +111,33 @@ CONFIG_TIMER_DIVIDE=128 | |||
87 | CONFIG_MEMORY_START=0x08000000 | 111 | CONFIG_MEMORY_START=0x08000000 |
88 | CONFIG_MEMORY_SIZE=0x08000000 | 112 | CONFIG_MEMORY_SIZE=0x08000000 |
89 | CONFIG_NOHIGHMEM=y | 113 | CONFIG_NOHIGHMEM=y |
114 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
115 | CONFIG_SELECT_MEMORY_MODEL=y | ||
116 | # CONFIG_FLATMEM_MANUAL is not set | ||
117 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
118 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
90 | CONFIG_DISCONTIGMEM=y | 119 | CONFIG_DISCONTIGMEM=y |
120 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
121 | CONFIG_NEED_MULTIPLE_NODES=y | ||
122 | # CONFIG_SPARSEMEM_STATIC is not set | ||
123 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
124 | # CONFIG_RESOURCES_64BIT is not set | ||
91 | CONFIG_IRAM_START=0x00f00000 | 125 | CONFIG_IRAM_START=0x00f00000 |
92 | CONFIG_IRAM_SIZE=0x00080000 | 126 | CONFIG_IRAM_SIZE=0x00080000 |
93 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 127 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
94 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 128 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
129 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
130 | CONFIG_GENERIC_HWEIGHT=y | ||
95 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 131 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
96 | CONFIG_PREEMPT=y | 132 | CONFIG_PREEMPT=y |
97 | # CONFIG_HAVE_DEC_LOCK is not set | ||
98 | CONFIG_SMP=y | 133 | CONFIG_SMP=y |
99 | # CONFIG_CHIP_M32700_TS1 is not set | 134 | # CONFIG_CHIP_M32700_TS1 is not set |
100 | CONFIG_NR_CPUS=2 | 135 | CONFIG_NR_CPUS=2 |
101 | # CONFIG_NUMA is not set | 136 | CONFIG_NODES_SHIFT=1 |
102 | 137 | ||
103 | # | 138 | # |
104 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 139 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
105 | # | 140 | # |
106 | # CONFIG_PCI is not set | ||
107 | # CONFIG_ISA is not set | 141 | # CONFIG_ISA is not set |
108 | 142 | ||
109 | # | 143 | # |
@@ -112,11 +146,12 @@ CONFIG_NR_CPUS=2 | |||
112 | CONFIG_PCCARD=y | 146 | CONFIG_PCCARD=y |
113 | # CONFIG_PCMCIA_DEBUG is not set | 147 | # CONFIG_PCMCIA_DEBUG is not set |
114 | CONFIG_PCMCIA=y | 148 | CONFIG_PCMCIA=y |
149 | CONFIG_PCMCIA_LOAD_CIS=y | ||
150 | CONFIG_PCMCIA_IOCTL=y | ||
115 | 151 | ||
116 | # | 152 | # |
117 | # PC-card bridges | 153 | # PC-card bridges |
118 | # | 154 | # |
119 | # CONFIG_TCIC is not set | ||
120 | # CONFIG_M32R_PCC is not set | 155 | # CONFIG_M32R_PCC is not set |
121 | # CONFIG_M32R_CFC is not set | 156 | # CONFIG_M32R_CFC is not set |
122 | 157 | ||
@@ -131,6 +166,93 @@ CONFIG_BINFMT_ELF=y | |||
131 | # CONFIG_BINFMT_MISC is not set | 166 | # CONFIG_BINFMT_MISC is not set |
132 | 167 | ||
133 | # | 168 | # |
169 | # Networking | ||
170 | # | ||
171 | CONFIG_NET=y | ||
172 | |||
173 | # | ||
174 | # Networking options | ||
175 | # | ||
176 | # CONFIG_NETDEBUG is not set | ||
177 | # CONFIG_PACKET is not set | ||
178 | CONFIG_UNIX=y | ||
179 | CONFIG_XFRM=y | ||
180 | # CONFIG_XFRM_USER is not set | ||
181 | # CONFIG_XFRM_SUB_POLICY is not set | ||
182 | # CONFIG_NET_KEY is not set | ||
183 | CONFIG_INET=y | ||
184 | # CONFIG_IP_MULTICAST is not set | ||
185 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
186 | CONFIG_IP_FIB_HASH=y | ||
187 | CONFIG_IP_PNP=y | ||
188 | CONFIG_IP_PNP_DHCP=y | ||
189 | # CONFIG_IP_PNP_BOOTP is not set | ||
190 | # CONFIG_IP_PNP_RARP is not set | ||
191 | # CONFIG_NET_IPIP is not set | ||
192 | # CONFIG_NET_IPGRE is not set | ||
193 | # CONFIG_ARPD is not set | ||
194 | # CONFIG_SYN_COOKIES is not set | ||
195 | # CONFIG_INET_AH is not set | ||
196 | # CONFIG_INET_ESP is not set | ||
197 | # CONFIG_INET_IPCOMP is not set | ||
198 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
199 | # CONFIG_INET_TUNNEL is not set | ||
200 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
201 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
202 | CONFIG_INET_XFRM_MODE_BEET=y | ||
203 | CONFIG_INET_DIAG=y | ||
204 | CONFIG_INET_TCP_DIAG=y | ||
205 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
206 | CONFIG_TCP_CONG_CUBIC=y | ||
207 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
208 | # CONFIG_TCP_MD5SIG is not set | ||
209 | # CONFIG_IPV6 is not set | ||
210 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
211 | # CONFIG_INET6_TUNNEL is not set | ||
212 | # CONFIG_NETWORK_SECMARK is not set | ||
213 | # CONFIG_NETFILTER is not set | ||
214 | |||
215 | # | ||
216 | # DCCP Configuration (EXPERIMENTAL) | ||
217 | # | ||
218 | # CONFIG_IP_DCCP is not set | ||
219 | |||
220 | # | ||
221 | # SCTP Configuration (EXPERIMENTAL) | ||
222 | # | ||
223 | # CONFIG_IP_SCTP is not set | ||
224 | |||
225 | # | ||
226 | # TIPC Configuration (EXPERIMENTAL) | ||
227 | # | ||
228 | # CONFIG_TIPC is not set | ||
229 | # CONFIG_ATM is not set | ||
230 | # CONFIG_BRIDGE is not set | ||
231 | # CONFIG_VLAN_8021Q is not set | ||
232 | # CONFIG_DECNET is not set | ||
233 | # CONFIG_LLC2 is not set | ||
234 | # CONFIG_IPX is not set | ||
235 | # CONFIG_ATALK is not set | ||
236 | # CONFIG_X25 is not set | ||
237 | # CONFIG_LAPB is not set | ||
238 | # CONFIG_ECONET is not set | ||
239 | # CONFIG_WAN_ROUTER is not set | ||
240 | |||
241 | # | ||
242 | # QoS and/or fair queueing | ||
243 | # | ||
244 | # CONFIG_NET_SCHED is not set | ||
245 | |||
246 | # | ||
247 | # Network testing | ||
248 | # | ||
249 | # CONFIG_NET_PKTGEN is not set | ||
250 | # CONFIG_HAMRADIO is not set | ||
251 | # CONFIG_IRDA is not set | ||
252 | # CONFIG_BT is not set | ||
253 | # CONFIG_IEEE80211 is not set | ||
254 | |||
255 | # | ||
134 | # Device Drivers | 256 | # Device Drivers |
135 | # | 257 | # |
136 | 258 | ||
@@ -140,6 +262,12 @@ CONFIG_BINFMT_ELF=y | |||
140 | CONFIG_STANDALONE=y | 262 | CONFIG_STANDALONE=y |
141 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 263 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
142 | CONFIG_FW_LOADER=y | 264 | CONFIG_FW_LOADER=y |
265 | # CONFIG_SYS_HYPERVISOR is not set | ||
266 | |||
267 | # | ||
268 | # Connector - unified userspace <-> kernelspace linker | ||
269 | # | ||
270 | # CONFIG_CONNECTOR is not set | ||
143 | 271 | ||
144 | # | 272 | # |
145 | # Memory Technology Devices (MTD) | 273 | # Memory Technology Devices (MTD) |
@@ -162,6 +290,8 @@ CONFIG_MTD_BLOCK=y | |||
162 | # CONFIG_FTL is not set | 290 | # CONFIG_FTL is not set |
163 | # CONFIG_NFTL is not set | 291 | # CONFIG_NFTL is not set |
164 | # CONFIG_INFTL is not set | 292 | # CONFIG_INFTL is not set |
293 | # CONFIG_RFD_FTL is not set | ||
294 | # CONFIG_SSFDC is not set | ||
165 | 295 | ||
166 | # | 296 | # |
167 | # RAM/ROM/Flash chip drivers | 297 | # RAM/ROM/Flash chip drivers |
@@ -187,6 +317,7 @@ CONFIG_MTD_CFI_I2=y | |||
187 | # Mapping drivers for chip access | 317 | # Mapping drivers for chip access |
188 | # | 318 | # |
189 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | 319 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set |
320 | # CONFIG_MTD_PLATRAM is not set | ||
190 | 321 | ||
191 | # | 322 | # |
192 | # Self-contained MTD device drivers | 323 | # Self-contained MTD device drivers |
@@ -194,7 +325,6 @@ CONFIG_MTD_CFI_I2=y | |||
194 | # CONFIG_MTD_SLRAM is not set | 325 | # CONFIG_MTD_SLRAM is not set |
195 | # CONFIG_MTD_PHRAM is not set | 326 | # CONFIG_MTD_PHRAM is not set |
196 | # CONFIG_MTD_MTDRAM is not set | 327 | # CONFIG_MTD_MTDRAM is not set |
197 | # CONFIG_MTD_BLKMTD is not set | ||
198 | # CONFIG_MTD_BLOCK2MTD is not set | 328 | # CONFIG_MTD_BLOCK2MTD is not set |
199 | 329 | ||
200 | # | 330 | # |
@@ -210,6 +340,11 @@ CONFIG_MTD_CFI_I2=y | |||
210 | # CONFIG_MTD_NAND is not set | 340 | # CONFIG_MTD_NAND is not set |
211 | 341 | ||
212 | # | 342 | # |
343 | # OneNAND Flash Device Drivers | ||
344 | # | ||
345 | # CONFIG_MTD_ONENAND is not set | ||
346 | |||
347 | # | ||
213 | # Parallel port support | 348 | # Parallel port support |
214 | # | 349 | # |
215 | # CONFIG_PARPORT is not set | 350 | # CONFIG_PARPORT is not set |
@@ -221,7 +356,6 @@ CONFIG_MTD_CFI_I2=y | |||
221 | # | 356 | # |
222 | # Block devices | 357 | # Block devices |
223 | # | 358 | # |
224 | # CONFIG_BLK_DEV_FD is not set | ||
225 | # CONFIG_BLK_DEV_COW_COMMON is not set | 359 | # CONFIG_BLK_DEV_COW_COMMON is not set |
226 | CONFIG_BLK_DEV_LOOP=y | 360 | CONFIG_BLK_DEV_LOOP=y |
227 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 361 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -229,23 +363,21 @@ CONFIG_BLK_DEV_NBD=m | |||
229 | CONFIG_BLK_DEV_RAM=y | 363 | CONFIG_BLK_DEV_RAM=y |
230 | CONFIG_BLK_DEV_RAM_COUNT=16 | 364 | CONFIG_BLK_DEV_RAM_COUNT=16 |
231 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 365 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
366 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
232 | CONFIG_BLK_DEV_INITRD=y | 367 | CONFIG_BLK_DEV_INITRD=y |
233 | CONFIG_INITRAMFS_SOURCE="" | ||
234 | # CONFIG_CDROM_PKTCDVD is not set | 368 | # CONFIG_CDROM_PKTCDVD is not set |
369 | # CONFIG_ATA_OVER_ETH is not set | ||
235 | 370 | ||
236 | # | 371 | # |
237 | # IO Schedulers | 372 | # Misc devices |
238 | # | 373 | # |
239 | CONFIG_IOSCHED_NOOP=y | 374 | # CONFIG_TIFM_CORE is not set |
240 | # CONFIG_IOSCHED_AS is not set | ||
241 | CONFIG_IOSCHED_DEADLINE=y | ||
242 | CONFIG_IOSCHED_CFQ=y | ||
243 | # CONFIG_ATA_OVER_ETH is not set | ||
244 | 375 | ||
245 | # | 376 | # |
246 | # ATA/ATAPI/MFM/RLL support | 377 | # ATA/ATAPI/MFM/RLL support |
247 | # | 378 | # |
248 | CONFIG_IDE=y | 379 | CONFIG_IDE=y |
380 | CONFIG_IDE_MAX_HWIFS=4 | ||
249 | CONFIG_BLK_DEV_IDE=y | 381 | CONFIG_BLK_DEV_IDE=y |
250 | 382 | ||
251 | # | 383 | # |
@@ -254,7 +386,7 @@ CONFIG_BLK_DEV_IDE=y | |||
254 | # CONFIG_BLK_DEV_IDE_SATA is not set | 386 | # CONFIG_BLK_DEV_IDE_SATA is not set |
255 | CONFIG_BLK_DEV_IDEDISK=y | 387 | CONFIG_BLK_DEV_IDEDISK=y |
256 | # CONFIG_IDEDISK_MULTI_MODE is not set | 388 | # CONFIG_IDEDISK_MULTI_MODE is not set |
257 | CONFIG_BLK_DEV_IDECS=y | 389 | CONFIG_BLK_DEV_IDECS=m |
258 | CONFIG_BLK_DEV_IDECD=m | 390 | CONFIG_BLK_DEV_IDECD=m |
259 | # CONFIG_BLK_DEV_IDETAPE is not set | 391 | # CONFIG_BLK_DEV_IDETAPE is not set |
260 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 392 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
@@ -272,7 +404,13 @@ CONFIG_IDE_GENERIC=y | |||
272 | # | 404 | # |
273 | # SCSI device support | 405 | # SCSI device support |
274 | # | 406 | # |
407 | # CONFIG_RAID_ATTRS is not set | ||
275 | # CONFIG_SCSI is not set | 408 | # CONFIG_SCSI is not set |
409 | # CONFIG_SCSI_NETLINK is not set | ||
410 | |||
411 | # | ||
412 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
413 | # | ||
276 | 414 | ||
277 | # | 415 | # |
278 | # Multi-device support (RAID and LVM) | 416 | # Multi-device support (RAID and LVM) |
@@ -282,79 +420,19 @@ CONFIG_IDE_GENERIC=y | |||
282 | # | 420 | # |
283 | # Fusion MPT device support | 421 | # Fusion MPT device support |
284 | # | 422 | # |
423 | # CONFIG_FUSION is not set | ||
285 | 424 | ||
286 | # | 425 | # |
287 | # IEEE 1394 (FireWire) support | 426 | # IEEE 1394 (FireWire) support |
288 | # | 427 | # |
289 | # CONFIG_IEEE1394 is not set | ||
290 | 428 | ||
291 | # | 429 | # |
292 | # I2O device support | 430 | # I2O device support |
293 | # | 431 | # |
294 | 432 | ||
295 | # | 433 | # |
296 | # Networking support | 434 | # Network device support |
297 | # | 435 | # |
298 | CONFIG_NET=y | ||
299 | |||
300 | # | ||
301 | # Networking options | ||
302 | # | ||
303 | # CONFIG_PACKET is not set | ||
304 | CONFIG_UNIX=y | ||
305 | # CONFIG_NET_KEY is not set | ||
306 | CONFIG_INET=y | ||
307 | # CONFIG_IP_MULTICAST is not set | ||
308 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
309 | CONFIG_IP_PNP=y | ||
310 | CONFIG_IP_PNP_DHCP=y | ||
311 | # CONFIG_IP_PNP_BOOTP is not set | ||
312 | # CONFIG_IP_PNP_RARP is not set | ||
313 | # CONFIG_NET_IPIP is not set | ||
314 | # CONFIG_NET_IPGRE is not set | ||
315 | # CONFIG_ARPD is not set | ||
316 | # CONFIG_SYN_COOKIES is not set | ||
317 | # CONFIG_INET_AH is not set | ||
318 | # CONFIG_INET_ESP is not set | ||
319 | # CONFIG_INET_IPCOMP is not set | ||
320 | # CONFIG_INET_TUNNEL is not set | ||
321 | CONFIG_IP_TCPDIAG=y | ||
322 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
323 | # CONFIG_IPV6 is not set | ||
324 | # CONFIG_NETFILTER is not set | ||
325 | |||
326 | # | ||
327 | # SCTP Configuration (EXPERIMENTAL) | ||
328 | # | ||
329 | # CONFIG_IP_SCTP is not set | ||
330 | # CONFIG_ATM is not set | ||
331 | # CONFIG_BRIDGE is not set | ||
332 | # CONFIG_VLAN_8021Q is not set | ||
333 | # CONFIG_DECNET is not set | ||
334 | # CONFIG_LLC2 is not set | ||
335 | # CONFIG_IPX is not set | ||
336 | # CONFIG_ATALK is not set | ||
337 | # CONFIG_X25 is not set | ||
338 | # CONFIG_LAPB is not set | ||
339 | # CONFIG_NET_DIVERT is not set | ||
340 | # CONFIG_ECONET is not set | ||
341 | # CONFIG_WAN_ROUTER is not set | ||
342 | |||
343 | # | ||
344 | # QoS and/or fair queueing | ||
345 | # | ||
346 | # CONFIG_NET_SCHED is not set | ||
347 | # CONFIG_NET_CLS_ROUTE is not set | ||
348 | |||
349 | # | ||
350 | # Network testing | ||
351 | # | ||
352 | # CONFIG_NET_PKTGEN is not set | ||
353 | # CONFIG_NETPOLL is not set | ||
354 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
355 | # CONFIG_HAMRADIO is not set | ||
356 | # CONFIG_IRDA is not set | ||
357 | # CONFIG_BT is not set | ||
358 | CONFIG_NETDEVICES=y | 436 | CONFIG_NETDEVICES=y |
359 | # CONFIG_DUMMY is not set | 437 | # CONFIG_DUMMY is not set |
360 | # CONFIG_BONDING is not set | 438 | # CONFIG_BONDING is not set |
@@ -362,6 +440,11 @@ CONFIG_NETDEVICES=y | |||
362 | # CONFIG_TUN is not set | 440 | # CONFIG_TUN is not set |
363 | 441 | ||
364 | # | 442 | # |
443 | # PHY device support | ||
444 | # | ||
445 | # CONFIG_PHYLIB is not set | ||
446 | |||
447 | # | ||
365 | # Ethernet (10 or 100Mbit) | 448 | # Ethernet (10 or 100Mbit) |
366 | # | 449 | # |
367 | CONFIG_NET_ETHERNET=y | 450 | CONFIG_NET_ETHERNET=y |
@@ -399,6 +482,8 @@ CONFIG_SMC91X=y | |||
399 | # CONFIG_SLIP is not set | 482 | # CONFIG_SLIP is not set |
400 | # CONFIG_SHAPER is not set | 483 | # CONFIG_SHAPER is not set |
401 | # CONFIG_NETCONSOLE is not set | 484 | # CONFIG_NETCONSOLE is not set |
485 | # CONFIG_NETPOLL is not set | ||
486 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
402 | 487 | ||
403 | # | 488 | # |
404 | # ISDN subsystem | 489 | # ISDN subsystem |
@@ -414,6 +499,7 @@ CONFIG_SMC91X=y | |||
414 | # Input device support | 499 | # Input device support |
415 | # | 500 | # |
416 | CONFIG_INPUT=y | 501 | CONFIG_INPUT=y |
502 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
417 | 503 | ||
418 | # | 504 | # |
419 | # Userland interfaces | 505 | # Userland interfaces |
@@ -445,7 +531,6 @@ CONFIG_SERIO=y | |||
445 | # CONFIG_SERIO_LIBPS2 is not set | 531 | # CONFIG_SERIO_LIBPS2 is not set |
446 | # CONFIG_SERIO_RAW is not set | 532 | # CONFIG_SERIO_RAW is not set |
447 | # CONFIG_GAMEPORT is not set | 533 | # CONFIG_GAMEPORT is not set |
448 | CONFIG_SOUND_GAMEPORT=y | ||
449 | 534 | ||
450 | # | 535 | # |
451 | # Character devices | 536 | # Character devices |
@@ -465,7 +550,6 @@ CONFIG_SERIAL_CORE=y | |||
465 | CONFIG_SERIAL_CORE_CONSOLE=y | 550 | CONFIG_SERIAL_CORE_CONSOLE=y |
466 | CONFIG_SERIAL_M32R_SIO=y | 551 | CONFIG_SERIAL_M32R_SIO=y |
467 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y | 552 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y |
468 | # CONFIG_SERIAL_M32R_PLDSIO is not set | ||
469 | CONFIG_UNIX98_PTYS=y | 553 | CONFIG_UNIX98_PTYS=y |
470 | CONFIG_LEGACY_PTYS=y | 554 | CONFIG_LEGACY_PTYS=y |
471 | CONFIG_LEGACY_PTY_COUNT=256 | 555 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -479,25 +563,27 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
479 | # Watchdog Cards | 563 | # Watchdog Cards |
480 | # | 564 | # |
481 | # CONFIG_WATCHDOG is not set | 565 | # CONFIG_WATCHDOG is not set |
566 | CONFIG_HW_RANDOM=y | ||
482 | # CONFIG_RTC is not set | 567 | # CONFIG_RTC is not set |
483 | # CONFIG_GEN_RTC is not set | ||
484 | # CONFIG_DTLK is not set | 568 | # CONFIG_DTLK is not set |
485 | # CONFIG_R3964 is not set | 569 | # CONFIG_R3964 is not set |
486 | 570 | ||
487 | # | 571 | # |
488 | # Ftape, the floppy tape device driver | 572 | # Ftape, the floppy tape device driver |
489 | # | 573 | # |
490 | # CONFIG_DRM is not set | ||
491 | 574 | ||
492 | # | 575 | # |
493 | # PCMCIA character devices | 576 | # PCMCIA character devices |
494 | # | 577 | # |
495 | # CONFIG_SYNCLINK_CS is not set | 578 | # CONFIG_SYNCLINK_CS is not set |
579 | # CONFIG_CARDMAN_4000 is not set | ||
580 | # CONFIG_CARDMAN_4040 is not set | ||
496 | # CONFIG_RAW_DRIVER is not set | 581 | # CONFIG_RAW_DRIVER is not set |
497 | 582 | ||
498 | # | 583 | # |
499 | # TPM devices | 584 | # TPM devices |
500 | # | 585 | # |
586 | # CONFIG_TCG_TPM is not set | ||
501 | 587 | ||
502 | # | 588 | # |
503 | # I2C support | 589 | # I2C support |
@@ -505,13 +591,25 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
505 | # CONFIG_I2C is not set | 591 | # CONFIG_I2C is not set |
506 | 592 | ||
507 | # | 593 | # |
594 | # SPI support | ||
595 | # | ||
596 | # CONFIG_SPI is not set | ||
597 | # CONFIG_SPI_MASTER is not set | ||
598 | |||
599 | # | ||
508 | # Dallas's 1-wire bus | 600 | # Dallas's 1-wire bus |
509 | # | 601 | # |
510 | # CONFIG_W1 is not set | 602 | # CONFIG_W1 is not set |
511 | 603 | ||
512 | # | 604 | # |
513 | # Misc devices | 605 | # Hardware Monitoring support |
514 | # | 606 | # |
607 | CONFIG_HWMON=y | ||
608 | # CONFIG_HWMON_VID is not set | ||
609 | # CONFIG_SENSORS_ABITUGURU is not set | ||
610 | # CONFIG_SENSORS_F71805F is not set | ||
611 | # CONFIG_SENSORS_VT1211 is not set | ||
612 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
515 | 613 | ||
516 | # | 614 | # |
517 | # Multimedia devices | 615 | # Multimedia devices |
@@ -526,7 +624,9 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
526 | # | 624 | # |
527 | # Graphics support | 625 | # Graphics support |
528 | # | 626 | # |
627 | CONFIG_FIRMWARE_EDID=y | ||
529 | # CONFIG_FB is not set | 628 | # CONFIG_FB is not set |
629 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
530 | 630 | ||
531 | # | 631 | # |
532 | # Sound | 632 | # Sound |
@@ -538,6 +638,11 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
538 | # | 638 | # |
539 | # CONFIG_USB_ARCH_HAS_HCD is not set | 639 | # CONFIG_USB_ARCH_HAS_HCD is not set |
540 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 640 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
641 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
642 | |||
643 | # | ||
644 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
645 | # | ||
541 | 646 | ||
542 | # | 647 | # |
543 | # USB Gadget Support | 648 | # USB Gadget Support |
@@ -550,35 +655,73 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
550 | # CONFIG_MMC is not set | 655 | # CONFIG_MMC is not set |
551 | 656 | ||
552 | # | 657 | # |
658 | # LED devices | ||
659 | # | ||
660 | # CONFIG_NEW_LEDS is not set | ||
661 | |||
662 | # | ||
663 | # LED drivers | ||
664 | # | ||
665 | |||
666 | # | ||
667 | # LED Triggers | ||
668 | # | ||
669 | |||
670 | # | ||
553 | # InfiniBand support | 671 | # InfiniBand support |
554 | # | 672 | # |
555 | # CONFIG_INFINIBAND is not set | 673 | |
674 | # | ||
675 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
676 | # | ||
677 | |||
678 | # | ||
679 | # Real Time Clock | ||
680 | # | ||
681 | # CONFIG_RTC_CLASS is not set | ||
682 | |||
683 | # | ||
684 | # DMA Engine support | ||
685 | # | ||
686 | # CONFIG_DMA_ENGINE is not set | ||
687 | |||
688 | # | ||
689 | # DMA Clients | ||
690 | # | ||
691 | |||
692 | # | ||
693 | # DMA Devices | ||
694 | # | ||
556 | 695 | ||
557 | # | 696 | # |
558 | # File systems | 697 | # File systems |
559 | # | 698 | # |
560 | CONFIG_EXT2_FS=y | 699 | CONFIG_EXT2_FS=y |
561 | # CONFIG_EXT2_FS_XATTR is not set | 700 | # CONFIG_EXT2_FS_XATTR is not set |
701 | # CONFIG_EXT2_FS_XIP is not set | ||
562 | CONFIG_EXT3_FS=y | 702 | CONFIG_EXT3_FS=y |
563 | CONFIG_EXT3_FS_XATTR=y | 703 | CONFIG_EXT3_FS_XATTR=y |
564 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 704 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
565 | # CONFIG_EXT3_FS_SECURITY is not set | 705 | # CONFIG_EXT3_FS_SECURITY is not set |
706 | # CONFIG_EXT4DEV_FS is not set | ||
566 | CONFIG_JBD=y | 707 | CONFIG_JBD=y |
567 | # CONFIG_JBD_DEBUG is not set | 708 | # CONFIG_JBD_DEBUG is not set |
568 | CONFIG_FS_MBCACHE=y | 709 | CONFIG_FS_MBCACHE=y |
569 | # CONFIG_REISERFS_FS is not set | 710 | # CONFIG_REISERFS_FS is not set |
570 | # CONFIG_JFS_FS is not set | 711 | # CONFIG_JFS_FS is not set |
571 | 712 | # CONFIG_FS_POSIX_ACL is not set | |
572 | # | ||
573 | # XFS support | ||
574 | # | ||
575 | # CONFIG_XFS_FS is not set | 713 | # CONFIG_XFS_FS is not set |
714 | # CONFIG_GFS2_FS is not set | ||
715 | # CONFIG_OCFS2_FS is not set | ||
576 | # CONFIG_MINIX_FS is not set | 716 | # CONFIG_MINIX_FS is not set |
577 | CONFIG_ROMFS_FS=y | 717 | CONFIG_ROMFS_FS=y |
718 | CONFIG_INOTIFY=y | ||
719 | CONFIG_INOTIFY_USER=y | ||
578 | # CONFIG_QUOTA is not set | 720 | # CONFIG_QUOTA is not set |
579 | CONFIG_DNOTIFY=y | 721 | CONFIG_DNOTIFY=y |
580 | # CONFIG_AUTOFS_FS is not set | 722 | # CONFIG_AUTOFS_FS is not set |
581 | # CONFIG_AUTOFS4_FS is not set | 723 | # CONFIG_AUTOFS4_FS is not set |
724 | # CONFIG_FUSE_FS is not set | ||
582 | 725 | ||
583 | # | 726 | # |
584 | # CD-ROM/DVD Filesystems | 727 | # CD-ROM/DVD Filesystems |
@@ -603,16 +746,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
603 | # | 746 | # |
604 | CONFIG_PROC_FS=y | 747 | CONFIG_PROC_FS=y |
605 | CONFIG_PROC_KCORE=y | 748 | CONFIG_PROC_KCORE=y |
749 | CONFIG_PROC_SYSCTL=y | ||
606 | CONFIG_SYSFS=y | 750 | CONFIG_SYSFS=y |
607 | CONFIG_DEVFS_FS=y | ||
608 | CONFIG_DEVFS_MOUNT=y | ||
609 | # CONFIG_DEVFS_DEBUG is not set | ||
610 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
611 | CONFIG_TMPFS=y | 751 | CONFIG_TMPFS=y |
612 | # CONFIG_TMPFS_XATTR is not set | 752 | # CONFIG_TMPFS_POSIX_ACL is not set |
613 | # CONFIG_HUGETLBFS is not set | ||
614 | # CONFIG_HUGETLB_PAGE is not set | 753 | # CONFIG_HUGETLB_PAGE is not set |
615 | CONFIG_RAMFS=y | 754 | CONFIG_RAMFS=y |
755 | # CONFIG_CONFIGFS_FS is not set | ||
616 | 756 | ||
617 | # | 757 | # |
618 | # Miscellaneous filesystems | 758 | # Miscellaneous filesystems |
@@ -629,8 +769,9 @@ CONFIG_JFFS_FS_VERBOSE=0 | |||
629 | CONFIG_JFFS_PROC_FS=y | 769 | CONFIG_JFFS_PROC_FS=y |
630 | CONFIG_JFFS2_FS=y | 770 | CONFIG_JFFS2_FS=y |
631 | CONFIG_JFFS2_FS_DEBUG=0 | 771 | CONFIG_JFFS2_FS_DEBUG=0 |
632 | # CONFIG_JFFS2_FS_NAND is not set | 772 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
633 | # CONFIG_JFFS2_FS_NOR_ECC is not set | 773 | # CONFIG_JFFS2_SUMMARY is not set |
774 | # CONFIG_JFFS2_FS_XATTR is not set | ||
634 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | 775 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set |
635 | CONFIG_JFFS2_ZLIB=y | 776 | CONFIG_JFFS2_ZLIB=y |
636 | CONFIG_JFFS2_RTIME=y | 777 | CONFIG_JFFS2_RTIME=y |
@@ -647,12 +788,14 @@ CONFIG_JFFS2_RTIME=y | |||
647 | # | 788 | # |
648 | CONFIG_NFS_FS=y | 789 | CONFIG_NFS_FS=y |
649 | CONFIG_NFS_V3=y | 790 | CONFIG_NFS_V3=y |
791 | # CONFIG_NFS_V3_ACL is not set | ||
650 | # CONFIG_NFS_V4 is not set | 792 | # CONFIG_NFS_V4 is not set |
651 | # CONFIG_NFS_DIRECTIO is not set | 793 | # CONFIG_NFS_DIRECTIO is not set |
652 | # CONFIG_NFSD is not set | 794 | # CONFIG_NFSD is not set |
653 | CONFIG_ROOT_NFS=y | 795 | CONFIG_ROOT_NFS=y |
654 | CONFIG_LOCKD=y | 796 | CONFIG_LOCKD=y |
655 | CONFIG_LOCKD_V4=y | 797 | CONFIG_LOCKD_V4=y |
798 | CONFIG_NFS_COMMON=y | ||
656 | CONFIG_SUNRPC=y | 799 | CONFIG_SUNRPC=y |
657 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 800 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
658 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 801 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -661,6 +804,7 @@ CONFIG_SUNRPC=y | |||
661 | # CONFIG_NCP_FS is not set | 804 | # CONFIG_NCP_FS is not set |
662 | # CONFIG_CODA_FS is not set | 805 | # CONFIG_CODA_FS is not set |
663 | # CONFIG_AFS_FS is not set | 806 | # CONFIG_AFS_FS is not set |
807 | # CONFIG_9P_FS is not set | ||
664 | 808 | ||
665 | # | 809 | # |
666 | # Partition Types | 810 | # Partition Types |
@@ -721,10 +865,16 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
721 | # Kernel hacking | 865 | # Kernel hacking |
722 | # | 866 | # |
723 | # CONFIG_PRINTK_TIME is not set | 867 | # CONFIG_PRINTK_TIME is not set |
868 | CONFIG_ENABLE_MUST_CHECK=y | ||
869 | # CONFIG_MAGIC_SYSRQ is not set | ||
870 | # CONFIG_UNUSED_SYMBOLS is not set | ||
724 | # CONFIG_DEBUG_KERNEL is not set | 871 | # CONFIG_DEBUG_KERNEL is not set |
725 | CONFIG_LOG_BUF_SHIFT=15 | 872 | CONFIG_LOG_BUF_SHIFT=15 |
726 | # CONFIG_DEBUG_BUGVERBOSE is not set | 873 | # CONFIG_DEBUG_BUGVERBOSE is not set |
874 | # CONFIG_DEBUG_FS is not set | ||
727 | # CONFIG_FRAME_POINTER is not set | 875 | # CONFIG_FRAME_POINTER is not set |
876 | # CONFIG_UNWIND_INFO is not set | ||
877 | # CONFIG_HEADERS_CHECK is not set | ||
728 | 878 | ||
729 | # | 879 | # |
730 | # Security options | 880 | # Security options |
@@ -738,13 +888,10 @@ CONFIG_LOG_BUF_SHIFT=15 | |||
738 | # CONFIG_CRYPTO is not set | 888 | # CONFIG_CRYPTO is not set |
739 | 889 | ||
740 | # | 890 | # |
741 | # Hardware crypto devices | ||
742 | # | ||
743 | |||
744 | # | ||
745 | # Library routines | 891 | # Library routines |
746 | # | 892 | # |
747 | # CONFIG_CRC_CCITT is not set | 893 | # CONFIG_CRC_CCITT is not set |
894 | # CONFIG_CRC16 is not set | ||
748 | CONFIG_CRC32=y | 895 | CONFIG_CRC32=y |
749 | # CONFIG_LIBCRC32C is not set | 896 | # CONFIG_LIBCRC32C is not set |
750 | CONFIG_ZLIB_INFLATE=y | 897 | CONFIG_ZLIB_INFLATE=y |
diff --git a/arch/m32r/mm/fault-nommu.c b/arch/m32r/mm/fault-nommu.c index 03fc4c858e0e..9880abac3f54 100644 --- a/arch/m32r/mm/fault-nommu.c +++ b/arch/m32r/mm/fault-nommu.c | |||
@@ -7,8 +7,6 @@ | |||
7 | * Copyright (C) 1995 Linus Torvalds | 7 | * Copyright (C) 1995 Linus Torvalds |
8 | */ | 8 | */ |
9 | 9 | ||
10 | /* $Id: fault-nommu.c,v 1.1 2004/03/30 06:40:59 sakugawa Exp $ */ | ||
11 | |||
12 | #include <linux/signal.h> | 10 | #include <linux/signal.h> |
13 | #include <linux/sched.h> | 11 | #include <linux/sched.h> |
14 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
@@ -46,32 +44,6 @@ unsigned int tlb_entry_d_dat[NR_CPUS]; | |||
46 | #define tlb_entry_d tlb_entry_d_dat[smp_processor_id()] | 44 | #define tlb_entry_d tlb_entry_d_dat[smp_processor_id()] |
47 | #endif | 45 | #endif |
48 | 46 | ||
49 | /* | ||
50 | * Unlock any spinlocks which will prevent us from getting the | ||
51 | * message out | ||
52 | */ | ||
53 | void bust_spinlocks(int yes) | ||
54 | { | ||
55 | int loglevel_save = console_loglevel; | ||
56 | |||
57 | if (yes) { | ||
58 | oops_in_progress = 1; | ||
59 | return; | ||
60 | } | ||
61 | #ifdef CONFIG_VT | ||
62 | unblank_screen(); | ||
63 | #endif | ||
64 | oops_in_progress = 0; | ||
65 | /* | ||
66 | * OK, the message is on the console. Now we call printk() | ||
67 | * without oops_in_progress set so that printk will give klogd | ||
68 | * a poke. Hold onto your hats... | ||
69 | */ | ||
70 | console_loglevel = 15; /* NMI oopser may have shut the console up */ | ||
71 | printk(" "); | ||
72 | console_loglevel = loglevel_save; | ||
73 | } | ||
74 | |||
75 | void do_BUG(const char *file, int line) | 47 | void do_BUG(const char *file, int line) |
76 | { | 48 | { |
77 | bust_spinlocks(1); | 49 | bust_spinlocks(1); |
@@ -161,4 +133,3 @@ void local_flush_tlb_all(void) | |||
161 | { | 133 | { |
162 | BUG(); | 134 | BUG(); |
163 | } | 135 | } |
164 | |||
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c index 9b9feb0f1610..037d58e82fb5 100644 --- a/arch/m32r/mm/fault.c +++ b/arch/m32r/mm/fault.c | |||
@@ -49,32 +49,6 @@ unsigned int tlb_entry_d_dat[NR_CPUS]; | |||
49 | 49 | ||
50 | extern void init_tlb(void); | 50 | extern void init_tlb(void); |
51 | 51 | ||
52 | /* | ||
53 | * Unlock any spinlocks which will prevent us from getting the | ||
54 | * message out | ||
55 | */ | ||
56 | void bust_spinlocks(int yes) | ||
57 | { | ||
58 | int loglevel_save = console_loglevel; | ||
59 | |||
60 | if (yes) { | ||
61 | oops_in_progress = 1; | ||
62 | return; | ||
63 | } | ||
64 | #ifdef CONFIG_VT | ||
65 | unblank_screen(); | ||
66 | #endif | ||
67 | oops_in_progress = 0; | ||
68 | /* | ||
69 | * OK, the message is on the console. Now we call printk() | ||
70 | * without oops_in_progress set so that printk will give klogd | ||
71 | * a poke. Hold onto your hats... | ||
72 | */ | ||
73 | console_loglevel = 15; /* NMI oopser may have shut the console up */ | ||
74 | printk(" "); | ||
75 | console_loglevel = loglevel_save; | ||
76 | } | ||
77 | |||
78 | /*======================================================================* | 52 | /*======================================================================* |
79 | * do_page_fault() | 53 | * do_page_fault() |
80 | *======================================================================* | 54 | *======================================================================* |
@@ -362,8 +336,10 @@ vmalloc_fault: | |||
362 | if (!pte_present(*pte_k)) | 336 | if (!pte_present(*pte_k)) |
363 | goto no_context; | 337 | goto no_context; |
364 | 338 | ||
365 | addr = (address & PAGE_MASK) | (error_code & ACE_INSTRUCTION); | 339 | addr = (address & PAGE_MASK); |
340 | set_thread_fault_code(error_code); | ||
366 | update_mmu_cache(NULL, addr, *pte_k); | 341 | update_mmu_cache(NULL, addr, *pte_k); |
342 | set_thread_fault_code(0); | ||
367 | return; | 343 | return; |
368 | } | 344 | } |
369 | } | 345 | } |
@@ -377,7 +353,7 @@ vmalloc_fault: | |||
377 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr, | 353 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr, |
378 | pte_t pte) | 354 | pte_t pte) |
379 | { | 355 | { |
380 | unsigned long *entry1, *entry2; | 356 | volatile unsigned long *entry1, *entry2; |
381 | unsigned long pte_data, flags; | 357 | unsigned long pte_data, flags; |
382 | unsigned int *entry_dat; | 358 | unsigned int *entry_dat; |
383 | int inst = get_thread_fault_code() & ACE_INSTRUCTION; | 359 | int inst = get_thread_fault_code() & ACE_INSTRUCTION; |
@@ -391,30 +367,26 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr, | |||
391 | 367 | ||
392 | vaddr = (vaddr & PAGE_MASK) | get_asid(); | 368 | vaddr = (vaddr & PAGE_MASK) | get_asid(); |
393 | 369 | ||
370 | pte_data = pte_val(pte); | ||
371 | |||
394 | #ifdef CONFIG_CHIP_OPSP | 372 | #ifdef CONFIG_CHIP_OPSP |
395 | entry1 = (unsigned long *)ITLB_BASE; | 373 | entry1 = (unsigned long *)ITLB_BASE; |
396 | for(i = 0 ; i < NR_TLB_ENTRIES; i++) { | 374 | for (i = 0; i < NR_TLB_ENTRIES; i++) { |
397 | if(*entry1++ == vaddr) { | 375 | if (*entry1++ == vaddr) { |
398 | pte_data = pte_val(pte); | 376 | set_tlb_data(entry1, pte_data); |
399 | set_tlb_data(entry1, pte_data); | 377 | break; |
400 | break; | 378 | } |
401 | } | 379 | entry1++; |
402 | entry1++; | ||
403 | } | 380 | } |
404 | entry2 = (unsigned long *)DTLB_BASE; | 381 | entry2 = (unsigned long *)DTLB_BASE; |
405 | for(i = 0 ; i < NR_TLB_ENTRIES ; i++) { | 382 | for (i = 0; i < NR_TLB_ENTRIES; i++) { |
406 | if(*entry2++ == vaddr) { | 383 | if (*entry2++ == vaddr) { |
407 | pte_data = pte_val(pte); | 384 | set_tlb_data(entry2, pte_data); |
408 | set_tlb_data(entry2, pte_data); | 385 | break; |
409 | break; | 386 | } |
410 | } | 387 | entry2++; |
411 | entry2++; | ||
412 | } | 388 | } |
413 | local_irq_restore(flags); | ||
414 | return; | ||
415 | #else | 389 | #else |
416 | pte_data = pte_val(pte); | ||
417 | |||
418 | /* | 390 | /* |
419 | * Update TLB entries | 391 | * Update TLB entries |
420 | * entry1: ITLB entry address | 392 | * entry1: ITLB entry address |
@@ -439,6 +411,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr, | |||
439 | "i" (MSVA_offset), "i" (MTOP_offset), "i" (MIDXI_offset) | 411 | "i" (MSVA_offset), "i" (MTOP_offset), "i" (MIDXI_offset) |
440 | : "r4", "memory" | 412 | : "r4", "memory" |
441 | ); | 413 | ); |
414 | #endif | ||
442 | 415 | ||
443 | if ((!inst && entry2 >= DTLB_END) || (inst && entry1 >= ITLB_END)) | 416 | if ((!inst && entry2 >= DTLB_END) || (inst && entry1 >= ITLB_END)) |
444 | goto notfound; | 417 | goto notfound; |
@@ -482,7 +455,6 @@ notfound: | |||
482 | set_tlb_data(entry1, pte_data); | 455 | set_tlb_data(entry1, pte_data); |
483 | 456 | ||
484 | goto found; | 457 | goto found; |
485 | #endif | ||
486 | } | 458 | } |
487 | 459 | ||
488 | /*======================================================================* | 460 | /*======================================================================* |
diff --git a/arch/m32r/mm/mmu.S b/arch/m32r/mm/mmu.S index 9a4d40b3d6a2..8bb74b10dca7 100644 --- a/arch/m32r/mm/mmu.S +++ b/arch/m32r/mm/mmu.S | |||
@@ -4,8 +4,6 @@ | |||
4 | * Copyright (C) 2001 by Hiroyuki Kondo | 4 | * Copyright (C) 2001 by Hiroyuki Kondo |
5 | */ | 5 | */ |
6 | 6 | ||
7 | /* $Id: mmu.S,v 1.15 2004/03/16 02:56:27 takata Exp $ */ | ||
8 | |||
9 | #include <linux/linkage.h> | 7 | #include <linux/linkage.h> |
10 | #include <asm/assembler.h> | 8 | #include <asm/assembler.h> |
11 | #include <asm/smp.h> | 9 | #include <asm/smp.h> |
@@ -345,5 +343,4 @@ ENTRY(m32r_otlb_entrys) | |||
345 | 343 | ||
346 | #endif /* CONFIG_MMU */ | 344 | #endif /* CONFIG_MMU */ |
347 | 345 | ||
348 | .end | 346 | .end |
349 | |||
diff --git a/arch/m32r/oaks32r/defconfig.nommu b/arch/m32r/oaks32r/defconfig.nommu index 3f9fe519acb2..aaa00828e0d3 100644 --- a/arch/m32r/oaks32r/defconfig.nommu +++ b/arch/m32r/oaks32r/defconfig.nommu | |||
@@ -1,19 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Fri Jun 3 16:22:04 2005 | 4 | # Tue Dec 12 12:09:17 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 16 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_LOCK_KERNEL=y | 17 | CONFIG_LOCK_KERNEL=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
@@ -22,28 +21,35 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
22 | # General setup | 21 | # General setup |
23 | # | 22 | # |
24 | CONFIG_LOCALVERSION="" | 23 | CONFIG_LOCALVERSION="" |
24 | CONFIG_LOCALVERSION_AUTO=y | ||
25 | # CONFIG_SYSVIPC is not set | ||
25 | # CONFIG_POSIX_MQUEUE is not set | 26 | # CONFIG_POSIX_MQUEUE is not set |
26 | CONFIG_BSD_PROCESS_ACCT=y | 27 | CONFIG_BSD_PROCESS_ACCT=y |
27 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
28 | CONFIG_SYSCTL=y | 29 | # CONFIG_TASKSTATS is not set |
30 | # CONFIG_UTS_NS is not set | ||
29 | # CONFIG_AUDIT is not set | 31 | # CONFIG_AUDIT is not set |
30 | CONFIG_HOTPLUG=y | ||
31 | CONFIG_KOBJECT_UEVENT=y | ||
32 | # CONFIG_IKCONFIG is not set | 32 | # CONFIG_IKCONFIG is not set |
33 | CONFIG_SYSFS_DEPRECATED=y | ||
34 | # CONFIG_RELAY is not set | ||
35 | CONFIG_INITRAMFS_SOURCE="" | ||
36 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
37 | CONFIG_SYSCTL=y | ||
33 | CONFIG_EMBEDDED=y | 38 | CONFIG_EMBEDDED=y |
39 | CONFIG_SYSCTL_SYSCALL=y | ||
34 | # CONFIG_KALLSYMS is not set | 40 | # CONFIG_KALLSYMS is not set |
41 | CONFIG_HOTPLUG=y | ||
35 | CONFIG_PRINTK=y | 42 | CONFIG_PRINTK=y |
36 | CONFIG_BUG=y | 43 | CONFIG_BUG=y |
44 | CONFIG_ELF_CORE=y | ||
37 | CONFIG_BASE_FULL=y | 45 | CONFIG_BASE_FULL=y |
38 | # CONFIG_FUTEX is not set | 46 | # CONFIG_FUTEX is not set |
39 | # CONFIG_EPOLL is not set | 47 | # CONFIG_EPOLL is not set |
40 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 48 | CONFIG_SLAB=y |
41 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 49 | CONFIG_VM_EVENT_COUNTERS=y |
42 | CONFIG_CC_ALIGN_LABELS=0 | ||
43 | CONFIG_CC_ALIGN_LOOPS=0 | ||
44 | CONFIG_CC_ALIGN_JUMPS=0 | ||
45 | CONFIG_TINY_SHMEM=y | 50 | CONFIG_TINY_SHMEM=y |
46 | CONFIG_BASE_SMALL=0 | 51 | CONFIG_BASE_SMALL=0 |
52 | # CONFIG_SLOB is not set | ||
47 | 53 | ||
48 | # | 54 | # |
49 | # Loadable module support | 55 | # Loadable module support |
@@ -51,12 +57,30 @@ CONFIG_BASE_SMALL=0 | |||
51 | CONFIG_MODULES=y | 57 | CONFIG_MODULES=y |
52 | CONFIG_MODULE_UNLOAD=y | 58 | CONFIG_MODULE_UNLOAD=y |
53 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 59 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
54 | CONFIG_OBSOLETE_MODPARM=y | ||
55 | # CONFIG_MODVERSIONS is not set | 60 | # CONFIG_MODVERSIONS is not set |
56 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 61 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
57 | CONFIG_KMOD=y | 62 | CONFIG_KMOD=y |
58 | 63 | ||
59 | # | 64 | # |
65 | # Block layer | ||
66 | # | ||
67 | CONFIG_BLOCK=y | ||
68 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
69 | |||
70 | # | ||
71 | # IO Schedulers | ||
72 | # | ||
73 | CONFIG_IOSCHED_NOOP=y | ||
74 | # CONFIG_IOSCHED_AS is not set | ||
75 | CONFIG_IOSCHED_DEADLINE=y | ||
76 | CONFIG_IOSCHED_CFQ=y | ||
77 | # CONFIG_DEFAULT_AS is not set | ||
78 | # CONFIG_DEFAULT_DEADLINE is not set | ||
79 | CONFIG_DEFAULT_CFQ=y | ||
80 | # CONFIG_DEFAULT_NOOP is not set | ||
81 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
82 | |||
83 | # | ||
60 | # Processor type and features | 84 | # Processor type and features |
61 | # | 85 | # |
62 | # CONFIG_PLAT_MAPPI is not set | 86 | # CONFIG_PLAT_MAPPI is not set |
@@ -66,8 +90,10 @@ CONFIG_KMOD=y | |||
66 | CONFIG_PLAT_OAKS32R=y | 90 | CONFIG_PLAT_OAKS32R=y |
67 | # CONFIG_PLAT_MAPPI2 is not set | 91 | # CONFIG_PLAT_MAPPI2 is not set |
68 | # CONFIG_PLAT_MAPPI3 is not set | 92 | # CONFIG_PLAT_MAPPI3 is not set |
93 | # CONFIG_PLAT_M32104UT is not set | ||
69 | # CONFIG_CHIP_M32700 is not set | 94 | # CONFIG_CHIP_M32700 is not set |
70 | CONFIG_CHIP_M32102=y | 95 | CONFIG_CHIP_M32102=y |
96 | # CONFIG_CHIP_M32104 is not set | ||
71 | # CONFIG_CHIP_VDEC2 is not set | 97 | # CONFIG_CHIP_VDEC2 is not set |
72 | # CONFIG_CHIP_OPSP is not set | 98 | # CONFIG_CHIP_OPSP is not set |
73 | CONFIG_ISA_M32R=y | 99 | CONFIG_ISA_M32R=y |
@@ -77,18 +103,31 @@ CONFIG_TIMER_DIVIDE=128 | |||
77 | CONFIG_MEMORY_START=0x01000000 | 103 | CONFIG_MEMORY_START=0x01000000 |
78 | CONFIG_MEMORY_SIZE=0x00800000 | 104 | CONFIG_MEMORY_SIZE=0x00800000 |
79 | CONFIG_NOHIGHMEM=y | 105 | CONFIG_NOHIGHMEM=y |
80 | # CONFIG_DISCONTIGMEM is not set | 106 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
107 | CONFIG_SELECT_MEMORY_MODEL=y | ||
108 | # CONFIG_FLATMEM_MANUAL is not set | ||
109 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
110 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
111 | CONFIG_DISCONTIGMEM=y | ||
112 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
113 | CONFIG_NEED_MULTIPLE_NODES=y | ||
114 | # CONFIG_SPARSEMEM_STATIC is not set | ||
115 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
116 | # CONFIG_RESOURCES_64BIT is not set | ||
117 | CONFIG_IRAM_START=0x00f00000 | ||
118 | CONFIG_IRAM_SIZE=0x00010000 | ||
81 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 119 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
82 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 120 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
121 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
122 | CONFIG_GENERIC_HWEIGHT=y | ||
83 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 123 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
84 | CONFIG_PREEMPT=y | 124 | CONFIG_PREEMPT=y |
85 | # CONFIG_HAVE_DEC_LOCK is not set | ||
86 | # CONFIG_SMP is not set | 125 | # CONFIG_SMP is not set |
126 | CONFIG_NODES_SHIFT=1 | ||
87 | 127 | ||
88 | # | 128 | # |
89 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 129 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
90 | # | 130 | # |
91 | # CONFIG_PCI is not set | ||
92 | # CONFIG_ISA is not set | 131 | # CONFIG_ISA is not set |
93 | 132 | ||
94 | # | 133 | # |
@@ -109,6 +148,94 @@ CONFIG_BINFMT_FLAT=y | |||
109 | # CONFIG_BINFMT_MISC is not set | 148 | # CONFIG_BINFMT_MISC is not set |
110 | 149 | ||
111 | # | 150 | # |
151 | # Networking | ||
152 | # | ||
153 | CONFIG_NET=y | ||
154 | |||
155 | # | ||
156 | # Networking options | ||
157 | # | ||
158 | # CONFIG_NETDEBUG is not set | ||
159 | CONFIG_PACKET=y | ||
160 | # CONFIG_PACKET_MMAP is not set | ||
161 | CONFIG_UNIX=y | ||
162 | CONFIG_XFRM=y | ||
163 | # CONFIG_XFRM_USER is not set | ||
164 | # CONFIG_XFRM_SUB_POLICY is not set | ||
165 | # CONFIG_NET_KEY is not set | ||
166 | CONFIG_INET=y | ||
167 | # CONFIG_IP_MULTICAST is not set | ||
168 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
169 | CONFIG_IP_FIB_HASH=y | ||
170 | CONFIG_IP_PNP=y | ||
171 | CONFIG_IP_PNP_DHCP=y | ||
172 | # CONFIG_IP_PNP_BOOTP is not set | ||
173 | # CONFIG_IP_PNP_RARP is not set | ||
174 | # CONFIG_NET_IPIP is not set | ||
175 | # CONFIG_NET_IPGRE is not set | ||
176 | # CONFIG_ARPD is not set | ||
177 | # CONFIG_SYN_COOKIES is not set | ||
178 | # CONFIG_INET_AH is not set | ||
179 | # CONFIG_INET_ESP is not set | ||
180 | # CONFIG_INET_IPCOMP is not set | ||
181 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
182 | # CONFIG_INET_TUNNEL is not set | ||
183 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
184 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
185 | CONFIG_INET_XFRM_MODE_BEET=y | ||
186 | CONFIG_INET_DIAG=y | ||
187 | CONFIG_INET_TCP_DIAG=y | ||
188 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
189 | CONFIG_TCP_CONG_CUBIC=y | ||
190 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
191 | # CONFIG_TCP_MD5SIG is not set | ||
192 | # CONFIG_IPV6 is not set | ||
193 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
194 | # CONFIG_INET6_TUNNEL is not set | ||
195 | # CONFIG_NETWORK_SECMARK is not set | ||
196 | # CONFIG_NETFILTER is not set | ||
197 | |||
198 | # | ||
199 | # DCCP Configuration (EXPERIMENTAL) | ||
200 | # | ||
201 | # CONFIG_IP_DCCP is not set | ||
202 | |||
203 | # | ||
204 | # SCTP Configuration (EXPERIMENTAL) | ||
205 | # | ||
206 | # CONFIG_IP_SCTP is not set | ||
207 | |||
208 | # | ||
209 | # TIPC Configuration (EXPERIMENTAL) | ||
210 | # | ||
211 | # CONFIG_TIPC is not set | ||
212 | # CONFIG_ATM is not set | ||
213 | # CONFIG_BRIDGE is not set | ||
214 | # CONFIG_VLAN_8021Q is not set | ||
215 | # CONFIG_DECNET is not set | ||
216 | # CONFIG_LLC2 is not set | ||
217 | # CONFIG_IPX is not set | ||
218 | # CONFIG_ATALK is not set | ||
219 | # CONFIG_X25 is not set | ||
220 | # CONFIG_LAPB is not set | ||
221 | # CONFIG_ECONET is not set | ||
222 | # CONFIG_WAN_ROUTER is not set | ||
223 | |||
224 | # | ||
225 | # QoS and/or fair queueing | ||
226 | # | ||
227 | # CONFIG_NET_SCHED is not set | ||
228 | |||
229 | # | ||
230 | # Network testing | ||
231 | # | ||
232 | # CONFIG_NET_PKTGEN is not set | ||
233 | # CONFIG_HAMRADIO is not set | ||
234 | # CONFIG_IRDA is not set | ||
235 | # CONFIG_BT is not set | ||
236 | # CONFIG_IEEE80211 is not set | ||
237 | |||
238 | # | ||
112 | # Device Drivers | 239 | # Device Drivers |
113 | # | 240 | # |
114 | 241 | ||
@@ -118,6 +245,12 @@ CONFIG_BINFMT_FLAT=y | |||
118 | CONFIG_STANDALONE=y | 245 | CONFIG_STANDALONE=y |
119 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 246 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
120 | # CONFIG_FW_LOADER is not set | 247 | # CONFIG_FW_LOADER is not set |
248 | # CONFIG_SYS_HYPERVISOR is not set | ||
249 | |||
250 | # | ||
251 | # Connector - unified userspace <-> kernelspace linker | ||
252 | # | ||
253 | # CONFIG_CONNECTOR is not set | ||
121 | 254 | ||
122 | # | 255 | # |
123 | # Memory Technology Devices (MTD) | 256 | # Memory Technology Devices (MTD) |
@@ -136,7 +269,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
136 | # | 269 | # |
137 | # Block devices | 270 | # Block devices |
138 | # | 271 | # |
139 | # CONFIG_BLK_DEV_FD is not set | ||
140 | # CONFIG_BLK_DEV_COW_COMMON is not set | 272 | # CONFIG_BLK_DEV_COW_COMMON is not set |
141 | CONFIG_BLK_DEV_LOOP=y | 273 | CONFIG_BLK_DEV_LOOP=y |
142 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 274 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -144,18 +276,15 @@ CONFIG_BLK_DEV_NBD=y | |||
144 | CONFIG_BLK_DEV_RAM=y | 276 | CONFIG_BLK_DEV_RAM=y |
145 | CONFIG_BLK_DEV_RAM_COUNT=16 | 277 | CONFIG_BLK_DEV_RAM_COUNT=16 |
146 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 278 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
279 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
147 | # CONFIG_BLK_DEV_INITRD is not set | 280 | # CONFIG_BLK_DEV_INITRD is not set |
148 | CONFIG_INITRAMFS_SOURCE="" | ||
149 | # CONFIG_CDROM_PKTCDVD is not set | 281 | # CONFIG_CDROM_PKTCDVD is not set |
282 | # CONFIG_ATA_OVER_ETH is not set | ||
150 | 283 | ||
151 | # | 284 | # |
152 | # IO Schedulers | 285 | # Misc devices |
153 | # | 286 | # |
154 | CONFIG_IOSCHED_NOOP=y | 287 | # CONFIG_TIFM_CORE is not set |
155 | # CONFIG_IOSCHED_AS is not set | ||
156 | CONFIG_IOSCHED_DEADLINE=y | ||
157 | CONFIG_IOSCHED_CFQ=y | ||
158 | # CONFIG_ATA_OVER_ETH is not set | ||
159 | 288 | ||
160 | # | 289 | # |
161 | # ATA/ATAPI/MFM/RLL support | 290 | # ATA/ATAPI/MFM/RLL support |
@@ -165,7 +294,13 @@ CONFIG_IOSCHED_CFQ=y | |||
165 | # | 294 | # |
166 | # SCSI device support | 295 | # SCSI device support |
167 | # | 296 | # |
297 | # CONFIG_RAID_ATTRS is not set | ||
168 | # CONFIG_SCSI is not set | 298 | # CONFIG_SCSI is not set |
299 | # CONFIG_SCSI_NETLINK is not set | ||
300 | |||
301 | # | ||
302 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
303 | # | ||
169 | 304 | ||
170 | # | 305 | # |
171 | # Multi-device support (RAID and LVM) | 306 | # Multi-device support (RAID and LVM) |
@@ -175,6 +310,7 @@ CONFIG_IOSCHED_CFQ=y | |||
175 | # | 310 | # |
176 | # Fusion MPT device support | 311 | # Fusion MPT device support |
177 | # | 312 | # |
313 | # CONFIG_FUSION is not set | ||
178 | 314 | ||
179 | # | 315 | # |
180 | # IEEE 1394 (FireWire) support | 316 | # IEEE 1394 (FireWire) support |
@@ -185,69 +321,8 @@ CONFIG_IOSCHED_CFQ=y | |||
185 | # | 321 | # |
186 | 322 | ||
187 | # | 323 | # |
188 | # Networking support | 324 | # Network device support |
189 | # | ||
190 | CONFIG_NET=y | ||
191 | |||
192 | # | ||
193 | # Networking options | ||
194 | # | ||
195 | CONFIG_PACKET=y | ||
196 | # CONFIG_PACKET_MMAP is not set | ||
197 | CONFIG_UNIX=y | ||
198 | # CONFIG_NET_KEY is not set | ||
199 | CONFIG_INET=y | ||
200 | # CONFIG_IP_MULTICAST is not set | ||
201 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
202 | CONFIG_IP_PNP=y | ||
203 | CONFIG_IP_PNP_DHCP=y | ||
204 | # CONFIG_IP_PNP_BOOTP is not set | ||
205 | # CONFIG_IP_PNP_RARP is not set | ||
206 | # CONFIG_NET_IPIP is not set | ||
207 | # CONFIG_NET_IPGRE is not set | ||
208 | # CONFIG_ARPD is not set | ||
209 | # CONFIG_SYN_COOKIES is not set | ||
210 | # CONFIG_INET_AH is not set | ||
211 | # CONFIG_INET_ESP is not set | ||
212 | # CONFIG_INET_IPCOMP is not set | ||
213 | # CONFIG_INET_TUNNEL is not set | ||
214 | CONFIG_IP_TCPDIAG=y | ||
215 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
216 | # CONFIG_IPV6 is not set | ||
217 | # CONFIG_NETFILTER is not set | ||
218 | |||
219 | # | ||
220 | # SCTP Configuration (EXPERIMENTAL) | ||
221 | # | ||
222 | # CONFIG_IP_SCTP is not set | ||
223 | # CONFIG_ATM is not set | ||
224 | # CONFIG_BRIDGE is not set | ||
225 | # CONFIG_VLAN_8021Q is not set | ||
226 | # CONFIG_DECNET is not set | ||
227 | # CONFIG_LLC2 is not set | ||
228 | # CONFIG_IPX is not set | ||
229 | # CONFIG_ATALK is not set | ||
230 | # CONFIG_X25 is not set | ||
231 | # CONFIG_LAPB is not set | ||
232 | # CONFIG_NET_DIVERT is not set | ||
233 | # CONFIG_ECONET is not set | ||
234 | # CONFIG_WAN_ROUTER is not set | ||
235 | |||
236 | # | ||
237 | # QoS and/or fair queueing | ||
238 | # | ||
239 | # CONFIG_NET_SCHED is not set | ||
240 | # CONFIG_NET_CLS_ROUTE is not set | ||
241 | |||
242 | # | ||
243 | # Network testing | ||
244 | # | 325 | # |
245 | # CONFIG_NET_PKTGEN is not set | ||
246 | # CONFIG_NETPOLL is not set | ||
247 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
248 | # CONFIG_HAMRADIO is not set | ||
249 | # CONFIG_IRDA is not set | ||
250 | # CONFIG_BT is not set | ||
251 | CONFIG_NETDEVICES=y | 326 | CONFIG_NETDEVICES=y |
252 | # CONFIG_DUMMY is not set | 327 | # CONFIG_DUMMY is not set |
253 | # CONFIG_BONDING is not set | 328 | # CONFIG_BONDING is not set |
@@ -255,6 +330,10 @@ CONFIG_NETDEVICES=y | |||
255 | # CONFIG_TUN is not set | 330 | # CONFIG_TUN is not set |
256 | 331 | ||
257 | # | 332 | # |
333 | # PHY device support | ||
334 | # | ||
335 | |||
336 | # | ||
258 | # Ethernet (10 or 100Mbit) | 337 | # Ethernet (10 or 100Mbit) |
259 | # | 338 | # |
260 | # CONFIG_NET_ETHERNET is not set | 339 | # CONFIG_NET_ETHERNET is not set |
@@ -285,6 +364,8 @@ CONFIG_NE2000=y | |||
285 | # CONFIG_SLIP is not set | 364 | # CONFIG_SLIP is not set |
286 | # CONFIG_SHAPER is not set | 365 | # CONFIG_SHAPER is not set |
287 | # CONFIG_NETCONSOLE is not set | 366 | # CONFIG_NETCONSOLE is not set |
367 | # CONFIG_NETPOLL is not set | ||
368 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
288 | 369 | ||
289 | # | 370 | # |
290 | # ISDN subsystem | 371 | # ISDN subsystem |
@@ -300,6 +381,7 @@ CONFIG_NE2000=y | |||
300 | # Input device support | 381 | # Input device support |
301 | # | 382 | # |
302 | CONFIG_INPUT=y | 383 | CONFIG_INPUT=y |
384 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
303 | 385 | ||
304 | # | 386 | # |
305 | # Userland interfaces | 387 | # Userland interfaces |
@@ -328,7 +410,6 @@ CONFIG_SERIO_SERPORT=y | |||
328 | # CONFIG_SERIO_LIBPS2 is not set | 410 | # CONFIG_SERIO_LIBPS2 is not set |
329 | # CONFIG_SERIO_RAW is not set | 411 | # CONFIG_SERIO_RAW is not set |
330 | # CONFIG_GAMEPORT is not set | 412 | # CONFIG_GAMEPORT is not set |
331 | CONFIG_SOUND_GAMEPORT=y | ||
332 | 413 | ||
333 | # | 414 | # |
334 | # Character devices | 415 | # Character devices |
@@ -348,7 +429,6 @@ CONFIG_SERIAL_CORE=y | |||
348 | CONFIG_SERIAL_CORE_CONSOLE=y | 429 | CONFIG_SERIAL_CORE_CONSOLE=y |
349 | CONFIG_SERIAL_M32R_SIO=y | 430 | CONFIG_SERIAL_M32R_SIO=y |
350 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y | 431 | CONFIG_SERIAL_M32R_SIO_CONSOLE=y |
351 | # CONFIG_SERIAL_M32R_PLDSIO is not set | ||
352 | CONFIG_UNIX98_PTYS=y | 432 | CONFIG_UNIX98_PTYS=y |
353 | CONFIG_LEGACY_PTYS=y | 433 | CONFIG_LEGACY_PTYS=y |
354 | CONFIG_LEGACY_PTY_COUNT=256 | 434 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -362,20 +442,20 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
362 | # Watchdog Cards | 442 | # Watchdog Cards |
363 | # | 443 | # |
364 | # CONFIG_WATCHDOG is not set | 444 | # CONFIG_WATCHDOG is not set |
445 | CONFIG_HW_RANDOM=y | ||
365 | # CONFIG_RTC is not set | 446 | # CONFIG_RTC is not set |
366 | # CONFIG_GEN_RTC is not set | ||
367 | # CONFIG_DTLK is not set | 447 | # CONFIG_DTLK is not set |
368 | # CONFIG_R3964 is not set | 448 | # CONFIG_R3964 is not set |
369 | 449 | ||
370 | # | 450 | # |
371 | # Ftape, the floppy tape device driver | 451 | # Ftape, the floppy tape device driver |
372 | # | 452 | # |
373 | # CONFIG_DRM is not set | ||
374 | # CONFIG_RAW_DRIVER is not set | 453 | # CONFIG_RAW_DRIVER is not set |
375 | 454 | ||
376 | # | 455 | # |
377 | # TPM devices | 456 | # TPM devices |
378 | # | 457 | # |
458 | # CONFIG_TCG_TPM is not set | ||
379 | 459 | ||
380 | # | 460 | # |
381 | # I2C support | 461 | # I2C support |
@@ -383,13 +463,25 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
383 | # CONFIG_I2C is not set | 463 | # CONFIG_I2C is not set |
384 | 464 | ||
385 | # | 465 | # |
466 | # SPI support | ||
467 | # | ||
468 | # CONFIG_SPI is not set | ||
469 | # CONFIG_SPI_MASTER is not set | ||
470 | |||
471 | # | ||
386 | # Dallas's 1-wire bus | 472 | # Dallas's 1-wire bus |
387 | # | 473 | # |
388 | # CONFIG_W1 is not set | 474 | # CONFIG_W1 is not set |
389 | 475 | ||
390 | # | 476 | # |
391 | # Misc devices | 477 | # Hardware Monitoring support |
392 | # | 478 | # |
479 | CONFIG_HWMON=y | ||
480 | # CONFIG_HWMON_VID is not set | ||
481 | # CONFIG_SENSORS_ABITUGURU is not set | ||
482 | # CONFIG_SENSORS_F71805F is not set | ||
483 | # CONFIG_SENSORS_VT1211 is not set | ||
484 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
393 | 485 | ||
394 | # | 486 | # |
395 | # Multimedia devices | 487 | # Multimedia devices |
@@ -404,7 +496,9 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
404 | # | 496 | # |
405 | # Graphics support | 497 | # Graphics support |
406 | # | 498 | # |
499 | CONFIG_FIRMWARE_EDID=y | ||
407 | # CONFIG_FB is not set | 500 | # CONFIG_FB is not set |
501 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
408 | 502 | ||
409 | # | 503 | # |
410 | # Sound | 504 | # Sound |
@@ -416,6 +510,11 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
416 | # | 510 | # |
417 | # CONFIG_USB_ARCH_HAS_HCD is not set | 511 | # CONFIG_USB_ARCH_HAS_HCD is not set |
418 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 512 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
513 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
514 | |||
515 | # | ||
516 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
517 | # | ||
419 | 518 | ||
420 | # | 519 | # |
421 | # USB Gadget Support | 520 | # USB Gadget Support |
@@ -428,9 +527,43 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
428 | # CONFIG_MMC is not set | 527 | # CONFIG_MMC is not set |
429 | 528 | ||
430 | # | 529 | # |
530 | # LED devices | ||
531 | # | ||
532 | # CONFIG_NEW_LEDS is not set | ||
533 | |||
534 | # | ||
535 | # LED drivers | ||
536 | # | ||
537 | |||
538 | # | ||
539 | # LED Triggers | ||
540 | # | ||
541 | |||
542 | # | ||
431 | # InfiniBand support | 543 | # InfiniBand support |
432 | # | 544 | # |
433 | # CONFIG_INFINIBAND is not set | 545 | |
546 | # | ||
547 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
548 | # | ||
549 | |||
550 | # | ||
551 | # Real Time Clock | ||
552 | # | ||
553 | # CONFIG_RTC_CLASS is not set | ||
554 | |||
555 | # | ||
556 | # DMA Engine support | ||
557 | # | ||
558 | # CONFIG_DMA_ENGINE is not set | ||
559 | |||
560 | # | ||
561 | # DMA Clients | ||
562 | # | ||
563 | |||
564 | # | ||
565 | # DMA Devices | ||
566 | # | ||
434 | 567 | ||
435 | # | 568 | # |
436 | # File systems | 569 | # File systems |
@@ -438,20 +571,22 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
438 | CONFIG_EXT2_FS=y | 571 | CONFIG_EXT2_FS=y |
439 | # CONFIG_EXT2_FS_XATTR is not set | 572 | # CONFIG_EXT2_FS_XATTR is not set |
440 | # CONFIG_EXT3_FS is not set | 573 | # CONFIG_EXT3_FS is not set |
441 | # CONFIG_JBD is not set | 574 | # CONFIG_EXT4DEV_FS is not set |
442 | # CONFIG_REISERFS_FS is not set | 575 | # CONFIG_REISERFS_FS is not set |
443 | # CONFIG_JFS_FS is not set | 576 | # CONFIG_JFS_FS is not set |
444 | 577 | # CONFIG_FS_POSIX_ACL is not set | |
445 | # | ||
446 | # XFS support | ||
447 | # | ||
448 | # CONFIG_XFS_FS is not set | 578 | # CONFIG_XFS_FS is not set |
579 | # CONFIG_GFS2_FS is not set | ||
580 | # CONFIG_OCFS2_FS is not set | ||
449 | # CONFIG_MINIX_FS is not set | 581 | # CONFIG_MINIX_FS is not set |
450 | # CONFIG_ROMFS_FS is not set | 582 | # CONFIG_ROMFS_FS is not set |
583 | CONFIG_INOTIFY=y | ||
584 | CONFIG_INOTIFY_USER=y | ||
451 | # CONFIG_QUOTA is not set | 585 | # CONFIG_QUOTA is not set |
452 | CONFIG_DNOTIFY=y | 586 | CONFIG_DNOTIFY=y |
453 | # CONFIG_AUTOFS_FS is not set | 587 | # CONFIG_AUTOFS_FS is not set |
454 | # CONFIG_AUTOFS4_FS is not set | 588 | # CONFIG_AUTOFS4_FS is not set |
589 | # CONFIG_FUSE_FS is not set | ||
455 | 590 | ||
456 | # | 591 | # |
457 | # CD-ROM/DVD Filesystems | 592 | # CD-ROM/DVD Filesystems |
@@ -470,13 +605,12 @@ CONFIG_DNOTIFY=y | |||
470 | # Pseudo filesystems | 605 | # Pseudo filesystems |
471 | # | 606 | # |
472 | CONFIG_PROC_FS=y | 607 | CONFIG_PROC_FS=y |
608 | CONFIG_PROC_SYSCTL=y | ||
473 | CONFIG_SYSFS=y | 609 | CONFIG_SYSFS=y |
474 | # CONFIG_DEVFS_FS is not set | ||
475 | CONFIG_DEVPTS_FS_XATTR=y | ||
476 | CONFIG_DEVPTS_FS_SECURITY=y | ||
477 | # CONFIG_TMPFS is not set | 610 | # CONFIG_TMPFS is not set |
478 | # CONFIG_HUGETLB_PAGE is not set | 611 | # CONFIG_HUGETLB_PAGE is not set |
479 | CONFIG_RAMFS=y | 612 | CONFIG_RAMFS=y |
613 | # CONFIG_CONFIGFS_FS is not set | ||
480 | 614 | ||
481 | # | 615 | # |
482 | # Miscellaneous filesystems | 616 | # Miscellaneous filesystems |
@@ -500,12 +634,14 @@ CONFIG_RAMFS=y | |||
500 | # | 634 | # |
501 | CONFIG_NFS_FS=y | 635 | CONFIG_NFS_FS=y |
502 | CONFIG_NFS_V3=y | 636 | CONFIG_NFS_V3=y |
637 | # CONFIG_NFS_V3_ACL is not set | ||
503 | # CONFIG_NFS_V4 is not set | 638 | # CONFIG_NFS_V4 is not set |
504 | # CONFIG_NFS_DIRECTIO is not set | 639 | # CONFIG_NFS_DIRECTIO is not set |
505 | # CONFIG_NFSD is not set | 640 | # CONFIG_NFSD is not set |
506 | CONFIG_ROOT_NFS=y | 641 | CONFIG_ROOT_NFS=y |
507 | CONFIG_LOCKD=y | 642 | CONFIG_LOCKD=y |
508 | CONFIG_LOCKD_V4=y | 643 | CONFIG_LOCKD_V4=y |
644 | CONFIG_NFS_COMMON=y | ||
509 | CONFIG_SUNRPC=y | 645 | CONFIG_SUNRPC=y |
510 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 646 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
511 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 647 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -514,6 +650,7 @@ CONFIG_SUNRPC=y | |||
514 | # CONFIG_NCP_FS is not set | 650 | # CONFIG_NCP_FS is not set |
515 | # CONFIG_CODA_FS is not set | 651 | # CONFIG_CODA_FS is not set |
516 | # CONFIG_AFS_FS is not set | 652 | # CONFIG_AFS_FS is not set |
653 | # CONFIG_9P_FS is not set | ||
517 | 654 | ||
518 | # | 655 | # |
519 | # Partition Types | 656 | # Partition Types |
@@ -574,10 +711,16 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
574 | # Kernel hacking | 711 | # Kernel hacking |
575 | # | 712 | # |
576 | # CONFIG_PRINTK_TIME is not set | 713 | # CONFIG_PRINTK_TIME is not set |
714 | CONFIG_ENABLE_MUST_CHECK=y | ||
715 | # CONFIG_MAGIC_SYSRQ is not set | ||
716 | # CONFIG_UNUSED_SYMBOLS is not set | ||
577 | # CONFIG_DEBUG_KERNEL is not set | 717 | # CONFIG_DEBUG_KERNEL is not set |
578 | CONFIG_LOG_BUF_SHIFT=14 | 718 | CONFIG_LOG_BUF_SHIFT=14 |
579 | # CONFIG_DEBUG_BUGVERBOSE is not set | 719 | # CONFIG_DEBUG_BUGVERBOSE is not set |
720 | # CONFIG_DEBUG_FS is not set | ||
580 | # CONFIG_FRAME_POINTER is not set | 721 | # CONFIG_FRAME_POINTER is not set |
722 | # CONFIG_UNWIND_INFO is not set | ||
723 | # CONFIG_HEADERS_CHECK is not set | ||
581 | 724 | ||
582 | # | 725 | # |
583 | # Security options | 726 | # Security options |
@@ -591,12 +734,9 @@ CONFIG_LOG_BUF_SHIFT=14 | |||
591 | # CONFIG_CRYPTO is not set | 734 | # CONFIG_CRYPTO is not set |
592 | 735 | ||
593 | # | 736 | # |
594 | # Hardware crypto devices | ||
595 | # | ||
596 | |||
597 | # | ||
598 | # Library routines | 737 | # Library routines |
599 | # | 738 | # |
600 | # CONFIG_CRC_CCITT is not set | 739 | # CONFIG_CRC_CCITT is not set |
740 | # CONFIG_CRC16 is not set | ||
601 | CONFIG_CRC32=y | 741 | CONFIG_CRC32=y |
602 | # CONFIG_LIBCRC32C is not set | 742 | # CONFIG_LIBCRC32C is not set |
diff --git a/arch/m32r/opsput/defconfig.opsput b/arch/m32r/opsput/defconfig.opsput index 66adec6a701a..461f95e72d17 100644 --- a/arch/m32r/opsput/defconfig.opsput +++ b/arch/m32r/opsput/defconfig.opsput | |||
@@ -1,19 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc5 | 3 | # Linux kernel version: 2.6.19 |
4 | # Fri Jun 3 16:22:06 2005 | 4 | # Wed Dec 13 18:34:36 2006 |
5 | # | 5 | # |
6 | CONFIG_M32R=y | 6 | CONFIG_M32R=y |
7 | # CONFIG_UID16 is not set | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 7 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 9 | CONFIG_GENERIC_IRQ_PROBE=y |
10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 11 | ||
12 | # | 12 | # |
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 16 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 17 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | 18 | ||
@@ -21,32 +20,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
21 | # General setup | 20 | # General setup |
22 | # | 21 | # |
23 | CONFIG_LOCALVERSION="" | 22 | CONFIG_LOCALVERSION="" |
23 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 24 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 25 | CONFIG_SYSVIPC=y |
26 | # CONFIG_IPC_NS is not set | ||
26 | # CONFIG_POSIX_MQUEUE is not set | 27 | # CONFIG_POSIX_MQUEUE is not set |
27 | CONFIG_BSD_PROCESS_ACCT=y | 28 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 29 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 30 | # CONFIG_TASKSTATS is not set |
31 | # CONFIG_UTS_NS is not set | ||
30 | # CONFIG_AUDIT is not set | 32 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | CONFIG_IKCONFIG=y | 33 | CONFIG_IKCONFIG=y |
34 | # CONFIG_IKCONFIG_PROC is not set | 34 | # CONFIG_IKCONFIG_PROC is not set |
35 | CONFIG_SYSFS_DEPRECATED=y | ||
36 | # CONFIG_RELAY is not set | ||
37 | CONFIG_INITRAMFS_SOURCE="" | ||
38 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
39 | CONFIG_SYSCTL=y | ||
35 | CONFIG_EMBEDDED=y | 40 | CONFIG_EMBEDDED=y |
41 | CONFIG_SYSCTL_SYSCALL=y | ||
36 | # CONFIG_KALLSYMS is not set | 42 | # CONFIG_KALLSYMS is not set |
43 | CONFIG_HOTPLUG=y | ||
37 | CONFIG_PRINTK=y | 44 | CONFIG_PRINTK=y |
38 | CONFIG_BUG=y | 45 | CONFIG_BUG=y |
46 | CONFIG_ELF_CORE=y | ||
39 | CONFIG_BASE_FULL=y | 47 | CONFIG_BASE_FULL=y |
40 | # CONFIG_FUTEX is not set | 48 | # CONFIG_FUTEX is not set |
41 | # CONFIG_EPOLL is not set | 49 | # CONFIG_EPOLL is not set |
42 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
43 | CONFIG_SHMEM=y | 50 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 51 | CONFIG_SLAB=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 52 | CONFIG_VM_EVENT_COUNTERS=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | ||
47 | CONFIG_CC_ALIGN_JUMPS=0 | ||
48 | # CONFIG_TINY_SHMEM is not set | 53 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 54 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
50 | 56 | ||
51 | # | 57 | # |
52 | # Loadable module support | 58 | # Loadable module support |
@@ -54,12 +60,30 @@ CONFIG_BASE_SMALL=0 | |||
54 | CONFIG_MODULES=y | 60 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 61 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 62 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 63 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 64 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 65 | CONFIG_KMOD=y |
61 | 66 | ||
62 | # | 67 | # |
68 | # Block layer | ||
69 | # | ||
70 | CONFIG_BLOCK=y | ||
71 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
72 | |||
73 | # | ||
74 | # IO Schedulers | ||
75 | # | ||
76 | CONFIG_IOSCHED_NOOP=y | ||
77 | # CONFIG_IOSCHED_AS is not set | ||
78 | CONFIG_IOSCHED_DEADLINE=y | ||
79 | CONFIG_IOSCHED_CFQ=y | ||
80 | # CONFIG_DEFAULT_AS is not set | ||
81 | # CONFIG_DEFAULT_DEADLINE is not set | ||
82 | CONFIG_DEFAULT_CFQ=y | ||
83 | # CONFIG_DEFAULT_NOOP is not set | ||
84 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
85 | |||
86 | # | ||
63 | # Processor type and features | 87 | # Processor type and features |
64 | # | 88 | # |
65 | # CONFIG_PLAT_MAPPI is not set | 89 | # CONFIG_PLAT_MAPPI is not set |
@@ -69,8 +93,10 @@ CONFIG_PLAT_OPSPUT=y | |||
69 | # CONFIG_PLAT_OAKS32R is not set | 93 | # CONFIG_PLAT_OAKS32R is not set |
70 | # CONFIG_PLAT_MAPPI2 is not set | 94 | # CONFIG_PLAT_MAPPI2 is not set |
71 | # CONFIG_PLAT_MAPPI3 is not set | 95 | # CONFIG_PLAT_MAPPI3 is not set |
96 | # CONFIG_PLAT_M32104UT is not set | ||
72 | # CONFIG_CHIP_M32700 is not set | 97 | # CONFIG_CHIP_M32700 is not set |
73 | # CONFIG_CHIP_M32102 is not set | 98 | # CONFIG_CHIP_M32102 is not set |
99 | # CONFIG_CHIP_M32104 is not set | ||
74 | # CONFIG_CHIP_VDEC2 is not set | 100 | # CONFIG_CHIP_VDEC2 is not set |
75 | CONFIG_CHIP_OPSP=y | 101 | CONFIG_CHIP_OPSP=y |
76 | CONFIG_MMU=y | 102 | CONFIG_MMU=y |
@@ -84,17 +110,31 @@ CONFIG_TIMER_DIVIDE=128 | |||
84 | CONFIG_MEMORY_START=0x08000000 | 110 | CONFIG_MEMORY_START=0x08000000 |
85 | CONFIG_MEMORY_SIZE=0x01000000 | 111 | CONFIG_MEMORY_SIZE=0x01000000 |
86 | CONFIG_NOHIGHMEM=y | 112 | CONFIG_NOHIGHMEM=y |
87 | # CONFIG_DISCONTIGMEM is not set | 113 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
114 | CONFIG_SELECT_MEMORY_MODEL=y | ||
115 | # CONFIG_FLATMEM_MANUAL is not set | ||
116 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
117 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
118 | CONFIG_DISCONTIGMEM=y | ||
119 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
120 | CONFIG_NEED_MULTIPLE_NODES=y | ||
121 | # CONFIG_SPARSEMEM_STATIC is not set | ||
122 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
123 | # CONFIG_RESOURCES_64BIT is not set | ||
124 | CONFIG_IRAM_START=0x00f00000 | ||
125 | CONFIG_IRAM_SIZE=0x00010000 | ||
88 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 126 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
89 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 127 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
128 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
129 | CONFIG_GENERIC_HWEIGHT=y | ||
90 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 130 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
91 | # CONFIG_PREEMPT is not set | 131 | # CONFIG_PREEMPT is not set |
92 | # CONFIG_SMP is not set | 132 | # CONFIG_SMP is not set |
133 | CONFIG_NODES_SHIFT=1 | ||
93 | 134 | ||
94 | # | 135 | # |
95 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 136 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
96 | # | 137 | # |
97 | # CONFIG_PCI is not set | ||
98 | # CONFIG_ISA is not set | 138 | # CONFIG_ISA is not set |
99 | 139 | ||
100 | # | 140 | # |
@@ -103,13 +143,15 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
103 | CONFIG_PCCARD=y | 143 | CONFIG_PCCARD=y |
104 | # CONFIG_PCMCIA_DEBUG is not set | 144 | # CONFIG_PCMCIA_DEBUG is not set |
105 | CONFIG_PCMCIA=y | 145 | CONFIG_PCMCIA=y |
146 | CONFIG_PCMCIA_LOAD_CIS=y | ||
147 | CONFIG_PCMCIA_IOCTL=y | ||
106 | 148 | ||
107 | # | 149 | # |
108 | # PC-card bridges | 150 | # PC-card bridges |
109 | # | 151 | # |
110 | # CONFIG_TCIC is not set | ||
111 | CONFIG_M32R_CFC=y | 152 | CONFIG_M32R_CFC=y |
112 | CONFIG_M32R_CFC_NUM=1 | 153 | CONFIG_M32R_CFC_NUM=1 |
154 | CONFIG_PCCARD_NONSTATIC=y | ||
113 | 155 | ||
114 | # | 156 | # |
115 | # PCI Hotplug Support | 157 | # PCI Hotplug Support |
@@ -122,6 +164,94 @@ CONFIG_BINFMT_ELF=y | |||
122 | # CONFIG_BINFMT_MISC is not set | 164 | # CONFIG_BINFMT_MISC is not set |
123 | 165 | ||
124 | # | 166 | # |
167 | # Networking | ||
168 | # | ||
169 | CONFIG_NET=y | ||
170 | |||
171 | # | ||
172 | # Networking options | ||
173 | # | ||
174 | # CONFIG_NETDEBUG is not set | ||
175 | CONFIG_PACKET=y | ||
176 | # CONFIG_PACKET_MMAP is not set | ||
177 | CONFIG_UNIX=y | ||
178 | CONFIG_XFRM=y | ||
179 | # CONFIG_XFRM_USER is not set | ||
180 | # CONFIG_XFRM_SUB_POLICY is not set | ||
181 | # CONFIG_NET_KEY is not set | ||
182 | CONFIG_INET=y | ||
183 | # CONFIG_IP_MULTICAST is not set | ||
184 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
185 | CONFIG_IP_FIB_HASH=y | ||
186 | CONFIG_IP_PNP=y | ||
187 | CONFIG_IP_PNP_DHCP=y | ||
188 | # CONFIG_IP_PNP_BOOTP is not set | ||
189 | # CONFIG_IP_PNP_RARP is not set | ||
190 | # CONFIG_NET_IPIP is not set | ||
191 | # CONFIG_NET_IPGRE is not set | ||
192 | # CONFIG_ARPD is not set | ||
193 | # CONFIG_SYN_COOKIES is not set | ||
194 | # CONFIG_INET_AH is not set | ||
195 | # CONFIG_INET_ESP is not set | ||
196 | # CONFIG_INET_IPCOMP is not set | ||
197 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
198 | # CONFIG_INET_TUNNEL is not set | ||
199 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
200 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
201 | CONFIG_INET_XFRM_MODE_BEET=y | ||
202 | CONFIG_INET_DIAG=y | ||
203 | CONFIG_INET_TCP_DIAG=y | ||
204 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
205 | CONFIG_TCP_CONG_CUBIC=y | ||
206 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
207 | # CONFIG_TCP_MD5SIG is not set | ||
208 | # CONFIG_IPV6 is not set | ||
209 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
210 | # CONFIG_INET6_TUNNEL is not set | ||
211 | # CONFIG_NETWORK_SECMARK is not set | ||
212 | # CONFIG_NETFILTER is not set | ||
213 | |||
214 | # | ||
215 | # DCCP Configuration (EXPERIMENTAL) | ||
216 | # | ||
217 | # CONFIG_IP_DCCP is not set | ||
218 | |||
219 | # | ||
220 | # SCTP Configuration (EXPERIMENTAL) | ||
221 | # | ||
222 | # CONFIG_IP_SCTP is not set | ||
223 | |||
224 | # | ||
225 | # TIPC Configuration (EXPERIMENTAL) | ||
226 | # | ||
227 | # CONFIG_TIPC is not set | ||
228 | # CONFIG_ATM is not set | ||
229 | # CONFIG_BRIDGE is not set | ||
230 | # CONFIG_VLAN_8021Q is not set | ||
231 | # CONFIG_DECNET is not set | ||
232 | # CONFIG_LLC2 is not set | ||
233 | # CONFIG_IPX is not set | ||
234 | # CONFIG_ATALK is not set | ||
235 | # CONFIG_X25 is not set | ||
236 | # CONFIG_LAPB is not set | ||
237 | # CONFIG_ECONET is not set | ||
238 | # CONFIG_WAN_ROUTER is not set | ||
239 | |||
240 | # | ||
241 | # QoS and/or fair queueing | ||
242 | # | ||
243 | # CONFIG_NET_SCHED is not set | ||
244 | |||
245 | # | ||
246 | # Network testing | ||
247 | # | ||
248 | # CONFIG_NET_PKTGEN is not set | ||
249 | # CONFIG_HAMRADIO is not set | ||
250 | # CONFIG_IRDA is not set | ||
251 | # CONFIG_BT is not set | ||
252 | # CONFIG_IEEE80211 is not set | ||
253 | |||
254 | # | ||
125 | # Device Drivers | 255 | # Device Drivers |
126 | # | 256 | # |
127 | 257 | ||
@@ -130,8 +260,14 @@ CONFIG_BINFMT_ELF=y | |||
130 | # | 260 | # |
131 | CONFIG_STANDALONE=y | 261 | CONFIG_STANDALONE=y |
132 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 262 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
133 | # CONFIG_FW_LOADER is not set | 263 | CONFIG_FW_LOADER=y |
134 | # CONFIG_DEBUG_DRIVER is not set | 264 | # CONFIG_DEBUG_DRIVER is not set |
265 | # CONFIG_SYS_HYPERVISOR is not set | ||
266 | |||
267 | # | ||
268 | # Connector - unified userspace <-> kernelspace linker | ||
269 | # | ||
270 | # CONFIG_CONNECTOR is not set | ||
135 | 271 | ||
136 | # | 272 | # |
137 | # Memory Technology Devices (MTD) | 273 | # Memory Technology Devices (MTD) |
@@ -150,7 +286,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
150 | # | 286 | # |
151 | # Block devices | 287 | # Block devices |
152 | # | 288 | # |
153 | # CONFIG_BLK_DEV_FD is not set | ||
154 | # CONFIG_BLK_DEV_COW_COMMON is not set | 289 | # CONFIG_BLK_DEV_COW_COMMON is not set |
155 | CONFIG_BLK_DEV_LOOP=y | 290 | CONFIG_BLK_DEV_LOOP=y |
156 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 291 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -158,18 +293,15 @@ CONFIG_BLK_DEV_LOOP=y | |||
158 | CONFIG_BLK_DEV_RAM=y | 293 | CONFIG_BLK_DEV_RAM=y |
159 | CONFIG_BLK_DEV_RAM_COUNT=16 | 294 | CONFIG_BLK_DEV_RAM_COUNT=16 |
160 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 295 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
296 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
161 | # CONFIG_BLK_DEV_INITRD is not set | 297 | # CONFIG_BLK_DEV_INITRD is not set |
162 | CONFIG_INITRAMFS_SOURCE="" | ||
163 | # CONFIG_CDROM_PKTCDVD is not set | 298 | # CONFIG_CDROM_PKTCDVD is not set |
299 | # CONFIG_ATA_OVER_ETH is not set | ||
164 | 300 | ||
165 | # | 301 | # |
166 | # IO Schedulers | 302 | # Misc devices |
167 | # | 303 | # |
168 | CONFIG_IOSCHED_NOOP=y | 304 | # CONFIG_TIFM_CORE is not set |
169 | # CONFIG_IOSCHED_AS is not set | ||
170 | CONFIG_IOSCHED_DEADLINE=y | ||
171 | CONFIG_IOSCHED_CFQ=y | ||
172 | # CONFIG_ATA_OVER_ETH is not set | ||
173 | 305 | ||
174 | # | 306 | # |
175 | # ATA/ATAPI/MFM/RLL support | 307 | # ATA/ATAPI/MFM/RLL support |
@@ -179,7 +311,9 @@ CONFIG_IOSCHED_CFQ=y | |||
179 | # | 311 | # |
180 | # SCSI device support | 312 | # SCSI device support |
181 | # | 313 | # |
314 | # CONFIG_RAID_ATTRS is not set | ||
182 | CONFIG_SCSI=m | 315 | CONFIG_SCSI=m |
316 | # CONFIG_SCSI_NETLINK is not set | ||
183 | CONFIG_SCSI_PROC_FS=y | 317 | CONFIG_SCSI_PROC_FS=y |
184 | 318 | ||
185 | # | 319 | # |
@@ -191,6 +325,7 @@ CONFIG_BLK_DEV_SD=m | |||
191 | CONFIG_BLK_DEV_SR=m | 325 | CONFIG_BLK_DEV_SR=m |
192 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 326 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
193 | CONFIG_CHR_DEV_SG=m | 327 | CONFIG_CHR_DEV_SG=m |
328 | # CONFIG_CHR_DEV_SCH is not set | ||
194 | 329 | ||
195 | # | 330 | # |
196 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 331 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -200,16 +335,18 @@ CONFIG_SCSI_MULTI_LUN=y | |||
200 | # CONFIG_SCSI_LOGGING is not set | 335 | # CONFIG_SCSI_LOGGING is not set |
201 | 336 | ||
202 | # | 337 | # |
203 | # SCSI Transport Attributes | 338 | # SCSI Transports |
204 | # | 339 | # |
205 | # CONFIG_SCSI_SPI_ATTRS is not set | 340 | # CONFIG_SCSI_SPI_ATTRS is not set |
206 | # CONFIG_SCSI_FC_ATTRS is not set | 341 | # CONFIG_SCSI_FC_ATTRS is not set |
207 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 342 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
343 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
344 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
208 | 345 | ||
209 | # | 346 | # |
210 | # SCSI low-level drivers | 347 | # SCSI low-level drivers |
211 | # | 348 | # |
212 | # CONFIG_SCSI_SATA is not set | 349 | # CONFIG_ISCSI_TCP is not set |
213 | # CONFIG_SCSI_DEBUG is not set | 350 | # CONFIG_SCSI_DEBUG is not set |
214 | 351 | ||
215 | # | 352 | # |
@@ -222,6 +359,10 @@ CONFIG_SCSI_MULTI_LUN=y | |||
222 | # CONFIG_PCMCIA_SYM53C500 is not set | 359 | # CONFIG_PCMCIA_SYM53C500 is not set |
223 | 360 | ||
224 | # | 361 | # |
362 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
363 | # | ||
364 | |||
365 | # | ||
225 | # Multi-device support (RAID and LVM) | 366 | # Multi-device support (RAID and LVM) |
226 | # | 367 | # |
227 | # CONFIG_MD is not set | 368 | # CONFIG_MD is not set |
@@ -229,6 +370,7 @@ CONFIG_SCSI_MULTI_LUN=y | |||
229 | # | 370 | # |
230 | # Fusion MPT device support | 371 | # Fusion MPT device support |
231 | # | 372 | # |
373 | # CONFIG_FUSION is not set | ||
232 | 374 | ||
233 | # | 375 | # |
234 | # IEEE 1394 (FireWire) support | 376 | # IEEE 1394 (FireWire) support |
@@ -239,69 +381,8 @@ CONFIG_SCSI_MULTI_LUN=y | |||
239 | # | 381 | # |
240 | 382 | ||
241 | # | 383 | # |
242 | # Networking support | 384 | # Network device support |
243 | # | ||
244 | CONFIG_NET=y | ||
245 | |||
246 | # | ||
247 | # Networking options | ||
248 | # | ||
249 | CONFIG_PACKET=y | ||
250 | # CONFIG_PACKET_MMAP is not set | ||
251 | CONFIG_UNIX=y | ||
252 | # CONFIG_NET_KEY is not set | ||
253 | CONFIG_INET=y | ||
254 | # CONFIG_IP_MULTICAST is not set | ||
255 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
256 | CONFIG_IP_PNP=y | ||
257 | CONFIG_IP_PNP_DHCP=y | ||
258 | # CONFIG_IP_PNP_BOOTP is not set | ||
259 | # CONFIG_IP_PNP_RARP is not set | ||
260 | # CONFIG_NET_IPIP is not set | ||
261 | # CONFIG_NET_IPGRE is not set | ||
262 | # CONFIG_ARPD is not set | ||
263 | # CONFIG_SYN_COOKIES is not set | ||
264 | # CONFIG_INET_AH is not set | ||
265 | # CONFIG_INET_ESP is not set | ||
266 | # CONFIG_INET_IPCOMP is not set | ||
267 | # CONFIG_INET_TUNNEL is not set | ||
268 | CONFIG_IP_TCPDIAG=y | ||
269 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
270 | # CONFIG_IPV6 is not set | ||
271 | # CONFIG_NETFILTER is not set | ||
272 | |||
273 | # | ||
274 | # SCTP Configuration (EXPERIMENTAL) | ||
275 | # | 385 | # |
276 | # CONFIG_IP_SCTP is not set | ||
277 | # CONFIG_ATM is not set | ||
278 | # CONFIG_BRIDGE is not set | ||
279 | # CONFIG_VLAN_8021Q is not set | ||
280 | # CONFIG_DECNET is not set | ||
281 | # CONFIG_LLC2 is not set | ||
282 | # CONFIG_IPX is not set | ||
283 | # CONFIG_ATALK is not set | ||
284 | # CONFIG_X25 is not set | ||
285 | # CONFIG_LAPB is not set | ||
286 | # CONFIG_NET_DIVERT is not set | ||
287 | # CONFIG_ECONET is not set | ||
288 | # CONFIG_WAN_ROUTER is not set | ||
289 | |||
290 | # | ||
291 | # QoS and/or fair queueing | ||
292 | # | ||
293 | # CONFIG_NET_SCHED is not set | ||
294 | # CONFIG_NET_CLS_ROUTE is not set | ||
295 | |||
296 | # | ||
297 | # Network testing | ||
298 | # | ||
299 | # CONFIG_NET_PKTGEN is not set | ||
300 | # CONFIG_NETPOLL is not set | ||
301 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
302 | # CONFIG_HAMRADIO is not set | ||
303 | # CONFIG_IRDA is not set | ||
304 | # CONFIG_BT is not set | ||
305 | CONFIG_NETDEVICES=y | 386 | CONFIG_NETDEVICES=y |
306 | # CONFIG_DUMMY is not set | 387 | # CONFIG_DUMMY is not set |
307 | # CONFIG_BONDING is not set | 388 | # CONFIG_BONDING is not set |
@@ -309,6 +390,11 @@ CONFIG_NETDEVICES=y | |||
309 | # CONFIG_TUN is not set | 390 | # CONFIG_TUN is not set |
310 | 391 | ||
311 | # | 392 | # |
393 | # PHY device support | ||
394 | # | ||
395 | # CONFIG_PHYLIB is not set | ||
396 | |||
397 | # | ||
312 | # Ethernet (10 or 100Mbit) | 398 | # Ethernet (10 or 100Mbit) |
313 | # | 399 | # |
314 | CONFIG_NET_ETHERNET=y | 400 | CONFIG_NET_ETHERNET=y |
@@ -346,6 +432,8 @@ CONFIG_SMC91X=y | |||
346 | # CONFIG_SLIP is not set | 432 | # CONFIG_SLIP is not set |
347 | # CONFIG_SHAPER is not set | 433 | # CONFIG_SHAPER is not set |
348 | # CONFIG_NETCONSOLE is not set | 434 | # CONFIG_NETCONSOLE is not set |
435 | # CONFIG_NETPOLL is not set | ||
436 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
349 | 437 | ||
350 | # | 438 | # |
351 | # ISDN subsystem | 439 | # ISDN subsystem |
@@ -361,6 +449,7 @@ CONFIG_SMC91X=y | |||
361 | # Input device support | 449 | # Input device support |
362 | # | 450 | # |
363 | CONFIG_INPUT=y | 451 | CONFIG_INPUT=y |
452 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
364 | 453 | ||
365 | # | 454 | # |
366 | # Userland interfaces | 455 | # Userland interfaces |
@@ -389,7 +478,6 @@ CONFIG_SERIO_SERPORT=y | |||
389 | # CONFIG_SERIO_LIBPS2 is not set | 478 | # CONFIG_SERIO_LIBPS2 is not set |
390 | # CONFIG_SERIO_RAW is not set | 479 | # CONFIG_SERIO_RAW is not set |
391 | # CONFIG_GAMEPORT is not set | 480 | # CONFIG_GAMEPORT is not set |
392 | CONFIG_SOUND_GAMEPORT=y | ||
393 | 481 | ||
394 | # | 482 | # |
395 | # Character devices | 483 | # Character devices |
@@ -423,8 +511,8 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
423 | # Watchdog Cards | 511 | # Watchdog Cards |
424 | # | 512 | # |
425 | # CONFIG_WATCHDOG is not set | 513 | # CONFIG_WATCHDOG is not set |
514 | CONFIG_HW_RANDOM=y | ||
426 | # CONFIG_RTC is not set | 515 | # CONFIG_RTC is not set |
427 | # CONFIG_GEN_RTC is not set | ||
428 | CONFIG_DS1302=y | 516 | CONFIG_DS1302=y |
429 | # CONFIG_DTLK is not set | 517 | # CONFIG_DTLK is not set |
430 | # CONFIG_R3964 is not set | 518 | # CONFIG_R3964 is not set |
@@ -432,17 +520,19 @@ CONFIG_DS1302=y | |||
432 | # | 520 | # |
433 | # Ftape, the floppy tape device driver | 521 | # Ftape, the floppy tape device driver |
434 | # | 522 | # |
435 | # CONFIG_DRM is not set | ||
436 | 523 | ||
437 | # | 524 | # |
438 | # PCMCIA character devices | 525 | # PCMCIA character devices |
439 | # | 526 | # |
440 | # CONFIG_SYNCLINK_CS is not set | 527 | # CONFIG_SYNCLINK_CS is not set |
528 | # CONFIG_CARDMAN_4000 is not set | ||
529 | # CONFIG_CARDMAN_4040 is not set | ||
441 | # CONFIG_RAW_DRIVER is not set | 530 | # CONFIG_RAW_DRIVER is not set |
442 | 531 | ||
443 | # | 532 | # |
444 | # TPM devices | 533 | # TPM devices |
445 | # | 534 | # |
535 | # CONFIG_TCG_TPM is not set | ||
446 | 536 | ||
447 | # | 537 | # |
448 | # I2C support | 538 | # I2C support |
@@ -450,13 +540,25 @@ CONFIG_DS1302=y | |||
450 | # CONFIG_I2C is not set | 540 | # CONFIG_I2C is not set |
451 | 541 | ||
452 | # | 542 | # |
543 | # SPI support | ||
544 | # | ||
545 | # CONFIG_SPI is not set | ||
546 | # CONFIG_SPI_MASTER is not set | ||
547 | |||
548 | # | ||
453 | # Dallas's 1-wire bus | 549 | # Dallas's 1-wire bus |
454 | # | 550 | # |
455 | # CONFIG_W1 is not set | 551 | # CONFIG_W1 is not set |
456 | 552 | ||
457 | # | 553 | # |
458 | # Misc devices | 554 | # Hardware Monitoring support |
459 | # | 555 | # |
556 | CONFIG_HWMON=y | ||
557 | # CONFIG_HWMON_VID is not set | ||
558 | # CONFIG_SENSORS_ABITUGURU is not set | ||
559 | # CONFIG_SENSORS_F71805F is not set | ||
560 | # CONFIG_SENSORS_VT1211 is not set | ||
561 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
460 | 562 | ||
461 | # | 563 | # |
462 | # Multimedia devices | 564 | # Multimedia devices |
@@ -471,7 +573,9 @@ CONFIG_DS1302=y | |||
471 | # | 573 | # |
472 | # Graphics support | 574 | # Graphics support |
473 | # | 575 | # |
576 | CONFIG_FIRMWARE_EDID=y | ||
474 | # CONFIG_FB is not set | 577 | # CONFIG_FB is not set |
578 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
475 | 579 | ||
476 | # | 580 | # |
477 | # Sound | 581 | # Sound |
@@ -483,6 +587,11 @@ CONFIG_DS1302=y | |||
483 | # | 587 | # |
484 | # CONFIG_USB_ARCH_HAS_HCD is not set | 588 | # CONFIG_USB_ARCH_HAS_HCD is not set |
485 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 589 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
590 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
591 | |||
592 | # | ||
593 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
594 | # | ||
486 | 595 | ||
487 | # | 596 | # |
488 | # USB Gadget Support | 597 | # USB Gadget Support |
@@ -495,38 +604,73 @@ CONFIG_DS1302=y | |||
495 | # CONFIG_MMC is not set | 604 | # CONFIG_MMC is not set |
496 | 605 | ||
497 | # | 606 | # |
607 | # LED devices | ||
608 | # | ||
609 | # CONFIG_NEW_LEDS is not set | ||
610 | |||
611 | # | ||
612 | # LED drivers | ||
613 | # | ||
614 | |||
615 | # | ||
616 | # LED Triggers | ||
617 | # | ||
618 | |||
619 | # | ||
498 | # InfiniBand support | 620 | # InfiniBand support |
499 | # | 621 | # |
500 | # CONFIG_INFINIBAND is not set | 622 | |
623 | # | ||
624 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
625 | # | ||
626 | |||
627 | # | ||
628 | # Real Time Clock | ||
629 | # | ||
630 | # CONFIG_RTC_CLASS is not set | ||
631 | |||
632 | # | ||
633 | # DMA Engine support | ||
634 | # | ||
635 | # CONFIG_DMA_ENGINE is not set | ||
636 | |||
637 | # | ||
638 | # DMA Clients | ||
639 | # | ||
640 | |||
641 | # | ||
642 | # DMA Devices | ||
643 | # | ||
501 | 644 | ||
502 | # | 645 | # |
503 | # File systems | 646 | # File systems |
504 | # | 647 | # |
505 | CONFIG_EXT2_FS=y | 648 | CONFIG_EXT2_FS=y |
506 | # CONFIG_EXT2_FS_XATTR is not set | 649 | # CONFIG_EXT2_FS_XATTR is not set |
507 | CONFIG_EXT3_FS=m | 650 | # CONFIG_EXT2_FS_XIP is not set |
651 | CONFIG_EXT3_FS=y | ||
508 | CONFIG_EXT3_FS_XATTR=y | 652 | CONFIG_EXT3_FS_XATTR=y |
509 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 653 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
510 | # CONFIG_EXT3_FS_SECURITY is not set | 654 | # CONFIG_EXT3_FS_SECURITY is not set |
511 | CONFIG_JBD=m | 655 | # CONFIG_EXT4DEV_FS is not set |
656 | CONFIG_JBD=y | ||
512 | CONFIG_JBD_DEBUG=y | 657 | CONFIG_JBD_DEBUG=y |
513 | CONFIG_FS_MBCACHE=y | 658 | CONFIG_FS_MBCACHE=y |
514 | CONFIG_REISERFS_FS=m | 659 | # CONFIG_REISERFS_FS is not set |
515 | # CONFIG_REISERFS_CHECK is not set | ||
516 | # CONFIG_REISERFS_PROC_INFO is not set | ||
517 | # CONFIG_REISERFS_FS_XATTR is not set | ||
518 | # CONFIG_JFS_FS is not set | 660 | # CONFIG_JFS_FS is not set |
519 | 661 | # CONFIG_FS_POSIX_ACL is not set | |
520 | # | ||
521 | # XFS support | ||
522 | # | ||
523 | # CONFIG_XFS_FS is not set | 662 | # CONFIG_XFS_FS is not set |
663 | # CONFIG_GFS2_FS is not set | ||
664 | # CONFIG_OCFS2_FS is not set | ||
524 | # CONFIG_MINIX_FS is not set | 665 | # CONFIG_MINIX_FS is not set |
525 | # CONFIG_ROMFS_FS is not set | 666 | # CONFIG_ROMFS_FS is not set |
667 | CONFIG_INOTIFY=y | ||
668 | CONFIG_INOTIFY_USER=y | ||
526 | # CONFIG_QUOTA is not set | 669 | # CONFIG_QUOTA is not set |
527 | CONFIG_DNOTIFY=y | 670 | CONFIG_DNOTIFY=y |
528 | # CONFIG_AUTOFS_FS is not set | 671 | # CONFIG_AUTOFS_FS is not set |
529 | # CONFIG_AUTOFS4_FS is not set | 672 | # CONFIG_AUTOFS4_FS is not set |
673 | # CONFIG_FUSE_FS is not set | ||
530 | 674 | ||
531 | # | 675 | # |
532 | # CD-ROM/DVD Filesystems | 676 | # CD-ROM/DVD Filesystems |
@@ -552,15 +696,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
552 | # | 696 | # |
553 | CONFIG_PROC_FS=y | 697 | CONFIG_PROC_FS=y |
554 | CONFIG_PROC_KCORE=y | 698 | CONFIG_PROC_KCORE=y |
699 | CONFIG_PROC_SYSCTL=y | ||
555 | CONFIG_SYSFS=y | 700 | CONFIG_SYSFS=y |
556 | CONFIG_DEVFS_FS=y | ||
557 | CONFIG_DEVFS_MOUNT=y | ||
558 | # CONFIG_DEVFS_DEBUG is not set | ||
559 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
560 | CONFIG_TMPFS=y | 701 | CONFIG_TMPFS=y |
561 | # CONFIG_TMPFS_XATTR is not set | 702 | # CONFIG_TMPFS_POSIX_ACL is not set |
562 | # CONFIG_HUGETLB_PAGE is not set | 703 | # CONFIG_HUGETLB_PAGE is not set |
563 | CONFIG_RAMFS=y | 704 | CONFIG_RAMFS=y |
705 | # CONFIG_CONFIGFS_FS is not set | ||
564 | 706 | ||
565 | # | 707 | # |
566 | # Miscellaneous filesystems | 708 | # Miscellaneous filesystems |
@@ -584,12 +726,14 @@ CONFIG_RAMFS=y | |||
584 | # | 726 | # |
585 | CONFIG_NFS_FS=y | 727 | CONFIG_NFS_FS=y |
586 | CONFIG_NFS_V3=y | 728 | CONFIG_NFS_V3=y |
729 | # CONFIG_NFS_V3_ACL is not set | ||
587 | # CONFIG_NFS_V4 is not set | 730 | # CONFIG_NFS_V4 is not set |
588 | # CONFIG_NFS_DIRECTIO is not set | 731 | # CONFIG_NFS_DIRECTIO is not set |
589 | # CONFIG_NFSD is not set | 732 | # CONFIG_NFSD is not set |
590 | CONFIG_ROOT_NFS=y | 733 | CONFIG_ROOT_NFS=y |
591 | CONFIG_LOCKD=y | 734 | CONFIG_LOCKD=y |
592 | CONFIG_LOCKD_V4=y | 735 | CONFIG_LOCKD_V4=y |
736 | CONFIG_NFS_COMMON=y | ||
593 | CONFIG_SUNRPC=y | 737 | CONFIG_SUNRPC=y |
594 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 738 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
595 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 739 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -598,6 +742,7 @@ CONFIG_SUNRPC=y | |||
598 | # CONFIG_NCP_FS is not set | 742 | # CONFIG_NCP_FS is not set |
599 | # CONFIG_CODA_FS is not set | 743 | # CONFIG_CODA_FS is not set |
600 | # CONFIG_AFS_FS is not set | 744 | # CONFIG_AFS_FS is not set |
745 | # CONFIG_9P_FS is not set | ||
601 | 746 | ||
602 | # | 747 | # |
603 | # Partition Types | 748 | # Partition Types |
@@ -658,21 +803,32 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
658 | # Kernel hacking | 803 | # Kernel hacking |
659 | # | 804 | # |
660 | # CONFIG_PRINTK_TIME is not set | 805 | # CONFIG_PRINTK_TIME is not set |
661 | CONFIG_DEBUG_KERNEL=y | 806 | CONFIG_ENABLE_MUST_CHECK=y |
662 | # CONFIG_MAGIC_SYSRQ is not set | 807 | # CONFIG_MAGIC_SYSRQ is not set |
808 | # CONFIG_UNUSED_SYMBOLS is not set | ||
809 | CONFIG_DEBUG_KERNEL=y | ||
663 | CONFIG_LOG_BUF_SHIFT=14 | 810 | CONFIG_LOG_BUF_SHIFT=14 |
811 | CONFIG_DETECT_SOFTLOCKUP=y | ||
664 | # CONFIG_SCHEDSTATS is not set | 812 | # CONFIG_SCHEDSTATS is not set |
665 | # CONFIG_DEBUG_SLAB is not set | 813 | # CONFIG_DEBUG_SLAB is not set |
666 | # CONFIG_DEBUG_SPINLOCK is not set | 814 | # CONFIG_DEBUG_SPINLOCK is not set |
815 | # CONFIG_DEBUG_MUTEXES is not set | ||
816 | # CONFIG_DEBUG_RWSEMS is not set | ||
667 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 817 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
818 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
668 | # CONFIG_DEBUG_KOBJECT is not set | 819 | # CONFIG_DEBUG_KOBJECT is not set |
669 | # CONFIG_DEBUG_BUGVERBOSE is not set | 820 | # CONFIG_DEBUG_BUGVERBOSE is not set |
670 | CONFIG_DEBUG_INFO=y | 821 | CONFIG_DEBUG_INFO=y |
671 | # CONFIG_DEBUG_FS is not set | 822 | # CONFIG_DEBUG_FS is not set |
823 | # CONFIG_DEBUG_VM is not set | ||
824 | # CONFIG_DEBUG_LIST is not set | ||
672 | # CONFIG_FRAME_POINTER is not set | 825 | # CONFIG_FRAME_POINTER is not set |
826 | # CONFIG_UNWIND_INFO is not set | ||
827 | CONFIG_FORCED_INLINING=y | ||
828 | # CONFIG_HEADERS_CHECK is not set | ||
829 | # CONFIG_RCU_TORTURE_TEST is not set | ||
673 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 830 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
674 | # CONFIG_DEBUG_STACK_USAGE is not set | 831 | # CONFIG_DEBUG_STACK_USAGE is not set |
675 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
676 | 832 | ||
677 | # | 833 | # |
678 | # Security options | 834 | # Security options |
@@ -686,12 +842,9 @@ CONFIG_DEBUG_INFO=y | |||
686 | # CONFIG_CRYPTO is not set | 842 | # CONFIG_CRYPTO is not set |
687 | 843 | ||
688 | # | 844 | # |
689 | # Hardware crypto devices | ||
690 | # | ||
691 | |||
692 | # | ||
693 | # Library routines | 845 | # Library routines |
694 | # | 846 | # |
695 | # CONFIG_CRC_CCITT is not set | 847 | # CONFIG_CRC_CCITT is not set |
848 | # CONFIG_CRC16 is not set | ||
696 | CONFIG_CRC32=y | 849 | CONFIG_CRC32=y |
697 | # CONFIG_LIBCRC32C is not set | 850 | # CONFIG_LIBCRC32C is not set |
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 70a577c89c7c..a8e1e604dfa8 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig | |||
@@ -42,6 +42,9 @@ config ARCH_MAY_HAVE_PC_FDC | |||
42 | depends on Q40 || (BROKEN && SUN3X) | 42 | depends on Q40 || (BROKEN && SUN3X) |
43 | default y | 43 | default y |
44 | 44 | ||
45 | config NO_IOPORT | ||
46 | def_bool y | ||
47 | |||
45 | mainmenu "Linux/68k Kernel Configuration" | 48 | mainmenu "Linux/68k Kernel Configuration" |
46 | 49 | ||
47 | source "init/Kconfig" | 50 | source "init/Kconfig" |
@@ -439,6 +442,10 @@ config GENERIC_ISA_DMA | |||
439 | depends on Q40 || AMIGA_PCMCIA || GG2 | 442 | depends on Q40 || AMIGA_PCMCIA || GG2 |
440 | default y | 443 | default y |
441 | 444 | ||
445 | config ZONE_DMA | ||
446 | bool | ||
447 | default y | ||
448 | |||
442 | source "drivers/pci/Kconfig" | 449 | source "drivers/pci/Kconfig" |
443 | 450 | ||
444 | source "drivers/zorro/Kconfig" | 451 | source "drivers/zorro/Kconfig" |
diff --git a/arch/m68k/bvme6000/rtc.c b/arch/m68k/bvme6000/rtc.c index 15c16b62dff5..a812d03879f8 100644 --- a/arch/m68k/bvme6000/rtc.c +++ b/arch/m68k/bvme6000/rtc.c | |||
@@ -159,7 +159,7 @@ static int rtc_release(struct inode *inode, struct file *file) | |||
159 | * The various file operations we support. | 159 | * The various file operations we support. |
160 | */ | 160 | */ |
161 | 161 | ||
162 | static struct file_operations rtc_fops = { | 162 | static const struct file_operations rtc_fops = { |
163 | .ioctl = rtc_ioctl, | 163 | .ioctl = rtc_ioctl, |
164 | .open = rtc_open, | 164 | .open = rtc_open, |
165 | .release = rtc_release, | 165 | .release = rtc_release, |
diff --git a/arch/m68k/kernel/Makefile b/arch/m68k/kernel/Makefile index 1c9ecaa473d5..0b68ab8d63d1 100644 --- a/arch/m68k/kernel/Makefile +++ b/arch/m68k/kernel/Makefile | |||
@@ -10,7 +10,9 @@ endif | |||
10 | extra-y += vmlinux.lds | 10 | extra-y += vmlinux.lds |
11 | 11 | ||
12 | obj-y := entry.o process.o traps.o ints.o signal.o ptrace.o \ | 12 | obj-y := entry.o process.o traps.o ints.o signal.o ptrace.o \ |
13 | sys_m68k.o time.o semaphore.o setup.o m68k_ksyms.o | 13 | sys_m68k.o time.o semaphore.o setup.o m68k_ksyms.o devres.o |
14 | |||
15 | devres-y = ../../../kernel/irq/devres.o | ||
14 | 16 | ||
15 | obj-$(CONFIG_PCI) += bios32.o | 17 | obj-$(CONFIG_PCI) += bios32.o |
16 | obj-$(CONFIG_MODULES) += module.o | 18 | obj-$(CONFIG_MODULES) += module.o |
diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c index ef89060ea328..7fd2720c3841 100644 --- a/arch/m68k/kernel/ptrace.c +++ b/arch/m68k/kernel/ptrace.c | |||
@@ -76,7 +76,7 @@ static inline long get_reg(struct task_struct *task, int regno) | |||
76 | 76 | ||
77 | if (regno == PT_USP) | 77 | if (regno == PT_USP) |
78 | addr = &task->thread.usp; | 78 | addr = &task->thread.usp; |
79 | else if (regno < sizeof(regoff)/sizeof(regoff[0])) | 79 | else if (regno < ARRAY_SIZE(regoff)) |
80 | addr = (unsigned long *)(task->thread.esp0 + regoff[regno]); | 80 | addr = (unsigned long *)(task->thread.esp0 + regoff[regno]); |
81 | else | 81 | else |
82 | return 0; | 82 | return 0; |
@@ -93,7 +93,7 @@ static inline int put_reg(struct task_struct *task, int regno, | |||
93 | 93 | ||
94 | if (regno == PT_USP) | 94 | if (regno == PT_USP) |
95 | addr = &task->thread.usp; | 95 | addr = &task->thread.usp; |
96 | else if (regno < sizeof(regoff)/sizeof(regoff[0])) | 96 | else if (regno < ARRAY_SIZE(regoff)) |
97 | addr = (unsigned long *)(task->thread.esp0 + regoff[regno]); | 97 | addr = (unsigned long *)(task->thread.esp0 + regoff[regno]); |
98 | else | 98 | else |
99 | return -1; | 99 | return -1; |
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c index 9af3ee0e555d..42b8fd09ea8f 100644 --- a/arch/m68k/kernel/setup.c +++ b/arch/m68k/kernel/setup.c | |||
@@ -256,7 +256,7 @@ void __init setup_arch(char **cmdline_p) | |||
256 | init_mm.brk = (unsigned long) &_end; | 256 | init_mm.brk = (unsigned long) &_end; |
257 | 257 | ||
258 | *cmdline_p = m68k_command_line; | 258 | *cmdline_p = m68k_command_line; |
259 | memcpy(saved_command_line, *cmdline_p, CL_SIZE); | 259 | memcpy(boot_command_line, *cmdline_p, CL_SIZE); |
260 | 260 | ||
261 | /* Parse the command line for arch-specific options. | 261 | /* Parse the command line for arch-specific options. |
262 | * For the m68k, this is currently only "debug=xxx" to enable printing | 262 | * For the m68k, this is currently only "debug=xxx" to enable printing |
diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c index 2a599c3ed787..4c065f9ceffc 100644 --- a/arch/m68k/kernel/time.c +++ b/arch/m68k/kernel/time.c | |||
@@ -159,12 +159,3 @@ int do_settimeofday(struct timespec *tv) | |||
159 | } | 159 | } |
160 | 160 | ||
161 | EXPORT_SYMBOL(do_settimeofday); | 161 | EXPORT_SYMBOL(do_settimeofday); |
162 | |||
163 | /* | ||
164 | * Scheduler clock - returns current time in ns units. | ||
165 | */ | ||
166 | unsigned long long sched_clock(void) | ||
167 | { | ||
168 | return (unsigned long long)jiffies*(1000000000/HZ); | ||
169 | } | ||
170 | |||
diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index 759fa244e6cd..a27a4fa33296 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c | |||
@@ -1011,7 +1011,7 @@ EXPORT_SYMBOL(dump_stack); | |||
1011 | void bad_super_trap (struct frame *fp) | 1011 | void bad_super_trap (struct frame *fp) |
1012 | { | 1012 | { |
1013 | console_verbose(); | 1013 | console_verbose(); |
1014 | if (fp->ptregs.vector < 4*sizeof(vec_names)/sizeof(vec_names[0])) | 1014 | if (fp->ptregs.vector < 4 * ARRAY_SIZE(vec_names)) |
1015 | printk ("*** %s *** FORMAT=%X\n", | 1015 | printk ("*** %s *** FORMAT=%X\n", |
1016 | vec_names[(fp->ptregs.vector) >> 2], | 1016 | vec_names[(fp->ptregs.vector) >> 2], |
1017 | fp->ptregs.format); | 1017 | fp->ptregs.format); |
diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds index d2794452b195..437b4f8d86c5 100644 --- a/arch/m68k/kernel/vmlinux-std.lds +++ b/arch/m68k/kernel/vmlinux-std.lds | |||
@@ -61,10 +61,12 @@ SECTIONS | |||
61 | .con_initcall.init : { *(.con_initcall.init) } | 61 | .con_initcall.init : { *(.con_initcall.init) } |
62 | __con_initcall_end = .; | 62 | __con_initcall_end = .; |
63 | SECURITY_INIT | 63 | SECURITY_INIT |
64 | #ifdef CONFIG_BLK_DEV_INITRD | ||
64 | . = ALIGN(8192); | 65 | . = ALIGN(8192); |
65 | __initramfs_start = .; | 66 | __initramfs_start = .; |
66 | .init.ramfs : { *(.init.ramfs) } | 67 | .init.ramfs : { *(.init.ramfs) } |
67 | __initramfs_end = .; | 68 | __initramfs_end = .; |
69 | #endif | ||
68 | . = ALIGN(8192); | 70 | . = ALIGN(8192); |
69 | __init_end = .; | 71 | __init_end = .; |
70 | 72 | ||
diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds index 8c7eccbfc982..2868e206fc76 100644 --- a/arch/m68k/kernel/vmlinux-sun3.lds +++ b/arch/m68k/kernel/vmlinux-sun3.lds | |||
@@ -55,10 +55,12 @@ __init_begin = .; | |||
55 | .con_initcall.init : { *(.con_initcall.init) } | 55 | .con_initcall.init : { *(.con_initcall.init) } |
56 | __con_initcall_end = .; | 56 | __con_initcall_end = .; |
57 | SECURITY_INIT | 57 | SECURITY_INIT |
58 | #ifdef CONFIG_BLK_DEV_INITRD | ||
58 | . = ALIGN(8192); | 59 | . = ALIGN(8192); |
59 | __initramfs_start = .; | 60 | __initramfs_start = .; |
60 | .init.ramfs : { *(.init.ramfs) } | 61 | .init.ramfs : { *(.init.ramfs) } |
61 | __initramfs_end = .; | 62 | __initramfs_end = .; |
63 | #endif | ||
62 | . = ALIGN(8192); | 64 | . = ALIGN(8192); |
63 | __init_end = .; | 65 | __init_end = .; |
64 | .data.init.task : { *(.data.init_task) } | 66 | .data.init.task : { *(.data.init_task) } |
diff --git a/arch/m68k/mvme16x/rtc.c b/arch/m68k/mvme16x/rtc.c index b0e4c084df8a..272d47eac58d 100644 --- a/arch/m68k/mvme16x/rtc.c +++ b/arch/m68k/mvme16x/rtc.c | |||
@@ -147,7 +147,7 @@ static int rtc_release(struct inode *inode, struct file *file) | |||
147 | * The various file operations we support. | 147 | * The various file operations we support. |
148 | */ | 148 | */ |
149 | 149 | ||
150 | static struct file_operations rtc_fops = { | 150 | static const struct file_operations rtc_fops = { |
151 | .ioctl = rtc_ioctl, | 151 | .ioctl = rtc_ioctl, |
152 | .open = rtc_open, | 152 | .open = rtc_open, |
153 | .release = rtc_release, | 153 | .release = rtc_release, |
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index 25993c2a8fbb..823f73736bb5 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig | |||
@@ -17,6 +17,10 @@ config FPU | |||
17 | bool | 17 | bool |
18 | default n | 18 | default n |
19 | 19 | ||
20 | config ZONE_DMA | ||
21 | bool | ||
22 | default y | ||
23 | |||
20 | config RWSEM_GENERIC_SPINLOCK | 24 | config RWSEM_GENERIC_SPINLOCK |
21 | bool | 25 | bool |
22 | default y | 26 | default y |
@@ -49,6 +53,9 @@ config TIME_LOW_RES | |||
49 | bool | 53 | bool |
50 | default y | 54 | default y |
51 | 55 | ||
56 | config NO_IOPORT | ||
57 | def_bool y | ||
58 | |||
52 | source "init/Kconfig" | 59 | source "init/Kconfig" |
53 | 60 | ||
54 | menu "Processor type and features" | 61 | menu "Processor type and features" |
diff --git a/arch/m68knommu/kernel/ptrace.c b/arch/m68knommu/kernel/ptrace.c index 9130119537b9..72d349623575 100644 --- a/arch/m68knommu/kernel/ptrace.c +++ b/arch/m68knommu/kernel/ptrace.c | |||
@@ -62,7 +62,7 @@ static inline long get_reg(struct task_struct *task, int regno) | |||
62 | 62 | ||
63 | if (regno == PT_USP) | 63 | if (regno == PT_USP) |
64 | addr = &task->thread.usp; | 64 | addr = &task->thread.usp; |
65 | else if (regno < sizeof(regoff)/sizeof(regoff[0])) | 65 | else if (regno < ARRAY_SIZE(regoff)) |
66 | addr = (unsigned long *)(task->thread.esp0 + regoff[regno]); | 66 | addr = (unsigned long *)(task->thread.esp0 + regoff[regno]); |
67 | else | 67 | else |
68 | return 0; | 68 | return 0; |
@@ -79,7 +79,7 @@ static inline int put_reg(struct task_struct *task, int regno, | |||
79 | 79 | ||
80 | if (regno == PT_USP) | 80 | if (regno == PT_USP) |
81 | addr = &task->thread.usp; | 81 | addr = &task->thread.usp; |
82 | else if (regno < sizeof(regoff)/sizeof(regoff[0])) | 82 | else if (regno < ARRAY_SIZE(regoff)) |
83 | addr = (unsigned long *) (task->thread.esp0 + regoff[regno]); | 83 | addr = (unsigned long *) (task->thread.esp0 + regoff[regno]); |
84 | else | 84 | else |
85 | return -1; | 85 | return -1; |
diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c index 9cf2e4d1fc77..d5c25d27b64d 100644 --- a/arch/m68knommu/kernel/setup.c +++ b/arch/m68knommu/kernel/setup.c | |||
@@ -44,7 +44,7 @@ unsigned long memory_end; | |||
44 | EXPORT_SYMBOL(memory_start); | 44 | EXPORT_SYMBOL(memory_start); |
45 | EXPORT_SYMBOL(memory_end); | 45 | EXPORT_SYMBOL(memory_end); |
46 | 46 | ||
47 | char command_line[COMMAND_LINE_SIZE]; | 47 | char __initdata command_line[COMMAND_LINE_SIZE]; |
48 | 48 | ||
49 | /* setup some dummy routines */ | 49 | /* setup some dummy routines */ |
50 | static void dummy_waitbut(void) | 50 | static void dummy_waitbut(void) |
@@ -231,8 +231,8 @@ void setup_arch(char **cmdline_p) | |||
231 | 231 | ||
232 | /* Keep a copy of command line */ | 232 | /* Keep a copy of command line */ |
233 | *cmdline_p = &command_line[0]; | 233 | *cmdline_p = &command_line[0]; |
234 | memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); | 234 | memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); |
235 | saved_command_line[COMMAND_LINE_SIZE-1] = 0; | 235 | boot_command_line[COMMAND_LINE_SIZE-1] = 0; |
236 | 236 | ||
237 | #ifdef DEBUG | 237 | #ifdef DEBUG |
238 | if (strlen(*cmdline_p)) | 238 | if (strlen(*cmdline_p)) |
diff --git a/arch/m68knommu/kernel/time.c b/arch/m68knommu/kernel/time.c index 9226264abf1a..467053da2d08 100644 --- a/arch/m68knommu/kernel/time.c +++ b/arch/m68knommu/kernel/time.c | |||
@@ -23,6 +23,7 @@ | |||
23 | 23 | ||
24 | #include <asm/machdep.h> | 24 | #include <asm/machdep.h> |
25 | #include <asm/io.h> | 25 | #include <asm/io.h> |
26 | #include <asm/irq_regs.h> | ||
26 | 27 | ||
27 | #define TICK_SIZE (tick_nsec / 1000) | 28 | #define TICK_SIZE (tick_nsec / 1000) |
28 | 29 | ||
@@ -38,7 +39,7 @@ static inline int set_rtc_mmss(unsigned long nowtime) | |||
38 | * timer_interrupt() needs to keep up the real-time clock, | 39 | * timer_interrupt() needs to keep up the real-time clock, |
39 | * as well as call the "do_timer()" routine every clocktick | 40 | * as well as call the "do_timer()" routine every clocktick |
40 | */ | 41 | */ |
41 | static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs) | 42 | static irqreturn_t timer_interrupt(int irq, void *dummy) |
42 | { | 43 | { |
43 | /* last time the cmos clock got updated */ | 44 | /* last time the cmos clock got updated */ |
44 | static long last_rtc_update=0; | 45 | static long last_rtc_update=0; |
@@ -51,7 +52,7 @@ static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs) | |||
51 | 52 | ||
52 | do_timer(1); | 53 | do_timer(1); |
53 | #ifndef CONFIG_SMP | 54 | #ifndef CONFIG_SMP |
54 | update_process_times(user_mode(regs)); | 55 | update_process_times(user_mode(get_irq_regs())); |
55 | #endif | 56 | #endif |
56 | if (current->pid) | 57 | if (current->pid) |
57 | profile_tick(CPU_PROFILING); | 58 | profile_tick(CPU_PROFILING); |
@@ -173,13 +174,4 @@ int do_settimeofday(struct timespec *tv) | |||
173 | clock_was_set(); | 174 | clock_was_set(); |
174 | return 0; | 175 | return 0; |
175 | } | 176 | } |
176 | |||
177 | /* | ||
178 | * Scheduler clock - returns current time in nanosec units. | ||
179 | */ | ||
180 | unsigned long long sched_clock(void) | ||
181 | { | ||
182 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
183 | } | ||
184 | |||
185 | EXPORT_SYMBOL(do_settimeofday); | 177 | EXPORT_SYMBOL(do_settimeofday); |
diff --git a/arch/m68knommu/kernel/traps.c b/arch/m68knommu/kernel/traps.c index 9129b3a5258b..bed5f47bf568 100644 --- a/arch/m68knommu/kernel/traps.c +++ b/arch/m68knommu/kernel/traps.c | |||
@@ -158,7 +158,7 @@ void show_stack(struct task_struct *task, unsigned long *stack) | |||
158 | void bad_super_trap(struct frame *fp) | 158 | void bad_super_trap(struct frame *fp) |
159 | { | 159 | { |
160 | console_verbose(); | 160 | console_verbose(); |
161 | if (fp->ptregs.vector < 4*sizeof(vec_names)/sizeof(vec_names[0])) | 161 | if (fp->ptregs.vector < 4 * ARRAY_SIZE(vec_names)) |
162 | printk (KERN_WARNING "*** %s *** FORMAT=%X\n", | 162 | printk (KERN_WARNING "*** %s *** FORMAT=%X\n", |
163 | vec_names[(fp->ptregs.vector) >> 2], | 163 | vec_names[(fp->ptregs.vector) >> 2], |
164 | fp->ptregs.format); | 164 | fp->ptregs.format); |
diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index 2b2a10da64a4..c86a1bf589d4 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S | |||
@@ -87,6 +87,16 @@ SECTIONS { | |||
87 | *(__ksymtab_gpl) | 87 | *(__ksymtab_gpl) |
88 | __stop___ksymtab_gpl = .; | 88 | __stop___ksymtab_gpl = .; |
89 | 89 | ||
90 | /* Kernel symbol table: Normal unused symbols */ | ||
91 | __start___ksymtab_unused = .; | ||
92 | *(__ksymtab_unused) | ||
93 | __stop___ksymtab_unused = .; | ||
94 | |||
95 | /* Kernel symbol table: GPL-only unused symbols */ | ||
96 | __start___ksymtab_unused_gpl = .; | ||
97 | *(__ksymtab_unused_gpl) | ||
98 | __stop___ksymtab_unused_gpl = .; | ||
99 | |||
90 | /* Kernel symbol table: GPL-future symbols */ | 100 | /* Kernel symbol table: GPL-future symbols */ |
91 | __start___ksymtab_gpl_future = .; | 101 | __start___ksymtab_gpl_future = .; |
92 | *(__ksymtab_gpl_future) | 102 | *(__ksymtab_gpl_future) |
@@ -149,10 +159,12 @@ SECTIONS { | |||
149 | __security_initcall_start = .; | 159 | __security_initcall_start = .; |
150 | *(.security_initcall.init) | 160 | *(.security_initcall.init) |
151 | __security_initcall_end = .; | 161 | __security_initcall_end = .; |
162 | #ifdef CONFIG_BLK_DEV_INITRD | ||
152 | . = ALIGN(4); | 163 | . = ALIGN(4); |
153 | __initramfs_start = .; | 164 | __initramfs_start = .; |
154 | *(.init.ramfs) | 165 | *(.init.ramfs) |
155 | __initramfs_end = .; | 166 | __initramfs_end = .; |
167 | #endif | ||
156 | . = ALIGN(4096); | 168 | . = ALIGN(4096); |
157 | __init_end = .; | 169 | __init_end = .; |
158 | } > INIT | 170 | } > INIT |
diff --git a/arch/m68knommu/platform/5206/config.c b/arch/m68knommu/platform/5206/config.c index 34657f85e702..3343830aad10 100644 --- a/arch/m68knommu/platform/5206/config.c +++ b/arch/m68knommu/platform/5206/config.c | |||
@@ -26,7 +26,7 @@ | |||
26 | /***************************************************************************/ | 26 | /***************************************************************************/ |
27 | 27 | ||
28 | void coldfire_tick(void); | 28 | void coldfire_tick(void); |
29 | void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 29 | void coldfire_timer_init(irq_handler_t handler); |
30 | unsigned long coldfire_timer_offset(void); | 30 | unsigned long coldfire_timer_offset(void); |
31 | void coldfire_trap_init(void); | 31 | void coldfire_trap_init(void); |
32 | void coldfire_reset(void); | 32 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/5206e/config.c b/arch/m68knommu/platform/5206e/config.c index 48e4d6266507..0f67320b4031 100644 --- a/arch/m68knommu/platform/5206e/config.c +++ b/arch/m68knommu/platform/5206e/config.c | |||
@@ -25,7 +25,7 @@ | |||
25 | /***************************************************************************/ | 25 | /***************************************************************************/ |
26 | 26 | ||
27 | void coldfire_tick(void); | 27 | void coldfire_tick(void); |
28 | void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 28 | void coldfire_timer_init(irq_handler_t handler); |
29 | unsigned long coldfire_timer_offset(void); | 29 | unsigned long coldfire_timer_offset(void); |
30 | void coldfire_trap_init(void); | 30 | void coldfire_trap_init(void); |
31 | void coldfire_reset(void); | 31 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/520x/config.c b/arch/m68knommu/platform/520x/config.c index 823f561f35b0..58b2878deb61 100644 --- a/arch/m68knommu/platform/520x/config.c +++ b/arch/m68knommu/platform/520x/config.c | |||
@@ -13,6 +13,7 @@ | |||
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/param.h> | 15 | #include <linux/param.h> |
16 | #include <linux/interrupt.h> | ||
16 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
17 | #include <asm/dma.h> | 18 | #include <asm/dma.h> |
18 | 19 | ||
@@ -27,7 +28,7 @@ unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |||
27 | /***************************************************************************/ | 28 | /***************************************************************************/ |
28 | 29 | ||
29 | void coldfire_pit_tick(void); | 30 | void coldfire_pit_tick(void); |
30 | void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 31 | void coldfire_pit_init(irq_handler_t handler); |
31 | unsigned long coldfire_pit_offset(void); | 32 | unsigned long coldfire_pit_offset(void); |
32 | void coldfire_trap_init(void); | 33 | void coldfire_trap_init(void); |
33 | void coldfire_reset(void); | 34 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/523x/config.c b/arch/m68knommu/platform/523x/config.c index 85de817e9ec5..9b054e6caee2 100644 --- a/arch/m68knommu/platform/523x/config.c +++ b/arch/m68knommu/platform/523x/config.c | |||
@@ -27,7 +27,7 @@ | |||
27 | /***************************************************************************/ | 27 | /***************************************************************************/ |
28 | 28 | ||
29 | void coldfire_pit_tick(void); | 29 | void coldfire_pit_tick(void); |
30 | void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 30 | void coldfire_pit_init(irq_handler_t handler); |
31 | unsigned long coldfire_pit_offset(void); | 31 | unsigned long coldfire_pit_offset(void); |
32 | void coldfire_trap_init(void); | 32 | void coldfire_trap_init(void); |
33 | void coldfire_reset(void); | 33 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/5249/config.c b/arch/m68knommu/platform/5249/config.c index 9d19d5bdb8af..d6706079d64a 100644 --- a/arch/m68knommu/platform/5249/config.c +++ b/arch/m68knommu/platform/5249/config.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/sched.h> | 12 | #include <linux/sched.h> |
13 | #include <linux/param.h> | 13 | #include <linux/param.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/interrupt.h> | ||
15 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
16 | #include <asm/dma.h> | 17 | #include <asm/dma.h> |
17 | #include <asm/traps.h> | 18 | #include <asm/traps.h> |
@@ -24,7 +25,7 @@ | |||
24 | /***************************************************************************/ | 25 | /***************************************************************************/ |
25 | 26 | ||
26 | void coldfire_tick(void); | 27 | void coldfire_tick(void); |
27 | void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 28 | void coldfire_timer_init(irq_handler_t handler); |
28 | unsigned long coldfire_timer_offset(void); | 29 | unsigned long coldfire_timer_offset(void); |
29 | void coldfire_trap_init(void); | 30 | void coldfire_trap_init(void); |
30 | void coldfire_reset(void); | 31 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/5272/config.c b/arch/m68knommu/platform/5272/config.c index d500e27eda57..6b437cc97776 100644 --- a/arch/m68knommu/platform/5272/config.c +++ b/arch/m68knommu/platform/5272/config.c | |||
@@ -26,7 +26,7 @@ | |||
26 | /***************************************************************************/ | 26 | /***************************************************************************/ |
27 | 27 | ||
28 | void coldfire_tick(void); | 28 | void coldfire_tick(void); |
29 | void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 29 | void coldfire_timer_init(irq_handler_t handler); |
30 | unsigned long coldfire_timer_offset(void); | 30 | unsigned long coldfire_timer_offset(void); |
31 | void coldfire_trap_init(void); | 31 | void coldfire_trap_init(void); |
32 | void coldfire_reset(void); | 32 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/527x/config.c b/arch/m68knommu/platform/527x/config.c index bbae51597457..28e7d964eef1 100644 --- a/arch/m68knommu/platform/527x/config.c +++ b/arch/m68knommu/platform/527x/config.c | |||
@@ -27,7 +27,7 @@ | |||
27 | /***************************************************************************/ | 27 | /***************************************************************************/ |
28 | 28 | ||
29 | void coldfire_pit_tick(void); | 29 | void coldfire_pit_tick(void); |
30 | void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 30 | void coldfire_pit_init(irq_handler_t handler); |
31 | unsigned long coldfire_pit_offset(void); | 31 | unsigned long coldfire_pit_offset(void); |
32 | void coldfire_trap_init(void); | 32 | void coldfire_trap_init(void); |
33 | void coldfire_reset(void); | 33 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/528x/config.c b/arch/m68knommu/platform/528x/config.c index 18dad9046144..805b4f74ff19 100644 --- a/arch/m68knommu/platform/528x/config.c +++ b/arch/m68knommu/platform/528x/config.c | |||
@@ -27,7 +27,7 @@ | |||
27 | /***************************************************************************/ | 27 | /***************************************************************************/ |
28 | 28 | ||
29 | void coldfire_pit_tick(void); | 29 | void coldfire_pit_tick(void); |
30 | void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 30 | void coldfire_pit_init(irq_handler_t handler); |
31 | unsigned long coldfire_pit_offset(void); | 31 | unsigned long coldfire_pit_offset(void); |
32 | void coldfire_trap_init(void); | 32 | void coldfire_trap_init(void); |
33 | void coldfire_reset(void); | 33 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/5307/config.c b/arch/m68knommu/platform/5307/config.c index 8074ac56f479..e04b84deb57d 100644 --- a/arch/m68knommu/platform/5307/config.c +++ b/arch/m68knommu/platform/5307/config.c | |||
@@ -27,7 +27,7 @@ | |||
27 | /***************************************************************************/ | 27 | /***************************************************************************/ |
28 | 28 | ||
29 | void coldfire_tick(void); | 29 | void coldfire_tick(void); |
30 | void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 30 | void coldfire_timer_init(irq_handler_t handler); |
31 | unsigned long coldfire_timer_offset(void); | 31 | unsigned long coldfire_timer_offset(void); |
32 | void coldfire_trap_init(void); | 32 | void coldfire_trap_init(void); |
33 | void coldfire_reset(void); | 33 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/5307/pit.c b/arch/m68knommu/platform/5307/pit.c index 9dc5688f71b5..aa15beeb36ca 100644 --- a/arch/m68knommu/platform/5307/pit.c +++ b/arch/m68knommu/platform/5307/pit.c | |||
@@ -43,7 +43,7 @@ void coldfire_pit_tick(void) | |||
43 | 43 | ||
44 | /***************************************************************************/ | 44 | /***************************************************************************/ |
45 | 45 | ||
46 | void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)) | 46 | void coldfire_pit_init(irq_handler_t handler) |
47 | { | 47 | { |
48 | volatile unsigned char *icrp; | 48 | volatile unsigned char *icrp; |
49 | volatile unsigned long *imrp; | 49 | volatile unsigned long *imrp; |
diff --git a/arch/m68knommu/platform/5307/timers.c b/arch/m68knommu/platform/5307/timers.c index e5668af19789..87b112b363a6 100644 --- a/arch/m68knommu/platform/5307/timers.c +++ b/arch/m68knommu/platform/5307/timers.c | |||
@@ -62,7 +62,7 @@ void coldfire_tick(void) | |||
62 | 62 | ||
63 | /***************************************************************************/ | 63 | /***************************************************************************/ |
64 | 64 | ||
65 | void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)) | 65 | void coldfire_timer_init(irq_handler_t handler) |
66 | { | 66 | { |
67 | __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR)); | 67 | __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR)); |
68 | __raw_writetrr(((MCF_BUSCLK / 16) / HZ), TA(MCFTIMER_TRR)); | 68 | __raw_writetrr(((MCF_BUSCLK / 16) / HZ), TA(MCFTIMER_TRR)); |
@@ -111,12 +111,13 @@ unsigned long coldfire_timer_offset(void) | |||
111 | /* | 111 | /* |
112 | * Use the other timer to provide high accuracy profiling info. | 112 | * Use the other timer to provide high accuracy profiling info. |
113 | */ | 113 | */ |
114 | void coldfire_profile_tick(int irq, void *dummy, struct pt_regs *regs) | 114 | irqreturn_t coldfire_profile_tick(int irq, void *dummy) |
115 | { | 115 | { |
116 | /* Reset ColdFire timer2 */ | 116 | /* Reset ColdFire timer2 */ |
117 | __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, PA(MCFTIMER_TER)); | 117 | __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, PA(MCFTIMER_TER)); |
118 | if (current->pid) | 118 | if (current->pid) |
119 | profile_tick(CPU_PROFILING, regs); | 119 | profile_tick(CPU_PROFILING, regs); |
120 | return IRQ_HANDLED; | ||
120 | } | 121 | } |
121 | 122 | ||
122 | /***************************************************************************/ | 123 | /***************************************************************************/ |
diff --git a/arch/m68knommu/platform/532x/config.c b/arch/m68knommu/platform/532x/config.c index c7d6ad513820..664c3a12b0c1 100644 --- a/arch/m68knommu/platform/532x/config.c +++ b/arch/m68knommu/platform/532x/config.c | |||
@@ -35,7 +35,7 @@ | |||
35 | /***************************************************************************/ | 35 | /***************************************************************************/ |
36 | 36 | ||
37 | void coldfire_tick(void); | 37 | void coldfire_tick(void); |
38 | void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 38 | void coldfire_timer_init(irq_handler_t handler); |
39 | unsigned long coldfire_timer_offset(void); | 39 | unsigned long coldfire_timer_offset(void); |
40 | void coldfire_trap_init(void); | 40 | void coldfire_trap_init(void); |
41 | void coldfire_reset(void); | 41 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/5407/config.c b/arch/m68knommu/platform/5407/config.c index 5aad2645f0f1..036f62876241 100644 --- a/arch/m68knommu/platform/5407/config.c +++ b/arch/m68knommu/platform/5407/config.c | |||
@@ -26,7 +26,7 @@ | |||
26 | /***************************************************************************/ | 26 | /***************************************************************************/ |
27 | 27 | ||
28 | void coldfire_tick(void); | 28 | void coldfire_tick(void); |
29 | void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 29 | void coldfire_timer_init(irq_handler_t handler); |
30 | unsigned long coldfire_timer_offset(void); | 30 | unsigned long coldfire_timer_offset(void); |
31 | void coldfire_trap_init(void); | 31 | void coldfire_trap_init(void); |
32 | void coldfire_reset(void); | 32 | void coldfire_reset(void); |
diff --git a/arch/m68knommu/platform/68328/config.c b/arch/m68knommu/platform/68328/config.c index 26ffeba28642..e5c537d14dfb 100644 --- a/arch/m68knommu/platform/68328/config.c +++ b/arch/m68knommu/platform/68328/config.c | |||
@@ -34,7 +34,7 @@ | |||
34 | 34 | ||
35 | /***************************************************************************/ | 35 | /***************************************************************************/ |
36 | 36 | ||
37 | void m68328_timer_init(irqreturn_t (*timer_routine) (int, void *, struct pt_regs *)); | 37 | void m68328_timer_init(irq_handler_t timer_routine); |
38 | void m68328_timer_tick(void); | 38 | void m68328_timer_tick(void); |
39 | unsigned long m68328_timer_gettimeoffset(void); | 39 | unsigned long m68328_timer_gettimeoffset(void); |
40 | void m68328_timer_gettod(int *year, int *mon, int *day, int *hour, int *min, int *sec); | 40 | void m68328_timer_gettod(int *year, int *mon, int *day, int *hour, int *min, int *sec); |
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 44a0224c32dd..5fe195a41a80 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -8,6 +8,10 @@ mainmenu "Linux/MIPS Kernel Configuration" | |||
8 | 8 | ||
9 | menu "Machine selection" | 9 | menu "Machine selection" |
10 | 10 | ||
11 | config ZONE_DMA | ||
12 | bool | ||
13 | default y | ||
14 | |||
11 | choice | 15 | choice |
12 | prompt "System type" | 16 | prompt "System type" |
13 | default SGI_IP22 | 17 | default SGI_IP22 |
@@ -753,6 +757,7 @@ config TOSHIBA_JMR3927 | |||
753 | select SWAP_IO_SPACE | 757 | select SWAP_IO_SPACE |
754 | select SYS_HAS_CPU_TX39XX | 758 | select SYS_HAS_CPU_TX39XX |
755 | select SYS_SUPPORTS_32BIT_KERNEL | 759 | select SYS_SUPPORTS_32BIT_KERNEL |
760 | select SYS_SUPPORTS_LITTLE_ENDIAN | ||
756 | select SYS_SUPPORTS_BIG_ENDIAN | 761 | select SYS_SUPPORTS_BIG_ENDIAN |
757 | select TOSHIBA_BOARDS | 762 | select TOSHIBA_BOARDS |
758 | 763 | ||
@@ -767,6 +772,7 @@ config TOSHIBA_RBTX4927 | |||
767 | select SYS_HAS_CPU_TX49XX | 772 | select SYS_HAS_CPU_TX49XX |
768 | select SYS_SUPPORTS_32BIT_KERNEL | 773 | select SYS_SUPPORTS_32BIT_KERNEL |
769 | select SYS_SUPPORTS_64BIT_KERNEL | 774 | select SYS_SUPPORTS_64BIT_KERNEL |
775 | select SYS_SUPPORTS_LITTLE_ENDIAN | ||
770 | select SYS_SUPPORTS_BIG_ENDIAN | 776 | select SYS_SUPPORTS_BIG_ENDIAN |
771 | select TOSHIBA_BOARDS | 777 | select TOSHIBA_BOARDS |
772 | select GENERIC_HARDIRQS_NO__DO_IRQ | 778 | select GENERIC_HARDIRQS_NO__DO_IRQ |
@@ -934,6 +940,9 @@ config CPU_LITTLE_ENDIAN | |||
934 | 940 | ||
935 | endchoice | 941 | endchoice |
936 | 942 | ||
943 | config SYS_SUPPORTS_APM_EMULATION | ||
944 | bool | ||
945 | |||
937 | config SYS_SUPPORTS_BIG_ENDIAN | 946 | config SYS_SUPPORTS_BIG_ENDIAN |
938 | bool | 947 | bool |
939 | 948 | ||
@@ -1001,6 +1010,7 @@ config SOC_AU1X00 | |||
1001 | bool | 1010 | bool |
1002 | select SYS_HAS_CPU_MIPS32_R1 | 1011 | select SYS_HAS_CPU_MIPS32_R1 |
1003 | select SYS_SUPPORTS_32BIT_KERNEL | 1012 | select SYS_SUPPORTS_32BIT_KERNEL |
1013 | select SYS_SUPPORTS_APM_EMULATION | ||
1004 | 1014 | ||
1005 | config PNX8550 | 1015 | config PNX8550 |
1006 | bool | 1016 | bool |
@@ -2071,35 +2081,11 @@ config BINFMT_ELF32 | |||
2071 | bool | 2081 | bool |
2072 | default y if MIPS32_O32 || MIPS32_N32 | 2082 | default y if MIPS32_O32 || MIPS32_N32 |
2073 | 2083 | ||
2074 | config PM | 2084 | endmenu |
2075 | bool "Power Management support (EXPERIMENTAL)" | 2085 | |
2076 | depends on EXPERIMENTAL && SOC_AU1X00 | 2086 | menu "Power management options" |
2077 | 2087 | ||
2078 | config APM | 2088 | source "kernel/power/Kconfig" |
2079 | tristate "Advanced Power Management Emulation" | ||
2080 | depends on PM | ||
2081 | ---help--- | ||
2082 | APM is a BIOS specification for saving power using several different | ||
2083 | techniques. This is mostly useful for battery powered systems with | ||
2084 | APM compliant BIOSes. If you say Y here, the system time will be | ||
2085 | reset after a RESUME operation, the /proc/apm device will provide | ||
2086 | battery status information, and user-space programs will receive | ||
2087 | notification of APM "events" (e.g. battery status change). | ||
2088 | |||
2089 | In order to use APM, you will need supporting software. For location | ||
2090 | and more information, read <file:Documentation/pm.txt> and the | ||
2091 | Battery Powered Linux mini-HOWTO, available from | ||
2092 | <http://www.tldp.org/docs.html#howto>. | ||
2093 | |||
2094 | This driver does not spin down disk drives (see the hdparm(8) | ||
2095 | manpage ("man 8 hdparm") for that), and it doesn't turn off | ||
2096 | VESA-compliant "green" monitors. | ||
2097 | |||
2098 | Generally, if you don't have a battery in your machine, there isn't | ||
2099 | much point in using this driver and you should say N. If you get | ||
2100 | random kernel OOPSes or reboots that don't seem to be related to | ||
2101 | anything, try disabling/enabling this option (or disabling/enabling | ||
2102 | APM in your BIOS). | ||
2103 | 2089 | ||
2104 | endmenu | 2090 | endmenu |
2105 | 2091 | ||
diff --git a/arch/mips/dec/Makefile b/arch/mips/dec/Makefile index ed181fdc3ac9..8b790c2900d5 100644 --- a/arch/mips/dec/Makefile +++ b/arch/mips/dec/Makefile | |||
@@ -6,6 +6,7 @@ obj-y := ecc-berr.o int-handler.o ioasic-irq.o kn01-berr.o \ | |||
6 | kn02-irq.o kn02xa-berr.o reset.o setup.o time.o | 6 | kn02-irq.o kn02xa-berr.o reset.o setup.o time.o |
7 | 7 | ||
8 | obj-$(CONFIG_PROM_CONSOLE) += promcon.o | 8 | obj-$(CONFIG_PROM_CONSOLE) += promcon.o |
9 | obj-$(CONFIG_TC) += tc.o | ||
9 | obj-$(CONFIG_CPU_HAS_WB) += wbflush.o | 10 | obj-$(CONFIG_CPU_HAS_WB) += wbflush.o |
10 | 11 | ||
11 | EXTRA_AFLAGS := $(CFLAGS) | 12 | EXTRA_AFLAGS := $(CFLAGS) |
diff --git a/arch/mips/dec/prom/identify.c b/arch/mips/dec/prom/identify.c index 81d5e878ddce..c4e3c1ea0d48 100644 --- a/arch/mips/dec/prom/identify.c +++ b/arch/mips/dec/prom/identify.c | |||
@@ -88,6 +88,7 @@ static inline void prom_init_kn02(void) | |||
88 | { | 88 | { |
89 | dec_kn_slot_base = KN02_SLOT_BASE; | 89 | dec_kn_slot_base = KN02_SLOT_BASE; |
90 | dec_kn_slot_size = KN02_SLOT_SIZE; | 90 | dec_kn_slot_size = KN02_SLOT_SIZE; |
91 | dec_tc_bus = 1; | ||
91 | 92 | ||
92 | dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN02_RTC); | 93 | dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN02_RTC); |
93 | } | 94 | } |
@@ -96,6 +97,7 @@ static inline void prom_init_kn02xa(void) | |||
96 | { | 97 | { |
97 | dec_kn_slot_base = KN02XA_SLOT_BASE; | 98 | dec_kn_slot_base = KN02XA_SLOT_BASE; |
98 | dec_kn_slot_size = IOASIC_SLOT_SIZE; | 99 | dec_kn_slot_size = IOASIC_SLOT_SIZE; |
100 | dec_tc_bus = 1; | ||
99 | 101 | ||
100 | ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL); | 102 | ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL); |
101 | dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY); | 103 | dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY); |
@@ -105,6 +107,7 @@ static inline void prom_init_kn03(void) | |||
105 | { | 107 | { |
106 | dec_kn_slot_base = KN03_SLOT_BASE; | 108 | dec_kn_slot_base = KN03_SLOT_BASE; |
107 | dec_kn_slot_size = IOASIC_SLOT_SIZE; | 109 | dec_kn_slot_size = IOASIC_SLOT_SIZE; |
110 | dec_tc_bus = 1; | ||
108 | 111 | ||
109 | ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL); | 112 | ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL); |
110 | dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY); | 113 | dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY); |
diff --git a/arch/mips/dec/setup.c b/arch/mips/dec/setup.c index 1058e2f409bb..b8a5e75ba0ab 100644 --- a/arch/mips/dec/setup.c +++ b/arch/mips/dec/setup.c | |||
@@ -53,6 +53,8 @@ unsigned long dec_kn_slot_base, dec_kn_slot_size; | |||
53 | EXPORT_SYMBOL(dec_kn_slot_base); | 53 | EXPORT_SYMBOL(dec_kn_slot_base); |
54 | EXPORT_SYMBOL(dec_kn_slot_size); | 54 | EXPORT_SYMBOL(dec_kn_slot_size); |
55 | 55 | ||
56 | int dec_tc_bus; | ||
57 | |||
56 | spinlock_t ioasic_ssr_lock; | 58 | spinlock_t ioasic_ssr_lock; |
57 | 59 | ||
58 | volatile u32 *ioasic_base; | 60 | volatile u32 *ioasic_base; |
diff --git a/arch/mips/dec/tc.c b/arch/mips/dec/tc.c new file mode 100644 index 000000000000..732027c79834 --- /dev/null +++ b/arch/mips/dec/tc.c | |||
@@ -0,0 +1,95 @@ | |||
1 | /* | ||
2 | * TURBOchannel architecture calls. | ||
3 | * | ||
4 | * Copyright (c) Harald Koerfgen, 1998 | ||
5 | * Copyright (c) 2001, 2003, 2005, 2006 Maciej W. Rozycki | ||
6 | * Copyright (c) 2005 James Simmons | ||
7 | * | ||
8 | * This file is subject to the terms and conditions of the GNU | ||
9 | * General Public License. See the file "COPYING" in the main | ||
10 | * directory of this archive for more details. | ||
11 | */ | ||
12 | #include <linux/compiler.h> | ||
13 | #include <linux/errno.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/string.h> | ||
16 | #include <linux/tc.h> | ||
17 | #include <linux/types.h> | ||
18 | |||
19 | #include <asm/addrspace.h> | ||
20 | #include <asm/bootinfo.h> | ||
21 | #include <asm/paccess.h> | ||
22 | |||
23 | #include <asm/dec/interrupts.h> | ||
24 | #include <asm/dec/prom.h> | ||
25 | #include <asm/dec/system.h> | ||
26 | |||
27 | /* | ||
28 | * Protected read byte from TURBOchannel slot space. | ||
29 | */ | ||
30 | int tc_preadb(u8 *valp, void __iomem *addr) | ||
31 | { | ||
32 | return get_dbe(*valp, (u8 *)addr); | ||
33 | } | ||
34 | |||
35 | /* | ||
36 | * Get TURBOchannel bus information as specified by the spec, plus | ||
37 | * the slot space base address and the number of slots. | ||
38 | */ | ||
39 | int __init tc_bus_get_info(struct tc_bus *tbus) | ||
40 | { | ||
41 | if (!dec_tc_bus) | ||
42 | return -ENXIO; | ||
43 | |||
44 | memcpy(&tbus->info, rex_gettcinfo(), sizeof(tbus->info)); | ||
45 | tbus->slot_base = CPHYSADDR((long)rex_slot_address(0)); | ||
46 | |||
47 | switch (mips_machtype) { | ||
48 | case MACH_DS5000_200: | ||
49 | tbus->num_tcslots = 7; | ||
50 | break; | ||
51 | case MACH_DS5000_2X0: | ||
52 | case MACH_DS5900: | ||
53 | tbus->ext_slot_base = 0x20000000; | ||
54 | tbus->ext_slot_size = 0x20000000; | ||
55 | /* fall through */ | ||
56 | case MACH_DS5000_1XX: | ||
57 | tbus->num_tcslots = 3; | ||
58 | break; | ||
59 | case MACH_DS5000_XX: | ||
60 | tbus->num_tcslots = 2; | ||
61 | default: | ||
62 | break; | ||
63 | } | ||
64 | return 0; | ||
65 | } | ||
66 | |||
67 | /* | ||
68 | * Get the IRQ for the specified slot. | ||
69 | */ | ||
70 | void __init tc_device_get_irq(struct tc_dev *tdev) | ||
71 | { | ||
72 | switch (tdev->slot) { | ||
73 | case 0: | ||
74 | tdev->interrupt = dec_interrupt[DEC_IRQ_TC0]; | ||
75 | break; | ||
76 | case 1: | ||
77 | tdev->interrupt = dec_interrupt[DEC_IRQ_TC1]; | ||
78 | break; | ||
79 | case 2: | ||
80 | tdev->interrupt = dec_interrupt[DEC_IRQ_TC2]; | ||
81 | break; | ||
82 | /* | ||
83 | * Yuck! DS5000/200 onboard devices | ||
84 | */ | ||
85 | case 5: | ||
86 | tdev->interrupt = dec_interrupt[DEC_IRQ_TC5]; | ||
87 | break; | ||
88 | case 6: | ||
89 | tdev->interrupt = dec_interrupt[DEC_IRQ_TC6]; | ||
90 | break; | ||
91 | default: | ||
92 | tdev->interrupt = -1; | ||
93 | break; | ||
94 | } | ||
95 | } | ||
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile index bbbb8d7cb89b..1bf2c8448912 100644 --- a/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile | |||
@@ -14,8 +14,6 @@ binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ | |||
14 | obj-$(CONFIG_STACKTRACE) += stacktrace.o | 14 | obj-$(CONFIG_STACKTRACE) += stacktrace.o |
15 | obj-$(CONFIG_MODULES) += mips_ksyms.o module.o | 15 | obj-$(CONFIG_MODULES) += mips_ksyms.o module.o |
16 | 16 | ||
17 | obj-$(CONFIG_APM) += apm.o | ||
18 | |||
19 | obj-$(CONFIG_CPU_R3000) += r2300_fpu.o r2300_switch.o | 17 | obj-$(CONFIG_CPU_R3000) += r2300_fpu.o r2300_switch.o |
20 | obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o r2300_switch.o | 18 | obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o r2300_switch.o |
21 | obj-$(CONFIG_CPU_TX49XX) += r4k_fpu.o r4k_switch.o | 19 | obj-$(CONFIG_CPU_TX49XX) += r4k_fpu.o r4k_switch.o |
diff --git a/arch/mips/kernel/apm.c b/arch/mips/kernel/apm.c deleted file mode 100644 index ba16d07588cb..000000000000 --- a/arch/mips/kernel/apm.c +++ /dev/null | |||
@@ -1,604 +0,0 @@ | |||
1 | /* | ||
2 | * bios-less APM driver for MIPS Linux | ||
3 | * Jamey Hicks <jamey@crl.dec.com> | ||
4 | * adapted from the APM BIOS driver for Linux by Stephen Rothwell (sfr@linuxcare.com) | ||
5 | * | ||
6 | * APM 1.2 Reference: | ||
7 | * Intel Corporation, Microsoft Corporation. Advanced Power Management | ||
8 | * (APM) BIOS Interface Specification, Revision 1.2, February 1996. | ||
9 | * | ||
10 | * [This document is available from Microsoft at: | ||
11 | * http://www.microsoft.com/hwdev/busbios/amp_12.htm] | ||
12 | */ | ||
13 | #include <linux/module.h> | ||
14 | #include <linux/poll.h> | ||
15 | #include <linux/timer.h> | ||
16 | #include <linux/slab.h> | ||
17 | #include <linux/proc_fs.h> | ||
18 | #include <linux/miscdevice.h> | ||
19 | #include <linux/apm_bios.h> | ||
20 | #include <linux/capability.h> | ||
21 | #include <linux/sched.h> | ||
22 | #include <linux/pm.h> | ||
23 | #include <linux/device.h> | ||
24 | #include <linux/kernel.h> | ||
25 | #include <linux/list.h> | ||
26 | #include <linux/init.h> | ||
27 | #include <linux/completion.h> | ||
28 | |||
29 | #include <asm/apm.h> /* apm_power_info */ | ||
30 | #include <asm/system.h> | ||
31 | |||
32 | /* | ||
33 | * The apm_bios device is one of the misc char devices. | ||
34 | * This is its minor number. | ||
35 | */ | ||
36 | #define APM_MINOR_DEV 134 | ||
37 | |||
38 | /* | ||
39 | * See Documentation/Config.help for the configuration options. | ||
40 | * | ||
41 | * Various options can be changed at boot time as follows: | ||
42 | * (We allow underscores for compatibility with the modules code) | ||
43 | * apm=on/off enable/disable APM | ||
44 | */ | ||
45 | |||
46 | /* | ||
47 | * Maximum number of events stored | ||
48 | */ | ||
49 | #define APM_MAX_EVENTS 16 | ||
50 | |||
51 | struct apm_queue { | ||
52 | unsigned int event_head; | ||
53 | unsigned int event_tail; | ||
54 | apm_event_t events[APM_MAX_EVENTS]; | ||
55 | }; | ||
56 | |||
57 | /* | ||
58 | * The per-file APM data | ||
59 | */ | ||
60 | struct apm_user { | ||
61 | struct list_head list; | ||
62 | |||
63 | unsigned int suser: 1; | ||
64 | unsigned int writer: 1; | ||
65 | unsigned int reader: 1; | ||
66 | |||
67 | int suspend_result; | ||
68 | unsigned int suspend_state; | ||
69 | #define SUSPEND_NONE 0 /* no suspend pending */ | ||
70 | #define SUSPEND_PENDING 1 /* suspend pending read */ | ||
71 | #define SUSPEND_READ 2 /* suspend read, pending ack */ | ||
72 | #define SUSPEND_ACKED 3 /* suspend acked */ | ||
73 | #define SUSPEND_DONE 4 /* suspend completed */ | ||
74 | |||
75 | struct apm_queue queue; | ||
76 | }; | ||
77 | |||
78 | /* | ||
79 | * Local variables | ||
80 | */ | ||
81 | static int suspends_pending; | ||
82 | static int apm_disabled; | ||
83 | static int mips_apm_active; | ||
84 | |||
85 | static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue); | ||
86 | static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue); | ||
87 | |||
88 | /* | ||
89 | * This is a list of everyone who has opened /dev/apm_bios | ||
90 | */ | ||
91 | static DECLARE_RWSEM(user_list_lock); | ||
92 | static LIST_HEAD(apm_user_list); | ||
93 | |||
94 | /* | ||
95 | * kapmd info. kapmd provides us a process context to handle | ||
96 | * "APM" events within - specifically necessary if we're going | ||
97 | * to be suspending the system. | ||
98 | */ | ||
99 | static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait); | ||
100 | static DECLARE_COMPLETION(kapmd_exit); | ||
101 | static DEFINE_SPINLOCK(kapmd_queue_lock); | ||
102 | static struct apm_queue kapmd_queue; | ||
103 | |||
104 | |||
105 | static const char driver_version[] = "1.13"; /* no spaces */ | ||
106 | |||
107 | |||
108 | |||
109 | /* | ||
110 | * Compatibility cruft until the IPAQ people move over to the new | ||
111 | * interface. | ||
112 | */ | ||
113 | static void __apm_get_power_status(struct apm_power_info *info) | ||
114 | { | ||
115 | } | ||
116 | |||
117 | /* | ||
118 | * This allows machines to provide their own "apm get power status" function. | ||
119 | */ | ||
120 | void (*apm_get_power_status)(struct apm_power_info *) = __apm_get_power_status; | ||
121 | EXPORT_SYMBOL(apm_get_power_status); | ||
122 | |||
123 | |||
124 | /* | ||
125 | * APM event queue management. | ||
126 | */ | ||
127 | static inline int queue_empty(struct apm_queue *q) | ||
128 | { | ||
129 | return q->event_head == q->event_tail; | ||
130 | } | ||
131 | |||
132 | static inline apm_event_t queue_get_event(struct apm_queue *q) | ||
133 | { | ||
134 | q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS; | ||
135 | return q->events[q->event_tail]; | ||
136 | } | ||
137 | |||
138 | static void queue_add_event(struct apm_queue *q, apm_event_t event) | ||
139 | { | ||
140 | q->event_head = (q->event_head + 1) % APM_MAX_EVENTS; | ||
141 | if (q->event_head == q->event_tail) { | ||
142 | static int notified; | ||
143 | |||
144 | if (notified++ == 0) | ||
145 | printk(KERN_ERR "apm: an event queue overflowed\n"); | ||
146 | q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS; | ||
147 | } | ||
148 | q->events[q->event_head] = event; | ||
149 | } | ||
150 | |||
151 | static void queue_event_one_user(struct apm_user *as, apm_event_t event) | ||
152 | { | ||
153 | if (as->suser && as->writer) { | ||
154 | switch (event) { | ||
155 | case APM_SYS_SUSPEND: | ||
156 | case APM_USER_SUSPEND: | ||
157 | /* | ||
158 | * If this user already has a suspend pending, | ||
159 | * don't queue another one. | ||
160 | */ | ||
161 | if (as->suspend_state != SUSPEND_NONE) | ||
162 | return; | ||
163 | |||
164 | as->suspend_state = SUSPEND_PENDING; | ||
165 | suspends_pending++; | ||
166 | break; | ||
167 | } | ||
168 | } | ||
169 | queue_add_event(&as->queue, event); | ||
170 | } | ||
171 | |||
172 | static void queue_event(apm_event_t event, struct apm_user *sender) | ||
173 | { | ||
174 | struct apm_user *as; | ||
175 | |||
176 | down_read(&user_list_lock); | ||
177 | list_for_each_entry(as, &apm_user_list, list) { | ||
178 | if (as != sender && as->reader) | ||
179 | queue_event_one_user(as, event); | ||
180 | } | ||
181 | up_read(&user_list_lock); | ||
182 | wake_up_interruptible(&apm_waitqueue); | ||
183 | } | ||
184 | |||
185 | static void apm_suspend(void) | ||
186 | { | ||
187 | struct apm_user *as; | ||
188 | int err = pm_suspend(PM_SUSPEND_MEM); | ||
189 | |||
190 | /* | ||
191 | * Anyone on the APM queues will think we're still suspended. | ||
192 | * Send a message so everyone knows we're now awake again. | ||
193 | */ | ||
194 | queue_event(APM_NORMAL_RESUME, NULL); | ||
195 | |||
196 | /* | ||
197 | * Finally, wake up anyone who is sleeping on the suspend. | ||
198 | */ | ||
199 | down_read(&user_list_lock); | ||
200 | list_for_each_entry(as, &apm_user_list, list) { | ||
201 | as->suspend_result = err; | ||
202 | as->suspend_state = SUSPEND_DONE; | ||
203 | } | ||
204 | up_read(&user_list_lock); | ||
205 | |||
206 | wake_up(&apm_suspend_waitqueue); | ||
207 | } | ||
208 | |||
209 | static ssize_t apm_read(struct file *fp, char __user *buf, size_t count, loff_t *ppos) | ||
210 | { | ||
211 | struct apm_user *as = fp->private_data; | ||
212 | apm_event_t event; | ||
213 | int i = count, ret = 0; | ||
214 | |||
215 | if (count < sizeof(apm_event_t)) | ||
216 | return -EINVAL; | ||
217 | |||
218 | if (queue_empty(&as->queue) && fp->f_flags & O_NONBLOCK) | ||
219 | return -EAGAIN; | ||
220 | |||
221 | wait_event_interruptible(apm_waitqueue, !queue_empty(&as->queue)); | ||
222 | |||
223 | while ((i >= sizeof(event)) && !queue_empty(&as->queue)) { | ||
224 | event = queue_get_event(&as->queue); | ||
225 | |||
226 | ret = -EFAULT; | ||
227 | if (copy_to_user(buf, &event, sizeof(event))) | ||
228 | break; | ||
229 | |||
230 | if (event == APM_SYS_SUSPEND || event == APM_USER_SUSPEND) | ||
231 | as->suspend_state = SUSPEND_READ; | ||
232 | |||
233 | buf += sizeof(event); | ||
234 | i -= sizeof(event); | ||
235 | } | ||
236 | |||
237 | if (i < count) | ||
238 | ret = count - i; | ||
239 | |||
240 | return ret; | ||
241 | } | ||
242 | |||
243 | static unsigned int apm_poll(struct file *fp, poll_table * wait) | ||
244 | { | ||
245 | struct apm_user *as = fp->private_data; | ||
246 | |||
247 | poll_wait(fp, &apm_waitqueue, wait); | ||
248 | return queue_empty(&as->queue) ? 0 : POLLIN | POLLRDNORM; | ||
249 | } | ||
250 | |||
251 | /* | ||
252 | * apm_ioctl - handle APM ioctl | ||
253 | * | ||
254 | * APM_IOC_SUSPEND | ||
255 | * This IOCTL is overloaded, and performs two functions. It is used to: | ||
256 | * - initiate a suspend | ||
257 | * - acknowledge a suspend read from /dev/apm_bios. | ||
258 | * Only when everyone who has opened /dev/apm_bios with write permission | ||
259 | * has acknowledge does the actual suspend happen. | ||
260 | */ | ||
261 | static int | ||
262 | apm_ioctl(struct inode * inode, struct file *filp, unsigned int cmd, unsigned long arg) | ||
263 | { | ||
264 | struct apm_user *as = filp->private_data; | ||
265 | unsigned long flags; | ||
266 | int err = -EINVAL; | ||
267 | |||
268 | if (!as->suser || !as->writer) | ||
269 | return -EPERM; | ||
270 | |||
271 | switch (cmd) { | ||
272 | case APM_IOC_SUSPEND: | ||
273 | as->suspend_result = -EINTR; | ||
274 | |||
275 | if (as->suspend_state == SUSPEND_READ) { | ||
276 | /* | ||
277 | * If we read a suspend command from /dev/apm_bios, | ||
278 | * then the corresponding APM_IOC_SUSPEND ioctl is | ||
279 | * interpreted as an acknowledge. | ||
280 | */ | ||
281 | as->suspend_state = SUSPEND_ACKED; | ||
282 | suspends_pending--; | ||
283 | } else { | ||
284 | /* | ||
285 | * Otherwise it is a request to suspend the system. | ||
286 | * Queue an event for all readers, and expect an | ||
287 | * acknowledge from all writers who haven't already | ||
288 | * acknowledged. | ||
289 | */ | ||
290 | queue_event(APM_USER_SUSPEND, as); | ||
291 | } | ||
292 | |||
293 | /* | ||
294 | * If there are no further acknowledges required, suspend | ||
295 | * the system. | ||
296 | */ | ||
297 | if (suspends_pending == 0) | ||
298 | apm_suspend(); | ||
299 | |||
300 | /* | ||
301 | * Wait for the suspend/resume to complete. If there are | ||
302 | * pending acknowledges, we wait here for them. | ||
303 | * | ||
304 | * Note that we need to ensure that the PM subsystem does | ||
305 | * not kick us out of the wait when it suspends the threads. | ||
306 | */ | ||
307 | flags = current->flags; | ||
308 | current->flags |= PF_NOFREEZE; | ||
309 | |||
310 | /* | ||
311 | * Note: do not allow a thread which is acking the suspend | ||
312 | * to escape until the resume is complete. | ||
313 | */ | ||
314 | if (as->suspend_state == SUSPEND_ACKED) | ||
315 | wait_event(apm_suspend_waitqueue, | ||
316 | as->suspend_state == SUSPEND_DONE); | ||
317 | else | ||
318 | wait_event_interruptible(apm_suspend_waitqueue, | ||
319 | as->suspend_state == SUSPEND_DONE); | ||
320 | |||
321 | current->flags = flags; | ||
322 | err = as->suspend_result; | ||
323 | as->suspend_state = SUSPEND_NONE; | ||
324 | break; | ||
325 | } | ||
326 | |||
327 | return err; | ||
328 | } | ||
329 | |||
330 | static int apm_release(struct inode * inode, struct file * filp) | ||
331 | { | ||
332 | struct apm_user *as = filp->private_data; | ||
333 | filp->private_data = NULL; | ||
334 | |||
335 | down_write(&user_list_lock); | ||
336 | list_del(&as->list); | ||
337 | up_write(&user_list_lock); | ||
338 | |||
339 | /* | ||
340 | * We are now unhooked from the chain. As far as new | ||
341 | * events are concerned, we no longer exist. However, we | ||
342 | * need to balance suspends_pending, which means the | ||
343 | * possibility of sleeping. | ||
344 | */ | ||
345 | if (as->suspend_state != SUSPEND_NONE) { | ||
346 | suspends_pending -= 1; | ||
347 | if (suspends_pending == 0) | ||
348 | apm_suspend(); | ||
349 | } | ||
350 | |||
351 | kfree(as); | ||
352 | return 0; | ||
353 | } | ||
354 | |||
355 | static int apm_open(struct inode * inode, struct file * filp) | ||
356 | { | ||
357 | struct apm_user *as; | ||
358 | |||
359 | as = kzalloc(sizeof(*as), GFP_KERNEL); | ||
360 | if (as) { | ||
361 | /* | ||
362 | * XXX - this is a tiny bit broken, when we consider BSD | ||
363 | * process accounting. If the device is opened by root, we | ||
364 | * instantly flag that we used superuser privs. Who knows, | ||
365 | * we might close the device immediately without doing a | ||
366 | * privileged operation -- cevans | ||
367 | */ | ||
368 | as->suser = capable(CAP_SYS_ADMIN); | ||
369 | as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE; | ||
370 | as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ; | ||
371 | |||
372 | down_write(&user_list_lock); | ||
373 | list_add(&as->list, &apm_user_list); | ||
374 | up_write(&user_list_lock); | ||
375 | |||
376 | filp->private_data = as; | ||
377 | } | ||
378 | |||
379 | return as ? 0 : -ENOMEM; | ||
380 | } | ||
381 | |||
382 | static struct file_operations apm_bios_fops = { | ||
383 | .owner = THIS_MODULE, | ||
384 | .read = apm_read, | ||
385 | .poll = apm_poll, | ||
386 | .ioctl = apm_ioctl, | ||
387 | .open = apm_open, | ||
388 | .release = apm_release, | ||
389 | }; | ||
390 | |||
391 | static struct miscdevice apm_device = { | ||
392 | .minor = APM_MINOR_DEV, | ||
393 | .name = "apm_bios", | ||
394 | .fops = &apm_bios_fops | ||
395 | }; | ||
396 | |||
397 | |||
398 | #ifdef CONFIG_PROC_FS | ||
399 | /* | ||
400 | * Arguments, with symbols from linux/apm_bios.h. | ||
401 | * | ||
402 | * 0) Linux driver version (this will change if format changes) | ||
403 | * 1) APM BIOS Version. Usually 1.0, 1.1 or 1.2. | ||
404 | * 2) APM flags from APM Installation Check (0x00): | ||
405 | * bit 0: APM_16_BIT_SUPPORT | ||
406 | * bit 1: APM_32_BIT_SUPPORT | ||
407 | * bit 2: APM_IDLE_SLOWS_CLOCK | ||
408 | * bit 3: APM_BIOS_DISABLED | ||
409 | * bit 4: APM_BIOS_DISENGAGED | ||
410 | * 3) AC line status | ||
411 | * 0x00: Off-line | ||
412 | * 0x01: On-line | ||
413 | * 0x02: On backup power (BIOS >= 1.1 only) | ||
414 | * 0xff: Unknown | ||
415 | * 4) Battery status | ||
416 | * 0x00: High | ||
417 | * 0x01: Low | ||
418 | * 0x02: Critical | ||
419 | * 0x03: Charging | ||
420 | * 0x04: Selected battery not present (BIOS >= 1.2 only) | ||
421 | * 0xff: Unknown | ||
422 | * 5) Battery flag | ||
423 | * bit 0: High | ||
424 | * bit 1: Low | ||
425 | * bit 2: Critical | ||
426 | * bit 3: Charging | ||
427 | * bit 7: No system battery | ||
428 | * 0xff: Unknown | ||
429 | * 6) Remaining battery life (percentage of charge): | ||
430 | * 0-100: valid | ||
431 | * -1: Unknown | ||
432 | * 7) Remaining battery life (time units): | ||
433 | * Number of remaining minutes or seconds | ||
434 | * -1: Unknown | ||
435 | * 8) min = minutes; sec = seconds | ||
436 | */ | ||
437 | static int apm_get_info(char *buf, char **start, off_t fpos, int length) | ||
438 | { | ||
439 | struct apm_power_info info; | ||
440 | char *units; | ||
441 | int ret; | ||
442 | |||
443 | info.ac_line_status = 0xff; | ||
444 | info.battery_status = 0xff; | ||
445 | info.battery_flag = 0xff; | ||
446 | info.battery_life = -1; | ||
447 | info.time = -1; | ||
448 | info.units = -1; | ||
449 | |||
450 | if (apm_get_power_status) | ||
451 | apm_get_power_status(&info); | ||
452 | |||
453 | switch (info.units) { | ||
454 | default: units = "?"; break; | ||
455 | case 0: units = "min"; break; | ||
456 | case 1: units = "sec"; break; | ||
457 | } | ||
458 | |||
459 | ret = sprintf(buf, "%s 1.2 0x%02x 0x%02x 0x%02x 0x%02x %d%% %d %s\n", | ||
460 | driver_version, APM_32_BIT_SUPPORT, | ||
461 | info.ac_line_status, info.battery_status, | ||
462 | info.battery_flag, info.battery_life, | ||
463 | info.time, units); | ||
464 | |||
465 | return ret; | ||
466 | } | ||
467 | #endif | ||
468 | |||
469 | static int kapmd(void *arg) | ||
470 | { | ||
471 | daemonize("kapmd"); | ||
472 | current->flags |= PF_NOFREEZE; | ||
473 | |||
474 | do { | ||
475 | apm_event_t event; | ||
476 | |||
477 | wait_event_interruptible(kapmd_wait, | ||
478 | !queue_empty(&kapmd_queue) || !mips_apm_active); | ||
479 | |||
480 | if (!mips_apm_active) | ||
481 | break; | ||
482 | |||
483 | spin_lock_irq(&kapmd_queue_lock); | ||
484 | event = 0; | ||
485 | if (!queue_empty(&kapmd_queue)) | ||
486 | event = queue_get_event(&kapmd_queue); | ||
487 | spin_unlock_irq(&kapmd_queue_lock); | ||
488 | |||
489 | switch (event) { | ||
490 | case 0: | ||
491 | break; | ||
492 | |||
493 | case APM_LOW_BATTERY: | ||
494 | case APM_POWER_STATUS_CHANGE: | ||
495 | queue_event(event, NULL); | ||
496 | break; | ||
497 | |||
498 | case APM_USER_SUSPEND: | ||
499 | case APM_SYS_SUSPEND: | ||
500 | queue_event(event, NULL); | ||
501 | if (suspends_pending == 0) | ||
502 | apm_suspend(); | ||
503 | break; | ||
504 | |||
505 | case APM_CRITICAL_SUSPEND: | ||
506 | apm_suspend(); | ||
507 | break; | ||
508 | } | ||
509 | } while (1); | ||
510 | |||
511 | complete_and_exit(&kapmd_exit, 0); | ||
512 | } | ||
513 | |||
514 | static int __init apm_init(void) | ||
515 | { | ||
516 | int ret; | ||
517 | |||
518 | if (apm_disabled) { | ||
519 | printk(KERN_NOTICE "apm: disabled on user request.\n"); | ||
520 | return -ENODEV; | ||
521 | } | ||
522 | |||
523 | mips_apm_active = 1; | ||
524 | |||
525 | ret = kernel_thread(kapmd, NULL, CLONE_KERNEL); | ||
526 | if (ret < 0) { | ||
527 | mips_apm_active = 0; | ||
528 | return ret; | ||
529 | } | ||
530 | |||
531 | #ifdef CONFIG_PROC_FS | ||
532 | create_proc_info_entry("apm", 0, NULL, apm_get_info); | ||
533 | #endif | ||
534 | |||
535 | ret = misc_register(&apm_device); | ||
536 | if (ret != 0) { | ||
537 | remove_proc_entry("apm", NULL); | ||
538 | |||
539 | mips_apm_active = 0; | ||
540 | wake_up(&kapmd_wait); | ||
541 | wait_for_completion(&kapmd_exit); | ||
542 | } | ||
543 | |||
544 | return ret; | ||
545 | } | ||
546 | |||
547 | static void __exit apm_exit(void) | ||
548 | { | ||
549 | misc_deregister(&apm_device); | ||
550 | remove_proc_entry("apm", NULL); | ||
551 | |||
552 | mips_apm_active = 0; | ||
553 | wake_up(&kapmd_wait); | ||
554 | wait_for_completion(&kapmd_exit); | ||
555 | } | ||
556 | |||
557 | module_init(apm_init); | ||
558 | module_exit(apm_exit); | ||
559 | |||
560 | MODULE_AUTHOR("Stephen Rothwell"); | ||
561 | MODULE_DESCRIPTION("Advanced Power Management"); | ||
562 | MODULE_LICENSE("GPL"); | ||
563 | |||
564 | #ifndef MODULE | ||
565 | static int __init apm_setup(char *str) | ||
566 | { | ||
567 | while ((str != NULL) && (*str != '\0')) { | ||
568 | if (strncmp(str, "off", 3) == 0) | ||
569 | apm_disabled = 1; | ||
570 | if (strncmp(str, "on", 2) == 0) | ||
571 | apm_disabled = 0; | ||
572 | str = strchr(str, ','); | ||
573 | if (str != NULL) | ||
574 | str += strspn(str, ", \t"); | ||
575 | } | ||
576 | return 1; | ||
577 | } | ||
578 | |||
579 | __setup("apm=", apm_setup); | ||
580 | #endif | ||
581 | |||
582 | /** | ||
583 | * apm_queue_event - queue an APM event for kapmd | ||
584 | * @event: APM event | ||
585 | * | ||
586 | * Queue an APM event for kapmd to process and ultimately take the | ||
587 | * appropriate action. Only a subset of events are handled: | ||
588 | * %APM_LOW_BATTERY | ||
589 | * %APM_POWER_STATUS_CHANGE | ||
590 | * %APM_USER_SUSPEND | ||
591 | * %APM_SYS_SUSPEND | ||
592 | * %APM_CRITICAL_SUSPEND | ||
593 | */ | ||
594 | void apm_queue_event(apm_event_t event) | ||
595 | { | ||
596 | unsigned long flags; | ||
597 | |||
598 | spin_lock_irqsave(&kapmd_queue_lock, flags); | ||
599 | queue_add_event(&kapmd_queue, event); | ||
600 | spin_unlock_irqrestore(&kapmd_queue_lock, flags); | ||
601 | |||
602 | wake_up_interruptible(&kapmd_wait); | ||
603 | } | ||
604 | EXPORT_SYMBOL(apm_queue_event); | ||
diff --git a/arch/mips/kernel/asm-offsets.c b/arch/mips/kernel/asm-offsets.c index ea7df4b8da33..c0b089d47181 100644 --- a/arch/mips/kernel/asm-offsets.c +++ b/arch/mips/kernel/asm-offsets.c | |||
@@ -249,7 +249,6 @@ void output_sc_defines(void) | |||
249 | offset("#define SC_MDHI ", struct sigcontext, sc_mdhi); | 249 | offset("#define SC_MDHI ", struct sigcontext, sc_mdhi); |
250 | offset("#define SC_MDLO ", struct sigcontext, sc_mdlo); | 250 | offset("#define SC_MDLO ", struct sigcontext, sc_mdlo); |
251 | offset("#define SC_PC ", struct sigcontext, sc_pc); | 251 | offset("#define SC_PC ", struct sigcontext, sc_pc); |
252 | offset("#define SC_STATUS ", struct sigcontext, sc_status); | ||
253 | offset("#define SC_FPC_CSR ", struct sigcontext, sc_fpc_csr); | 252 | offset("#define SC_FPC_CSR ", struct sigcontext, sc_fpc_csr); |
254 | offset("#define SC_FPC_EIR ", struct sigcontext, sc_fpc_eir); | 253 | offset("#define SC_FPC_EIR ", struct sigcontext, sc_fpc_eir); |
255 | offset("#define SC_HI1 ", struct sigcontext, sc_hi1); | 254 | offset("#define SC_HI1 ", struct sigcontext, sc_hi1); |
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c index 0b8ce59429a8..ca7ad78f4def 100644 --- a/arch/mips/kernel/linux32.c +++ b/arch/mips/kernel/linux32.c | |||
@@ -193,50 +193,6 @@ sysn32_waitid(int which, compat_pid_t pid, | |||
193 | return ret; | 193 | return ret; |
194 | } | 194 | } |
195 | 195 | ||
196 | struct sysinfo32 { | ||
197 | s32 uptime; | ||
198 | u32 loads[3]; | ||
199 | u32 totalram; | ||
200 | u32 freeram; | ||
201 | u32 sharedram; | ||
202 | u32 bufferram; | ||
203 | u32 totalswap; | ||
204 | u32 freeswap; | ||
205 | u16 procs; | ||
206 | u32 totalhigh; | ||
207 | u32 freehigh; | ||
208 | u32 mem_unit; | ||
209 | char _f[8]; | ||
210 | }; | ||
211 | |||
212 | asmlinkage int sys32_sysinfo(struct sysinfo32 __user *info) | ||
213 | { | ||
214 | struct sysinfo s; | ||
215 | int ret, err; | ||
216 | mm_segment_t old_fs = get_fs (); | ||
217 | |||
218 | set_fs (KERNEL_DS); | ||
219 | ret = sys_sysinfo((struct sysinfo __user *)&s); | ||
220 | set_fs (old_fs); | ||
221 | err = put_user (s.uptime, &info->uptime); | ||
222 | err |= __put_user (s.loads[0], &info->loads[0]); | ||
223 | err |= __put_user (s.loads[1], &info->loads[1]); | ||
224 | err |= __put_user (s.loads[2], &info->loads[2]); | ||
225 | err |= __put_user (s.totalram, &info->totalram); | ||
226 | err |= __put_user (s.freeram, &info->freeram); | ||
227 | err |= __put_user (s.sharedram, &info->sharedram); | ||
228 | err |= __put_user (s.bufferram, &info->bufferram); | ||
229 | err |= __put_user (s.totalswap, &info->totalswap); | ||
230 | err |= __put_user (s.freeswap, &info->freeswap); | ||
231 | err |= __put_user (s.procs, &info->procs); | ||
232 | err |= __put_user (s.totalhigh, &info->totalhigh); | ||
233 | err |= __put_user (s.freehigh, &info->freehigh); | ||
234 | err |= __put_user (s.mem_unit, &info->mem_unit); | ||
235 | if (err) | ||
236 | return -EFAULT; | ||
237 | return ret; | ||
238 | } | ||
239 | |||
240 | #define RLIM_INFINITY32 0x7fffffff | 196 | #define RLIM_INFINITY32 0x7fffffff |
241 | #define RESOURCE32(x) ((x > RLIM_INFINITY32) ? RLIM_INFINITY32 : x) | 197 | #define RESOURCE32(x) ((x > RLIM_INFINITY32) ? RLIM_INFINITY32 : x) |
242 | 198 | ||
diff --git a/arch/mips/kernel/mips-mt.c b/arch/mips/kernel/mips-mt.c index a32f6797353a..ba01800b6018 100644 --- a/arch/mips/kernel/mips-mt.c +++ b/arch/mips/kernel/mips-mt.c | |||
@@ -3,9 +3,11 @@ | |||
3 | * Copyright (C) 2005 Mips Technologies, Inc | 3 | * Copyright (C) 2005 Mips Technologies, Inc |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include <linux/device.h> | ||
6 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
7 | #include <linux/sched.h> | 8 | #include <linux/sched.h> |
8 | #include <linux/cpumask.h> | 9 | #include <linux/cpumask.h> |
10 | #include <linux/module.h> | ||
9 | #include <linux/interrupt.h> | 11 | #include <linux/interrupt.h> |
10 | #include <linux/security.h> | 12 | #include <linux/security.h> |
11 | 13 | ||
@@ -453,3 +455,20 @@ void mt_cflush_release(void) | |||
453 | #endif /* CONFIG_MIPS_MT_SMTC */ | 455 | #endif /* CONFIG_MIPS_MT_SMTC */ |
454 | /* FILL IN VSMP and AP/SP VERSIONS HERE */ | 456 | /* FILL IN VSMP and AP/SP VERSIONS HERE */ |
455 | } | 457 | } |
458 | |||
459 | struct class *mt_class; | ||
460 | |||
461 | static int __init mt_init(void) | ||
462 | { | ||
463 | struct class *mtc; | ||
464 | |||
465 | mtc = class_create(THIS_MODULE, "mt"); | ||
466 | if (IS_ERR(mtc)) | ||
467 | return PTR_ERR(mtc); | ||
468 | |||
469 | mt_class = mtc; | ||
470 | |||
471 | return 0; | ||
472 | } | ||
473 | |||
474 | subsys_initcall(mt_init); | ||
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c index 8610f4a925e9..d92c48e0d7a6 100644 --- a/arch/mips/kernel/rtlx.c +++ b/arch/mips/kernel/rtlx.c | |||
@@ -17,6 +17,7 @@ | |||
17 | * | 17 | * |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/device.h> | ||
20 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
21 | #include <linux/module.h> | 22 | #include <linux/module.h> |
22 | #include <linux/fs.h> | 23 | #include <linux/fs.h> |
@@ -34,6 +35,7 @@ | |||
34 | #include <linux/sched.h> | 35 | #include <linux/sched.h> |
35 | #include <linux/wait.h> | 36 | #include <linux/wait.h> |
36 | #include <asm/mipsmtregs.h> | 37 | #include <asm/mipsmtregs.h> |
38 | #include <asm/mips_mt.h> | ||
37 | #include <asm/cacheflush.h> | 39 | #include <asm/cacheflush.h> |
38 | #include <asm/atomic.h> | 40 | #include <asm/atomic.h> |
39 | #include <asm/cpu.h> | 41 | #include <asm/cpu.h> |
@@ -476,7 +478,7 @@ static ssize_t file_write(struct file *file, const char __user * buffer, | |||
476 | return rtlx_write(minor, (void *)buffer, count, 1); | 478 | return rtlx_write(minor, (void *)buffer, count, 1); |
477 | } | 479 | } |
478 | 480 | ||
479 | static struct file_operations rtlx_fops = { | 481 | static const struct file_operations rtlx_fops = { |
480 | .owner = THIS_MODULE, | 482 | .owner = THIS_MODULE, |
481 | .open = file_open, | 483 | .open = file_open, |
482 | .release = file_release, | 484 | .release = file_release, |
@@ -498,7 +500,8 @@ static char register_chrdev_failed[] __initdata = | |||
498 | 500 | ||
499 | static int rtlx_module_init(void) | 501 | static int rtlx_module_init(void) |
500 | { | 502 | { |
501 | int i; | 503 | struct device *dev; |
504 | int i, err; | ||
502 | 505 | ||
503 | major = register_chrdev(0, module_name, &rtlx_fops); | 506 | major = register_chrdev(0, module_name, &rtlx_fops); |
504 | if (major < 0) { | 507 | if (major < 0) { |
@@ -511,6 +514,13 @@ static int rtlx_module_init(void) | |||
511 | init_waitqueue_head(&channel_wqs[i].rt_queue); | 514 | init_waitqueue_head(&channel_wqs[i].rt_queue); |
512 | init_waitqueue_head(&channel_wqs[i].lx_queue); | 515 | init_waitqueue_head(&channel_wqs[i].lx_queue); |
513 | channel_wqs[i].in_open = 0; | 516 | channel_wqs[i].in_open = 0; |
517 | |||
518 | dev = device_create(mt_class, NULL, MKDEV(major, i), | ||
519 | "%s%d", module_name, i); | ||
520 | if (IS_ERR(dev)) { | ||
521 | err = PTR_ERR(dev); | ||
522 | goto out_chrdev; | ||
523 | } | ||
514 | } | 524 | } |
515 | 525 | ||
516 | /* set up notifiers */ | 526 | /* set up notifiers */ |
@@ -525,10 +535,21 @@ static int rtlx_module_init(void) | |||
525 | setup_irq(rtlx_irq_num, &rtlx_irq); | 535 | setup_irq(rtlx_irq_num, &rtlx_irq); |
526 | 536 | ||
527 | return 0; | 537 | return 0; |
538 | |||
539 | out_chrdev: | ||
540 | for (i = 0; i < RTLX_CHANNELS; i++) | ||
541 | device_destroy(mt_class, MKDEV(major, i)); | ||
542 | |||
543 | return err; | ||
528 | } | 544 | } |
529 | 545 | ||
530 | static void __exit rtlx_module_exit(void) | 546 | static void __exit rtlx_module_exit(void) |
531 | { | 547 | { |
548 | int i; | ||
549 | |||
550 | for (i = 0; i < RTLX_CHANNELS; i++) | ||
551 | device_destroy(mt_class, MKDEV(major, i)); | ||
552 | |||
532 | unregister_chrdev(major, module_name); | 553 | unregister_chrdev(major, module_name); |
533 | } | 554 | } |
534 | 555 | ||
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S index 39add2341aa2..ee8802b59758 100644 --- a/arch/mips/kernel/scall64-n32.S +++ b/arch/mips/kernel/scall64-n32.S | |||
@@ -217,7 +217,7 @@ EXPORT(sysn32_call_table) | |||
217 | PTR sys32_gettimeofday | 217 | PTR sys32_gettimeofday |
218 | PTR compat_sys_getrlimit /* 6095 */ | 218 | PTR compat_sys_getrlimit /* 6095 */ |
219 | PTR compat_sys_getrusage | 219 | PTR compat_sys_getrusage |
220 | PTR sys32_sysinfo | 220 | PTR compat_sys_sysinfo |
221 | PTR compat_sys_times | 221 | PTR compat_sys_times |
222 | PTR sys32_ptrace | 222 | PTR sys32_ptrace |
223 | PTR sys_getuid /* 6100 */ | 223 | PTR sys_getuid /* 6100 */ |
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index c58b8e0105ea..c5f590ca99b0 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S | |||
@@ -321,7 +321,7 @@ sys_call_table: | |||
321 | PTR sys_ni_syscall /* sys_vm86 */ | 321 | PTR sys_ni_syscall /* sys_vm86 */ |
322 | PTR compat_sys_wait4 | 322 | PTR compat_sys_wait4 |
323 | PTR sys_swapoff /* 4115 */ | 323 | PTR sys_swapoff /* 4115 */ |
324 | PTR sys32_sysinfo | 324 | PTR compat_sys_sysinfo |
325 | PTR sys32_ipc | 325 | PTR sys32_ipc |
326 | PTR sys_fsync | 326 | PTR sys_fsync |
327 | PTR sys32_sigreturn | 327 | PTR sys32_sigreturn |
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index d2e01e7167b8..394540fad769 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c | |||
@@ -452,7 +452,7 @@ static void __init arch_mem_init(char **cmdline_p) | |||
452 | print_memory_map(); | 452 | print_memory_map(); |
453 | 453 | ||
454 | strlcpy(command_line, arcs_cmdline, sizeof(command_line)); | 454 | strlcpy(command_line, arcs_cmdline, sizeof(command_line)); |
455 | strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); | 455 | strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); |
456 | 456 | ||
457 | *cmdline_p = command_line; | 457 | *cmdline_p = command_line; |
458 | 458 | ||
diff --git a/arch/mips/kernel/signal-common.h b/arch/mips/kernel/signal-common.h index b1f09d54ebe6..9a8abd67ec5c 100644 --- a/arch/mips/kernel/signal-common.h +++ b/arch/mips/kernel/signal-common.h | |||
@@ -8,169 +8,57 @@ | |||
8 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. | 8 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #ifndef __SIGNAL_COMMON_H | ||
12 | #define __SIGNAL_COMMON_H | ||
11 | 13 | ||
12 | static inline int | 14 | /* #define DEBUG_SIG */ |
13 | setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) | ||
14 | { | ||
15 | int err = 0; | ||
16 | 15 | ||
17 | err |= __put_user(regs->cp0_epc, &sc->sc_pc); | 16 | #ifdef DEBUG_SIG |
17 | # define DEBUGP(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ##args) | ||
18 | #else | ||
19 | # define DEBUGP(fmt, args...) | ||
20 | #endif | ||
18 | 21 | ||
19 | #define save_gp_reg(i) do { \ | 22 | /* |
20 | err |= __put_user(regs->regs[i], &sc->sc_regs[i]); \ | 23 | * Horribly complicated - with the bloody RM9000 workarounds enabled |
21 | } while(0) | 24 | * the signal trampolines is moving to the end of the structure so we can |
22 | __put_user(0, &sc->sc_regs[0]); save_gp_reg(1); save_gp_reg(2); | 25 | * increase the alignment without breaking software compatibility. |
23 | save_gp_reg(3); save_gp_reg(4); save_gp_reg(5); save_gp_reg(6); | 26 | */ |
24 | save_gp_reg(7); save_gp_reg(8); save_gp_reg(9); save_gp_reg(10); | 27 | #if ICACHE_REFILLS_WORKAROUND_WAR == 0 |
25 | save_gp_reg(11); save_gp_reg(12); save_gp_reg(13); save_gp_reg(14); | ||
26 | save_gp_reg(15); save_gp_reg(16); save_gp_reg(17); save_gp_reg(18); | ||
27 | save_gp_reg(19); save_gp_reg(20); save_gp_reg(21); save_gp_reg(22); | ||
28 | save_gp_reg(23); save_gp_reg(24); save_gp_reg(25); save_gp_reg(26); | ||
29 | save_gp_reg(27); save_gp_reg(28); save_gp_reg(29); save_gp_reg(30); | ||
30 | save_gp_reg(31); | ||
31 | #undef save_gp_reg | ||
32 | |||
33 | err |= __put_user(regs->hi, &sc->sc_mdhi); | ||
34 | err |= __put_user(regs->lo, &sc->sc_mdlo); | ||
35 | if (cpu_has_dsp) { | ||
36 | err |= __put_user(mfhi1(), &sc->sc_hi1); | ||
37 | err |= __put_user(mflo1(), &sc->sc_lo1); | ||
38 | err |= __put_user(mfhi2(), &sc->sc_hi2); | ||
39 | err |= __put_user(mflo2(), &sc->sc_lo2); | ||
40 | err |= __put_user(mfhi3(), &sc->sc_hi3); | ||
41 | err |= __put_user(mflo3(), &sc->sc_lo3); | ||
42 | err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); | ||
43 | } | ||
44 | |||
45 | err |= __put_user(!!used_math(), &sc->sc_used_math); | ||
46 | |||
47 | if (!used_math()) | ||
48 | goto out; | ||
49 | |||
50 | /* | ||
51 | * Save FPU state to signal context. Signal handler will "inherit" | ||
52 | * current FPU state. | ||
53 | */ | ||
54 | preempt_disable(); | ||
55 | |||
56 | if (!is_fpu_owner()) { | ||
57 | own_fpu(); | ||
58 | restore_fp(current); | ||
59 | } | ||
60 | err |= save_fp_context(sc); | ||
61 | |||
62 | preempt_enable(); | ||
63 | |||
64 | out: | ||
65 | return err; | ||
66 | } | ||
67 | |||
68 | static inline int | ||
69 | restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) | ||
70 | { | ||
71 | unsigned int used_math; | ||
72 | unsigned long treg; | ||
73 | int err = 0; | ||
74 | |||
75 | /* Always make any pending restarted system calls return -EINTR */ | ||
76 | current_thread_info()->restart_block.fn = do_no_restart_syscall; | ||
77 | |||
78 | err |= __get_user(regs->cp0_epc, &sc->sc_pc); | ||
79 | err |= __get_user(regs->hi, &sc->sc_mdhi); | ||
80 | err |= __get_user(regs->lo, &sc->sc_mdlo); | ||
81 | if (cpu_has_dsp) { | ||
82 | err |= __get_user(treg, &sc->sc_hi1); mthi1(treg); | ||
83 | err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg); | ||
84 | err |= __get_user(treg, &sc->sc_hi2); mthi2(treg); | ||
85 | err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg); | ||
86 | err |= __get_user(treg, &sc->sc_hi3); mthi3(treg); | ||
87 | err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg); | ||
88 | err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK); | ||
89 | } | ||
90 | |||
91 | #define restore_gp_reg(i) do { \ | ||
92 | err |= __get_user(regs->regs[i], &sc->sc_regs[i]); \ | ||
93 | } while(0) | ||
94 | restore_gp_reg( 1); restore_gp_reg( 2); restore_gp_reg( 3); | ||
95 | restore_gp_reg( 4); restore_gp_reg( 5); restore_gp_reg( 6); | ||
96 | restore_gp_reg( 7); restore_gp_reg( 8); restore_gp_reg( 9); | ||
97 | restore_gp_reg(10); restore_gp_reg(11); restore_gp_reg(12); | ||
98 | restore_gp_reg(13); restore_gp_reg(14); restore_gp_reg(15); | ||
99 | restore_gp_reg(16); restore_gp_reg(17); restore_gp_reg(18); | ||
100 | restore_gp_reg(19); restore_gp_reg(20); restore_gp_reg(21); | ||
101 | restore_gp_reg(22); restore_gp_reg(23); restore_gp_reg(24); | ||
102 | restore_gp_reg(25); restore_gp_reg(26); restore_gp_reg(27); | ||
103 | restore_gp_reg(28); restore_gp_reg(29); restore_gp_reg(30); | ||
104 | restore_gp_reg(31); | ||
105 | #undef restore_gp_reg | ||
106 | 28 | ||
107 | err |= __get_user(used_math, &sc->sc_used_math); | 29 | struct sigframe { |
108 | conditional_used_math(used_math); | 30 | u32 sf_ass[4]; /* argument save space for o32 */ |
31 | u32 sf_code[2]; /* signal trampoline */ | ||
32 | struct sigcontext sf_sc; | ||
33 | sigset_t sf_mask; | ||
34 | }; | ||
109 | 35 | ||
110 | preempt_disable(); | 36 | #else /* ICACHE_REFILLS_WORKAROUND_WAR */ |
111 | 37 | ||
112 | if (used_math()) { | 38 | struct sigframe { |
113 | /* restore fpu context if we have used it before */ | 39 | u32 sf_ass[4]; /* argument save space for o32 */ |
114 | own_fpu(); | 40 | u32 sf_pad[2]; |
115 | err |= restore_fp_context(sc); | 41 | struct sigcontext sf_sc; /* hw context */ |
116 | } else { | 42 | sigset_t sf_mask; |
117 | /* signal handler may have used FPU. Give it up. */ | 43 | u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */ |
118 | lose_fpu(); | 44 | }; |
119 | } | ||
120 | 45 | ||
121 | preempt_enable(); | 46 | #endif /* !ICACHE_REFILLS_WORKAROUND_WAR */ |
122 | 47 | ||
123 | return err; | 48 | /* |
124 | } | 49 | * handle hardware context |
50 | */ | ||
51 | extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *); | ||
52 | extern int restore_sigcontext(struct pt_regs *, struct sigcontext __user *); | ||
125 | 53 | ||
126 | /* | 54 | /* |
127 | * Determine which stack to use.. | 55 | * Determine which stack to use.. |
128 | */ | 56 | */ |
129 | static inline void __user * | 57 | extern void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, |
130 | get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size) | 58 | size_t frame_size); |
131 | { | 59 | /* |
132 | unsigned long sp; | 60 | * install trampoline code to get back from the sig handler |
133 | 61 | */ | |
134 | /* Default to using normal stack */ | 62 | extern int install_sigtramp(unsigned int __user *tramp, unsigned int syscall); |
135 | sp = regs->regs[29]; | ||
136 | |||
137 | /* | ||
138 | * FPU emulator may have it's own trampoline active just | ||
139 | * above the user stack, 16-bytes before the next lowest | ||
140 | * 16 byte boundary. Try to avoid trashing it. | ||
141 | */ | ||
142 | sp -= 32; | ||
143 | |||
144 | /* This is the X/Open sanctioned signal stack switching. */ | ||
145 | if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0)) | ||
146 | sp = current->sas_ss_sp + current->sas_ss_size; | ||
147 | |||
148 | return (void __user *)((sp - frame_size) & (ICACHE_REFILLS_WORKAROUND_WAR ? ~(cpu_icache_line_size()-1) : ALMASK)); | ||
149 | } | ||
150 | |||
151 | static inline int install_sigtramp(unsigned int __user *tramp, | ||
152 | unsigned int syscall) | ||
153 | { | ||
154 | int err; | ||
155 | |||
156 | /* | ||
157 | * Set up the return code ... | ||
158 | * | ||
159 | * li v0, __NR__foo_sigreturn | ||
160 | * syscall | ||
161 | */ | ||
162 | |||
163 | err = __put_user(0x24020000 + syscall, tramp + 0); | ||
164 | err |= __put_user(0x0000000c , tramp + 1); | ||
165 | if (ICACHE_REFILLS_WORKAROUND_WAR) { | ||
166 | err |= __put_user(0, tramp + 2); | ||
167 | err |= __put_user(0, tramp + 3); | ||
168 | err |= __put_user(0, tramp + 4); | ||
169 | err |= __put_user(0, tramp + 5); | ||
170 | err |= __put_user(0, tramp + 6); | ||
171 | err |= __put_user(0, tramp + 7); | ||
172 | } | ||
173 | flush_cache_sigtramp((unsigned long) tramp); | ||
174 | 63 | ||
175 | return err; | 64 | #endif /* __SIGNAL_COMMON_H */ |
176 | } | ||
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c index 9a44053cd9f1..54398af2371f 100644 --- a/arch/mips/kernel/signal.c +++ b/arch/mips/kernel/signal.c | |||
@@ -34,18 +34,174 @@ | |||
34 | 34 | ||
35 | #include "signal-common.h" | 35 | #include "signal-common.h" |
36 | 36 | ||
37 | #define DEBUG_SIG 0 | ||
38 | |||
39 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | 37 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) |
40 | 38 | ||
39 | #if ICACHE_REFILLS_WORKAROUND_WAR == 0 | ||
40 | |||
41 | struct rt_sigframe { | ||
42 | u32 rs_ass[4]; /* argument save space for o32 */ | ||
43 | u32 rs_code[2]; /* signal trampoline */ | ||
44 | struct siginfo rs_info; | ||
45 | struct ucontext rs_uc; | ||
46 | }; | ||
47 | |||
48 | #else | ||
49 | |||
50 | struct rt_sigframe { | ||
51 | u32 rs_ass[4]; /* argument save space for o32 */ | ||
52 | u32 rs_pad[2]; | ||
53 | struct siginfo rs_info; | ||
54 | struct ucontext rs_uc; | ||
55 | u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */ | ||
56 | }; | ||
57 | |||
58 | #endif | ||
59 | |||
60 | /* | ||
61 | * Helper routines | ||
62 | */ | ||
63 | int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) | ||
64 | { | ||
65 | int err = 0; | ||
66 | int i; | ||
67 | |||
68 | err |= __put_user(regs->cp0_epc, &sc->sc_pc); | ||
69 | |||
70 | err |= __put_user(0, &sc->sc_regs[0]); | ||
71 | for (i = 1; i < 32; i++) | ||
72 | err |= __put_user(regs->regs[i], &sc->sc_regs[i]); | ||
73 | |||
74 | err |= __put_user(regs->hi, &sc->sc_mdhi); | ||
75 | err |= __put_user(regs->lo, &sc->sc_mdlo); | ||
76 | if (cpu_has_dsp) { | ||
77 | err |= __put_user(mfhi1(), &sc->sc_hi1); | ||
78 | err |= __put_user(mflo1(), &sc->sc_lo1); | ||
79 | err |= __put_user(mfhi2(), &sc->sc_hi2); | ||
80 | err |= __put_user(mflo2(), &sc->sc_lo2); | ||
81 | err |= __put_user(mfhi3(), &sc->sc_hi3); | ||
82 | err |= __put_user(mflo3(), &sc->sc_lo3); | ||
83 | err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); | ||
84 | } | ||
85 | |||
86 | err |= __put_user(!!used_math(), &sc->sc_used_math); | ||
87 | |||
88 | if (used_math()) { | ||
89 | /* | ||
90 | * Save FPU state to signal context. Signal handler | ||
91 | * will "inherit" current FPU state. | ||
92 | */ | ||
93 | preempt_disable(); | ||
94 | |||
95 | if (!is_fpu_owner()) { | ||
96 | own_fpu(); | ||
97 | restore_fp(current); | ||
98 | } | ||
99 | err |= save_fp_context(sc); | ||
100 | |||
101 | preempt_enable(); | ||
102 | } | ||
103 | return err; | ||
104 | } | ||
105 | |||
106 | int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) | ||
107 | { | ||
108 | unsigned int used_math; | ||
109 | unsigned long treg; | ||
110 | int err = 0; | ||
111 | int i; | ||
112 | |||
113 | /* Always make any pending restarted system calls return -EINTR */ | ||
114 | current_thread_info()->restart_block.fn = do_no_restart_syscall; | ||
115 | |||
116 | err |= __get_user(regs->cp0_epc, &sc->sc_pc); | ||
117 | err |= __get_user(regs->hi, &sc->sc_mdhi); | ||
118 | err |= __get_user(regs->lo, &sc->sc_mdlo); | ||
119 | if (cpu_has_dsp) { | ||
120 | err |= __get_user(treg, &sc->sc_hi1); mthi1(treg); | ||
121 | err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg); | ||
122 | err |= __get_user(treg, &sc->sc_hi2); mthi2(treg); | ||
123 | err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg); | ||
124 | err |= __get_user(treg, &sc->sc_hi3); mthi3(treg); | ||
125 | err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg); | ||
126 | err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK); | ||
127 | } | ||
128 | |||
129 | for (i = 1; i < 32; i++) | ||
130 | err |= __get_user(regs->regs[i], &sc->sc_regs[i]); | ||
131 | |||
132 | err |= __get_user(used_math, &sc->sc_used_math); | ||
133 | conditional_used_math(used_math); | ||
134 | |||
135 | preempt_disable(); | ||
136 | |||
137 | if (used_math()) { | ||
138 | /* restore fpu context if we have used it before */ | ||
139 | own_fpu(); | ||
140 | err |= restore_fp_context(sc); | ||
141 | } else { | ||
142 | /* signal handler may have used FPU. Give it up. */ | ||
143 | lose_fpu(); | ||
144 | } | ||
145 | |||
146 | preempt_enable(); | ||
147 | |||
148 | return err; | ||
149 | } | ||
150 | |||
151 | void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, | ||
152 | size_t frame_size) | ||
153 | { | ||
154 | unsigned long sp; | ||
155 | |||
156 | /* Default to using normal stack */ | ||
157 | sp = regs->regs[29]; | ||
158 | |||
159 | /* | ||
160 | * FPU emulator may have it's own trampoline active just | ||
161 | * above the user stack, 16-bytes before the next lowest | ||
162 | * 16 byte boundary. Try to avoid trashing it. | ||
163 | */ | ||
164 | sp -= 32; | ||
165 | |||
166 | /* This is the X/Open sanctioned signal stack switching. */ | ||
167 | if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0)) | ||
168 | sp = current->sas_ss_sp + current->sas_ss_size; | ||
169 | |||
170 | return (void __user *)((sp - frame_size) & (ICACHE_REFILLS_WORKAROUND_WAR ? ~(cpu_icache_line_size()-1) : ALMASK)); | ||
171 | } | ||
172 | |||
173 | int install_sigtramp(unsigned int __user *tramp, unsigned int syscall) | ||
174 | { | ||
175 | int err; | ||
176 | |||
177 | /* | ||
178 | * Set up the return code ... | ||
179 | * | ||
180 | * li v0, __NR__foo_sigreturn | ||
181 | * syscall | ||
182 | */ | ||
183 | |||
184 | err = __put_user(0x24020000 + syscall, tramp + 0); | ||
185 | err |= __put_user(0x0000000c , tramp + 1); | ||
186 | if (ICACHE_REFILLS_WORKAROUND_WAR) { | ||
187 | err |= __put_user(0, tramp + 2); | ||
188 | err |= __put_user(0, tramp + 3); | ||
189 | err |= __put_user(0, tramp + 4); | ||
190 | err |= __put_user(0, tramp + 5); | ||
191 | err |= __put_user(0, tramp + 6); | ||
192 | err |= __put_user(0, tramp + 7); | ||
193 | } | ||
194 | flush_cache_sigtramp((unsigned long) tramp); | ||
195 | |||
196 | return err; | ||
197 | } | ||
198 | |||
41 | /* | 199 | /* |
42 | * Atomically swap in the new signal mask, and wait for a signal. | 200 | * Atomically swap in the new signal mask, and wait for a signal. |
43 | */ | 201 | */ |
44 | 202 | ||
45 | #ifdef CONFIG_TRAD_SIGNALS | 203 | #ifdef CONFIG_TRAD_SIGNALS |
46 | save_static_function(sys_sigsuspend); | 204 | asmlinkage int sys_sigsuspend(nabi_no_regargs struct pt_regs regs) |
47 | __attribute_used__ noinline static int | ||
48 | _sys_sigsuspend(nabi_no_regargs struct pt_regs regs) | ||
49 | { | 205 | { |
50 | sigset_t newset; | 206 | sigset_t newset; |
51 | sigset_t __user *uset; | 207 | sigset_t __user *uset; |
@@ -68,9 +224,7 @@ _sys_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
68 | } | 224 | } |
69 | #endif | 225 | #endif |
70 | 226 | ||
71 | save_static_function(sys_rt_sigsuspend); | 227 | asmlinkage int sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) |
72 | __attribute_used__ noinline static int | ||
73 | _sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | ||
74 | { | 228 | { |
75 | sigset_t newset; | 229 | sigset_t newset; |
76 | sigset_t __user *unewset; | 230 | sigset_t __user *unewset; |
@@ -148,45 +302,8 @@ asmlinkage int sys_sigaltstack(nabi_no_regargs struct pt_regs regs) | |||
148 | return do_sigaltstack(uss, uoss, usp); | 302 | return do_sigaltstack(uss, uoss, usp); |
149 | } | 303 | } |
150 | 304 | ||
151 | /* | ||
152 | * Horribly complicated - with the bloody RM9000 workarounds enabled | ||
153 | * the signal trampolines is moving to the end of the structure so we can | ||
154 | * increase the alignment without breaking software compatibility. | ||
155 | */ | ||
156 | #ifdef CONFIG_TRAD_SIGNALS | 305 | #ifdef CONFIG_TRAD_SIGNALS |
157 | struct sigframe { | 306 | asmlinkage void sys_sigreturn(nabi_no_regargs struct pt_regs regs) |
158 | u32 sf_ass[4]; /* argument save space for o32 */ | ||
159 | #if ICACHE_REFILLS_WORKAROUND_WAR | ||
160 | u32 sf_pad[2]; | ||
161 | #else | ||
162 | u32 sf_code[2]; /* signal trampoline */ | ||
163 | #endif | ||
164 | struct sigcontext sf_sc; | ||
165 | sigset_t sf_mask; | ||
166 | #if ICACHE_REFILLS_WORKAROUND_WAR | ||
167 | u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */ | ||
168 | #endif | ||
169 | }; | ||
170 | #endif | ||
171 | |||
172 | struct rt_sigframe { | ||
173 | u32 rs_ass[4]; /* argument save space for o32 */ | ||
174 | #if ICACHE_REFILLS_WORKAROUND_WAR | ||
175 | u32 rs_pad[2]; | ||
176 | #else | ||
177 | u32 rs_code[2]; /* signal trampoline */ | ||
178 | #endif | ||
179 | struct siginfo rs_info; | ||
180 | struct ucontext rs_uc; | ||
181 | #if ICACHE_REFILLS_WORKAROUND_WAR | ||
182 | u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */ | ||
183 | #endif | ||
184 | }; | ||
185 | |||
186 | #ifdef CONFIG_TRAD_SIGNALS | ||
187 | save_static_function(sys_sigreturn); | ||
188 | __attribute_used__ noinline static void | ||
189 | _sys_sigreturn(nabi_no_regargs struct pt_regs regs) | ||
190 | { | 307 | { |
191 | struct sigframe __user *frame; | 308 | struct sigframe __user *frame; |
192 | sigset_t blocked; | 309 | sigset_t blocked; |
@@ -221,9 +338,7 @@ badframe: | |||
221 | } | 338 | } |
222 | #endif /* CONFIG_TRAD_SIGNALS */ | 339 | #endif /* CONFIG_TRAD_SIGNALS */ |
223 | 340 | ||
224 | save_static_function(sys_rt_sigreturn); | 341 | asmlinkage void sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs) |
225 | __attribute_used__ noinline static void | ||
226 | _sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | ||
227 | { | 342 | { |
228 | struct rt_sigframe __user *frame; | 343 | struct rt_sigframe __user *frame; |
229 | sigset_t set; | 344 | sigset_t set; |
@@ -275,7 +390,7 @@ int setup_frame(struct k_sigaction * ka, struct pt_regs *regs, | |||
275 | if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) | 390 | if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) |
276 | goto give_sigsegv; | 391 | goto give_sigsegv; |
277 | 392 | ||
278 | install_sigtramp(frame->sf_code, __NR_sigreturn); | 393 | err |= install_sigtramp(frame->sf_code, __NR_sigreturn); |
279 | 394 | ||
280 | err |= setup_sigcontext(regs, &frame->sf_sc); | 395 | err |= setup_sigcontext(regs, &frame->sf_sc); |
281 | err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set)); | 396 | err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set)); |
@@ -299,11 +414,9 @@ int setup_frame(struct k_sigaction * ka, struct pt_regs *regs, | |||
299 | regs->regs[31] = (unsigned long) frame->sf_code; | 414 | regs->regs[31] = (unsigned long) frame->sf_code; |
300 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; | 415 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; |
301 | 416 | ||
302 | #if DEBUG_SIG | 417 | DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", |
303 | printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n", | ||
304 | current->comm, current->pid, | 418 | current->comm, current->pid, |
305 | frame, regs->cp0_epc, frame->regs[31]); | 419 | frame, regs->cp0_epc, regs->regs[31]); |
306 | #endif | ||
307 | return 0; | 420 | return 0; |
308 | 421 | ||
309 | give_sigsegv: | 422 | give_sigsegv: |
@@ -322,7 +435,7 @@ int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs, | |||
322 | if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) | 435 | if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) |
323 | goto give_sigsegv; | 436 | goto give_sigsegv; |
324 | 437 | ||
325 | install_sigtramp(frame->rs_code, __NR_rt_sigreturn); | 438 | err |= install_sigtramp(frame->rs_code, __NR_rt_sigreturn); |
326 | 439 | ||
327 | /* Create siginfo. */ | 440 | /* Create siginfo. */ |
328 | err |= copy_siginfo_to_user(&frame->rs_info, info); | 441 | err |= copy_siginfo_to_user(&frame->rs_info, info); |
@@ -359,11 +472,10 @@ int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs, | |||
359 | regs->regs[31] = (unsigned long) frame->rs_code; | 472 | regs->regs[31] = (unsigned long) frame->rs_code; |
360 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; | 473 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; |
361 | 474 | ||
362 | #if DEBUG_SIG | 475 | DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", |
363 | printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n", | ||
364 | current->comm, current->pid, | 476 | current->comm, current->pid, |
365 | frame, regs->cp0_epc, regs->regs[31]); | 477 | frame, regs->cp0_epc, regs->regs[31]); |
366 | #endif | 478 | |
367 | return 0; | 479 | return 0; |
368 | 480 | ||
369 | give_sigsegv: | 481 | give_sigsegv: |
@@ -371,7 +483,7 @@ give_sigsegv: | |||
371 | return -EFAULT; | 483 | return -EFAULT; |
372 | } | 484 | } |
373 | 485 | ||
374 | static inline int handle_signal(unsigned long sig, siginfo_t *info, | 486 | static int handle_signal(unsigned long sig, siginfo_t *info, |
375 | struct k_sigaction *ka, sigset_t *oldset, struct pt_regs *regs) | 487 | struct k_sigaction *ka, sigset_t *oldset, struct pt_regs *regs) |
376 | { | 488 | { |
377 | int ret; | 489 | int ret; |
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index c86a5ddff050..183fc7e55f34 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c | |||
@@ -33,6 +33,8 @@ | |||
33 | #include <asm/fpu.h> | 33 | #include <asm/fpu.h> |
34 | #include <asm/war.h> | 34 | #include <asm/war.h> |
35 | 35 | ||
36 | #include "signal-common.h" | ||
37 | |||
36 | #define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3) | 38 | #define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3) |
37 | 39 | ||
38 | typedef struct compat_siginfo { | 40 | typedef struct compat_siginfo { |
@@ -102,8 +104,6 @@ typedef struct compat_siginfo { | |||
102 | #define __NR_O32_rt_sigreturn 4193 | 104 | #define __NR_O32_rt_sigreturn 4193 |
103 | #define __NR_O32_restart_syscall 4253 | 105 | #define __NR_O32_restart_syscall 4253 |
104 | 106 | ||
105 | #define DEBUG_SIG 0 | ||
106 | |||
107 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | 107 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) |
108 | 108 | ||
109 | /* 32-bit compatibility types */ | 109 | /* 32-bit compatibility types */ |
@@ -139,6 +139,123 @@ struct ucontext32 { | |||
139 | sigset_t32 uc_sigmask; /* mask last for extensibility */ | 139 | sigset_t32 uc_sigmask; /* mask last for extensibility */ |
140 | }; | 140 | }; |
141 | 141 | ||
142 | #if ICACHE_REFILLS_WORKAROUND_WAR == 0 | ||
143 | |||
144 | struct rt_sigframe32 { | ||
145 | u32 rs_ass[4]; /* argument save space for o32 */ | ||
146 | u32 rs_code[2]; /* signal trampoline */ | ||
147 | compat_siginfo_t rs_info; | ||
148 | struct ucontext32 rs_uc; | ||
149 | }; | ||
150 | |||
151 | #else /* ICACHE_REFILLS_WORKAROUND_WAR */ | ||
152 | |||
153 | struct rt_sigframe32 { | ||
154 | u32 rs_ass[4]; /* argument save space for o32 */ | ||
155 | u32 rs_pad[2]; | ||
156 | compat_siginfo_t rs_info; | ||
157 | struct ucontext32 rs_uc; | ||
158 | u32 rs_code[8] __attribute__((aligned(32))); /* signal trampoline */ | ||
159 | }; | ||
160 | |||
161 | #endif /* !ICACHE_REFILLS_WORKAROUND_WAR */ | ||
162 | |||
163 | /* | ||
164 | * sigcontext handlers | ||
165 | */ | ||
166 | static int setup_sigcontext32(struct pt_regs *regs, | ||
167 | struct sigcontext32 __user *sc) | ||
168 | { | ||
169 | int err = 0; | ||
170 | int i; | ||
171 | |||
172 | err |= __put_user(regs->cp0_epc, &sc->sc_pc); | ||
173 | |||
174 | err |= __put_user(0, &sc->sc_regs[0]); | ||
175 | for (i = 1; i < 32; i++) | ||
176 | err |= __put_user(regs->regs[i], &sc->sc_regs[i]); | ||
177 | |||
178 | err |= __put_user(regs->hi, &sc->sc_mdhi); | ||
179 | err |= __put_user(regs->lo, &sc->sc_mdlo); | ||
180 | if (cpu_has_dsp) { | ||
181 | err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); | ||
182 | err |= __put_user(mfhi1(), &sc->sc_hi1); | ||
183 | err |= __put_user(mflo1(), &sc->sc_lo1); | ||
184 | err |= __put_user(mfhi2(), &sc->sc_hi2); | ||
185 | err |= __put_user(mflo2(), &sc->sc_lo2); | ||
186 | err |= __put_user(mfhi3(), &sc->sc_hi3); | ||
187 | err |= __put_user(mflo3(), &sc->sc_lo3); | ||
188 | } | ||
189 | |||
190 | err |= __put_user(!!used_math(), &sc->sc_used_math); | ||
191 | |||
192 | if (used_math()) { | ||
193 | /* | ||
194 | * Save FPU state to signal context. Signal handler | ||
195 | * will "inherit" current FPU state. | ||
196 | */ | ||
197 | preempt_disable(); | ||
198 | |||
199 | if (!is_fpu_owner()) { | ||
200 | own_fpu(); | ||
201 | restore_fp(current); | ||
202 | } | ||
203 | err |= save_fp_context32(sc); | ||
204 | |||
205 | preempt_enable(); | ||
206 | } | ||
207 | return err; | ||
208 | } | ||
209 | |||
210 | static int restore_sigcontext32(struct pt_regs *regs, | ||
211 | struct sigcontext32 __user *sc) | ||
212 | { | ||
213 | u32 used_math; | ||
214 | int err = 0; | ||
215 | s32 treg; | ||
216 | int i; | ||
217 | |||
218 | /* Always make any pending restarted system calls return -EINTR */ | ||
219 | current_thread_info()->restart_block.fn = do_no_restart_syscall; | ||
220 | |||
221 | err |= __get_user(regs->cp0_epc, &sc->sc_pc); | ||
222 | err |= __get_user(regs->hi, &sc->sc_mdhi); | ||
223 | err |= __get_user(regs->lo, &sc->sc_mdlo); | ||
224 | if (cpu_has_dsp) { | ||
225 | err |= __get_user(treg, &sc->sc_hi1); mthi1(treg); | ||
226 | err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg); | ||
227 | err |= __get_user(treg, &sc->sc_hi2); mthi2(treg); | ||
228 | err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg); | ||
229 | err |= __get_user(treg, &sc->sc_hi3); mthi3(treg); | ||
230 | err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg); | ||
231 | err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK); | ||
232 | } | ||
233 | |||
234 | for (i = 1; i < 32; i++) | ||
235 | err |= __get_user(regs->regs[i], &sc->sc_regs[i]); | ||
236 | |||
237 | err |= __get_user(used_math, &sc->sc_used_math); | ||
238 | conditional_used_math(used_math); | ||
239 | |||
240 | preempt_disable(); | ||
241 | |||
242 | if (used_math()) { | ||
243 | /* restore fpu context if we have used it before */ | ||
244 | own_fpu(); | ||
245 | err |= restore_fp_context32(sc); | ||
246 | } else { | ||
247 | /* signal handler may have used FPU. Give it up. */ | ||
248 | lose_fpu(); | ||
249 | } | ||
250 | |||
251 | preempt_enable(); | ||
252 | |||
253 | return err; | ||
254 | } | ||
255 | |||
256 | /* | ||
257 | * | ||
258 | */ | ||
142 | extern void __put_sigset_unknown_nsig(void); | 259 | extern void __put_sigset_unknown_nsig(void); |
143 | extern void __get_sigset_unknown_nsig(void); | 260 | extern void __get_sigset_unknown_nsig(void); |
144 | 261 | ||
@@ -191,9 +308,7 @@ static inline int get_sigset(sigset_t *kbuf, const compat_sigset_t __user *ubuf) | |||
191 | * Atomically swap in the new signal mask, and wait for a signal. | 308 | * Atomically swap in the new signal mask, and wait for a signal. |
192 | */ | 309 | */ |
193 | 310 | ||
194 | save_static_function(sys32_sigsuspend); | 311 | asmlinkage int sys32_sigsuspend(nabi_no_regargs struct pt_regs regs) |
195 | __attribute_used__ noinline static int | ||
196 | _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs) | ||
197 | { | 312 | { |
198 | compat_sigset_t __user *uset; | 313 | compat_sigset_t __user *uset; |
199 | sigset_t newset; | 314 | sigset_t newset; |
@@ -215,9 +330,7 @@ _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
215 | return -ERESTARTNOHAND; | 330 | return -ERESTARTNOHAND; |
216 | } | 331 | } |
217 | 332 | ||
218 | save_static_function(sys32_rt_sigsuspend); | 333 | asmlinkage int sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) |
219 | __attribute_used__ noinline static int | ||
220 | _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | ||
221 | { | 334 | { |
222 | compat_sigset_t __user *uset; | 335 | compat_sigset_t __user *uset; |
223 | sigset_t newset; | 336 | sigset_t newset; |
@@ -326,91 +439,6 @@ asmlinkage int sys32_sigaltstack(nabi_no_regargs struct pt_regs regs) | |||
326 | return ret; | 439 | return ret; |
327 | } | 440 | } |
328 | 441 | ||
329 | static int restore_sigcontext32(struct pt_regs *regs, struct sigcontext32 __user *sc) | ||
330 | { | ||
331 | u32 used_math; | ||
332 | int err = 0; | ||
333 | s32 treg; | ||
334 | |||
335 | /* Always make any pending restarted system calls return -EINTR */ | ||
336 | current_thread_info()->restart_block.fn = do_no_restart_syscall; | ||
337 | |||
338 | err |= __get_user(regs->cp0_epc, &sc->sc_pc); | ||
339 | err |= __get_user(regs->hi, &sc->sc_mdhi); | ||
340 | err |= __get_user(regs->lo, &sc->sc_mdlo); | ||
341 | if (cpu_has_dsp) { | ||
342 | err |= __get_user(treg, &sc->sc_hi1); mthi1(treg); | ||
343 | err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg); | ||
344 | err |= __get_user(treg, &sc->sc_hi2); mthi2(treg); | ||
345 | err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg); | ||
346 | err |= __get_user(treg, &sc->sc_hi3); mthi3(treg); | ||
347 | err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg); | ||
348 | err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK); | ||
349 | } | ||
350 | |||
351 | #define restore_gp_reg(i) do { \ | ||
352 | err |= __get_user(regs->regs[i], &sc->sc_regs[i]); \ | ||
353 | } while(0) | ||
354 | restore_gp_reg( 1); restore_gp_reg( 2); restore_gp_reg( 3); | ||
355 | restore_gp_reg( 4); restore_gp_reg( 5); restore_gp_reg( 6); | ||
356 | restore_gp_reg( 7); restore_gp_reg( 8); restore_gp_reg( 9); | ||
357 | restore_gp_reg(10); restore_gp_reg(11); restore_gp_reg(12); | ||
358 | restore_gp_reg(13); restore_gp_reg(14); restore_gp_reg(15); | ||
359 | restore_gp_reg(16); restore_gp_reg(17); restore_gp_reg(18); | ||
360 | restore_gp_reg(19); restore_gp_reg(20); restore_gp_reg(21); | ||
361 | restore_gp_reg(22); restore_gp_reg(23); restore_gp_reg(24); | ||
362 | restore_gp_reg(25); restore_gp_reg(26); restore_gp_reg(27); | ||
363 | restore_gp_reg(28); restore_gp_reg(29); restore_gp_reg(30); | ||
364 | restore_gp_reg(31); | ||
365 | #undef restore_gp_reg | ||
366 | |||
367 | err |= __get_user(used_math, &sc->sc_used_math); | ||
368 | conditional_used_math(used_math); | ||
369 | |||
370 | preempt_disable(); | ||
371 | |||
372 | if (used_math()) { | ||
373 | /* restore fpu context if we have used it before */ | ||
374 | own_fpu(); | ||
375 | err |= restore_fp_context32(sc); | ||
376 | } else { | ||
377 | /* signal handler may have used FPU. Give it up. */ | ||
378 | lose_fpu(); | ||
379 | } | ||
380 | |||
381 | preempt_enable(); | ||
382 | |||
383 | return err; | ||
384 | } | ||
385 | |||
386 | struct sigframe { | ||
387 | u32 sf_ass[4]; /* argument save space for o32 */ | ||
388 | #if ICACHE_REFILLS_WORKAROUND_WAR | ||
389 | u32 sf_pad[2]; | ||
390 | #else | ||
391 | u32 sf_code[2]; /* signal trampoline */ | ||
392 | #endif | ||
393 | struct sigcontext32 sf_sc; | ||
394 | sigset_t sf_mask; | ||
395 | #if ICACHE_REFILLS_WORKAROUND_WAR | ||
396 | u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */ | ||
397 | #endif | ||
398 | }; | ||
399 | |||
400 | struct rt_sigframe32 { | ||
401 | u32 rs_ass[4]; /* argument save space for o32 */ | ||
402 | #if ICACHE_REFILLS_WORKAROUND_WAR | ||
403 | u32 rs_pad[2]; | ||
404 | #else | ||
405 | u32 rs_code[2]; /* signal trampoline */ | ||
406 | #endif | ||
407 | compat_siginfo_t rs_info; | ||
408 | struct ucontext32 rs_uc; | ||
409 | #if ICACHE_REFILLS_WORKAROUND_WAR | ||
410 | u32 rs_code[8] __attribute__((aligned(32))); /* signal trampoline */ | ||
411 | #endif | ||
412 | }; | ||
413 | |||
414 | int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from) | 442 | int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from) |
415 | { | 443 | { |
416 | int err; | 444 | int err; |
@@ -463,9 +491,7 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from) | |||
463 | return err; | 491 | return err; |
464 | } | 492 | } |
465 | 493 | ||
466 | save_static_function(sys32_sigreturn); | 494 | asmlinkage void sys32_sigreturn(nabi_no_regargs struct pt_regs regs) |
467 | __attribute_used__ noinline static void | ||
468 | _sys32_sigreturn(nabi_no_regargs struct pt_regs regs) | ||
469 | { | 495 | { |
470 | struct sigframe __user *frame; | 496 | struct sigframe __user *frame; |
471 | sigset_t blocked; | 497 | sigset_t blocked; |
@@ -499,9 +525,7 @@ badframe: | |||
499 | force_sig(SIGSEGV, current); | 525 | force_sig(SIGSEGV, current); |
500 | } | 526 | } |
501 | 527 | ||
502 | save_static_function(sys32_rt_sigreturn); | 528 | asmlinkage void sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) |
503 | __attribute_used__ noinline static void | ||
504 | _sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | ||
505 | { | 529 | { |
506 | struct rt_sigframe32 __user *frame; | 530 | struct rt_sigframe32 __user *frame; |
507 | mm_segment_t old_fs; | 531 | mm_segment_t old_fs; |
@@ -554,89 +578,6 @@ badframe: | |||
554 | force_sig(SIGSEGV, current); | 578 | force_sig(SIGSEGV, current); |
555 | } | 579 | } |
556 | 580 | ||
557 | static inline int setup_sigcontext32(struct pt_regs *regs, | ||
558 | struct sigcontext32 __user *sc) | ||
559 | { | ||
560 | int err = 0; | ||
561 | |||
562 | err |= __put_user(regs->cp0_epc, &sc->sc_pc); | ||
563 | err |= __put_user(regs->cp0_status, &sc->sc_status); | ||
564 | |||
565 | #define save_gp_reg(i) { \ | ||
566 | err |= __put_user(regs->regs[i], &sc->sc_regs[i]); \ | ||
567 | } while(0) | ||
568 | __put_user(0, &sc->sc_regs[0]); save_gp_reg(1); save_gp_reg(2); | ||
569 | save_gp_reg(3); save_gp_reg(4); save_gp_reg(5); save_gp_reg(6); | ||
570 | save_gp_reg(7); save_gp_reg(8); save_gp_reg(9); save_gp_reg(10); | ||
571 | save_gp_reg(11); save_gp_reg(12); save_gp_reg(13); save_gp_reg(14); | ||
572 | save_gp_reg(15); save_gp_reg(16); save_gp_reg(17); save_gp_reg(18); | ||
573 | save_gp_reg(19); save_gp_reg(20); save_gp_reg(21); save_gp_reg(22); | ||
574 | save_gp_reg(23); save_gp_reg(24); save_gp_reg(25); save_gp_reg(26); | ||
575 | save_gp_reg(27); save_gp_reg(28); save_gp_reg(29); save_gp_reg(30); | ||
576 | save_gp_reg(31); | ||
577 | #undef save_gp_reg | ||
578 | |||
579 | err |= __put_user(regs->hi, &sc->sc_mdhi); | ||
580 | err |= __put_user(regs->lo, &sc->sc_mdlo); | ||
581 | if (cpu_has_dsp) { | ||
582 | err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp); | ||
583 | err |= __put_user(mfhi1(), &sc->sc_hi1); | ||
584 | err |= __put_user(mflo1(), &sc->sc_lo1); | ||
585 | err |= __put_user(mfhi2(), &sc->sc_hi2); | ||
586 | err |= __put_user(mflo2(), &sc->sc_lo2); | ||
587 | err |= __put_user(mfhi3(), &sc->sc_hi3); | ||
588 | err |= __put_user(mflo3(), &sc->sc_lo3); | ||
589 | } | ||
590 | |||
591 | err |= __put_user(!!used_math(), &sc->sc_used_math); | ||
592 | |||
593 | if (!used_math()) | ||
594 | goto out; | ||
595 | |||
596 | /* | ||
597 | * Save FPU state to signal context. Signal handler will "inherit" | ||
598 | * current FPU state. | ||
599 | */ | ||
600 | preempt_disable(); | ||
601 | |||
602 | if (!is_fpu_owner()) { | ||
603 | own_fpu(); | ||
604 | restore_fp(current); | ||
605 | } | ||
606 | err |= save_fp_context32(sc); | ||
607 | |||
608 | preempt_enable(); | ||
609 | |||
610 | out: | ||
611 | return err; | ||
612 | } | ||
613 | |||
614 | /* | ||
615 | * Determine which stack to use.. | ||
616 | */ | ||
617 | static inline void __user *get_sigframe(struct k_sigaction *ka, | ||
618 | struct pt_regs *regs, | ||
619 | size_t frame_size) | ||
620 | { | ||
621 | unsigned long sp; | ||
622 | |||
623 | /* Default to using normal stack */ | ||
624 | sp = regs->regs[29]; | ||
625 | |||
626 | /* | ||
627 | * FPU emulator may have it's own trampoline active just | ||
628 | * above the user stack, 16-bytes before the next lowest | ||
629 | * 16 byte boundary. Try to avoid trashing it. | ||
630 | */ | ||
631 | sp -= 32; | ||
632 | |||
633 | /* This is the X/Open sanctioned signal stack switching. */ | ||
634 | if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0)) | ||
635 | sp = current->sas_ss_sp + current->sas_ss_size; | ||
636 | |||
637 | return (void __user *)((sp - frame_size) & ALMASK); | ||
638 | } | ||
639 | |||
640 | int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs, | 581 | int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs, |
641 | int signr, sigset_t *set) | 582 | int signr, sigset_t *set) |
642 | { | 583 | { |
@@ -647,15 +588,7 @@ int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs, | |||
647 | if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) | 588 | if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) |
648 | goto give_sigsegv; | 589 | goto give_sigsegv; |
649 | 590 | ||
650 | /* | 591 | err |= install_sigtramp(frame->sf_code, __NR_O32_sigreturn); |
651 | * Set up the return code ... | ||
652 | * | ||
653 | * li v0, __NR_O32_sigreturn | ||
654 | * syscall | ||
655 | */ | ||
656 | err |= __put_user(0x24020000 + __NR_O32_sigreturn, frame->sf_code + 0); | ||
657 | err |= __put_user(0x0000000c , frame->sf_code + 1); | ||
658 | flush_cache_sigtramp((unsigned long) frame->sf_code); | ||
659 | 592 | ||
660 | err |= setup_sigcontext32(regs, &frame->sf_sc); | 593 | err |= setup_sigcontext32(regs, &frame->sf_sc); |
661 | err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set)); | 594 | err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set)); |
@@ -679,11 +612,10 @@ int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs, | |||
679 | regs->regs[31] = (unsigned long) frame->sf_code; | 612 | regs->regs[31] = (unsigned long) frame->sf_code; |
680 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; | 613 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; |
681 | 614 | ||
682 | #if DEBUG_SIG | 615 | DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", |
683 | printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n", | ||
684 | current->comm, current->pid, | 616 | current->comm, current->pid, |
685 | frame, regs->cp0_epc, frame->sf_code); | 617 | frame, regs->cp0_epc, regs->regs[31]); |
686 | #endif | 618 | |
687 | return 0; | 619 | return 0; |
688 | 620 | ||
689 | give_sigsegv: | 621 | give_sigsegv: |
@@ -702,17 +634,7 @@ int setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs, | |||
702 | if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) | 634 | if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) |
703 | goto give_sigsegv; | 635 | goto give_sigsegv; |
704 | 636 | ||
705 | /* Set up to return from userspace. If provided, use a stub already | 637 | err |= install_sigtramp(frame->rs_code, __NR_O32_rt_sigreturn); |
706 | in userspace. */ | ||
707 | /* | ||
708 | * Set up the return code ... | ||
709 | * | ||
710 | * li v0, __NR_O32_rt_sigreturn | ||
711 | * syscall | ||
712 | */ | ||
713 | err |= __put_user(0x24020000 + __NR_O32_rt_sigreturn, frame->rs_code + 0); | ||
714 | err |= __put_user(0x0000000c , frame->rs_code + 1); | ||
715 | flush_cache_sigtramp((unsigned long) frame->rs_code); | ||
716 | 638 | ||
717 | /* Convert (siginfo_t -> compat_siginfo_t) and copy to user. */ | 639 | /* Convert (siginfo_t -> compat_siginfo_t) and copy to user. */ |
718 | err |= copy_siginfo_to_user32(&frame->rs_info, info); | 640 | err |= copy_siginfo_to_user32(&frame->rs_info, info); |
@@ -750,11 +672,10 @@ int setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs, | |||
750 | regs->regs[31] = (unsigned long) frame->rs_code; | 672 | regs->regs[31] = (unsigned long) frame->rs_code; |
751 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; | 673 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; |
752 | 674 | ||
753 | #if DEBUG_SIG | 675 | DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", |
754 | printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n", | ||
755 | current->comm, current->pid, | 676 | current->comm, current->pid, |
756 | frame, regs->cp0_epc, frame->rs_code); | 677 | frame, regs->cp0_epc, regs->regs[31]); |
757 | #endif | 678 | |
758 | return 0; | 679 | return 0; |
759 | 680 | ||
760 | give_sigsegv: | 681 | give_sigsegv: |
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c index b28646b3ceae..57456e6a0c62 100644 --- a/arch/mips/kernel/signal_n32.c +++ b/arch/mips/kernel/signal_n32.c | |||
@@ -47,8 +47,6 @@ | |||
47 | #define __NR_N32_rt_sigreturn 6211 | 47 | #define __NR_N32_rt_sigreturn 6211 |
48 | #define __NR_N32_restart_syscall 6214 | 48 | #define __NR_N32_restart_syscall 6214 |
49 | 49 | ||
50 | #define DEBUG_SIG 0 | ||
51 | |||
52 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | 50 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) |
53 | 51 | ||
54 | /* IRIX compatible stack_t */ | 52 | /* IRIX compatible stack_t */ |
@@ -66,25 +64,30 @@ struct ucontextn32 { | |||
66 | sigset_t uc_sigmask; /* mask last for extensibility */ | 64 | sigset_t uc_sigmask; /* mask last for extensibility */ |
67 | }; | 65 | }; |
68 | 66 | ||
67 | #if ICACHE_REFILLS_WORKAROUND_WAR == 0 | ||
68 | |||
69 | struct rt_sigframe_n32 { | 69 | struct rt_sigframe_n32 { |
70 | u32 rs_ass[4]; /* argument save space for o32 */ | 70 | u32 rs_ass[4]; /* argument save space for o32 */ |
71 | #if ICACHE_REFILLS_WORKAROUND_WAR | ||
72 | u32 rs_pad[2]; | ||
73 | #else | ||
74 | u32 rs_code[2]; /* signal trampoline */ | 71 | u32 rs_code[2]; /* signal trampoline */ |
75 | #endif | ||
76 | struct siginfo rs_info; | 72 | struct siginfo rs_info; |
77 | struct ucontextn32 rs_uc; | 73 | struct ucontextn32 rs_uc; |
78 | #if ICACHE_REFILLS_WORKAROUND_WAR | 74 | }; |
75 | |||
76 | #else /* ICACHE_REFILLS_WORKAROUND_WAR */ | ||
77 | |||
78 | struct rt_sigframe_n32 { | ||
79 | u32 rs_ass[4]; /* argument save space for o32 */ | ||
80 | u32 rs_pad[2]; | ||
81 | struct siginfo rs_info; | ||
82 | struct ucontextn32 rs_uc; | ||
79 | u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */ | 83 | u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */ |
80 | #endif | ||
81 | }; | 84 | }; |
82 | 85 | ||
86 | #endif /* !ICACHE_REFILLS_WORKAROUND_WAR */ | ||
87 | |||
83 | extern void sigset_from_compat (sigset_t *set, compat_sigset_t *compat); | 88 | extern void sigset_from_compat (sigset_t *set, compat_sigset_t *compat); |
84 | 89 | ||
85 | save_static_function(sysn32_rt_sigsuspend); | 90 | asmlinkage int sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) |
86 | __attribute_used__ noinline static int | ||
87 | _sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | ||
88 | { | 91 | { |
89 | compat_sigset_t __user *unewset; | 92 | compat_sigset_t __user *unewset; |
90 | compat_sigset_t uset; | 93 | compat_sigset_t uset; |
@@ -114,9 +117,7 @@ _sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
114 | return -ERESTARTNOHAND; | 117 | return -ERESTARTNOHAND; |
115 | } | 118 | } |
116 | 119 | ||
117 | save_static_function(sysn32_rt_sigreturn); | 120 | asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) |
118 | __attribute_used__ noinline static void | ||
119 | _sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | ||
120 | { | 121 | { |
121 | struct rt_sigframe_n32 __user *frame; | 122 | struct rt_sigframe_n32 __user *frame; |
122 | sigset_t set; | 123 | sigset_t set; |
@@ -214,11 +215,10 @@ int setup_rt_frame_n32(struct k_sigaction * ka, | |||
214 | regs->regs[31] = (unsigned long) frame->rs_code; | 215 | regs->regs[31] = (unsigned long) frame->rs_code; |
215 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; | 216 | regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; |
216 | 217 | ||
217 | #if DEBUG_SIG | 218 | DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", |
218 | printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n", | ||
219 | current->comm, current->pid, | 219 | current->comm, current->pid, |
220 | frame, regs->cp0_epc, regs->regs[31]); | 220 | frame, regs->cp0_epc, regs->regs[31]); |
221 | #endif | 221 | |
222 | return 0; | 222 | return 0; |
223 | 223 | ||
224 | give_sigsegv: | 224 | give_sigsegv: |
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index 8aa544f73a5e..545fcbc8cea2 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c | |||
@@ -455,8 +455,3 @@ EXPORT_SYMBOL(rtc_lock); | |||
455 | EXPORT_SYMBOL(to_tm); | 455 | EXPORT_SYMBOL(to_tm); |
456 | EXPORT_SYMBOL(rtc_mips_set_time); | 456 | EXPORT_SYMBOL(rtc_mips_set_time); |
457 | EXPORT_SYMBOL(rtc_mips_get_time); | 457 | EXPORT_SYMBOL(rtc_mips_get_time); |
458 | |||
459 | unsigned long long sched_clock(void) | ||
460 | { | ||
461 | return (unsigned long long)jiffies*(1000000000/HZ); | ||
462 | } | ||
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S index cecff24cc972..c76b793310c2 100644 --- a/arch/mips/kernel/vmlinux.lds.S +++ b/arch/mips/kernel/vmlinux.lds.S | |||
@@ -113,10 +113,12 @@ SECTIONS | |||
113 | references from .rodata */ | 113 | references from .rodata */ |
114 | .exit.text : { *(.exit.text) } | 114 | .exit.text : { *(.exit.text) } |
115 | .exit.data : { *(.exit.data) } | 115 | .exit.data : { *(.exit.data) } |
116 | #if defined(CONFIG_BLK_DEV_INITRD) | ||
116 | . = ALIGN(_PAGE_SIZE); | 117 | . = ALIGN(_PAGE_SIZE); |
117 | __initramfs_start = .; | 118 | __initramfs_start = .; |
118 | .init.ramfs : { *(.init.ramfs) } | 119 | .init.ramfs : { *(.init.ramfs) } |
119 | __initramfs_end = .; | 120 | __initramfs_end = .; |
121 | #endif | ||
120 | . = ALIGN(32); | 122 | . = ALIGN(32); |
121 | __per_cpu_start = .; | 123 | __per_cpu_start = .; |
122 | .data.percpu : { *(.data.percpu) } | 124 | .data.percpu : { *(.data.percpu) } |
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index 459624969c99..9aca871a307f 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c | |||
@@ -29,6 +29,7 @@ | |||
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include <linux/kernel.h> | 31 | #include <linux/kernel.h> |
32 | #include <linux/device.h> | ||
32 | #include <linux/module.h> | 33 | #include <linux/module.h> |
33 | #include <linux/fs.h> | 34 | #include <linux/fs.h> |
34 | #include <linux/init.h> | 35 | #include <linux/init.h> |
@@ -48,6 +49,7 @@ | |||
48 | #include <asm/cacheflush.h> | 49 | #include <asm/cacheflush.h> |
49 | #include <asm/atomic.h> | 50 | #include <asm/atomic.h> |
50 | #include <asm/cpu.h> | 51 | #include <asm/cpu.h> |
52 | #include <asm/mips_mt.h> | ||
51 | #include <asm/processor.h> | 53 | #include <asm/processor.h> |
52 | #include <asm/system.h> | 54 | #include <asm/system.h> |
53 | #include <asm/vpe.h> | 55 | #include <asm/vpe.h> |
@@ -64,6 +66,7 @@ typedef void *vpe_handle; | |||
64 | 66 | ||
65 | static char module_name[] = "vpe"; | 67 | static char module_name[] = "vpe"; |
66 | static int major; | 68 | static int major; |
69 | static const int minor = 1; /* fixed for now */ | ||
67 | 70 | ||
68 | #ifdef CONFIG_MIPS_APSP_KSPD | 71 | #ifdef CONFIG_MIPS_APSP_KSPD |
69 | static struct kspd_notifications kspd_events; | 72 | static struct kspd_notifications kspd_events; |
@@ -1205,7 +1208,7 @@ static ssize_t vpe_write(struct file *file, const char __user * buffer, | |||
1205 | return ret; | 1208 | return ret; |
1206 | } | 1209 | } |
1207 | 1210 | ||
1208 | static struct file_operations vpe_fops = { | 1211 | static const struct file_operations vpe_fops = { |
1209 | .owner = THIS_MODULE, | 1212 | .owner = THIS_MODULE, |
1210 | .open = vpe_open, | 1213 | .open = vpe_open, |
1211 | .release = vpe_release, | 1214 | .release = vpe_release, |
@@ -1365,12 +1368,15 @@ static void kspd_sp_exit( int sp_id) | |||
1365 | } | 1368 | } |
1366 | #endif | 1369 | #endif |
1367 | 1370 | ||
1371 | static struct device *vpe_dev; | ||
1372 | |||
1368 | static int __init vpe_module_init(void) | 1373 | static int __init vpe_module_init(void) |
1369 | { | 1374 | { |
1370 | struct vpe *v = NULL; | 1375 | struct vpe *v = NULL; |
1376 | struct device *dev; | ||
1371 | struct tc *t; | 1377 | struct tc *t; |
1372 | unsigned long val; | 1378 | unsigned long val; |
1373 | int i; | 1379 | int i, err; |
1374 | 1380 | ||
1375 | if (!cpu_has_mipsmt) { | 1381 | if (!cpu_has_mipsmt) { |
1376 | printk("VPE loader: not a MIPS MT capable processor\n"); | 1382 | printk("VPE loader: not a MIPS MT capable processor\n"); |
@@ -1383,6 +1389,14 @@ static int __init vpe_module_init(void) | |||
1383 | return major; | 1389 | return major; |
1384 | } | 1390 | } |
1385 | 1391 | ||
1392 | dev = device_create(mt_class, NULL, MKDEV(major, minor), | ||
1393 | "tc%d", minor); | ||
1394 | if (IS_ERR(dev)) { | ||
1395 | err = PTR_ERR(dev); | ||
1396 | goto out_chrdev; | ||
1397 | } | ||
1398 | vpe_dev = dev; | ||
1399 | |||
1386 | dmt(); | 1400 | dmt(); |
1387 | dvpe(); | 1401 | dvpe(); |
1388 | 1402 | ||
@@ -1478,6 +1492,11 @@ static int __init vpe_module_init(void) | |||
1478 | kspd_events.kspd_sp_exit = kspd_sp_exit; | 1492 | kspd_events.kspd_sp_exit = kspd_sp_exit; |
1479 | #endif | 1493 | #endif |
1480 | return 0; | 1494 | return 0; |
1495 | |||
1496 | out_chrdev: | ||
1497 | unregister_chrdev(major, module_name); | ||
1498 | |||
1499 | return err; | ||
1481 | } | 1500 | } |
1482 | 1501 | ||
1483 | static void __exit vpe_module_exit(void) | 1502 | static void __exit vpe_module_exit(void) |
@@ -1490,6 +1509,7 @@ static void __exit vpe_module_exit(void) | |||
1490 | } | 1509 | } |
1491 | } | 1510 | } |
1492 | 1511 | ||
1512 | device_destroy(mt_class, MKDEV(major, minor)); | ||
1493 | unregister_chrdev(major, module_name); | 1513 | unregister_chrdev(major, module_name); |
1494 | } | 1514 | } |
1495 | 1515 | ||
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c index 1f954a238a63..31819c58bffa 100644 --- a/arch/mips/mm/cache.c +++ b/arch/mips/mm/cache.c | |||
@@ -107,8 +107,6 @@ void __update_cache(struct vm_area_struct *vma, unsigned long address, | |||
107 | } | 107 | } |
108 | } | 108 | } |
109 | 109 | ||
110 | #define __weak __attribute__((weak)) | ||
111 | |||
112 | static char cache_panic[] __initdata = "Yeee, unsupported cache architecture."; | 110 | static char cache_panic[] __initdata = "Yeee, unsupported cache architecture."; |
113 | 111 | ||
114 | void __init cpu_cache_init(void) | 112 | void __init cpu_cache_init(void) |
diff --git a/arch/mips/momentum/jaguar_atx/platform.c b/arch/mips/momentum/jaguar_atx/platform.c index 035ea5137c71..81037709ba0d 100644 --- a/arch/mips/momentum/jaguar_atx/platform.c +++ b/arch/mips/momentum/jaguar_atx/platform.c | |||
@@ -129,7 +129,7 @@ static struct mv643xx_eth_platform_data eth2_pd = { | |||
129 | 129 | ||
130 | static struct platform_device eth2_device = { | 130 | static struct platform_device eth2_device = { |
131 | .name = MV643XX_ETH_NAME, | 131 | .name = MV643XX_ETH_NAME, |
132 | .id = 1, | 132 | .id = 2, |
133 | .num_resources = ARRAY_SIZE(mv64x60_eth2_resources), | 133 | .num_resources = ARRAY_SIZE(mv64x60_eth2_resources), |
134 | .resource = mv64x60_eth2_resources, | 134 | .resource = mv64x60_eth2_resources, |
135 | .dev = { | 135 | .dev = { |
diff --git a/arch/mips/momentum/ocelot_3/platform.c b/arch/mips/momentum/ocelot_3/platform.c index eefe5841fbb2..57cfe5c6e4a8 100644 --- a/arch/mips/momentum/ocelot_3/platform.c +++ b/arch/mips/momentum/ocelot_3/platform.c | |||
@@ -129,7 +129,7 @@ static struct mv643xx_eth_platform_data eth2_pd = { | |||
129 | 129 | ||
130 | static struct platform_device eth2_device = { | 130 | static struct platform_device eth2_device = { |
131 | .name = MV643XX_ETH_NAME, | 131 | .name = MV643XX_ETH_NAME, |
132 | .id = 1, | 132 | .id = 2, |
133 | .num_resources = ARRAY_SIZE(mv64x60_eth2_resources), | 133 | .num_resources = ARRAY_SIZE(mv64x60_eth2_resources), |
134 | .resource = mv64x60_eth2_resources, | 134 | .resource = mv64x60_eth2_resources, |
135 | .dev = { | 135 | .dev = { |
diff --git a/arch/mips/philips/pnx8550/common/proc.c b/arch/mips/philips/pnx8550/common/proc.c index 72a016767e09..3f097558ef13 100644 --- a/arch/mips/philips/pnx8550/common/proc.c +++ b/arch/mips/philips/pnx8550/common/proc.c | |||
@@ -79,10 +79,7 @@ static int pnx8550_proc_init( void ) | |||
79 | 79 | ||
80 | // Create /proc/pnx8550 | 80 | // Create /proc/pnx8550 |
81 | pnx8550_dir = create_proc_entry("pnx8550", S_IFDIR|S_IRUGO, NULL); | 81 | pnx8550_dir = create_proc_entry("pnx8550", S_IFDIR|S_IRUGO, NULL); |
82 | if (pnx8550_dir){ | 82 | if (!pnx8550_dir) { |
83 | pnx8550_dir->nlink = 1; | ||
84 | } | ||
85 | else { | ||
86 | printk(KERN_ERR "Can't create pnx8550 proc dir\n"); | 83 | printk(KERN_ERR "Can't create pnx8550 proc dir\n"); |
87 | return -1; | 84 | return -1; |
88 | } | 85 | } |
@@ -90,7 +87,6 @@ static int pnx8550_proc_init( void ) | |||
90 | // Create /proc/pnx8550/timers | 87 | // Create /proc/pnx8550/timers |
91 | pnx8550_timers = create_proc_entry("timers", S_IFREG|S_IRUGO, pnx8550_dir ); | 88 | pnx8550_timers = create_proc_entry("timers", S_IFREG|S_IRUGO, pnx8550_dir ); |
92 | if (pnx8550_timers){ | 89 | if (pnx8550_timers){ |
93 | pnx8550_timers->nlink = 1; | ||
94 | pnx8550_timers->read_proc = pnx8550_timers_read; | 90 | pnx8550_timers->read_proc = pnx8550_timers_read; |
95 | } | 91 | } |
96 | else { | 92 | else { |
@@ -100,7 +96,6 @@ static int pnx8550_proc_init( void ) | |||
100 | // Create /proc/pnx8550/registers | 96 | // Create /proc/pnx8550/registers |
101 | pnx8550_registers = create_proc_entry("registers", S_IFREG|S_IRUGO, pnx8550_dir ); | 97 | pnx8550_registers = create_proc_entry("registers", S_IFREG|S_IRUGO, pnx8550_dir ); |
102 | if (pnx8550_registers){ | 98 | if (pnx8550_registers){ |
103 | pnx8550_registers->nlink = 1; | ||
104 | pnx8550_registers->read_proc = pnx8550_registers_read; | 99 | pnx8550_registers->read_proc = pnx8550_registers_read; |
105 | } | 100 | } |
106 | else { | 101 | else { |
diff --git a/arch/mips/sibyte/sb1250/bcm1250_tbprof.c b/arch/mips/sibyte/sb1250/bcm1250_tbprof.c index d1a906e683b2..212547c57310 100644 --- a/arch/mips/sibyte/sb1250/bcm1250_tbprof.c +++ b/arch/mips/sibyte/sb1250/bcm1250_tbprof.c | |||
@@ -374,7 +374,7 @@ static long sbprof_tb_ioctl(struct file *filp, | |||
374 | return error; | 374 | return error; |
375 | } | 375 | } |
376 | 376 | ||
377 | static struct file_operations sbprof_tb_fops = { | 377 | static const struct file_operations sbprof_tb_fops = { |
378 | .owner = THIS_MODULE, | 378 | .owner = THIS_MODULE, |
379 | .open = sbprof_tb_open, | 379 | .open = sbprof_tb_open, |
380 | .release = sbprof_tb_release, | 380 | .release = sbprof_tb_release, |
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c index 735cb8778f4c..7316a78fdd68 100644 --- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c +++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c | |||
@@ -137,6 +137,8 @@ int tx4927_using_backplane = 0; | |||
137 | extern void gt64120_time_init(void); | 137 | extern void gt64120_time_init(void); |
138 | extern void toshiba_rbtx4927_irq_setup(void); | 138 | extern void toshiba_rbtx4927_irq_setup(void); |
139 | 139 | ||
140 | char *prom_getcmdline(void); | ||
141 | |||
140 | #ifdef CONFIG_PCI | 142 | #ifdef CONFIG_PCI |
141 | #define CONFIG_TX4927BUG_WORKAROUND | 143 | #define CONFIG_TX4927BUG_WORKAROUND |
142 | #undef TX4927_SUPPORT_COMMAND_IO | 144 | #undef TX4927_SUPPORT_COMMAND_IO |
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 0f9ff618c6d7..28da4e71c443 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig | |||
@@ -50,9 +50,6 @@ config TIME_LOW_RES | |||
50 | depends on SMP | 50 | depends on SMP |
51 | default y | 51 | default y |
52 | 52 | ||
53 | config GENERIC_ISA_DMA | ||
54 | bool | ||
55 | |||
56 | config GENERIC_HARDIRQS | 53 | config GENERIC_HARDIRQS |
57 | def_bool y | 54 | def_bool y |
58 | 55 | ||
diff --git a/arch/parisc/kernel/perf.c b/arch/parisc/kernel/perf.c index ac8ee205c351..a46bc62b643e 100644 --- a/arch/parisc/kernel/perf.c +++ b/arch/parisc/kernel/perf.c | |||
@@ -479,7 +479,7 @@ static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
479 | return error; | 479 | return error; |
480 | } | 480 | } |
481 | 481 | ||
482 | static struct file_operations perf_fops = { | 482 | static const struct file_operations perf_fops = { |
483 | .llseek = no_llseek, | 483 | .llseek = no_llseek, |
484 | .read = perf_read, | 484 | .read = perf_read, |
485 | .write = perf_write, | 485 | .write = perf_write, |
diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c index 3c7a3faf78ed..74b3686dd1e0 100644 --- a/arch/parisc/kernel/setup.c +++ b/arch/parisc/kernel/setup.c | |||
@@ -45,7 +45,7 @@ | |||
45 | #include <asm/io.h> | 45 | #include <asm/io.h> |
46 | #include <asm/setup.h> | 46 | #include <asm/setup.h> |
47 | 47 | ||
48 | char command_line[COMMAND_LINE_SIZE] __read_mostly; | 48 | char __initdata command_line[COMMAND_LINE_SIZE] __read_mostly; |
49 | 49 | ||
50 | /* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */ | 50 | /* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */ |
51 | struct proc_dir_entry * proc_runway_root __read_mostly = NULL; | 51 | struct proc_dir_entry * proc_runway_root __read_mostly = NULL; |
@@ -71,9 +71,9 @@ void __init setup_cmdline(char **cmdline_p) | |||
71 | /* boot_args[0] is free-mem start, boot_args[1] is ptr to command line */ | 71 | /* boot_args[0] is free-mem start, boot_args[1] is ptr to command line */ |
72 | if (boot_args[0] < 64) { | 72 | if (boot_args[0] < 64) { |
73 | /* called from hpux boot loader */ | 73 | /* called from hpux boot loader */ |
74 | saved_command_line[0] = '\0'; | 74 | boot_command_line[0] = '\0'; |
75 | } else { | 75 | } else { |
76 | strcpy(saved_command_line, (char *)__va(boot_args[1])); | 76 | strcpy(boot_command_line, (char *)__va(boot_args[1])); |
77 | 77 | ||
78 | #ifdef CONFIG_BLK_DEV_INITRD | 78 | #ifdef CONFIG_BLK_DEV_INITRD |
79 | if (boot_args[2] != 0) /* did palo pass us a ramdisk? */ | 79 | if (boot_args[2] != 0) /* did palo pass us a ramdisk? */ |
@@ -84,7 +84,7 @@ void __init setup_cmdline(char **cmdline_p) | |||
84 | #endif | 84 | #endif |
85 | } | 85 | } |
86 | 86 | ||
87 | strcpy(command_line, saved_command_line); | 87 | strcpy(command_line, boot_command_line); |
88 | *cmdline_p = command_line; | 88 | *cmdline_p = command_line; |
89 | } | 89 | } |
90 | 90 | ||
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c index 29be4377aca6..ce3245f87fdd 100644 --- a/arch/parisc/kernel/sys_parisc32.c +++ b/arch/parisc/kernel/sys_parisc32.c | |||
@@ -579,70 +579,6 @@ asmlinkage int sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *off | |||
579 | } | 579 | } |
580 | 580 | ||
581 | 581 | ||
582 | struct sysinfo32 { | ||
583 | s32 uptime; | ||
584 | u32 loads[3]; | ||
585 | u32 totalram; | ||
586 | u32 freeram; | ||
587 | u32 sharedram; | ||
588 | u32 bufferram; | ||
589 | u32 totalswap; | ||
590 | u32 freeswap; | ||
591 | unsigned short procs; | ||
592 | u32 totalhigh; | ||
593 | u32 freehigh; | ||
594 | u32 mem_unit; | ||
595 | char _f[12]; | ||
596 | }; | ||
597 | |||
598 | /* We used to call sys_sysinfo and translate the result. But sys_sysinfo | ||
599 | * undoes the good work done elsewhere, and rather than undoing the | ||
600 | * damage, I decided to just duplicate the code from sys_sysinfo here. | ||
601 | */ | ||
602 | |||
603 | asmlinkage int sys32_sysinfo(struct sysinfo32 __user *info) | ||
604 | { | ||
605 | struct sysinfo val; | ||
606 | int err; | ||
607 | unsigned long seq; | ||
608 | |||
609 | /* We don't need a memset here because we copy the | ||
610 | * struct to userspace once element at a time. | ||
611 | */ | ||
612 | |||
613 | do { | ||
614 | seq = read_seqbegin(&xtime_lock); | ||
615 | val.uptime = jiffies / HZ; | ||
616 | |||
617 | val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT); | ||
618 | val.loads[1] = avenrun[1] << (SI_LOAD_SHIFT - FSHIFT); | ||
619 | val.loads[2] = avenrun[2] << (SI_LOAD_SHIFT - FSHIFT); | ||
620 | |||
621 | val.procs = nr_threads; | ||
622 | } while (read_seqretry(&xtime_lock, seq)); | ||
623 | |||
624 | |||
625 | si_meminfo(&val); | ||
626 | si_swapinfo(&val); | ||
627 | |||
628 | err = put_user (val.uptime, &info->uptime); | ||
629 | err |= __put_user (val.loads[0], &info->loads[0]); | ||
630 | err |= __put_user (val.loads[1], &info->loads[1]); | ||
631 | err |= __put_user (val.loads[2], &info->loads[2]); | ||
632 | err |= __put_user (val.totalram, &info->totalram); | ||
633 | err |= __put_user (val.freeram, &info->freeram); | ||
634 | err |= __put_user (val.sharedram, &info->sharedram); | ||
635 | err |= __put_user (val.bufferram, &info->bufferram); | ||
636 | err |= __put_user (val.totalswap, &info->totalswap); | ||
637 | err |= __put_user (val.freeswap, &info->freeswap); | ||
638 | err |= __put_user (val.procs, &info->procs); | ||
639 | err |= __put_user (val.totalhigh, &info->totalhigh); | ||
640 | err |= __put_user (val.freehigh, &info->freehigh); | ||
641 | err |= __put_user (val.mem_unit, &info->mem_unit); | ||
642 | return err ? -EFAULT : 0; | ||
643 | } | ||
644 | |||
645 | |||
646 | /* lseek() needs a wrapper because 'offset' can be negative, but the top | 582 | /* lseek() needs a wrapper because 'offset' can be negative, but the top |
647 | * half of the argument has been zeroed by syscall.S. | 583 | * half of the argument has been zeroed by syscall.S. |
648 | */ | 584 | */ |
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index 701d66a596e8..be8eb9a0d24a 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S | |||
@@ -197,7 +197,7 @@ | |||
197 | /* struct rusage contains longs... */ | 197 | /* struct rusage contains longs... */ |
198 | ENTRY_COMP(wait4) | 198 | ENTRY_COMP(wait4) |
199 | ENTRY_SAME(swapoff) /* 115 */ | 199 | ENTRY_SAME(swapoff) /* 115 */ |
200 | ENTRY_DIFF(sysinfo) | 200 | ENTRY_COMP(sysinfo) |
201 | ENTRY_SAME(shutdown) | 201 | ENTRY_SAME(shutdown) |
202 | ENTRY_SAME(fsync) | 202 | ENTRY_SAME(fsync) |
203 | ENTRY_SAME(madvise) | 203 | ENTRY_SAME(madvise) |
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index bad7d1eb62b9..5f1b51af06a9 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
@@ -288,17 +288,6 @@ do_settimeofday (struct timespec *tv) | |||
288 | } | 288 | } |
289 | EXPORT_SYMBOL(do_settimeofday); | 289 | EXPORT_SYMBOL(do_settimeofday); |
290 | 290 | ||
291 | /* | ||
292 | * XXX: We can do better than this. | ||
293 | * Returns nanoseconds | ||
294 | */ | ||
295 | |||
296 | unsigned long long sched_clock(void) | ||
297 | { | ||
298 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
299 | } | ||
300 | |||
301 | |||
302 | void __init start_cpu_itimer(void) | 291 | void __init start_cpu_itimer(void) |
303 | { | 292 | { |
304 | unsigned int cpu = smp_processor_id(); | 293 | unsigned int cpu = smp_processor_id(); |
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S index 7b943b45f7cd..3b78c2794c36 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S | |||
@@ -173,10 +173,12 @@ SECTIONS | |||
173 | from .altinstructions and .eh_frame */ | 173 | from .altinstructions and .eh_frame */ |
174 | .exit.text : { *(.exit.text) } | 174 | .exit.text : { *(.exit.text) } |
175 | .exit.data : { *(.exit.data) } | 175 | .exit.data : { *(.exit.data) } |
176 | #ifdef CONFIG_BLK_DEV_INITRD | ||
176 | . = ALIGN(ASM_PAGE_SIZE); | 177 | . = ALIGN(ASM_PAGE_SIZE); |
177 | __initramfs_start = .; | 178 | __initramfs_start = .; |
178 | .init.ramfs : { *(.init.ramfs) } | 179 | .init.ramfs : { *(.init.ramfs) } |
179 | __initramfs_end = .; | 180 | __initramfs_end = .; |
181 | #endif | ||
180 | . = ALIGN(32); | 182 | . = ALIGN(32); |
181 | __per_cpu_start = .; | 183 | __per_cpu_start = .; |
182 | .data.percpu : { *(.data.percpu) } | 184 | .data.percpu : { *(.data.percpu) } |
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index 0667f2b4f977..12117db0043b 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c | |||
@@ -77,12 +77,11 @@ static void __init mem_limit_func(void) | |||
77 | { | 77 | { |
78 | char *cp, *end; | 78 | char *cp, *end; |
79 | unsigned long limit; | 79 | unsigned long limit; |
80 | extern char saved_command_line[]; | ||
81 | 80 | ||
82 | /* We need this before __setup() functions are called */ | 81 | /* We need this before __setup() functions are called */ |
83 | 82 | ||
84 | limit = MAX_MEM; | 83 | limit = MAX_MEM; |
85 | for (cp = saved_command_line; *cp; ) { | 84 | for (cp = boot_command_line; *cp; ) { |
86 | if (memcmp(cp, "mem=", 4) == 0) { | 85 | if (memcmp(cp, "mem=", 4) == 0) { |
87 | cp += 4; | 86 | cp += 4; |
88 | limit = memparse(cp, &end); | 87 | limit = memparse(cp, &end); |
@@ -808,9 +807,7 @@ void __init paging_init(void) | |||
808 | for (i = 0; i < npmem_ranges; i++) { | 807 | for (i = 0; i < npmem_ranges; i++) { |
809 | unsigned long zones_size[MAX_NR_ZONES] = { 0, }; | 808 | unsigned long zones_size[MAX_NR_ZONES] = { 0, }; |
810 | 809 | ||
811 | /* We have an IOMMU, so all memory can go into a single | 810 | zones_size[ZONE_NORMAL] = pmem_ranges[i].pages; |
812 | ZONE_DMA zone. */ | ||
813 | zones_size[ZONE_DMA] = pmem_ranges[i].pages; | ||
814 | 811 | ||
815 | #ifdef CONFIG_DISCONTIGMEM | 812 | #ifdef CONFIG_DISCONTIGMEM |
816 | /* Need to initialize the pfnnid_map before we can initialize | 813 | /* Need to initialize the pfnnid_map before we can initialize |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index f08e80a0bf0a..340d9beab6d1 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -876,7 +876,7 @@ config ARCH_SPARSEMEM_ENABLE | |||
876 | 876 | ||
877 | config ARCH_SPARSEMEM_DEFAULT | 877 | config ARCH_SPARSEMEM_DEFAULT |
878 | def_bool y | 878 | def_bool y |
879 | depends on (SMP && PPC_PSERIES) || PPC_CELL | 879 | depends on (SMP && PPC_PSERIES) || PPC_PS3 |
880 | 880 | ||
881 | config ARCH_POPULATES_NODE_MAP | 881 | config ARCH_POPULATES_NODE_MAP |
882 | def_bool y | 882 | def_bool y |
@@ -977,6 +977,10 @@ config ISA | |||
977 | have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If | 977 | have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If |
978 | you have an embedded board, consult your board documentation. | 978 | you have an embedded board, consult your board documentation. |
979 | 979 | ||
980 | config ZONE_DMA | ||
981 | bool | ||
982 | default y | ||
983 | |||
980 | config GENERIC_ISA_DMA | 984 | config GENERIC_ISA_DMA |
981 | bool | 985 | bool |
982 | depends on PPC64 || POWER4 || 6xx && !CPM2 | 986 | depends on PPC64 || POWER4 || 6xx && !CPM2 |
diff --git a/arch/powerpc/boot/dts/kuroboxHD.dts b/arch/powerpc/boot/dts/kuroboxHD.dts new file mode 100644 index 000000000000..096e94ac415f --- /dev/null +++ b/arch/powerpc/boot/dts/kuroboxHD.dts | |||
@@ -0,0 +1,148 @@ | |||
1 | /* | ||
2 | * Device Tree Souce for Buffalo KuroboxHD | ||
3 | * | ||
4 | * Choose CONFIG_LINKSTATION to build a kernel for KuroboxHD, or use | ||
5 | * the default configuration linkstation_defconfig. | ||
6 | * | ||
7 | * Based on sandpoint.dts | ||
8 | * | ||
9 | * 2006 (c) G. Liakhovetski <g.liakhovetski@gmx.de> | ||
10 | * | ||
11 | * This file is licensed under | ||
12 | * the terms of the GNU General Public License version 2. This program | ||
13 | * is licensed "as is" without any warranty of any kind, whether express | ||
14 | * or implied. | ||
15 | |||
16 | XXXX add flash parts, rtc, ?? | ||
17 | |||
18 | build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts" | ||
19 | |||
20 | |||
21 | */ | ||
22 | |||
23 | / { | ||
24 | linux,phandle = <1000>; | ||
25 | model = "KuroboxHD"; | ||
26 | compatible = "linkstation"; | ||
27 | #address-cells = <1>; | ||
28 | #size-cells = <1>; | ||
29 | |||
30 | cpus { | ||
31 | linux,phandle = <2000>; | ||
32 | #cpus = <1>; | ||
33 | #address-cells = <1>; | ||
34 | #size-cells = <0>; | ||
35 | |||
36 | PowerPC,603e { /* Really 8241 */ | ||
37 | linux,phandle = <2100>; | ||
38 | linux,boot-cpu; | ||
39 | device_type = "cpu"; | ||
40 | reg = <0>; | ||
41 | clock-frequency = <bebc200>; /* Fixed by bootwrapper */ | ||
42 | timebase-frequency = <1743000>; /* Fixed by bootwrapper */ | ||
43 | bus-frequency = <0>; /* From bootloader */ | ||
44 | /* Following required by dtc but not used */ | ||
45 | i-cache-line-size = <0>; | ||
46 | d-cache-line-size = <0>; | ||
47 | i-cache-size = <4000>; | ||
48 | d-cache-size = <4000>; | ||
49 | }; | ||
50 | }; | ||
51 | |||
52 | memory { | ||
53 | linux,phandle = <3000>; | ||
54 | device_type = "memory"; | ||
55 | reg = <00000000 04000000>; | ||
56 | }; | ||
57 | |||
58 | soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ | ||
59 | linux,phandle = <4000>; | ||
60 | #address-cells = <1>; | ||
61 | #size-cells = <1>; | ||
62 | #interrupt-cells = <2>; | ||
63 | device_type = "soc"; | ||
64 | compatible = "mpc10x"; | ||
65 | store-gathering = <0>; /* 0 == off, !0 == on */ | ||
66 | reg = <80000000 00100000>; | ||
67 | ranges = <80000000 80000000 70000000 /* pci mem space */ | ||
68 | fc000000 fc000000 00100000 /* EUMB */ | ||
69 | fe000000 fe000000 00c00000 /* pci i/o space */ | ||
70 | fec00000 fec00000 00300000 /* pci cfg regs */ | ||
71 | fef00000 fef00000 00100000>; /* pci iack */ | ||
72 | |||
73 | i2c@80003000 { | ||
74 | linux,phandle = <4300>; | ||
75 | device_type = "i2c"; | ||
76 | compatible = "fsl-i2c"; | ||
77 | reg = <80003000 1000>; | ||
78 | interrupts = <5 2>; | ||
79 | interrupt-parent = <4400>; | ||
80 | }; | ||
81 | |||
82 | serial@80004500 { | ||
83 | linux,phandle = <4511>; | ||
84 | device_type = "serial"; | ||
85 | compatible = "ns16550"; | ||
86 | reg = <80004500 8>; | ||
87 | clock-frequency = <5d08d88>; | ||
88 | current-speed = <2580>; | ||
89 | interrupts = <9 2>; | ||
90 | interrupt-parent = <4400>; | ||
91 | }; | ||
92 | |||
93 | serial@80004600 { | ||
94 | linux,phandle = <4512>; | ||
95 | device_type = "serial"; | ||
96 | compatible = "ns16550"; | ||
97 | reg = <80004600 8>; | ||
98 | clock-frequency = <5d08d88>; | ||
99 | current-speed = <e100>; | ||
100 | interrupts = <a 0>; | ||
101 | interrupt-parent = <4400>; | ||
102 | }; | ||
103 | |||
104 | pic@80040000 { | ||
105 | linux,phandle = <4400>; | ||
106 | #interrupt-cells = <2>; | ||
107 | #address-cells = <0>; | ||
108 | device_type = "open-pic"; | ||
109 | compatible = "chrp,open-pic"; | ||
110 | interrupt-controller; | ||
111 | reg = <80040000 40000>; | ||
112 | built-in; | ||
113 | }; | ||
114 | |||
115 | pci@fec00000 { | ||
116 | linux,phandle = <4500>; | ||
117 | #address-cells = <3>; | ||
118 | #size-cells = <2>; | ||
119 | #interrupt-cells = <1>; | ||
120 | device_type = "pci"; | ||
121 | compatible = "mpc10x-pci"; | ||
122 | reg = <fec00000 400000>; | ||
123 | ranges = <01000000 0 0 fe000000 0 00c00000 | ||
124 | 02000000 0 80000000 80000000 0 70000000>; | ||
125 | bus-range = <0 ff>; | ||
126 | clock-frequency = <7f28155>; | ||
127 | interrupt-parent = <4400>; | ||
128 | interrupt-map-mask = <f800 0 0 7>; | ||
129 | interrupt-map = < | ||
130 | /* IDSEL 0x11 - IRQ0 ETH */ | ||
131 | 5800 0 0 1 4400 0 1 | ||
132 | 5800 0 0 2 4400 1 1 | ||
133 | 5800 0 0 3 4400 2 1 | ||
134 | 5800 0 0 4 4400 3 1 | ||
135 | /* IDSEL 0x12 - IRQ1 IDE0 */ | ||
136 | 6000 0 0 1 4400 1 1 | ||
137 | 6000 0 0 2 4400 2 1 | ||
138 | 6000 0 0 3 4400 3 1 | ||
139 | 6000 0 0 4 4400 0 1 | ||
140 | /* IDSEL 0x14 - IRQ3 USB2.0 */ | ||
141 | 7000 0 0 1 4400 3 1 | ||
142 | 7000 0 0 2 4400 3 1 | ||
143 | 7000 0 0 3 4400 3 1 | ||
144 | 7000 0 0 4 4400 3 1 | ||
145 | >; | ||
146 | }; | ||
147 | }; | ||
148 | }; | ||
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts index 186870704ad9..c03103c63285 100644 --- a/arch/powerpc/boot/dts/lite5200.dts +++ b/arch/powerpc/boot/dts/lite5200.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Lite5200 board Device Tree Source | 2 | * Lite5200 board Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 Secret Lab Technologies Ltd. | 4 | * Copyright 2006-2007 Secret Lab Technologies Ltd. |
5 | * Grant Likely <grant.likely@secretlab.ca> | 5 | * Grant Likely <grant.likely@secretlab.ca> |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify it | 7 | * This program is free software; you can redistribute it and/or modify it |
@@ -17,8 +17,9 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | / { | 19 | / { |
20 | model = "Lite5200"; | 20 | model = "fsl,lite5200"; |
21 | compatible = "lite5200\0lite52xx\0mpc5200\0mpc52xx"; | 21 | // revision = "1.0"; |
22 | compatible = "fsl,lite5200\0generic-mpc5200"; | ||
22 | #address-cells = <1>; | 23 | #address-cells = <1>; |
23 | #size-cells = <1>; | 24 | #size-cells = <1>; |
24 | 25 | ||
@@ -47,14 +48,17 @@ | |||
47 | }; | 48 | }; |
48 | 49 | ||
49 | soc5200@f0000000 { | 50 | soc5200@f0000000 { |
51 | model = "fsl,mpc5200"; | ||
52 | revision = "" // from bootloader | ||
50 | #interrupt-cells = <3>; | 53 | #interrupt-cells = <3>; |
51 | device_type = "soc"; | 54 | device_type = "soc"; |
52 | ranges = <0 f0000000 f0010000>; | 55 | ranges = <0 f0000000 f0010000>; |
53 | reg = <f0000000 00010000>; | 56 | reg = <f0000000 00010000>; |
54 | bus-frequency = <0>; // from bootloader | 57 | bus-frequency = <0>; // from bootloader |
58 | system-frequency = <0>; // from bootloader | ||
55 | 59 | ||
56 | cdm@200 { | 60 | cdm@200 { |
57 | compatible = "mpc5200-cdm\0mpc52xx-cdm"; | 61 | compatible = "mpc5200-cdm"; |
58 | reg = <200 38>; | 62 | reg = <200 38>; |
59 | }; | 63 | }; |
60 | 64 | ||
@@ -64,77 +68,86 @@ | |||
64 | interrupt-controller; | 68 | interrupt-controller; |
65 | #interrupt-cells = <3>; | 69 | #interrupt-cells = <3>; |
66 | device_type = "interrupt-controller"; | 70 | device_type = "interrupt-controller"; |
67 | compatible = "mpc5200-pic\0mpc52xx-pic"; | 71 | compatible = "mpc5200-pic"; |
68 | reg = <500 80>; | 72 | reg = <500 80>; |
69 | built-in; | 73 | built-in; |
70 | }; | 74 | }; |
71 | 75 | ||
72 | gpt@600 { // General Purpose Timer | 76 | gpt@600 { // General Purpose Timer |
73 | compatible = "mpc5200-gpt\0mpc52xx-gpt"; | 77 | compatible = "mpc5200-gpt"; |
74 | device_type = "gpt"; | 78 | device_type = "gpt"; |
79 | cell-index = <0>; | ||
75 | reg = <600 10>; | 80 | reg = <600 10>; |
76 | interrupts = <1 9 0>; | 81 | interrupts = <1 9 0>; |
77 | interrupt-parent = <500>; | 82 | interrupt-parent = <500>; |
83 | has-wdt; | ||
78 | }; | 84 | }; |
79 | 85 | ||
80 | gpt@610 { // General Purpose Timer | 86 | gpt@610 { // General Purpose Timer |
81 | compatible = "mpc5200-gpt\0mpc52xx-gpt"; | 87 | compatible = "mpc5200-gpt"; |
82 | device_type = "gpt"; | 88 | device_type = "gpt"; |
89 | cell-index = <1>; | ||
83 | reg = <610 10>; | 90 | reg = <610 10>; |
84 | interrupts = <1 a 0>; | 91 | interrupts = <1 a 0>; |
85 | interrupt-parent = <500>; | 92 | interrupt-parent = <500>; |
86 | }; | 93 | }; |
87 | 94 | ||
88 | gpt@620 { // General Purpose Timer | 95 | gpt@620 { // General Purpose Timer |
89 | compatible = "mpc5200-gpt\0mpc52xx-gpt"; | 96 | compatible = "mpc5200-gpt"; |
90 | device_type = "gpt"; | 97 | device_type = "gpt"; |
98 | cell-index = <2>; | ||
91 | reg = <620 10>; | 99 | reg = <620 10>; |
92 | interrupts = <1 b 0>; | 100 | interrupts = <1 b 0>; |
93 | interrupt-parent = <500>; | 101 | interrupt-parent = <500>; |
94 | }; | 102 | }; |
95 | 103 | ||
96 | gpt@630 { // General Purpose Timer | 104 | gpt@630 { // General Purpose Timer |
97 | compatible = "mpc5200-gpt\0mpc52xx-gpt"; | 105 | compatible = "mpc5200-gpt"; |
98 | device_type = "gpt"; | 106 | device_type = "gpt"; |
107 | cell-index = <3>; | ||
99 | reg = <630 10>; | 108 | reg = <630 10>; |
100 | interrupts = <1 c 0>; | 109 | interrupts = <1 c 0>; |
101 | interrupt-parent = <500>; | 110 | interrupt-parent = <500>; |
102 | }; | 111 | }; |
103 | 112 | ||
104 | gpt@640 { // General Purpose Timer | 113 | gpt@640 { // General Purpose Timer |
105 | compatible = "mpc5200-gpt\0mpc52xx-gpt"; | 114 | compatible = "mpc5200-gpt"; |
106 | device_type = "gpt"; | 115 | device_type = "gpt"; |
116 | cell-index = <4>; | ||
107 | reg = <640 10>; | 117 | reg = <640 10>; |
108 | interrupts = <1 d 0>; | 118 | interrupts = <1 d 0>; |
109 | interrupt-parent = <500>; | 119 | interrupt-parent = <500>; |
110 | }; | 120 | }; |
111 | 121 | ||
112 | gpt@650 { // General Purpose Timer | 122 | gpt@650 { // General Purpose Timer |
113 | compatible = "mpc5200-gpt\0mpc52xx-gpt"; | 123 | compatible = "mpc5200-gpt"; |
114 | device_type = "gpt"; | 124 | device_type = "gpt"; |
125 | cell-index = <5>; | ||
115 | reg = <650 10>; | 126 | reg = <650 10>; |
116 | interrupts = <1 e 0>; | 127 | interrupts = <1 e 0>; |
117 | interrupt-parent = <500>; | 128 | interrupt-parent = <500>; |
118 | }; | 129 | }; |
119 | 130 | ||
120 | gpt@660 { // General Purpose Timer | 131 | gpt@660 { // General Purpose Timer |
121 | compatible = "mpc5200-gpt\0mpc52xx-gpt"; | 132 | compatible = "mpc5200-gpt"; |
122 | device_type = "gpt"; | 133 | device_type = "gpt"; |
134 | cell-index = <6>; | ||
123 | reg = <660 10>; | 135 | reg = <660 10>; |
124 | interrupts = <1 f 0>; | 136 | interrupts = <1 f 0>; |
125 | interrupt-parent = <500>; | 137 | interrupt-parent = <500>; |
126 | }; | 138 | }; |
127 | 139 | ||
128 | gpt@670 { // General Purpose Timer | 140 | gpt@670 { // General Purpose Timer |
129 | compatible = "mpc5200-gpt\0mpc52xx-gpt"; | 141 | compatible = "mpc5200-gpt"; |
130 | device_type = "gpt"; | 142 | device_type = "gpt"; |
143 | cell-index = <7>; | ||
131 | reg = <670 10>; | 144 | reg = <670 10>; |
132 | interrupts = <1 10 0>; | 145 | interrupts = <1 10 0>; |
133 | interrupt-parent = <500>; | 146 | interrupt-parent = <500>; |
134 | }; | 147 | }; |
135 | 148 | ||
136 | rtc@800 { // Real time clock | 149 | rtc@800 { // Real time clock |
137 | compatible = "mpc5200-rtc\0mpc52xx-rtc"; | 150 | compatible = "mpc5200-rtc"; |
138 | device_type = "rtc"; | 151 | device_type = "rtc"; |
139 | reg = <800 100>; | 152 | reg = <800 100>; |
140 | interrupts = <1 5 0 1 6 0>; | 153 | interrupts = <1 5 0 1 6 0>; |
@@ -143,7 +156,8 @@ | |||
143 | 156 | ||
144 | mscan@900 { | 157 | mscan@900 { |
145 | device_type = "mscan"; | 158 | device_type = "mscan"; |
146 | compatible = "mpc5200-mscan\0mpc52xx-mscan"; | 159 | compatible = "mpc5200-mscan"; |
160 | cell-index = <0>; | ||
147 | interrupts = <2 11 0>; | 161 | interrupts = <2 11 0>; |
148 | interrupt-parent = <500>; | 162 | interrupt-parent = <500>; |
149 | reg = <900 80>; | 163 | reg = <900 80>; |
@@ -151,21 +165,22 @@ | |||
151 | 165 | ||
152 | mscan@980 { | 166 | mscan@980 { |
153 | device_type = "mscan"; | 167 | device_type = "mscan"; |
154 | compatible = "mpc5200-mscan\0mpc52xx-mscan"; | 168 | compatible = "mpc5200-mscan"; |
169 | cell-index = <1>; | ||
155 | interrupts = <1 12 0>; | 170 | interrupts = <1 12 0>; |
156 | interrupt-parent = <500>; | 171 | interrupt-parent = <500>; |
157 | reg = <980 80>; | 172 | reg = <980 80>; |
158 | }; | 173 | }; |
159 | 174 | ||
160 | gpio@b00 { | 175 | gpio@b00 { |
161 | compatible = "mpc5200-gpio\0mpc52xx-gpio"; | 176 | compatible = "mpc5200-gpio"; |
162 | reg = <b00 40>; | 177 | reg = <b00 40>; |
163 | interrupts = <1 7 0>; | 178 | interrupts = <1 7 0>; |
164 | interrupt-parent = <500>; | 179 | interrupt-parent = <500>; |
165 | }; | 180 | }; |
166 | 181 | ||
167 | gpio-wkup@b00 { | 182 | gpio-wkup@b00 { |
168 | compatible = "mpc5200-gpio-wkup\0mpc52xx-gpio-wkup"; | 183 | compatible = "mpc5200-gpio-wkup"; |
169 | reg = <c00 40>; | 184 | reg = <c00 40>; |
170 | interrupts = <1 8 0 0 3 0>; | 185 | interrupts = <1 8 0 0 3 0>; |
171 | interrupt-parent = <500>; | 186 | interrupt-parent = <500>; |
@@ -176,7 +191,7 @@ | |||
176 | #size-cells = <2>; | 191 | #size-cells = <2>; |
177 | #address-cells = <3>; | 192 | #address-cells = <3>; |
178 | device_type = "pci"; | 193 | device_type = "pci"; |
179 | compatible = "mpc5200-pci\0mpc52xx-pci"; | 194 | compatible = "mpc5200-pci"; |
180 | reg = <d00 100>; | 195 | reg = <d00 100>; |
181 | interrupt-map-mask = <f800 0 0 7>; | 196 | interrupt-map-mask = <f800 0 0 7>; |
182 | interrupt-map = <c000 0 0 1 500 0 0 3 | 197 | interrupt-map = <c000 0 0 1 500 0 0 3 |
@@ -194,7 +209,7 @@ | |||
194 | 209 | ||
195 | spi@f00 { | 210 | spi@f00 { |
196 | device_type = "spi"; | 211 | device_type = "spi"; |
197 | compatible = "mpc5200-spi\0mpc52xx-spi"; | 212 | compatible = "mpc5200-spi"; |
198 | reg = <f00 20>; | 213 | reg = <f00 20>; |
199 | interrupts = <2 d 0 2 e 0>; | 214 | interrupts = <2 d 0 2 e 0>; |
200 | interrupt-parent = <500>; | 215 | interrupt-parent = <500>; |
@@ -202,7 +217,7 @@ | |||
202 | 217 | ||
203 | usb@1000 { | 218 | usb@1000 { |
204 | device_type = "usb-ohci-be"; | 219 | device_type = "usb-ohci-be"; |
205 | compatible = "mpc5200-ohci\0mpc52xx-ohci\0ohci-be"; | 220 | compatible = "mpc5200-ohci\0ohci-be"; |
206 | reg = <1000 ff>; | 221 | reg = <1000 ff>; |
207 | interrupts = <2 6 0>; | 222 | interrupts = <2 6 0>; |
208 | interrupt-parent = <500>; | 223 | interrupt-parent = <500>; |
@@ -210,7 +225,7 @@ | |||
210 | 225 | ||
211 | bestcomm@1200 { | 226 | bestcomm@1200 { |
212 | device_type = "dma-controller"; | 227 | device_type = "dma-controller"; |
213 | compatible = "mpc5200-bestcomm\0mpc52xx-bestcomm"; | 228 | compatible = "mpc5200-bestcomm"; |
214 | reg = <1200 80>; | 229 | reg = <1200 80>; |
215 | interrupts = <3 0 0 3 1 0 3 2 0 3 3 0 | 230 | interrupts = <3 0 0 3 1 0 3 2 0 3 3 0 |
216 | 3 4 0 3 5 0 3 6 0 3 7 0 | 231 | 3 4 0 3 5 0 3 6 0 3 7 0 |
@@ -220,67 +235,73 @@ | |||
220 | }; | 235 | }; |
221 | 236 | ||
222 | xlb@1f00 { | 237 | xlb@1f00 { |
223 | compatible = "mpc5200-xlb\0mpc52xx-xlb"; | 238 | compatible = "mpc5200-xlb"; |
224 | reg = <1f00 100>; | 239 | reg = <1f00 100>; |
225 | }; | 240 | }; |
226 | 241 | ||
227 | serial@2000 { // PSC1 | 242 | serial@2000 { // PSC1 |
228 | device_type = "serial"; | 243 | device_type = "serial"; |
229 | compatible = "mpc5200-psc-uart\0mpc52xx-psc-uart"; | 244 | compatible = "mpc5200-psc-uart"; |
230 | port-number = <0>; // Logical port assignment | 245 | port-number = <0>; // Logical port assignment |
246 | cell-index = <0>; | ||
231 | reg = <2000 100>; | 247 | reg = <2000 100>; |
232 | interrupts = <2 1 0>; | 248 | interrupts = <2 1 0>; |
233 | interrupt-parent = <500>; | 249 | interrupt-parent = <500>; |
234 | }; | 250 | }; |
235 | 251 | ||
236 | // PSC2 in spi mode example | 252 | // PSC2 in ac97 mode example |
237 | spi@2200 { // PSC2 | 253 | //ac97@2200 { // PSC2 |
238 | device_type = "spi"; | 254 | // device_type = "sound"; |
239 | compatible = "mpc5200-psc-spi\0mpc52xx-psc-spi"; | 255 | // compatible = "mpc5200-psc-ac97"; |
240 | reg = <2200 100>; | 256 | // cell-index = <1>; |
241 | interrupts = <2 2 0>; | 257 | // reg = <2200 100>; |
242 | interrupt-parent = <500>; | 258 | // interrupts = <2 2 0>; |
243 | }; | 259 | // interrupt-parent = <500>; |
260 | //}; | ||
244 | 261 | ||
245 | // PSC3 in CODEC mode example | 262 | // PSC3 in CODEC mode example |
246 | i2s@2400 { // PSC3 | 263 | //i2s@2400 { // PSC3 |
247 | device_type = "sound"; | 264 | // device_type = "sound"; |
248 | compatible = "mpc5200-psc-i2s\0mpc52xx-psc-i2s"; | 265 | // compatible = "mpc5200-psc-i2s"; |
249 | reg = <2400 100>; | 266 | // cell-index = <2>; |
250 | interrupts = <2 3 0>; | 267 | // reg = <2400 100>; |
251 | interrupt-parent = <500>; | 268 | // interrupts = <2 3 0>; |
252 | }; | 269 | // interrupt-parent = <500>; |
270 | //}; | ||
253 | 271 | ||
254 | // PSC4 unconfigured | 272 | // PSC4 in uart mode example |
255 | //serial@2600 { // PSC4 | 273 | //serial@2600 { // PSC4 |
256 | // device_type = "serial"; | 274 | // device_type = "serial"; |
257 | // compatible = "mpc5200-psc-uart\0mpc52xx-psc-uart"; | 275 | // compatible = "mpc5200-psc-uart"; |
276 | // cell-index = <3>; | ||
258 | // reg = <2600 100>; | 277 | // reg = <2600 100>; |
259 | // interrupts = <2 b 0>; | 278 | // interrupts = <2 b 0>; |
260 | // interrupt-parent = <500>; | 279 | // interrupt-parent = <500>; |
261 | //}; | 280 | //}; |
262 | 281 | ||
263 | // PSC5 unconfigured | 282 | // PSC5 in uart mode example |
264 | //serial@2800 { // PSC5 | 283 | //serial@2800 { // PSC5 |
265 | // device_type = "serial"; | 284 | // device_type = "serial"; |
266 | // compatible = "mpc5200-psc-uart\0mpc52xx-psc-uart"; | 285 | // compatible = "mpc5200-psc-uart"; |
286 | // cell-index = <4>; | ||
267 | // reg = <2800 100>; | 287 | // reg = <2800 100>; |
268 | // interrupts = <2 c 0>; | 288 | // interrupts = <2 c 0>; |
269 | // interrupt-parent = <500>; | 289 | // interrupt-parent = <500>; |
270 | //}; | 290 | //}; |
271 | 291 | ||
272 | // PSC6 in AC97 mode example | 292 | // PSC6 in spi mode example |
273 | ac97@2c00 { // PSC6 | 293 | //spi@2c00 { // PSC6 |
274 | device_type = "sound"; | 294 | // device_type = "spi"; |
275 | compatible = "mpc5200-psc-ac97\0mpc52xx-psc-ac97"; | 295 | // compatible = "mpc5200-psc-spi"; |
276 | reg = <2c00 100>; | 296 | // cell-index = <5>; |
277 | interrupts = <2 4 0>; | 297 | // reg = <2c00 100>; |
278 | interrupt-parent = <500>; | 298 | // interrupts = <2 4 0>; |
279 | }; | 299 | // interrupt-parent = <500>; |
300 | //}; | ||
280 | 301 | ||
281 | ethernet@3000 { | 302 | ethernet@3000 { |
282 | device_type = "network"; | 303 | device_type = "network"; |
283 | compatible = "mpc5200-fec\0mpc52xx-fec"; | 304 | compatible = "mpc5200-fec"; |
284 | reg = <3000 800>; | 305 | reg = <3000 800>; |
285 | mac-address = [ 02 03 04 05 06 07 ]; // Bad! | 306 | mac-address = [ 02 03 04 05 06 07 ]; // Bad! |
286 | interrupts = <2 5 0>; | 307 | interrupts = <2 5 0>; |
@@ -289,7 +310,7 @@ | |||
289 | 310 | ||
290 | ata@3a00 { | 311 | ata@3a00 { |
291 | device_type = "ata"; | 312 | device_type = "ata"; |
292 | compatible = "mpc5200-ata\0mpc52xx-ata"; | 313 | compatible = "mpc5200-ata"; |
293 | reg = <3a00 100>; | 314 | reg = <3a00 100>; |
294 | interrupts = <2 7 0>; | 315 | interrupts = <2 7 0>; |
295 | interrupt-parent = <500>; | 316 | interrupt-parent = <500>; |
@@ -297,7 +318,8 @@ | |||
297 | 318 | ||
298 | i2c@3d00 { | 319 | i2c@3d00 { |
299 | device_type = "i2c"; | 320 | device_type = "i2c"; |
300 | compatible = "mpc5200-i2c\0mpc52xx-i2c"; | 321 | compatible = "mpc5200-i2c"; |
322 | cell-index = <0>; | ||
301 | reg = <3d00 40>; | 323 | reg = <3d00 40>; |
302 | interrupts = <2 f 0>; | 324 | interrupts = <2 f 0>; |
303 | interrupt-parent = <500>; | 325 | interrupt-parent = <500>; |
@@ -305,14 +327,15 @@ | |||
305 | 327 | ||
306 | i2c@3d40 { | 328 | i2c@3d40 { |
307 | device_type = "i2c"; | 329 | device_type = "i2c"; |
308 | compatible = "mpc5200-i2c\0mpc52xx-i2c"; | 330 | compatible = "mpc5200-i2c"; |
331 | cell-index = <1>; | ||
309 | reg = <3d40 40>; | 332 | reg = <3d40 40>; |
310 | interrupts = <2 10 0>; | 333 | interrupts = <2 10 0>; |
311 | interrupt-parent = <500>; | 334 | interrupt-parent = <500>; |
312 | }; | 335 | }; |
313 | sram@8000 { | 336 | sram@8000 { |
314 | device_type = "sram"; | 337 | device_type = "sram"; |
315 | compatible = "mpc5200-sram\0mpc52xx-sram\0sram"; | 338 | compatible = "mpc5200-sram\0sram"; |
316 | reg = <8000 4000>; | 339 | reg = <8000 4000>; |
317 | }; | 340 | }; |
318 | }; | 341 | }; |
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts index 5bb2760d7c30..3875ca9a9a62 100644 --- a/arch/powerpc/boot/dts/lite5200b.dts +++ b/arch/powerpc/boot/dts/lite5200b.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Lite5200B board Device Tree Source | 2 | * Lite5200B board Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 Secret Lab Technologies Ltd. | 4 | * Copyright 2006-2007 Secret Lab Technologies Ltd. |
5 | * Grant Likely <grant.likely@secretlab.ca> | 5 | * Grant Likely <grant.likely@secretlab.ca> |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify it | 7 | * This program is free software; you can redistribute it and/or modify it |
@@ -17,8 +17,9 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | / { | 19 | / { |
20 | model = "Lite5200b"; | 20 | model = "fsl,lite5200b"; |
21 | compatible = "lite5200b\0lite52xx\0mpc5200b\0mpc52xx"; | 21 | // revision = "1.0"; |
22 | compatible = "fsl,lite5200b\0generic-mpc5200"; | ||
22 | #address-cells = <1>; | 23 | #address-cells = <1>; |
23 | #size-cells = <1>; | 24 | #size-cells = <1>; |
24 | 25 | ||
@@ -47,14 +48,17 @@ | |||
47 | }; | 48 | }; |
48 | 49 | ||
49 | soc5200@f0000000 { | 50 | soc5200@f0000000 { |
51 | model = "fsl,mpc5200b"; | ||
52 | revision = ""; // from bootloader | ||
50 | #interrupt-cells = <3>; | 53 | #interrupt-cells = <3>; |
51 | device_type = "soc"; | 54 | device_type = "soc"; |
52 | ranges = <0 f0000000 f0010000>; | 55 | ranges = <0 f0000000 f0010000>; |
53 | reg = <f0000000 00010000>; | 56 | reg = <f0000000 00010000>; |
54 | bus-frequency = <0>; // from bootloader | 57 | bus-frequency = <0>; // from bootloader |
58 | system-frequency = <0>; // from bootloader | ||
55 | 59 | ||
56 | cdm@200 { | 60 | cdm@200 { |
57 | compatible = "mpc5200b-cdm\0mpc52xx-cdm"; | 61 | compatible = "mpc5200b-cdm\0mpc5200-cdm"; |
58 | reg = <200 38>; | 62 | reg = <200 38>; |
59 | }; | 63 | }; |
60 | 64 | ||
@@ -64,77 +68,86 @@ | |||
64 | interrupt-controller; | 68 | interrupt-controller; |
65 | #interrupt-cells = <3>; | 69 | #interrupt-cells = <3>; |
66 | device_type = "interrupt-controller"; | 70 | device_type = "interrupt-controller"; |
67 | compatible = "mpc5200b-pic\0mpc52xx-pic"; | 71 | compatible = "mpc5200b-pic\0mpc5200-pic"; |
68 | reg = <500 80>; | 72 | reg = <500 80>; |
69 | built-in; | 73 | built-in; |
70 | }; | 74 | }; |
71 | 75 | ||
72 | gpt@600 { // General Purpose Timer | 76 | gpt@600 { // General Purpose Timer |
73 | compatible = "mpc5200b-gpt\0mpc52xx-gpt"; | 77 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; |
74 | device_type = "gpt"; | 78 | device_type = "gpt"; |
79 | cell-index = <0>; | ||
75 | reg = <600 10>; | 80 | reg = <600 10>; |
76 | interrupts = <1 9 0>; | 81 | interrupts = <1 9 0>; |
77 | interrupt-parent = <500>; | 82 | interrupt-parent = <500>; |
83 | has-wdt; | ||
78 | }; | 84 | }; |
79 | 85 | ||
80 | gpt@610 { // General Purpose Timer | 86 | gpt@610 { // General Purpose Timer |
81 | compatible = "mpc5200b-gpt\0mpc52xx-gpt"; | 87 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; |
82 | device_type = "gpt"; | 88 | device_type = "gpt"; |
89 | cell-index = <1>; | ||
83 | reg = <610 10>; | 90 | reg = <610 10>; |
84 | interrupts = <1 a 0>; | 91 | interrupts = <1 a 0>; |
85 | interrupt-parent = <500>; | 92 | interrupt-parent = <500>; |
86 | }; | 93 | }; |
87 | 94 | ||
88 | gpt@620 { // General Purpose Timer | 95 | gpt@620 { // General Purpose Timer |
89 | compatible = "mpc5200b-gpt\0mpc52xx-gpt"; | 96 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; |
90 | device_type = "gpt"; | 97 | device_type = "gpt"; |
98 | cell-index = <2>; | ||
91 | reg = <620 10>; | 99 | reg = <620 10>; |
92 | interrupts = <1 b 0>; | 100 | interrupts = <1 b 0>; |
93 | interrupt-parent = <500>; | 101 | interrupt-parent = <500>; |
94 | }; | 102 | }; |
95 | 103 | ||
96 | gpt@630 { // General Purpose Timer | 104 | gpt@630 { // General Purpose Timer |
97 | compatible = "mpc5200b-gpt\0mpc52xx-gpt"; | 105 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; |
98 | device_type = "gpt"; | 106 | device_type = "gpt"; |
107 | cell-index = <3>; | ||
99 | reg = <630 10>; | 108 | reg = <630 10>; |
100 | interrupts = <1 c 0>; | 109 | interrupts = <1 c 0>; |
101 | interrupt-parent = <500>; | 110 | interrupt-parent = <500>; |
102 | }; | 111 | }; |
103 | 112 | ||
104 | gpt@640 { // General Purpose Timer | 113 | gpt@640 { // General Purpose Timer |
105 | compatible = "mpc5200b-gpt\0mpc52xx-gpt"; | 114 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; |
106 | device_type = "gpt"; | 115 | device_type = "gpt"; |
116 | cell-index = <4>; | ||
107 | reg = <640 10>; | 117 | reg = <640 10>; |
108 | interrupts = <1 d 0>; | 118 | interrupts = <1 d 0>; |
109 | interrupt-parent = <500>; | 119 | interrupt-parent = <500>; |
110 | }; | 120 | }; |
111 | 121 | ||
112 | gpt@650 { // General Purpose Timer | 122 | gpt@650 { // General Purpose Timer |
113 | compatible = "mpc5200b-gpt\0mpc52xx-gpt"; | 123 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; |
114 | device_type = "gpt"; | 124 | device_type = "gpt"; |
125 | cell-index = <5>; | ||
115 | reg = <650 10>; | 126 | reg = <650 10>; |
116 | interrupts = <1 e 0>; | 127 | interrupts = <1 e 0>; |
117 | interrupt-parent = <500>; | 128 | interrupt-parent = <500>; |
118 | }; | 129 | }; |
119 | 130 | ||
120 | gpt@660 { // General Purpose Timer | 131 | gpt@660 { // General Purpose Timer |
121 | compatible = "mpc5200b-gpt\0mpc52xx-gpt"; | 132 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; |
122 | device_type = "gpt"; | 133 | device_type = "gpt"; |
134 | cell-index = <6>; | ||
123 | reg = <660 10>; | 135 | reg = <660 10>; |
124 | interrupts = <1 f 0>; | 136 | interrupts = <1 f 0>; |
125 | interrupt-parent = <500>; | 137 | interrupt-parent = <500>; |
126 | }; | 138 | }; |
127 | 139 | ||
128 | gpt@670 { // General Purpose Timer | 140 | gpt@670 { // General Purpose Timer |
129 | compatible = "mpc5200b-gpt\0mpc52xx-gpt"; | 141 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; |
130 | device_type = "gpt"; | 142 | device_type = "gpt"; |
143 | cell-index = <7>; | ||
131 | reg = <670 10>; | 144 | reg = <670 10>; |
132 | interrupts = <1 10 0>; | 145 | interrupts = <1 10 0>; |
133 | interrupt-parent = <500>; | 146 | interrupt-parent = <500>; |
134 | }; | 147 | }; |
135 | 148 | ||
136 | rtc@800 { // Real time clock | 149 | rtc@800 { // Real time clock |
137 | compatible = "mpc5200b-rtc\0mpc52xx-rtc"; | 150 | compatible = "mpc5200b-rtc\0mpc5200-rtc"; |
138 | device_type = "rtc"; | 151 | device_type = "rtc"; |
139 | reg = <800 100>; | 152 | reg = <800 100>; |
140 | interrupts = <1 5 0 1 6 0>; | 153 | interrupts = <1 5 0 1 6 0>; |
@@ -143,7 +156,8 @@ | |||
143 | 156 | ||
144 | mscan@900 { | 157 | mscan@900 { |
145 | device_type = "mscan"; | 158 | device_type = "mscan"; |
146 | compatible = "mpc5200b-mscan\0mpc52xx-mscan"; | 159 | compatible = "mpc5200b-mscan\0mpc5200-mscan"; |
160 | cell-index = <0>; | ||
147 | interrupts = <2 11 0>; | 161 | interrupts = <2 11 0>; |
148 | interrupt-parent = <500>; | 162 | interrupt-parent = <500>; |
149 | reg = <900 80>; | 163 | reg = <900 80>; |
@@ -151,21 +165,22 @@ | |||
151 | 165 | ||
152 | mscan@980 { | 166 | mscan@980 { |
153 | device_type = "mscan"; | 167 | device_type = "mscan"; |
154 | compatible = "mpc5200b-mscan\0mpc52xx-mscan"; | 168 | compatible = "mpc5200b-mscan\0mpc5200-mscan"; |
169 | cell-index = <1>; | ||
155 | interrupts = <1 12 0>; | 170 | interrupts = <1 12 0>; |
156 | interrupt-parent = <500>; | 171 | interrupt-parent = <500>; |
157 | reg = <980 80>; | 172 | reg = <980 80>; |
158 | }; | 173 | }; |
159 | 174 | ||
160 | gpio@b00 { | 175 | gpio@b00 { |
161 | compatible = "mpc5200b-gpio\0mpc52xx-gpio"; | 176 | compatible = "mpc5200b-gpio\0mpc5200-gpio"; |
162 | reg = <b00 40>; | 177 | reg = <b00 40>; |
163 | interrupts = <1 7 0>; | 178 | interrupts = <1 7 0>; |
164 | interrupt-parent = <500>; | 179 | interrupt-parent = <500>; |
165 | }; | 180 | }; |
166 | 181 | ||
167 | gpio-wkup@b00 { | 182 | gpio-wkup@b00 { |
168 | compatible = "mpc5200b-gpio-wkup\0mpc52xx-gpio-wkup"; | 183 | compatible = "mpc5200b-gpio-wkup\0mpc5200-gpio-wkup"; |
169 | reg = <c00 40>; | 184 | reg = <c00 40>; |
170 | interrupts = <1 8 0 0 3 0>; | 185 | interrupts = <1 8 0 0 3 0>; |
171 | interrupt-parent = <500>; | 186 | interrupt-parent = <500>; |
@@ -176,7 +191,7 @@ | |||
176 | #size-cells = <2>; | 191 | #size-cells = <2>; |
177 | #address-cells = <3>; | 192 | #address-cells = <3>; |
178 | device_type = "pci"; | 193 | device_type = "pci"; |
179 | compatible = "mpc5200b-pci\0mpc52xx-pci"; | 194 | compatible = "mpc5200b-pci\0mpc5200-pci"; |
180 | reg = <d00 100>; | 195 | reg = <d00 100>; |
181 | interrupt-map-mask = <f800 0 0 7>; | 196 | interrupt-map-mask = <f800 0 0 7>; |
182 | interrupt-map = <c000 0 0 1 500 0 0 3 // 1st slot | 197 | interrupt-map = <c000 0 0 1 500 0 0 3 // 1st slot |
@@ -199,7 +214,7 @@ | |||
199 | 214 | ||
200 | spi@f00 { | 215 | spi@f00 { |
201 | device_type = "spi"; | 216 | device_type = "spi"; |
202 | compatible = "mpc5200b-spi\0mpc52xx-spi"; | 217 | compatible = "mpc5200b-spi\0mpc5200-spi"; |
203 | reg = <f00 20>; | 218 | reg = <f00 20>; |
204 | interrupts = <2 d 0 2 e 0>; | 219 | interrupts = <2 d 0 2 e 0>; |
205 | interrupt-parent = <500>; | 220 | interrupt-parent = <500>; |
@@ -207,7 +222,7 @@ | |||
207 | 222 | ||
208 | usb@1000 { | 223 | usb@1000 { |
209 | device_type = "usb-ohci-be"; | 224 | device_type = "usb-ohci-be"; |
210 | compatible = "mpc5200b-ohci\0mpc52xx-ohci\0ohci-be"; | 225 | compatible = "mpc5200b-ohci\0mpc5200-ohci\0ohci-be"; |
211 | reg = <1000 ff>; | 226 | reg = <1000 ff>; |
212 | interrupts = <2 6 0>; | 227 | interrupts = <2 6 0>; |
213 | interrupt-parent = <500>; | 228 | interrupt-parent = <500>; |
@@ -215,7 +230,7 @@ | |||
215 | 230 | ||
216 | bestcomm@1200 { | 231 | bestcomm@1200 { |
217 | device_type = "dma-controller"; | 232 | device_type = "dma-controller"; |
218 | compatible = "mpc5200b-bestcomm\0mpc52xx-bestcomm"; | 233 | compatible = "mpc5200b-bestcomm\0mpc5200-bestcomm"; |
219 | reg = <1200 80>; | 234 | reg = <1200 80>; |
220 | interrupts = <3 0 0 3 1 0 3 2 0 3 3 0 | 235 | interrupts = <3 0 0 3 1 0 3 2 0 3 3 0 |
221 | 3 4 0 3 5 0 3 6 0 3 7 0 | 236 | 3 4 0 3 5 0 3 6 0 3 7 0 |
@@ -225,67 +240,73 @@ | |||
225 | }; | 240 | }; |
226 | 241 | ||
227 | xlb@1f00 { | 242 | xlb@1f00 { |
228 | compatible = "mpc5200b-xlb\0mpc52xx-xlb"; | 243 | compatible = "mpc5200b-xlb\0mpc5200-xlb"; |
229 | reg = <1f00 100>; | 244 | reg = <1f00 100>; |
230 | }; | 245 | }; |
231 | 246 | ||
232 | serial@2000 { // PSC1 | 247 | serial@2000 { // PSC1 |
233 | device_type = "serial"; | 248 | device_type = "serial"; |
234 | compatible = "mpc5200b-psc-uart\0mpc52xx-psc-uart"; | 249 | compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart"; |
235 | port-number = <0>; // Logical port assignment | 250 | port-number = <0>; // Logical port assignment |
251 | cell-index = <0>; | ||
236 | reg = <2000 100>; | 252 | reg = <2000 100>; |
237 | interrupts = <2 1 0>; | 253 | interrupts = <2 1 0>; |
238 | interrupt-parent = <500>; | 254 | interrupt-parent = <500>; |
239 | }; | 255 | }; |
240 | 256 | ||
241 | // PSC2 in spi mode example | 257 | // PSC2 in ac97 mode example |
242 | spi@2200 { // PSC2 | 258 | //ac97@2200 { // PSC2 |
243 | device_type = "spi"; | 259 | // device_type = "sound"; |
244 | compatible = "mpc5200b-psc-spi\0mpc52xx-psc-spi"; | 260 | // compatible = "mpc5200b-psc-ac97\0mpc5200-psc-ac97"; |
245 | reg = <2200 100>; | 261 | // cell-index = <1>; |
246 | interrupts = <2 2 0>; | 262 | // reg = <2200 100>; |
247 | interrupt-parent = <500>; | 263 | // interrupts = <2 2 0>; |
248 | }; | 264 | // interrupt-parent = <500>; |
265 | //}; | ||
249 | 266 | ||
250 | // PSC3 in CODEC mode example | 267 | // PSC3 in CODEC mode example |
251 | i2s@2400 { // PSC3 | 268 | //i2s@2400 { // PSC3 |
252 | device_type = "sound"; | 269 | // device_type = "sound"; |
253 | compatible = "mpc5200b-psc-i2s\0mpc52xx-psc-i2s"; | 270 | // compatible = "mpc5200b-psc-i2s"; //not 5200 compatible |
254 | reg = <2400 100>; | 271 | // cell-index = <2>; |
255 | interrupts = <2 3 0>; | 272 | // reg = <2400 100>; |
256 | interrupt-parent = <500>; | 273 | // interrupts = <2 3 0>; |
257 | }; | 274 | // interrupt-parent = <500>; |
275 | //}; | ||
258 | 276 | ||
259 | // PSC4 unconfigured | 277 | // PSC4 in uart mode example |
260 | //serial@2600 { // PSC4 | 278 | //serial@2600 { // PSC4 |
261 | // device_type = "serial"; | 279 | // device_type = "serial"; |
262 | // compatible = "mpc5200b-psc-uart\0mpc52xx-psc-uart"; | 280 | // compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart"; |
281 | // cell-index = <3>; | ||
263 | // reg = <2600 100>; | 282 | // reg = <2600 100>; |
264 | // interrupts = <2 b 0>; | 283 | // interrupts = <2 b 0>; |
265 | // interrupt-parent = <500>; | 284 | // interrupt-parent = <500>; |
266 | //}; | 285 | //}; |
267 | 286 | ||
268 | // PSC5 unconfigured | 287 | // PSC5 in uart mode example |
269 | //serial@2800 { // PSC5 | 288 | //serial@2800 { // PSC5 |
270 | // device_type = "serial"; | 289 | // device_type = "serial"; |
271 | // compatible = "mpc5200b-psc-uart\0mpc52xx-psc-uart"; | 290 | // compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart"; |
291 | // cell-index = <4>; | ||
272 | // reg = <2800 100>; | 292 | // reg = <2800 100>; |
273 | // interrupts = <2 c 0>; | 293 | // interrupts = <2 c 0>; |
274 | // interrupt-parent = <500>; | 294 | // interrupt-parent = <500>; |
275 | //}; | 295 | //}; |
276 | 296 | ||
277 | // PSC6 in AC97 mode example | 297 | // PSC6 in spi mode example |
278 | ac97@2c00 { // PSC6 | 298 | //spi@2c00 { // PSC6 |
279 | device_type = "sound"; | 299 | // device_type = "spi"; |
280 | compatible = "mpc5200b-psc-ac97\0mpc52xx-psc-ac97"; | 300 | // compatible = "mpc5200b-psc-spi\0mpc5200-psc-spi"; |
281 | reg = <2c00 100>; | 301 | // cell-index = <5>; |
282 | interrupts = <2 4 0>; | 302 | // reg = <2c00 100>; |
283 | interrupt-parent = <500>; | 303 | // interrupts = <2 4 0>; |
284 | }; | 304 | // interrupt-parent = <500>; |
305 | //}; | ||
285 | 306 | ||
286 | ethernet@3000 { | 307 | ethernet@3000 { |
287 | device_type = "network"; | 308 | device_type = "network"; |
288 | compatible = "mpc5200b-fec\0mpc52xx-fec"; | 309 | compatible = "mpc5200b-fec\0mpc5200-fec"; |
289 | reg = <3000 800>; | 310 | reg = <3000 800>; |
290 | mac-address = [ 02 03 04 05 06 07 ]; // Bad! | 311 | mac-address = [ 02 03 04 05 06 07 ]; // Bad! |
291 | interrupts = <2 5 0>; | 312 | interrupts = <2 5 0>; |
@@ -294,7 +315,7 @@ | |||
294 | 315 | ||
295 | ata@3a00 { | 316 | ata@3a00 { |
296 | device_type = "ata"; | 317 | device_type = "ata"; |
297 | compatible = "mpc5200b-ata\0mpc52xx-ata"; | 318 | compatible = "mpc5200b-ata\0mpc5200-ata"; |
298 | reg = <3a00 100>; | 319 | reg = <3a00 100>; |
299 | interrupts = <2 7 0>; | 320 | interrupts = <2 7 0>; |
300 | interrupt-parent = <500>; | 321 | interrupt-parent = <500>; |
@@ -302,7 +323,8 @@ | |||
302 | 323 | ||
303 | i2c@3d00 { | 324 | i2c@3d00 { |
304 | device_type = "i2c"; | 325 | device_type = "i2c"; |
305 | compatible = "mpc5200b-i2c\0mpc52xx-i2c"; | 326 | compatible = "mpc5200b-i2c\0mpc5200-i2c"; |
327 | cell-index = <0>; | ||
306 | reg = <3d00 40>; | 328 | reg = <3d00 40>; |
307 | interrupts = <2 f 0>; | 329 | interrupts = <2 f 0>; |
308 | interrupt-parent = <500>; | 330 | interrupt-parent = <500>; |
@@ -310,14 +332,15 @@ | |||
310 | 332 | ||
311 | i2c@3d40 { | 333 | i2c@3d40 { |
312 | device_type = "i2c"; | 334 | device_type = "i2c"; |
313 | compatible = "mpc5200b-i2c\0mpc52xx-i2c"; | 335 | compatible = "mpc5200b-i2c\0mpc5200-i2c"; |
336 | cell-index = <1>; | ||
314 | reg = <3d40 40>; | 337 | reg = <3d40 40>; |
315 | interrupts = <2 10 0>; | 338 | interrupts = <2 10 0>; |
316 | interrupt-parent = <500>; | 339 | interrupt-parent = <500>; |
317 | }; | 340 | }; |
318 | sram@8000 { | 341 | sram@8000 { |
319 | device_type = "sram"; | 342 | device_type = "sram"; |
320 | compatible = "mpc5200b-sram\0mpc52xx-sram\0sram"; | 343 | compatible = "mpc5200b-sram\0mpc5200-sram\0sram"; |
321 | reg = <8000 4000>; | 344 | reg = <8000 4000>; |
322 | }; | 345 | }; |
323 | }; | 346 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts new file mode 100644 index 000000000000..3d2f5a06df3f --- /dev/null +++ b/arch/powerpc/boot/dts/mpc8313erdb.dts | |||
@@ -0,0 +1,219 @@ | |||
1 | /* | ||
2 | * MPC8313E RDB Device Tree Source | ||
3 | * | ||
4 | * Copyright 2005, 2006, 2007 Freescale Semiconductor Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | / { | ||
13 | model = "MPC8313ERDB"; | ||
14 | compatible = "MPC83xx"; | ||
15 | #address-cells = <1>; | ||
16 | #size-cells = <1>; | ||
17 | |||
18 | cpus { | ||
19 | #cpus = <1>; | ||
20 | #address-cells = <1>; | ||
21 | #size-cells = <0>; | ||
22 | |||
23 | PowerPC,8313@0 { | ||
24 | device_type = "cpu"; | ||
25 | reg = <0>; | ||
26 | d-cache-line-size = <20>; // 32 bytes | ||
27 | i-cache-line-size = <20>; // 32 bytes | ||
28 | d-cache-size = <4000>; // L1, 16K | ||
29 | i-cache-size = <4000>; // L1, 16K | ||
30 | timebase-frequency = <0>; // from bootloader | ||
31 | bus-frequency = <0>; // from bootloader | ||
32 | clock-frequency = <0>; // from bootloader | ||
33 | 32-bit; | ||
34 | }; | ||
35 | }; | ||
36 | |||
37 | memory { | ||
38 | device_type = "memory"; | ||
39 | reg = <00000000 08000000>; // 128MB at 0 | ||
40 | }; | ||
41 | |||
42 | soc8313@e0000000 { | ||
43 | #address-cells = <1>; | ||
44 | #size-cells = <1>; | ||
45 | #interrupt-cells = <2>; | ||
46 | device_type = "soc"; | ||
47 | ranges = <0 e0000000 00100000>; | ||
48 | reg = <e0000000 00000200>; | ||
49 | bus-frequency = <0>; | ||
50 | |||
51 | wdt@200 { | ||
52 | device_type = "watchdog"; | ||
53 | compatible = "mpc83xx_wdt"; | ||
54 | reg = <200 100>; | ||
55 | }; | ||
56 | |||
57 | i2c@3000 { | ||
58 | device_type = "i2c"; | ||
59 | compatible = "fsl-i2c"; | ||
60 | reg = <3000 100>; | ||
61 | interrupts = <e 8>; | ||
62 | interrupt-parent = <700>; | ||
63 | dfsrr; | ||
64 | }; | ||
65 | |||
66 | i2c@3100 { | ||
67 | device_type = "i2c"; | ||
68 | compatible = "fsl-i2c"; | ||
69 | reg = <3100 100>; | ||
70 | interrupts = <f 8>; | ||
71 | interrupt-parent = <700>; | ||
72 | dfsrr; | ||
73 | }; | ||
74 | |||
75 | spi@7000 { | ||
76 | device_type = "spi"; | ||
77 | compatible = "mpc83xx_spi"; | ||
78 | reg = <7000 1000>; | ||
79 | interrupts = <10 8>; | ||
80 | interrupt-parent = <700>; | ||
81 | mode = <0>; | ||
82 | }; | ||
83 | |||
84 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
85 | usb@23000 { | ||
86 | device_type = "usb"; | ||
87 | compatible = "fsl-usb2-dr"; | ||
88 | reg = <23000 1000>; | ||
89 | #address-cells = <1>; | ||
90 | #size-cells = <0>; | ||
91 | interrupt-parent = <700>; | ||
92 | interrupts = <26 2>; | ||
93 | phy_type = "utmi_wide"; | ||
94 | }; | ||
95 | |||
96 | mdio@24520 { | ||
97 | device_type = "mdio"; | ||
98 | compatible = "gianfar"; | ||
99 | reg = <24520 20>; | ||
100 | #address-cells = <1>; | ||
101 | #size-cells = <0>; | ||
102 | linux,phandle = <24520>; | ||
103 | ethernet-phy@1 { | ||
104 | linux,phandle = <2452001>; | ||
105 | interrupt-parent = <700>; | ||
106 | interrupts = <13 2>; | ||
107 | reg = <1>; | ||
108 | device_type = "ethernet-phy"; | ||
109 | }; | ||
110 | ethernet-phy@4 { | ||
111 | linux,phandle = <2452004>; | ||
112 | interrupt-parent = <700>; | ||
113 | interrupts = <14 2>; | ||
114 | reg = <4>; | ||
115 | device_type = "ethernet-phy"; | ||
116 | }; | ||
117 | }; | ||
118 | |||
119 | ethernet@24000 { | ||
120 | device_type = "network"; | ||
121 | model = "eTSEC"; | ||
122 | compatible = "gianfar"; | ||
123 | reg = <24000 1000>; | ||
124 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
125 | interrupts = <25 8 24 8 23 8>; | ||
126 | interrupt-parent = <700>; | ||
127 | phy-handle = <2452001>; | ||
128 | }; | ||
129 | |||
130 | ethernet@25000 { | ||
131 | device_type = "network"; | ||
132 | model = "eTSEC"; | ||
133 | compatible = "gianfar"; | ||
134 | reg = <25000 1000>; | ||
135 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
136 | interrupts = <22 8 21 8 20 8>; | ||
137 | interrupt-parent = <700>; | ||
138 | phy-handle = <2452004>; | ||
139 | }; | ||
140 | |||
141 | serial@4500 { | ||
142 | device_type = "serial"; | ||
143 | compatible = "ns16550"; | ||
144 | reg = <4500 100>; | ||
145 | clock-frequency = <0>; | ||
146 | interrupts = <9 8>; | ||
147 | interrupt-parent = <700>; | ||
148 | }; | ||
149 | |||
150 | serial@4600 { | ||
151 | device_type = "serial"; | ||
152 | compatible = "ns16550"; | ||
153 | reg = <4600 100>; | ||
154 | clock-frequency = <0>; | ||
155 | interrupts = <a 8>; | ||
156 | interrupt-parent = <700>; | ||
157 | }; | ||
158 | |||
159 | pci@8500 { | ||
160 | interrupt-map-mask = <f800 0 0 7>; | ||
161 | interrupt-map = < | ||
162 | |||
163 | /* IDSEL 0x0E -mini PCI */ | ||
164 | 7000 0 0 1 700 12 8 | ||
165 | 7000 0 0 2 700 12 8 | ||
166 | 7000 0 0 3 700 12 8 | ||
167 | 7000 0 0 4 700 12 8 | ||
168 | |||
169 | /* IDSEL 0x0F - PCI slot */ | ||
170 | 7800 0 0 1 700 11 8 | ||
171 | 7800 0 0 2 700 12 8 | ||
172 | 7800 0 0 3 700 11 8 | ||
173 | 7800 0 0 4 700 12 8>; | ||
174 | interrupt-parent = <700>; | ||
175 | interrupts = <42 8>; | ||
176 | bus-range = <0 0>; | ||
177 | ranges = <02000000 0 90000000 90000000 0 10000000 | ||
178 | 42000000 0 80000000 80000000 0 10000000 | ||
179 | 01000000 0 00000000 e2000000 0 00100000>; | ||
180 | clock-frequency = <3f940aa>; | ||
181 | #interrupt-cells = <1>; | ||
182 | #size-cells = <2>; | ||
183 | #address-cells = <3>; | ||
184 | reg = <8500 100>; | ||
185 | compatible = "83xx"; | ||
186 | device_type = "pci"; | ||
187 | }; | ||
188 | |||
189 | crypto@30000 { | ||
190 | device_type = "crypto"; | ||
191 | model = "SEC2"; | ||
192 | compatible = "talitos"; | ||
193 | reg = <30000 7000>; | ||
194 | interrupts = <b 8>; | ||
195 | interrupt-parent = <700>; | ||
196 | /* Rev. 2.2 */ | ||
197 | num-channels = <1>; | ||
198 | channel-fifo-len = <18>; | ||
199 | exec-units-mask = <0000004c>; | ||
200 | descriptor-types-mask = <0122003f>; | ||
201 | }; | ||
202 | |||
203 | /* IPIC | ||
204 | * interrupts cell = <intr #, sense> | ||
205 | * sense values match linux IORESOURCE_IRQ_* defines: | ||
206 | * sense == 8: Level, low assertion | ||
207 | * sense == 2: Edge, high-to-low change | ||
208 | */ | ||
209 | pic@700 { | ||
210 | linux,phandle = <700>; | ||
211 | interrupt-controller; | ||
212 | #address-cells = <0>; | ||
213 | #interrupt-cells = <2>; | ||
214 | reg = <700 100>; | ||
215 | built-in; | ||
216 | device_type = "ipic"; | ||
217 | }; | ||
218 | }; | ||
219 | }; | ||
diff --git a/arch/powerpc/boot/dts/mpc8349emds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts index efceb3432653..dc121b3cb4a9 100644 --- a/arch/powerpc/boot/dts/mpc8349emds.dts +++ b/arch/powerpc/boot/dts/mpc834x_mds.dts | |||
@@ -39,6 +39,11 @@ | |||
39 | reg = <00000000 10000000>; // 256MB at 0 | 39 | reg = <00000000 10000000>; // 256MB at 0 |
40 | }; | 40 | }; |
41 | 41 | ||
42 | bcsr@e2400000 { | ||
43 | device_type = "board-control"; | ||
44 | reg = <e2400000 8000>; | ||
45 | }; | ||
46 | |||
42 | soc8349@e0000000 { | 47 | soc8349@e0000000 { |
43 | #address-cells = <1>; | 48 | #address-cells = <1>; |
44 | #size-cells = <1>; | 49 | #size-cells = <1>; |
@@ -103,6 +108,7 @@ | |||
103 | #size-cells = <0>; | 108 | #size-cells = <0>; |
104 | interrupt-parent = <700>; | 109 | interrupt-parent = <700>; |
105 | interrupts = <26 2>; | 110 | interrupts = <26 2>; |
111 | dr_mode = "otg"; | ||
106 | phy_type = "ulpi"; | 112 | phy_type = "ulpi"; |
107 | }; | 113 | }; |
108 | 114 | ||
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig index 405c1c908213..dde66a597a8d 100644 --- a/arch/powerpc/configs/linkstation_defconfig +++ b/arch/powerpc/configs/linkstation_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.20-rc5 | 3 | # Linux kernel version: 2.6.20-rc6 |
4 | # Mon Jan 22 22:17:58 2007 | 4 | # Sun Jan 28 23:13:56 2007 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | CONFIG_PPC32=y | 7 | CONFIG_PPC32=y |
@@ -58,7 +58,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
58 | # | 58 | # |
59 | # General setup | 59 | # General setup |
60 | # | 60 | # |
61 | CONFIG_LOCALVERSION="-kuroboxHG" | 61 | CONFIG_LOCALVERSION="" |
62 | CONFIG_LOCALVERSION_AUTO=y | 62 | CONFIG_LOCALVERSION_AUTO=y |
63 | CONFIG_SWAP=y | 63 | CONFIG_SWAP=y |
64 | CONFIG_SYSVIPC=y | 64 | CONFIG_SYSVIPC=y |
@@ -206,7 +206,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
206 | CONFIG_PROC_DEVICETREE=y | 206 | CONFIG_PROC_DEVICETREE=y |
207 | # CONFIG_CMDLINE_BOOL is not set | 207 | # CONFIG_CMDLINE_BOOL is not set |
208 | # CONFIG_PM is not set | 208 | # CONFIG_PM is not set |
209 | # CONFIG_SECCOMP is not set | 209 | CONFIG_SECCOMP=y |
210 | CONFIG_ISA_DMA_API=y | 210 | CONFIG_ISA_DMA_API=y |
211 | 211 | ||
212 | # | 212 | # |
@@ -312,39 +312,40 @@ CONFIG_NF_CONNTRACK=m | |||
312 | # CONFIG_NF_CT_ACCT is not set | 312 | # CONFIG_NF_CT_ACCT is not set |
313 | # CONFIG_NF_CONNTRACK_MARK is not set | 313 | # CONFIG_NF_CONNTRACK_MARK is not set |
314 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 314 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
315 | # CONFIG_NF_CT_PROTO_SCTP is not set | 315 | CONFIG_NF_CT_PROTO_GRE=m |
316 | # CONFIG_NF_CONNTRACK_AMANDA is not set | 316 | CONFIG_NF_CT_PROTO_SCTP=m |
317 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
317 | CONFIG_NF_CONNTRACK_FTP=m | 318 | CONFIG_NF_CONNTRACK_FTP=m |
318 | # CONFIG_NF_CONNTRACK_H323 is not set | 319 | CONFIG_NF_CONNTRACK_H323=m |
319 | CONFIG_NF_CONNTRACK_IRC=m | 320 | CONFIG_NF_CONNTRACK_IRC=m |
320 | # CONFIG_NF_CONNTRACK_NETBIOS_NS is not set | 321 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
321 | # CONFIG_NF_CONNTRACK_PPTP is not set | 322 | CONFIG_NF_CONNTRACK_PPTP=m |
322 | # CONFIG_NF_CONNTRACK_SIP is not set | 323 | CONFIG_NF_CONNTRACK_SIP=m |
323 | CONFIG_NF_CONNTRACK_TFTP=m | 324 | CONFIG_NF_CONNTRACK_TFTP=m |
324 | CONFIG_NETFILTER_XTABLES=m | 325 | CONFIG_NETFILTER_XTABLES=m |
325 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 326 | # CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set |
326 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | 327 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set |
327 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 328 | # CONFIG_NETFILTER_XT_TARGET_MARK is not set |
328 | # CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set | 329 | # CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set |
329 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 330 | # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set |
330 | # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set | 331 | # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set |
331 | # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set | 332 | # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set |
332 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 333 | # CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set |
333 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set | 334 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set |
334 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set | 335 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set |
335 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 336 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set |
336 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | 337 | # CONFIG_NETFILTER_XT_MATCH_HELPER is not set |
337 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | 338 | # CONFIG_NETFILTER_XT_MATCH_LENGTH is not set |
338 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | 339 | # CONFIG_NETFILTER_XT_MATCH_LIMIT is not set |
339 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 340 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
340 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 341 | # CONFIG_NETFILTER_XT_MATCH_MARK is not set |
341 | # CONFIG_NETFILTER_XT_MATCH_POLICY is not set | 342 | # CONFIG_NETFILTER_XT_MATCH_POLICY is not set |
342 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 343 | # CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set |
343 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 344 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
344 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set | 345 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set |
345 | # CONFIG_NETFILTER_XT_MATCH_REALM is not set | 346 | # CONFIG_NETFILTER_XT_MATCH_REALM is not set |
346 | # CONFIG_NETFILTER_XT_MATCH_SCTP is not set | 347 | # CONFIG_NETFILTER_XT_MATCH_SCTP is not set |
347 | # CONFIG_NETFILTER_XT_MATCH_STATE is not set | 348 | CONFIG_NETFILTER_XT_MATCH_STATE=m |
348 | # CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set | 349 | # CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set |
349 | # CONFIG_NETFILTER_XT_MATCH_STRING is not set | 350 | # CONFIG_NETFILTER_XT_MATCH_STRING is not set |
350 | # CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set | 351 | # CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set |
@@ -359,12 +360,12 @@ CONFIG_NF_CONNTRACK_PROC_COMPAT=y | |||
359 | CONFIG_IP_NF_IPTABLES=m | 360 | CONFIG_IP_NF_IPTABLES=m |
360 | CONFIG_IP_NF_MATCH_IPRANGE=m | 361 | CONFIG_IP_NF_MATCH_IPRANGE=m |
361 | # CONFIG_IP_NF_MATCH_TOS is not set | 362 | # CONFIG_IP_NF_MATCH_TOS is not set |
362 | # CONFIG_IP_NF_MATCH_RECENT is not set | 363 | CONFIG_IP_NF_MATCH_RECENT=m |
363 | # CONFIG_IP_NF_MATCH_ECN is not set | 364 | # CONFIG_IP_NF_MATCH_ECN is not set |
364 | # CONFIG_IP_NF_MATCH_AH is not set | 365 | # CONFIG_IP_NF_MATCH_AH is not set |
365 | # CONFIG_IP_NF_MATCH_TTL is not set | 366 | # CONFIG_IP_NF_MATCH_TTL is not set |
366 | # CONFIG_IP_NF_MATCH_OWNER is not set | 367 | CONFIG_IP_NF_MATCH_OWNER=m |
367 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | 368 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
368 | CONFIG_IP_NF_FILTER=m | 369 | CONFIG_IP_NF_FILTER=m |
369 | CONFIG_IP_NF_TARGET_REJECT=m | 370 | CONFIG_IP_NF_TARGET_REJECT=m |
370 | # CONFIG_IP_NF_TARGET_LOG is not set | 371 | # CONFIG_IP_NF_TARGET_LOG is not set |
@@ -374,16 +375,17 @@ CONFIG_NF_NAT=m | |||
374 | CONFIG_NF_NAT_NEEDED=y | 375 | CONFIG_NF_NAT_NEEDED=y |
375 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 376 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
376 | CONFIG_IP_NF_TARGET_REDIRECT=m | 377 | CONFIG_IP_NF_TARGET_REDIRECT=m |
377 | CONFIG_IP_NF_TARGET_NETMAP=m | 378 | # CONFIG_IP_NF_TARGET_NETMAP is not set |
378 | CONFIG_IP_NF_TARGET_SAME=m | 379 | # CONFIG_IP_NF_TARGET_SAME is not set |
379 | # CONFIG_NF_NAT_SNMP_BASIC is not set | 380 | # CONFIG_NF_NAT_SNMP_BASIC is not set |
381 | CONFIG_NF_NAT_PROTO_GRE=m | ||
380 | CONFIG_NF_NAT_FTP=m | 382 | CONFIG_NF_NAT_FTP=m |
381 | CONFIG_NF_NAT_IRC=m | 383 | CONFIG_NF_NAT_IRC=m |
382 | CONFIG_NF_NAT_TFTP=m | 384 | CONFIG_NF_NAT_TFTP=m |
383 | # CONFIG_NF_NAT_AMANDA is not set | 385 | CONFIG_NF_NAT_AMANDA=m |
384 | # CONFIG_NF_NAT_PPTP is not set | 386 | CONFIG_NF_NAT_PPTP=m |
385 | # CONFIG_NF_NAT_H323 is not set | 387 | CONFIG_NF_NAT_H323=m |
386 | # CONFIG_NF_NAT_SIP is not set | 388 | CONFIG_NF_NAT_SIP=m |
387 | CONFIG_IP_NF_MANGLE=m | 389 | CONFIG_IP_NF_MANGLE=m |
388 | CONFIG_IP_NF_TARGET_TOS=m | 390 | CONFIG_IP_NF_TARGET_TOS=m |
389 | CONFIG_IP_NF_TARGET_ECN=m | 391 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -472,6 +474,7 @@ CONFIG_MTD_PARTITIONS=y | |||
472 | # User Modules And Translation Layers | 474 | # User Modules And Translation Layers |
473 | # | 475 | # |
474 | CONFIG_MTD_CHAR=y | 476 | CONFIG_MTD_CHAR=y |
477 | CONFIG_MTD_BLKDEVS=y | ||
475 | CONFIG_MTD_BLOCK=y | 478 | CONFIG_MTD_BLOCK=y |
476 | # CONFIG_FTL is not set | 479 | # CONFIG_FTL is not set |
477 | # CONFIG_NFTL is not set | 480 | # CONFIG_NFTL is not set |
@@ -518,6 +521,7 @@ CONFIG_MTD_PHYSMAP=y | |||
518 | CONFIG_MTD_PHYSMAP_START=0xffc00000 | 521 | CONFIG_MTD_PHYSMAP_START=0xffc00000 |
519 | CONFIG_MTD_PHYSMAP_LEN=0x400000 | 522 | CONFIG_MTD_PHYSMAP_LEN=0x400000 |
520 | CONFIG_MTD_PHYSMAP_BANKWIDTH=1 | 523 | CONFIG_MTD_PHYSMAP_BANKWIDTH=1 |
524 | # CONFIG_MTD_PHYSMAP_OF is not set | ||
521 | # CONFIG_MTD_PLATRAM is not set | 525 | # CONFIG_MTD_PLATRAM is not set |
522 | 526 | ||
523 | # | 527 | # |
@@ -540,6 +544,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1 | |||
540 | # NAND Flash Device Drivers | 544 | # NAND Flash Device Drivers |
541 | # | 545 | # |
542 | # CONFIG_MTD_NAND is not set | 546 | # CONFIG_MTD_NAND is not set |
547 | # CONFIG_MTD_NAND_CAFE is not set | ||
543 | 548 | ||
544 | # | 549 | # |
545 | # OneNAND Flash Device Drivers | 550 | # OneNAND Flash Device Drivers |
@@ -696,7 +701,7 @@ CONFIG_ATA=y | |||
696 | # CONFIG_PATA_HPT37X is not set | 701 | # CONFIG_PATA_HPT37X is not set |
697 | # CONFIG_PATA_HPT3X2N is not set | 702 | # CONFIG_PATA_HPT3X2N is not set |
698 | # CONFIG_PATA_HPT3X3 is not set | 703 | # CONFIG_PATA_HPT3X3 is not set |
699 | # CONFIG_PATA_IT821X is not set | 704 | CONFIG_PATA_IT821X=y |
700 | # CONFIG_PATA_JMICRON is not set | 705 | # CONFIG_PATA_JMICRON is not set |
701 | # CONFIG_PATA_TRIFLEX is not set | 706 | # CONFIG_PATA_TRIFLEX is not set |
702 | # CONFIG_PATA_MARVELL is not set | 707 | # CONFIG_PATA_MARVELL is not set |
@@ -763,11 +768,33 @@ CONFIG_TUN=m | |||
763 | # | 768 | # |
764 | # PHY device support | 769 | # PHY device support |
765 | # | 770 | # |
771 | # CONFIG_PHYLIB is not set | ||
766 | 772 | ||
767 | # | 773 | # |
768 | # Ethernet (10 or 100Mbit) | 774 | # Ethernet (10 or 100Mbit) |
769 | # | 775 | # |
770 | # CONFIG_NET_ETHERNET is not set | 776 | CONFIG_NET_ETHERNET=y |
777 | # CONFIG_MII is not set | ||
778 | # CONFIG_HAPPYMEAL is not set | ||
779 | # CONFIG_SUNGEM is not set | ||
780 | # CONFIG_CASSINI is not set | ||
781 | # CONFIG_NET_VENDOR_3COM is not set | ||
782 | |||
783 | # | ||
784 | # Tulip family network device support | ||
785 | # | ||
786 | CONFIG_NET_TULIP=y | ||
787 | # CONFIG_DE2104X is not set | ||
788 | CONFIG_TULIP=y | ||
789 | # CONFIG_TULIP_MWI is not set | ||
790 | CONFIG_TULIP_MMIO=y | ||
791 | # CONFIG_TULIP_NAPI is not set | ||
792 | # CONFIG_DE4X5 is not set | ||
793 | # CONFIG_WINBOND_840 is not set | ||
794 | # CONFIG_DM9102 is not set | ||
795 | # CONFIG_ULI526X is not set | ||
796 | # CONFIG_HP100 is not set | ||
797 | # CONFIG_NET_PCI is not set | ||
771 | 798 | ||
772 | # | 799 | # |
773 | # Ethernet (1000 Mbit) | 800 | # Ethernet (1000 Mbit) |
@@ -829,7 +856,8 @@ CONFIG_NET_RADIO=y | |||
829 | # CONFIG_USB_ZD1201 is not set | 856 | # CONFIG_USB_ZD1201 is not set |
830 | # CONFIG_HOSTAP is not set | 857 | # CONFIG_HOSTAP is not set |
831 | # CONFIG_BCM43XX is not set | 858 | # CONFIG_BCM43XX is not set |
832 | # CONFIG_ZD1211RW is not set | 859 | CONFIG_ZD1211RW=m |
860 | # CONFIG_ZD1211RW_DEBUG is not set | ||
833 | CONFIG_NET_WIRELESS=y | 861 | CONFIG_NET_WIRELESS=y |
834 | 862 | ||
835 | # | 863 | # |
@@ -1098,7 +1126,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
1098 | # | 1126 | # |
1099 | # HID Devices | 1127 | # HID Devices |
1100 | # | 1128 | # |
1101 | CONFIG_HID=y | 1129 | CONFIG_HID=m |
1102 | 1130 | ||
1103 | # | 1131 | # |
1104 | # USB support | 1132 | # USB support |
@@ -1115,7 +1143,6 @@ CONFIG_USB=y | |||
1115 | CONFIG_USB_DEVICEFS=y | 1143 | CONFIG_USB_DEVICEFS=y |
1116 | # CONFIG_USB_BANDWIDTH is not set | 1144 | # CONFIG_USB_BANDWIDTH is not set |
1117 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1145 | # CONFIG_USB_DYNAMIC_MINORS is not set |
1118 | # CONFIG_USB_MULTITHREAD_PROBE is not set | ||
1119 | # CONFIG_USB_OTG is not set | 1146 | # CONFIG_USB_OTG is not set |
1120 | 1147 | ||
1121 | # | 1148 | # |
@@ -1136,7 +1163,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1136 | # USB Device Class drivers | 1163 | # USB Device Class drivers |
1137 | # | 1164 | # |
1138 | # CONFIG_USB_ACM is not set | 1165 | # CONFIG_USB_ACM is not set |
1139 | # CONFIG_USB_PRINTER is not set | 1166 | CONFIG_USB_PRINTER=m |
1140 | 1167 | ||
1141 | # | 1168 | # |
1142 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1169 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
@@ -1371,7 +1398,11 @@ CONFIG_FS_MBCACHE=y | |||
1371 | # CONFIG_REISERFS_FS is not set | 1398 | # CONFIG_REISERFS_FS is not set |
1372 | # CONFIG_JFS_FS is not set | 1399 | # CONFIG_JFS_FS is not set |
1373 | CONFIG_FS_POSIX_ACL=y | 1400 | CONFIG_FS_POSIX_ACL=y |
1374 | # CONFIG_XFS_FS is not set | 1401 | CONFIG_XFS_FS=m |
1402 | # CONFIG_XFS_QUOTA is not set | ||
1403 | # CONFIG_XFS_SECURITY is not set | ||
1404 | # CONFIG_XFS_POSIX_ACL is not set | ||
1405 | # CONFIG_XFS_RT is not set | ||
1375 | # CONFIG_GFS2_FS is not set | 1406 | # CONFIG_GFS2_FS is not set |
1376 | # CONFIG_OCFS2_FS is not set | 1407 | # CONFIG_OCFS2_FS is not set |
1377 | # CONFIG_MINIX_FS is not set | 1408 | # CONFIG_MINIX_FS is not set |
@@ -1461,7 +1492,12 @@ CONFIG_SUNRPC_GSS=y | |||
1461 | CONFIG_RPCSEC_GSS_KRB5=y | 1492 | CONFIG_RPCSEC_GSS_KRB5=y |
1462 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1493 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
1463 | # CONFIG_SMB_FS is not set | 1494 | # CONFIG_SMB_FS is not set |
1464 | # CONFIG_CIFS is not set | 1495 | CONFIG_CIFS=m |
1496 | # CONFIG_CIFS_STATS is not set | ||
1497 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
1498 | # CONFIG_CIFS_XATTR is not set | ||
1499 | # CONFIG_CIFS_DEBUG2 is not set | ||
1500 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
1465 | # CONFIG_NCP_FS is not set | 1501 | # CONFIG_NCP_FS is not set |
1466 | # CONFIG_CODA_FS is not set | 1502 | # CONFIG_CODA_FS is not set |
1467 | # CONFIG_AFS_FS is not set | 1503 | # CONFIG_AFS_FS is not set |
@@ -1495,7 +1531,7 @@ CONFIG_NLS_CODEPAGE_437=m | |||
1495 | # CONFIG_NLS_CODEPAGE_869 is not set | 1531 | # CONFIG_NLS_CODEPAGE_869 is not set |
1496 | # CONFIG_NLS_CODEPAGE_936 is not set | 1532 | # CONFIG_NLS_CODEPAGE_936 is not set |
1497 | # CONFIG_NLS_CODEPAGE_950 is not set | 1533 | # CONFIG_NLS_CODEPAGE_950 is not set |
1498 | # CONFIG_NLS_CODEPAGE_932 is not set | 1534 | CONFIG_NLS_CODEPAGE_932=m |
1499 | # CONFIG_NLS_CODEPAGE_949 is not set | 1535 | # CONFIG_NLS_CODEPAGE_949 is not set |
1500 | # CONFIG_NLS_CODEPAGE_874 is not set | 1536 | # CONFIG_NLS_CODEPAGE_874 is not set |
1501 | # CONFIG_NLS_ISO8859_8 is not set | 1537 | # CONFIG_NLS_ISO8859_8 is not set |
@@ -1526,12 +1562,14 @@ CONFIG_NLS_UTF8=m | |||
1526 | # Library routines | 1562 | # Library routines |
1527 | # | 1563 | # |
1528 | CONFIG_BITREVERSE=y | 1564 | CONFIG_BITREVERSE=y |
1529 | # CONFIG_CRC_CCITT is not set | 1565 | CONFIG_CRC_CCITT=m |
1530 | # CONFIG_CRC16 is not set | 1566 | # CONFIG_CRC16 is not set |
1531 | CONFIG_CRC32=y | 1567 | CONFIG_CRC32=y |
1532 | CONFIG_LIBCRC32C=m | 1568 | CONFIG_LIBCRC32C=m |
1533 | CONFIG_ZLIB_INFLATE=m | 1569 | CONFIG_ZLIB_INFLATE=m |
1534 | CONFIG_ZLIB_DEFLATE=m | 1570 | CONFIG_ZLIB_DEFLATE=m |
1571 | CONFIG_TEXTSEARCH=y | ||
1572 | CONFIG_TEXTSEARCH_KMP=m | ||
1535 | CONFIG_PLIST=y | 1573 | CONFIG_PLIST=y |
1536 | CONFIG_IOMAP_COPY=y | 1574 | CONFIG_IOMAP_COPY=y |
1537 | 1575 | ||
diff --git a/arch/powerpc/configs/mpc8313_rdb_defconfig b/arch/powerpc/configs/mpc8313_rdb_defconfig new file mode 100644 index 000000000000..f87523716c44 --- /dev/null +++ b/arch/powerpc/configs/mpc8313_rdb_defconfig | |||
@@ -0,0 +1,1409 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.20 | ||
4 | # Wed Feb 7 22:08:04 2007 | ||
5 | # | ||
6 | # CONFIG_PPC64 is not set | ||
7 | CONFIG_PPC32=y | ||
8 | CONFIG_PPC_MERGE=y | ||
9 | CONFIG_MMU=y | ||
10 | CONFIG_GENERIC_HARDIRQS=y | ||
11 | CONFIG_IRQ_PER_CPU=y | ||
12 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
13 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
14 | CONFIG_GENERIC_HWEIGHT=y | ||
15 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
16 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
17 | CONFIG_PPC=y | ||
18 | CONFIG_EARLY_PRINTK=y | ||
19 | CONFIG_GENERIC_NVRAM=y | ||
20 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
21 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
22 | CONFIG_PPC_OF=y | ||
23 | CONFIG_PPC_UDBG_16550=y | ||
24 | # CONFIG_GENERIC_TBSYNC is not set | ||
25 | CONFIG_AUDIT_ARCH=y | ||
26 | CONFIG_GENERIC_BUG=y | ||
27 | CONFIG_DEFAULT_UIMAGE=y | ||
28 | |||
29 | # | ||
30 | # Processor support | ||
31 | # | ||
32 | # CONFIG_CLASSIC32 is not set | ||
33 | # CONFIG_PPC_82xx is not set | ||
34 | CONFIG_PPC_83xx=y | ||
35 | # CONFIG_PPC_85xx is not set | ||
36 | # CONFIG_PPC_86xx is not set | ||
37 | # CONFIG_PPC_8xx is not set | ||
38 | # CONFIG_40x is not set | ||
39 | # CONFIG_44x is not set | ||
40 | # CONFIG_E200 is not set | ||
41 | CONFIG_6xx=y | ||
42 | CONFIG_83xx=y | ||
43 | CONFIG_PPC_FPU=y | ||
44 | # CONFIG_PPC_DCR_NATIVE is not set | ||
45 | # CONFIG_PPC_DCR_MMIO is not set | ||
46 | CONFIG_PPC_STD_MMU=y | ||
47 | CONFIG_PPC_STD_MMU_32=y | ||
48 | # CONFIG_SMP is not set | ||
49 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
50 | |||
51 | # | ||
52 | # Code maturity level options | ||
53 | # | ||
54 | CONFIG_EXPERIMENTAL=y | ||
55 | CONFIG_BROKEN_ON_SMP=y | ||
56 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
57 | |||
58 | # | ||
59 | # General setup | ||
60 | # | ||
61 | CONFIG_LOCALVERSION="" | ||
62 | CONFIG_LOCALVERSION_AUTO=y | ||
63 | CONFIG_SWAP=y | ||
64 | CONFIG_SYSVIPC=y | ||
65 | # CONFIG_IPC_NS is not set | ||
66 | # CONFIG_POSIX_MQUEUE is not set | ||
67 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
68 | # CONFIG_TASKSTATS is not set | ||
69 | # CONFIG_UTS_NS is not set | ||
70 | # CONFIG_AUDIT is not set | ||
71 | # CONFIG_IKCONFIG is not set | ||
72 | CONFIG_SYSFS_DEPRECATED=y | ||
73 | # CONFIG_RELAY is not set | ||
74 | CONFIG_INITRAMFS_SOURCE="" | ||
75 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
76 | CONFIG_SYSCTL=y | ||
77 | CONFIG_EMBEDDED=y | ||
78 | CONFIG_SYSCTL_SYSCALL=y | ||
79 | # CONFIG_KALLSYMS is not set | ||
80 | CONFIG_HOTPLUG=y | ||
81 | CONFIG_PRINTK=y | ||
82 | CONFIG_BUG=y | ||
83 | CONFIG_ELF_CORE=y | ||
84 | CONFIG_BASE_FULL=y | ||
85 | CONFIG_FUTEX=y | ||
86 | # CONFIG_EPOLL is not set | ||
87 | CONFIG_SHMEM=y | ||
88 | CONFIG_SLAB=y | ||
89 | CONFIG_VM_EVENT_COUNTERS=y | ||
90 | CONFIG_RT_MUTEXES=y | ||
91 | # CONFIG_TINY_SHMEM is not set | ||
92 | CONFIG_BASE_SMALL=0 | ||
93 | # CONFIG_SLOB is not set | ||
94 | |||
95 | # | ||
96 | # Loadable module support | ||
97 | # | ||
98 | CONFIG_MODULES=y | ||
99 | CONFIG_MODULE_UNLOAD=y | ||
100 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
101 | # CONFIG_MODVERSIONS is not set | ||
102 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
103 | # CONFIG_KMOD is not set | ||
104 | |||
105 | # | ||
106 | # Block layer | ||
107 | # | ||
108 | CONFIG_BLOCK=y | ||
109 | # CONFIG_LBD is not set | ||
110 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
111 | # CONFIG_LSF is not set | ||
112 | |||
113 | # | ||
114 | # IO Schedulers | ||
115 | # | ||
116 | CONFIG_IOSCHED_NOOP=y | ||
117 | CONFIG_IOSCHED_AS=y | ||
118 | CONFIG_IOSCHED_DEADLINE=y | ||
119 | CONFIG_IOSCHED_CFQ=y | ||
120 | CONFIG_DEFAULT_AS=y | ||
121 | # CONFIG_DEFAULT_DEADLINE is not set | ||
122 | # CONFIG_DEFAULT_CFQ is not set | ||
123 | # CONFIG_DEFAULT_NOOP is not set | ||
124 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
125 | CONFIG_PPC_GEN550=y | ||
126 | # CONFIG_WANT_EARLY_SERIAL is not set | ||
127 | |||
128 | # | ||
129 | # Platform support | ||
130 | # | ||
131 | CONFIG_MPC8313_RDB=y | ||
132 | # CONFIG_MPC832x_MDS is not set | ||
133 | # CONFIG_MPC834x_SYS is not set | ||
134 | # CONFIG_MPC834x_ITX is not set | ||
135 | # CONFIG_MPC8360E_PB is not set | ||
136 | CONFIG_PPC_MPC831x=y | ||
137 | # CONFIG_MPIC is not set | ||
138 | |||
139 | # | ||
140 | # Kernel options | ||
141 | # | ||
142 | # CONFIG_HIGHMEM is not set | ||
143 | # CONFIG_HZ_100 is not set | ||
144 | CONFIG_HZ_250=y | ||
145 | # CONFIG_HZ_300 is not set | ||
146 | # CONFIG_HZ_1000 is not set | ||
147 | CONFIG_HZ=250 | ||
148 | CONFIG_PREEMPT_NONE=y | ||
149 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
150 | # CONFIG_PREEMPT is not set | ||
151 | CONFIG_BINFMT_ELF=y | ||
152 | # CONFIG_BINFMT_MISC is not set | ||
153 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
154 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
155 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
156 | CONFIG_SELECT_MEMORY_MODEL=y | ||
157 | CONFIG_FLATMEM_MANUAL=y | ||
158 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
159 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
160 | CONFIG_FLATMEM=y | ||
161 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
162 | # CONFIG_SPARSEMEM_STATIC is not set | ||
163 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
164 | # CONFIG_RESOURCES_64BIT is not set | ||
165 | CONFIG_PROC_DEVICETREE=y | ||
166 | # CONFIG_CMDLINE_BOOL is not set | ||
167 | # CONFIG_PM is not set | ||
168 | CONFIG_SECCOMP=y | ||
169 | CONFIG_ISA_DMA_API=y | ||
170 | |||
171 | # | ||
172 | # Bus options | ||
173 | # | ||
174 | CONFIG_GENERIC_ISA_DMA=y | ||
175 | # CONFIG_MPIC_WEIRD is not set | ||
176 | # CONFIG_PPC_I8259 is not set | ||
177 | CONFIG_PPC_INDIRECT_PCI=y | ||
178 | CONFIG_FSL_SOC=y | ||
179 | CONFIG_PCI=y | ||
180 | CONFIG_PCI_DOMAINS=y | ||
181 | # CONFIG_PCIEPORTBUS is not set | ||
182 | # CONFIG_PCI_DEBUG is not set | ||
183 | |||
184 | # | ||
185 | # PCCARD (PCMCIA/CardBus) support | ||
186 | # | ||
187 | # CONFIG_PCCARD is not set | ||
188 | |||
189 | # | ||
190 | # PCI Hotplug Support | ||
191 | # | ||
192 | # CONFIG_HOTPLUG_PCI is not set | ||
193 | |||
194 | # | ||
195 | # Advanced setup | ||
196 | # | ||
197 | # CONFIG_ADVANCED_OPTIONS is not set | ||
198 | |||
199 | # | ||
200 | # Default settings for advanced configuration options are used | ||
201 | # | ||
202 | CONFIG_HIGHMEM_START=0xfe000000 | ||
203 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
204 | CONFIG_KERNEL_START=0xc0000000 | ||
205 | CONFIG_TASK_SIZE=0x80000000 | ||
206 | CONFIG_BOOT_LOAD=0x00800000 | ||
207 | |||
208 | # | ||
209 | # Networking | ||
210 | # | ||
211 | CONFIG_NET=y | ||
212 | |||
213 | # | ||
214 | # Networking options | ||
215 | # | ||
216 | # CONFIG_NETDEBUG is not set | ||
217 | CONFIG_PACKET=y | ||
218 | # CONFIG_PACKET_MMAP is not set | ||
219 | CONFIG_UNIX=y | ||
220 | CONFIG_XFRM=y | ||
221 | # CONFIG_XFRM_USER is not set | ||
222 | # CONFIG_XFRM_SUB_POLICY is not set | ||
223 | # CONFIG_NET_KEY is not set | ||
224 | CONFIG_INET=y | ||
225 | CONFIG_IP_MULTICAST=y | ||
226 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
227 | CONFIG_IP_FIB_HASH=y | ||
228 | CONFIG_IP_PNP=y | ||
229 | CONFIG_IP_PNP_DHCP=y | ||
230 | CONFIG_IP_PNP_BOOTP=y | ||
231 | # CONFIG_IP_PNP_RARP is not set | ||
232 | # CONFIG_NET_IPIP is not set | ||
233 | # CONFIG_NET_IPGRE is not set | ||
234 | # CONFIG_IP_MROUTE is not set | ||
235 | # CONFIG_ARPD is not set | ||
236 | CONFIG_SYN_COOKIES=y | ||
237 | # CONFIG_INET_AH is not set | ||
238 | # CONFIG_INET_ESP is not set | ||
239 | # CONFIG_INET_IPCOMP is not set | ||
240 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
241 | # CONFIG_INET_TUNNEL is not set | ||
242 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
243 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
244 | CONFIG_INET_XFRM_MODE_BEET=y | ||
245 | CONFIG_INET_DIAG=y | ||
246 | CONFIG_INET_TCP_DIAG=y | ||
247 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
248 | CONFIG_TCP_CONG_CUBIC=y | ||
249 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
250 | # CONFIG_TCP_MD5SIG is not set | ||
251 | # CONFIG_IPV6 is not set | ||
252 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
253 | # CONFIG_INET6_TUNNEL is not set | ||
254 | # CONFIG_NETWORK_SECMARK is not set | ||
255 | # CONFIG_NETFILTER is not set | ||
256 | |||
257 | # | ||
258 | # DCCP Configuration (EXPERIMENTAL) | ||
259 | # | ||
260 | # CONFIG_IP_DCCP is not set | ||
261 | |||
262 | # | ||
263 | # SCTP Configuration (EXPERIMENTAL) | ||
264 | # | ||
265 | # CONFIG_IP_SCTP is not set | ||
266 | |||
267 | # | ||
268 | # TIPC Configuration (EXPERIMENTAL) | ||
269 | # | ||
270 | # CONFIG_TIPC is not set | ||
271 | # CONFIG_ATM is not set | ||
272 | # CONFIG_BRIDGE is not set | ||
273 | # CONFIG_VLAN_8021Q is not set | ||
274 | # CONFIG_DECNET is not set | ||
275 | # CONFIG_LLC2 is not set | ||
276 | # CONFIG_IPX is not set | ||
277 | # CONFIG_ATALK is not set | ||
278 | # CONFIG_X25 is not set | ||
279 | # CONFIG_LAPB is not set | ||
280 | # CONFIG_ECONET is not set | ||
281 | # CONFIG_WAN_ROUTER is not set | ||
282 | |||
283 | # | ||
284 | # QoS and/or fair queueing | ||
285 | # | ||
286 | # CONFIG_NET_SCHED is not set | ||
287 | |||
288 | # | ||
289 | # Network testing | ||
290 | # | ||
291 | # CONFIG_NET_PKTGEN is not set | ||
292 | # CONFIG_HAMRADIO is not set | ||
293 | # CONFIG_IRDA is not set | ||
294 | # CONFIG_BT is not set | ||
295 | # CONFIG_IEEE80211 is not set | ||
296 | |||
297 | # | ||
298 | # Device Drivers | ||
299 | # | ||
300 | |||
301 | # | ||
302 | # Generic Driver Options | ||
303 | # | ||
304 | CONFIG_STANDALONE=y | ||
305 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
306 | # CONFIG_FW_LOADER is not set | ||
307 | # CONFIG_DEBUG_DRIVER is not set | ||
308 | # CONFIG_SYS_HYPERVISOR is not set | ||
309 | |||
310 | # | ||
311 | # Connector - unified userspace <-> kernelspace linker | ||
312 | # | ||
313 | # CONFIG_CONNECTOR is not set | ||
314 | |||
315 | # | ||
316 | # Memory Technology Devices (MTD) | ||
317 | # | ||
318 | CONFIG_MTD=y | ||
319 | # CONFIG_MTD_DEBUG is not set | ||
320 | # CONFIG_MTD_CONCAT is not set | ||
321 | # CONFIG_MTD_PARTITIONS is not set | ||
322 | |||
323 | # | ||
324 | # User Modules And Translation Layers | ||
325 | # | ||
326 | CONFIG_MTD_CHAR=y | ||
327 | # CONFIG_MTD_BLKDEVS is not set | ||
328 | # CONFIG_MTD_BLOCK is not set | ||
329 | # CONFIG_MTD_BLOCK_RO is not set | ||
330 | # CONFIG_FTL is not set | ||
331 | # CONFIG_NFTL is not set | ||
332 | # CONFIG_INFTL is not set | ||
333 | # CONFIG_RFD_FTL is not set | ||
334 | # CONFIG_SSFDC is not set | ||
335 | |||
336 | # | ||
337 | # RAM/ROM/Flash chip drivers | ||
338 | # | ||
339 | CONFIG_MTD_CFI=y | ||
340 | # CONFIG_MTD_JEDECPROBE is not set | ||
341 | CONFIG_MTD_GEN_PROBE=y | ||
342 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
343 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
344 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
345 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
346 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
347 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
348 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
349 | CONFIG_MTD_CFI_I1=y | ||
350 | CONFIG_MTD_CFI_I2=y | ||
351 | # CONFIG_MTD_CFI_I4 is not set | ||
352 | # CONFIG_MTD_CFI_I8 is not set | ||
353 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
354 | CONFIG_MTD_CFI_AMDSTD=y | ||
355 | # CONFIG_MTD_CFI_STAA is not set | ||
356 | CONFIG_MTD_CFI_UTIL=y | ||
357 | # CONFIG_MTD_RAM is not set | ||
358 | # CONFIG_MTD_ROM is not set | ||
359 | # CONFIG_MTD_ABSENT is not set | ||
360 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
361 | |||
362 | # | ||
363 | # Mapping drivers for chip access | ||
364 | # | ||
365 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
366 | CONFIG_MTD_PHYSMAP=y | ||
367 | CONFIG_MTD_PHYSMAP_START=0xfe000000 | ||
368 | CONFIG_MTD_PHYSMAP_LEN=0x1000000 | ||
369 | CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | ||
370 | # CONFIG_MTD_PHYSMAP_OF is not set | ||
371 | # CONFIG_MTD_PLATRAM is not set | ||
372 | |||
373 | # | ||
374 | # Self-contained MTD device drivers | ||
375 | # | ||
376 | # CONFIG_MTD_PMC551 is not set | ||
377 | # CONFIG_MTD_DATAFLASH is not set | ||
378 | # CONFIG_MTD_M25P80 is not set | ||
379 | # CONFIG_MTD_SLRAM is not set | ||
380 | # CONFIG_MTD_PHRAM is not set | ||
381 | # CONFIG_MTD_MTDRAM is not set | ||
382 | # CONFIG_MTD_BLOCK2MTD is not set | ||
383 | |||
384 | # | ||
385 | # Disk-On-Chip Device Drivers | ||
386 | # | ||
387 | # CONFIG_MTD_DOC2000 is not set | ||
388 | # CONFIG_MTD_DOC2001 is not set | ||
389 | # CONFIG_MTD_DOC2001PLUS is not set | ||
390 | |||
391 | # | ||
392 | # NAND Flash Device Drivers | ||
393 | # | ||
394 | # CONFIG_MTD_NAND is not set | ||
395 | # CONFIG_MTD_NAND_CAFE is not set | ||
396 | |||
397 | # | ||
398 | # OneNAND Flash Device Drivers | ||
399 | # | ||
400 | # CONFIG_MTD_ONENAND is not set | ||
401 | |||
402 | # | ||
403 | # Parallel port support | ||
404 | # | ||
405 | # CONFIG_PARPORT is not set | ||
406 | |||
407 | # | ||
408 | # Plug and Play support | ||
409 | # | ||
410 | |||
411 | # | ||
412 | # Block devices | ||
413 | # | ||
414 | # CONFIG_BLK_DEV_FD is not set | ||
415 | # CONFIG_BLK_CPQ_DA is not set | ||
416 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
417 | # CONFIG_BLK_DEV_DAC960 is not set | ||
418 | # CONFIG_BLK_DEV_UMEM is not set | ||
419 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
420 | CONFIG_BLK_DEV_LOOP=y | ||
421 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
422 | # CONFIG_BLK_DEV_NBD is not set | ||
423 | # CONFIG_BLK_DEV_SX8 is not set | ||
424 | # CONFIG_BLK_DEV_UB is not set | ||
425 | CONFIG_BLK_DEV_RAM=y | ||
426 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
427 | CONFIG_BLK_DEV_RAM_SIZE=32768 | ||
428 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
429 | CONFIG_BLK_DEV_INITRD=y | ||
430 | # CONFIG_CDROM_PKTCDVD is not set | ||
431 | # CONFIG_ATA_OVER_ETH is not set | ||
432 | |||
433 | # | ||
434 | # Misc devices | ||
435 | # | ||
436 | # CONFIG_SGI_IOC4 is not set | ||
437 | # CONFIG_TIFM_CORE is not set | ||
438 | |||
439 | # | ||
440 | # ATA/ATAPI/MFM/RLL support | ||
441 | # | ||
442 | # CONFIG_IDE is not set | ||
443 | |||
444 | # | ||
445 | # SCSI device support | ||
446 | # | ||
447 | # CONFIG_RAID_ATTRS is not set | ||
448 | CONFIG_SCSI=y | ||
449 | # CONFIG_SCSI_TGT is not set | ||
450 | # CONFIG_SCSI_NETLINK is not set | ||
451 | CONFIG_SCSI_PROC_FS=y | ||
452 | |||
453 | # | ||
454 | # SCSI support type (disk, tape, CD-ROM) | ||
455 | # | ||
456 | # CONFIG_BLK_DEV_SD is not set | ||
457 | # CONFIG_CHR_DEV_ST is not set | ||
458 | # CONFIG_CHR_DEV_OSST is not set | ||
459 | # CONFIG_BLK_DEV_SR is not set | ||
460 | CONFIG_CHR_DEV_SG=y | ||
461 | # CONFIG_CHR_DEV_SCH is not set | ||
462 | |||
463 | # | ||
464 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
465 | # | ||
466 | # CONFIG_SCSI_MULTI_LUN is not set | ||
467 | # CONFIG_SCSI_CONSTANTS is not set | ||
468 | # CONFIG_SCSI_LOGGING is not set | ||
469 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
470 | |||
471 | # | ||
472 | # SCSI Transports | ||
473 | # | ||
474 | CONFIG_SCSI_SPI_ATTRS=y | ||
475 | # CONFIG_SCSI_FC_ATTRS is not set | ||
476 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
477 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
478 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
479 | |||
480 | # | ||
481 | # SCSI low-level drivers | ||
482 | # | ||
483 | # CONFIG_ISCSI_TCP is not set | ||
484 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
485 | # CONFIG_SCSI_3W_9XXX is not set | ||
486 | # CONFIG_SCSI_ACARD is not set | ||
487 | # CONFIG_SCSI_AACRAID is not set | ||
488 | # CONFIG_SCSI_AIC7XXX is not set | ||
489 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
490 | # CONFIG_SCSI_AIC79XX is not set | ||
491 | # CONFIG_SCSI_AIC94XX is not set | ||
492 | # CONFIG_SCSI_DPT_I2O is not set | ||
493 | # CONFIG_SCSI_ARCMSR is not set | ||
494 | # CONFIG_MEGARAID_NEWGEN is not set | ||
495 | # CONFIG_MEGARAID_LEGACY is not set | ||
496 | # CONFIG_MEGARAID_SAS is not set | ||
497 | # CONFIG_SCSI_HPTIOP is not set | ||
498 | # CONFIG_SCSI_BUSLOGIC is not set | ||
499 | # CONFIG_SCSI_DMX3191D is not set | ||
500 | # CONFIG_SCSI_EATA is not set | ||
501 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
502 | # CONFIG_SCSI_GDTH is not set | ||
503 | # CONFIG_SCSI_IPS is not set | ||
504 | # CONFIG_SCSI_INITIO is not set | ||
505 | # CONFIG_SCSI_INIA100 is not set | ||
506 | # CONFIG_SCSI_STEX is not set | ||
507 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
508 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
509 | # CONFIG_SCSI_QLA_FC is not set | ||
510 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
511 | # CONFIG_SCSI_LPFC is not set | ||
512 | # CONFIG_SCSI_DC395x is not set | ||
513 | # CONFIG_SCSI_DC390T is not set | ||
514 | # CONFIG_SCSI_NSP32 is not set | ||
515 | # CONFIG_SCSI_DEBUG is not set | ||
516 | # CONFIG_SCSI_SRP is not set | ||
517 | |||
518 | # | ||
519 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
520 | # | ||
521 | # CONFIG_ATA is not set | ||
522 | |||
523 | # | ||
524 | # Multi-device support (RAID and LVM) | ||
525 | # | ||
526 | CONFIG_MD=y | ||
527 | CONFIG_BLK_DEV_MD=y | ||
528 | CONFIG_MD_LINEAR=y | ||
529 | CONFIG_MD_RAID0=y | ||
530 | CONFIG_MD_RAID1=y | ||
531 | # CONFIG_MD_RAID10 is not set | ||
532 | # CONFIG_MD_RAID456 is not set | ||
533 | # CONFIG_MD_MULTIPATH is not set | ||
534 | # CONFIG_MD_FAULTY is not set | ||
535 | # CONFIG_BLK_DEV_DM is not set | ||
536 | |||
537 | # | ||
538 | # Fusion MPT device support | ||
539 | # | ||
540 | # CONFIG_FUSION is not set | ||
541 | # CONFIG_FUSION_SPI is not set | ||
542 | # CONFIG_FUSION_FC is not set | ||
543 | # CONFIG_FUSION_SAS is not set | ||
544 | |||
545 | # | ||
546 | # IEEE 1394 (FireWire) support | ||
547 | # | ||
548 | # CONFIG_IEEE1394 is not set | ||
549 | |||
550 | # | ||
551 | # I2O device support | ||
552 | # | ||
553 | # CONFIG_I2O is not set | ||
554 | |||
555 | # | ||
556 | # Macintosh device drivers | ||
557 | # | ||
558 | # CONFIG_MAC_EMUMOUSEBTN is not set | ||
559 | # CONFIG_WINDFARM is not set | ||
560 | |||
561 | # | ||
562 | # Network device support | ||
563 | # | ||
564 | CONFIG_NETDEVICES=y | ||
565 | # CONFIG_DUMMY is not set | ||
566 | # CONFIG_BONDING is not set | ||
567 | # CONFIG_EQUALIZER is not set | ||
568 | # CONFIG_TUN is not set | ||
569 | |||
570 | # | ||
571 | # ARCnet devices | ||
572 | # | ||
573 | # CONFIG_ARCNET is not set | ||
574 | |||
575 | # | ||
576 | # PHY device support | ||
577 | # | ||
578 | CONFIG_PHYLIB=y | ||
579 | |||
580 | # | ||
581 | # MII PHY device drivers | ||
582 | # | ||
583 | # CONFIG_MARVELL_PHY is not set | ||
584 | # CONFIG_DAVICOM_PHY is not set | ||
585 | # CONFIG_QSEMI_PHY is not set | ||
586 | # CONFIG_LXT_PHY is not set | ||
587 | CONFIG_CICADA_PHY=y | ||
588 | # CONFIG_VITESSE_PHY is not set | ||
589 | # CONFIG_SMSC_PHY is not set | ||
590 | # CONFIG_BROADCOM_PHY is not set | ||
591 | # CONFIG_FIXED_PHY is not set | ||
592 | |||
593 | # | ||
594 | # Ethernet (10 or 100Mbit) | ||
595 | # | ||
596 | CONFIG_NET_ETHERNET=y | ||
597 | CONFIG_MII=y | ||
598 | # CONFIG_HAPPYMEAL is not set | ||
599 | # CONFIG_SUNGEM is not set | ||
600 | # CONFIG_CASSINI is not set | ||
601 | # CONFIG_NET_VENDOR_3COM is not set | ||
602 | |||
603 | # | ||
604 | # Tulip family network device support | ||
605 | # | ||
606 | # CONFIG_NET_TULIP is not set | ||
607 | # CONFIG_HP100 is not set | ||
608 | CONFIG_NET_PCI=y | ||
609 | # CONFIG_PCNET32 is not set | ||
610 | # CONFIG_AMD8111_ETH is not set | ||
611 | # CONFIG_ADAPTEC_STARFIRE is not set | ||
612 | # CONFIG_B44 is not set | ||
613 | # CONFIG_FORCEDETH is not set | ||
614 | # CONFIG_DGRS is not set | ||
615 | # CONFIG_EEPRO100 is not set | ||
616 | CONFIG_E100=y | ||
617 | # CONFIG_FEALNX is not set | ||
618 | # CONFIG_NATSEMI is not set | ||
619 | # CONFIG_NE2K_PCI is not set | ||
620 | # CONFIG_8139CP is not set | ||
621 | # CONFIG_8139TOO is not set | ||
622 | # CONFIG_SIS900 is not set | ||
623 | # CONFIG_EPIC100 is not set | ||
624 | # CONFIG_SUNDANCE is not set | ||
625 | # CONFIG_TLAN is not set | ||
626 | # CONFIG_VIA_RHINE is not set | ||
627 | |||
628 | # | ||
629 | # Ethernet (1000 Mbit) | ||
630 | # | ||
631 | # CONFIG_ACENIC is not set | ||
632 | # CONFIG_DL2K is not set | ||
633 | # CONFIG_E1000 is not set | ||
634 | # CONFIG_NS83820 is not set | ||
635 | # CONFIG_HAMACHI is not set | ||
636 | # CONFIG_YELLOWFIN is not set | ||
637 | # CONFIG_R8169 is not set | ||
638 | # CONFIG_SIS190 is not set | ||
639 | # CONFIG_SKGE is not set | ||
640 | # CONFIG_SKY2 is not set | ||
641 | # CONFIG_SK98LIN is not set | ||
642 | # CONFIG_VIA_VELOCITY is not set | ||
643 | # CONFIG_TIGON3 is not set | ||
644 | # CONFIG_BNX2 is not set | ||
645 | CONFIG_GIANFAR=y | ||
646 | CONFIG_GFAR_NAPI=y | ||
647 | # CONFIG_QLA3XXX is not set | ||
648 | |||
649 | # | ||
650 | # Ethernet (10000 Mbit) | ||
651 | # | ||
652 | # CONFIG_CHELSIO_T1 is not set | ||
653 | # CONFIG_IXGB is not set | ||
654 | # CONFIG_S2IO is not set | ||
655 | # CONFIG_MYRI10GE is not set | ||
656 | # CONFIG_NETXEN_NIC is not set | ||
657 | |||
658 | # | ||
659 | # Token Ring devices | ||
660 | # | ||
661 | # CONFIG_TR is not set | ||
662 | |||
663 | # | ||
664 | # Wireless LAN (non-hamradio) | ||
665 | # | ||
666 | # CONFIG_NET_RADIO is not set | ||
667 | |||
668 | # | ||
669 | # Wan interfaces | ||
670 | # | ||
671 | # CONFIG_WAN is not set | ||
672 | # CONFIG_FDDI is not set | ||
673 | # CONFIG_HIPPI is not set | ||
674 | # CONFIG_PPP is not set | ||
675 | # CONFIG_SLIP is not set | ||
676 | # CONFIG_NET_FC is not set | ||
677 | # CONFIG_SHAPER is not set | ||
678 | # CONFIG_NETCONSOLE is not set | ||
679 | # CONFIG_NETPOLL is not set | ||
680 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
681 | |||
682 | # | ||
683 | # ISDN subsystem | ||
684 | # | ||
685 | # CONFIG_ISDN is not set | ||
686 | |||
687 | # | ||
688 | # Telephony Support | ||
689 | # | ||
690 | # CONFIG_PHONE is not set | ||
691 | |||
692 | # | ||
693 | # Input device support | ||
694 | # | ||
695 | CONFIG_INPUT=y | ||
696 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
697 | |||
698 | # | ||
699 | # Userland interfaces | ||
700 | # | ||
701 | # CONFIG_INPUT_MOUSEDEV is not set | ||
702 | # CONFIG_INPUT_JOYDEV is not set | ||
703 | # CONFIG_INPUT_TSDEV is not set | ||
704 | # CONFIG_INPUT_EVDEV is not set | ||
705 | # CONFIG_INPUT_EVBUG is not set | ||
706 | |||
707 | # | ||
708 | # Input Device Drivers | ||
709 | # | ||
710 | # CONFIG_INPUT_KEYBOARD is not set | ||
711 | # CONFIG_INPUT_MOUSE is not set | ||
712 | # CONFIG_INPUT_JOYSTICK is not set | ||
713 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
714 | # CONFIG_INPUT_MISC is not set | ||
715 | |||
716 | # | ||
717 | # Hardware I/O ports | ||
718 | # | ||
719 | # CONFIG_SERIO is not set | ||
720 | # CONFIG_GAMEPORT is not set | ||
721 | |||
722 | # | ||
723 | # Character devices | ||
724 | # | ||
725 | # CONFIG_VT is not set | ||
726 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
727 | |||
728 | # | ||
729 | # Serial drivers | ||
730 | # | ||
731 | CONFIG_SERIAL_8250=y | ||
732 | CONFIG_SERIAL_8250_CONSOLE=y | ||
733 | CONFIG_SERIAL_8250_PCI=y | ||
734 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
735 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
736 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
737 | |||
738 | # | ||
739 | # Non-8250 serial port support | ||
740 | # | ||
741 | # CONFIG_SERIAL_UARTLITE is not set | ||
742 | CONFIG_SERIAL_CORE=y | ||
743 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
744 | # CONFIG_SERIAL_JSM is not set | ||
745 | CONFIG_UNIX98_PTYS=y | ||
746 | CONFIG_LEGACY_PTYS=y | ||
747 | CONFIG_LEGACY_PTY_COUNT=256 | ||
748 | |||
749 | # | ||
750 | # IPMI | ||
751 | # | ||
752 | # CONFIG_IPMI_HANDLER is not set | ||
753 | |||
754 | # | ||
755 | # Watchdog Cards | ||
756 | # | ||
757 | CONFIG_WATCHDOG=y | ||
758 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
759 | |||
760 | # | ||
761 | # Watchdog Device Drivers | ||
762 | # | ||
763 | # CONFIG_SOFT_WATCHDOG is not set | ||
764 | CONFIG_83xx_WDT=y | ||
765 | |||
766 | # | ||
767 | # PCI-based Watchdog Cards | ||
768 | # | ||
769 | # CONFIG_PCIPCWATCHDOG is not set | ||
770 | # CONFIG_WDTPCI is not set | ||
771 | |||
772 | # | ||
773 | # USB-based Watchdog Cards | ||
774 | # | ||
775 | # CONFIG_USBPCWATCHDOG is not set | ||
776 | CONFIG_HW_RANDOM=y | ||
777 | # CONFIG_NVRAM is not set | ||
778 | # CONFIG_GEN_RTC is not set | ||
779 | # CONFIG_DTLK is not set | ||
780 | # CONFIG_R3964 is not set | ||
781 | # CONFIG_APPLICOM is not set | ||
782 | # CONFIG_AGP is not set | ||
783 | # CONFIG_DRM is not set | ||
784 | # CONFIG_RAW_DRIVER is not set | ||
785 | |||
786 | # | ||
787 | # TPM devices | ||
788 | # | ||
789 | # CONFIG_TCG_TPM is not set | ||
790 | |||
791 | # | ||
792 | # I2C support | ||
793 | # | ||
794 | CONFIG_I2C=y | ||
795 | CONFIG_I2C_CHARDEV=y | ||
796 | |||
797 | # | ||
798 | # I2C Algorithms | ||
799 | # | ||
800 | # CONFIG_I2C_ALGOBIT is not set | ||
801 | # CONFIG_I2C_ALGOPCF is not set | ||
802 | # CONFIG_I2C_ALGOPCA is not set | ||
803 | |||
804 | # | ||
805 | # I2C Hardware Bus support | ||
806 | # | ||
807 | # CONFIG_I2C_ALI1535 is not set | ||
808 | # CONFIG_I2C_ALI1563 is not set | ||
809 | # CONFIG_I2C_ALI15X3 is not set | ||
810 | # CONFIG_I2C_AMD756 is not set | ||
811 | # CONFIG_I2C_AMD8111 is not set | ||
812 | # CONFIG_I2C_I801 is not set | ||
813 | # CONFIG_I2C_I810 is not set | ||
814 | # CONFIG_I2C_PIIX4 is not set | ||
815 | CONFIG_I2C_MPC=y | ||
816 | # CONFIG_I2C_NFORCE2 is not set | ||
817 | # CONFIG_I2C_OCORES is not set | ||
818 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
819 | # CONFIG_I2C_PROSAVAGE is not set | ||
820 | # CONFIG_I2C_SAVAGE4 is not set | ||
821 | # CONFIG_I2C_SIS5595 is not set | ||
822 | # CONFIG_I2C_SIS630 is not set | ||
823 | # CONFIG_I2C_SIS96X is not set | ||
824 | # CONFIG_I2C_STUB is not set | ||
825 | # CONFIG_I2C_VIA is not set | ||
826 | # CONFIG_I2C_VIAPRO is not set | ||
827 | # CONFIG_I2C_VOODOO3 is not set | ||
828 | # CONFIG_I2C_PCA_ISA is not set | ||
829 | |||
830 | # | ||
831 | # Miscellaneous I2C Chip support | ||
832 | # | ||
833 | # CONFIG_SENSORS_DS1337 is not set | ||
834 | # CONFIG_SENSORS_DS1374 is not set | ||
835 | # CONFIG_SENSORS_EEPROM is not set | ||
836 | # CONFIG_SENSORS_PCF8574 is not set | ||
837 | # CONFIG_SENSORS_PCA9539 is not set | ||
838 | # CONFIG_SENSORS_PCF8591 is not set | ||
839 | # CONFIG_SENSORS_M41T00 is not set | ||
840 | # CONFIG_SENSORS_MAX6875 is not set | ||
841 | # CONFIG_I2C_DEBUG_CORE is not set | ||
842 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
843 | # CONFIG_I2C_DEBUG_BUS is not set | ||
844 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
845 | |||
846 | # | ||
847 | # SPI support | ||
848 | # | ||
849 | CONFIG_SPI=y | ||
850 | # CONFIG_SPI_DEBUG is not set | ||
851 | CONFIG_SPI_MASTER=y | ||
852 | |||
853 | # | ||
854 | # SPI Master Controller Drivers | ||
855 | # | ||
856 | CONFIG_SPI_BITBANG=y | ||
857 | CONFIG_SPI_MPC83xx=y | ||
858 | |||
859 | # | ||
860 | # SPI Protocol Masters | ||
861 | # | ||
862 | |||
863 | # | ||
864 | # Dallas's 1-wire bus | ||
865 | # | ||
866 | # CONFIG_W1 is not set | ||
867 | |||
868 | # | ||
869 | # Hardware Monitoring support | ||
870 | # | ||
871 | CONFIG_HWMON=y | ||
872 | # CONFIG_HWMON_VID is not set | ||
873 | # CONFIG_SENSORS_ABITUGURU is not set | ||
874 | # CONFIG_SENSORS_ADM1021 is not set | ||
875 | # CONFIG_SENSORS_ADM1025 is not set | ||
876 | # CONFIG_SENSORS_ADM1026 is not set | ||
877 | # CONFIG_SENSORS_ADM1031 is not set | ||
878 | # CONFIG_SENSORS_ADM9240 is not set | ||
879 | # CONFIG_SENSORS_ASB100 is not set | ||
880 | # CONFIG_SENSORS_ATXP1 is not set | ||
881 | # CONFIG_SENSORS_DS1621 is not set | ||
882 | # CONFIG_SENSORS_F71805F is not set | ||
883 | # CONFIG_SENSORS_FSCHER is not set | ||
884 | # CONFIG_SENSORS_FSCPOS is not set | ||
885 | # CONFIG_SENSORS_GL518SM is not set | ||
886 | # CONFIG_SENSORS_GL520SM is not set | ||
887 | # CONFIG_SENSORS_IT87 is not set | ||
888 | # CONFIG_SENSORS_LM63 is not set | ||
889 | # CONFIG_SENSORS_LM70 is not set | ||
890 | # CONFIG_SENSORS_LM75 is not set | ||
891 | # CONFIG_SENSORS_LM77 is not set | ||
892 | # CONFIG_SENSORS_LM78 is not set | ||
893 | # CONFIG_SENSORS_LM80 is not set | ||
894 | # CONFIG_SENSORS_LM83 is not set | ||
895 | # CONFIG_SENSORS_LM85 is not set | ||
896 | # CONFIG_SENSORS_LM87 is not set | ||
897 | # CONFIG_SENSORS_LM90 is not set | ||
898 | # CONFIG_SENSORS_LM92 is not set | ||
899 | # CONFIG_SENSORS_MAX1619 is not set | ||
900 | # CONFIG_SENSORS_PC87360 is not set | ||
901 | # CONFIG_SENSORS_PC87427 is not set | ||
902 | # CONFIG_SENSORS_SIS5595 is not set | ||
903 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
904 | # CONFIG_SENSORS_SMSC47M192 is not set | ||
905 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
906 | # CONFIG_SENSORS_VIA686A is not set | ||
907 | # CONFIG_SENSORS_VT1211 is not set | ||
908 | # CONFIG_SENSORS_VT8231 is not set | ||
909 | # CONFIG_SENSORS_W83781D is not set | ||
910 | # CONFIG_SENSORS_W83791D is not set | ||
911 | # CONFIG_SENSORS_W83792D is not set | ||
912 | # CONFIG_SENSORS_W83793 is not set | ||
913 | # CONFIG_SENSORS_W83L785TS is not set | ||
914 | # CONFIG_SENSORS_W83627HF is not set | ||
915 | # CONFIG_SENSORS_W83627EHF is not set | ||
916 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
917 | |||
918 | # | ||
919 | # Multimedia devices | ||
920 | # | ||
921 | # CONFIG_VIDEO_DEV is not set | ||
922 | |||
923 | # | ||
924 | # Digital Video Broadcasting Devices | ||
925 | # | ||
926 | # CONFIG_DVB is not set | ||
927 | # CONFIG_USB_DABUSB is not set | ||
928 | |||
929 | # | ||
930 | # Graphics support | ||
931 | # | ||
932 | CONFIG_FIRMWARE_EDID=y | ||
933 | # CONFIG_FB is not set | ||
934 | # CONFIG_FB_IBM_GXT4500 is not set | ||
935 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
936 | |||
937 | # | ||
938 | # Sound | ||
939 | # | ||
940 | # CONFIG_SOUND is not set | ||
941 | |||
942 | # | ||
943 | # HID Devices | ||
944 | # | ||
945 | CONFIG_HID=y | ||
946 | |||
947 | # | ||
948 | # USB support | ||
949 | # | ||
950 | CONFIG_USB_ARCH_HAS_HCD=y | ||
951 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
952 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
953 | CONFIG_USB=y | ||
954 | # CONFIG_USB_DEBUG is not set | ||
955 | |||
956 | # | ||
957 | # Miscellaneous USB options | ||
958 | # | ||
959 | CONFIG_USB_DEVICEFS=y | ||
960 | # CONFIG_USB_BANDWIDTH is not set | ||
961 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
962 | # CONFIG_USB_OTG is not set | ||
963 | |||
964 | # | ||
965 | # USB Host Controller Drivers | ||
966 | # | ||
967 | CONFIG_USB_EHCI_HCD=y | ||
968 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
969 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | ||
970 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
971 | # CONFIG_USB_ISP116X_HCD is not set | ||
972 | CONFIG_USB_OHCI_HCD=y | ||
973 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
974 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
975 | CONFIG_USB_UHCI_HCD=y | ||
976 | # CONFIG_USB_SL811_HCD is not set | ||
977 | |||
978 | # | ||
979 | # USB Device Class drivers | ||
980 | # | ||
981 | # CONFIG_USB_ACM is not set | ||
982 | # CONFIG_USB_PRINTER is not set | ||
983 | |||
984 | # | ||
985 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
986 | # | ||
987 | |||
988 | # | ||
989 | # may also be needed; see USB_STORAGE Help for more information | ||
990 | # | ||
991 | CONFIG_USB_STORAGE=y | ||
992 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
993 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
994 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
995 | # CONFIG_USB_STORAGE_DPCM is not set | ||
996 | # CONFIG_USB_STORAGE_USBAT is not set | ||
997 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
998 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
999 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
1000 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
1001 | # CONFIG_USB_STORAGE_KARMA is not set | ||
1002 | # CONFIG_USB_LIBUSUAL is not set | ||
1003 | |||
1004 | # | ||
1005 | # USB Input Devices | ||
1006 | # | ||
1007 | # CONFIG_USB_HID is not set | ||
1008 | |||
1009 | # | ||
1010 | # USB HID Boot Protocol drivers | ||
1011 | # | ||
1012 | # CONFIG_USB_KBD is not set | ||
1013 | # CONFIG_USB_MOUSE is not set | ||
1014 | # CONFIG_USB_AIPTEK is not set | ||
1015 | # CONFIG_USB_WACOM is not set | ||
1016 | # CONFIG_USB_ACECAD is not set | ||
1017 | # CONFIG_USB_KBTAB is not set | ||
1018 | # CONFIG_USB_POWERMATE is not set | ||
1019 | # CONFIG_USB_TOUCHSCREEN is not set | ||
1020 | # CONFIG_USB_YEALINK is not set | ||
1021 | # CONFIG_USB_XPAD is not set | ||
1022 | # CONFIG_USB_ATI_REMOTE is not set | ||
1023 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
1024 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
1025 | # CONFIG_USB_APPLETOUCH is not set | ||
1026 | |||
1027 | # | ||
1028 | # USB Imaging devices | ||
1029 | # | ||
1030 | # CONFIG_USB_MDC800 is not set | ||
1031 | # CONFIG_USB_MICROTEK is not set | ||
1032 | |||
1033 | # | ||
1034 | # USB Network Adapters | ||
1035 | # | ||
1036 | # CONFIG_USB_CATC is not set | ||
1037 | # CONFIG_USB_KAWETH is not set | ||
1038 | # CONFIG_USB_PEGASUS is not set | ||
1039 | # CONFIG_USB_RTL8150 is not set | ||
1040 | # CONFIG_USB_USBNET_MII is not set | ||
1041 | # CONFIG_USB_USBNET is not set | ||
1042 | CONFIG_USB_MON=y | ||
1043 | |||
1044 | # | ||
1045 | # USB port drivers | ||
1046 | # | ||
1047 | |||
1048 | # | ||
1049 | # USB Serial Converter support | ||
1050 | # | ||
1051 | # CONFIG_USB_SERIAL is not set | ||
1052 | |||
1053 | # | ||
1054 | # USB Miscellaneous drivers | ||
1055 | # | ||
1056 | # CONFIG_USB_EMI62 is not set | ||
1057 | # CONFIG_USB_EMI26 is not set | ||
1058 | # CONFIG_USB_ADUTUX is not set | ||
1059 | # CONFIG_USB_AUERSWALD is not set | ||
1060 | # CONFIG_USB_RIO500 is not set | ||
1061 | # CONFIG_USB_LEGOTOWER is not set | ||
1062 | # CONFIG_USB_LCD is not set | ||
1063 | # CONFIG_USB_LED is not set | ||
1064 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1065 | # CONFIG_USB_CYTHERM is not set | ||
1066 | # CONFIG_USB_PHIDGET is not set | ||
1067 | # CONFIG_USB_IDMOUSE is not set | ||
1068 | # CONFIG_USB_FTDI_ELAN is not set | ||
1069 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1070 | # CONFIG_USB_SISUSBVGA is not set | ||
1071 | # CONFIG_USB_LD is not set | ||
1072 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1073 | # CONFIG_USB_TEST is not set | ||
1074 | |||
1075 | # | ||
1076 | # USB DSL modem support | ||
1077 | # | ||
1078 | |||
1079 | # | ||
1080 | # USB Gadget Support | ||
1081 | # | ||
1082 | CONFIG_USB_GADGET=y | ||
1083 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
1084 | CONFIG_USB_GADGET_SELECTED=y | ||
1085 | CONFIG_USB_GADGET_NET2280=y | ||
1086 | CONFIG_USB_NET2280=y | ||
1087 | # CONFIG_USB_GADGET_PXA2XX is not set | ||
1088 | # CONFIG_USB_GADGET_GOKU is not set | ||
1089 | # CONFIG_USB_GADGET_LH7A40X is not set | ||
1090 | # CONFIG_USB_GADGET_OMAP is not set | ||
1091 | # CONFIG_USB_GADGET_AT91 is not set | ||
1092 | # CONFIG_USB_GADGET_DUMMY_HCD is not set | ||
1093 | CONFIG_USB_GADGET_DUALSPEED=y | ||
1094 | # CONFIG_USB_ZERO is not set | ||
1095 | CONFIG_USB_ETH=y | ||
1096 | CONFIG_USB_ETH_RNDIS=y | ||
1097 | # CONFIG_USB_GADGETFS is not set | ||
1098 | # CONFIG_USB_FILE_STORAGE is not set | ||
1099 | # CONFIG_USB_G_SERIAL is not set | ||
1100 | # CONFIG_USB_MIDI_GADGET is not set | ||
1101 | |||
1102 | # | ||
1103 | # MMC/SD Card support | ||
1104 | # | ||
1105 | # CONFIG_MMC is not set | ||
1106 | |||
1107 | # | ||
1108 | # LED devices | ||
1109 | # | ||
1110 | # CONFIG_NEW_LEDS is not set | ||
1111 | |||
1112 | # | ||
1113 | # LED drivers | ||
1114 | # | ||
1115 | |||
1116 | # | ||
1117 | # LED Triggers | ||
1118 | # | ||
1119 | |||
1120 | # | ||
1121 | # InfiniBand support | ||
1122 | # | ||
1123 | # CONFIG_INFINIBAND is not set | ||
1124 | |||
1125 | # | ||
1126 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
1127 | # | ||
1128 | |||
1129 | # | ||
1130 | # Real Time Clock | ||
1131 | # | ||
1132 | CONFIG_RTC_LIB=y | ||
1133 | CONFIG_RTC_CLASS=y | ||
1134 | CONFIG_RTC_HCTOSYS=y | ||
1135 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
1136 | # CONFIG_RTC_DEBUG is not set | ||
1137 | |||
1138 | # | ||
1139 | # RTC interfaces | ||
1140 | # | ||
1141 | CONFIG_RTC_INTF_SYSFS=y | ||
1142 | CONFIG_RTC_INTF_PROC=y | ||
1143 | CONFIG_RTC_INTF_DEV=y | ||
1144 | CONFIG_RTC_INTF_DEV_UIE_EMUL=y | ||
1145 | |||
1146 | # | ||
1147 | # RTC drivers | ||
1148 | # | ||
1149 | # CONFIG_RTC_DRV_X1205 is not set | ||
1150 | CONFIG_RTC_DRV_DS1307=y | ||
1151 | # CONFIG_RTC_DRV_DS1553 is not set | ||
1152 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
1153 | # CONFIG_RTC_DRV_DS1672 is not set | ||
1154 | # CONFIG_RTC_DRV_DS1742 is not set | ||
1155 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
1156 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
1157 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
1158 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
1159 | # CONFIG_RTC_DRV_M48T86 is not set | ||
1160 | # CONFIG_RTC_DRV_TEST is not set | ||
1161 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
1162 | # CONFIG_RTC_DRV_V3020 is not set | ||
1163 | |||
1164 | # | ||
1165 | # DMA Engine support | ||
1166 | # | ||
1167 | CONFIG_DMA_ENGINE=y | ||
1168 | |||
1169 | # | ||
1170 | # DMA Clients | ||
1171 | # | ||
1172 | CONFIG_NET_DMA=y | ||
1173 | |||
1174 | # | ||
1175 | # DMA Devices | ||
1176 | # | ||
1177 | CONFIG_INTEL_IOATDMA=y | ||
1178 | |||
1179 | # | ||
1180 | # Virtualization | ||
1181 | # | ||
1182 | |||
1183 | # | ||
1184 | # File systems | ||
1185 | # | ||
1186 | CONFIG_EXT2_FS=y | ||
1187 | # CONFIG_EXT2_FS_XATTR is not set | ||
1188 | # CONFIG_EXT2_FS_XIP is not set | ||
1189 | CONFIG_EXT3_FS=y | ||
1190 | CONFIG_EXT3_FS_XATTR=y | ||
1191 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
1192 | # CONFIG_EXT3_FS_SECURITY is not set | ||
1193 | # CONFIG_EXT4DEV_FS is not set | ||
1194 | CONFIG_JBD=y | ||
1195 | # CONFIG_JBD_DEBUG is not set | ||
1196 | CONFIG_FS_MBCACHE=y | ||
1197 | # CONFIG_REISERFS_FS is not set | ||
1198 | # CONFIG_JFS_FS is not set | ||
1199 | # CONFIG_FS_POSIX_ACL is not set | ||
1200 | # CONFIG_XFS_FS is not set | ||
1201 | # CONFIG_GFS2_FS is not set | ||
1202 | # CONFIG_OCFS2_FS is not set | ||
1203 | # CONFIG_MINIX_FS is not set | ||
1204 | # CONFIG_ROMFS_FS is not set | ||
1205 | CONFIG_INOTIFY=y | ||
1206 | CONFIG_INOTIFY_USER=y | ||
1207 | # CONFIG_QUOTA is not set | ||
1208 | CONFIG_DNOTIFY=y | ||
1209 | # CONFIG_AUTOFS_FS is not set | ||
1210 | # CONFIG_AUTOFS4_FS is not set | ||
1211 | # CONFIG_FUSE_FS is not set | ||
1212 | |||
1213 | # | ||
1214 | # CD-ROM/DVD Filesystems | ||
1215 | # | ||
1216 | # CONFIG_ISO9660_FS is not set | ||
1217 | # CONFIG_UDF_FS is not set | ||
1218 | |||
1219 | # | ||
1220 | # DOS/FAT/NT Filesystems | ||
1221 | # | ||
1222 | # CONFIG_MSDOS_FS is not set | ||
1223 | # CONFIG_VFAT_FS is not set | ||
1224 | # CONFIG_NTFS_FS is not set | ||
1225 | |||
1226 | # | ||
1227 | # Pseudo filesystems | ||
1228 | # | ||
1229 | CONFIG_PROC_FS=y | ||
1230 | CONFIG_PROC_KCORE=y | ||
1231 | CONFIG_PROC_SYSCTL=y | ||
1232 | CONFIG_SYSFS=y | ||
1233 | CONFIG_TMPFS=y | ||
1234 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1235 | # CONFIG_HUGETLB_PAGE is not set | ||
1236 | CONFIG_RAMFS=y | ||
1237 | # CONFIG_CONFIGFS_FS is not set | ||
1238 | |||
1239 | # | ||
1240 | # Miscellaneous filesystems | ||
1241 | # | ||
1242 | # CONFIG_ADFS_FS is not set | ||
1243 | # CONFIG_AFFS_FS is not set | ||
1244 | # CONFIG_HFS_FS is not set | ||
1245 | # CONFIG_HFSPLUS_FS is not set | ||
1246 | # CONFIG_BEFS_FS is not set | ||
1247 | # CONFIG_BFS_FS is not set | ||
1248 | # CONFIG_EFS_FS is not set | ||
1249 | # CONFIG_JFFS2_FS is not set | ||
1250 | # CONFIG_CRAMFS is not set | ||
1251 | # CONFIG_VXFS_FS is not set | ||
1252 | # CONFIG_HPFS_FS is not set | ||
1253 | # CONFIG_QNX4FS_FS is not set | ||
1254 | # CONFIG_SYSV_FS is not set | ||
1255 | # CONFIG_UFS_FS is not set | ||
1256 | |||
1257 | # | ||
1258 | # Network File Systems | ||
1259 | # | ||
1260 | CONFIG_NFS_FS=y | ||
1261 | CONFIG_NFS_V3=y | ||
1262 | # CONFIG_NFS_V3_ACL is not set | ||
1263 | CONFIG_NFS_V4=y | ||
1264 | # CONFIG_NFS_DIRECTIO is not set | ||
1265 | # CONFIG_NFSD is not set | ||
1266 | CONFIG_ROOT_NFS=y | ||
1267 | CONFIG_LOCKD=y | ||
1268 | CONFIG_LOCKD_V4=y | ||
1269 | CONFIG_NFS_COMMON=y | ||
1270 | CONFIG_SUNRPC=y | ||
1271 | CONFIG_SUNRPC_GSS=y | ||
1272 | CONFIG_RPCSEC_GSS_KRB5=y | ||
1273 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
1274 | # CONFIG_SMB_FS is not set | ||
1275 | # CONFIG_CIFS is not set | ||
1276 | # CONFIG_NCP_FS is not set | ||
1277 | # CONFIG_CODA_FS is not set | ||
1278 | # CONFIG_AFS_FS is not set | ||
1279 | # CONFIG_9P_FS is not set | ||
1280 | |||
1281 | # | ||
1282 | # Partition Types | ||
1283 | # | ||
1284 | CONFIG_PARTITION_ADVANCED=y | ||
1285 | # CONFIG_ACORN_PARTITION is not set | ||
1286 | # CONFIG_OSF_PARTITION is not set | ||
1287 | # CONFIG_AMIGA_PARTITION is not set | ||
1288 | # CONFIG_ATARI_PARTITION is not set | ||
1289 | # CONFIG_MAC_PARTITION is not set | ||
1290 | CONFIG_MSDOS_PARTITION=y | ||
1291 | # CONFIG_BSD_DISKLABEL is not set | ||
1292 | # CONFIG_MINIX_SUBPARTITION is not set | ||
1293 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
1294 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
1295 | # CONFIG_LDM_PARTITION is not set | ||
1296 | # CONFIG_SGI_PARTITION is not set | ||
1297 | # CONFIG_ULTRIX_PARTITION is not set | ||
1298 | # CONFIG_SUN_PARTITION is not set | ||
1299 | # CONFIG_KARMA_PARTITION is not set | ||
1300 | # CONFIG_EFI_PARTITION is not set | ||
1301 | |||
1302 | # | ||
1303 | # Native Language Support | ||
1304 | # | ||
1305 | # CONFIG_NLS is not set | ||
1306 | |||
1307 | # | ||
1308 | # Distributed Lock Manager | ||
1309 | # | ||
1310 | # CONFIG_DLM is not set | ||
1311 | |||
1312 | # | ||
1313 | # Library routines | ||
1314 | # | ||
1315 | CONFIG_BITREVERSE=y | ||
1316 | # CONFIG_CRC_CCITT is not set | ||
1317 | # CONFIG_CRC16 is not set | ||
1318 | CONFIG_CRC32=y | ||
1319 | # CONFIG_LIBCRC32C is not set | ||
1320 | CONFIG_PLIST=y | ||
1321 | CONFIG_IOMAP_COPY=y | ||
1322 | |||
1323 | # | ||
1324 | # Instrumentation Support | ||
1325 | # | ||
1326 | # CONFIG_PROFILING is not set | ||
1327 | |||
1328 | # | ||
1329 | # Kernel hacking | ||
1330 | # | ||
1331 | # CONFIG_PRINTK_TIME is not set | ||
1332 | CONFIG_ENABLE_MUST_CHECK=y | ||
1333 | # CONFIG_MAGIC_SYSRQ is not set | ||
1334 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1335 | # CONFIG_DEBUG_FS is not set | ||
1336 | # CONFIG_HEADERS_CHECK is not set | ||
1337 | CONFIG_DEBUG_KERNEL=y | ||
1338 | CONFIG_LOG_BUF_SHIFT=14 | ||
1339 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1340 | # CONFIG_SCHEDSTATS is not set | ||
1341 | # CONFIG_DEBUG_SLAB is not set | ||
1342 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
1343 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1344 | # CONFIG_DEBUG_SPINLOCK is not set | ||
1345 | # CONFIG_DEBUG_MUTEXES is not set | ||
1346 | # CONFIG_DEBUG_RWSEMS is not set | ||
1347 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
1348 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1349 | # CONFIG_DEBUG_KOBJECT is not set | ||
1350 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1351 | # CONFIG_DEBUG_INFO is not set | ||
1352 | # CONFIG_DEBUG_VM is not set | ||
1353 | # CONFIG_DEBUG_LIST is not set | ||
1354 | CONFIG_FORCED_INLINING=y | ||
1355 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1356 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
1357 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
1358 | # CONFIG_DEBUGGER is not set | ||
1359 | # CONFIG_BDI_SWITCH is not set | ||
1360 | # CONFIG_BOOTX_TEXT is not set | ||
1361 | # CONFIG_SERIAL_TEXT_DEBUG is not set | ||
1362 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
1363 | |||
1364 | # | ||
1365 | # Security options | ||
1366 | # | ||
1367 | # CONFIG_KEYS is not set | ||
1368 | # CONFIG_SECURITY is not set | ||
1369 | |||
1370 | # | ||
1371 | # Cryptographic options | ||
1372 | # | ||
1373 | CONFIG_CRYPTO=y | ||
1374 | CONFIG_CRYPTO_ALGAPI=y | ||
1375 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1376 | CONFIG_CRYPTO_MANAGER=y | ||
1377 | # CONFIG_CRYPTO_HMAC is not set | ||
1378 | # CONFIG_CRYPTO_XCBC is not set | ||
1379 | # CONFIG_CRYPTO_NULL is not set | ||
1380 | # CONFIG_CRYPTO_MD4 is not set | ||
1381 | CONFIG_CRYPTO_MD5=y | ||
1382 | # CONFIG_CRYPTO_SHA1 is not set | ||
1383 | # CONFIG_CRYPTO_SHA256 is not set | ||
1384 | # CONFIG_CRYPTO_SHA512 is not set | ||
1385 | # CONFIG_CRYPTO_WP512 is not set | ||
1386 | # CONFIG_CRYPTO_TGR192 is not set | ||
1387 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1388 | # CONFIG_CRYPTO_ECB is not set | ||
1389 | CONFIG_CRYPTO_CBC=y | ||
1390 | # CONFIG_CRYPTO_LRW is not set | ||
1391 | CONFIG_CRYPTO_DES=y | ||
1392 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1393 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1394 | # CONFIG_CRYPTO_SERPENT is not set | ||
1395 | # CONFIG_CRYPTO_AES is not set | ||
1396 | # CONFIG_CRYPTO_CAST5 is not set | ||
1397 | # CONFIG_CRYPTO_CAST6 is not set | ||
1398 | # CONFIG_CRYPTO_TEA is not set | ||
1399 | # CONFIG_CRYPTO_ARC4 is not set | ||
1400 | # CONFIG_CRYPTO_KHAZAD is not set | ||
1401 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1402 | # CONFIG_CRYPTO_DEFLATE is not set | ||
1403 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1404 | # CONFIG_CRYPTO_CRC32C is not set | ||
1405 | # CONFIG_CRYPTO_TEST is not set | ||
1406 | |||
1407 | # | ||
1408 | # Hardware crypto devices | ||
1409 | # | ||
diff --git a/arch/powerpc/configs/mpc834x_mds_defconfig b/arch/powerpc/configs/mpc834x_mds_defconfig index 9eaed3a36983..2e3f8efb6ab1 100644 --- a/arch/powerpc/configs/mpc834x_mds_defconfig +++ b/arch/powerpc/configs/mpc834x_mds_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.20-rc5 | 3 | # Linux kernel version: 2.6.20 |
4 | # Fri Jan 26 00:19:27 2007 | 4 | # Thu Feb 8 01:00:48 2007 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | CONFIG_PPC32=y | 7 | CONFIG_PPC32=y |
@@ -34,9 +34,9 @@ CONFIG_DEFAULT_UIMAGE=y | |||
34 | CONFIG_PPC_83xx=y | 34 | CONFIG_PPC_83xx=y |
35 | # CONFIG_PPC_85xx is not set | 35 | # CONFIG_PPC_85xx is not set |
36 | # CONFIG_PPC_86xx is not set | 36 | # CONFIG_PPC_86xx is not set |
37 | # CONFIG_PPC_8xx is not set | ||
37 | # CONFIG_40x is not set | 38 | # CONFIG_40x is not set |
38 | # CONFIG_44x is not set | 39 | # CONFIG_44x is not set |
39 | # CONFIG_8xx is not set | ||
40 | # CONFIG_E200 is not set | 40 | # CONFIG_E200 is not set |
41 | CONFIG_6xx=y | 41 | CONFIG_6xx=y |
42 | CONFIG_83xx=y | 42 | CONFIG_83xx=y |
@@ -128,8 +128,9 @@ CONFIG_PPC_GEN550=y | |||
128 | # | 128 | # |
129 | # Platform support | 129 | # Platform support |
130 | # | 130 | # |
131 | # CONFIG_MPC8313_RDB is not set | ||
131 | # CONFIG_MPC832x_MDS is not set | 132 | # CONFIG_MPC832x_MDS is not set |
132 | CONFIG_MPC834x_SYS=y | 133 | CONFIG_MPC834x_MDS=y |
133 | # CONFIG_MPC834x_ITX is not set | 134 | # CONFIG_MPC834x_ITX is not set |
134 | # CONFIG_MPC8360E_PB is not set | 135 | # CONFIG_MPC8360E_PB is not set |
135 | CONFIG_MPC834x=y | 136 | CONFIG_MPC834x=y |
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig index ec644b34a082..0345a2ceec59 100644 --- a/arch/powerpc/configs/ps3_defconfig +++ b/arch/powerpc/configs/ps3_defconfig | |||
@@ -163,6 +163,7 @@ CONFIG_PS3_HTAB_SIZE=20 | |||
163 | # CONFIG_PS3_DYNAMIC_DMA is not set | 163 | # CONFIG_PS3_DYNAMIC_DMA is not set |
164 | CONFIG_PS3_USE_LPAR_ADDR=y | 164 | CONFIG_PS3_USE_LPAR_ADDR=y |
165 | CONFIG_PS3_VUART=y | 165 | CONFIG_PS3_VUART=y |
166 | CONFIG_PS3_PS3AV=y | ||
166 | 167 | ||
167 | # | 168 | # |
168 | # Kernel options | 169 | # Kernel options |
@@ -611,14 +612,40 @@ CONFIG_GEN_RTC=y | |||
611 | # Graphics support | 612 | # Graphics support |
612 | # | 613 | # |
613 | # CONFIG_FIRMWARE_EDID is not set | 614 | # CONFIG_FIRMWARE_EDID is not set |
614 | # CONFIG_FB is not set | 615 | CONFIG_FB=y |
616 | CONFIG_FB_CFB_FILLRECT=y | ||
617 | CONFIG_FB_CFB_COPYAREA=y | ||
618 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
619 | # CONFIG_FB_MACMODES is not set | ||
620 | # CONFIG_FB_BACKLIGHT is not set | ||
621 | # CONFIG_FB_MODE_HELPERS is not set | ||
622 | # CONFIG_FB_TILEBLITTING is not set | ||
623 | # CONFIG_FB_OF is not set | ||
624 | # CONFIG_FB_VGA16 is not set | ||
625 | # CONFIG_FB_S1D13XXX is not set | ||
615 | # CONFIG_FB_IBM_GXT4500 is not set | 626 | # CONFIG_FB_IBM_GXT4500 is not set |
627 | CONFIG_FB_PS3=y | ||
628 | CONFIG_FB_PS3_DEFAULT_SIZE_M=18 | ||
629 | # CONFIG_FB_VIRTUAL is not set | ||
616 | 630 | ||
617 | # | 631 | # |
618 | # Console display driver support | 632 | # Console display driver support |
619 | # | 633 | # |
620 | # CONFIG_VGA_CONSOLE is not set | 634 | # CONFIG_VGA_CONSOLE is not set |
621 | CONFIG_DUMMY_CONSOLE=y | 635 | CONFIG_DUMMY_CONSOLE=y |
636 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
637 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
638 | # CONFIG_FONTS is not set | ||
639 | CONFIG_FONT_8x8=y | ||
640 | CONFIG_FONT_8x16=y | ||
641 | |||
642 | # | ||
643 | # Logo configuration | ||
644 | # | ||
645 | CONFIG_LOGO=y | ||
646 | # CONFIG_LOGO_LINUX_MONO is not set | ||
647 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
648 | CONFIG_LOGO_LINUX_CLUT224=y | ||
622 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 649 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
623 | 650 | ||
624 | # | 651 | # |
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index dd17dffbf058..7ec4ac77c0fa 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -44,7 +44,7 @@ extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec); | |||
44 | extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec); | 44 | extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec); |
45 | extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec); | 45 | extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec); |
46 | extern void __setup_cpu_pa6t(unsigned long offset, struct cpu_spec* spec); | 46 | extern void __setup_cpu_pa6t(unsigned long offset, struct cpu_spec* spec); |
47 | extern void __restore_cpu_pa6t(unsigned long offset, struct cpu_spec* spec); | 47 | extern void __restore_cpu_pa6t(void); |
48 | extern void __restore_cpu_ppc970(void); | 48 | extern void __restore_cpu_ppc970(void); |
49 | #endif /* CONFIG_PPC64 */ | 49 | #endif /* CONFIG_PPC64 */ |
50 | 50 | ||
diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S index accb39d49911..a15d4b8cce48 100644 --- a/arch/powerpc/kernel/head_44x.S +++ b/arch/powerpc/kernel/head_44x.S | |||
@@ -32,8 +32,6 @@ | |||
32 | #include <asm/page.h> | 32 | #include <asm/page.h> |
33 | #include <asm/mmu.h> | 33 | #include <asm/mmu.h> |
34 | #include <asm/pgtable.h> | 34 | #include <asm/pgtable.h> |
35 | #include <asm/ibm4xx.h> | ||
36 | #include <asm/ibm44x.h> | ||
37 | #include <asm/cputable.h> | 35 | #include <asm/cputable.h> |
38 | #include <asm/thread_info.h> | 36 | #include <asm/thread_info.h> |
39 | #include <asm/ppc_asm.h> | 37 | #include <asm/ppc_asm.h> |
diff --git a/arch/powerpc/kernel/legacy_serial.c b/arch/powerpc/kernel/legacy_serial.c index 5e6ddfa474c0..89f46f377922 100644 --- a/arch/powerpc/kernel/legacy_serial.c +++ b/arch/powerpc/kernel/legacy_serial.c | |||
@@ -498,7 +498,7 @@ static int __init check_legacy_serial_console(void) | |||
498 | DBG(" -> check_legacy_serial_console()\n"); | 498 | DBG(" -> check_legacy_serial_console()\n"); |
499 | 499 | ||
500 | /* The user has requested a console so this is already set up. */ | 500 | /* The user has requested a console so this is already set up. */ |
501 | if (strstr(saved_command_line, "console=")) { | 501 | if (strstr(boot_command_line, "console=")) { |
502 | DBG(" console was specified !\n"); | 502 | DBG(" console was specified !\n"); |
503 | return -EBUSY; | 503 | return -EBUSY; |
504 | } | 504 | } |
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index 0de5a08cf9b0..89486b631284 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c | |||
@@ -571,7 +571,7 @@ static int lparcfg_open(struct inode *inode, struct file *file) | |||
571 | return single_open(file, lparcfg_data, NULL); | 571 | return single_open(file, lparcfg_data, NULL); |
572 | } | 572 | } |
573 | 573 | ||
574 | struct file_operations lparcfg_fops = { | 574 | const struct file_operations lparcfg_fops = { |
575 | .owner = THIS_MODULE, | 575 | .owner = THIS_MODULE, |
576 | .read = seq_read, | 576 | .read = seq_read, |
577 | .write = lparcfg_write, | 577 | .write = lparcfg_write, |
diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c index 869cebbba967..f9676f52c6d8 100644 --- a/arch/powerpc/kernel/nvram_64.c +++ b/arch/powerpc/kernel/nvram_64.c | |||
@@ -179,7 +179,7 @@ static int dev_nvram_ioctl(struct inode *inode, struct file *file, | |||
179 | } | 179 | } |
180 | } | 180 | } |
181 | 181 | ||
182 | struct file_operations nvram_fops = { | 182 | const struct file_operations nvram_fops = { |
183 | .owner = THIS_MODULE, | 183 | .owner = THIS_MODULE, |
184 | .llseek = dev_nvram_llseek, | 184 | .llseek = dev_nvram_llseek, |
185 | .read = dev_nvram_read, | 185 | .read = dev_nvram_read, |
diff --git a/arch/powerpc/kernel/proc_ppc64.c b/arch/powerpc/kernel/proc_ppc64.c index dd7001cacf75..f78dfce1b771 100644 --- a/arch/powerpc/kernel/proc_ppc64.c +++ b/arch/powerpc/kernel/proc_ppc64.c | |||
@@ -33,7 +33,7 @@ static ssize_t page_map_read( struct file *file, char __user *buf, size_t nbytes | |||
33 | loff_t *ppos); | 33 | loff_t *ppos); |
34 | static int page_map_mmap( struct file *file, struct vm_area_struct *vma ); | 34 | static int page_map_mmap( struct file *file, struct vm_area_struct *vma ); |
35 | 35 | ||
36 | static struct file_operations page_map_fops = { | 36 | static const struct file_operations page_map_fops = { |
37 | .llseek = page_map_seek, | 37 | .llseek = page_map_seek, |
38 | .read = page_map_read, | 38 | .read = page_map_read, |
39 | .mmap = page_map_mmap | 39 | .mmap = page_map_mmap |
@@ -71,7 +71,6 @@ static int __init proc_ppc64_init(void) | |||
71 | pde = create_proc_entry("ppc64/systemcfg", S_IFREG|S_IRUGO, NULL); | 71 | pde = create_proc_entry("ppc64/systemcfg", S_IFREG|S_IRUGO, NULL); |
72 | if (!pde) | 72 | if (!pde) |
73 | return 1; | 73 | return 1; |
74 | pde->nlink = 1; | ||
75 | pde->data = vdso_data; | 74 | pde->data = vdso_data; |
76 | pde->size = PAGE_SIZE; | 75 | pde->size = PAGE_SIZE; |
77 | pde->proc_fops = &page_map_fops; | 76 | pde->proc_fops = &page_map_fops; |
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index 3be52d693eca..3e86e6e0f778 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
@@ -991,7 +991,7 @@ void __init early_init_devtree(void *params) | |||
991 | of_scan_flat_dt(early_init_dt_scan_memory, NULL); | 991 | of_scan_flat_dt(early_init_dt_scan_memory, NULL); |
992 | 992 | ||
993 | /* Save command line for /proc/cmdline and then parse parameters */ | 993 | /* Save command line for /proc/cmdline and then parse parameters */ |
994 | strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE); | 994 | strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE); |
995 | parse_early_param(); | 995 | parse_early_param(); |
996 | 996 | ||
997 | /* Reserve LMB regions used by kernel, initrd, dt, etc... */ | 997 | /* Reserve LMB regions used by kernel, initrd, dt, etc... */ |
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 520ef42f642e..4fb5938ce6d3 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c | |||
@@ -2117,11 +2117,92 @@ static void __init fixup_device_tree_pmac(void) | |||
2117 | #define fixup_device_tree_pmac() | 2117 | #define fixup_device_tree_pmac() |
2118 | #endif | 2118 | #endif |
2119 | 2119 | ||
2120 | #ifdef CONFIG_PPC_EFIKA | ||
2121 | /* The current fw of the Efika has a device tree needs quite a few | ||
2122 | * fixups to be compliant with the mpc52xx bindings. It's currently | ||
2123 | * unknown if it will ever be compliant (come on bPlan ...) so we do fixups. | ||
2124 | * NOTE that we (barely) tolerate it because the EFIKA was out before | ||
2125 | * the bindings were finished, for any new boards -> RTFM ! */ | ||
2126 | |||
2127 | struct subst_entry { | ||
2128 | char *path; | ||
2129 | char *property; | ||
2130 | void *value; | ||
2131 | int value_len; | ||
2132 | }; | ||
2133 | |||
2134 | static void __init fixup_device_tree_efika(void) | ||
2135 | { | ||
2136 | /* Substitution table */ | ||
2137 | #define prop_cstr(x) x, sizeof(x) | ||
2138 | int prop_sound_irq[3] = { 2, 2, 0 }; | ||
2139 | int prop_bcomm_irq[3*16] = { 3,0,0, 3,1,0, 3,2,0, 3,3,0, | ||
2140 | 3,4,0, 3,5,0, 3,6,0, 3,7,0, | ||
2141 | 3,8,0, 3,9,0, 3,10,0, 3,11,0, | ||
2142 | 3,12,0, 3,13,0, 3,14,0, 3,15,0 }; | ||
2143 | struct subst_entry efika_subst_table[] = { | ||
2144 | { "/", "device_type", prop_cstr("efika") }, | ||
2145 | { "/builtin", "compatible", prop_cstr("soc") }, | ||
2146 | { "/builtin/ata", "compatible", prop_cstr("mpc5200b-ata\0mpc5200-ata"), }, | ||
2147 | { "/builtin/bestcomm", "compatible", prop_cstr("mpc5200b-bestcomm\0mpc5200-bestcomm") }, | ||
2148 | { "/builtin/bestcomm", "interrupts", prop_bcomm_irq, sizeof(prop_bcomm_irq) }, | ||
2149 | { "/builtin/ethernet", "compatible", prop_cstr("mpc5200b-fec\0mpc5200-fec") }, | ||
2150 | { "/builtin/pic", "compatible", prop_cstr("mpc5200b-pic\0mpc5200-pic") }, | ||
2151 | { "/builtin/serial", "compatible", prop_cstr("mpc5200b-psc-uart\0mpc5200-psc-uart") }, | ||
2152 | { "/builtin/sound", "compatible", prop_cstr("mpc5200b-psc-ac97\0mpc5200-psc-ac97") }, | ||
2153 | { "/builtin/sound", "interrupts", prop_sound_irq, sizeof(prop_sound_irq) }, | ||
2154 | { "/builtin/sram", "compatible", prop_cstr("mpc5200b-sram\0mpc5200-sram") }, | ||
2155 | { "/builtin/sram", "device_type", prop_cstr("sram") }, | ||
2156 | {} | ||
2157 | }; | ||
2158 | #undef prop_cstr | ||
2159 | |||
2160 | /* Vars */ | ||
2161 | u32 node; | ||
2162 | char prop[64]; | ||
2163 | int rv, i; | ||
2164 | |||
2165 | /* Check if we're really running on a EFIKA */ | ||
2166 | node = call_prom("finddevice", 1, 1, ADDR("/")); | ||
2167 | if (!PHANDLE_VALID(node)) | ||
2168 | return; | ||
2169 | |||
2170 | rv = prom_getprop(node, "model", prop, sizeof(prop)); | ||
2171 | if (rv == PROM_ERROR) | ||
2172 | return; | ||
2173 | if (strcmp(prop, "EFIKA5K2")) | ||
2174 | return; | ||
2175 | |||
2176 | prom_printf("Applying EFIKA device tree fixups\n"); | ||
2177 | |||
2178 | /* Process substitution table */ | ||
2179 | for (i=0; efika_subst_table[i].path; i++) { | ||
2180 | struct subst_entry *se = &efika_subst_table[i]; | ||
2181 | |||
2182 | node = call_prom("finddevice", 1, 1, ADDR(se->path)); | ||
2183 | if (!PHANDLE_VALID(node)) { | ||
2184 | prom_printf("fixup_device_tree_efika: ", | ||
2185 | "skipped entry %x - not found\n", i); | ||
2186 | continue; | ||
2187 | } | ||
2188 | |||
2189 | rv = prom_setprop(node, se->path, se->property, | ||
2190 | se->value, se->value_len ); | ||
2191 | if (rv == PROM_ERROR) | ||
2192 | prom_printf("fixup_device_tree_efika: ", | ||
2193 | "skipped entry %x - setprop error\n", i); | ||
2194 | } | ||
2195 | } | ||
2196 | #else | ||
2197 | #define fixup_device_tree_efika() | ||
2198 | #endif | ||
2199 | |||
2120 | static void __init fixup_device_tree(void) | 2200 | static void __init fixup_device_tree(void) |
2121 | { | 2201 | { |
2122 | fixup_device_tree_maple(); | 2202 | fixup_device_tree_maple(); |
2123 | fixup_device_tree_chrp(); | 2203 | fixup_device_tree_chrp(); |
2124 | fixup_device_tree_pmac(); | 2204 | fixup_device_tree_pmac(); |
2205 | fixup_device_tree_efika(); | ||
2125 | } | 2206 | } |
2126 | 2207 | ||
2127 | static void __init prom_find_boot_cpu(void) | 2208 | static void __init prom_find_boot_cpu(void) |
diff --git a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c index 2fe82abf1c52..6cbf2ae5d7aa 100644 --- a/arch/powerpc/kernel/rtas-proc.c +++ b/arch/powerpc/kernel/rtas-proc.c | |||
@@ -160,7 +160,7 @@ static int sensors_open(struct inode *inode, struct file *file) | |||
160 | return single_open(file, ppc_rtas_sensors_show, NULL); | 160 | return single_open(file, ppc_rtas_sensors_show, NULL); |
161 | } | 161 | } |
162 | 162 | ||
163 | struct file_operations ppc_rtas_sensors_operations = { | 163 | const struct file_operations ppc_rtas_sensors_operations = { |
164 | .open = sensors_open, | 164 | .open = sensors_open, |
165 | .read = seq_read, | 165 | .read = seq_read, |
166 | .llseek = seq_lseek, | 166 | .llseek = seq_lseek, |
@@ -172,7 +172,7 @@ static int poweron_open(struct inode *inode, struct file *file) | |||
172 | return single_open(file, ppc_rtas_poweron_show, NULL); | 172 | return single_open(file, ppc_rtas_poweron_show, NULL); |
173 | } | 173 | } |
174 | 174 | ||
175 | struct file_operations ppc_rtas_poweron_operations = { | 175 | const struct file_operations ppc_rtas_poweron_operations = { |
176 | .open = poweron_open, | 176 | .open = poweron_open, |
177 | .read = seq_read, | 177 | .read = seq_read, |
178 | .llseek = seq_lseek, | 178 | .llseek = seq_lseek, |
@@ -185,7 +185,7 @@ static int progress_open(struct inode *inode, struct file *file) | |||
185 | return single_open(file, ppc_rtas_progress_show, NULL); | 185 | return single_open(file, ppc_rtas_progress_show, NULL); |
186 | } | 186 | } |
187 | 187 | ||
188 | struct file_operations ppc_rtas_progress_operations = { | 188 | const struct file_operations ppc_rtas_progress_operations = { |
189 | .open = progress_open, | 189 | .open = progress_open, |
190 | .read = seq_read, | 190 | .read = seq_read, |
191 | .llseek = seq_lseek, | 191 | .llseek = seq_lseek, |
@@ -198,7 +198,7 @@ static int clock_open(struct inode *inode, struct file *file) | |||
198 | return single_open(file, ppc_rtas_clock_show, NULL); | 198 | return single_open(file, ppc_rtas_clock_show, NULL); |
199 | } | 199 | } |
200 | 200 | ||
201 | struct file_operations ppc_rtas_clock_operations = { | 201 | const struct file_operations ppc_rtas_clock_operations = { |
202 | .open = clock_open, | 202 | .open = clock_open, |
203 | .read = seq_read, | 203 | .read = seq_read, |
204 | .llseek = seq_lseek, | 204 | .llseek = seq_lseek, |
@@ -211,7 +211,7 @@ static int tone_freq_open(struct inode *inode, struct file *file) | |||
211 | return single_open(file, ppc_rtas_tone_freq_show, NULL); | 211 | return single_open(file, ppc_rtas_tone_freq_show, NULL); |
212 | } | 212 | } |
213 | 213 | ||
214 | struct file_operations ppc_rtas_tone_freq_operations = { | 214 | const struct file_operations ppc_rtas_tone_freq_operations = { |
215 | .open = tone_freq_open, | 215 | .open = tone_freq_open, |
216 | .read = seq_read, | 216 | .read = seq_read, |
217 | .llseek = seq_lseek, | 217 | .llseek = seq_lseek, |
@@ -224,7 +224,7 @@ static int tone_volume_open(struct inode *inode, struct file *file) | |||
224 | return single_open(file, ppc_rtas_tone_volume_show, NULL); | 224 | return single_open(file, ppc_rtas_tone_volume_show, NULL); |
225 | } | 225 | } |
226 | 226 | ||
227 | struct file_operations ppc_rtas_tone_volume_operations = { | 227 | const struct file_operations ppc_rtas_tone_volume_operations = { |
228 | .open = tone_volume_open, | 228 | .open = tone_volume_open, |
229 | .read = seq_read, | 229 | .read = seq_read, |
230 | .llseek = seq_lseek, | 230 | .llseek = seq_lseek, |
@@ -237,7 +237,7 @@ static int rmo_buf_open(struct inode *inode, struct file *file) | |||
237 | return single_open(file, ppc_rtas_rmo_buf_show, NULL); | 237 | return single_open(file, ppc_rtas_rmo_buf_show, NULL); |
238 | } | 238 | } |
239 | 239 | ||
240 | struct file_operations ppc_rtas_rmo_buf_ops = { | 240 | const struct file_operations ppc_rtas_rmo_buf_ops = { |
241 | .open = rmo_buf_open, | 241 | .open = rmo_buf_open, |
242 | .read = seq_read, | 242 | .read = seq_read, |
243 | .llseek = seq_lseek, | 243 | .llseek = seq_lseek, |
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index 0c4fcd34bfe5..f72118c0844f 100644 --- a/arch/powerpc/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c | |||
@@ -702,13 +702,12 @@ static int initialize_flash_pde_data(const char *rtas_call_name, | |||
702 | } | 702 | } |
703 | 703 | ||
704 | static struct proc_dir_entry *create_flash_pde(const char *filename, | 704 | static struct proc_dir_entry *create_flash_pde(const char *filename, |
705 | struct file_operations *fops) | 705 | const struct file_operations *fops) |
706 | { | 706 | { |
707 | struct proc_dir_entry *ent = NULL; | 707 | struct proc_dir_entry *ent = NULL; |
708 | 708 | ||
709 | ent = create_proc_entry(filename, S_IRUSR | S_IWUSR, NULL); | 709 | ent = create_proc_entry(filename, S_IRUSR | S_IWUSR, NULL); |
710 | if (ent != NULL) { | 710 | if (ent != NULL) { |
711 | ent->nlink = 1; | ||
712 | ent->proc_fops = fops; | 711 | ent->proc_fops = fops; |
713 | ent->owner = THIS_MODULE; | 712 | ent->owner = THIS_MODULE; |
714 | } | 713 | } |
@@ -716,21 +715,21 @@ static struct proc_dir_entry *create_flash_pde(const char *filename, | |||
716 | return ent; | 715 | return ent; |
717 | } | 716 | } |
718 | 717 | ||
719 | static struct file_operations rtas_flash_operations = { | 718 | static const struct file_operations rtas_flash_operations = { |
720 | .read = rtas_flash_read, | 719 | .read = rtas_flash_read, |
721 | .write = rtas_flash_write, | 720 | .write = rtas_flash_write, |
722 | .open = rtas_excl_open, | 721 | .open = rtas_excl_open, |
723 | .release = rtas_flash_release, | 722 | .release = rtas_flash_release, |
724 | }; | 723 | }; |
725 | 724 | ||
726 | static struct file_operations manage_flash_operations = { | 725 | static const struct file_operations manage_flash_operations = { |
727 | .read = manage_flash_read, | 726 | .read = manage_flash_read, |
728 | .write = manage_flash_write, | 727 | .write = manage_flash_write, |
729 | .open = rtas_excl_open, | 728 | .open = rtas_excl_open, |
730 | .release = rtas_excl_release, | 729 | .release = rtas_excl_release, |
731 | }; | 730 | }; |
732 | 731 | ||
733 | static struct file_operations validate_flash_operations = { | 732 | static const struct file_operations validate_flash_operations = { |
734 | .read = validate_flash_read, | 733 | .read = validate_flash_read, |
735 | .write = validate_flash_write, | 734 | .write = validate_flash_write, |
736 | .open = rtas_excl_open, | 735 | .open = rtas_excl_open, |
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c index 03a2a2f30d66..673e8d9df7f5 100644 --- a/arch/powerpc/kernel/sys_ppc32.c +++ b/arch/powerpc/kernel/sys_ppc32.c | |||
@@ -198,73 +198,6 @@ static inline long put_tv32(struct compat_timeval __user *o, struct timeval *i) | |||
198 | __put_user(i->tv_usec, &o->tv_usec))); | 198 | __put_user(i->tv_usec, &o->tv_usec))); |
199 | } | 199 | } |
200 | 200 | ||
201 | struct sysinfo32 { | ||
202 | s32 uptime; | ||
203 | u32 loads[3]; | ||
204 | u32 totalram; | ||
205 | u32 freeram; | ||
206 | u32 sharedram; | ||
207 | u32 bufferram; | ||
208 | u32 totalswap; | ||
209 | u32 freeswap; | ||
210 | unsigned short procs; | ||
211 | unsigned short pad; | ||
212 | u32 totalhigh; | ||
213 | u32 freehigh; | ||
214 | u32 mem_unit; | ||
215 | char _f[20-2*sizeof(int)-sizeof(int)]; | ||
216 | }; | ||
217 | |||
218 | asmlinkage long compat_sys_sysinfo(struct sysinfo32 __user *info) | ||
219 | { | ||
220 | struct sysinfo s; | ||
221 | int ret, err; | ||
222 | int bitcount=0; | ||
223 | mm_segment_t old_fs = get_fs (); | ||
224 | |||
225 | /* The __user cast is valid due to set_fs() */ | ||
226 | set_fs (KERNEL_DS); | ||
227 | ret = sys_sysinfo((struct sysinfo __user *)&s); | ||
228 | set_fs (old_fs); | ||
229 | |||
230 | /* Check to see if any memory value is too large for 32-bit and | ||
231 | * scale down if needed. | ||
232 | */ | ||
233 | if ((s.totalram >> 32) || (s.totalswap >> 32)) { | ||
234 | while (s.mem_unit < PAGE_SIZE) { | ||
235 | s.mem_unit <<= 1; | ||
236 | bitcount++; | ||
237 | } | ||
238 | s.totalram >>=bitcount; | ||
239 | s.freeram >>= bitcount; | ||
240 | s.sharedram >>= bitcount; | ||
241 | s.bufferram >>= bitcount; | ||
242 | s.totalswap >>= bitcount; | ||
243 | s.freeswap >>= bitcount; | ||
244 | s.totalhigh >>= bitcount; | ||
245 | s.freehigh >>= bitcount; | ||
246 | } | ||
247 | |||
248 | err = put_user (s.uptime, &info->uptime); | ||
249 | err |= __put_user (s.loads[0], &info->loads[0]); | ||
250 | err |= __put_user (s.loads[1], &info->loads[1]); | ||
251 | err |= __put_user (s.loads[2], &info->loads[2]); | ||
252 | err |= __put_user (s.totalram, &info->totalram); | ||
253 | err |= __put_user (s.freeram, &info->freeram); | ||
254 | err |= __put_user (s.sharedram, &info->sharedram); | ||
255 | err |= __put_user (s.bufferram, &info->bufferram); | ||
256 | err |= __put_user (s.totalswap, &info->totalswap); | ||
257 | err |= __put_user (s.freeswap, &info->freeswap); | ||
258 | err |= __put_user (s.procs, &info->procs); | ||
259 | err |= __put_user (s.totalhigh, &info->totalhigh); | ||
260 | err |= __put_user (s.freehigh, &info->freehigh); | ||
261 | err |= __put_user (s.mem_unit, &info->mem_unit); | ||
262 | if (err) | ||
263 | return -EFAULT; | ||
264 | |||
265 | return ret; | ||
266 | } | ||
267 | |||
268 | 201 | ||
269 | 202 | ||
270 | 203 | ||
diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c index 8f5afdbad0d5..194a93eeb3e7 100644 --- a/arch/powerpc/kernel/udbg.c +++ b/arch/powerpc/kernel/udbg.c | |||
@@ -150,7 +150,7 @@ void __init disable_early_printk(void) | |||
150 | { | 150 | { |
151 | if (!early_console_initialized) | 151 | if (!early_console_initialized) |
152 | return; | 152 | return; |
153 | if (strstr(saved_command_line, "udbg-immortal")) { | 153 | if (strstr(boot_command_line, "udbg-immortal")) { |
154 | printk(KERN_INFO "early console immortal !\n"); | 154 | printk(KERN_INFO "early console immortal !\n"); |
155 | return; | 155 | return; |
156 | } | 156 | } |
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index ae0ede19879d..e46c31b36641 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c | |||
@@ -51,17 +51,21 @@ | |||
51 | 51 | ||
52 | extern char vdso32_start, vdso32_end; | 52 | extern char vdso32_start, vdso32_end; |
53 | static void *vdso32_kbase = &vdso32_start; | 53 | static void *vdso32_kbase = &vdso32_start; |
54 | unsigned int vdso32_pages; | 54 | static unsigned int vdso32_pages; |
55 | static struct page **vdso32_pagelist; | ||
55 | unsigned long vdso32_sigtramp; | 56 | unsigned long vdso32_sigtramp; |
56 | unsigned long vdso32_rt_sigtramp; | 57 | unsigned long vdso32_rt_sigtramp; |
57 | 58 | ||
58 | #ifdef CONFIG_PPC64 | 59 | #ifdef CONFIG_PPC64 |
59 | extern char vdso64_start, vdso64_end; | 60 | extern char vdso64_start, vdso64_end; |
60 | static void *vdso64_kbase = &vdso64_start; | 61 | static void *vdso64_kbase = &vdso64_start; |
61 | unsigned int vdso64_pages; | 62 | static unsigned int vdso64_pages; |
63 | static struct page **vdso64_pagelist; | ||
62 | unsigned long vdso64_rt_sigtramp; | 64 | unsigned long vdso64_rt_sigtramp; |
63 | #endif /* CONFIG_PPC64 */ | 65 | #endif /* CONFIG_PPC64 */ |
64 | 66 | ||
67 | static int vdso_ready; | ||
68 | |||
65 | /* | 69 | /* |
66 | * The vdso data page (aka. systemcfg for old ppc64 fans) is here. | 70 | * The vdso data page (aka. systemcfg for old ppc64 fans) is here. |
67 | * Once the early boot kernel code no longer needs to muck around | 71 | * Once the early boot kernel code no longer needs to muck around |
@@ -165,55 +169,6 @@ static void dump_vdso_pages(struct vm_area_struct * vma) | |||
165 | #endif /* DEBUG */ | 169 | #endif /* DEBUG */ |
166 | 170 | ||
167 | /* | 171 | /* |
168 | * Keep a dummy vma_close for now, it will prevent VMA merging. | ||
169 | */ | ||
170 | static void vdso_vma_close(struct vm_area_struct * vma) | ||
171 | { | ||
172 | } | ||
173 | |||
174 | /* | ||
175 | * Our nopage() function, maps in the actual vDSO kernel pages, they will | ||
176 | * be mapped read-only by do_no_page(), and eventually COW'ed, either | ||
177 | * right away for an initial write access, or by do_wp_page(). | ||
178 | */ | ||
179 | static struct page * vdso_vma_nopage(struct vm_area_struct * vma, | ||
180 | unsigned long address, int *type) | ||
181 | { | ||
182 | unsigned long offset = address - vma->vm_start; | ||
183 | struct page *pg; | ||
184 | #ifdef CONFIG_PPC64 | ||
185 | void *vbase = (vma->vm_mm->task_size > TASK_SIZE_USER32) ? | ||
186 | vdso64_kbase : vdso32_kbase; | ||
187 | #else | ||
188 | void *vbase = vdso32_kbase; | ||
189 | #endif | ||
190 | |||
191 | DBG("vdso_vma_nopage(current: %s, address: %016lx, off: %lx)\n", | ||
192 | current->comm, address, offset); | ||
193 | |||
194 | if (address < vma->vm_start || address > vma->vm_end) | ||
195 | return NOPAGE_SIGBUS; | ||
196 | |||
197 | /* | ||
198 | * Last page is systemcfg. | ||
199 | */ | ||
200 | if ((vma->vm_end - address) <= PAGE_SIZE) | ||
201 | pg = virt_to_page(vdso_data); | ||
202 | else | ||
203 | pg = virt_to_page(vbase + offset); | ||
204 | |||
205 | get_page(pg); | ||
206 | DBG(" ->page count: %d\n", page_count(pg)); | ||
207 | |||
208 | return pg; | ||
209 | } | ||
210 | |||
211 | static struct vm_operations_struct vdso_vmops = { | ||
212 | .close = vdso_vma_close, | ||
213 | .nopage = vdso_vma_nopage, | ||
214 | }; | ||
215 | |||
216 | /* | ||
217 | * This is called from binfmt_elf, we create the special vma for the | 172 | * This is called from binfmt_elf, we create the special vma for the |
218 | * vDSO and insert it into the mm struct tree | 173 | * vDSO and insert it into the mm struct tree |
219 | */ | 174 | */ |
@@ -221,20 +176,26 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, | |||
221 | int executable_stack) | 176 | int executable_stack) |
222 | { | 177 | { |
223 | struct mm_struct *mm = current->mm; | 178 | struct mm_struct *mm = current->mm; |
224 | struct vm_area_struct *vma; | 179 | struct page **vdso_pagelist; |
225 | unsigned long vdso_pages; | 180 | unsigned long vdso_pages; |
226 | unsigned long vdso_base; | 181 | unsigned long vdso_base; |
227 | int rc; | 182 | int rc; |
228 | 183 | ||
184 | if (!vdso_ready) | ||
185 | return 0; | ||
186 | |||
229 | #ifdef CONFIG_PPC64 | 187 | #ifdef CONFIG_PPC64 |
230 | if (test_thread_flag(TIF_32BIT)) { | 188 | if (test_thread_flag(TIF_32BIT)) { |
189 | vdso_pagelist = vdso32_pagelist; | ||
231 | vdso_pages = vdso32_pages; | 190 | vdso_pages = vdso32_pages; |
232 | vdso_base = VDSO32_MBASE; | 191 | vdso_base = VDSO32_MBASE; |
233 | } else { | 192 | } else { |
193 | vdso_pagelist = vdso64_pagelist; | ||
234 | vdso_pages = vdso64_pages; | 194 | vdso_pages = vdso64_pages; |
235 | vdso_base = VDSO64_MBASE; | 195 | vdso_base = VDSO64_MBASE; |
236 | } | 196 | } |
237 | #else | 197 | #else |
198 | vdso_pagelist = vdso32_pagelist; | ||
238 | vdso_pages = vdso32_pages; | 199 | vdso_pages = vdso32_pages; |
239 | vdso_base = VDSO32_MBASE; | 200 | vdso_base = VDSO32_MBASE; |
240 | #endif | 201 | #endif |
@@ -262,17 +223,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, | |||
262 | goto fail_mmapsem; | 223 | goto fail_mmapsem; |
263 | } | 224 | } |
264 | 225 | ||
265 | |||
266 | /* Allocate a VMA structure and fill it up */ | ||
267 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); | ||
268 | if (vma == NULL) { | ||
269 | rc = -ENOMEM; | ||
270 | goto fail_mmapsem; | ||
271 | } | ||
272 | vma->vm_mm = mm; | ||
273 | vma->vm_start = vdso_base; | ||
274 | vma->vm_end = vma->vm_start + (vdso_pages << PAGE_SHIFT); | ||
275 | |||
276 | /* | 226 | /* |
277 | * our vma flags don't have VM_WRITE so by default, the process isn't | 227 | * our vma flags don't have VM_WRITE so by default, the process isn't |
278 | * allowed to write those pages. | 228 | * allowed to write those pages. |
@@ -282,32 +232,26 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, | |||
282 | * and your nice userland gettimeofday will be totally dead. | 232 | * and your nice userland gettimeofday will be totally dead. |
283 | * It's fine to use that for setting breakpoints in the vDSO code | 233 | * It's fine to use that for setting breakpoints in the vDSO code |
284 | * pages though | 234 | * pages though |
285 | */ | 235 | * |
286 | vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC; | ||
287 | /* | ||
288 | * Make sure the vDSO gets into every core dump. | 236 | * Make sure the vDSO gets into every core dump. |
289 | * Dumping its contents makes post-mortem fully interpretable later | 237 | * Dumping its contents makes post-mortem fully interpretable later |
290 | * without matching up the same kernel and hardware config to see | 238 | * without matching up the same kernel and hardware config to see |
291 | * what PC values meant. | 239 | * what PC values meant. |
292 | */ | 240 | */ |
293 | vma->vm_flags |= VM_ALWAYSDUMP; | 241 | rc = install_special_mapping(mm, vdso_base, vdso_pages << PAGE_SHIFT, |
294 | vma->vm_flags |= mm->def_flags; | 242 | VM_READ|VM_EXEC| |
295 | vma->vm_page_prot = protection_map[vma->vm_flags & 0x7]; | 243 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| |
296 | vma->vm_ops = &vdso_vmops; | 244 | VM_ALWAYSDUMP, |
297 | 245 | vdso_pagelist); | |
298 | /* Insert new VMA */ | ||
299 | rc = insert_vm_struct(mm, vma); | ||
300 | if (rc) | 246 | if (rc) |
301 | goto fail_vma; | 247 | goto fail_mmapsem; |
302 | 248 | ||
303 | /* Put vDSO base into mm struct and account for memory usage */ | 249 | /* Put vDSO base into mm struct */ |
304 | current->mm->context.vdso_base = vdso_base; | 250 | current->mm->context.vdso_base = vdso_base; |
305 | mm->total_vm += (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; | 251 | |
306 | up_write(&mm->mmap_sem); | 252 | up_write(&mm->mmap_sem); |
307 | return 0; | 253 | return 0; |
308 | 254 | ||
309 | fail_vma: | ||
310 | kmem_cache_free(vm_area_cachep, vma); | ||
311 | fail_mmapsem: | 255 | fail_mmapsem: |
312 | up_write(&mm->mmap_sem); | 256 | up_write(&mm->mmap_sem); |
313 | return rc; | 257 | return rc; |
@@ -719,7 +663,7 @@ static void __init vdso_setup_syscall_map(void) | |||
719 | } | 663 | } |
720 | 664 | ||
721 | 665 | ||
722 | void __init vdso_init(void) | 666 | static int __init vdso_init(void) |
723 | { | 667 | { |
724 | int i; | 668 | int i; |
725 | 669 | ||
@@ -774,26 +718,44 @@ void __init vdso_init(void) | |||
774 | #ifdef CONFIG_PPC64 | 718 | #ifdef CONFIG_PPC64 |
775 | vdso64_pages = 0; | 719 | vdso64_pages = 0; |
776 | #endif | 720 | #endif |
777 | return; | 721 | return 0; |
778 | } | 722 | } |
779 | 723 | ||
780 | /* Make sure pages are in the correct state */ | 724 | /* Make sure pages are in the correct state */ |
725 | vdso32_pagelist = kzalloc(sizeof(struct page *) * (vdso32_pages + 2), | ||
726 | GFP_KERNEL); | ||
727 | BUG_ON(vdso32_pagelist == NULL); | ||
781 | for (i = 0; i < vdso32_pages; i++) { | 728 | for (i = 0; i < vdso32_pages; i++) { |
782 | struct page *pg = virt_to_page(vdso32_kbase + i*PAGE_SIZE); | 729 | struct page *pg = virt_to_page(vdso32_kbase + i*PAGE_SIZE); |
783 | ClearPageReserved(pg); | 730 | ClearPageReserved(pg); |
784 | get_page(pg); | 731 | get_page(pg); |
785 | 732 | vdso32_pagelist[i] = pg; | |
786 | } | 733 | } |
734 | vdso32_pagelist[i++] = virt_to_page(vdso_data); | ||
735 | vdso32_pagelist[i] = NULL; | ||
736 | |||
787 | #ifdef CONFIG_PPC64 | 737 | #ifdef CONFIG_PPC64 |
738 | vdso64_pagelist = kzalloc(sizeof(struct page *) * (vdso64_pages + 2), | ||
739 | GFP_KERNEL); | ||
740 | BUG_ON(vdso64_pagelist == NULL); | ||
788 | for (i = 0; i < vdso64_pages; i++) { | 741 | for (i = 0; i < vdso64_pages; i++) { |
789 | struct page *pg = virt_to_page(vdso64_kbase + i*PAGE_SIZE); | 742 | struct page *pg = virt_to_page(vdso64_kbase + i*PAGE_SIZE); |
790 | ClearPageReserved(pg); | 743 | ClearPageReserved(pg); |
791 | get_page(pg); | 744 | get_page(pg); |
745 | vdso64_pagelist[i] = pg; | ||
792 | } | 746 | } |
747 | vdso64_pagelist[i++] = virt_to_page(vdso_data); | ||
748 | vdso64_pagelist[i] = NULL; | ||
793 | #endif /* CONFIG_PPC64 */ | 749 | #endif /* CONFIG_PPC64 */ |
794 | 750 | ||
795 | get_page(virt_to_page(vdso_data)); | 751 | get_page(virt_to_page(vdso_data)); |
752 | |||
753 | smp_wmb(); | ||
754 | vdso_ready = 1; | ||
755 | |||
756 | return 0; | ||
796 | } | 757 | } |
758 | arch_initcall(vdso_init); | ||
797 | 759 | ||
798 | int in_gate_area_no_task(unsigned long addr) | 760 | int in_gate_area_no_task(unsigned long addr) |
799 | { | 761 | { |
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index 04b8e71bf5b0..7eefeb4a30e7 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
@@ -131,14 +131,14 @@ SECTIONS | |||
131 | __stop___fw_ftr_fixup = .; | 131 | __stop___fw_ftr_fixup = .; |
132 | } | 132 | } |
133 | #endif | 133 | #endif |
134 | 134 | #ifdef CONFIG_BLK_DEV_INITRD | |
135 | . = ALIGN(PAGE_SIZE); | 135 | . = ALIGN(PAGE_SIZE); |
136 | .init.ramfs : { | 136 | .init.ramfs : { |
137 | __initramfs_start = .; | 137 | __initramfs_start = .; |
138 | *(.init.ramfs) | 138 | *(.init.ramfs) |
139 | __initramfs_end = .; | 139 | __initramfs_end = .; |
140 | } | 140 | } |
141 | 141 | #endif | |
142 | #ifdef CONFIG_PPC32 | 142 | #ifdef CONFIG_PPC32 |
143 | . = ALIGN(32); | 143 | . = ALIGN(32); |
144 | #else | 144 | #else |
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 77b4637097e9..52f397c108a7 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -384,9 +384,6 @@ void __init mem_init(void) | |||
384 | initsize >> 10); | 384 | initsize >> 10); |
385 | 385 | ||
386 | mem_init_done = 1; | 386 | mem_init_done = 1; |
387 | |||
388 | /* Initialize the vDSO */ | ||
389 | vdso_init(); | ||
390 | } | 387 | } |
391 | 388 | ||
392 | /* | 389 | /* |
diff --git a/arch/powerpc/platforms/52xx/Makefile b/arch/powerpc/platforms/52xx/Makefile index 795b713ec9ee..07cdbcacf156 100644 --- a/arch/powerpc/platforms/52xx/Makefile +++ b/arch/powerpc/platforms/52xx/Makefile | |||
@@ -6,5 +6,5 @@ obj-y += mpc52xx_pic.o mpc52xx_common.o | |||
6 | obj-$(CONFIG_PCI) += mpc52xx_pci.o | 6 | obj-$(CONFIG_PCI) += mpc52xx_pci.o |
7 | endif | 7 | endif |
8 | 8 | ||
9 | obj-$(CONFIG_PPC_EFIKA) += efika-setup.o efika-pci.o | 9 | obj-$(CONFIG_PPC_EFIKA) += efika.o |
10 | obj-$(CONFIG_PPC_LITE5200) += lite5200.o | 10 | obj-$(CONFIG_PPC_LITE5200) += lite5200.o |
diff --git a/arch/powerpc/platforms/52xx/efika-pci.c b/arch/powerpc/platforms/52xx/efika-pci.c deleted file mode 100644 index 62e05b2a9227..000000000000 --- a/arch/powerpc/platforms/52xx/efika-pci.c +++ /dev/null | |||
@@ -1,119 +0,0 @@ | |||
1 | |||
2 | #include <linux/kernel.h> | ||
3 | #include <linux/pci.h> | ||
4 | #include <linux/string.h> | ||
5 | #include <linux/init.h> | ||
6 | |||
7 | #include <asm/io.h> | ||
8 | #include <asm/irq.h> | ||
9 | #include <asm/prom.h> | ||
10 | #include <asm/machdep.h> | ||
11 | #include <asm/sections.h> | ||
12 | #include <asm/pci-bridge.h> | ||
13 | #include <asm/rtas.h> | ||
14 | |||
15 | #include "efika.h" | ||
16 | |||
17 | #ifdef CONFIG_PCI | ||
18 | /* | ||
19 | * Access functions for PCI config space using RTAS calls. | ||
20 | */ | ||
21 | static int rtas_read_config(struct pci_bus *bus, unsigned int devfn, int offset, | ||
22 | int len, u32 * val) | ||
23 | { | ||
24 | struct pci_controller *hose = bus->sysdata; | ||
25 | unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8) | ||
26 | | (((bus->number - hose->first_busno) & 0xff) << 16) | ||
27 | | (hose->index << 24); | ||
28 | int ret = -1; | ||
29 | int rval; | ||
30 | |||
31 | rval = rtas_call(rtas_token("read-pci-config"), 2, 2, &ret, addr, len); | ||
32 | *val = ret; | ||
33 | return rval ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL; | ||
34 | } | ||
35 | |||
36 | static int rtas_write_config(struct pci_bus *bus, unsigned int devfn, | ||
37 | int offset, int len, u32 val) | ||
38 | { | ||
39 | struct pci_controller *hose = bus->sysdata; | ||
40 | unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8) | ||
41 | | (((bus->number - hose->first_busno) & 0xff) << 16) | ||
42 | | (hose->index << 24); | ||
43 | int rval; | ||
44 | |||
45 | rval = rtas_call(rtas_token("write-pci-config"), 3, 1, NULL, | ||
46 | addr, len, val); | ||
47 | return rval ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL; | ||
48 | } | ||
49 | |||
50 | static struct pci_ops rtas_pci_ops = { | ||
51 | rtas_read_config, | ||
52 | rtas_write_config | ||
53 | }; | ||
54 | |||
55 | void __init efika_pcisetup(void) | ||
56 | { | ||
57 | const int *bus_range; | ||
58 | int len; | ||
59 | struct pci_controller *hose; | ||
60 | struct device_node *root; | ||
61 | struct device_node *pcictrl; | ||
62 | |||
63 | root = of_find_node_by_path("/"); | ||
64 | if (root == NULL) { | ||
65 | printk(KERN_WARNING EFIKA_PLATFORM_NAME | ||
66 | ": Unable to find the root node\n"); | ||
67 | return; | ||
68 | } | ||
69 | |||
70 | for (pcictrl = NULL;;) { | ||
71 | pcictrl = of_get_next_child(root, pcictrl); | ||
72 | if ((pcictrl == NULL) || (strcmp(pcictrl->name, "pci") == 0)) | ||
73 | break; | ||
74 | } | ||
75 | |||
76 | of_node_put(root); | ||
77 | |||
78 | if (pcictrl == NULL) { | ||
79 | printk(KERN_WARNING EFIKA_PLATFORM_NAME | ||
80 | ": Unable to find the PCI bridge node\n"); | ||
81 | return; | ||
82 | } | ||
83 | |||
84 | bus_range = get_property(pcictrl, "bus-range", &len); | ||
85 | if (bus_range == NULL || len < 2 * sizeof(int)) { | ||
86 | printk(KERN_WARNING EFIKA_PLATFORM_NAME | ||
87 | ": Can't get bus-range for %s\n", pcictrl->full_name); | ||
88 | return; | ||
89 | } | ||
90 | |||
91 | if (bus_range[1] == bus_range[0]) | ||
92 | printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI bus %d", | ||
93 | bus_range[0]); | ||
94 | else | ||
95 | printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI buses %d..%d", | ||
96 | bus_range[0], bus_range[1]); | ||
97 | printk(" controlled by %s\n", pcictrl->full_name); | ||
98 | printk("\n"); | ||
99 | |||
100 | hose = pcibios_alloc_controller(); | ||
101 | if (!hose) { | ||
102 | printk(KERN_WARNING EFIKA_PLATFORM_NAME | ||
103 | ": Can't allocate PCI controller structure for %s\n", | ||
104 | pcictrl->full_name); | ||
105 | return; | ||
106 | } | ||
107 | |||
108 | hose->arch_data = of_node_get(pcictrl); | ||
109 | hose->first_busno = bus_range[0]; | ||
110 | hose->last_busno = bus_range[1]; | ||
111 | hose->ops = &rtas_pci_ops; | ||
112 | |||
113 | pci_process_bridge_OF_ranges(hose, pcictrl, 0); | ||
114 | } | ||
115 | |||
116 | #else | ||
117 | void __init efika_pcisetup(void) | ||
118 | {} | ||
119 | #endif | ||
diff --git a/arch/powerpc/platforms/52xx/efika-setup.c b/arch/powerpc/platforms/52xx/efika-setup.c deleted file mode 100644 index 110c980ed1e0..000000000000 --- a/arch/powerpc/platforms/52xx/efika-setup.c +++ /dev/null | |||
@@ -1,150 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * Efika 5K2 platform setup | ||
4 | * Some code really inspired from the lite5200b platform. | ||
5 | * | ||
6 | * Copyright (C) 2006 bplan GmbH | ||
7 | * | ||
8 | * This file is licensed under the terms of the GNU General Public License | ||
9 | * version 2. This program is licensed "as is" without any warranty of any | ||
10 | * kind, whether express or implied. | ||
11 | * | ||
12 | */ | ||
13 | |||
14 | #include <linux/errno.h> | ||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/slab.h> | ||
17 | #include <linux/reboot.h> | ||
18 | #include <linux/init.h> | ||
19 | #include <linux/utsrelease.h> | ||
20 | #include <linux/seq_file.h> | ||
21 | #include <linux/root_dev.h> | ||
22 | #include <linux/initrd.h> | ||
23 | #include <linux/timer.h> | ||
24 | #include <linux/pci.h> | ||
25 | |||
26 | #include <asm/pgtable.h> | ||
27 | #include <asm/prom.h> | ||
28 | #include <asm/time.h> | ||
29 | #include <asm/machdep.h> | ||
30 | #include <asm/rtas.h> | ||
31 | #include <asm/of_device.h> | ||
32 | #include <asm/of_platform.h> | ||
33 | #include <asm/mpc52xx.h> | ||
34 | |||
35 | #include "efika.h" | ||
36 | |||
37 | static void efika_show_cpuinfo(struct seq_file *m) | ||
38 | { | ||
39 | struct device_node *root; | ||
40 | const char *revision = NULL; | ||
41 | const char *codegendescription = NULL; | ||
42 | const char *codegenvendor = NULL; | ||
43 | |||
44 | root = of_find_node_by_path("/"); | ||
45 | if (root) { | ||
46 | revision = get_property(root, "revision", NULL); | ||
47 | codegendescription = | ||
48 | get_property(root, "CODEGEN,description", NULL); | ||
49 | codegenvendor = get_property(root, "CODEGEN,vendor", NULL); | ||
50 | |||
51 | of_node_put(root); | ||
52 | } | ||
53 | |||
54 | if (codegendescription) | ||
55 | seq_printf(m, "machine\t\t: %s\n", codegendescription); | ||
56 | else | ||
57 | seq_printf(m, "machine\t\t: Efika\n"); | ||
58 | |||
59 | if (revision) | ||
60 | seq_printf(m, "revision\t: %s\n", revision); | ||
61 | |||
62 | if (codegenvendor) | ||
63 | seq_printf(m, "vendor\t\t: %s\n", codegenvendor); | ||
64 | |||
65 | of_node_put(root); | ||
66 | } | ||
67 | |||
68 | static void __init efika_setup_arch(void) | ||
69 | { | ||
70 | rtas_initialize(); | ||
71 | |||
72 | #ifdef CONFIG_BLK_DEV_INITRD | ||
73 | initrd_below_start_ok = 1; | ||
74 | |||
75 | if (initrd_start) | ||
76 | ROOT_DEV = Root_RAM0; | ||
77 | else | ||
78 | #endif | ||
79 | ROOT_DEV = Root_SDA2; /* sda2 (sda1 is for the kernel) */ | ||
80 | |||
81 | efika_pcisetup(); | ||
82 | |||
83 | if (ppc_md.progress) | ||
84 | ppc_md.progress("Linux/PPC " UTS_RELEASE " runnung on Efika ;-)\n", 0x0); | ||
85 | } | ||
86 | |||
87 | static void __init efika_init(void) | ||
88 | { | ||
89 | struct device_node *np; | ||
90 | struct device_node *cnp = NULL; | ||
91 | const u32 *base; | ||
92 | |||
93 | /* Find every child of the SOC node and add it to of_platform */ | ||
94 | np = of_find_node_by_name(NULL, "builtin"); | ||
95 | if (np) { | ||
96 | char name[BUS_ID_SIZE]; | ||
97 | while ((cnp = of_get_next_child(np, cnp))) { | ||
98 | strcpy(name, cnp->name); | ||
99 | |||
100 | base = get_property(cnp, "reg", NULL); | ||
101 | if (base == NULL) | ||
102 | continue; | ||
103 | |||
104 | snprintf(name+strlen(name), BUS_ID_SIZE, "@%x", *base); | ||
105 | of_platform_device_create(cnp, name, NULL); | ||
106 | |||
107 | printk(KERN_INFO EFIKA_PLATFORM_NAME" : Added %s (type '%s' at '%s') to the known devices\n", name, cnp->type, cnp->full_name); | ||
108 | } | ||
109 | } | ||
110 | |||
111 | if (ppc_md.progress) | ||
112 | ppc_md.progress(" Have fun with your Efika! ", 0x7777); | ||
113 | } | ||
114 | |||
115 | static int __init efika_probe(void) | ||
116 | { | ||
117 | char *model = of_get_flat_dt_prop(of_get_flat_dt_root(), | ||
118 | "model", NULL); | ||
119 | |||
120 | if (model == NULL) | ||
121 | return 0; | ||
122 | if (strcmp(model, "EFIKA5K2")) | ||
123 | return 0; | ||
124 | |||
125 | ISA_DMA_THRESHOLD = ~0L; | ||
126 | DMA_MODE_READ = 0x44; | ||
127 | DMA_MODE_WRITE = 0x48; | ||
128 | |||
129 | return 1; | ||
130 | } | ||
131 | |||
132 | define_machine(efika) | ||
133 | { | ||
134 | .name = EFIKA_PLATFORM_NAME, | ||
135 | .probe = efika_probe, | ||
136 | .setup_arch = efika_setup_arch, | ||
137 | .init = efika_init, | ||
138 | .show_cpuinfo = efika_show_cpuinfo, | ||
139 | .init_IRQ = mpc52xx_init_irq, | ||
140 | .get_irq = mpc52xx_get_irq, | ||
141 | .restart = rtas_restart, | ||
142 | .power_off = rtas_power_off, | ||
143 | .halt = rtas_halt, | ||
144 | .set_rtc_time = rtas_set_rtc_time, | ||
145 | .get_rtc_time = rtas_get_rtc_time, | ||
146 | .progress = rtas_progress, | ||
147 | .get_boot_time = rtas_get_boot_time, | ||
148 | .calibrate_decr = generic_calibrate_decr, | ||
149 | .phys_mem_access_prot = pci_phys_mem_access_prot, | ||
150 | }; | ||
diff --git a/arch/powerpc/platforms/52xx/efika.c b/arch/powerpc/platforms/52xx/efika.c new file mode 100644 index 000000000000..8de034116681 --- /dev/null +++ b/arch/powerpc/platforms/52xx/efika.c | |||
@@ -0,0 +1,243 @@ | |||
1 | /* | ||
2 | * Efika 5K2 platform code | ||
3 | * Some code really inspired from the lite5200b platform. | ||
4 | * | ||
5 | * Copyright (C) 2006 bplan GmbH | ||
6 | * | ||
7 | * This file is licensed under the terms of the GNU General Public License | ||
8 | * version 2. This program is licensed "as is" without any warranty of any | ||
9 | * kind, whether express or implied. | ||
10 | */ | ||
11 | |||
12 | #include <linux/errno.h> | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/slab.h> | ||
15 | #include <linux/reboot.h> | ||
16 | #include <linux/init.h> | ||
17 | #include <linux/utsrelease.h> | ||
18 | #include <linux/seq_file.h> | ||
19 | #include <linux/string.h> | ||
20 | #include <linux/root_dev.h> | ||
21 | #include <linux/initrd.h> | ||
22 | #include <linux/timer.h> | ||
23 | #include <linux/pci.h> | ||
24 | |||
25 | #include <asm/io.h> | ||
26 | #include <asm/irq.h> | ||
27 | #include <asm/sections.h> | ||
28 | #include <asm/pci-bridge.h> | ||
29 | #include <asm/pgtable.h> | ||
30 | #include <asm/prom.h> | ||
31 | #include <asm/time.h> | ||
32 | #include <asm/machdep.h> | ||
33 | #include <asm/rtas.h> | ||
34 | #include <asm/of_device.h> | ||
35 | #include <asm/of_platform.h> | ||
36 | #include <asm/mpc52xx.h> | ||
37 | |||
38 | |||
39 | #define EFIKA_PLATFORM_NAME "Efika" | ||
40 | |||
41 | |||
42 | /* ------------------------------------------------------------------------ */ | ||
43 | /* PCI accesses thru RTAS */ | ||
44 | /* ------------------------------------------------------------------------ */ | ||
45 | |||
46 | #ifdef CONFIG_PCI | ||
47 | |||
48 | /* | ||
49 | * Access functions for PCI config space using RTAS calls. | ||
50 | */ | ||
51 | static int rtas_read_config(struct pci_bus *bus, unsigned int devfn, int offset, | ||
52 | int len, u32 * val) | ||
53 | { | ||
54 | struct pci_controller *hose = bus->sysdata; | ||
55 | unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8) | ||
56 | | (((bus->number - hose->first_busno) & 0xff) << 16) | ||
57 | | (hose->index << 24); | ||
58 | int ret = -1; | ||
59 | int rval; | ||
60 | |||
61 | rval = rtas_call(rtas_token("read-pci-config"), 2, 2, &ret, addr, len); | ||
62 | *val = ret; | ||
63 | return rval ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL; | ||
64 | } | ||
65 | |||
66 | static int rtas_write_config(struct pci_bus *bus, unsigned int devfn, | ||
67 | int offset, int len, u32 val) | ||
68 | { | ||
69 | struct pci_controller *hose = bus->sysdata; | ||
70 | unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8) | ||
71 | | (((bus->number - hose->first_busno) & 0xff) << 16) | ||
72 | | (hose->index << 24); | ||
73 | int rval; | ||
74 | |||
75 | rval = rtas_call(rtas_token("write-pci-config"), 3, 1, NULL, | ||
76 | addr, len, val); | ||
77 | return rval ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL; | ||
78 | } | ||
79 | |||
80 | static struct pci_ops rtas_pci_ops = { | ||
81 | rtas_read_config, | ||
82 | rtas_write_config | ||
83 | }; | ||
84 | |||
85 | |||
86 | void __init efika_pcisetup(void) | ||
87 | { | ||
88 | const int *bus_range; | ||
89 | int len; | ||
90 | struct pci_controller *hose; | ||
91 | struct device_node *root; | ||
92 | struct device_node *pcictrl; | ||
93 | |||
94 | root = of_find_node_by_path("/"); | ||
95 | if (root == NULL) { | ||
96 | printk(KERN_WARNING EFIKA_PLATFORM_NAME | ||
97 | ": Unable to find the root node\n"); | ||
98 | return; | ||
99 | } | ||
100 | |||
101 | for (pcictrl = NULL;;) { | ||
102 | pcictrl = of_get_next_child(root, pcictrl); | ||
103 | if ((pcictrl == NULL) || (strcmp(pcictrl->name, "pci") == 0)) | ||
104 | break; | ||
105 | } | ||
106 | |||
107 | of_node_put(root); | ||
108 | |||
109 | if (pcictrl == NULL) { | ||
110 | printk(KERN_WARNING EFIKA_PLATFORM_NAME | ||
111 | ": Unable to find the PCI bridge node\n"); | ||
112 | return; | ||
113 | } | ||
114 | |||
115 | bus_range = get_property(pcictrl, "bus-range", &len); | ||
116 | if (bus_range == NULL || len < 2 * sizeof(int)) { | ||
117 | printk(KERN_WARNING EFIKA_PLATFORM_NAME | ||
118 | ": Can't get bus-range for %s\n", pcictrl->full_name); | ||
119 | return; | ||
120 | } | ||
121 | |||
122 | if (bus_range[1] == bus_range[0]) | ||
123 | printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI bus %d", | ||
124 | bus_range[0]); | ||
125 | else | ||
126 | printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI buses %d..%d", | ||
127 | bus_range[0], bus_range[1]); | ||
128 | printk(" controlled by %s\n", pcictrl->full_name); | ||
129 | printk("\n"); | ||
130 | |||
131 | hose = pcibios_alloc_controller(); | ||
132 | if (!hose) { | ||
133 | printk(KERN_WARNING EFIKA_PLATFORM_NAME | ||
134 | ": Can't allocate PCI controller structure for %s\n", | ||
135 | pcictrl->full_name); | ||
136 | return; | ||
137 | } | ||
138 | |||
139 | hose->arch_data = of_node_get(pcictrl); | ||
140 | hose->first_busno = bus_range[0]; | ||
141 | hose->last_busno = bus_range[1]; | ||
142 | hose->ops = &rtas_pci_ops; | ||
143 | |||
144 | pci_process_bridge_OF_ranges(hose, pcictrl, 0); | ||
145 | } | ||
146 | |||
147 | #else | ||
148 | void __init efika_pcisetup(void) | ||
149 | {} | ||
150 | #endif | ||
151 | |||
152 | |||
153 | |||
154 | /* ------------------------------------------------------------------------ */ | ||
155 | /* Platform setup */ | ||
156 | /* ------------------------------------------------------------------------ */ | ||
157 | |||
158 | static void efika_show_cpuinfo(struct seq_file *m) | ||
159 | { | ||
160 | struct device_node *root; | ||
161 | const char *revision = NULL; | ||
162 | const char *codegendescription = NULL; | ||
163 | const char *codegenvendor = NULL; | ||
164 | |||
165 | root = of_find_node_by_path("/"); | ||
166 | if (!root) | ||
167 | return; | ||
168 | |||
169 | revision = get_property(root, "revision", NULL); | ||
170 | codegendescription = | ||
171 | get_property(root, "CODEGEN,description", NULL); | ||
172 | codegenvendor = get_property(root, "CODEGEN,vendor", NULL); | ||
173 | |||
174 | if (codegendescription) | ||
175 | seq_printf(m, "machine\t\t: %s\n", codegendescription); | ||
176 | else | ||
177 | seq_printf(m, "machine\t\t: Efika\n"); | ||
178 | |||
179 | if (revision) | ||
180 | seq_printf(m, "revision\t: %s\n", revision); | ||
181 | |||
182 | if (codegenvendor) | ||
183 | seq_printf(m, "vendor\t\t: %s\n", codegenvendor); | ||
184 | |||
185 | of_node_put(root); | ||
186 | } | ||
187 | |||
188 | static void __init efika_setup_arch(void) | ||
189 | { | ||
190 | rtas_initialize(); | ||
191 | |||
192 | #ifdef CONFIG_BLK_DEV_INITRD | ||
193 | initrd_below_start_ok = 1; | ||
194 | |||
195 | if (initrd_start) | ||
196 | ROOT_DEV = Root_RAM0; | ||
197 | else | ||
198 | #endif | ||
199 | ROOT_DEV = Root_SDA2; /* sda2 (sda1 is for the kernel) */ | ||
200 | |||
201 | efika_pcisetup(); | ||
202 | |||
203 | if (ppc_md.progress) | ||
204 | ppc_md.progress("Linux/PPC " UTS_RELEASE " running on Efika ;-)\n", 0x0); | ||
205 | } | ||
206 | |||
207 | static int __init efika_probe(void) | ||
208 | { | ||
209 | char *model = of_get_flat_dt_prop(of_get_flat_dt_root(), | ||
210 | "model", NULL); | ||
211 | |||
212 | if (model == NULL) | ||
213 | return 0; | ||
214 | if (strcmp(model, "EFIKA5K2")) | ||
215 | return 0; | ||
216 | |||
217 | ISA_DMA_THRESHOLD = ~0L; | ||
218 | DMA_MODE_READ = 0x44; | ||
219 | DMA_MODE_WRITE = 0x48; | ||
220 | |||
221 | return 1; | ||
222 | } | ||
223 | |||
224 | define_machine(efika) | ||
225 | { | ||
226 | .name = EFIKA_PLATFORM_NAME, | ||
227 | .probe = efika_probe, | ||
228 | .setup_arch = efika_setup_arch, | ||
229 | .init = mpc52xx_declare_of_platform_devices, | ||
230 | .show_cpuinfo = efika_show_cpuinfo, | ||
231 | .init_IRQ = mpc52xx_init_irq, | ||
232 | .get_irq = mpc52xx_get_irq, | ||
233 | .restart = rtas_restart, | ||
234 | .power_off = rtas_power_off, | ||
235 | .halt = rtas_halt, | ||
236 | .set_rtc_time = rtas_set_rtc_time, | ||
237 | .get_rtc_time = rtas_get_rtc_time, | ||
238 | .progress = rtas_progress, | ||
239 | .get_boot_time = rtas_get_boot_time, | ||
240 | .calibrate_decr = generic_calibrate_decr, | ||
241 | .phys_mem_access_prot = pci_phys_mem_access_prot, | ||
242 | }; | ||
243 | |||
diff --git a/arch/powerpc/platforms/52xx/efika.h b/arch/powerpc/platforms/52xx/efika.h deleted file mode 100644 index 2f060fd097d7..000000000000 --- a/arch/powerpc/platforms/52xx/efika.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * Efika 5K2 platform setup - Header file | ||
3 | * | ||
4 | * Copyright (C) 2006 bplan GmbH | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public License | ||
7 | * version 2. This program is licensed "as is" without any warranty of any | ||
8 | * kind, whether express or implied. | ||
9 | * | ||
10 | */ | ||
11 | |||
12 | #ifndef __ARCH_POWERPC_EFIKA__ | ||
13 | #define __ARCH_POWERPC_EFIKA__ | ||
14 | |||
15 | #define EFIKA_PLATFORM_NAME "Efika" | ||
16 | |||
17 | extern void __init efika_pcisetup(void); | ||
18 | |||
19 | #endif | ||
diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c index cdb16bfa6ca6..cc3b40de21dd 100644 --- a/arch/powerpc/platforms/52xx/lite5200.c +++ b/arch/powerpc/platforms/52xx/lite5200.c | |||
@@ -51,13 +51,13 @@ | |||
51 | */ | 51 | */ |
52 | 52 | ||
53 | static void __init | 53 | static void __init |
54 | lite52xx_setup_cpu(void) | 54 | lite5200_setup_cpu(void) |
55 | { | 55 | { |
56 | struct mpc52xx_gpio __iomem *gpio; | 56 | struct mpc52xx_gpio __iomem *gpio; |
57 | u32 port_config; | 57 | u32 port_config; |
58 | 58 | ||
59 | /* Map zones */ | 59 | /* Map zones */ |
60 | gpio = mpc52xx_find_and_map("mpc52xx-gpio"); | 60 | gpio = mpc52xx_find_and_map("mpc5200-gpio"); |
61 | if (!gpio) { | 61 | if (!gpio) { |
62 | printk(KERN_ERR __FILE__ ": " | 62 | printk(KERN_ERR __FILE__ ": " |
63 | "Error while mapping GPIO register for port config. " | 63 | "Error while mapping GPIO register for port config. " |
@@ -85,12 +85,12 @@ error: | |||
85 | iounmap(gpio); | 85 | iounmap(gpio); |
86 | } | 86 | } |
87 | 87 | ||
88 | static void __init lite52xx_setup_arch(void) | 88 | static void __init lite5200_setup_arch(void) |
89 | { | 89 | { |
90 | struct device_node *np; | 90 | struct device_node *np; |
91 | 91 | ||
92 | if (ppc_md.progress) | 92 | if (ppc_md.progress) |
93 | ppc_md.progress("lite52xx_setup_arch()", 0); | 93 | ppc_md.progress("lite5200_setup_arch()", 0); |
94 | 94 | ||
95 | np = of_find_node_by_type(NULL, "cpu"); | 95 | np = of_find_node_by_type(NULL, "cpu"); |
96 | if (np) { | 96 | if (np) { |
@@ -105,7 +105,7 @@ static void __init lite52xx_setup_arch(void) | |||
105 | 105 | ||
106 | /* CPU & Port mux setup */ | 106 | /* CPU & Port mux setup */ |
107 | mpc52xx_setup_cpu(); /* Generic */ | 107 | mpc52xx_setup_cpu(); /* Generic */ |
108 | lite52xx_setup_cpu(); /* Platorm specific */ | 108 | lite5200_setup_cpu(); /* Platorm specific */ |
109 | 109 | ||
110 | #ifdef CONFIG_PCI | 110 | #ifdef CONFIG_PCI |
111 | np = of_find_node_by_type(np, "pci"); | 111 | np = of_find_node_by_type(np, "pci"); |
@@ -126,7 +126,7 @@ static void __init lite52xx_setup_arch(void) | |||
126 | 126 | ||
127 | } | 127 | } |
128 | 128 | ||
129 | void lite52xx_show_cpuinfo(struct seq_file *m) | 129 | void lite5200_show_cpuinfo(struct seq_file *m) |
130 | { | 130 | { |
131 | struct device_node* np = of_find_all_nodes(NULL); | 131 | struct device_node* np = of_find_all_nodes(NULL); |
132 | const char *model = NULL; | 132 | const char *model = NULL; |
@@ -143,25 +143,26 @@ void lite52xx_show_cpuinfo(struct seq_file *m) | |||
143 | /* | 143 | /* |
144 | * Called very early, MMU is off, device-tree isn't unflattened | 144 | * Called very early, MMU is off, device-tree isn't unflattened |
145 | */ | 145 | */ |
146 | static int __init lite52xx_probe(void) | 146 | static int __init lite5200_probe(void) |
147 | { | 147 | { |
148 | unsigned long node = of_get_flat_dt_root(); | 148 | unsigned long node = of_get_flat_dt_root(); |
149 | const char *model = of_get_flat_dt_prop(node, "model", NULL); | 149 | const char *model = of_get_flat_dt_prop(node, "model", NULL); |
150 | 150 | ||
151 | if (!of_flat_dt_is_compatible(node, "lite52xx")) | 151 | if (!of_flat_dt_is_compatible(node, "fsl,lite5200") && |
152 | !of_flat_dt_is_compatible(node, "fsl,lite5200b")) | ||
152 | return 0; | 153 | return 0; |
153 | pr_debug("%s board w/ mpc52xx found\n", model ? model : "unknown"); | 154 | pr_debug("%s board found\n", model ? model : "unknown"); |
154 | 155 | ||
155 | return 1; | 156 | return 1; |
156 | } | 157 | } |
157 | 158 | ||
158 | define_machine(lite52xx) { | 159 | define_machine(lite5200) { |
159 | .name = "lite52xx", | 160 | .name = "lite5200", |
160 | .probe = lite52xx_probe, | 161 | .probe = lite5200_probe, |
161 | .setup_arch = lite52xx_setup_arch, | 162 | .setup_arch = lite5200_setup_arch, |
162 | .init = mpc52xx_declare_of_platform_devices, | 163 | .init = mpc52xx_declare_of_platform_devices, |
163 | .init_IRQ = mpc52xx_init_irq, | 164 | .init_IRQ = mpc52xx_init_irq, |
164 | .get_irq = mpc52xx_get_irq, | 165 | .get_irq = mpc52xx_get_irq, |
165 | .show_cpuinfo = lite52xx_show_cpuinfo, | 166 | .show_cpuinfo = lite5200_show_cpuinfo, |
166 | .calibrate_decr = generic_calibrate_decr, | 167 | .calibrate_decr = generic_calibrate_decr, |
167 | }; | 168 | }; |
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c index cc40889074bd..ed0cb694aea8 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_common.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c | |||
@@ -83,8 +83,8 @@ mpc52xx_setup_cpu(void) | |||
83 | struct mpc52xx_xlb __iomem *xlb; | 83 | struct mpc52xx_xlb __iomem *xlb; |
84 | 84 | ||
85 | /* Map zones */ | 85 | /* Map zones */ |
86 | cdm = mpc52xx_find_and_map("mpc52xx-cdm"); | 86 | cdm = mpc52xx_find_and_map("mpc5200-cdm"); |
87 | xlb = mpc52xx_find_and_map("mpc52xx-xlb"); | 87 | xlb = mpc52xx_find_and_map("mpc5200-xlb"); |
88 | 88 | ||
89 | if (!cdm || !xlb) { | 89 | if (!cdm || !xlb) { |
90 | printk(KERN_ERR __FILE__ ": " | 90 | printk(KERN_ERR __FILE__ ": " |
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pic.c b/arch/powerpc/platforms/52xx/mpc52xx_pic.c index cd91a6c3aafa..c75192567e55 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c | |||
@@ -383,16 +383,16 @@ void __init mpc52xx_init_irq(void) | |||
383 | struct device_node *picnode; | 383 | struct device_node *picnode; |
384 | 384 | ||
385 | /* Remap the necessary zones */ | 385 | /* Remap the necessary zones */ |
386 | picnode = of_find_compatible_node(NULL, NULL, "mpc52xx-pic"); | 386 | picnode = of_find_compatible_node(NULL, NULL, "mpc5200-pic"); |
387 | 387 | ||
388 | intr = mpc52xx_find_and_map("mpc52xx-pic"); | 388 | intr = mpc52xx_find_and_map("mpc5200-pic"); |
389 | if (!intr) | 389 | if (!intr) |
390 | panic(__FILE__ ": find_and_map failed on 'mpc52xx-pic'. " | 390 | panic(__FILE__ ": find_and_map failed on 'mpc5200-pic'. " |
391 | "Check node !"); | 391 | "Check node !"); |
392 | 392 | ||
393 | sdma = mpc52xx_find_and_map("mpc52xx-bestcomm"); | 393 | sdma = mpc52xx_find_and_map("mpc5200-bestcomm"); |
394 | if (!sdma) | 394 | if (!sdma) |
395 | panic(__FILE__ ": find_and_map failed on 'mpc52xx-bestcomm'. " | 395 | panic(__FILE__ ": find_and_map failed on 'mpc5200-bestcomm'. " |
396 | "Check node !"); | 396 | "Check node !"); |
397 | 397 | ||
398 | /* Disable all interrupt sources. */ | 398 | /* Disable all interrupt sources. */ |
diff --git a/arch/powerpc/platforms/83xx/Kconfig b/arch/powerpc/platforms/83xx/Kconfig index edcd5b875b66..1aea1e69ff31 100644 --- a/arch/powerpc/platforms/83xx/Kconfig +++ b/arch/powerpc/platforms/83xx/Kconfig | |||
@@ -3,7 +3,13 @@ menu "Platform support" | |||
3 | 3 | ||
4 | choice | 4 | choice |
5 | prompt "Machine Type" | 5 | prompt "Machine Type" |
6 | default MPC834x_SYS | 6 | default MPC834x_MDS |
7 | |||
8 | config MPC8313_RDB | ||
9 | bool "Freescale MPC8313 RDB" | ||
10 | select DEFAULT_UIMAGE | ||
11 | help | ||
12 | This option enables support for the MPC8313 RDB board. | ||
7 | 13 | ||
8 | config MPC832x_MDS | 14 | config MPC832x_MDS |
9 | bool "Freescale MPC832x MDS" | 15 | bool "Freescale MPC832x MDS" |
@@ -12,13 +18,13 @@ config MPC832x_MDS | |||
12 | help | 18 | help |
13 | This option enables support for the MPC832x MDS evaluation board. | 19 | This option enables support for the MPC832x MDS evaluation board. |
14 | 20 | ||
15 | config MPC834x_SYS | 21 | config MPC834x_MDS |
16 | bool "Freescale MPC834x SYS" | 22 | bool "Freescale MPC834x MDS" |
17 | select DEFAULT_UIMAGE | 23 | select DEFAULT_UIMAGE |
18 | help | 24 | help |
19 | This option enables support for the MPC 834x SYS evaluation board. | 25 | This option enables support for the MPC 834x MDS evaluation board. |
20 | 26 | ||
21 | Be aware that PCI buses can only function when SYS board is plugged | 27 | Be aware that PCI buses can only function when MDS board is plugged |
22 | into the PIB (Platform IO Board) board from Freescale which provide | 28 | into the PIB (Platform IO Board) board from Freescale which provide |
23 | 3 PCI slots. The PIBs PCI initialization is the bootloader's | 29 | 3 PCI slots. The PIBs PCI initialization is the bootloader's |
24 | responsibility. | 30 | responsibility. |
@@ -41,6 +47,12 @@ config MPC8360E_PB | |||
41 | 47 | ||
42 | endchoice | 48 | endchoice |
43 | 49 | ||
50 | config PPC_MPC831x | ||
51 | bool | ||
52 | select PPC_UDBG_16550 | ||
53 | select PPC_INDIRECT_PCI | ||
54 | default y if MPC8313_RDB | ||
55 | |||
44 | config PPC_MPC832x | 56 | config PPC_MPC832x |
45 | bool | 57 | bool |
46 | select PPC_UDBG_16550 | 58 | select PPC_UDBG_16550 |
@@ -51,7 +63,7 @@ config MPC834x | |||
51 | bool | 63 | bool |
52 | select PPC_UDBG_16550 | 64 | select PPC_UDBG_16550 |
53 | select PPC_INDIRECT_PCI | 65 | select PPC_INDIRECT_PCI |
54 | default y if MPC834x_SYS || MPC834x_ITX | 66 | default y if MPC834x_MDS || MPC834x_ITX |
55 | 67 | ||
56 | config PPC_MPC836x | 68 | config PPC_MPC836x |
57 | bool | 69 | bool |
diff --git a/arch/powerpc/platforms/83xx/Makefile b/arch/powerpc/platforms/83xx/Makefile index f1aa7e24a938..6c8199c4c382 100644 --- a/arch/powerpc/platforms/83xx/Makefile +++ b/arch/powerpc/platforms/83xx/Makefile | |||
@@ -3,7 +3,8 @@ | |||
3 | # | 3 | # |
4 | obj-y := misc.o | 4 | obj-y := misc.o |
5 | obj-$(CONFIG_PCI) += pci.o | 5 | obj-$(CONFIG_PCI) += pci.o |
6 | obj-$(CONFIG_MPC834x_SYS) += mpc834x_sys.o | 6 | obj-$(CONFIG_MPC8313_RDB) += mpc8313_rdb.o |
7 | obj-$(CONFIG_MPC834x_MDS) += mpc834x_mds.o | ||
7 | obj-$(CONFIG_MPC834x_ITX) += mpc834x_itx.o | 8 | obj-$(CONFIG_MPC834x_ITX) += mpc834x_itx.o |
8 | obj-$(CONFIG_MPC8360E_PB) += mpc8360e_pb.o | 9 | obj-$(CONFIG_MPC8360E_PB) += mpc8360e_pb.o |
9 | obj-$(CONFIG_MPC832x_MDS) += mpc832x_mds.o | 10 | obj-$(CONFIG_MPC832x_MDS) += mpc832x_mds.o |
diff --git a/arch/powerpc/platforms/83xx/mpc8313_rdb.c b/arch/powerpc/platforms/83xx/mpc8313_rdb.c new file mode 100644 index 000000000000..c3b98c34eb6b --- /dev/null +++ b/arch/powerpc/platforms/83xx/mpc8313_rdb.c | |||
@@ -0,0 +1,99 @@ | |||
1 | /* | ||
2 | * arch/powerpc/platforms/83xx/mpc8313_rdb.c | ||
3 | * | ||
4 | * Description: MPC8313x RDB board specific routines. | ||
5 | * This file is based on mpc834x_sys.c | ||
6 | * Author: Lo Wlison <r43300@freescale.com> | ||
7 | * | ||
8 | * Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | */ | ||
15 | |||
16 | #include <linux/pci.h> | ||
17 | |||
18 | #include <asm/time.h> | ||
19 | #include <asm/ipic.h> | ||
20 | #include <asm/udbg.h> | ||
21 | |||
22 | #include "mpc83xx.h" | ||
23 | |||
24 | #undef DEBUG | ||
25 | #ifdef DEBUG | ||
26 | #define DBG(fmt...) udbg_printf(fmt) | ||
27 | #else | ||
28 | #define DBG(fmt...) | ||
29 | #endif | ||
30 | |||
31 | #ifndef CONFIG_PCI | ||
32 | unsigned long isa_io_base = 0; | ||
33 | unsigned long isa_mem_base = 0; | ||
34 | #endif | ||
35 | |||
36 | /* ************************************************************************ | ||
37 | * | ||
38 | * Setup the architecture | ||
39 | * | ||
40 | */ | ||
41 | static void __init mpc8313_rdb_setup_arch(void) | ||
42 | { | ||
43 | struct device_node *np; | ||
44 | |||
45 | if (ppc_md.progress) | ||
46 | ppc_md.progress("mpc8313_rdb_setup_arch()", 0); | ||
47 | |||
48 | #ifdef CONFIG_PCI | ||
49 | for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) | ||
50 | add_bridge(np); | ||
51 | |||
52 | ppc_md.pci_exclude_device = mpc83xx_exclude_device; | ||
53 | #endif | ||
54 | } | ||
55 | |||
56 | void __init mpc8313_rdb_init_IRQ(void) | ||
57 | { | ||
58 | struct device_node *np; | ||
59 | |||
60 | np = of_find_node_by_type(NULL, "ipic"); | ||
61 | if (!np) | ||
62 | return; | ||
63 | |||
64 | ipic_init(np, 0); | ||
65 | |||
66 | /* Initialize the default interrupt mapping priorities, | ||
67 | * in case the boot rom changed something on us. | ||
68 | */ | ||
69 | ipic_set_default_priority(); | ||
70 | } | ||
71 | |||
72 | /* | ||
73 | * Called very early, MMU is off, device-tree isn't unflattened | ||
74 | */ | ||
75 | static int __init mpc8313_rdb_probe(void) | ||
76 | { | ||
77 | char *model = of_get_flat_dt_prop(of_get_flat_dt_root(), | ||
78 | "model", NULL); | ||
79 | if (model == NULL) | ||
80 | return 0; | ||
81 | if (strcmp(model, "MPC8313ERDB")) | ||
82 | return 0; | ||
83 | |||
84 | DBG("MPC8313 RDB found\n"); | ||
85 | |||
86 | return 1; | ||
87 | } | ||
88 | |||
89 | define_machine(mpc8313_rdb) { | ||
90 | .name = "MPC8313 RDB", | ||
91 | .probe = mpc8313_rdb_probe, | ||
92 | .setup_arch = mpc8313_rdb_setup_arch, | ||
93 | .init_IRQ = mpc8313_rdb_init_IRQ, | ||
94 | .get_irq = ipic_get_irq, | ||
95 | .restart = mpc83xx_restart, | ||
96 | .time_init = mpc83xx_time_init, | ||
97 | .calibrate_decr = generic_calibrate_decr, | ||
98 | .progress = udbg_progress, | ||
99 | }; | ||
diff --git a/arch/powerpc/platforms/83xx/mpc834x_itx.c b/arch/powerpc/platforms/83xx/mpc834x_itx.c index 2446dea9407e..443a3172f370 100644 --- a/arch/powerpc/platforms/83xx/mpc834x_itx.c +++ b/arch/powerpc/platforms/83xx/mpc834x_itx.c | |||
@@ -38,8 +38,6 @@ | |||
38 | 38 | ||
39 | #include "mpc83xx.h" | 39 | #include "mpc83xx.h" |
40 | 40 | ||
41 | #include <platforms/83xx/mpc834x_sys.h> | ||
42 | |||
43 | #ifndef CONFIG_PCI | 41 | #ifndef CONFIG_PCI |
44 | unsigned long isa_io_base = 0; | 42 | unsigned long isa_io_base = 0; |
45 | unsigned long isa_mem_base = 0; | 43 | unsigned long isa_mem_base = 0; |
diff --git a/arch/powerpc/platforms/83xx/mpc834x_sys.c b/arch/powerpc/platforms/83xx/mpc834x_mds.c index f30393f0b832..d2736da76c46 100644 --- a/arch/powerpc/platforms/83xx/mpc834x_sys.c +++ b/arch/powerpc/platforms/83xx/mpc834x_mds.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * arch/powerpc/platforms/83xx/mpc834x_sys.c | 2 | * arch/powerpc/platforms/83xx/mpc834x_mds.c |
3 | * | 3 | * |
4 | * MPC834x SYS board specific routines | 4 | * MPC834x MDS board specific routines |
5 | * | 5 | * |
6 | * Maintainer: Kumar Gala <galak@kernel.crashing.org> | 6 | * Maintainer: Kumar Gala <galak@kernel.crashing.org> |
7 | * | 7 | * |
@@ -43,17 +43,87 @@ unsigned long isa_io_base = 0; | |||
43 | unsigned long isa_mem_base = 0; | 43 | unsigned long isa_mem_base = 0; |
44 | #endif | 44 | #endif |
45 | 45 | ||
46 | #define BCSR5_INT_USB 0x02 | ||
47 | /* Note: This is only for PB, not for PB+PIB | ||
48 | * On PB only port0 is connected using ULPI */ | ||
49 | static int mpc834x_usb_cfg(void) | ||
50 | { | ||
51 | unsigned long sccr, sicrl; | ||
52 | void __iomem *immap; | ||
53 | void __iomem *bcsr_regs = NULL; | ||
54 | u8 bcsr5; | ||
55 | struct device_node *np = NULL; | ||
56 | int port0_is_dr = 0; | ||
57 | |||
58 | if ((np = of_find_compatible_node(np, "usb", "fsl-usb2-dr")) != NULL) | ||
59 | port0_is_dr = 1; | ||
60 | if ((np = of_find_compatible_node(np, "usb", "fsl-usb2-mph")) != NULL){ | ||
61 | if (port0_is_dr) { | ||
62 | printk(KERN_WARNING | ||
63 | "There is only one USB port on PB board! \n"); | ||
64 | return -1; | ||
65 | } else if (!port0_is_dr) | ||
66 | /* No usb port enabled */ | ||
67 | return -1; | ||
68 | } | ||
69 | |||
70 | immap = ioremap(get_immrbase(), 0x1000); | ||
71 | if (!immap) | ||
72 | return -1; | ||
73 | |||
74 | /* Configure clock */ | ||
75 | sccr = in_be32(immap + MPC83XX_SCCR_OFFS); | ||
76 | if (port0_is_dr) | ||
77 | sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ | ||
78 | else | ||
79 | sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */ | ||
80 | out_be32(immap + MPC83XX_SCCR_OFFS, sccr); | ||
81 | |||
82 | /* Configure Pin */ | ||
83 | sicrl = in_be32(immap + MPC83XX_SICRL_OFFS); | ||
84 | /* set port0 only */ | ||
85 | if (port0_is_dr) | ||
86 | sicrl |= MPC83XX_SICRL_USB0; | ||
87 | else | ||
88 | sicrl &= ~(MPC83XX_SICRL_USB0); | ||
89 | out_be32(immap + MPC83XX_SICRL_OFFS, sicrl); | ||
90 | |||
91 | iounmap(immap); | ||
92 | |||
93 | /* Map BCSR area */ | ||
94 | np = of_find_node_by_name(NULL, "bcsr"); | ||
95 | if (np != 0) { | ||
96 | struct resource res; | ||
97 | |||
98 | of_address_to_resource(np, 0, &res); | ||
99 | bcsr_regs = ioremap(res.start, res.end - res.start + 1); | ||
100 | of_node_put(np); | ||
101 | } | ||
102 | if (!bcsr_regs) | ||
103 | return -1; | ||
104 | |||
105 | /* | ||
106 | * if MDS board is plug into PIB board, | ||
107 | * force to use the PHY on MDS board | ||
108 | */ | ||
109 | bcsr5 = in_8(bcsr_regs + 5); | ||
110 | if (!(bcsr5 & BCSR5_INT_USB)) | ||
111 | out_8(bcsr_regs + 5, (bcsr5 | BCSR5_INT_USB)); | ||
112 | iounmap(bcsr_regs); | ||
113 | return 0; | ||
114 | } | ||
115 | |||
46 | /* ************************************************************************ | 116 | /* ************************************************************************ |
47 | * | 117 | * |
48 | * Setup the architecture | 118 | * Setup the architecture |
49 | * | 119 | * |
50 | */ | 120 | */ |
51 | static void __init mpc834x_sys_setup_arch(void) | 121 | static void __init mpc834x_mds_setup_arch(void) |
52 | { | 122 | { |
53 | struct device_node *np; | 123 | struct device_node *np; |
54 | 124 | ||
55 | if (ppc_md.progress) | 125 | if (ppc_md.progress) |
56 | ppc_md.progress("mpc834x_sys_setup_arch()", 0); | 126 | ppc_md.progress("mpc834x_mds_setup_arch()", 0); |
57 | 127 | ||
58 | np = of_find_node_by_type(NULL, "cpu"); | 128 | np = of_find_node_by_type(NULL, "cpu"); |
59 | if (np != 0) { | 129 | if (np != 0) { |
@@ -65,6 +135,7 @@ static void __init mpc834x_sys_setup_arch(void) | |||
65 | loops_per_jiffy = 50000000 / HZ; | 135 | loops_per_jiffy = 50000000 / HZ; |
66 | of_node_put(np); | 136 | of_node_put(np); |
67 | } | 137 | } |
138 | |||
68 | #ifdef CONFIG_PCI | 139 | #ifdef CONFIG_PCI |
69 | for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) | 140 | for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) |
70 | add_bridge(np); | 141 | add_bridge(np); |
@@ -72,6 +143,8 @@ static void __init mpc834x_sys_setup_arch(void) | |||
72 | ppc_md.pci_exclude_device = mpc83xx_exclude_device; | 143 | ppc_md.pci_exclude_device = mpc83xx_exclude_device; |
73 | #endif | 144 | #endif |
74 | 145 | ||
146 | mpc834x_usb_cfg(); | ||
147 | |||
75 | #ifdef CONFIG_ROOT_NFS | 148 | #ifdef CONFIG_ROOT_NFS |
76 | ROOT_DEV = Root_NFS; | 149 | ROOT_DEV = Root_NFS; |
77 | #else | 150 | #else |
@@ -79,7 +152,7 @@ static void __init mpc834x_sys_setup_arch(void) | |||
79 | #endif | 152 | #endif |
80 | } | 153 | } |
81 | 154 | ||
82 | static void __init mpc834x_sys_init_IRQ(void) | 155 | static void __init mpc834x_mds_init_IRQ(void) |
83 | { | 156 | { |
84 | struct device_node *np; | 157 | struct device_node *np; |
85 | 158 | ||
@@ -119,7 +192,7 @@ late_initcall(mpc834x_rtc_hookup); | |||
119 | /* | 192 | /* |
120 | * Called very early, MMU is off, device-tree isn't unflattened | 193 | * Called very early, MMU is off, device-tree isn't unflattened |
121 | */ | 194 | */ |
122 | static int __init mpc834x_sys_probe(void) | 195 | static int __init mpc834x_mds_probe(void) |
123 | { | 196 | { |
124 | /* We always match for now, eventually we should look at the flat | 197 | /* We always match for now, eventually we should look at the flat |
125 | dev tree to ensure this is the board we are suppose to run on | 198 | dev tree to ensure this is the board we are suppose to run on |
@@ -127,11 +200,11 @@ static int __init mpc834x_sys_probe(void) | |||
127 | return 1; | 200 | return 1; |
128 | } | 201 | } |
129 | 202 | ||
130 | define_machine(mpc834x_sys) { | 203 | define_machine(mpc834x_mds) { |
131 | .name = "MPC834x SYS", | 204 | .name = "MPC834x MDS", |
132 | .probe = mpc834x_sys_probe, | 205 | .probe = mpc834x_mds_probe, |
133 | .setup_arch = mpc834x_sys_setup_arch, | 206 | .setup_arch = mpc834x_mds_setup_arch, |
134 | .init_IRQ = mpc834x_sys_init_IRQ, | 207 | .init_IRQ = mpc834x_mds_init_IRQ, |
135 | .get_irq = ipic_get_irq, | 208 | .get_irq = ipic_get_irq, |
136 | .restart = mpc83xx_restart, | 209 | .restart = mpc83xx_restart, |
137 | .time_init = mpc83xx_time_init, | 210 | .time_init = mpc83xx_time_init, |
diff --git a/arch/powerpc/platforms/83xx/mpc834x_sys.h b/arch/powerpc/platforms/83xx/mpc834x_sys.h deleted file mode 100644 index 7d5bbef084e7..000000000000 --- a/arch/powerpc/platforms/83xx/mpc834x_sys.h +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | /* | ||
2 | * arch/powerpc/platforms/83xx/mpc834x_sys.h | ||
3 | * | ||
4 | * MPC834X SYS common board definitions | ||
5 | * | ||
6 | * Maintainer: Kumar Gala <galak@kernel.crashing.org> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License as published by the | ||
10 | * Free Software Foundation; either version 2 of the License, or (at your | ||
11 | * option) any later version. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | #ifndef __MACH_MPC83XX_SYS_H__ | ||
16 | #define __MACH_MPC83XX_SYS_H__ | ||
17 | |||
18 | #define PIRQA MPC83xx_IRQ_EXT4 | ||
19 | #define PIRQB MPC83xx_IRQ_EXT5 | ||
20 | #define PIRQC MPC83xx_IRQ_EXT6 | ||
21 | #define PIRQD MPC83xx_IRQ_EXT7 | ||
22 | |||
23 | #endif /* __MACH_MPC83XX_SYS_H__ */ | ||
diff --git a/arch/powerpc/platforms/83xx/mpc83xx.h b/arch/powerpc/platforms/83xx/mpc83xx.h index 01cae106912b..9cd03b59c8f4 100644 --- a/arch/powerpc/platforms/83xx/mpc83xx.h +++ b/arch/powerpc/platforms/83xx/mpc83xx.h | |||
@@ -4,6 +4,24 @@ | |||
4 | #include <linux/init.h> | 4 | #include <linux/init.h> |
5 | #include <linux/device.h> | 5 | #include <linux/device.h> |
6 | 6 | ||
7 | /* System Clock Control Register */ | ||
8 | #define MPC83XX_SCCR_OFFS 0xA08 | ||
9 | #define MPC83XX_SCCR_USB_MPHCM_11 0x00c00000 | ||
10 | #define MPC83XX_SCCR_USB_MPHCM_01 0x00400000 | ||
11 | #define MPC83XX_SCCR_USB_MPHCM_10 0x00800000 | ||
12 | #define MPC83XX_SCCR_USB_DRCM_11 0x00300000 | ||
13 | #define MPC83XX_SCCR_USB_DRCM_01 0x00100000 | ||
14 | #define MPC83XX_SCCR_USB_DRCM_10 0x00200000 | ||
15 | |||
16 | /* system i/o configuration register low */ | ||
17 | #define MPC83XX_SICRL_OFFS 0x114 | ||
18 | #define MPC83XX_SICRL_USB0 0x40000000 | ||
19 | #define MPC83XX_SICRL_USB1 0x20000000 | ||
20 | |||
21 | /* system i/o configuration register high */ | ||
22 | #define MPC83XX_SICRH_OFFS 0x118 | ||
23 | #define MPC83XX_SICRH_USB_UTMI 0x00020000 | ||
24 | |||
7 | /* | 25 | /* |
8 | * Declaration for the various functions exported by the | 26 | * Declaration for the various functions exported by the |
9 | * mpc83xx_* files. Mostly for use by mpc83xx_setup | 27 | * mpc83xx_* files. Mostly for use by mpc83xx_setup |
diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile index 65e612315b9b..452004283f17 100644 --- a/arch/powerpc/platforms/Makefile +++ b/arch/powerpc/platforms/Makefile | |||
@@ -5,9 +5,9 @@ ifeq ($(CONFIG_PPC64),y) | |||
5 | obj-$(CONFIG_PPC_PMAC) += powermac/ | 5 | obj-$(CONFIG_PPC_PMAC) += powermac/ |
6 | endif | 6 | endif |
7 | endif | 7 | endif |
8 | obj-$(CONFIG_PPC_MPC52xx) += 52xx/ | ||
9 | obj-$(CONFIG_PPC_CHRP) += chrp/ | 8 | obj-$(CONFIG_PPC_CHRP) += chrp/ |
10 | obj-$(CONFIG_4xx) += 4xx/ | 9 | obj-$(CONFIG_4xx) += 4xx/ |
10 | obj-$(CONFIG_PPC_MPC52xx) += 52xx/ | ||
11 | obj-$(CONFIG_PPC_8xx) += 8xx/ | 11 | obj-$(CONFIG_PPC_8xx) += 8xx/ |
12 | obj-$(CONFIG_PPC_82xx) += 82xx/ | 12 | obj-$(CONFIG_PPC_82xx) += 82xx/ |
13 | obj-$(CONFIG_PPC_83xx) += 83xx/ | 13 | obj-$(CONFIG_PPC_83xx) += 83xx/ |
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c index b43466ba8096..67d617b60a23 100644 --- a/arch/powerpc/platforms/cell/iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
@@ -149,7 +149,8 @@ static int cbe_nr_iommus; | |||
149 | static void invalidate_tce_cache(struct cbe_iommu *iommu, unsigned long *pte, | 149 | static void invalidate_tce_cache(struct cbe_iommu *iommu, unsigned long *pte, |
150 | long n_ptes) | 150 | long n_ptes) |
151 | { | 151 | { |
152 | unsigned long *reg, val; | 152 | unsigned long __iomem *reg; |
153 | unsigned long val; | ||
153 | long n; | 154 | long n; |
154 | 155 | ||
155 | reg = iommu->xlate_regs + IOC_IOPT_CacheInvd; | 156 | reg = iommu->xlate_regs + IOC_IOPT_CacheInvd; |
@@ -592,7 +593,7 @@ static void __init cell_iommu_init_one(struct device_node *np, unsigned long off | |||
592 | /* Init base fields */ | 593 | /* Init base fields */ |
593 | i = cbe_nr_iommus++; | 594 | i = cbe_nr_iommus++; |
594 | iommu = &iommus[i]; | 595 | iommu = &iommus[i]; |
595 | iommu->stab = 0; | 596 | iommu->stab = NULL; |
596 | iommu->nid = nid; | 597 | iommu->nid = nid; |
597 | snprintf(iommu->name, sizeof(iommu->name), "iommu%d", i); | 598 | snprintf(iommu->name, sizeof(iommu->name), "iommu%d", i); |
598 | INIT_LIST_HEAD(&iommu->windows); | 599 | INIT_LIST_HEAD(&iommu->windows); |
diff --git a/arch/powerpc/platforms/cell/spu_manage.c b/arch/powerpc/platforms/cell/spu_manage.c index d8b39fe39cdd..e34599f53d28 100644 --- a/arch/powerpc/platforms/cell/spu_manage.c +++ b/arch/powerpc/platforms/cell/spu_manage.c | |||
@@ -59,63 +59,6 @@ static u64 __init find_spu_unit_number(struct device_node *spe) | |||
59 | return 0; | 59 | return 0; |
60 | } | 60 | } |
61 | 61 | ||
62 | static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe, | ||
63 | const char *prop) | ||
64 | { | ||
65 | const struct address_prop { | ||
66 | unsigned long address; | ||
67 | unsigned int len; | ||
68 | } __attribute__((packed)) *p; | ||
69 | int proplen; | ||
70 | |||
71 | unsigned long start_pfn, nr_pages; | ||
72 | struct pglist_data *pgdata; | ||
73 | struct zone *zone; | ||
74 | int ret; | ||
75 | |||
76 | p = get_property(spe, prop, &proplen); | ||
77 | WARN_ON(proplen != sizeof (*p)); | ||
78 | |||
79 | start_pfn = p->address >> PAGE_SHIFT; | ||
80 | nr_pages = ((unsigned long)p->len + PAGE_SIZE - 1) >> PAGE_SHIFT; | ||
81 | |||
82 | pgdata = NODE_DATA(spu->node); | ||
83 | zone = pgdata->node_zones; | ||
84 | |||
85 | ret = __add_pages(zone, start_pfn, nr_pages); | ||
86 | |||
87 | return ret; | ||
88 | } | ||
89 | |||
90 | static void __iomem * __init map_spe_prop(struct spu *spu, | ||
91 | struct device_node *n, const char *name) | ||
92 | { | ||
93 | const struct address_prop { | ||
94 | unsigned long address; | ||
95 | unsigned int len; | ||
96 | } __attribute__((packed)) *prop; | ||
97 | |||
98 | const void *p; | ||
99 | int proplen; | ||
100 | void __iomem *ret = NULL; | ||
101 | int err = 0; | ||
102 | |||
103 | p = get_property(n, name, &proplen); | ||
104 | if (proplen != sizeof (struct address_prop)) | ||
105 | return NULL; | ||
106 | |||
107 | prop = p; | ||
108 | |||
109 | err = cell_spuprop_present(spu, n, name); | ||
110 | if (err && (err != -EEXIST)) | ||
111 | goto out; | ||
112 | |||
113 | ret = ioremap(prop->address, prop->len); | ||
114 | |||
115 | out: | ||
116 | return ret; | ||
117 | } | ||
118 | |||
119 | static void spu_unmap(struct spu *spu) | 62 | static void spu_unmap(struct spu *spu) |
120 | { | 63 | { |
121 | if (!firmware_has_feature(FW_FEATURE_LPAR)) | 64 | if (!firmware_has_feature(FW_FEATURE_LPAR)) |
@@ -157,6 +100,23 @@ static int __init spu_map_interrupts_old(struct spu *spu, | |||
157 | return spu->irqs[2] == NO_IRQ ? -EINVAL : 0; | 100 | return spu->irqs[2] == NO_IRQ ? -EINVAL : 0; |
158 | } | 101 | } |
159 | 102 | ||
103 | static void __iomem * __init spu_map_prop_old(struct spu *spu, | ||
104 | struct device_node *n, | ||
105 | const char *name) | ||
106 | { | ||
107 | const struct address_prop { | ||
108 | unsigned long address; | ||
109 | unsigned int len; | ||
110 | } __attribute__((packed)) *prop; | ||
111 | int proplen; | ||
112 | |||
113 | prop = get_property(n, name, &proplen); | ||
114 | if (prop == NULL || proplen != sizeof (struct address_prop)) | ||
115 | return NULL; | ||
116 | |||
117 | return ioremap(prop->address, prop->len); | ||
118 | } | ||
119 | |||
160 | static int __init spu_map_device_old(struct spu *spu) | 120 | static int __init spu_map_device_old(struct spu *spu) |
161 | { | 121 | { |
162 | struct device_node *node = spu->devnode; | 122 | struct device_node *node = spu->devnode; |
@@ -175,7 +135,7 @@ static int __init spu_map_device_old(struct spu *spu) | |||
175 | 135 | ||
176 | /* we use local store as ram, not io memory */ | 136 | /* we use local store as ram, not io memory */ |
177 | spu->local_store = (void __force *) | 137 | spu->local_store = (void __force *) |
178 | map_spe_prop(spu, node, "local-store"); | 138 | spu_map_prop_old(spu, node, "local-store"); |
179 | if (!spu->local_store) | 139 | if (!spu->local_store) |
180 | goto out; | 140 | goto out; |
181 | 141 | ||
@@ -184,16 +144,16 @@ static int __init spu_map_device_old(struct spu *spu) | |||
184 | goto out_unmap; | 144 | goto out_unmap; |
185 | spu->problem_phys = *(unsigned long *)prop; | 145 | spu->problem_phys = *(unsigned long *)prop; |
186 | 146 | ||
187 | spu->problem = map_spe_prop(spu, node, "problem"); | 147 | spu->problem = spu_map_prop_old(spu, node, "problem"); |
188 | if (!spu->problem) | 148 | if (!spu->problem) |
189 | goto out_unmap; | 149 | goto out_unmap; |
190 | 150 | ||
191 | spu->priv2 = map_spe_prop(spu, node, "priv2"); | 151 | spu->priv2 = spu_map_prop_old(spu, node, "priv2"); |
192 | if (!spu->priv2) | 152 | if (!spu->priv2) |
193 | goto out_unmap; | 153 | goto out_unmap; |
194 | 154 | ||
195 | if (!firmware_has_feature(FW_FEATURE_LPAR)) { | 155 | if (!firmware_has_feature(FW_FEATURE_LPAR)) { |
196 | spu->priv1 = map_spe_prop(spu, node, "priv1"); | 156 | spu->priv1 = spu_map_prop_old(spu, node, "priv1"); |
197 | if (!spu->priv1) | 157 | if (!spu->priv1) |
198 | goto out_unmap; | 158 | goto out_unmap; |
199 | } | 159 | } |
@@ -245,34 +205,20 @@ static int spu_map_resource(struct spu *spu, int nr, | |||
245 | void __iomem** virt, unsigned long *phys) | 205 | void __iomem** virt, unsigned long *phys) |
246 | { | 206 | { |
247 | struct device_node *np = spu->devnode; | 207 | struct device_node *np = spu->devnode; |
248 | unsigned long start_pfn, nr_pages; | ||
249 | struct pglist_data *pgdata; | ||
250 | struct zone *zone; | ||
251 | struct resource resource = { }; | 208 | struct resource resource = { }; |
252 | unsigned long len; | 209 | unsigned long len; |
253 | int ret; | 210 | int ret; |
254 | 211 | ||
255 | ret = of_address_to_resource(np, nr, &resource); | 212 | ret = of_address_to_resource(np, nr, &resource); |
256 | if (ret) | 213 | if (ret) |
257 | goto out; | 214 | return ret; |
258 | |||
259 | if (phys) | 215 | if (phys) |
260 | *phys = resource.start; | 216 | *phys = resource.start; |
261 | len = resource.end - resource.start + 1; | 217 | len = resource.end - resource.start + 1; |
262 | *virt = ioremap(resource.start, len); | 218 | *virt = ioremap(resource.start, len); |
263 | if (!*virt) | 219 | if (!*virt) |
264 | ret = -EINVAL; | 220 | return -EINVAL; |
265 | 221 | return 0; | |
266 | start_pfn = resource.start >> PAGE_SHIFT; | ||
267 | nr_pages = (len + PAGE_SIZE - 1) >> PAGE_SHIFT; | ||
268 | |||
269 | pgdata = NODE_DATA(spu->node); | ||
270 | zone = pgdata->node_zones; | ||
271 | |||
272 | ret = __add_pages(zone, start_pfn, nr_pages); | ||
273 | |||
274 | out: | ||
275 | return ret; | ||
276 | } | 222 | } |
277 | 223 | ||
278 | static int __init spu_map_device(struct spu *spu) | 224 | static int __init spu_map_device(struct spu *spu) |
diff --git a/arch/powerpc/platforms/cell/spufs/context.c b/arch/powerpc/platforms/cell/spufs/context.c index 0870009f56db..28c718ca3b51 100644 --- a/arch/powerpc/platforms/cell/spufs/context.c +++ b/arch/powerpc/platforms/cell/spufs/context.c | |||
@@ -111,13 +111,17 @@ void spu_unmap_mappings(struct spu_context *ctx) | |||
111 | if (ctx->local_store) | 111 | if (ctx->local_store) |
112 | unmap_mapping_range(ctx->local_store, 0, LS_SIZE, 1); | 112 | unmap_mapping_range(ctx->local_store, 0, LS_SIZE, 1); |
113 | if (ctx->mfc) | 113 | if (ctx->mfc) |
114 | unmap_mapping_range(ctx->mfc, 0, 0x4000, 1); | 114 | unmap_mapping_range(ctx->mfc, 0, 0x1000, 1); |
115 | if (ctx->cntl) | 115 | if (ctx->cntl) |
116 | unmap_mapping_range(ctx->cntl, 0, 0x4000, 1); | 116 | unmap_mapping_range(ctx->cntl, 0, 0x1000, 1); |
117 | if (ctx->signal1) | 117 | if (ctx->signal1) |
118 | unmap_mapping_range(ctx->signal1, 0, 0x4000, 1); | 118 | unmap_mapping_range(ctx->signal1, 0, PAGE_SIZE, 1); |
119 | if (ctx->signal2) | 119 | if (ctx->signal2) |
120 | unmap_mapping_range(ctx->signal2, 0, 0x4000, 1); | 120 | unmap_mapping_range(ctx->signal2, 0, PAGE_SIZE, 1); |
121 | if (ctx->mss) | ||
122 | unmap_mapping_range(ctx->mss, 0, 0x1000, 1); | ||
123 | if (ctx->psmap) | ||
124 | unmap_mapping_range(ctx->psmap, 0, 0x20000, 1); | ||
121 | } | 125 | } |
122 | 126 | ||
123 | int spu_acquire_exclusive(struct spu_context *ctx) | 127 | int spu_acquire_exclusive(struct spu_context *ctx) |
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c index 347eff56fcbd..a528020baa18 100644 --- a/arch/powerpc/platforms/cell/spufs/file.c +++ b/arch/powerpc/platforms/cell/spufs/file.c | |||
@@ -45,8 +45,8 @@ spufs_mem_open(struct inode *inode, struct file *file) | |||
45 | struct spufs_inode_info *i = SPUFS_I(inode); | 45 | struct spufs_inode_info *i = SPUFS_I(inode); |
46 | struct spu_context *ctx = i->i_ctx; | 46 | struct spu_context *ctx = i->i_ctx; |
47 | file->private_data = ctx; | 47 | file->private_data = ctx; |
48 | file->f_mapping = inode->i_mapping; | ||
49 | ctx->local_store = inode->i_mapping; | 48 | ctx->local_store = inode->i_mapping; |
49 | smp_wmb(); | ||
50 | return 0; | 50 | return 0; |
51 | } | 51 | } |
52 | 52 | ||
@@ -95,14 +95,12 @@ spufs_mem_write(struct file *file, const char __user *buffer, | |||
95 | return ret; | 95 | return ret; |
96 | } | 96 | } |
97 | 97 | ||
98 | static struct page * | 98 | static unsigned long spufs_mem_mmap_nopfn(struct vm_area_struct *vma, |
99 | spufs_mem_mmap_nopage(struct vm_area_struct *vma, | 99 | unsigned long address) |
100 | unsigned long address, int *type) | ||
101 | { | 100 | { |
102 | struct page *page = NOPAGE_SIGBUS; | ||
103 | |||
104 | struct spu_context *ctx = vma->vm_file->private_data; | 101 | struct spu_context *ctx = vma->vm_file->private_data; |
105 | unsigned long offset = address - vma->vm_start; | 102 | unsigned long pfn, offset = address - vma->vm_start; |
103 | |||
106 | offset += vma->vm_pgoff << PAGE_SHIFT; | 104 | offset += vma->vm_pgoff << PAGE_SHIFT; |
107 | 105 | ||
108 | spu_acquire(ctx); | 106 | spu_acquire(ctx); |
@@ -110,24 +108,22 @@ spufs_mem_mmap_nopage(struct vm_area_struct *vma, | |||
110 | if (ctx->state == SPU_STATE_SAVED) { | 108 | if (ctx->state == SPU_STATE_SAVED) { |
111 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | 109 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) |
112 | & ~_PAGE_NO_CACHE); | 110 | & ~_PAGE_NO_CACHE); |
113 | page = vmalloc_to_page(ctx->csa.lscsa->ls + offset); | 111 | pfn = vmalloc_to_pfn(ctx->csa.lscsa->ls + offset); |
114 | } else { | 112 | } else { |
115 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | 113 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) |
116 | | _PAGE_NO_CACHE); | 114 | | _PAGE_NO_CACHE); |
117 | page = pfn_to_page((ctx->spu->local_store_phys + offset) | 115 | pfn = (ctx->spu->local_store_phys + offset) >> PAGE_SHIFT; |
118 | >> PAGE_SHIFT); | ||
119 | } | 116 | } |
120 | spu_release(ctx); | 117 | vm_insert_pfn(vma, address, pfn); |
121 | 118 | ||
122 | if (type) | 119 | spu_release(ctx); |
123 | *type = VM_FAULT_MINOR; | ||
124 | 120 | ||
125 | page_cache_get(page); | 121 | return NOPFN_REFAULT; |
126 | return page; | ||
127 | } | 122 | } |
128 | 123 | ||
124 | |||
129 | static struct vm_operations_struct spufs_mem_mmap_vmops = { | 125 | static struct vm_operations_struct spufs_mem_mmap_vmops = { |
130 | .nopage = spufs_mem_mmap_nopage, | 126 | .nopfn = spufs_mem_mmap_nopfn, |
131 | }; | 127 | }; |
132 | 128 | ||
133 | static int | 129 | static int |
@@ -136,7 +132,7 @@ spufs_mem_mmap(struct file *file, struct vm_area_struct *vma) | |||
136 | if (!(vma->vm_flags & VM_SHARED)) | 132 | if (!(vma->vm_flags & VM_SHARED)) |
137 | return -EINVAL; | 133 | return -EINVAL; |
138 | 134 | ||
139 | vma->vm_flags |= VM_IO; | 135 | vma->vm_flags |= VM_IO | VM_PFNMAP; |
140 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | 136 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) |
141 | | _PAGE_NO_CACHE); | 137 | | _PAGE_NO_CACHE); |
142 | 138 | ||
@@ -144,7 +140,7 @@ spufs_mem_mmap(struct file *file, struct vm_area_struct *vma) | |||
144 | return 0; | 140 | return 0; |
145 | } | 141 | } |
146 | 142 | ||
147 | static struct file_operations spufs_mem_fops = { | 143 | static const struct file_operations spufs_mem_fops = { |
148 | .open = spufs_mem_open, | 144 | .open = spufs_mem_open, |
149 | .read = spufs_mem_read, | 145 | .read = spufs_mem_read, |
150 | .write = spufs_mem_write, | 146 | .write = spufs_mem_write, |
@@ -152,49 +148,42 @@ static struct file_operations spufs_mem_fops = { | |||
152 | .mmap = spufs_mem_mmap, | 148 | .mmap = spufs_mem_mmap, |
153 | }; | 149 | }; |
154 | 150 | ||
155 | static struct page *spufs_ps_nopage(struct vm_area_struct *vma, | 151 | static unsigned long spufs_ps_nopfn(struct vm_area_struct *vma, |
156 | unsigned long address, | 152 | unsigned long address, |
157 | int *type, unsigned long ps_offs, | 153 | unsigned long ps_offs, |
158 | unsigned long ps_size) | 154 | unsigned long ps_size) |
159 | { | 155 | { |
160 | struct page *page = NOPAGE_SIGBUS; | ||
161 | int fault_type = VM_FAULT_SIGBUS; | ||
162 | struct spu_context *ctx = vma->vm_file->private_data; | 156 | struct spu_context *ctx = vma->vm_file->private_data; |
163 | unsigned long offset = address - vma->vm_start; | 157 | unsigned long area, offset = address - vma->vm_start; |
164 | unsigned long area; | ||
165 | int ret; | 158 | int ret; |
166 | 159 | ||
167 | offset += vma->vm_pgoff << PAGE_SHIFT; | 160 | offset += vma->vm_pgoff << PAGE_SHIFT; |
168 | if (offset >= ps_size) | 161 | if (offset >= ps_size) |
169 | goto out; | 162 | return NOPFN_SIGBUS; |
170 | 163 | ||
164 | /* error here usually means a signal.. we might want to test | ||
165 | * the error code more precisely though | ||
166 | */ | ||
171 | ret = spu_acquire_runnable(ctx); | 167 | ret = spu_acquire_runnable(ctx); |
172 | if (ret) | 168 | if (ret) |
173 | goto out; | 169 | return NOPFN_REFAULT; |
174 | 170 | ||
175 | area = ctx->spu->problem_phys + ps_offs; | 171 | area = ctx->spu->problem_phys + ps_offs; |
176 | page = pfn_to_page((area + offset) >> PAGE_SHIFT); | 172 | vm_insert_pfn(vma, address, (area + offset) >> PAGE_SHIFT); |
177 | fault_type = VM_FAULT_MINOR; | ||
178 | page_cache_get(page); | ||
179 | |||
180 | spu_release(ctx); | 173 | spu_release(ctx); |
181 | 174 | ||
182 | out: | 175 | return NOPFN_REFAULT; |
183 | if (type) | ||
184 | *type = fault_type; | ||
185 | |||
186 | return page; | ||
187 | } | 176 | } |
188 | 177 | ||
189 | #if SPUFS_MMAP_4K | 178 | #if SPUFS_MMAP_4K |
190 | static struct page *spufs_cntl_mmap_nopage(struct vm_area_struct *vma, | 179 | static unsigned long spufs_cntl_mmap_nopfn(struct vm_area_struct *vma, |
191 | unsigned long address, int *type) | 180 | unsigned long address) |
192 | { | 181 | { |
193 | return spufs_ps_nopage(vma, address, type, 0x4000, 0x1000); | 182 | return spufs_ps_nopfn(vma, address, 0x4000, 0x1000); |
194 | } | 183 | } |
195 | 184 | ||
196 | static struct vm_operations_struct spufs_cntl_mmap_vmops = { | 185 | static struct vm_operations_struct spufs_cntl_mmap_vmops = { |
197 | .nopage = spufs_cntl_mmap_nopage, | 186 | .nopfn = spufs_cntl_mmap_nopfn, |
198 | }; | 187 | }; |
199 | 188 | ||
200 | /* | 189 | /* |
@@ -205,7 +194,7 @@ static int spufs_cntl_mmap(struct file *file, struct vm_area_struct *vma) | |||
205 | if (!(vma->vm_flags & VM_SHARED)) | 194 | if (!(vma->vm_flags & VM_SHARED)) |
206 | return -EINVAL; | 195 | return -EINVAL; |
207 | 196 | ||
208 | vma->vm_flags |= VM_IO; | 197 | vma->vm_flags |= VM_IO | VM_PFNMAP; |
209 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | 198 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) |
210 | | _PAGE_NO_CACHE | _PAGE_GUARDED); | 199 | | _PAGE_NO_CACHE | _PAGE_GUARDED); |
211 | 200 | ||
@@ -243,13 +232,13 @@ static int spufs_cntl_open(struct inode *inode, struct file *file) | |||
243 | struct spu_context *ctx = i->i_ctx; | 232 | struct spu_context *ctx = i->i_ctx; |
244 | 233 | ||
245 | file->private_data = ctx; | 234 | file->private_data = ctx; |
246 | file->f_mapping = inode->i_mapping; | ||
247 | ctx->cntl = inode->i_mapping; | 235 | ctx->cntl = inode->i_mapping; |
236 | smp_wmb(); | ||
248 | return simple_attr_open(inode, file, spufs_cntl_get, | 237 | return simple_attr_open(inode, file, spufs_cntl_get, |
249 | spufs_cntl_set, "0x%08lx"); | 238 | spufs_cntl_set, "0x%08lx"); |
250 | } | 239 | } |
251 | 240 | ||
252 | static struct file_operations spufs_cntl_fops = { | 241 | static const struct file_operations spufs_cntl_fops = { |
253 | .open = spufs_cntl_open, | 242 | .open = spufs_cntl_open, |
254 | .release = simple_attr_close, | 243 | .release = simple_attr_close, |
255 | .read = simple_attr_read, | 244 | .read = simple_attr_read, |
@@ -309,7 +298,7 @@ spufs_regs_write(struct file *file, const char __user *buffer, | |||
309 | return ret; | 298 | return ret; |
310 | } | 299 | } |
311 | 300 | ||
312 | static struct file_operations spufs_regs_fops = { | 301 | static const struct file_operations spufs_regs_fops = { |
313 | .open = spufs_regs_open, | 302 | .open = spufs_regs_open, |
314 | .read = spufs_regs_read, | 303 | .read = spufs_regs_read, |
315 | .write = spufs_regs_write, | 304 | .write = spufs_regs_write, |
@@ -360,7 +349,7 @@ spufs_fpcr_write(struct file *file, const char __user * buffer, | |||
360 | return ret; | 349 | return ret; |
361 | } | 350 | } |
362 | 351 | ||
363 | static struct file_operations spufs_fpcr_fops = { | 352 | static const struct file_operations spufs_fpcr_fops = { |
364 | .open = spufs_regs_open, | 353 | .open = spufs_regs_open, |
365 | .read = spufs_fpcr_read, | 354 | .read = spufs_fpcr_read, |
366 | .write = spufs_fpcr_write, | 355 | .write = spufs_fpcr_write, |
@@ -426,7 +415,7 @@ static ssize_t spufs_mbox_read(struct file *file, char __user *buf, | |||
426 | return count; | 415 | return count; |
427 | } | 416 | } |
428 | 417 | ||
429 | static struct file_operations spufs_mbox_fops = { | 418 | static const struct file_operations spufs_mbox_fops = { |
430 | .open = spufs_pipe_open, | 419 | .open = spufs_pipe_open, |
431 | .read = spufs_mbox_read, | 420 | .read = spufs_mbox_read, |
432 | }; | 421 | }; |
@@ -452,7 +441,7 @@ static ssize_t spufs_mbox_stat_read(struct file *file, char __user *buf, | |||
452 | return 4; | 441 | return 4; |
453 | } | 442 | } |
454 | 443 | ||
455 | static struct file_operations spufs_mbox_stat_fops = { | 444 | static const struct file_operations spufs_mbox_stat_fops = { |
456 | .open = spufs_pipe_open, | 445 | .open = spufs_pipe_open, |
457 | .read = spufs_mbox_stat_read, | 446 | .read = spufs_mbox_stat_read, |
458 | }; | 447 | }; |
@@ -559,7 +548,7 @@ static unsigned int spufs_ibox_poll(struct file *file, poll_table *wait) | |||
559 | return mask; | 548 | return mask; |
560 | } | 549 | } |
561 | 550 | ||
562 | static struct file_operations spufs_ibox_fops = { | 551 | static const struct file_operations spufs_ibox_fops = { |
563 | .open = spufs_pipe_open, | 552 | .open = spufs_pipe_open, |
564 | .read = spufs_ibox_read, | 553 | .read = spufs_ibox_read, |
565 | .poll = spufs_ibox_poll, | 554 | .poll = spufs_ibox_poll, |
@@ -585,7 +574,7 @@ static ssize_t spufs_ibox_stat_read(struct file *file, char __user *buf, | |||
585 | return 4; | 574 | return 4; |
586 | } | 575 | } |
587 | 576 | ||
588 | static struct file_operations spufs_ibox_stat_fops = { | 577 | static const struct file_operations spufs_ibox_stat_fops = { |
589 | .open = spufs_pipe_open, | 578 | .open = spufs_pipe_open, |
590 | .read = spufs_ibox_stat_read, | 579 | .read = spufs_ibox_stat_read, |
591 | }; | 580 | }; |
@@ -692,7 +681,7 @@ static unsigned int spufs_wbox_poll(struct file *file, poll_table *wait) | |||
692 | return mask; | 681 | return mask; |
693 | } | 682 | } |
694 | 683 | ||
695 | static struct file_operations spufs_wbox_fops = { | 684 | static const struct file_operations spufs_wbox_fops = { |
696 | .open = spufs_pipe_open, | 685 | .open = spufs_pipe_open, |
697 | .write = spufs_wbox_write, | 686 | .write = spufs_wbox_write, |
698 | .poll = spufs_wbox_poll, | 687 | .poll = spufs_wbox_poll, |
@@ -718,7 +707,7 @@ static ssize_t spufs_wbox_stat_read(struct file *file, char __user *buf, | |||
718 | return 4; | 707 | return 4; |
719 | } | 708 | } |
720 | 709 | ||
721 | static struct file_operations spufs_wbox_stat_fops = { | 710 | static const struct file_operations spufs_wbox_stat_fops = { |
722 | .open = spufs_pipe_open, | 711 | .open = spufs_pipe_open, |
723 | .read = spufs_wbox_stat_read, | 712 | .read = spufs_wbox_stat_read, |
724 | }; | 713 | }; |
@@ -728,8 +717,8 @@ static int spufs_signal1_open(struct inode *inode, struct file *file) | |||
728 | struct spufs_inode_info *i = SPUFS_I(inode); | 717 | struct spufs_inode_info *i = SPUFS_I(inode); |
729 | struct spu_context *ctx = i->i_ctx; | 718 | struct spu_context *ctx = i->i_ctx; |
730 | file->private_data = ctx; | 719 | file->private_data = ctx; |
731 | file->f_mapping = inode->i_mapping; | ||
732 | ctx->signal1 = inode->i_mapping; | 720 | ctx->signal1 = inode->i_mapping; |
721 | smp_wmb(); | ||
733 | return nonseekable_open(inode, file); | 722 | return nonseekable_open(inode, file); |
734 | } | 723 | } |
735 | 724 | ||
@@ -791,23 +780,23 @@ static ssize_t spufs_signal1_write(struct file *file, const char __user *buf, | |||
791 | return 4; | 780 | return 4; |
792 | } | 781 | } |
793 | 782 | ||
794 | static struct page *spufs_signal1_mmap_nopage(struct vm_area_struct *vma, | 783 | static unsigned long spufs_signal1_mmap_nopfn(struct vm_area_struct *vma, |
795 | unsigned long address, int *type) | 784 | unsigned long address) |
796 | { | 785 | { |
797 | #if PAGE_SIZE == 0x1000 | 786 | #if PAGE_SIZE == 0x1000 |
798 | return spufs_ps_nopage(vma, address, type, 0x14000, 0x1000); | 787 | return spufs_ps_nopfn(vma, address, 0x14000, 0x1000); |
799 | #elif PAGE_SIZE == 0x10000 | 788 | #elif PAGE_SIZE == 0x10000 |
800 | /* For 64k pages, both signal1 and signal2 can be used to mmap the whole | 789 | /* For 64k pages, both signal1 and signal2 can be used to mmap the whole |
801 | * signal 1 and 2 area | 790 | * signal 1 and 2 area |
802 | */ | 791 | */ |
803 | return spufs_ps_nopage(vma, address, type, 0x10000, 0x10000); | 792 | return spufs_ps_nopfn(vma, address, 0x10000, 0x10000); |
804 | #else | 793 | #else |
805 | #error unsupported page size | 794 | #error unsupported page size |
806 | #endif | 795 | #endif |
807 | } | 796 | } |
808 | 797 | ||
809 | static struct vm_operations_struct spufs_signal1_mmap_vmops = { | 798 | static struct vm_operations_struct spufs_signal1_mmap_vmops = { |
810 | .nopage = spufs_signal1_mmap_nopage, | 799 | .nopfn = spufs_signal1_mmap_nopfn, |
811 | }; | 800 | }; |
812 | 801 | ||
813 | static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma) | 802 | static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma) |
@@ -815,7 +804,7 @@ static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma) | |||
815 | if (!(vma->vm_flags & VM_SHARED)) | 804 | if (!(vma->vm_flags & VM_SHARED)) |
816 | return -EINVAL; | 805 | return -EINVAL; |
817 | 806 | ||
818 | vma->vm_flags |= VM_IO; | 807 | vma->vm_flags |= VM_IO | VM_PFNMAP; |
819 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | 808 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) |
820 | | _PAGE_NO_CACHE | _PAGE_GUARDED); | 809 | | _PAGE_NO_CACHE | _PAGE_GUARDED); |
821 | 810 | ||
@@ -823,7 +812,7 @@ static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma) | |||
823 | return 0; | 812 | return 0; |
824 | } | 813 | } |
825 | 814 | ||
826 | static struct file_operations spufs_signal1_fops = { | 815 | static const struct file_operations spufs_signal1_fops = { |
827 | .open = spufs_signal1_open, | 816 | .open = spufs_signal1_open, |
828 | .read = spufs_signal1_read, | 817 | .read = spufs_signal1_read, |
829 | .write = spufs_signal1_write, | 818 | .write = spufs_signal1_write, |
@@ -835,8 +824,8 @@ static int spufs_signal2_open(struct inode *inode, struct file *file) | |||
835 | struct spufs_inode_info *i = SPUFS_I(inode); | 824 | struct spufs_inode_info *i = SPUFS_I(inode); |
836 | struct spu_context *ctx = i->i_ctx; | 825 | struct spu_context *ctx = i->i_ctx; |
837 | file->private_data = ctx; | 826 | file->private_data = ctx; |
838 | file->f_mapping = inode->i_mapping; | ||
839 | ctx->signal2 = inode->i_mapping; | 827 | ctx->signal2 = inode->i_mapping; |
828 | smp_wmb(); | ||
840 | return nonseekable_open(inode, file); | 829 | return nonseekable_open(inode, file); |
841 | } | 830 | } |
842 | 831 | ||
@@ -899,23 +888,23 @@ static ssize_t spufs_signal2_write(struct file *file, const char __user *buf, | |||
899 | } | 888 | } |
900 | 889 | ||
901 | #if SPUFS_MMAP_4K | 890 | #if SPUFS_MMAP_4K |
902 | static struct page *spufs_signal2_mmap_nopage(struct vm_area_struct *vma, | 891 | static unsigned long spufs_signal2_mmap_nopfn(struct vm_area_struct *vma, |
903 | unsigned long address, int *type) | 892 | unsigned long address) |
904 | { | 893 | { |
905 | #if PAGE_SIZE == 0x1000 | 894 | #if PAGE_SIZE == 0x1000 |
906 | return spufs_ps_nopage(vma, address, type, 0x1c000, 0x1000); | 895 | return spufs_ps_nopfn(vma, address, 0x1c000, 0x1000); |
907 | #elif PAGE_SIZE == 0x10000 | 896 | #elif PAGE_SIZE == 0x10000 |
908 | /* For 64k pages, both signal1 and signal2 can be used to mmap the whole | 897 | /* For 64k pages, both signal1 and signal2 can be used to mmap the whole |
909 | * signal 1 and 2 area | 898 | * signal 1 and 2 area |
910 | */ | 899 | */ |
911 | return spufs_ps_nopage(vma, address, type, 0x10000, 0x10000); | 900 | return spufs_ps_nopfn(vma, address, 0x10000, 0x10000); |
912 | #else | 901 | #else |
913 | #error unsupported page size | 902 | #error unsupported page size |
914 | #endif | 903 | #endif |
915 | } | 904 | } |
916 | 905 | ||
917 | static struct vm_operations_struct spufs_signal2_mmap_vmops = { | 906 | static struct vm_operations_struct spufs_signal2_mmap_vmops = { |
918 | .nopage = spufs_signal2_mmap_nopage, | 907 | .nopfn = spufs_signal2_mmap_nopfn, |
919 | }; | 908 | }; |
920 | 909 | ||
921 | static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma) | 910 | static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma) |
@@ -923,7 +912,7 @@ static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma) | |||
923 | if (!(vma->vm_flags & VM_SHARED)) | 912 | if (!(vma->vm_flags & VM_SHARED)) |
924 | return -EINVAL; | 913 | return -EINVAL; |
925 | 914 | ||
926 | vma->vm_flags |= VM_IO; | 915 | vma->vm_flags |= VM_IO | VM_PFNMAP; |
927 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | 916 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) |
928 | | _PAGE_NO_CACHE | _PAGE_GUARDED); | 917 | | _PAGE_NO_CACHE | _PAGE_GUARDED); |
929 | 918 | ||
@@ -934,7 +923,7 @@ static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma) | |||
934 | #define spufs_signal2_mmap NULL | 923 | #define spufs_signal2_mmap NULL |
935 | #endif /* !SPUFS_MMAP_4K */ | 924 | #endif /* !SPUFS_MMAP_4K */ |
936 | 925 | ||
937 | static struct file_operations spufs_signal2_fops = { | 926 | static const struct file_operations spufs_signal2_fops = { |
938 | .open = spufs_signal2_open, | 927 | .open = spufs_signal2_open, |
939 | .read = spufs_signal2_read, | 928 | .read = spufs_signal2_read, |
940 | .write = spufs_signal2_write, | 929 | .write = spufs_signal2_write, |
@@ -1000,14 +989,14 @@ DEFINE_SIMPLE_ATTRIBUTE(spufs_signal2_type, spufs_signal2_type_get, | |||
1000 | spufs_signal2_type_set, "%llu"); | 989 | spufs_signal2_type_set, "%llu"); |
1001 | 990 | ||
1002 | #if SPUFS_MMAP_4K | 991 | #if SPUFS_MMAP_4K |
1003 | static struct page *spufs_mss_mmap_nopage(struct vm_area_struct *vma, | 992 | static unsigned long spufs_mss_mmap_nopfn(struct vm_area_struct *vma, |
1004 | unsigned long address, int *type) | 993 | unsigned long address) |
1005 | { | 994 | { |
1006 | return spufs_ps_nopage(vma, address, type, 0x0000, 0x1000); | 995 | return spufs_ps_nopfn(vma, address, 0x0000, 0x1000); |
1007 | } | 996 | } |
1008 | 997 | ||
1009 | static struct vm_operations_struct spufs_mss_mmap_vmops = { | 998 | static struct vm_operations_struct spufs_mss_mmap_vmops = { |
1010 | .nopage = spufs_mss_mmap_nopage, | 999 | .nopfn = spufs_mss_mmap_nopfn, |
1011 | }; | 1000 | }; |
1012 | 1001 | ||
1013 | /* | 1002 | /* |
@@ -1018,7 +1007,7 @@ static int spufs_mss_mmap(struct file *file, struct vm_area_struct *vma) | |||
1018 | if (!(vma->vm_flags & VM_SHARED)) | 1007 | if (!(vma->vm_flags & VM_SHARED)) |
1019 | return -EINVAL; | 1008 | return -EINVAL; |
1020 | 1009 | ||
1021 | vma->vm_flags |= VM_IO; | 1010 | vma->vm_flags |= VM_IO | VM_PFNMAP; |
1022 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | 1011 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) |
1023 | | _PAGE_NO_CACHE | _PAGE_GUARDED); | 1012 | | _PAGE_NO_CACHE | _PAGE_GUARDED); |
1024 | 1013 | ||
@@ -1032,24 +1021,27 @@ static int spufs_mss_mmap(struct file *file, struct vm_area_struct *vma) | |||
1032 | static int spufs_mss_open(struct inode *inode, struct file *file) | 1021 | static int spufs_mss_open(struct inode *inode, struct file *file) |
1033 | { | 1022 | { |
1034 | struct spufs_inode_info *i = SPUFS_I(inode); | 1023 | struct spufs_inode_info *i = SPUFS_I(inode); |
1024 | struct spu_context *ctx = i->i_ctx; | ||
1035 | 1025 | ||
1036 | file->private_data = i->i_ctx; | 1026 | file->private_data = i->i_ctx; |
1027 | ctx->mss = inode->i_mapping; | ||
1028 | smp_wmb(); | ||
1037 | return nonseekable_open(inode, file); | 1029 | return nonseekable_open(inode, file); |
1038 | } | 1030 | } |
1039 | 1031 | ||
1040 | static struct file_operations spufs_mss_fops = { | 1032 | static const struct file_operations spufs_mss_fops = { |
1041 | .open = spufs_mss_open, | 1033 | .open = spufs_mss_open, |
1042 | .mmap = spufs_mss_mmap, | 1034 | .mmap = spufs_mss_mmap, |
1043 | }; | 1035 | }; |
1044 | 1036 | ||
1045 | static struct page *spufs_psmap_mmap_nopage(struct vm_area_struct *vma, | 1037 | static unsigned long spufs_psmap_mmap_nopfn(struct vm_area_struct *vma, |
1046 | unsigned long address, int *type) | 1038 | unsigned long address) |
1047 | { | 1039 | { |
1048 | return spufs_ps_nopage(vma, address, type, 0x0000, 0x20000); | 1040 | return spufs_ps_nopfn(vma, address, 0x0000, 0x20000); |
1049 | } | 1041 | } |
1050 | 1042 | ||
1051 | static struct vm_operations_struct spufs_psmap_mmap_vmops = { | 1043 | static struct vm_operations_struct spufs_psmap_mmap_vmops = { |
1052 | .nopage = spufs_psmap_mmap_nopage, | 1044 | .nopfn = spufs_psmap_mmap_nopfn, |
1053 | }; | 1045 | }; |
1054 | 1046 | ||
1055 | /* | 1047 | /* |
@@ -1060,7 +1052,7 @@ static int spufs_psmap_mmap(struct file *file, struct vm_area_struct *vma) | |||
1060 | if (!(vma->vm_flags & VM_SHARED)) | 1052 | if (!(vma->vm_flags & VM_SHARED)) |
1061 | return -EINVAL; | 1053 | return -EINVAL; |
1062 | 1054 | ||
1063 | vma->vm_flags |= VM_IO; | 1055 | vma->vm_flags |= VM_IO | VM_PFNMAP; |
1064 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | 1056 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) |
1065 | | _PAGE_NO_CACHE | _PAGE_GUARDED); | 1057 | | _PAGE_NO_CACHE | _PAGE_GUARDED); |
1066 | 1058 | ||
@@ -1071,26 +1063,29 @@ static int spufs_psmap_mmap(struct file *file, struct vm_area_struct *vma) | |||
1071 | static int spufs_psmap_open(struct inode *inode, struct file *file) | 1063 | static int spufs_psmap_open(struct inode *inode, struct file *file) |
1072 | { | 1064 | { |
1073 | struct spufs_inode_info *i = SPUFS_I(inode); | 1065 | struct spufs_inode_info *i = SPUFS_I(inode); |
1066 | struct spu_context *ctx = i->i_ctx; | ||
1074 | 1067 | ||
1075 | file->private_data = i->i_ctx; | 1068 | file->private_data = i->i_ctx; |
1069 | ctx->psmap = inode->i_mapping; | ||
1070 | smp_wmb(); | ||
1076 | return nonseekable_open(inode, file); | 1071 | return nonseekable_open(inode, file); |
1077 | } | 1072 | } |
1078 | 1073 | ||
1079 | static struct file_operations spufs_psmap_fops = { | 1074 | static const struct file_operations spufs_psmap_fops = { |
1080 | .open = spufs_psmap_open, | 1075 | .open = spufs_psmap_open, |
1081 | .mmap = spufs_psmap_mmap, | 1076 | .mmap = spufs_psmap_mmap, |
1082 | }; | 1077 | }; |
1083 | 1078 | ||
1084 | 1079 | ||
1085 | #if SPUFS_MMAP_4K | 1080 | #if SPUFS_MMAP_4K |
1086 | static struct page *spufs_mfc_mmap_nopage(struct vm_area_struct *vma, | 1081 | static unsigned long spufs_mfc_mmap_nopfn(struct vm_area_struct *vma, |
1087 | unsigned long address, int *type) | 1082 | unsigned long address) |
1088 | { | 1083 | { |
1089 | return spufs_ps_nopage(vma, address, type, 0x3000, 0x1000); | 1084 | return spufs_ps_nopfn(vma, address, 0x3000, 0x1000); |
1090 | } | 1085 | } |
1091 | 1086 | ||
1092 | static struct vm_operations_struct spufs_mfc_mmap_vmops = { | 1087 | static struct vm_operations_struct spufs_mfc_mmap_vmops = { |
1093 | .nopage = spufs_mfc_mmap_nopage, | 1088 | .nopfn = spufs_mfc_mmap_nopfn, |
1094 | }; | 1089 | }; |
1095 | 1090 | ||
1096 | /* | 1091 | /* |
@@ -1101,7 +1096,7 @@ static int spufs_mfc_mmap(struct file *file, struct vm_area_struct *vma) | |||
1101 | if (!(vma->vm_flags & VM_SHARED)) | 1096 | if (!(vma->vm_flags & VM_SHARED)) |
1102 | return -EINVAL; | 1097 | return -EINVAL; |
1103 | 1098 | ||
1104 | vma->vm_flags |= VM_IO; | 1099 | vma->vm_flags |= VM_IO | VM_PFNMAP; |
1105 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | 1100 | vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) |
1106 | | _PAGE_NO_CACHE | _PAGE_GUARDED); | 1101 | | _PAGE_NO_CACHE | _PAGE_GUARDED); |
1107 | 1102 | ||
@@ -1125,6 +1120,8 @@ static int spufs_mfc_open(struct inode *inode, struct file *file) | |||
1125 | return -EBUSY; | 1120 | return -EBUSY; |
1126 | 1121 | ||
1127 | file->private_data = ctx; | 1122 | file->private_data = ctx; |
1123 | ctx->mfc = inode->i_mapping; | ||
1124 | smp_wmb(); | ||
1128 | return nonseekable_open(inode, file); | 1125 | return nonseekable_open(inode, file); |
1129 | } | 1126 | } |
1130 | 1127 | ||
@@ -1393,7 +1390,7 @@ static int spufs_mfc_fasync(int fd, struct file *file, int on) | |||
1393 | return fasync_helper(fd, file, on, &ctx->mfc_fasync); | 1390 | return fasync_helper(fd, file, on, &ctx->mfc_fasync); |
1394 | } | 1391 | } |
1395 | 1392 | ||
1396 | static struct file_operations spufs_mfc_fops = { | 1393 | static const struct file_operations spufs_mfc_fops = { |
1397 | .open = spufs_mfc_open, | 1394 | .open = spufs_mfc_open, |
1398 | .read = spufs_mfc_read, | 1395 | .read = spufs_mfc_read, |
1399 | .write = spufs_mfc_write, | 1396 | .write = spufs_mfc_write, |
@@ -1650,7 +1647,7 @@ static ssize_t spufs_mbox_info_read(struct file *file, char __user *buf, | |||
1650 | return ret; | 1647 | return ret; |
1651 | } | 1648 | } |
1652 | 1649 | ||
1653 | static struct file_operations spufs_mbox_info_fops = { | 1650 | static const struct file_operations spufs_mbox_info_fops = { |
1654 | .open = spufs_info_open, | 1651 | .open = spufs_info_open, |
1655 | .read = spufs_mbox_info_read, | 1652 | .read = spufs_mbox_info_read, |
1656 | .llseek = generic_file_llseek, | 1653 | .llseek = generic_file_llseek, |
@@ -1688,7 +1685,7 @@ static ssize_t spufs_ibox_info_read(struct file *file, char __user *buf, | |||
1688 | return ret; | 1685 | return ret; |
1689 | } | 1686 | } |
1690 | 1687 | ||
1691 | static struct file_operations spufs_ibox_info_fops = { | 1688 | static const struct file_operations spufs_ibox_info_fops = { |
1692 | .open = spufs_info_open, | 1689 | .open = spufs_info_open, |
1693 | .read = spufs_ibox_info_read, | 1690 | .read = spufs_ibox_info_read, |
1694 | .llseek = generic_file_llseek, | 1691 | .llseek = generic_file_llseek, |
@@ -1729,7 +1726,7 @@ static ssize_t spufs_wbox_info_read(struct file *file, char __user *buf, | |||
1729 | return ret; | 1726 | return ret; |
1730 | } | 1727 | } |
1731 | 1728 | ||
1732 | static struct file_operations spufs_wbox_info_fops = { | 1729 | static const struct file_operations spufs_wbox_info_fops = { |
1733 | .open = spufs_info_open, | 1730 | .open = spufs_info_open, |
1734 | .read = spufs_wbox_info_read, | 1731 | .read = spufs_wbox_info_read, |
1735 | .llseek = generic_file_llseek, | 1732 | .llseek = generic_file_llseek, |
@@ -1779,7 +1776,7 @@ static ssize_t spufs_dma_info_read(struct file *file, char __user *buf, | |||
1779 | return ret; | 1776 | return ret; |
1780 | } | 1777 | } |
1781 | 1778 | ||
1782 | static struct file_operations spufs_dma_info_fops = { | 1779 | static const struct file_operations spufs_dma_info_fops = { |
1783 | .open = spufs_info_open, | 1780 | .open = spufs_info_open, |
1784 | .read = spufs_dma_info_read, | 1781 | .read = spufs_dma_info_read, |
1785 | }; | 1782 | }; |
@@ -1830,7 +1827,7 @@ static ssize_t spufs_proxydma_info_read(struct file *file, char __user *buf, | |||
1830 | return ret; | 1827 | return ret; |
1831 | } | 1828 | } |
1832 | 1829 | ||
1833 | static struct file_operations spufs_proxydma_info_fops = { | 1830 | static const struct file_operations spufs_proxydma_info_fops = { |
1834 | .open = spufs_info_open, | 1831 | .open = spufs_info_open, |
1835 | .read = spufs_proxydma_info_read, | 1832 | .read = spufs_proxydma_info_read, |
1836 | }; | 1833 | }; |
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index 738b9244382f..8079983ef94f 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -220,11 +220,11 @@ static int spufs_dir_close(struct inode *inode, struct file *file) | |||
220 | return dcache_dir_close(inode, file); | 220 | return dcache_dir_close(inode, file); |
221 | } | 221 | } |
222 | 222 | ||
223 | struct inode_operations spufs_dir_inode_operations = { | 223 | const struct inode_operations spufs_dir_inode_operations = { |
224 | .lookup = simple_lookup, | 224 | .lookup = simple_lookup, |
225 | }; | 225 | }; |
226 | 226 | ||
227 | struct file_operations spufs_context_fops = { | 227 | const struct file_operations spufs_context_fops = { |
228 | .open = dcache_dir_open, | 228 | .open = dcache_dir_open, |
229 | .release = spufs_dir_close, | 229 | .release = spufs_dir_close, |
230 | .llseek = dcache_dir_lseek, | 230 | .llseek = dcache_dir_lseek, |
@@ -372,7 +372,7 @@ static int spufs_gang_close(struct inode *inode, struct file *file) | |||
372 | return dcache_dir_close(inode, file); | 372 | return dcache_dir_close(inode, file); |
373 | } | 373 | } |
374 | 374 | ||
375 | struct file_operations spufs_gang_fops = { | 375 | const struct file_operations spufs_gang_fops = { |
376 | .open = dcache_dir_open, | 376 | .open = dcache_dir_open, |
377 | .release = spufs_gang_close, | 377 | .release = spufs_gang_close, |
378 | .llseek = dcache_dir_lseek, | 378 | .llseek = dcache_dir_lseek, |
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h index 70fb13395c04..0941c56df9b5 100644 --- a/arch/powerpc/platforms/cell/spufs/spufs.h +++ b/arch/powerpc/platforms/cell/spufs/spufs.h | |||
@@ -51,6 +51,8 @@ struct spu_context { | |||
51 | struct address_space *cntl; /* 'control' area mappings. */ | 51 | struct address_space *cntl; /* 'control' area mappings. */ |
52 | struct address_space *signal1; /* 'signal1' area mappings. */ | 52 | struct address_space *signal1; /* 'signal1' area mappings. */ |
53 | struct address_space *signal2; /* 'signal2' area mappings. */ | 53 | struct address_space *signal2; /* 'signal2' area mappings. */ |
54 | struct address_space *mss; /* 'mss' area mappings. */ | ||
55 | struct address_space *psmap; /* 'psmap' area mappings. */ | ||
54 | u64 object_id; /* user space pointer for oprofile */ | 56 | u64 object_id; /* user space pointer for oprofile */ |
55 | 57 | ||
56 | enum { SPU_STATE_RUNNABLE, SPU_STATE_SAVED } state; | 58 | enum { SPU_STATE_RUNNABLE, SPU_STATE_SAVED } state; |
@@ -149,7 +151,7 @@ long spufs_run_spu(struct file *file, | |||
149 | struct spu_context *ctx, u32 *npc, u32 *status); | 151 | struct spu_context *ctx, u32 *npc, u32 *status); |
150 | long spufs_create(struct nameidata *nd, | 152 | long spufs_create(struct nameidata *nd, |
151 | unsigned int flags, mode_t mode); | 153 | unsigned int flags, mode_t mode); |
152 | extern struct file_operations spufs_context_fops; | 154 | extern const struct file_operations spufs_context_fops; |
153 | 155 | ||
154 | /* gang management */ | 156 | /* gang management */ |
155 | struct spu_gang *alloc_spu_gang(void); | 157 | struct spu_gang *alloc_spu_gang(void); |
diff --git a/arch/powerpc/platforms/celleb/htab.c b/arch/powerpc/platforms/celleb/htab.c index ffa7c2c2030d..279d7339e170 100644 --- a/arch/powerpc/platforms/celleb/htab.c +++ b/arch/powerpc/platforms/celleb/htab.c | |||
@@ -95,7 +95,6 @@ static long beat_lpar_hpte_insert(unsigned long hpte_group, | |||
95 | unsigned long lpar_rc; | 95 | unsigned long lpar_rc; |
96 | unsigned long slot; | 96 | unsigned long slot; |
97 | unsigned long hpte_v, hpte_r; | 97 | unsigned long hpte_v, hpte_r; |
98 | unsigned long flags; | ||
99 | 98 | ||
100 | /* same as iseries */ | 99 | /* same as iseries */ |
101 | if (vflags & HPTE_V_SECONDARY) | 100 | if (vflags & HPTE_V_SECONDARY) |
@@ -115,17 +114,17 @@ static long beat_lpar_hpte_insert(unsigned long hpte_group, | |||
115 | if (rflags & (_PAGE_GUARDED|_PAGE_NO_CACHE)) | 114 | if (rflags & (_PAGE_GUARDED|_PAGE_NO_CACHE)) |
116 | hpte_r &= ~_PAGE_COHERENT; | 115 | hpte_r &= ~_PAGE_COHERENT; |
117 | 116 | ||
118 | spin_lock_irqsave(&beat_htab_lock, flags); | 117 | spin_lock(&beat_htab_lock); |
119 | if ((lpar_rc = beat_read_mask(hpte_group)) == 0) { | 118 | if ((lpar_rc = beat_read_mask(hpte_group)) == 0) { |
120 | if (!(vflags & HPTE_V_BOLTED)) | 119 | if (!(vflags & HPTE_V_BOLTED)) |
121 | DBG_LOW(" full\n"); | 120 | DBG_LOW(" full\n"); |
122 | spin_unlock_irqrestore(&beat_htab_lock, flags); | 121 | spin_unlock(&beat_htab_lock); |
123 | return -1; | 122 | return -1; |
124 | } | 123 | } |
125 | 124 | ||
126 | lpar_rc = beat_insert_htab_entry(0, hpte_group, lpar_rc << 48, | 125 | lpar_rc = beat_insert_htab_entry(0, hpte_group, lpar_rc << 48, |
127 | hpte_v, hpte_r, &slot); | 126 | hpte_v, hpte_r, &slot); |
128 | spin_unlock_irqrestore(&beat_htab_lock, flags); | 127 | spin_unlock(&beat_htab_lock); |
129 | 128 | ||
130 | /* | 129 | /* |
131 | * Since we try and ioremap PHBs we don't own, the pte insert | 130 | * Since we try and ioremap PHBs we don't own, the pte insert |
@@ -189,7 +188,6 @@ static long beat_lpar_hpte_updatepp(unsigned long slot, | |||
189 | { | 188 | { |
190 | unsigned long lpar_rc; | 189 | unsigned long lpar_rc; |
191 | unsigned long dummy0, dummy1, want_v; | 190 | unsigned long dummy0, dummy1, want_v; |
192 | unsigned long flags; | ||
193 | 191 | ||
194 | want_v = hpte_encode_v(va, psize); | 192 | want_v = hpte_encode_v(va, psize); |
195 | 193 | ||
@@ -197,17 +195,17 @@ static long beat_lpar_hpte_updatepp(unsigned long slot, | |||
197 | "avpnv=%016lx, slot=%016lx, psize: %d, newpp %016lx ... ", | 195 | "avpnv=%016lx, slot=%016lx, psize: %d, newpp %016lx ... ", |
198 | want_v & HPTE_V_AVPN, slot, psize, newpp); | 196 | want_v & HPTE_V_AVPN, slot, psize, newpp); |
199 | 197 | ||
200 | spin_lock_irqsave(&beat_htab_lock, flags); | 198 | spin_lock(&beat_htab_lock); |
201 | dummy0 = beat_lpar_hpte_getword0(slot); | 199 | dummy0 = beat_lpar_hpte_getword0(slot); |
202 | if ((dummy0 & ~0x7FUL) != (want_v & ~0x7FUL)) { | 200 | if ((dummy0 & ~0x7FUL) != (want_v & ~0x7FUL)) { |
203 | DBG_LOW("not found !\n"); | 201 | DBG_LOW("not found !\n"); |
204 | spin_unlock_irqrestore(&beat_htab_lock, flags); | 202 | spin_unlock(&beat_htab_lock); |
205 | return -1; | 203 | return -1; |
206 | } | 204 | } |
207 | 205 | ||
208 | lpar_rc = beat_write_htab_entry(0, slot, 0, newpp, 0, 7, &dummy0, | 206 | lpar_rc = beat_write_htab_entry(0, slot, 0, newpp, 0, 7, &dummy0, |
209 | &dummy1); | 207 | &dummy1); |
210 | spin_unlock_irqrestore(&beat_htab_lock, flags); | 208 | spin_unlock(&beat_htab_lock); |
211 | if (lpar_rc != 0 || dummy0 == 0) { | 209 | if (lpar_rc != 0 || dummy0 == 0) { |
212 | DBG_LOW("not found !\n"); | 210 | DBG_LOW("not found !\n"); |
213 | return -1; | 211 | return -1; |
@@ -256,18 +254,17 @@ static void beat_lpar_hpte_updateboltedpp(unsigned long newpp, | |||
256 | int psize) | 254 | int psize) |
257 | { | 255 | { |
258 | unsigned long lpar_rc, slot, vsid, va, dummy0, dummy1; | 256 | unsigned long lpar_rc, slot, vsid, va, dummy0, dummy1; |
259 | unsigned long flags; | ||
260 | 257 | ||
261 | vsid = get_kernel_vsid(ea); | 258 | vsid = get_kernel_vsid(ea); |
262 | va = (vsid << 28) | (ea & 0x0fffffff); | 259 | va = (vsid << 28) | (ea & 0x0fffffff); |
263 | 260 | ||
264 | spin_lock_irqsave(&beat_htab_lock, flags); | 261 | spin_lock(&beat_htab_lock); |
265 | slot = beat_lpar_hpte_find(va, psize); | 262 | slot = beat_lpar_hpte_find(va, psize); |
266 | BUG_ON(slot == -1); | 263 | BUG_ON(slot == -1); |
267 | 264 | ||
268 | lpar_rc = beat_write_htab_entry(0, slot, 0, newpp, 0, 7, | 265 | lpar_rc = beat_write_htab_entry(0, slot, 0, newpp, 0, 7, |
269 | &dummy0, &dummy1); | 266 | &dummy0, &dummy1); |
270 | spin_unlock_irqrestore(&beat_htab_lock, flags); | 267 | spin_unlock(&beat_htab_lock); |
271 | 268 | ||
272 | BUG_ON(lpar_rc != 0); | 269 | BUG_ON(lpar_rc != 0); |
273 | } | 270 | } |
diff --git a/arch/powerpc/platforms/celleb/pci.c b/arch/powerpc/platforms/celleb/pci.c index 867f83a7d0c9..98de836dfed3 100644 --- a/arch/powerpc/platforms/celleb/pci.c +++ b/arch/powerpc/platforms/celleb/pci.c | |||
@@ -65,13 +65,13 @@ static inline u8 celleb_fake_config_readb(void *addr) | |||
65 | 65 | ||
66 | static inline u16 celleb_fake_config_readw(void *addr) | 66 | static inline u16 celleb_fake_config_readw(void *addr) |
67 | { | 67 | { |
68 | u16 *p = addr; | 68 | __le16 *p = addr; |
69 | return le16_to_cpu(*p); | 69 | return le16_to_cpu(*p); |
70 | } | 70 | } |
71 | 71 | ||
72 | static inline u32 celleb_fake_config_readl(void *addr) | 72 | static inline u32 celleb_fake_config_readl(void *addr) |
73 | { | 73 | { |
74 | u32 *p = addr; | 74 | __le32 *p = addr; |
75 | return le32_to_cpu(*p); | 75 | return le32_to_cpu(*p); |
76 | } | 76 | } |
77 | 77 | ||
@@ -83,16 +83,16 @@ static inline void celleb_fake_config_writeb(u32 val, void *addr) | |||
83 | 83 | ||
84 | static inline void celleb_fake_config_writew(u32 val, void *addr) | 84 | static inline void celleb_fake_config_writew(u32 val, void *addr) |
85 | { | 85 | { |
86 | u16 val16; | 86 | __le16 val16; |
87 | u16 *p = addr; | 87 | __le16 *p = addr; |
88 | val16 = cpu_to_le16(val); | 88 | val16 = cpu_to_le16(val); |
89 | *p = val16; | 89 | *p = val16; |
90 | } | 90 | } |
91 | 91 | ||
92 | static inline void celleb_fake_config_writel(u32 val, void *addr) | 92 | static inline void celleb_fake_config_writel(u32 val, void *addr) |
93 | { | 93 | { |
94 | u32 val32; | 94 | __le32 val32; |
95 | u32 *p = addr; | 95 | __le32 *p = addr; |
96 | val32 = cpu_to_le32(val); | 96 | val32 = cpu_to_le32(val); |
97 | *p = val32; | 97 | *p = val32; |
98 | } | 98 | } |
diff --git a/arch/powerpc/platforms/celleb/scc_epci.c b/arch/powerpc/platforms/celleb/scc_epci.c index 0edbc0c4f338..c11b39c3776a 100644 --- a/arch/powerpc/platforms/celleb/scc_epci.c +++ b/arch/powerpc/platforms/celleb/scc_epci.c | |||
@@ -47,7 +47,7 @@ | |||
47 | #if 0 /* test code for epci dummy read */ | 47 | #if 0 /* test code for epci dummy read */ |
48 | static void celleb_epci_dummy_read(struct pci_dev *dev) | 48 | static void celleb_epci_dummy_read(struct pci_dev *dev) |
49 | { | 49 | { |
50 | void *epci_base; | 50 | void __iomem *epci_base; |
51 | struct device_node *node; | 51 | struct device_node *node; |
52 | struct pci_controller *hose; | 52 | struct pci_controller *hose; |
53 | u32 val; | 53 | u32 val; |
@@ -58,7 +58,7 @@ static void celleb_epci_dummy_read(struct pci_dev *dev) | |||
58 | if (!hose) | 58 | if (!hose) |
59 | return; | 59 | return; |
60 | 60 | ||
61 | epci_base = (void *)hose->cfg_addr; | 61 | epci_base = hose->cfg_addr; |
62 | 62 | ||
63 | val = in_be32(epci_base + SCC_EPCI_WATRP); | 63 | val = in_be32(epci_base + SCC_EPCI_WATRP); |
64 | iosync(); | 64 | iosync(); |
@@ -71,18 +71,18 @@ static inline void clear_and_disable_master_abort_interrupt( | |||
71 | struct pci_controller *hose) | 71 | struct pci_controller *hose) |
72 | { | 72 | { |
73 | void __iomem *addr; | 73 | void __iomem *addr; |
74 | addr = (void *)hose->cfg_addr + PCI_COMMAND; | 74 | addr = hose->cfg_addr + PCI_COMMAND; |
75 | out_be32(addr, in_be32(addr) | (PCI_STATUS_REC_MASTER_ABORT << 16)); | 75 | out_be32(addr, in_be32(addr) | (PCI_STATUS_REC_MASTER_ABORT << 16)); |
76 | } | 76 | } |
77 | 77 | ||
78 | static int celleb_epci_check_abort(struct pci_controller *hose, | 78 | static int celleb_epci_check_abort(struct pci_controller *hose, |
79 | unsigned long addr) | 79 | void __iomem *addr) |
80 | { | 80 | { |
81 | void __iomem *reg, *epci_base; | 81 | void __iomem *reg, *epci_base; |
82 | u32 val; | 82 | u32 val; |
83 | 83 | ||
84 | iob(); | 84 | iob(); |
85 | epci_base = (void *)hose->cfg_addr; | 85 | epci_base = hose->cfg_addr; |
86 | 86 | ||
87 | reg = epci_base + PCI_COMMAND; | 87 | reg = epci_base + PCI_COMMAND; |
88 | val = in_be32(reg); | 88 | val = in_be32(reg); |
@@ -108,23 +108,23 @@ static int celleb_epci_check_abort(struct pci_controller *hose, | |||
108 | return PCIBIOS_SUCCESSFUL; | 108 | return PCIBIOS_SUCCESSFUL; |
109 | } | 109 | } |
110 | 110 | ||
111 | static unsigned long celleb_epci_make_config_addr(struct pci_controller *hose, | 111 | static void __iomem *celleb_epci_make_config_addr(struct pci_controller *hose, |
112 | unsigned int devfn, int where) | 112 | unsigned int devfn, int where) |
113 | { | 113 | { |
114 | unsigned long addr; | 114 | void __iomem *addr; |
115 | struct pci_bus *bus = hose->bus; | 115 | struct pci_bus *bus = hose->bus; |
116 | 116 | ||
117 | if (bus->self) | 117 | if (bus->self) |
118 | addr = (unsigned long)hose->cfg_data + | 118 | addr = hose->cfg_data + |
119 | (((bus->number & 0xff) << 16) | 119 | (((bus->number & 0xff) << 16) |
120 | | ((devfn & 0xff) << 8) | 120 | | ((devfn & 0xff) << 8) |
121 | | (where & 0xff) | 121 | | (where & 0xff) |
122 | | 0x01000000); | 122 | | 0x01000000); |
123 | else | 123 | else |
124 | addr = (unsigned long)hose->cfg_data + | 124 | addr = hose->cfg_data + |
125 | (((devfn & 0xff) << 8) | (where & 0xff)); | 125 | (((devfn & 0xff) << 8) | (where & 0xff)); |
126 | 126 | ||
127 | pr_debug("EPCI: config_addr = 0x%016lx\n", addr); | 127 | pr_debug("EPCI: config_addr = 0x%p\n", addr); |
128 | 128 | ||
129 | return addr; | 129 | return addr; |
130 | } | 130 | } |
@@ -132,7 +132,7 @@ static unsigned long celleb_epci_make_config_addr(struct pci_controller *hose, | |||
132 | static int celleb_epci_read_config(struct pci_bus *bus, | 132 | static int celleb_epci_read_config(struct pci_bus *bus, |
133 | unsigned int devfn, int where, int size, u32 * val) | 133 | unsigned int devfn, int where, int size, u32 * val) |
134 | { | 134 | { |
135 | unsigned long addr; | 135 | void __iomem *addr; |
136 | struct device_node *node; | 136 | struct device_node *node; |
137 | struct pci_controller *hose; | 137 | struct pci_controller *hose; |
138 | 138 | ||
@@ -148,17 +148,17 @@ static int celleb_epci_read_config(struct pci_bus *bus, | |||
148 | if (bus->number == hose->first_busno && devfn == 0) { | 148 | if (bus->number == hose->first_busno && devfn == 0) { |
149 | /* EPCI controller self */ | 149 | /* EPCI controller self */ |
150 | 150 | ||
151 | addr = (unsigned long)hose->cfg_addr + where; | 151 | addr = hose->cfg_addr + where; |
152 | 152 | ||
153 | switch (size) { | 153 | switch (size) { |
154 | case 1: | 154 | case 1: |
155 | *val = in_8((u8 *)addr); | 155 | *val = in_8(addr); |
156 | break; | 156 | break; |
157 | case 2: | 157 | case 2: |
158 | *val = in_be16((u16 *)addr); | 158 | *val = in_be16(addr); |
159 | break; | 159 | break; |
160 | case 4: | 160 | case 4: |
161 | *val = in_be32((u32 *)addr); | 161 | *val = in_be32(addr); |
162 | break; | 162 | break; |
163 | default: | 163 | default: |
164 | return PCIBIOS_DEVICE_NOT_FOUND; | 164 | return PCIBIOS_DEVICE_NOT_FOUND; |
@@ -171,13 +171,13 @@ static int celleb_epci_read_config(struct pci_bus *bus, | |||
171 | 171 | ||
172 | switch (size) { | 172 | switch (size) { |
173 | case 1: | 173 | case 1: |
174 | *val = in_8((u8 *)addr); | 174 | *val = in_8(addr); |
175 | break; | 175 | break; |
176 | case 2: | 176 | case 2: |
177 | *val = in_le16((u16 *)addr); | 177 | *val = in_le16(addr); |
178 | break; | 178 | break; |
179 | case 4: | 179 | case 4: |
180 | *val = in_le32((u32 *)addr); | 180 | *val = in_le32(addr); |
181 | break; | 181 | break; |
182 | default: | 182 | default: |
183 | return PCIBIOS_DEVICE_NOT_FOUND; | 183 | return PCIBIOS_DEVICE_NOT_FOUND; |
@@ -188,13 +188,13 @@ static int celleb_epci_read_config(struct pci_bus *bus, | |||
188 | "addr=0x%lx, devfn=0x%x, where=0x%x, size=0x%x, val=0x%x\n", | 188 | "addr=0x%lx, devfn=0x%x, where=0x%x, size=0x%x, val=0x%x\n", |
189 | addr, devfn, where, size, *val); | 189 | addr, devfn, where, size, *val); |
190 | 190 | ||
191 | return celleb_epci_check_abort(hose, 0); | 191 | return celleb_epci_check_abort(hose, NULL); |
192 | } | 192 | } |
193 | 193 | ||
194 | static int celleb_epci_write_config(struct pci_bus *bus, | 194 | static int celleb_epci_write_config(struct pci_bus *bus, |
195 | unsigned int devfn, int where, int size, u32 val) | 195 | unsigned int devfn, int where, int size, u32 val) |
196 | { | 196 | { |
197 | unsigned long addr; | 197 | void __iomem *addr; |
198 | struct device_node *node; | 198 | struct device_node *node; |
199 | struct pci_controller *hose; | 199 | struct pci_controller *hose; |
200 | 200 | ||
@@ -210,17 +210,17 @@ static int celleb_epci_write_config(struct pci_bus *bus, | |||
210 | if (bus->number == hose->first_busno && devfn == 0) { | 210 | if (bus->number == hose->first_busno && devfn == 0) { |
211 | /* EPCI controller self */ | 211 | /* EPCI controller self */ |
212 | 212 | ||
213 | addr = (unsigned long)hose->cfg_addr + where; | 213 | addr = hose->cfg_addr + where; |
214 | 214 | ||
215 | switch (size) { | 215 | switch (size) { |
216 | case 1: | 216 | case 1: |
217 | out_8((u8 *)addr, val); | 217 | out_8(addr, val); |
218 | break; | 218 | break; |
219 | case 2: | 219 | case 2: |
220 | out_be16((u16 *)addr, val); | 220 | out_be16(addr, val); |
221 | break; | 221 | break; |
222 | case 4: | 222 | case 4: |
223 | out_be32((u32 *)addr, val); | 223 | out_be32(addr, val); |
224 | break; | 224 | break; |
225 | default: | 225 | default: |
226 | return PCIBIOS_DEVICE_NOT_FOUND; | 226 | return PCIBIOS_DEVICE_NOT_FOUND; |
@@ -233,13 +233,13 @@ static int celleb_epci_write_config(struct pci_bus *bus, | |||
233 | 233 | ||
234 | switch (size) { | 234 | switch (size) { |
235 | case 1: | 235 | case 1: |
236 | out_8((u8 *)addr, val); | 236 | out_8(addr, val); |
237 | break; | 237 | break; |
238 | case 2: | 238 | case 2: |
239 | out_le16((u16 *)addr, val); | 239 | out_le16(addr, val); |
240 | break; | 240 | break; |
241 | case 4: | 241 | case 4: |
242 | out_le32((u32 *)addr, val); | 242 | out_le32(addr, val); |
243 | break; | 243 | break; |
244 | default: | 244 | default: |
245 | return PCIBIOS_DEVICE_NOT_FOUND; | 245 | return PCIBIOS_DEVICE_NOT_FOUND; |
@@ -261,7 +261,7 @@ static int __devinit celleb_epci_init(struct pci_controller *hose) | |||
261 | void __iomem *reg, *epci_base; | 261 | void __iomem *reg, *epci_base; |
262 | int hwres = 0; | 262 | int hwres = 0; |
263 | 263 | ||
264 | epci_base = (void *)hose->cfg_addr; | 264 | epci_base = hose->cfg_addr; |
265 | 265 | ||
266 | /* PCI core reset(Internal bus and PCI clock) */ | 266 | /* PCI core reset(Internal bus and PCI clock) */ |
267 | reg = epci_base + SCC_EPCI_CKCTRL; | 267 | reg = epci_base + SCC_EPCI_CKCTRL; |
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c index e1f51d455984..117c9a0055bd 100644 --- a/arch/powerpc/platforms/chrp/setup.c +++ b/arch/powerpc/platforms/chrp/setup.c | |||
@@ -75,7 +75,7 @@ extern irqreturn_t xmon_irq(int, void *); | |||
75 | extern unsigned long loops_per_jiffy; | 75 | extern unsigned long loops_per_jiffy; |
76 | 76 | ||
77 | /* To be replaced by RTAS when available */ | 77 | /* To be replaced by RTAS when available */ |
78 | static unsigned int *briq_SPOR; | 78 | static unsigned int __iomem *briq_SPOR; |
79 | 79 | ||
80 | #ifdef CONFIG_SMP | 80 | #ifdef CONFIG_SMP |
81 | extern struct smp_ops_t chrp_smp_ops; | 81 | extern struct smp_ops_t chrp_smp_ops; |
@@ -267,7 +267,7 @@ void __init chrp_setup_arch(void) | |||
267 | } else if (machine && strncmp(machine, "TotalImpact,BRIQ-1", 18) == 0) { | 267 | } else if (machine && strncmp(machine, "TotalImpact,BRIQ-1", 18) == 0) { |
268 | _chrp_type = _CHRP_briq; | 268 | _chrp_type = _CHRP_briq; |
269 | /* Map the SPOR register on briq and change the restart hook */ | 269 | /* Map the SPOR register on briq and change the restart hook */ |
270 | briq_SPOR = (unsigned int *)ioremap(0xff0000e8, 4); | 270 | briq_SPOR = ioremap(0xff0000e8, 4); |
271 | ppc_md.restart = briq_restart; | 271 | ppc_md.restart = briq_restart; |
272 | } else { | 272 | } else { |
273 | /* Let's assume it is an IBM chrp if all else fails */ | 273 | /* Let's assume it is an IBM chrp if all else fails */ |
diff --git a/arch/powerpc/platforms/embedded6xx/linkstation.c b/arch/powerpc/platforms/embedded6xx/linkstation.c index 61599d919ea8..3f6c4114f908 100644 --- a/arch/powerpc/platforms/embedded6xx/linkstation.c +++ b/arch/powerpc/platforms/embedded6xx/linkstation.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/pci.h> | 14 | #include <linux/pci.h> |
15 | #include <linux/initrd.h> | 15 | #include <linux/initrd.h> |
16 | #include <linux/root_dev.h> | ||
17 | #include <linux/mtd/physmap.h> | 16 | #include <linux/mtd/physmap.h> |
18 | 17 | ||
19 | #include <asm/time.h> | 18 | #include <asm/time.h> |
@@ -91,17 +90,6 @@ static void __init linkstation_setup_arch(void) | |||
91 | ARRAY_SIZE(linkstation_physmap_partitions)); | 90 | ARRAY_SIZE(linkstation_physmap_partitions)); |
92 | #endif | 91 | #endif |
93 | 92 | ||
94 | #ifdef CONFIG_BLK_DEV_INITRD | ||
95 | if (initrd_start) | ||
96 | ROOT_DEV = Root_RAM0; | ||
97 | else | ||
98 | #endif | ||
99 | #ifdef CONFIG_ROOT_NFS | ||
100 | ROOT_DEV = Root_NFS; | ||
101 | #else | ||
102 | ROOT_DEV = Root_HDA1; | ||
103 | #endif | ||
104 | |||
105 | /* Lookup PCI host bridges */ | 93 | /* Lookup PCI host bridges */ |
106 | for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) | 94 | for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) |
107 | add_bridge(np); | 95 | add_bridge(np); |
diff --git a/arch/powerpc/platforms/iseries/lpevents.c b/arch/powerpc/platforms/iseries/lpevents.c index c1f4502a3c6a..91df52a1899a 100644 --- a/arch/powerpc/platforms/iseries/lpevents.c +++ b/arch/powerpc/platforms/iseries/lpevents.c | |||
@@ -308,7 +308,7 @@ static int proc_lpevents_open(struct inode *inode, struct file *file) | |||
308 | return single_open(file, proc_lpevents_show, NULL); | 308 | return single_open(file, proc_lpevents_show, NULL); |
309 | } | 309 | } |
310 | 310 | ||
311 | static struct file_operations proc_lpevents_operations = { | 311 | static const struct file_operations proc_lpevents_operations = { |
312 | .open = proc_lpevents_open, | 312 | .open = proc_lpevents_open, |
313 | .read = seq_read, | 313 | .read = seq_read, |
314 | .llseek = seq_lseek, | 314 | .llseek = seq_lseek, |
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c index 1ad0e4aaad1a..b1187d95e3b2 100644 --- a/arch/powerpc/platforms/iseries/mf.c +++ b/arch/powerpc/platforms/iseries/mf.c | |||
@@ -1224,7 +1224,7 @@ out: | |||
1224 | return rc; | 1224 | return rc; |
1225 | } | 1225 | } |
1226 | 1226 | ||
1227 | static struct file_operations proc_vmlinux_operations = { | 1227 | static const struct file_operations proc_vmlinux_operations = { |
1228 | .write = proc_mf_change_vmlinux, | 1228 | .write = proc_mf_change_vmlinux, |
1229 | }; | 1229 | }; |
1230 | 1230 | ||
@@ -1253,7 +1253,6 @@ static int __init mf_proc_init(void) | |||
1253 | ent = create_proc_entry("cmdline", S_IFREG|S_IRUSR|S_IWUSR, mf); | 1253 | ent = create_proc_entry("cmdline", S_IFREG|S_IRUSR|S_IWUSR, mf); |
1254 | if (!ent) | 1254 | if (!ent) |
1255 | return 1; | 1255 | return 1; |
1256 | ent->nlink = 1; | ||
1257 | ent->data = (void *)(long)i; | 1256 | ent->data = (void *)(long)i; |
1258 | ent->read_proc = proc_mf_dump_cmdline; | 1257 | ent->read_proc = proc_mf_dump_cmdline; |
1259 | ent->write_proc = proc_mf_change_cmdline; | 1258 | ent->write_proc = proc_mf_change_cmdline; |
@@ -1264,7 +1263,6 @@ static int __init mf_proc_init(void) | |||
1264 | ent = create_proc_entry("vmlinux", S_IFREG|S_IWUSR, mf); | 1263 | ent = create_proc_entry("vmlinux", S_IFREG|S_IWUSR, mf); |
1265 | if (!ent) | 1264 | if (!ent) |
1266 | return 1; | 1265 | return 1; |
1267 | ent->nlink = 1; | ||
1268 | ent->data = (void *)(long)i; | 1266 | ent->data = (void *)(long)i; |
1269 | ent->proc_fops = &proc_vmlinux_operations; | 1267 | ent->proc_fops = &proc_vmlinux_operations; |
1270 | } | 1268 | } |
@@ -1272,7 +1270,6 @@ static int __init mf_proc_init(void) | |||
1272 | ent = create_proc_entry("side", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root); | 1270 | ent = create_proc_entry("side", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root); |
1273 | if (!ent) | 1271 | if (!ent) |
1274 | return 1; | 1272 | return 1; |
1275 | ent->nlink = 1; | ||
1276 | ent->data = (void *)0; | 1273 | ent->data = (void *)0; |
1277 | ent->read_proc = proc_mf_dump_side; | 1274 | ent->read_proc = proc_mf_dump_side; |
1278 | ent->write_proc = proc_mf_change_side; | 1275 | ent->write_proc = proc_mf_change_side; |
@@ -1280,7 +1277,6 @@ static int __init mf_proc_init(void) | |||
1280 | ent = create_proc_entry("src", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root); | 1277 | ent = create_proc_entry("src", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root); |
1281 | if (!ent) | 1278 | if (!ent) |
1282 | return 1; | 1279 | return 1; |
1283 | ent->nlink = 1; | ||
1284 | ent->data = (void *)0; | 1280 | ent->data = (void *)0; |
1285 | ent->read_proc = proc_mf_dump_src; | 1281 | ent->read_proc = proc_mf_dump_src; |
1286 | ent->write_proc = proc_mf_change_src; | 1282 | ent->write_proc = proc_mf_change_src; |
diff --git a/arch/powerpc/platforms/iseries/proc.c b/arch/powerpc/platforms/iseries/proc.c index b54e37101e69..f2cde4180204 100644 --- a/arch/powerpc/platforms/iseries/proc.c +++ b/arch/powerpc/platforms/iseries/proc.c | |||
@@ -101,7 +101,7 @@ static int proc_titantod_open(struct inode *inode, struct file *file) | |||
101 | return single_open(file, proc_titantod_show, NULL); | 101 | return single_open(file, proc_titantod_show, NULL); |
102 | } | 102 | } |
103 | 103 | ||
104 | static struct file_operations proc_titantod_operations = { | 104 | static const struct file_operations proc_titantod_operations = { |
105 | .open = proc_titantod_open, | 105 | .open = proc_titantod_open, |
106 | .read = seq_read, | 106 | .read = seq_read, |
107 | .llseek = seq_lseek, | 107 | .llseek = seq_lseek, |
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c index a6799ed34a66..e2100ece9c65 100644 --- a/arch/powerpc/platforms/iseries/viopath.c +++ b/arch/powerpc/platforms/iseries/viopath.c | |||
@@ -173,7 +173,7 @@ static int proc_viopath_open(struct inode *inode, struct file *file) | |||
173 | return single_open(file, proc_viopath_show, NULL); | 173 | return single_open(file, proc_viopath_show, NULL); |
174 | } | 174 | } |
175 | 175 | ||
176 | static struct file_operations proc_viopath_operations = { | 176 | static const struct file_operations proc_viopath_operations = { |
177 | .open = proc_viopath_open, | 177 | .open = proc_viopath_open, |
178 | .read = seq_read, | 178 | .read = seq_read, |
179 | .llseek = seq_lseek, | 179 | .llseek = seq_lseek, |
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c index d949e9df41ef..651fa424ea06 100644 --- a/arch/powerpc/platforms/powermac/setup.c +++ b/arch/powerpc/platforms/powermac/setup.c | |||
@@ -506,8 +506,8 @@ void note_bootable_part(dev_t dev, int part, int goodness) | |||
506 | if ((goodness <= current_root_goodness) && | 506 | if ((goodness <= current_root_goodness) && |
507 | ROOT_DEV != DEFAULT_ROOT_DEVICE) | 507 | ROOT_DEV != DEFAULT_ROOT_DEVICE) |
508 | return; | 508 | return; |
509 | p = strstr(saved_command_line, "root="); | 509 | p = strstr(boot_command_line, "root="); |
510 | if (p != NULL && (p == saved_command_line || p[-1] == ' ')) | 510 | if (p != NULL && (p == boot_command_line || p[-1] == ' ')) |
511 | return; | 511 | return; |
512 | 512 | ||
513 | if (!found_boot) { | 513 | if (!found_boot) { |
diff --git a/arch/powerpc/platforms/ps3/Kconfig b/arch/powerpc/platforms/ps3/Kconfig index de52ec4e9e58..4be3943d1c0d 100644 --- a/arch/powerpc/platforms/ps3/Kconfig +++ b/arch/powerpc/platforms/ps3/Kconfig | |||
@@ -51,4 +51,15 @@ config PS3_VUART | |||
51 | including the System Manager and AV Settings. In | 51 | including the System Manager and AV Settings. In |
52 | general, all users will say Y. | 52 | general, all users will say Y. |
53 | 53 | ||
54 | config PS3_PS3AV | ||
55 | tristate "PS3 AV settings driver" | ||
56 | depends on PPC_PS3 | ||
57 | select PS3_VUART | ||
58 | default y | ||
59 | help | ||
60 | Include support for the PS3 AV Settings driver. | ||
61 | |||
62 | This support is required for graphics and sound. In | ||
63 | general, all users will say Y or M. | ||
64 | |||
54 | endmenu | 65 | endmenu |
diff --git a/arch/powerpc/platforms/ps3/htab.c b/arch/powerpc/platforms/ps3/htab.c index a4b5a1bc60f4..e12e59fea13a 100644 --- a/arch/powerpc/platforms/ps3/htab.c +++ b/arch/powerpc/platforms/ps3/htab.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * PS3 pagetable management routines. | 2 | * PS3 pagetable management routines. |
3 | * | 3 | * |
4 | * Copyright (C) 2006 Sony Computer Entertainment Inc. | 4 | * Copyright (C) 2006 Sony Computer Entertainment Inc. |
5 | * Copyright 2006 Sony Corp. | 5 | * Copyright 2006, 2007 Sony Corporation |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify | 7 | * This program is free software; you can redistribute it and/or modify |
8 | * it under the terms of the GNU General Public License as published by | 8 | * it under the terms of the GNU General Public License as published by |
@@ -24,6 +24,7 @@ | |||
24 | #include <asm/lmb.h> | 24 | #include <asm/lmb.h> |
25 | #include <asm/udbg.h> | 25 | #include <asm/udbg.h> |
26 | #include <asm/lv1call.h> | 26 | #include <asm/lv1call.h> |
27 | #include <asm/ps3fb.h> | ||
27 | 28 | ||
28 | #include "platform.h" | 29 | #include "platform.h" |
29 | 30 | ||
@@ -233,6 +234,9 @@ static void ps3_hpte_invalidate(unsigned long slot, unsigned long va, | |||
233 | 234 | ||
234 | static void ps3_hpte_clear(void) | 235 | static void ps3_hpte_clear(void) |
235 | { | 236 | { |
237 | /* Make sure to clean up the frame buffer device first */ | ||
238 | ps3fb_cleanup(); | ||
239 | |||
236 | lv1_unmap_htab(htab_addr); | 240 | lv1_unmap_htab(htab_addr); |
237 | } | 241 | } |
238 | 242 | ||
diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c index bb17283275aa..631c30095617 100644 --- a/arch/powerpc/platforms/ps3/interrupt.c +++ b/arch/powerpc/platforms/ps3/interrupt.c | |||
@@ -194,6 +194,7 @@ int ps3_alloc_io_irq(enum ps3_cpu_binding cpu, unsigned int interrupt_id, | |||
194 | 194 | ||
195 | return result; | 195 | return result; |
196 | } | 196 | } |
197 | EXPORT_SYMBOL_GPL(ps3_alloc_io_irq); | ||
197 | 198 | ||
198 | int ps3_free_io_irq(unsigned int virq) | 199 | int ps3_free_io_irq(unsigned int virq) |
199 | { | 200 | { |
@@ -209,6 +210,7 @@ int ps3_free_io_irq(unsigned int virq) | |||
209 | 210 | ||
210 | return result; | 211 | return result; |
211 | } | 212 | } |
213 | EXPORT_SYMBOL_GPL(ps3_free_io_irq); | ||
212 | 214 | ||
213 | /** | 215 | /** |
214 | * ps3_alloc_event_irq - Allocate a virq for use with a system event. | 216 | * ps3_alloc_event_irq - Allocate a virq for use with a system event. |
diff --git a/arch/powerpc/platforms/ps3/setup.c b/arch/powerpc/platforms/ps3/setup.c index e62505e18813..13d669a8ecae 100644 --- a/arch/powerpc/platforms/ps3/setup.c +++ b/arch/powerpc/platforms/ps3/setup.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/root_dev.h> | 24 | #include <linux/root_dev.h> |
25 | #include <linux/console.h> | 25 | #include <linux/console.h> |
26 | #include <linux/kexec.h> | 26 | #include <linux/kexec.h> |
27 | #include <linux/bootmem.h> | ||
27 | 28 | ||
28 | #include <asm/machdep.h> | 29 | #include <asm/machdep.h> |
29 | #include <asm/firmware.h> | 30 | #include <asm/firmware.h> |
@@ -80,6 +81,46 @@ static void ps3_panic(char *str) | |||
80 | for (;;) ; | 81 | for (;;) ; |
81 | } | 82 | } |
82 | 83 | ||
84 | |||
85 | static void prealloc(struct ps3_prealloc *p) | ||
86 | { | ||
87 | if (!p->size) | ||
88 | return; | ||
89 | |||
90 | p->address = __alloc_bootmem(p->size, p->align, __pa(MAX_DMA_ADDRESS)); | ||
91 | if (!p->address) { | ||
92 | printk(KERN_ERR "%s: Cannot allocate %s\n", __FUNCTION__, | ||
93 | p->name); | ||
94 | return; | ||
95 | } | ||
96 | |||
97 | printk(KERN_INFO "%s: %lu bytes at %p\n", p->name, p->size, | ||
98 | p->address); | ||
99 | } | ||
100 | |||
101 | #ifdef CONFIG_FB_PS3 | ||
102 | struct ps3_prealloc ps3fb_videomemory = { | ||
103 | .name = "ps3fb videomemory", | ||
104 | .size = CONFIG_FB_PS3_DEFAULT_SIZE_M*1024*1024, | ||
105 | .align = 1024*1024 /* the GPU requires 1 MiB alignment */ | ||
106 | }; | ||
107 | #define prealloc_ps3fb_videomemory() prealloc(&ps3fb_videomemory) | ||
108 | |||
109 | static int __init early_parse_ps3fb(char *p) | ||
110 | { | ||
111 | if (!p) | ||
112 | return 1; | ||
113 | |||
114 | ps3fb_videomemory.size = _ALIGN_UP(memparse(p, &p), | ||
115 | ps3fb_videomemory.align); | ||
116 | return 0; | ||
117 | } | ||
118 | early_param("ps3fb", early_parse_ps3fb); | ||
119 | #else | ||
120 | #define prealloc_ps3fb_videomemory() do { } while (0) | ||
121 | #endif | ||
122 | |||
123 | |||
83 | static void __init ps3_setup_arch(void) | 124 | static void __init ps3_setup_arch(void) |
84 | { | 125 | { |
85 | union ps3_firmware_version v; | 126 | union ps3_firmware_version v; |
@@ -101,6 +142,7 @@ static void __init ps3_setup_arch(void) | |||
101 | conswitchp = &dummy_con; | 142 | conswitchp = &dummy_con; |
102 | #endif | 143 | #endif |
103 | 144 | ||
145 | prealloc_ps3fb_videomemory(); | ||
104 | ppc_md.power_save = ps3_power_save; | 146 | ppc_md.power_save = ps3_power_save; |
105 | 147 | ||
106 | DBG(" <- %s:%d\n", __func__, __LINE__); | 148 | DBG(" <- %s:%d\n", __func__, __LINE__); |
diff --git a/arch/powerpc/platforms/ps3/spu.c b/arch/powerpc/platforms/ps3/spu.c index d1929721b0e4..a397e4e17c13 100644 --- a/arch/powerpc/platforms/ps3/spu.c +++ b/arch/powerpc/platforms/ps3/spu.c | |||
@@ -170,31 +170,6 @@ static int __init construct_spu(struct spu *spu) | |||
170 | return result; | 170 | return result; |
171 | } | 171 | } |
172 | 172 | ||
173 | static int __init add_spu_pages(unsigned long start_addr, unsigned long size) | ||
174 | { | ||
175 | int result; | ||
176 | unsigned long start_pfn; | ||
177 | unsigned long nr_pages; | ||
178 | struct pglist_data *pgdata; | ||
179 | struct zone *zone; | ||
180 | |||
181 | BUG_ON(!mem_init_done); | ||
182 | |||
183 | start_pfn = start_addr >> PAGE_SHIFT; | ||
184 | nr_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; | ||
185 | |||
186 | pgdata = NODE_DATA(0); | ||
187 | zone = pgdata->node_zones; | ||
188 | |||
189 | result = __add_pages(zone, start_pfn, nr_pages); | ||
190 | |||
191 | if (result) | ||
192 | pr_debug("%s:%d: __add_pages failed: (%d)\n", | ||
193 | __func__, __LINE__, result); | ||
194 | |||
195 | return result; | ||
196 | } | ||
197 | |||
198 | static void spu_unmap(struct spu *spu) | 173 | static void spu_unmap(struct spu *spu) |
199 | { | 174 | { |
200 | iounmap(spu->priv2); | 175 | iounmap(spu->priv2); |
@@ -206,19 +181,6 @@ static void spu_unmap(struct spu *spu) | |||
206 | static int __init setup_areas(struct spu *spu) | 181 | static int __init setup_areas(struct spu *spu) |
207 | { | 182 | { |
208 | struct table {char* name; unsigned long addr; unsigned long size;}; | 183 | struct table {char* name; unsigned long addr; unsigned long size;}; |
209 | int result; | ||
210 | |||
211 | /* setup pages */ | ||
212 | |||
213 | result = add_spu_pages(spu->local_store_phys, LS_SIZE); | ||
214 | if (result) | ||
215 | goto fail_add; | ||
216 | |||
217 | result = add_spu_pages(spu->problem_phys, sizeof(struct spu_problem)); | ||
218 | if (result) | ||
219 | goto fail_add; | ||
220 | |||
221 | /* ioremap */ | ||
222 | 184 | ||
223 | spu_pdata(spu)->shadow = __ioremap( | 185 | spu_pdata(spu)->shadow = __ioremap( |
224 | spu_pdata(spu)->shadow_addr, sizeof(struct spe_shadow), | 186 | spu_pdata(spu)->shadow_addr, sizeof(struct spe_shadow), |
@@ -260,8 +222,8 @@ static int __init setup_areas(struct spu *spu) | |||
260 | 222 | ||
261 | fail_ioremap: | 223 | fail_ioremap: |
262 | spu_unmap(spu); | 224 | spu_unmap(spu); |
263 | fail_add: | 225 | |
264 | return result; | 226 | return -ENOMEM; |
265 | } | 227 | } |
266 | 228 | ||
267 | static int __init setup_interrupts(struct spu *spu) | 229 | static int __init setup_interrupts(struct spu *spu) |
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c index bce6136cbce7..a9f7e4a39a2a 100644 --- a/arch/powerpc/platforms/ps3/system-bus.c +++ b/arch/powerpc/platforms/ps3/system-bus.c | |||
@@ -57,6 +57,7 @@ int ps3_mmio_region_create(struct ps3_mmio_region *r) | |||
57 | dump_mmio_region(r); | 57 | dump_mmio_region(r); |
58 | return result; | 58 | return result; |
59 | } | 59 | } |
60 | EXPORT_SYMBOL_GPL(ps3_mmio_region_create); | ||
60 | 61 | ||
61 | int ps3_free_mmio_region(struct ps3_mmio_region *r) | 62 | int ps3_free_mmio_region(struct ps3_mmio_region *r) |
62 | { | 63 | { |
@@ -72,6 +73,7 @@ int ps3_free_mmio_region(struct ps3_mmio_region *r) | |||
72 | r->lpar_addr = 0; | 73 | r->lpar_addr = 0; |
73 | return result; | 74 | return result; |
74 | } | 75 | } |
76 | EXPORT_SYMBOL_GPL(ps3_free_mmio_region); | ||
75 | 77 | ||
76 | static int ps3_system_bus_match(struct device *_dev, | 78 | static int ps3_system_bus_match(struct device *_dev, |
77 | struct device_driver *_drv) | 79 | struct device_driver *_drv) |
diff --git a/arch/powerpc/platforms/pseries/eeh.c b/arch/powerpc/platforms/pseries/eeh.c index 9437f48cc9e7..6cedbc002e0f 100644 --- a/arch/powerpc/platforms/pseries/eeh.c +++ b/arch/powerpc/platforms/pseries/eeh.c | |||
@@ -1078,7 +1078,7 @@ static int proc_eeh_open(struct inode *inode, struct file *file) | |||
1078 | return single_open(file, proc_eeh_show, NULL); | 1078 | return single_open(file, proc_eeh_show, NULL); |
1079 | } | 1079 | } |
1080 | 1080 | ||
1081 | static struct file_operations proc_eeh_operations = { | 1081 | static const struct file_operations proc_eeh_operations = { |
1082 | .open = proc_eeh_open, | 1082 | .open = proc_eeh_open, |
1083 | .read = seq_read, | 1083 | .read = seq_read, |
1084 | .llseek = seq_lseek, | 1084 | .llseek = seq_lseek, |
diff --git a/arch/powerpc/platforms/pseries/hvCall_inst.c b/arch/powerpc/platforms/pseries/hvCall_inst.c index 3ddc04925d50..eae51ef9af24 100644 --- a/arch/powerpc/platforms/pseries/hvCall_inst.c +++ b/arch/powerpc/platforms/pseries/hvCall_inst.c | |||
@@ -90,7 +90,7 @@ static int hcall_inst_seq_open(struct inode *inode, struct file *file) | |||
90 | return rc; | 90 | return rc; |
91 | } | 91 | } |
92 | 92 | ||
93 | static struct file_operations hcall_inst_seq_fops = { | 93 | static const struct file_operations hcall_inst_seq_fops = { |
94 | .open = hcall_inst_seq_open, | 94 | .open = hcall_inst_seq_open, |
95 | .read = seq_read, | 95 | .read = seq_read, |
96 | .llseek = seq_lseek, | 96 | .llseek = seq_lseek, |
diff --git a/arch/powerpc/platforms/pseries/pci.c b/arch/powerpc/platforms/pseries/pci.c index c69bd15ced9c..fa59124ce3fe 100644 --- a/arch/powerpc/platforms/pseries/pci.c +++ b/arch/powerpc/platforms/pseries/pci.c | |||
@@ -98,6 +98,10 @@ static void fixup_winbond_82c105(struct pci_dev* dev) | |||
98 | if (dev->resource[i].flags & IORESOURCE_IO | 98 | if (dev->resource[i].flags & IORESOURCE_IO |
99 | && dev->bus->number == 0 && dev->devfn == 0x81) | 99 | && dev->bus->number == 0 && dev->devfn == 0x81) |
100 | dev->resource[i].flags &= ~IORESOURCE_IO; | 100 | dev->resource[i].flags &= ~IORESOURCE_IO; |
101 | if (dev->resource[i].start == 0 && dev->resource[i].end) { | ||
102 | dev->resource[i].flags = 0; | ||
103 | dev->resource[i].end = 0; | ||
104 | } | ||
101 | } | 105 | } |
102 | } | 106 | } |
103 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105, | 107 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105, |
diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c index 4ad33e41b008..5aa97aff3391 100644 --- a/arch/powerpc/platforms/pseries/reconfig.c +++ b/arch/powerpc/platforms/pseries/reconfig.c | |||
@@ -499,7 +499,7 @@ out: | |||
499 | return rv ? rv : count; | 499 | return rv ? rv : count; |
500 | } | 500 | } |
501 | 501 | ||
502 | static struct file_operations ofdt_fops = { | 502 | static const struct file_operations ofdt_fops = { |
503 | .write = ofdt_write | 503 | .write = ofdt_write |
504 | }; | 504 | }; |
505 | 505 | ||
@@ -513,7 +513,6 @@ static int proc_ppc64_create_ofdt(void) | |||
513 | 513 | ||
514 | ent = create_proc_entry("ppc64/ofdt", S_IWUSR, NULL); | 514 | ent = create_proc_entry("ppc64/ofdt", S_IWUSR, NULL); |
515 | if (ent) { | 515 | if (ent) { |
516 | ent->nlink = 1; | ||
517 | ent->data = NULL; | 516 | ent->data = NULL; |
518 | ent->size = 0; | 517 | ent->size = 0; |
519 | ent->proc_fops = &ofdt_fops; | 518 | ent->proc_fops = &ofdt_fops; |
diff --git a/arch/powerpc/platforms/pseries/rtasd.c b/arch/powerpc/platforms/pseries/rtasd.c index 8ca2612221d6..77d0937d5c07 100644 --- a/arch/powerpc/platforms/pseries/rtasd.c +++ b/arch/powerpc/platforms/pseries/rtasd.c | |||
@@ -331,7 +331,7 @@ static unsigned int rtas_log_poll(struct file *file, poll_table * wait) | |||
331 | return 0; | 331 | return 0; |
332 | } | 332 | } |
333 | 333 | ||
334 | struct file_operations proc_rtas_log_operations = { | 334 | const struct file_operations proc_rtas_log_operations = { |
335 | .read = rtas_log_read, | 335 | .read = rtas_log_read, |
336 | .poll = rtas_log_poll, | 336 | .poll = rtas_log_poll, |
337 | .open = rtas_log_open, | 337 | .open = rtas_log_open, |
diff --git a/arch/powerpc/platforms/pseries/scanlog.c b/arch/powerpc/platforms/pseries/scanlog.c index 45368a57d7dd..8e1ef168e2dd 100644 --- a/arch/powerpc/platforms/pseries/scanlog.c +++ b/arch/powerpc/platforms/pseries/scanlog.c | |||
@@ -184,7 +184,7 @@ static int scanlog_release(struct inode * inode, struct file * file) | |||
184 | return 0; | 184 | return 0; |
185 | } | 185 | } |
186 | 186 | ||
187 | struct file_operations scanlog_fops = { | 187 | const struct file_operations scanlog_fops = { |
188 | .owner = THIS_MODULE, | 188 | .owner = THIS_MODULE, |
189 | .read = scanlog_read, | 189 | .read = scanlog_read, |
190 | .write = scanlog_write, | 190 | .write = scanlog_write, |
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index 9f2a9a444bfb..34161bc5a02f 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c | |||
@@ -441,7 +441,8 @@ static int __init fsl_usb_of_init(void) | |||
441 | { | 441 | { |
442 | struct device_node *np; | 442 | struct device_node *np; |
443 | unsigned int i; | 443 | unsigned int i; |
444 | struct platform_device *usb_dev_mph = NULL, *usb_dev_dr = NULL; | 444 | struct platform_device *usb_dev_mph = NULL, *usb_dev_dr_host = NULL, |
445 | *usb_dev_dr_client = NULL; | ||
445 | int ret; | 446 | int ret; |
446 | 447 | ||
447 | for (np = NULL, i = 0; | 448 | for (np = NULL, i = 0; |
@@ -507,33 +508,72 @@ static int __init fsl_usb_of_init(void) | |||
507 | 508 | ||
508 | of_irq_to_resource(np, 0, &r[1]); | 509 | of_irq_to_resource(np, 0, &r[1]); |
509 | 510 | ||
510 | usb_dev_dr = | 511 | prop = get_property(np, "dr_mode", NULL); |
511 | platform_device_register_simple("fsl-ehci", i, r, 2); | 512 | |
512 | if (IS_ERR(usb_dev_dr)) { | 513 | if (!prop || !strcmp(prop, "host")) { |
513 | ret = PTR_ERR(usb_dev_dr); | 514 | usb_data.operating_mode = FSL_USB2_DR_HOST; |
515 | usb_dev_dr_host = platform_device_register_simple( | ||
516 | "fsl-ehci", i, r, 2); | ||
517 | if (IS_ERR(usb_dev_dr_host)) { | ||
518 | ret = PTR_ERR(usb_dev_dr_host); | ||
519 | goto err; | ||
520 | } | ||
521 | } else if (prop && !strcmp(prop, "peripheral")) { | ||
522 | usb_data.operating_mode = FSL_USB2_DR_DEVICE; | ||
523 | usb_dev_dr_client = platform_device_register_simple( | ||
524 | "fsl-usb2-udc", i, r, 2); | ||
525 | if (IS_ERR(usb_dev_dr_client)) { | ||
526 | ret = PTR_ERR(usb_dev_dr_client); | ||
527 | goto err; | ||
528 | } | ||
529 | } else if (prop && !strcmp(prop, "otg")) { | ||
530 | usb_data.operating_mode = FSL_USB2_DR_OTG; | ||
531 | usb_dev_dr_host = platform_device_register_simple( | ||
532 | "fsl-ehci", i, r, 2); | ||
533 | if (IS_ERR(usb_dev_dr_host)) { | ||
534 | ret = PTR_ERR(usb_dev_dr_host); | ||
535 | goto err; | ||
536 | } | ||
537 | usb_dev_dr_client = platform_device_register_simple( | ||
538 | "fsl-usb2-udc", i, r, 2); | ||
539 | if (IS_ERR(usb_dev_dr_client)) { | ||
540 | ret = PTR_ERR(usb_dev_dr_client); | ||
541 | goto err; | ||
542 | } | ||
543 | } else { | ||
544 | ret = -EINVAL; | ||
514 | goto err; | 545 | goto err; |
515 | } | 546 | } |
516 | 547 | ||
517 | usb_dev_dr->dev.coherent_dma_mask = 0xffffffffUL; | ||
518 | usb_dev_dr->dev.dma_mask = &usb_dev_dr->dev.coherent_dma_mask; | ||
519 | |||
520 | usb_data.operating_mode = FSL_USB2_DR_HOST; | ||
521 | |||
522 | prop = get_property(np, "phy_type", NULL); | 548 | prop = get_property(np, "phy_type", NULL); |
523 | usb_data.phy_mode = determine_usb_phy(prop); | 549 | usb_data.phy_mode = determine_usb_phy(prop); |
524 | 550 | ||
525 | ret = | 551 | if (usb_dev_dr_host) { |
526 | platform_device_add_data(usb_dev_dr, &usb_data, | 552 | usb_dev_dr_host->dev.coherent_dma_mask = 0xffffffffUL; |
527 | sizeof(struct | 553 | usb_dev_dr_host->dev.dma_mask = &usb_dev_dr_host-> |
528 | fsl_usb2_platform_data)); | 554 | dev.coherent_dma_mask; |
529 | if (ret) | 555 | if ((ret = platform_device_add_data(usb_dev_dr_host, |
530 | goto unreg_dr; | 556 | &usb_data, sizeof(struct |
557 | fsl_usb2_platform_data)))) | ||
558 | goto unreg_dr; | ||
559 | } | ||
560 | if (usb_dev_dr_client) { | ||
561 | usb_dev_dr_client->dev.coherent_dma_mask = 0xffffffffUL; | ||
562 | usb_dev_dr_client->dev.dma_mask = &usb_dev_dr_client-> | ||
563 | dev.coherent_dma_mask; | ||
564 | if ((ret = platform_device_add_data(usb_dev_dr_client, | ||
565 | &usb_data, sizeof(struct | ||
566 | fsl_usb2_platform_data)))) | ||
567 | goto unreg_dr; | ||
568 | } | ||
531 | } | 569 | } |
532 | return 0; | 570 | return 0; |
533 | 571 | ||
534 | unreg_dr: | 572 | unreg_dr: |
535 | if (usb_dev_dr) | 573 | if (usb_dev_dr_host) |
536 | platform_device_unregister(usb_dev_dr); | 574 | platform_device_unregister(usb_dev_dr_host); |
575 | if (usb_dev_dr_client) | ||
576 | platform_device_unregister(usb_dev_dr_client); | ||
537 | unreg_mph: | 577 | unreg_mph: |
538 | if (usb_dev_mph) | 578 | if (usb_dev_mph) |
539 | platform_device_unregister(usb_dev_mph); | 579 | platform_device_unregister(usb_dev_mph); |
@@ -699,7 +739,7 @@ static int __init fs_enet_of_init(void) | |||
699 | if (ret) | 739 | if (ret) |
700 | goto unreg; | 740 | goto unreg; |
701 | } | 741 | } |
702 | 742 | ||
703 | of_node_put(phy); | 743 | of_node_put(phy); |
704 | of_node_put(mdio); | 744 | of_node_put(mdio); |
705 | 745 | ||
diff --git a/arch/powerpc/sysdev/qe_lib/ucc_slow.c b/arch/powerpc/sysdev/qe_lib/ucc_slow.c index 47b56203f47e..0e97e5c94f8a 100644 --- a/arch/powerpc/sysdev/qe_lib/ucc_slow.c +++ b/arch/powerpc/sysdev/qe_lib/ucc_slow.c | |||
@@ -179,7 +179,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
179 | uccs->us_info = us_info; | 179 | uccs->us_info = us_info; |
180 | uccs->saved_uccm = 0; | 180 | uccs->saved_uccm = 0; |
181 | uccs->p_rx_frame = 0; | 181 | uccs->p_rx_frame = 0; |
182 | uccs->us_regs = us_info->us_regs; | 182 | uccs->us_regs = us_info->regs; |
183 | us_regs = uccs->us_regs; | 183 | us_regs = uccs->us_regs; |
184 | uccs->p_ucce = (u16 *) & (us_regs->ucce); | 184 | uccs->p_ucce = (u16 *) & (us_regs->ucce); |
185 | uccs->p_uccm = (u16 *) & (us_regs->uccm); | 185 | uccs->p_uccm = (u16 *) & (us_regs->uccm); |
@@ -206,7 +206,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
206 | uccs->us_pram = qe_muram_addr(uccs->us_pram_offset); | 206 | uccs->us_pram = qe_muram_addr(uccs->us_pram_offset); |
207 | 207 | ||
208 | /* Init Guemr register */ | 208 | /* Init Guemr register */ |
209 | if ((ret = ucc_init_guemr((struct ucc_common *) (us_info->us_regs)))) { | 209 | if ((ret = ucc_init_guemr((struct ucc_common *) (us_info->regs)))) { |
210 | uccs_err("ucc_slow_init: Could not init the guemr register."); | 210 | uccs_err("ucc_slow_init: Could not init the guemr register."); |
211 | ucc_slow_free(uccs); | 211 | ucc_slow_free(uccs); |
212 | return ret; | 212 | return ret; |
@@ -214,7 +214,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
214 | 214 | ||
215 | /* Set UCC to slow type */ | 215 | /* Set UCC to slow type */ |
216 | if ((ret = ucc_set_type(us_info->ucc_num, | 216 | if ((ret = ucc_set_type(us_info->ucc_num, |
217 | (struct ucc_common *) (us_info->us_regs), | 217 | (struct ucc_common *) (us_info->regs), |
218 | UCC_SPEED_TYPE_SLOW))) { | 218 | UCC_SPEED_TYPE_SLOW))) { |
219 | uccs_err("ucc_slow_init: Could not init the guemr register."); | 219 | uccs_err("ucc_slow_init: Could not init the guemr register."); |
220 | ucc_slow_free(uccs); | 220 | ucc_slow_free(uccs); |
diff --git a/arch/powerpc/xmon/spu-dis.c b/arch/powerpc/xmon/spu-dis.c index ee929c641bf3..e5f89837c82e 100644 --- a/arch/powerpc/xmon/spu-dis.c +++ b/arch/powerpc/xmon/spu-dis.c | |||
@@ -85,7 +85,7 @@ get_index_for_opcode (unsigned int insn) | |||
85 | if ((index = spu_disassemble_table[opcode & 0x7ff]) != 0) | 85 | if ((index = spu_disassemble_table[opcode & 0x7ff]) != 0) |
86 | return index; | 86 | return index; |
87 | 87 | ||
88 | return 0; | 88 | return NULL; |
89 | } | 89 | } |
90 | 90 | ||
91 | /* Print a Spu instruction. */ | 91 | /* Print a Spu instruction. */ |
diff --git a/arch/ppc/8xx_io/cs4218_tdm.c b/arch/ppc/8xx_io/cs4218_tdm.c index 684ed04eb8b8..a956f28ab162 100644 --- a/arch/ppc/8xx_io/cs4218_tdm.c +++ b/arch/ppc/8xx_io/cs4218_tdm.c | |||
@@ -1711,7 +1711,7 @@ static int mixer_ioctl(struct inode *inode, struct file *file, u_int cmd, | |||
1711 | } | 1711 | } |
1712 | 1712 | ||
1713 | 1713 | ||
1714 | static struct file_operations mixer_fops = | 1714 | static const struct file_operations mixer_fops = |
1715 | { | 1715 | { |
1716 | .owner = THIS_MODULE, | 1716 | .owner = THIS_MODULE, |
1717 | .llseek = sound_lseek, | 1717 | .llseek = sound_lseek, |
@@ -2298,7 +2298,7 @@ static int sq_ioctl(struct inode *inode, struct file *file, u_int cmd, | |||
2298 | 2298 | ||
2299 | 2299 | ||
2300 | 2300 | ||
2301 | static struct file_operations sq_fops = | 2301 | static const struct file_operations sq_fops = |
2302 | { | 2302 | { |
2303 | .owner = THIS_MODULE, | 2303 | .owner = THIS_MODULE, |
2304 | .llseek = sound_lseek, | 2304 | .llseek = sound_lseek, |
@@ -2433,7 +2433,7 @@ static ssize_t state_read(struct file *file, char *buf, size_t count, | |||
2433 | } | 2433 | } |
2434 | 2434 | ||
2435 | 2435 | ||
2436 | static struct file_operations state_fops = | 2436 | static const struct file_operations state_fops = |
2437 | { | 2437 | { |
2438 | .owner = THIS_MODULE, | 2438 | .owner = THIS_MODULE, |
2439 | .llseek = sound_lseek, | 2439 | .llseek = sound_lseek, |
diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig index c22e60619d9b..0df9c33629fd 100644 --- a/arch/ppc/Kconfig +++ b/arch/ppc/Kconfig | |||
@@ -1177,6 +1177,10 @@ config ISA | |||
1177 | have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If | 1177 | have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If |
1178 | you have an embedded board, consult your board documentation. | 1178 | you have an embedded board, consult your board documentation. |
1179 | 1179 | ||
1180 | config ZONE_DMA | ||
1181 | bool | ||
1182 | default y | ||
1183 | |||
1180 | config GENERIC_ISA_DMA | 1184 | config GENERIC_ISA_DMA |
1181 | bool | 1185 | bool |
1182 | depends on 6xx && !CPM2 | 1186 | depends on 6xx && !CPM2 |
diff --git a/arch/ppc/configs/taishan_defconfig b/arch/ppc/configs/taishan_defconfig new file mode 100644 index 000000000000..1ca0204267b1 --- /dev/null +++ b/arch/ppc/configs/taishan_defconfig | |||
@@ -0,0 +1,1077 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.20 | ||
4 | # Mon Feb 12 11:11:58 2007 | ||
5 | # | ||
6 | CONFIG_MMU=y | ||
7 | CONFIG_GENERIC_HARDIRQS=y | ||
8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
9 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
12 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
13 | CONFIG_PPC=y | ||
14 | CONFIG_PPC32=y | ||
15 | CONFIG_GENERIC_NVRAM=y | ||
16 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
17 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
18 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
19 | CONFIG_GENERIC_BUG=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
21 | |||
22 | # | ||
23 | # Code maturity level options | ||
24 | # | ||
25 | CONFIG_EXPERIMENTAL=y | ||
26 | CONFIG_BROKEN_ON_SMP=y | ||
27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
28 | |||
29 | # | ||
30 | # General setup | ||
31 | # | ||
32 | CONFIG_LOCALVERSION="" | ||
33 | CONFIG_LOCALVERSION_AUTO=y | ||
34 | CONFIG_SWAP=y | ||
35 | CONFIG_SYSVIPC=y | ||
36 | # CONFIG_IPC_NS is not set | ||
37 | # CONFIG_POSIX_MQUEUE is not set | ||
38 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
39 | # CONFIG_TASKSTATS is not set | ||
40 | # CONFIG_UTS_NS is not set | ||
41 | # CONFIG_AUDIT is not set | ||
42 | # CONFIG_IKCONFIG is not set | ||
43 | CONFIG_SYSFS_DEPRECATED=y | ||
44 | # CONFIG_RELAY is not set | ||
45 | CONFIG_INITRAMFS_SOURCE="" | ||
46 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
47 | CONFIG_SYSCTL=y | ||
48 | CONFIG_EMBEDDED=y | ||
49 | CONFIG_SYSCTL_SYSCALL=y | ||
50 | CONFIG_KALLSYMS=y | ||
51 | # CONFIG_KALLSYMS_ALL is not set | ||
52 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
53 | # CONFIG_HOTPLUG is not set | ||
54 | CONFIG_PRINTK=y | ||
55 | CONFIG_BUG=y | ||
56 | CONFIG_ELF_CORE=y | ||
57 | CONFIG_BASE_FULL=y | ||
58 | CONFIG_FUTEX=y | ||
59 | CONFIG_EPOLL=y | ||
60 | CONFIG_SHMEM=y | ||
61 | CONFIG_SLAB=y | ||
62 | CONFIG_VM_EVENT_COUNTERS=y | ||
63 | CONFIG_RT_MUTEXES=y | ||
64 | # CONFIG_TINY_SHMEM is not set | ||
65 | CONFIG_BASE_SMALL=0 | ||
66 | # CONFIG_SLOB is not set | ||
67 | |||
68 | # | ||
69 | # Loadable module support | ||
70 | # | ||
71 | CONFIG_MODULES=y | ||
72 | CONFIG_MODULE_UNLOAD=y | ||
73 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
74 | # CONFIG_MODVERSIONS is not set | ||
75 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
76 | CONFIG_KMOD=y | ||
77 | |||
78 | # | ||
79 | # Block layer | ||
80 | # | ||
81 | CONFIG_BLOCK=y | ||
82 | # CONFIG_LBD is not set | ||
83 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
84 | # CONFIG_LSF is not set | ||
85 | |||
86 | # | ||
87 | # IO Schedulers | ||
88 | # | ||
89 | CONFIG_IOSCHED_NOOP=y | ||
90 | CONFIG_IOSCHED_AS=y | ||
91 | CONFIG_IOSCHED_DEADLINE=y | ||
92 | CONFIG_IOSCHED_CFQ=y | ||
93 | CONFIG_DEFAULT_AS=y | ||
94 | # CONFIG_DEFAULT_DEADLINE is not set | ||
95 | # CONFIG_DEFAULT_CFQ is not set | ||
96 | # CONFIG_DEFAULT_NOOP is not set | ||
97 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
98 | |||
99 | # | ||
100 | # Processor | ||
101 | # | ||
102 | # CONFIG_6xx is not set | ||
103 | # CONFIG_40x is not set | ||
104 | CONFIG_44x=y | ||
105 | # CONFIG_8xx is not set | ||
106 | # CONFIG_E200 is not set | ||
107 | # CONFIG_E500 is not set | ||
108 | CONFIG_PPC_DCR_NATIVE=y | ||
109 | CONFIG_PPC_DCR=y | ||
110 | CONFIG_BOOKE=y | ||
111 | CONFIG_PTE_64BIT=y | ||
112 | CONFIG_PHYS_64BIT=y | ||
113 | # CONFIG_MATH_EMULATION is not set | ||
114 | # CONFIG_KEXEC is not set | ||
115 | # CONFIG_CPU_FREQ is not set | ||
116 | CONFIG_4xx=y | ||
117 | CONFIG_WANT_EARLY_SERIAL=y | ||
118 | |||
119 | # | ||
120 | # IBM 4xx options | ||
121 | # | ||
122 | # CONFIG_BAMBOO is not set | ||
123 | # CONFIG_EBONY is not set | ||
124 | # CONFIG_LUAN is not set | ||
125 | # CONFIG_YUCCA is not set | ||
126 | # CONFIG_OCOTEA is not set | ||
127 | CONFIG_TAISHAN=y | ||
128 | CONFIG_440GX=y | ||
129 | CONFIG_440A=y | ||
130 | CONFIG_IBM_OCP=y | ||
131 | CONFIG_IBM_EMAC4=y | ||
132 | CONFIG_PPC4xx_DMA=y | ||
133 | CONFIG_PPC4xx_EDMA=y | ||
134 | CONFIG_PPC_GEN550=y | ||
135 | CONFIG_NOT_COHERENT_CACHE=y | ||
136 | |||
137 | # | ||
138 | # Platform options | ||
139 | # | ||
140 | # CONFIG_PC_KEYBOARD is not set | ||
141 | # CONFIG_HIGHMEM is not set | ||
142 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
143 | # CONFIG_HZ_100 is not set | ||
144 | CONFIG_HZ_250=y | ||
145 | # CONFIG_HZ_300 is not set | ||
146 | # CONFIG_HZ_1000 is not set | ||
147 | CONFIG_HZ=250 | ||
148 | CONFIG_PREEMPT_NONE=y | ||
149 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
150 | # CONFIG_PREEMPT is not set | ||
151 | CONFIG_SELECT_MEMORY_MODEL=y | ||
152 | CONFIG_FLATMEM_MANUAL=y | ||
153 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
154 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
155 | CONFIG_FLATMEM=y | ||
156 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
157 | # CONFIG_SPARSEMEM_STATIC is not set | ||
158 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
159 | CONFIG_RESOURCES_64BIT=y | ||
160 | CONFIG_ZONE_DMA_FLAG=1 | ||
161 | CONFIG_BINFMT_ELF=y | ||
162 | # CONFIG_BINFMT_MISC is not set | ||
163 | CONFIG_CMDLINE_BOOL=y | ||
164 | CONFIG_CMDLINE="ip=on console=ttyS0,115200" | ||
165 | CONFIG_SECCOMP=y | ||
166 | CONFIG_ISA_DMA_API=y | ||
167 | |||
168 | # | ||
169 | # Bus options | ||
170 | # | ||
171 | CONFIG_ZONE_DMA=y | ||
172 | # CONFIG_PPC_I8259 is not set | ||
173 | CONFIG_PPC_INDIRECT_PCI=y | ||
174 | CONFIG_PCI=y | ||
175 | CONFIG_PCI_DOMAINS=y | ||
176 | # CONFIG_PCI_DEBUG is not set | ||
177 | |||
178 | # | ||
179 | # PCCARD (PCMCIA/CardBus) support | ||
180 | # | ||
181 | |||
182 | # | ||
183 | # Advanced setup | ||
184 | # | ||
185 | # CONFIG_ADVANCED_OPTIONS is not set | ||
186 | |||
187 | # | ||
188 | # Default settings for advanced configuration options are used | ||
189 | # | ||
190 | CONFIG_HIGHMEM_START=0xfe000000 | ||
191 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
192 | CONFIG_KERNEL_START=0xc0000000 | ||
193 | CONFIG_TASK_SIZE=0x80000000 | ||
194 | CONFIG_CONSISTENT_START=0xff100000 | ||
195 | CONFIG_CONSISTENT_SIZE=0x00200000 | ||
196 | CONFIG_BOOT_LOAD=0x01000000 | ||
197 | |||
198 | # | ||
199 | # Networking | ||
200 | # | ||
201 | CONFIG_NET=y | ||
202 | |||
203 | # | ||
204 | # Networking options | ||
205 | # | ||
206 | # CONFIG_NETDEBUG is not set | ||
207 | CONFIG_PACKET=y | ||
208 | # CONFIG_PACKET_MMAP is not set | ||
209 | CONFIG_UNIX=y | ||
210 | CONFIG_XFRM=y | ||
211 | # CONFIG_XFRM_USER is not set | ||
212 | # CONFIG_XFRM_SUB_POLICY is not set | ||
213 | # CONFIG_XFRM_MIGRATE is not set | ||
214 | # CONFIG_NET_KEY is not set | ||
215 | CONFIG_INET=y | ||
216 | # CONFIG_IP_MULTICAST is not set | ||
217 | CONFIG_IP_ADVANCED_ROUTER=y | ||
218 | CONFIG_ASK_IP_FIB_HASH=y | ||
219 | # CONFIG_IP_FIB_TRIE is not set | ||
220 | CONFIG_IP_FIB_HASH=y | ||
221 | # CONFIG_IP_MULTIPLE_TABLES is not set | ||
222 | # CONFIG_IP_ROUTE_MULTIPATH is not set | ||
223 | # CONFIG_IP_ROUTE_VERBOSE is not set | ||
224 | CONFIG_IP_PNP=y | ||
225 | # CONFIG_IP_PNP_DHCP is not set | ||
226 | CONFIG_IP_PNP_BOOTP=y | ||
227 | # CONFIG_IP_PNP_RARP is not set | ||
228 | # CONFIG_NET_IPIP is not set | ||
229 | # CONFIG_NET_IPGRE is not set | ||
230 | # CONFIG_ARPD is not set | ||
231 | # CONFIG_SYN_COOKIES is not set | ||
232 | # CONFIG_INET_AH is not set | ||
233 | # CONFIG_INET_ESP is not set | ||
234 | # CONFIG_INET_IPCOMP is not set | ||
235 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
236 | # CONFIG_INET_TUNNEL is not set | ||
237 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
238 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
239 | CONFIG_INET_XFRM_MODE_BEET=y | ||
240 | CONFIG_INET_DIAG=y | ||
241 | CONFIG_INET_TCP_DIAG=y | ||
242 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
243 | CONFIG_TCP_CONG_CUBIC=y | ||
244 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
245 | # CONFIG_TCP_MD5SIG is not set | ||
246 | # CONFIG_IPV6 is not set | ||
247 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
248 | # CONFIG_INET6_TUNNEL is not set | ||
249 | # CONFIG_NETWORK_SECMARK is not set | ||
250 | # CONFIG_NETFILTER is not set | ||
251 | |||
252 | # | ||
253 | # DCCP Configuration (EXPERIMENTAL) | ||
254 | # | ||
255 | # CONFIG_IP_DCCP is not set | ||
256 | |||
257 | # | ||
258 | # SCTP Configuration (EXPERIMENTAL) | ||
259 | # | ||
260 | # CONFIG_IP_SCTP is not set | ||
261 | |||
262 | # | ||
263 | # TIPC Configuration (EXPERIMENTAL) | ||
264 | # | ||
265 | # CONFIG_TIPC is not set | ||
266 | # CONFIG_ATM is not set | ||
267 | CONFIG_BRIDGE=y | ||
268 | # CONFIG_VLAN_8021Q is not set | ||
269 | # CONFIG_DECNET is not set | ||
270 | CONFIG_LLC=y | ||
271 | # CONFIG_LLC2 is not set | ||
272 | # CONFIG_IPX is not set | ||
273 | # CONFIG_ATALK is not set | ||
274 | # CONFIG_X25 is not set | ||
275 | # CONFIG_LAPB is not set | ||
276 | # CONFIG_ECONET is not set | ||
277 | # CONFIG_WAN_ROUTER is not set | ||
278 | |||
279 | # | ||
280 | # QoS and/or fair queueing | ||
281 | # | ||
282 | # CONFIG_NET_SCHED is not set | ||
283 | |||
284 | # | ||
285 | # Network testing | ||
286 | # | ||
287 | # CONFIG_NET_PKTGEN is not set | ||
288 | # CONFIG_HAMRADIO is not set | ||
289 | # CONFIG_IRDA is not set | ||
290 | # CONFIG_BT is not set | ||
291 | # CONFIG_IEEE80211 is not set | ||
292 | |||
293 | # | ||
294 | # Device Drivers | ||
295 | # | ||
296 | |||
297 | # | ||
298 | # Generic Driver Options | ||
299 | # | ||
300 | # CONFIG_STANDALONE is not set | ||
301 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
302 | # CONFIG_DEBUG_DRIVER is not set | ||
303 | # CONFIG_DEBUG_DEVRES is not set | ||
304 | # CONFIG_SYS_HYPERVISOR is not set | ||
305 | |||
306 | # | ||
307 | # Connector - unified userspace <-> kernelspace linker | ||
308 | # | ||
309 | # CONFIG_CONNECTOR is not set | ||
310 | |||
311 | # | ||
312 | # Memory Technology Devices (MTD) | ||
313 | # | ||
314 | CONFIG_MTD=y | ||
315 | # CONFIG_MTD_DEBUG is not set | ||
316 | CONFIG_MTD_CONCAT=y | ||
317 | CONFIG_MTD_PARTITIONS=y | ||
318 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
319 | CONFIG_MTD_CMDLINE_PARTS=y | ||
320 | |||
321 | # | ||
322 | # User Modules And Translation Layers | ||
323 | # | ||
324 | CONFIG_MTD_CHAR=y | ||
325 | CONFIG_MTD_BLKDEVS=y | ||
326 | CONFIG_MTD_BLOCK=y | ||
327 | # CONFIG_FTL is not set | ||
328 | # CONFIG_NFTL is not set | ||
329 | # CONFIG_INFTL is not set | ||
330 | # CONFIG_RFD_FTL is not set | ||
331 | # CONFIG_SSFDC is not set | ||
332 | |||
333 | # | ||
334 | # RAM/ROM/Flash chip drivers | ||
335 | # | ||
336 | CONFIG_MTD_CFI=y | ||
337 | CONFIG_MTD_JEDECPROBE=y | ||
338 | CONFIG_MTD_GEN_PROBE=y | ||
339 | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
340 | CONFIG_MTD_CFI_NOSWAP=y | ||
341 | # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | ||
342 | # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set | ||
343 | # CONFIG_MTD_CFI_GEOMETRY is not set | ||
344 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
345 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
346 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
347 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
348 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
349 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
350 | CONFIG_MTD_CFI_I1=y | ||
351 | CONFIG_MTD_CFI_I2=y | ||
352 | # CONFIG_MTD_CFI_I4 is not set | ||
353 | # CONFIG_MTD_CFI_I8 is not set | ||
354 | # CONFIG_MTD_OTP is not set | ||
355 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
356 | CONFIG_MTD_CFI_AMDSTD=y | ||
357 | # CONFIG_MTD_CFI_STAA is not set | ||
358 | CONFIG_MTD_CFI_UTIL=y | ||
359 | # CONFIG_MTD_RAM is not set | ||
360 | # CONFIG_MTD_ROM is not set | ||
361 | # CONFIG_MTD_ABSENT is not set | ||
362 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
363 | |||
364 | # | ||
365 | # Mapping drivers for chip access | ||
366 | # | ||
367 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
368 | CONFIG_MTD_PHYSMAP=y | ||
369 | CONFIG_MTD_PHYSMAP_START=0x8000000 | ||
370 | CONFIG_MTD_PHYSMAP_LEN=0x0 | ||
371 | CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | ||
372 | # CONFIG_MTD_PCI is not set | ||
373 | # CONFIG_MTD_PLATRAM is not set | ||
374 | |||
375 | # | ||
376 | # Self-contained MTD device drivers | ||
377 | # | ||
378 | # CONFIG_MTD_PMC551 is not set | ||
379 | # CONFIG_MTD_SLRAM is not set | ||
380 | # CONFIG_MTD_PHRAM is not set | ||
381 | # CONFIG_MTD_MTDRAM is not set | ||
382 | # CONFIG_MTD_BLOCK2MTD is not set | ||
383 | |||
384 | # | ||
385 | # Disk-On-Chip Device Drivers | ||
386 | # | ||
387 | # CONFIG_MTD_DOC2000 is not set | ||
388 | # CONFIG_MTD_DOC2001 is not set | ||
389 | # CONFIG_MTD_DOC2001PLUS is not set | ||
390 | |||
391 | # | ||
392 | # NAND Flash Device Drivers | ||
393 | # | ||
394 | # CONFIG_MTD_NAND is not set | ||
395 | # CONFIG_MTD_NAND_CAFE is not set | ||
396 | |||
397 | # | ||
398 | # OneNAND Flash Device Drivers | ||
399 | # | ||
400 | # CONFIG_MTD_ONENAND is not set | ||
401 | |||
402 | # | ||
403 | # Parallel port support | ||
404 | # | ||
405 | # CONFIG_PARPORT is not set | ||
406 | |||
407 | # | ||
408 | # Plug and Play support | ||
409 | # | ||
410 | |||
411 | # | ||
412 | # Block devices | ||
413 | # | ||
414 | # CONFIG_BLK_DEV_FD is not set | ||
415 | # CONFIG_BLK_CPQ_DA is not set | ||
416 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
417 | # CONFIG_BLK_DEV_DAC960 is not set | ||
418 | # CONFIG_BLK_DEV_UMEM is not set | ||
419 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
420 | # CONFIG_BLK_DEV_LOOP is not set | ||
421 | # CONFIG_BLK_DEV_NBD is not set | ||
422 | # CONFIG_BLK_DEV_SX8 is not set | ||
423 | CONFIG_BLK_DEV_RAM=y | ||
424 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
425 | CONFIG_BLK_DEV_RAM_SIZE=65536 | ||
426 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
427 | CONFIG_BLK_DEV_INITRD=y | ||
428 | # CONFIG_CDROM_PKTCDVD is not set | ||
429 | # CONFIG_ATA_OVER_ETH is not set | ||
430 | |||
431 | # | ||
432 | # Misc devices | ||
433 | # | ||
434 | # CONFIG_SGI_IOC4 is not set | ||
435 | # CONFIG_TIFM_CORE is not set | ||
436 | |||
437 | # | ||
438 | # ATA/ATAPI/MFM/RLL support | ||
439 | # | ||
440 | # CONFIG_IDE is not set | ||
441 | |||
442 | # | ||
443 | # SCSI device support | ||
444 | # | ||
445 | # CONFIG_RAID_ATTRS is not set | ||
446 | # CONFIG_SCSI is not set | ||
447 | # CONFIG_SCSI_NETLINK is not set | ||
448 | |||
449 | # | ||
450 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
451 | # | ||
452 | # CONFIG_ATA is not set | ||
453 | |||
454 | # | ||
455 | # Multi-device support (RAID and LVM) | ||
456 | # | ||
457 | # CONFIG_MD is not set | ||
458 | |||
459 | # | ||
460 | # Fusion MPT device support | ||
461 | # | ||
462 | # CONFIG_FUSION is not set | ||
463 | |||
464 | # | ||
465 | # IEEE 1394 (FireWire) support | ||
466 | # | ||
467 | # CONFIG_IEEE1394 is not set | ||
468 | |||
469 | # | ||
470 | # I2O device support | ||
471 | # | ||
472 | # CONFIG_I2O is not set | ||
473 | |||
474 | # | ||
475 | # Macintosh device drivers | ||
476 | # | ||
477 | # CONFIG_MAC_EMUMOUSEBTN is not set | ||
478 | # CONFIG_WINDFARM is not set | ||
479 | |||
480 | # | ||
481 | # Network device support | ||
482 | # | ||
483 | CONFIG_NETDEVICES=y | ||
484 | # CONFIG_DUMMY is not set | ||
485 | # CONFIG_BONDING is not set | ||
486 | # CONFIG_EQUALIZER is not set | ||
487 | # CONFIG_TUN is not set | ||
488 | |||
489 | # | ||
490 | # ARCnet devices | ||
491 | # | ||
492 | # CONFIG_ARCNET is not set | ||
493 | |||
494 | # | ||
495 | # PHY device support | ||
496 | # | ||
497 | # CONFIG_PHYLIB is not set | ||
498 | |||
499 | # | ||
500 | # Ethernet (10 or 100Mbit) | ||
501 | # | ||
502 | CONFIG_NET_ETHERNET=y | ||
503 | CONFIG_MII=y | ||
504 | # CONFIG_HAPPYMEAL is not set | ||
505 | # CONFIG_SUNGEM is not set | ||
506 | # CONFIG_CASSINI is not set | ||
507 | # CONFIG_NET_VENDOR_3COM is not set | ||
508 | |||
509 | # | ||
510 | # Tulip family network device support | ||
511 | # | ||
512 | # CONFIG_NET_TULIP is not set | ||
513 | # CONFIG_HP100 is not set | ||
514 | CONFIG_IBM_EMAC=y | ||
515 | CONFIG_IBM_EMAC_RXB=128 | ||
516 | CONFIG_IBM_EMAC_TXB=128 | ||
517 | CONFIG_IBM_EMAC_POLL_WEIGHT=32 | ||
518 | CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256 | ||
519 | CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0 | ||
520 | CONFIG_IBM_EMAC_PHY_RX_CLK_FIX=y | ||
521 | # CONFIG_IBM_EMAC_DEBUG is not set | ||
522 | CONFIG_IBM_EMAC_ZMII=y | ||
523 | CONFIG_IBM_EMAC_RGMII=y | ||
524 | CONFIG_IBM_EMAC_TAH=y | ||
525 | CONFIG_NET_PCI=y | ||
526 | # CONFIG_PCNET32 is not set | ||
527 | # CONFIG_AMD8111_ETH is not set | ||
528 | # CONFIG_ADAPTEC_STARFIRE is not set | ||
529 | # CONFIG_B44 is not set | ||
530 | # CONFIG_FORCEDETH is not set | ||
531 | # CONFIG_DGRS is not set | ||
532 | # CONFIG_EEPRO100 is not set | ||
533 | CONFIG_E100=y | ||
534 | # CONFIG_FEALNX is not set | ||
535 | # CONFIG_NATSEMI is not set | ||
536 | # CONFIG_NE2K_PCI is not set | ||
537 | # CONFIG_8139CP is not set | ||
538 | # CONFIG_8139TOO is not set | ||
539 | # CONFIG_SIS900 is not set | ||
540 | # CONFIG_EPIC100 is not set | ||
541 | # CONFIG_SUNDANCE is not set | ||
542 | # CONFIG_TLAN is not set | ||
543 | # CONFIG_VIA_RHINE is not set | ||
544 | # CONFIG_SC92031 is not set | ||
545 | |||
546 | # | ||
547 | # Ethernet (1000 Mbit) | ||
548 | # | ||
549 | # CONFIG_ACENIC is not set | ||
550 | # CONFIG_DL2K is not set | ||
551 | # CONFIG_E1000 is not set | ||
552 | # CONFIG_NS83820 is not set | ||
553 | # CONFIG_HAMACHI is not set | ||
554 | # CONFIG_YELLOWFIN is not set | ||
555 | # CONFIG_R8169 is not set | ||
556 | # CONFIG_SIS190 is not set | ||
557 | # CONFIG_SKGE is not set | ||
558 | # CONFIG_SKY2 is not set | ||
559 | # CONFIG_SK98LIN is not set | ||
560 | # CONFIG_VIA_VELOCITY is not set | ||
561 | # CONFIG_TIGON3 is not set | ||
562 | # CONFIG_BNX2 is not set | ||
563 | # CONFIG_QLA3XXX is not set | ||
564 | # CONFIG_ATL1 is not set | ||
565 | |||
566 | # | ||
567 | # Ethernet (10000 Mbit) | ||
568 | # | ||
569 | # CONFIG_CHELSIO_T1 is not set | ||
570 | # CONFIG_CHELSIO_T3 is not set | ||
571 | # CONFIG_IXGB is not set | ||
572 | # CONFIG_S2IO is not set | ||
573 | # CONFIG_MYRI10GE is not set | ||
574 | # CONFIG_NETXEN_NIC is not set | ||
575 | |||
576 | # | ||
577 | # Token Ring devices | ||
578 | # | ||
579 | # CONFIG_TR is not set | ||
580 | |||
581 | # | ||
582 | # Wireless LAN (non-hamradio) | ||
583 | # | ||
584 | # CONFIG_NET_RADIO is not set | ||
585 | |||
586 | # | ||
587 | # Wan interfaces | ||
588 | # | ||
589 | # CONFIG_WAN is not set | ||
590 | # CONFIG_FDDI is not set | ||
591 | # CONFIG_HIPPI is not set | ||
592 | CONFIG_PPP=y | ||
593 | # CONFIG_PPP_MULTILINK is not set | ||
594 | # CONFIG_PPP_FILTER is not set | ||
595 | # CONFIG_PPP_ASYNC is not set | ||
596 | # CONFIG_PPP_SYNC_TTY is not set | ||
597 | # CONFIG_PPP_DEFLATE is not set | ||
598 | # CONFIG_PPP_BSDCOMP is not set | ||
599 | # CONFIG_PPP_MPPE is not set | ||
600 | CONFIG_PPPOE=y | ||
601 | # CONFIG_SLIP is not set | ||
602 | CONFIG_SLHC=y | ||
603 | # CONFIG_SHAPER is not set | ||
604 | # CONFIG_NETCONSOLE is not set | ||
605 | # CONFIG_NETPOLL is not set | ||
606 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
607 | |||
608 | # | ||
609 | # ISDN subsystem | ||
610 | # | ||
611 | # CONFIG_ISDN is not set | ||
612 | |||
613 | # | ||
614 | # Telephony Support | ||
615 | # | ||
616 | # CONFIG_PHONE is not set | ||
617 | |||
618 | # | ||
619 | # Input device support | ||
620 | # | ||
621 | # CONFIG_INPUT is not set | ||
622 | |||
623 | # | ||
624 | # Hardware I/O ports | ||
625 | # | ||
626 | CONFIG_SERIO=y | ||
627 | # CONFIG_SERIO_I8042 is not set | ||
628 | # CONFIG_SERIO_SERPORT is not set | ||
629 | # CONFIG_SERIO_PCIPS2 is not set | ||
630 | # CONFIG_SERIO_LIBPS2 is not set | ||
631 | # CONFIG_SERIO_RAW is not set | ||
632 | # CONFIG_GAMEPORT is not set | ||
633 | |||
634 | # | ||
635 | # Character devices | ||
636 | # | ||
637 | # CONFIG_VT is not set | ||
638 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
639 | |||
640 | # | ||
641 | # Serial drivers | ||
642 | # | ||
643 | CONFIG_SERIAL_8250=y | ||
644 | CONFIG_SERIAL_8250_CONSOLE=y | ||
645 | CONFIG_SERIAL_8250_PCI=y | ||
646 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
647 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
648 | CONFIG_SERIAL_8250_EXTENDED=y | ||
649 | # CONFIG_SERIAL_8250_MANY_PORTS is not set | ||
650 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
651 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
652 | # CONFIG_SERIAL_8250_RSA is not set | ||
653 | |||
654 | # | ||
655 | # Non-8250 serial port support | ||
656 | # | ||
657 | # CONFIG_SERIAL_UARTLITE is not set | ||
658 | CONFIG_SERIAL_CORE=y | ||
659 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
660 | # CONFIG_SERIAL_JSM is not set | ||
661 | CONFIG_UNIX98_PTYS=y | ||
662 | CONFIG_LEGACY_PTYS=y | ||
663 | CONFIG_LEGACY_PTY_COUNT=256 | ||
664 | |||
665 | # | ||
666 | # IPMI | ||
667 | # | ||
668 | # CONFIG_IPMI_HANDLER is not set | ||
669 | |||
670 | # | ||
671 | # Watchdog Cards | ||
672 | # | ||
673 | # CONFIG_WATCHDOG is not set | ||
674 | CONFIG_HW_RANDOM=m | ||
675 | # CONFIG_NVRAM is not set | ||
676 | # CONFIG_GEN_RTC is not set | ||
677 | # CONFIG_DTLK is not set | ||
678 | # CONFIG_R3964 is not set | ||
679 | # CONFIG_APPLICOM is not set | ||
680 | # CONFIG_AGP is not set | ||
681 | # CONFIG_DRM is not set | ||
682 | # CONFIG_RAW_DRIVER is not set | ||
683 | |||
684 | # | ||
685 | # TPM devices | ||
686 | # | ||
687 | # CONFIG_TCG_TPM is not set | ||
688 | |||
689 | # | ||
690 | # I2C support | ||
691 | # | ||
692 | CONFIG_I2C=y | ||
693 | CONFIG_I2C_CHARDEV=y | ||
694 | |||
695 | # | ||
696 | # I2C Algorithms | ||
697 | # | ||
698 | # CONFIG_I2C_ALGOBIT is not set | ||
699 | # CONFIG_I2C_ALGOPCF is not set | ||
700 | # CONFIG_I2C_ALGOPCA is not set | ||
701 | |||
702 | # | ||
703 | # I2C Hardware Bus support | ||
704 | # | ||
705 | # CONFIG_I2C_ALI1535 is not set | ||
706 | # CONFIG_I2C_ALI1563 is not set | ||
707 | # CONFIG_I2C_ALI15X3 is not set | ||
708 | # CONFIG_I2C_AMD756 is not set | ||
709 | # CONFIG_I2C_AMD8111 is not set | ||
710 | # CONFIG_I2C_I801 is not set | ||
711 | # CONFIG_I2C_I810 is not set | ||
712 | # CONFIG_I2C_PIIX4 is not set | ||
713 | CONFIG_I2C_IBM_IIC=y | ||
714 | # CONFIG_I2C_MPC is not set | ||
715 | # CONFIG_I2C_NFORCE2 is not set | ||
716 | # CONFIG_I2C_OCORES is not set | ||
717 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
718 | # CONFIG_I2C_PROSAVAGE is not set | ||
719 | # CONFIG_I2C_SAVAGE4 is not set | ||
720 | # CONFIG_I2C_SIS5595 is not set | ||
721 | # CONFIG_I2C_SIS630 is not set | ||
722 | # CONFIG_I2C_SIS96X is not set | ||
723 | # CONFIG_I2C_STUB is not set | ||
724 | # CONFIG_I2C_VIA is not set | ||
725 | # CONFIG_I2C_VIAPRO is not set | ||
726 | # CONFIG_I2C_VOODOO3 is not set | ||
727 | # CONFIG_I2C_PCA_ISA is not set | ||
728 | |||
729 | # | ||
730 | # Miscellaneous I2C Chip support | ||
731 | # | ||
732 | # CONFIG_SENSORS_DS1337 is not set | ||
733 | # CONFIG_SENSORS_DS1374 is not set | ||
734 | CONFIG_SENSORS_EEPROM=y | ||
735 | # CONFIG_SENSORS_PCF8574 is not set | ||
736 | # CONFIG_SENSORS_PCA9539 is not set | ||
737 | # CONFIG_SENSORS_PCF8591 is not set | ||
738 | # CONFIG_SENSORS_M41T00 is not set | ||
739 | # CONFIG_SENSORS_MAX6875 is not set | ||
740 | # CONFIG_I2C_DEBUG_CORE is not set | ||
741 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
742 | # CONFIG_I2C_DEBUG_BUS is not set | ||
743 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
744 | |||
745 | # | ||
746 | # SPI support | ||
747 | # | ||
748 | # CONFIG_SPI is not set | ||
749 | # CONFIG_SPI_MASTER is not set | ||
750 | |||
751 | # | ||
752 | # Dallas's 1-wire bus | ||
753 | # | ||
754 | # CONFIG_W1 is not set | ||
755 | |||
756 | # | ||
757 | # Hardware Monitoring support | ||
758 | # | ||
759 | CONFIG_HWMON=y | ||
760 | # CONFIG_HWMON_VID is not set | ||
761 | # CONFIG_SENSORS_ABITUGURU is not set | ||
762 | # CONFIG_SENSORS_ADM1021 is not set | ||
763 | # CONFIG_SENSORS_ADM1025 is not set | ||
764 | # CONFIG_SENSORS_ADM1026 is not set | ||
765 | # CONFIG_SENSORS_ADM1031 is not set | ||
766 | # CONFIG_SENSORS_ADM9240 is not set | ||
767 | # CONFIG_SENSORS_ASB100 is not set | ||
768 | # CONFIG_SENSORS_ATXP1 is not set | ||
769 | # CONFIG_SENSORS_DS1621 is not set | ||
770 | # CONFIG_SENSORS_F71805F is not set | ||
771 | # CONFIG_SENSORS_FSCHER is not set | ||
772 | # CONFIG_SENSORS_FSCPOS is not set | ||
773 | # CONFIG_SENSORS_GL518SM is not set | ||
774 | # CONFIG_SENSORS_GL520SM is not set | ||
775 | # CONFIG_SENSORS_IT87 is not set | ||
776 | # CONFIG_SENSORS_LM63 is not set | ||
777 | # CONFIG_SENSORS_LM75 is not set | ||
778 | # CONFIG_SENSORS_LM77 is not set | ||
779 | # CONFIG_SENSORS_LM78 is not set | ||
780 | # CONFIG_SENSORS_LM80 is not set | ||
781 | # CONFIG_SENSORS_LM83 is not set | ||
782 | # CONFIG_SENSORS_LM85 is not set | ||
783 | # CONFIG_SENSORS_LM87 is not set | ||
784 | # CONFIG_SENSORS_LM90 is not set | ||
785 | # CONFIG_SENSORS_LM92 is not set | ||
786 | # CONFIG_SENSORS_MAX1619 is not set | ||
787 | # CONFIG_SENSORS_PC87360 is not set | ||
788 | # CONFIG_SENSORS_PC87427 is not set | ||
789 | # CONFIG_SENSORS_SIS5595 is not set | ||
790 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
791 | # CONFIG_SENSORS_SMSC47M192 is not set | ||
792 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
793 | # CONFIG_SENSORS_VIA686A is not set | ||
794 | # CONFIG_SENSORS_VT1211 is not set | ||
795 | # CONFIG_SENSORS_VT8231 is not set | ||
796 | # CONFIG_SENSORS_W83781D is not set | ||
797 | # CONFIG_SENSORS_W83791D is not set | ||
798 | # CONFIG_SENSORS_W83792D is not set | ||
799 | # CONFIG_SENSORS_W83793 is not set | ||
800 | # CONFIG_SENSORS_W83L785TS is not set | ||
801 | # CONFIG_SENSORS_W83627HF is not set | ||
802 | # CONFIG_SENSORS_W83627EHF is not set | ||
803 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
804 | |||
805 | # | ||
806 | # Multimedia devices | ||
807 | # | ||
808 | # CONFIG_VIDEO_DEV is not set | ||
809 | |||
810 | # | ||
811 | # Digital Video Broadcasting Devices | ||
812 | # | ||
813 | # CONFIG_DVB is not set | ||
814 | |||
815 | # | ||
816 | # Graphics support | ||
817 | # | ||
818 | CONFIG_FIRMWARE_EDID=y | ||
819 | # CONFIG_FB is not set | ||
820 | # CONFIG_FB_IBM_GXT4500 is not set | ||
821 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
822 | |||
823 | # | ||
824 | # Sound | ||
825 | # | ||
826 | # CONFIG_SOUND is not set | ||
827 | |||
828 | # | ||
829 | # USB support | ||
830 | # | ||
831 | CONFIG_USB_ARCH_HAS_HCD=y | ||
832 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
833 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
834 | # CONFIG_USB is not set | ||
835 | |||
836 | # | ||
837 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
838 | # | ||
839 | |||
840 | # | ||
841 | # USB Gadget Support | ||
842 | # | ||
843 | # CONFIG_USB_GADGET is not set | ||
844 | |||
845 | # | ||
846 | # MMC/SD Card support | ||
847 | # | ||
848 | # CONFIG_MMC is not set | ||
849 | |||
850 | # | ||
851 | # LED devices | ||
852 | # | ||
853 | # CONFIG_NEW_LEDS is not set | ||
854 | |||
855 | # | ||
856 | # LED drivers | ||
857 | # | ||
858 | |||
859 | # | ||
860 | # LED Triggers | ||
861 | # | ||
862 | |||
863 | # | ||
864 | # InfiniBand support | ||
865 | # | ||
866 | # CONFIG_INFINIBAND is not set | ||
867 | |||
868 | # | ||
869 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
870 | # | ||
871 | |||
872 | # | ||
873 | # Real Time Clock | ||
874 | # | ||
875 | # CONFIG_RTC_CLASS is not set | ||
876 | |||
877 | # | ||
878 | # DMA Engine support | ||
879 | # | ||
880 | # CONFIG_DMA_ENGINE is not set | ||
881 | |||
882 | # | ||
883 | # DMA Clients | ||
884 | # | ||
885 | |||
886 | # | ||
887 | # DMA Devices | ||
888 | # | ||
889 | |||
890 | # | ||
891 | # Auxiliary Display support | ||
892 | # | ||
893 | |||
894 | # | ||
895 | # Virtualization | ||
896 | # | ||
897 | |||
898 | # | ||
899 | # File systems | ||
900 | # | ||
901 | CONFIG_EXT2_FS=y | ||
902 | CONFIG_EXT2_FS_XATTR=y | ||
903 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
904 | CONFIG_EXT2_FS_SECURITY=y | ||
905 | CONFIG_EXT2_FS_XIP=y | ||
906 | CONFIG_FS_XIP=y | ||
907 | CONFIG_EXT3_FS=y | ||
908 | CONFIG_EXT3_FS_XATTR=y | ||
909 | CONFIG_EXT3_FS_POSIX_ACL=y | ||
910 | CONFIG_EXT3_FS_SECURITY=y | ||
911 | # CONFIG_EXT4DEV_FS is not set | ||
912 | CONFIG_JBD=y | ||
913 | CONFIG_JBD_DEBUG=y | ||
914 | CONFIG_FS_MBCACHE=y | ||
915 | # CONFIG_REISERFS_FS is not set | ||
916 | # CONFIG_JFS_FS is not set | ||
917 | CONFIG_FS_POSIX_ACL=y | ||
918 | # CONFIG_XFS_FS is not set | ||
919 | # CONFIG_GFS2_FS is not set | ||
920 | # CONFIG_OCFS2_FS is not set | ||
921 | # CONFIG_MINIX_FS is not set | ||
922 | # CONFIG_ROMFS_FS is not set | ||
923 | CONFIG_INOTIFY=y | ||
924 | CONFIG_INOTIFY_USER=y | ||
925 | # CONFIG_QUOTA is not set | ||
926 | CONFIG_DNOTIFY=y | ||
927 | # CONFIG_AUTOFS_FS is not set | ||
928 | # CONFIG_AUTOFS4_FS is not set | ||
929 | # CONFIG_FUSE_FS is not set | ||
930 | |||
931 | # | ||
932 | # CD-ROM/DVD Filesystems | ||
933 | # | ||
934 | # CONFIG_ISO9660_FS is not set | ||
935 | # CONFIG_UDF_FS is not set | ||
936 | |||
937 | # | ||
938 | # DOS/FAT/NT Filesystems | ||
939 | # | ||
940 | # CONFIG_MSDOS_FS is not set | ||
941 | # CONFIG_VFAT_FS is not set | ||
942 | # CONFIG_NTFS_FS is not set | ||
943 | |||
944 | # | ||
945 | # Pseudo filesystems | ||
946 | # | ||
947 | CONFIG_PROC_FS=y | ||
948 | CONFIG_PROC_KCORE=y | ||
949 | CONFIG_PROC_SYSCTL=y | ||
950 | CONFIG_SYSFS=y | ||
951 | CONFIG_TMPFS=y | ||
952 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
953 | # CONFIG_HUGETLB_PAGE is not set | ||
954 | CONFIG_RAMFS=y | ||
955 | # CONFIG_CONFIGFS_FS is not set | ||
956 | |||
957 | # | ||
958 | # Miscellaneous filesystems | ||
959 | # | ||
960 | # CONFIG_ADFS_FS is not set | ||
961 | # CONFIG_AFFS_FS is not set | ||
962 | # CONFIG_HFS_FS is not set | ||
963 | # CONFIG_HFSPLUS_FS is not set | ||
964 | # CONFIG_BEFS_FS is not set | ||
965 | # CONFIG_BFS_FS is not set | ||
966 | # CONFIG_EFS_FS is not set | ||
967 | CONFIG_JFFS2_FS=y | ||
968 | CONFIG_JFFS2_FS_DEBUG=0 | ||
969 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
970 | CONFIG_JFFS2_SUMMARY=y | ||
971 | # CONFIG_JFFS2_FS_XATTR is not set | ||
972 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
973 | CONFIG_JFFS2_ZLIB=y | ||
974 | CONFIG_JFFS2_RTIME=y | ||
975 | # CONFIG_JFFS2_RUBIN is not set | ||
976 | # CONFIG_CRAMFS is not set | ||
977 | # CONFIG_VXFS_FS is not set | ||
978 | # CONFIG_HPFS_FS is not set | ||
979 | # CONFIG_QNX4FS_FS is not set | ||
980 | # CONFIG_SYSV_FS is not set | ||
981 | # CONFIG_UFS_FS is not set | ||
982 | |||
983 | # | ||
984 | # Network File Systems | ||
985 | # | ||
986 | CONFIG_NFS_FS=y | ||
987 | # CONFIG_NFS_V3 is not set | ||
988 | # CONFIG_NFS_V4 is not set | ||
989 | # CONFIG_NFS_DIRECTIO is not set | ||
990 | # CONFIG_NFSD is not set | ||
991 | CONFIG_ROOT_NFS=y | ||
992 | CONFIG_LOCKD=y | ||
993 | CONFIG_NFS_COMMON=y | ||
994 | CONFIG_SUNRPC=y | ||
995 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
996 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
997 | # CONFIG_SMB_FS is not set | ||
998 | # CONFIG_CIFS is not set | ||
999 | # CONFIG_NCP_FS is not set | ||
1000 | # CONFIG_CODA_FS is not set | ||
1001 | # CONFIG_AFS_FS is not set | ||
1002 | # CONFIG_9P_FS is not set | ||
1003 | |||
1004 | # | ||
1005 | # Partition Types | ||
1006 | # | ||
1007 | # CONFIG_PARTITION_ADVANCED is not set | ||
1008 | CONFIG_MSDOS_PARTITION=y | ||
1009 | |||
1010 | # | ||
1011 | # Native Language Support | ||
1012 | # | ||
1013 | # CONFIG_NLS is not set | ||
1014 | |||
1015 | # | ||
1016 | # Distributed Lock Manager | ||
1017 | # | ||
1018 | # CONFIG_DLM is not set | ||
1019 | |||
1020 | # | ||
1021 | # Library routines | ||
1022 | # | ||
1023 | CONFIG_BITREVERSE=y | ||
1024 | # CONFIG_CRC_CCITT is not set | ||
1025 | # CONFIG_CRC16 is not set | ||
1026 | CONFIG_CRC32=y | ||
1027 | # CONFIG_LIBCRC32C is not set | ||
1028 | CONFIG_ZLIB_INFLATE=y | ||
1029 | CONFIG_ZLIB_DEFLATE=y | ||
1030 | CONFIG_PLIST=y | ||
1031 | CONFIG_HAS_IOMEM=y | ||
1032 | CONFIG_HAS_IOPORT=y | ||
1033 | # CONFIG_PROFILING is not set | ||
1034 | |||
1035 | # | ||
1036 | # Kernel hacking | ||
1037 | # | ||
1038 | # CONFIG_PRINTK_TIME is not set | ||
1039 | CONFIG_ENABLE_MUST_CHECK=y | ||
1040 | # CONFIG_MAGIC_SYSRQ is not set | ||
1041 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1042 | CONFIG_DEBUG_FS=y | ||
1043 | # CONFIG_HEADERS_CHECK is not set | ||
1044 | CONFIG_DEBUG_KERNEL=y | ||
1045 | CONFIG_LOG_BUF_SHIFT=14 | ||
1046 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1047 | # CONFIG_SCHEDSTATS is not set | ||
1048 | # CONFIG_DEBUG_SLAB is not set | ||
1049 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
1050 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1051 | # CONFIG_DEBUG_SPINLOCK is not set | ||
1052 | CONFIG_DEBUG_MUTEXES=y | ||
1053 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
1054 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1055 | # CONFIG_DEBUG_KOBJECT is not set | ||
1056 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1057 | CONFIG_DEBUG_INFO=y | ||
1058 | # CONFIG_DEBUG_VM is not set | ||
1059 | # CONFIG_DEBUG_LIST is not set | ||
1060 | CONFIG_FORCED_INLINING=y | ||
1061 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1062 | # CONFIG_KGDB is not set | ||
1063 | # CONFIG_XMON is not set | ||
1064 | CONFIG_BDI_SWITCH=y | ||
1065 | # CONFIG_SERIAL_TEXT_DEBUG is not set | ||
1066 | CONFIG_PPC_OCP=y | ||
1067 | |||
1068 | # | ||
1069 | # Security options | ||
1070 | # | ||
1071 | # CONFIG_KEYS is not set | ||
1072 | # CONFIG_SECURITY is not set | ||
1073 | |||
1074 | # | ||
1075 | # Cryptographic options | ||
1076 | # | ||
1077 | # CONFIG_CRYPTO is not set | ||
diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c index 3c506af19880..c79704f5409c 100644 --- a/arch/ppc/kernel/setup.c +++ b/arch/ppc/kernel/setup.c | |||
@@ -543,7 +543,7 @@ void __init setup_arch(char **cmdline_p) | |||
543 | init_mm.brk = (unsigned long) klimit; | 543 | init_mm.brk = (unsigned long) klimit; |
544 | 544 | ||
545 | /* Save unparsed command line copy for /proc/cmdline */ | 545 | /* Save unparsed command line copy for /proc/cmdline */ |
546 | strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE); | 546 | strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE); |
547 | *cmdline_p = cmd_line; | 547 | *cmdline_p = cmd_line; |
548 | 548 | ||
549 | parse_early_param(); | 549 | parse_early_param(); |
diff --git a/arch/ppc/kernel/vmlinux.lds.S b/arch/ppc/kernel/vmlinux.lds.S index 61921268a0d0..a0625562a44b 100644 --- a/arch/ppc/kernel/vmlinux.lds.S +++ b/arch/ppc/kernel/vmlinux.lds.S | |||
@@ -135,10 +135,12 @@ SECTIONS | |||
135 | .data.percpu : { *(.data.percpu) } | 135 | .data.percpu : { *(.data.percpu) } |
136 | __per_cpu_end = .; | 136 | __per_cpu_end = .; |
137 | 137 | ||
138 | #ifdef CONFIG_BLK_DEV_INITRD | ||
138 | . = ALIGN(4096); | 139 | . = ALIGN(4096); |
139 | __initramfs_start = .; | 140 | __initramfs_start = .; |
140 | .init.ramfs : { *(.init.ramfs) } | 141 | .init.ramfs : { *(.init.ramfs) } |
141 | __initramfs_end = .; | 142 | __initramfs_end = .; |
143 | #endif | ||
142 | 144 | ||
143 | . = ALIGN(4096); | 145 | . = ALIGN(4096); |
144 | __init_end = .; | 146 | __init_end = .; |
diff --git a/arch/ppc/platforms/4xx/Kconfig b/arch/ppc/platforms/4xx/Kconfig index 6980de420e92..705ae56016f0 100644 --- a/arch/ppc/platforms/4xx/Kconfig +++ b/arch/ppc/platforms/4xx/Kconfig | |||
@@ -98,6 +98,12 @@ config OCOTEA | |||
98 | help | 98 | help |
99 | This option enables support for the IBM PPC440GX evaluation board. | 99 | This option enables support for the IBM PPC440GX evaluation board. |
100 | 100 | ||
101 | config TAISHAN | ||
102 | bool "Taishan" | ||
103 | select WANT_EARLY_SERIAL | ||
104 | help | ||
105 | This option enables support for the AMCC PPC440GX evaluation board. | ||
106 | |||
101 | endchoice | 107 | endchoice |
102 | 108 | ||
103 | config EP405PC | 109 | config EP405PC |
@@ -126,7 +132,7 @@ config 440GP | |||
126 | 132 | ||
127 | config 440GX | 133 | config 440GX |
128 | bool | 134 | bool |
129 | depends on OCOTEA | 135 | depends on OCOTEA || TAISHAN |
130 | default y | 136 | default y |
131 | 137 | ||
132 | config 440SP | 138 | config 440SP |
@@ -173,7 +179,7 @@ config BOOKE | |||
173 | 179 | ||
174 | config IBM_OCP | 180 | config IBM_OCP |
175 | bool | 181 | bool |
176 | depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT | 182 | depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || TAISHAN || WALNUT |
177 | default y | 183 | default y |
178 | 184 | ||
179 | config IBM_EMAC4 | 185 | config IBM_EMAC4 |
diff --git a/arch/ppc/platforms/4xx/Makefile b/arch/ppc/platforms/4xx/Makefile index a04a0d0a0f5c..fa6610bccaf9 100644 --- a/arch/ppc/platforms/4xx/Makefile +++ b/arch/ppc/platforms/4xx/Makefile | |||
@@ -12,6 +12,7 @@ obj-$(CONFIG_OCOTEA) += ocotea.o | |||
12 | obj-$(CONFIG_REDWOOD_5) += redwood5.o | 12 | obj-$(CONFIG_REDWOOD_5) += redwood5.o |
13 | obj-$(CONFIG_REDWOOD_6) += redwood6.o | 13 | obj-$(CONFIG_REDWOOD_6) += redwood6.o |
14 | obj-$(CONFIG_SYCAMORE) += sycamore.o | 14 | obj-$(CONFIG_SYCAMORE) += sycamore.o |
15 | obj-$(CONFIG_TAISHAN) += taishan.o | ||
15 | obj-$(CONFIG_WALNUT) += walnut.o | 16 | obj-$(CONFIG_WALNUT) += walnut.o |
16 | obj-$(CONFIG_XILINX_ML300) += xilinx_ml300.o | 17 | obj-$(CONFIG_XILINX_ML300) += xilinx_ml300.o |
17 | obj-$(CONFIG_XILINX_ML403) += xilinx_ml403.o | 18 | obj-$(CONFIG_XILINX_ML403) += xilinx_ml403.o |
diff --git a/arch/ppc/platforms/4xx/taishan.c b/arch/ppc/platforms/4xx/taishan.c new file mode 100644 index 000000000000..bb0253eef45a --- /dev/null +++ b/arch/ppc/platforms/4xx/taishan.c | |||
@@ -0,0 +1,395 @@ | |||
1 | /* | ||
2 | * arch/ppc/platforms/4xx/taishan.c | ||
3 | * | ||
4 | * AMCC Taishan board specific routines | ||
5 | * | ||
6 | * Copyright 2007 DENX Software Engineering, Stefan Roese <sr@denx.de> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License as published by the | ||
10 | * Free Software Foundation; either version 2 of the License, or (at your | ||
11 | * option) any later version. | ||
12 | */ | ||
13 | |||
14 | #include <linux/stddef.h> | ||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/init.h> | ||
17 | #include <linux/errno.h> | ||
18 | #include <linux/reboot.h> | ||
19 | #include <linux/pci.h> | ||
20 | #include <linux/kdev_t.h> | ||
21 | #include <linux/types.h> | ||
22 | #include <linux/major.h> | ||
23 | #include <linux/blkdev.h> | ||
24 | #include <linux/console.h> | ||
25 | #include <linux/delay.h> | ||
26 | #include <linux/ide.h> | ||
27 | #include <linux/initrd.h> | ||
28 | #include <linux/seq_file.h> | ||
29 | #include <linux/root_dev.h> | ||
30 | #include <linux/tty.h> | ||
31 | #include <linux/serial.h> | ||
32 | #include <linux/serial_core.h> | ||
33 | #include <linux/platform_device.h> | ||
34 | #include <linux/mtd/partitions.h> | ||
35 | #include <linux/mtd/nand.h> | ||
36 | #include <linux/mtd/ndfc.h> | ||
37 | #include <linux/mtd/physmap.h> | ||
38 | |||
39 | #include <asm/machdep.h> | ||
40 | #include <asm/ocp.h> | ||
41 | #include <asm/bootinfo.h> | ||
42 | #include <asm/ppcboot.h> | ||
43 | |||
44 | #include <syslib/gen550.h> | ||
45 | #include <syslib/ibm440gx_common.h> | ||
46 | |||
47 | extern bd_t __res; | ||
48 | |||
49 | static struct ibm44x_clocks clocks __initdata; | ||
50 | |||
51 | /* | ||
52 | * NOR FLASH configuration (using mtd physmap driver) | ||
53 | */ | ||
54 | |||
55 | /* start will be added dynamically, end is always fixed */ | ||
56 | static struct resource taishan_nor_resource = { | ||
57 | .start = TAISHAN_FLASH_ADDR, | ||
58 | .end = 0x1ffffffffULL, | ||
59 | .flags = IORESOURCE_MEM, | ||
60 | }; | ||
61 | |||
62 | #define RW_PART0_OF 0 | ||
63 | #define RW_PART0_SZ 0x180000 | ||
64 | #define RW_PART1_SZ 0x200000 | ||
65 | /* Partition 2 will be autosized dynamically... */ | ||
66 | #define RW_PART3_SZ 0x80000 | ||
67 | #define RW_PART4_SZ 0x40000 | ||
68 | |||
69 | static struct mtd_partition taishan_nor_parts[] = { | ||
70 | { | ||
71 | .name = "kernel", | ||
72 | .offset = 0, | ||
73 | .size = RW_PART0_SZ | ||
74 | }, | ||
75 | { | ||
76 | .name = "root", | ||
77 | .offset = MTDPART_OFS_APPEND, | ||
78 | .size = RW_PART1_SZ, | ||
79 | }, | ||
80 | { | ||
81 | .name = "user", | ||
82 | .offset = MTDPART_OFS_APPEND, | ||
83 | /* .size = RW_PART2_SZ */ /* will be adjusted dynamically */ | ||
84 | }, | ||
85 | { | ||
86 | .name = "env", | ||
87 | .offset = MTDPART_OFS_APPEND, | ||
88 | .size = RW_PART3_SZ, | ||
89 | }, | ||
90 | { | ||
91 | .name = "u-boot", | ||
92 | .offset = MTDPART_OFS_APPEND, | ||
93 | .size = RW_PART4_SZ, | ||
94 | } | ||
95 | }; | ||
96 | |||
97 | static struct physmap_flash_data taishan_nor_data = { | ||
98 | .width = 4, | ||
99 | .parts = taishan_nor_parts, | ||
100 | .nr_parts = ARRAY_SIZE(taishan_nor_parts), | ||
101 | }; | ||
102 | |||
103 | static struct platform_device taishan_nor_device = { | ||
104 | .name = "physmap-flash", | ||
105 | .id = 0, | ||
106 | .dev = { | ||
107 | .platform_data = &taishan_nor_data, | ||
108 | }, | ||
109 | .num_resources = 1, | ||
110 | .resource = &taishan_nor_resource, | ||
111 | }; | ||
112 | |||
113 | static int taishan_setup_flash(void) | ||
114 | { | ||
115 | /* | ||
116 | * Adjust partition 2 to flash size | ||
117 | */ | ||
118 | taishan_nor_parts[2].size = __res.bi_flashsize - | ||
119 | RW_PART0_SZ - RW_PART1_SZ - RW_PART3_SZ - RW_PART4_SZ; | ||
120 | |||
121 | platform_device_register(&taishan_nor_device); | ||
122 | |||
123 | return 0; | ||
124 | } | ||
125 | arch_initcall(taishan_setup_flash); | ||
126 | |||
127 | static void __init | ||
128 | taishan_calibrate_decr(void) | ||
129 | { | ||
130 | unsigned int freq; | ||
131 | |||
132 | if (mfspr(SPRN_CCR1) & CCR1_TCS) | ||
133 | freq = TAISHAN_TMR_CLK; | ||
134 | else | ||
135 | freq = clocks.cpu; | ||
136 | |||
137 | ibm44x_calibrate_decr(freq); | ||
138 | } | ||
139 | |||
140 | static int | ||
141 | taishan_show_cpuinfo(struct seq_file *m) | ||
142 | { | ||
143 | seq_printf(m, "vendor\t\t: AMCC\n"); | ||
144 | seq_printf(m, "machine\t\t: PPC440GX EVB (Taishan)\n"); | ||
145 | ibm440gx_show_cpuinfo(m); | ||
146 | return 0; | ||
147 | } | ||
148 | |||
149 | static inline int | ||
150 | taishan_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin) | ||
151 | { | ||
152 | static char pci_irq_table[][4] = | ||
153 | /* | ||
154 | * PCI IDSEL/INTPIN->INTLINE | ||
155 | * A B C D | ||
156 | */ | ||
157 | { | ||
158 | { 23, 24, 25, 26 }, /* IDSEL 1 - PCI Slot 0 */ | ||
159 | { 24, 25, 26, 23 }, /* IDSEL 2 - PCI Slot 1 */ | ||
160 | }; | ||
161 | |||
162 | const long min_idsel = 1, max_idsel = 2, irqs_per_slot = 4; | ||
163 | return PCI_IRQ_TABLE_LOOKUP; | ||
164 | } | ||
165 | |||
166 | static void __init taishan_set_emacdata(void) | ||
167 | { | ||
168 | struct ocp_def *def; | ||
169 | struct ocp_func_emac_data *emacdata; | ||
170 | int i; | ||
171 | |||
172 | /* Set phy_map, phy_mode, and mac_addr for each EMAC */ | ||
173 | for (i=2; i<4; i++) { | ||
174 | def = ocp_get_one_device(OCP_VENDOR_IBM, OCP_FUNC_EMAC, i); | ||
175 | emacdata = def->additions; | ||
176 | if (i < 2) { | ||
177 | emacdata->phy_map = 0x00000001; /* Skip 0x00 */ | ||
178 | emacdata->phy_mode = PHY_MODE_SMII; | ||
179 | } else { | ||
180 | emacdata->phy_map = 0x00000001; /* Skip 0x00 */ | ||
181 | emacdata->phy_mode = PHY_MODE_RGMII; | ||
182 | } | ||
183 | if (i == 0) | ||
184 | memcpy(emacdata->mac_addr, "\0\0\0\0\0\0", 6); | ||
185 | else if (i == 1) | ||
186 | memcpy(emacdata->mac_addr, "\0\0\0\0\0\0", 6); | ||
187 | else if (i == 2) | ||
188 | memcpy(emacdata->mac_addr, __res.bi_enetaddr, 6); | ||
189 | else if (i == 3) | ||
190 | memcpy(emacdata->mac_addr, __res.bi_enet1addr, 6); | ||
191 | } | ||
192 | } | ||
193 | |||
194 | #define PCIX_READW(offset) \ | ||
195 | (readw(pcix_reg_base+offset)) | ||
196 | |||
197 | #define PCIX_WRITEW(value, offset) \ | ||
198 | (writew(value, pcix_reg_base+offset)) | ||
199 | |||
200 | #define PCIX_WRITEL(value, offset) \ | ||
201 | (writel(value, pcix_reg_base+offset)) | ||
202 | |||
203 | /* | ||
204 | * FIXME: This is only here to "make it work". This will move | ||
205 | * to a ibm_pcix.c which will contain a generic IBM PCIX bridge | ||
206 | * configuration library. -Matt | ||
207 | */ | ||
208 | static void __init | ||
209 | taishan_setup_pcix(void) | ||
210 | { | ||
211 | void *pcix_reg_base; | ||
212 | |||
213 | pcix_reg_base = ioremap64(PCIX0_REG_BASE, PCIX_REG_SIZE); | ||
214 | |||
215 | /* Enable PCIX0 I/O, Mem, and Busmaster cycles */ | ||
216 | PCIX_WRITEW(PCIX_READW(PCIX0_COMMAND) | PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER, PCIX0_COMMAND); | ||
217 | |||
218 | /* Disable all windows */ | ||
219 | PCIX_WRITEL(0, PCIX0_POM0SA); | ||
220 | PCIX_WRITEL(0, PCIX0_POM1SA); | ||
221 | PCIX_WRITEL(0, PCIX0_POM2SA); | ||
222 | PCIX_WRITEL(0, PCIX0_PIM0SA); | ||
223 | PCIX_WRITEL(0, PCIX0_PIM0SAH); | ||
224 | PCIX_WRITEL(0, PCIX0_PIM1SA); | ||
225 | PCIX_WRITEL(0, PCIX0_PIM2SA); | ||
226 | PCIX_WRITEL(0, PCIX0_PIM2SAH); | ||
227 | |||
228 | /* Setup 2GB PLB->PCI outbound mem window (3_8000_0000->0_8000_0000) */ | ||
229 | PCIX_WRITEL(0x00000003, PCIX0_POM0LAH); | ||
230 | PCIX_WRITEL(0x80000000, PCIX0_POM0LAL); | ||
231 | PCIX_WRITEL(0x00000000, PCIX0_POM0PCIAH); | ||
232 | PCIX_WRITEL(0x80000000, PCIX0_POM0PCIAL); | ||
233 | PCIX_WRITEL(0x80000001, PCIX0_POM0SA); | ||
234 | |||
235 | /* Setup 2GB PCI->PLB inbound memory window at 0, enable MSIs */ | ||
236 | PCIX_WRITEL(0x00000000, PCIX0_PIM0LAH); | ||
237 | PCIX_WRITEL(0x00000000, PCIX0_PIM0LAL); | ||
238 | PCIX_WRITEL(0xe0000007, PCIX0_PIM0SA); | ||
239 | PCIX_WRITEL(0xffffffff, PCIX0_PIM0SAH); | ||
240 | |||
241 | iounmap(pcix_reg_base); | ||
242 | |||
243 | eieio(); | ||
244 | } | ||
245 | |||
246 | static void __init | ||
247 | taishan_setup_hose(void) | ||
248 | { | ||
249 | struct pci_controller *hose; | ||
250 | |||
251 | /* Configure windows on the PCI-X host bridge */ | ||
252 | taishan_setup_pcix(); | ||
253 | |||
254 | hose = pcibios_alloc_controller(); | ||
255 | |||
256 | if (!hose) | ||
257 | return; | ||
258 | |||
259 | hose->first_busno = 0; | ||
260 | hose->last_busno = 0xff; | ||
261 | |||
262 | hose->pci_mem_offset = TAISHAN_PCI_MEM_OFFSET; | ||
263 | |||
264 | pci_init_resource(&hose->io_resource, | ||
265 | TAISHAN_PCI_LOWER_IO, | ||
266 | TAISHAN_PCI_UPPER_IO, | ||
267 | IORESOURCE_IO, | ||
268 | "PCI host bridge"); | ||
269 | |||
270 | pci_init_resource(&hose->mem_resources[0], | ||
271 | TAISHAN_PCI_LOWER_MEM, | ||
272 | TAISHAN_PCI_UPPER_MEM, | ||
273 | IORESOURCE_MEM, | ||
274 | "PCI host bridge"); | ||
275 | |||
276 | hose->io_space.start = TAISHAN_PCI_LOWER_IO; | ||
277 | hose->io_space.end = TAISHAN_PCI_UPPER_IO; | ||
278 | hose->mem_space.start = TAISHAN_PCI_LOWER_MEM; | ||
279 | hose->mem_space.end = TAISHAN_PCI_UPPER_MEM; | ||
280 | hose->io_base_virt = ioremap64(TAISHAN_PCI_IO_BASE, TAISHAN_PCI_IO_SIZE); | ||
281 | isa_io_base = (unsigned long) hose->io_base_virt; | ||
282 | |||
283 | setup_indirect_pci(hose, | ||
284 | TAISHAN_PCI_CFGA_PLB32, | ||
285 | TAISHAN_PCI_CFGD_PLB32); | ||
286 | hose->set_cfg_type = 1; | ||
287 | |||
288 | hose->last_busno = pciauto_bus_scan(hose, hose->first_busno); | ||
289 | |||
290 | ppc_md.pci_swizzle = common_swizzle; | ||
291 | ppc_md.pci_map_irq = taishan_map_irq; | ||
292 | } | ||
293 | |||
294 | |||
295 | static void __init | ||
296 | taishan_early_serial_map(void) | ||
297 | { | ||
298 | struct uart_port port; | ||
299 | |||
300 | /* Setup ioremapped serial port access */ | ||
301 | memset(&port, 0, sizeof(port)); | ||
302 | port.membase = ioremap64(PPC440GX_UART0_ADDR, 8); | ||
303 | port.irq = UART0_INT; | ||
304 | port.uartclk = clocks.uart0; | ||
305 | port.regshift = 0; | ||
306 | port.iotype = UPIO_MEM; | ||
307 | port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; | ||
308 | port.line = 0; | ||
309 | |||
310 | if (early_serial_setup(&port) != 0) | ||
311 | printk("Early serial init of port 0 failed\n"); | ||
312 | |||
313 | #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) | ||
314 | /* Configure debug serial access */ | ||
315 | gen550_init(0, &port); | ||
316 | |||
317 | /* Purge TLB entry added in head_44x.S for early serial access */ | ||
318 | _tlbie(UART0_IO_BASE); | ||
319 | #endif | ||
320 | |||
321 | port.membase = ioremap64(PPC440GX_UART1_ADDR, 8); | ||
322 | port.irq = UART1_INT; | ||
323 | port.uartclk = clocks.uart1; | ||
324 | port.line = 1; | ||
325 | |||
326 | if (early_serial_setup(&port) != 0) | ||
327 | printk("Early serial init of port 1 failed\n"); | ||
328 | |||
329 | #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) | ||
330 | /* Configure debug serial access */ | ||
331 | gen550_init(1, &port); | ||
332 | #endif | ||
333 | } | ||
334 | |||
335 | static void __init | ||
336 | taishan_setup_arch(void) | ||
337 | { | ||
338 | taishan_set_emacdata(); | ||
339 | |||
340 | ibm440gx_tah_enable(); | ||
341 | |||
342 | /* | ||
343 | * Determine various clocks. | ||
344 | * To be completely correct we should get SysClk | ||
345 | * from FPGA, because it can be changed by on-board switches | ||
346 | * --ebs | ||
347 | */ | ||
348 | ibm440gx_get_clocks(&clocks, 33333333, 6 * 1843200); | ||
349 | ocp_sys_info.opb_bus_freq = clocks.opb; | ||
350 | |||
351 | /* init to some ~sane value until calibrate_delay() runs */ | ||
352 | loops_per_jiffy = 50000000/HZ; | ||
353 | |||
354 | /* Setup PCI host bridge */ | ||
355 | taishan_setup_hose(); | ||
356 | |||
357 | #ifdef CONFIG_BLK_DEV_INITRD | ||
358 | if (initrd_start) | ||
359 | ROOT_DEV = Root_RAM0; | ||
360 | else | ||
361 | #endif | ||
362 | #ifdef CONFIG_ROOT_NFS | ||
363 | ROOT_DEV = Root_NFS; | ||
364 | #else | ||
365 | ROOT_DEV = Root_HDA1; | ||
366 | #endif | ||
367 | |||
368 | taishan_early_serial_map(); | ||
369 | |||
370 | /* Identify the system */ | ||
371 | printk("AMCC PowerPC 440GX Taishan Platform\n"); | ||
372 | } | ||
373 | |||
374 | static void __init taishan_init(void) | ||
375 | { | ||
376 | ibm440gx_l2c_setup(&clocks); | ||
377 | } | ||
378 | |||
379 | void __init platform_init(unsigned long r3, unsigned long r4, | ||
380 | unsigned long r5, unsigned long r6, unsigned long r7) | ||
381 | { | ||
382 | ibm44x_platform_init(r3, r4, r5, r6, r7); | ||
383 | |||
384 | ppc_md.setup_arch = taishan_setup_arch; | ||
385 | ppc_md.show_cpuinfo = taishan_show_cpuinfo; | ||
386 | ppc_md.get_irq = NULL; /* Set in ppc4xx_pic_init() */ | ||
387 | |||
388 | ppc_md.calibrate_decr = taishan_calibrate_decr; | ||
389 | |||
390 | #ifdef CONFIG_KGDB | ||
391 | ppc_md.early_serial_map = taishan_early_serial_map; | ||
392 | #endif | ||
393 | ppc_md.init = taishan_init; | ||
394 | } | ||
395 | |||
diff --git a/arch/ppc/platforms/4xx/taishan.h b/arch/ppc/platforms/4xx/taishan.h new file mode 100644 index 000000000000..ea7561a80457 --- /dev/null +++ b/arch/ppc/platforms/4xx/taishan.h | |||
@@ -0,0 +1,67 @@ | |||
1 | /* | ||
2 | * arch/ppc/platforms/4xx/taishan.h | ||
3 | * | ||
4 | * AMCC Taishan board definitions | ||
5 | * | ||
6 | * Copyright 2007 DENX Software Engineering, Stefan Roese <sr@denx.de> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License as published by the | ||
10 | * Free Software Foundation; either version 2 of the License, or (at your | ||
11 | * option) any later version. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | #ifdef __KERNEL__ | ||
16 | #ifndef __ASM_TAISHAN_H__ | ||
17 | #define __ASM_TAISHAN_H__ | ||
18 | |||
19 | #include <platforms/4xx/ibm440gx.h> | ||
20 | |||
21 | /* External timer clock frequency */ | ||
22 | #define TAISHAN_TMR_CLK 25000000 | ||
23 | |||
24 | /* Flash */ | ||
25 | #define TAISHAN_FPGA_ADDR 0x0000000141000000ULL | ||
26 | #define TAISHAN_LCM_ADDR 0x0000000142000000ULL | ||
27 | #define TAISHAN_FLASH_ADDR 0x00000001fc000000ULL | ||
28 | #define TAISHAN_FLASH_SIZE 0x4000000 | ||
29 | |||
30 | /* | ||
31 | * Serial port defines | ||
32 | */ | ||
33 | #define RS_TABLE_SIZE 2 | ||
34 | |||
35 | /* head_44x.S created UART mapping, used before early_serial_setup. | ||
36 | * We cannot use default OpenBIOS UART mappings because they | ||
37 | * don't work for configurations with more than 512M RAM. --ebs | ||
38 | */ | ||
39 | #define UART0_IO_BASE 0xF0000200 | ||
40 | #define UART1_IO_BASE 0xF0000300 | ||
41 | |||
42 | #define BASE_BAUD 11059200/16 | ||
43 | #define STD_UART_OP(num) \ | ||
44 | { 0, BASE_BAUD, 0, UART##num##_INT, \ | ||
45 | (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST), \ | ||
46 | iomem_base: (void*)UART##num##_IO_BASE, \ | ||
47 | io_type: SERIAL_IO_MEM}, | ||
48 | |||
49 | #define SERIAL_PORT_DFNS \ | ||
50 | STD_UART_OP(0) \ | ||
51 | STD_UART_OP(1) | ||
52 | |||
53 | /* PCI support */ | ||
54 | #define TAISHAN_PCI_LOWER_IO 0x00000000 | ||
55 | #define TAISHAN_PCI_UPPER_IO 0x0000ffff | ||
56 | #define TAISHAN_PCI_LOWER_MEM 0x80000000 | ||
57 | #define TAISHAN_PCI_UPPER_MEM 0xffffefff | ||
58 | |||
59 | #define TAISHAN_PCI_CFGA_PLB32 0x0ec00000 | ||
60 | #define TAISHAN_PCI_CFGD_PLB32 0x0ec00004 | ||
61 | |||
62 | #define TAISHAN_PCI_IO_BASE 0x0000000208000000ULL | ||
63 | #define TAISHAN_PCI_IO_SIZE 0x00010000 | ||
64 | #define TAISHAN_PCI_MEM_OFFSET 0x00000000 | ||
65 | |||
66 | #endif /* __ASM_TAISHAN_H__ */ | ||
67 | #endif /* __KERNEL__ */ | ||
diff --git a/arch/ppc/platforms/lopec.c b/arch/ppc/platforms/lopec.c index 18dc6e8dd4f4..b947c774f524 100644 --- a/arch/ppc/platforms/lopec.c +++ b/arch/ppc/platforms/lopec.c | |||
@@ -344,7 +344,7 @@ lopec_setup_arch(void) | |||
344 | if (bootargs != NULL) { | 344 | if (bootargs != NULL) { |
345 | strcpy(cmd_line, bootargs); | 345 | strcpy(cmd_line, bootargs); |
346 | /* again.. */ | 346 | /* again.. */ |
347 | strcpy(saved_command_line, cmd_line); | 347 | strcpy(boot_command_line, cmd_line); |
348 | } | 348 | } |
349 | } | 349 | } |
350 | #endif | 350 | #endif |
diff --git a/arch/ppc/platforms/pplus.c b/arch/ppc/platforms/pplus.c index 9778105d4dfe..8a1788c48155 100644 --- a/arch/ppc/platforms/pplus.c +++ b/arch/ppc/platforms/pplus.c | |||
@@ -592,7 +592,7 @@ static void __init pplus_setup_arch(void) | |||
592 | if (bootargs != NULL) { | 592 | if (bootargs != NULL) { |
593 | strcpy(cmd_line, bootargs); | 593 | strcpy(cmd_line, bootargs); |
594 | /* again.. */ | 594 | /* again.. */ |
595 | strcpy(saved_command_line, cmd_line); | 595 | strcpy(boot_command_line, cmd_line); |
596 | } | 596 | } |
597 | } | 597 | } |
598 | #endif | 598 | #endif |
diff --git a/arch/ppc/platforms/prep_setup.c b/arch/ppc/platforms/prep_setup.c index 1cb75a1f825e..f166299571d6 100644 --- a/arch/ppc/platforms/prep_setup.c +++ b/arch/ppc/platforms/prep_setup.c | |||
@@ -634,7 +634,7 @@ static void __init prep_init_sound(void) | |||
634 | /* | 634 | /* |
635 | * Find a way to push these informations to the cs4232 driver | 635 | * Find a way to push these informations to the cs4232 driver |
636 | * Give it out with printk, when not in cmd_line? | 636 | * Give it out with printk, when not in cmd_line? |
637 | * Append it to cmd_line and saved_command_line? | 637 | * Append it to cmd_line and boot_command_line? |
638 | * Format is cs4232=io,irq,dma,dma2 | 638 | * Format is cs4232=io,irq,dma,dma2 |
639 | */ | 639 | */ |
640 | } | 640 | } |
@@ -897,7 +897,7 @@ prep_setup_arch(void) | |||
897 | if (bootargs != NULL) { | 897 | if (bootargs != NULL) { |
898 | strcpy(cmd_line, bootargs); | 898 | strcpy(cmd_line, bootargs); |
899 | /* again.. */ | 899 | /* again.. */ |
900 | strcpy(saved_command_line, cmd_line); | 900 | strcpy(boot_command_line, cmd_line); |
901 | } | 901 | } |
902 | } | 902 | } |
903 | 903 | ||
diff --git a/arch/ppc/syslib/Makefile b/arch/ppc/syslib/Makefile index d84f04666972..09911118c675 100644 --- a/arch/ppc/syslib/Makefile +++ b/arch/ppc/syslib/Makefile | |||
@@ -69,6 +69,7 @@ obj-$(CONFIG_SANDPOINT) += pci_auto.o todc_time.o | |||
69 | obj-$(CONFIG_SBC82xx) += todc_time.o | 69 | obj-$(CONFIG_SBC82xx) += todc_time.o |
70 | obj-$(CONFIG_SPRUCE) += cpc700_pic.o pci_auto.o \ | 70 | obj-$(CONFIG_SPRUCE) += cpc700_pic.o pci_auto.o \ |
71 | todc_time.o | 71 | todc_time.o |
72 | obj-$(CONFIG_TAISHAN) += pci_auto.o | ||
72 | obj-$(CONFIG_8260) += m8260_setup.o pq2_devices.o pq2_sys.o \ | 73 | obj-$(CONFIG_8260) += m8260_setup.o pq2_devices.o pq2_sys.o \ |
73 | ppc_sys.o | 74 | ppc_sys.o |
74 | obj-$(CONFIG_PCI_8260) += m82xx_pci.o pci_auto.o | 75 | obj-$(CONFIG_PCI_8260) += m82xx_pci.o pci_auto.o |
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index eaed402ad346..eaaac3788110 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -7,6 +7,10 @@ config MMU | |||
7 | bool | 7 | bool |
8 | default y | 8 | default y |
9 | 9 | ||
10 | config ZONE_DMA | ||
11 | bool | ||
12 | default y | ||
13 | |||
10 | config LOCKDEP_SUPPORT | 14 | config LOCKDEP_SUPPORT |
11 | bool | 15 | bool |
12 | default y | 16 | default y |
@@ -37,6 +41,9 @@ config GENERIC_HWEIGHT | |||
37 | config GENERIC_TIME | 41 | config GENERIC_TIME |
38 | def_bool y | 42 | def_bool y |
39 | 43 | ||
44 | config NO_IOMEM | ||
45 | def_bool y | ||
46 | |||
40 | mainmenu "Linux Kernel Configuration" | 47 | mainmenu "Linux Kernel Configuration" |
41 | 48 | ||
42 | config S390 | 49 | config S390 |
diff --git a/arch/s390/defconfig b/arch/s390/defconfig index 7c621b8ef683..1406400bf3ea 100644 --- a/arch/s390/defconfig +++ b/arch/s390/defconfig | |||
@@ -179,6 +179,8 @@ CONFIG_XFRM=y | |||
179 | # CONFIG_XFRM_USER is not set | 179 | # CONFIG_XFRM_USER is not set |
180 | # CONFIG_XFRM_SUB_POLICY is not set | 180 | # CONFIG_XFRM_SUB_POLICY is not set |
181 | CONFIG_NET_KEY=y | 181 | CONFIG_NET_KEY=y |
182 | CONFIG_IUCV=m | ||
183 | CONFIG_AFIUCV=m | ||
182 | CONFIG_INET=y | 184 | CONFIG_INET=y |
183 | CONFIG_IP_MULTICAST=y | 185 | CONFIG_IP_MULTICAST=y |
184 | # CONFIG_IP_ADVANCED_ROUTER is not set | 186 | # CONFIG_IP_ADVANCED_ROUTER is not set |
@@ -508,7 +510,6 @@ CONFIG_NET_ETHERNET=y | |||
508 | # | 510 | # |
509 | CONFIG_LCS=m | 511 | CONFIG_LCS=m |
510 | CONFIG_CTC=m | 512 | CONFIG_CTC=m |
511 | CONFIG_IUCV=m | ||
512 | # CONFIG_NETIUCV is not set | 513 | # CONFIG_NETIUCV is not set |
513 | # CONFIG_SMSGIUCV is not set | 514 | # CONFIG_SMSGIUCV is not set |
514 | # CONFIG_CLAW is not set | 515 | # CONFIG_CLAW is not set |
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c index a4fda7b53640..ba5d3167df0d 100644 --- a/arch/s390/hypfs/inode.c +++ b/arch/s390/hypfs/inode.c | |||
@@ -34,7 +34,7 @@ struct hypfs_sb_info { | |||
34 | struct mutex lock; /* lock to protect update process */ | 34 | struct mutex lock; /* lock to protect update process */ |
35 | }; | 35 | }; |
36 | 36 | ||
37 | static struct file_operations hypfs_file_ops; | 37 | static const struct file_operations hypfs_file_ops; |
38 | static struct file_system_type hypfs_type; | 38 | static struct file_system_type hypfs_type; |
39 | static struct super_operations hypfs_s_ops; | 39 | static struct super_operations hypfs_s_ops; |
40 | 40 | ||
@@ -440,7 +440,7 @@ struct dentry *hypfs_create_str(struct super_block *sb, struct dentry *dir, | |||
440 | return dentry; | 440 | return dentry; |
441 | } | 441 | } |
442 | 442 | ||
443 | static struct file_operations hypfs_file_ops = { | 443 | static const struct file_operations hypfs_file_ops = { |
444 | .open = hypfs_open, | 444 | .open = hypfs_open, |
445 | .release = hypfs_release, | 445 | .release = hypfs_release, |
446 | .read = do_sync_read, | 446 | .read = do_sync_read, |
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index 666bb6daa148..664c669b1856 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
@@ -398,51 +398,6 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat __user *statbuf) | |||
398 | return err; | 398 | return err; |
399 | } | 399 | } |
400 | 400 | ||
401 | struct sysinfo32 { | ||
402 | s32 uptime; | ||
403 | u32 loads[3]; | ||
404 | u32 totalram; | ||
405 | u32 freeram; | ||
406 | u32 sharedram; | ||
407 | u32 bufferram; | ||
408 | u32 totalswap; | ||
409 | u32 freeswap; | ||
410 | unsigned short procs; | ||
411 | unsigned short pads; | ||
412 | u32 totalhigh; | ||
413 | u32 freehigh; | ||
414 | unsigned int mem_unit; | ||
415 | char _f[8]; | ||
416 | }; | ||
417 | |||
418 | asmlinkage long sys32_sysinfo(struct sysinfo32 __user *info) | ||
419 | { | ||
420 | struct sysinfo s; | ||
421 | int ret, err; | ||
422 | mm_segment_t old_fs = get_fs (); | ||
423 | |||
424 | set_fs (KERNEL_DS); | ||
425 | ret = sys_sysinfo((struct sysinfo __force __user *) &s); | ||
426 | set_fs (old_fs); | ||
427 | err = put_user (s.uptime, &info->uptime); | ||
428 | err |= __put_user (s.loads[0], &info->loads[0]); | ||
429 | err |= __put_user (s.loads[1], &info->loads[1]); | ||
430 | err |= __put_user (s.loads[2], &info->loads[2]); | ||
431 | err |= __put_user (s.totalram, &info->totalram); | ||
432 | err |= __put_user (s.freeram, &info->freeram); | ||
433 | err |= __put_user (s.sharedram, &info->sharedram); | ||
434 | err |= __put_user (s.bufferram, &info->bufferram); | ||
435 | err |= __put_user (s.totalswap, &info->totalswap); | ||
436 | err |= __put_user (s.freeswap, &info->freeswap); | ||
437 | err |= __put_user (s.procs, &info->procs); | ||
438 | err |= __put_user (s.totalhigh, &info->totalhigh); | ||
439 | err |= __put_user (s.freehigh, &info->freehigh); | ||
440 | err |= __put_user (s.mem_unit, &info->mem_unit); | ||
441 | if (err) | ||
442 | return -EFAULT; | ||
443 | return ret; | ||
444 | } | ||
445 | |||
446 | asmlinkage long sys32_sched_rr_get_interval(compat_pid_t pid, | 401 | asmlinkage long sys32_sched_rr_get_interval(compat_pid_t pid, |
447 | struct compat_timespec __user *interval) | 402 | struct compat_timespec __user *interval) |
448 | { | 403 | { |
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 71e54ef0931e..97901296894e 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
@@ -517,10 +517,10 @@ sys32_swapoff_wrapper: | |||
517 | llgtr %r2,%r2 # const char * | 517 | llgtr %r2,%r2 # const char * |
518 | jg sys_swapoff # branch to system call | 518 | jg sys_swapoff # branch to system call |
519 | 519 | ||
520 | .globl sys32_sysinfo_wrapper | 520 | .globl compat_sys_sysinfo_wrapper |
521 | sys32_sysinfo_wrapper: | 521 | compat_sys_sysinfo_wrapper: |
522 | llgtr %r2,%r2 # struct sysinfo_emu31 * | 522 | llgtr %r2,%r2 # struct sysinfo_emu31 * |
523 | jg sys32_sysinfo # branch to system call | 523 | jg compat_sys_sysinfo # branch to system call |
524 | 524 | ||
525 | .globl sys32_ipc_wrapper | 525 | .globl sys32_ipc_wrapper |
526 | sys32_ipc_wrapper: | 526 | sys32_ipc_wrapper: |
diff --git a/arch/s390/kernel/debug.c b/arch/s390/kernel/debug.c index f4b62df02aa2..51653d82d7df 100644 --- a/arch/s390/kernel/debug.c +++ b/arch/s390/kernel/debug.c | |||
@@ -167,7 +167,7 @@ static DECLARE_MUTEX(debug_lock); | |||
167 | 167 | ||
168 | static int initialized; | 168 | static int initialized; |
169 | 169 | ||
170 | static struct file_operations debug_file_ops = { | 170 | static const struct file_operations debug_file_ops = { |
171 | .owner = THIS_MODULE, | 171 | .owner = THIS_MODULE, |
172 | .read = debug_output, | 172 | .read = debug_output, |
173 | .write = debug_input, | 173 | .write = debug_input, |
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 03739813d3bf..50c5210fbc64 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -740,7 +740,7 @@ setup_arch(char **cmdline_p) | |||
740 | #endif /* CONFIG_64BIT */ | 740 | #endif /* CONFIG_64BIT */ |
741 | 741 | ||
742 | /* Save unparsed command line copy for /proc/cmdline */ | 742 | /* Save unparsed command line copy for /proc/cmdline */ |
743 | strlcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); | 743 | strlcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); |
744 | 744 | ||
745 | *cmdline_p = COMMAND_LINE; | 745 | *cmdline_p = COMMAND_LINE; |
746 | *(*cmdline_p + COMMAND_LINE_SIZE - 1) = '\0'; | 746 | *(*cmdline_p + COMMAND_LINE_SIZE - 1) = '\0'; |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 65b52320d145..83a4ea6e3d60 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -57,7 +57,7 @@ static void smp_ext_bitcall(int, ec_bit_sig); | |||
57 | static void smp_ext_bitcall_others(ec_bit_sig); | 57 | static void smp_ext_bitcall_others(ec_bit_sig); |
58 | 58 | ||
59 | /* | 59 | /* |
60 | 5B * Structure and data for smp_call_function(). This is designed to minimise | 60 | * Structure and data for smp_call_function(). This is designed to minimise |
61 | * static memory requirements. It also looks cleaner. | 61 | * static memory requirements. It also looks cleaner. |
62 | */ | 62 | */ |
63 | static DEFINE_SPINLOCK(call_lock); | 63 | static DEFINE_SPINLOCK(call_lock); |
@@ -104,7 +104,7 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | |||
104 | * remote CPUs are nearly ready to execute <<func>> or are or have executed. | 104 | * remote CPUs are nearly ready to execute <<func>> or are or have executed. |
105 | * | 105 | * |
106 | * You must not call this function with disabled interrupts or from a | 106 | * You must not call this function with disabled interrupts or from a |
107 | * hardware interrupt handler or from a bottom half handler. | 107 | * hardware interrupt handler. |
108 | */ | 108 | */ |
109 | { | 109 | { |
110 | struct call_data_struct data; | 110 | struct call_data_struct data; |
@@ -113,8 +113,8 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | |||
113 | if (cpus <= 0) | 113 | if (cpus <= 0) |
114 | return 0; | 114 | return 0; |
115 | 115 | ||
116 | /* Can deadlock when called with interrupts disabled */ | 116 | /* Can deadlock when interrupts are disabled or if in wrong context */ |
117 | WARN_ON(irqs_disabled()); | 117 | WARN_ON(irqs_disabled() || in_irq()); |
118 | 118 | ||
119 | data.func = func; | 119 | data.func = func; |
120 | data.info = info; | 120 | data.info = info; |
@@ -123,7 +123,7 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | |||
123 | if (wait) | 123 | if (wait) |
124 | atomic_set(&data.finished, 0); | 124 | atomic_set(&data.finished, 0); |
125 | 125 | ||
126 | spin_lock(&call_lock); | 126 | spin_lock_bh(&call_lock); |
127 | call_data = &data; | 127 | call_data = &data; |
128 | /* Send a message to all other CPUs and wait for them to respond */ | 128 | /* Send a message to all other CPUs and wait for them to respond */ |
129 | smp_ext_bitcall_others(ec_call_function); | 129 | smp_ext_bitcall_others(ec_call_function); |
@@ -135,7 +135,7 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | |||
135 | if (wait) | 135 | if (wait) |
136 | while (atomic_read(&data.finished) != cpus) | 136 | while (atomic_read(&data.finished) != cpus) |
137 | cpu_relax(); | 137 | cpu_relax(); |
138 | spin_unlock(&call_lock); | 138 | spin_unlock_bh(&call_lock); |
139 | 139 | ||
140 | return 0; | 140 | return 0; |
141 | } | 141 | } |
@@ -159,6 +159,9 @@ int smp_call_function_on(void (*func) (void *info), void *info, | |||
159 | if (!cpu_online(cpu)) | 159 | if (!cpu_online(cpu)) |
160 | return -EINVAL; | 160 | return -EINVAL; |
161 | 161 | ||
162 | /* Can deadlock when interrupts are disabled or if in wrong context */ | ||
163 | WARN_ON(irqs_disabled() || in_irq()); | ||
164 | |||
162 | /* disable preemption for local function call */ | 165 | /* disable preemption for local function call */ |
163 | curr_cpu = get_cpu(); | 166 | curr_cpu = get_cpu(); |
164 | 167 | ||
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index a4ceae3dbcf1..a52c44455bf0 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S | |||
@@ -124,7 +124,7 @@ NI_SYSCALL /* old "idle" system call */ | |||
124 | NI_SYSCALL /* vm86old for i386 */ | 124 | NI_SYSCALL /* vm86old for i386 */ |
125 | SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4_wrapper) | 125 | SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4_wrapper) |
126 | SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */ | 126 | SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */ |
127 | SYSCALL(sys_sysinfo,sys_sysinfo,sys32_sysinfo_wrapper) | 127 | SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper) |
128 | SYSCALL(sys_ipc,sys_ipc,sys32_ipc_wrapper) | 128 | SYSCALL(sys_ipc,sys_ipc,sys32_ipc_wrapper) |
129 | SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper) | 129 | SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper) |
130 | SYSCALL(sys_sigreturn_glue,sys_sigreturn_glue,sys32_sigreturn_glue) | 130 | SYSCALL(sys_sigreturn_glue,sys_sigreturn_glue,sys32_sigreturn_glue) |
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S index a48907392522..c30716ae130c 100644 --- a/arch/s390/kernel/vmlinux.lds.S +++ b/arch/s390/kernel/vmlinux.lds.S | |||
@@ -91,11 +91,14 @@ SECTIONS | |||
91 | .con_initcall.init : { *(.con_initcall.init) } | 91 | .con_initcall.init : { *(.con_initcall.init) } |
92 | __con_initcall_end = .; | 92 | __con_initcall_end = .; |
93 | SECURITY_INIT | 93 | SECURITY_INIT |
94 | |||
95 | #ifdef CONFIG_BLK_DEV_INITRD | ||
94 | . = ALIGN(256); | 96 | . = ALIGN(256); |
95 | __initramfs_start = .; | 97 | __initramfs_start = .; |
96 | .init.ramfs : { *(.init.initramfs) } | 98 | .init.ramfs : { *(.init.initramfs) } |
97 | . = ALIGN(2); | 99 | . = ALIGN(2); |
98 | __initramfs_end = .; | 100 | __initramfs_end = .; |
101 | #endif | ||
99 | . = ALIGN(256); | 102 | . = ALIGN(256); |
100 | __per_cpu_start = .; | 103 | __per_cpu_start = .; |
101 | .data.percpu : { *(.data.percpu) } | 104 | .data.percpu : { *(.data.percpu) } |
diff --git a/arch/s390/mm/Makefile b/arch/s390/mm/Makefile index 8e09db1edbb9..f95449b29fa5 100644 --- a/arch/s390/mm/Makefile +++ b/arch/s390/mm/Makefile | |||
@@ -2,6 +2,6 @@ | |||
2 | # Makefile for the linux s390-specific parts of the memory manager. | 2 | # Makefile for the linux s390-specific parts of the memory manager. |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := init.o fault.o ioremap.o extmem.o mmap.o vmem.o | 5 | obj-y := init.o fault.o extmem.o mmap.o vmem.o |
6 | obj-$(CONFIG_CMM) += cmm.o | 6 | obj-$(CONFIG_CMM) += cmm.o |
7 | 7 | ||
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 9ff143e87746..641aef36ccc4 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c | |||
@@ -83,12 +83,10 @@ static inline int notify_page_fault(enum die_val val, const char *str, | |||
83 | } | 83 | } |
84 | #endif | 84 | #endif |
85 | 85 | ||
86 | extern spinlock_t timerlist_lock; | ||
87 | 86 | ||
88 | /* | 87 | /* |
89 | * Unlock any spinlocks which will prevent us from getting the | 88 | * Unlock any spinlocks which will prevent us from getting the |
90 | * message out (timerlist_lock is acquired through the | 89 | * message out. |
91 | * console unblank code) | ||
92 | */ | 90 | */ |
93 | void bust_spinlocks(int yes) | 91 | void bust_spinlocks(int yes) |
94 | { | 92 | { |
diff --git a/arch/s390/mm/ioremap.c b/arch/s390/mm/ioremap.c deleted file mode 100644 index 3d2100a4e209..000000000000 --- a/arch/s390/mm/ioremap.c +++ /dev/null | |||
@@ -1,58 +0,0 @@ | |||
1 | /* | ||
2 | * arch/s390/mm/ioremap.c | ||
3 | * | ||
4 | * S390 version | ||
5 | * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation | ||
6 | * Author(s): Hartmut Penner (hp@de.ibm.com) | ||
7 | * | ||
8 | * Derived from "arch/i386/mm/extable.c" | ||
9 | * (C) Copyright 1995 1996 Linus Torvalds | ||
10 | * | ||
11 | * Re-map IO memory to kernel address space so that we can access it. | ||
12 | * This is needed for high PCI addresses that aren't mapped in the | ||
13 | * 640k-1MB IO memory area on PC's | ||
14 | */ | ||
15 | |||
16 | #include <linux/vmalloc.h> | ||
17 | #include <linux/mm.h> | ||
18 | #include <linux/io.h> | ||
19 | #include <asm/pgalloc.h> | ||
20 | |||
21 | /* | ||
22 | * Generic mapping function (not visible outside): | ||
23 | */ | ||
24 | |||
25 | /* | ||
26 | * Remap an arbitrary physical address space into the kernel virtual | ||
27 | * address space. Needed when the kernel wants to access high addresses | ||
28 | * directly. | ||
29 | */ | ||
30 | void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) | ||
31 | { | ||
32 | void * addr; | ||
33 | struct vm_struct * area; | ||
34 | |||
35 | if (phys_addr < virt_to_phys(high_memory)) | ||
36 | return phys_to_virt(phys_addr); | ||
37 | if (phys_addr & ~PAGE_MASK) | ||
38 | return NULL; | ||
39 | size = PAGE_ALIGN(size); | ||
40 | if (!size || size > phys_addr + size) | ||
41 | return NULL; | ||
42 | area = get_vm_area(size, VM_IOREMAP); | ||
43 | if (!area) | ||
44 | return NULL; | ||
45 | addr = area->addr; | ||
46 | if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size, | ||
47 | phys_addr, __pgprot(flags))) { | ||
48 | vfree(addr); | ||
49 | return NULL; | ||
50 | } | ||
51 | return addr; | ||
52 | } | ||
53 | |||
54 | void iounmap(void *addr) | ||
55 | { | ||
56 | if (addr > high_memory) | ||
57 | vfree(addr); | ||
58 | } | ||
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 3aa3b885ab36..4f3891215b87 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -48,6 +48,9 @@ config GENERIC_IOMAP | |||
48 | config GENERIC_TIME | 48 | config GENERIC_TIME |
49 | def_bool n | 49 | def_bool n |
50 | 50 | ||
51 | config SYS_SUPPORTS_APM_EMULATION | ||
52 | bool | ||
53 | |||
51 | config ARCH_MAY_HAVE_PC_FDC | 54 | config ARCH_MAY_HAVE_PC_FDC |
52 | bool | 55 | bool |
53 | 56 | ||
@@ -126,6 +129,7 @@ config SH_7751_SYSTEMH | |||
126 | 129 | ||
127 | config SH_HP6XX | 130 | config SH_HP6XX |
128 | bool "HP6XX" | 131 | bool "HP6XX" |
132 | select SYS_SUPPORTS_APM_EMULATION | ||
129 | help | 133 | help |
130 | Select HP6XX if configuring for a HP jornada HP6xx. | 134 | Select HP6XX if configuring for a HP jornada HP6xx. |
131 | More information (hardware only) at | 135 | More information (hardware only) at |
@@ -694,9 +698,6 @@ depends on EXPERIMENTAL | |||
694 | 698 | ||
695 | source kernel/power/Kconfig | 699 | source kernel/power/Kconfig |
696 | 700 | ||
697 | config APM | ||
698 | bool "Advanced Power Management Emulation" | ||
699 | depends on PM | ||
700 | endmenu | 701 | endmenu |
701 | 702 | ||
702 | source "net/Kconfig" | 703 | source "net/Kconfig" |
diff --git a/arch/sh/boards/hp6xx/hp6xx_apm.c b/arch/sh/boards/hp6xx/hp6xx_apm.c index d146cdaa0b8b..d1c1460c8a06 100644 --- a/arch/sh/boards/hp6xx/hp6xx_apm.c +++ b/arch/sh/boards/hp6xx/hp6xx_apm.c | |||
@@ -7,12 +7,11 @@ | |||
7 | * modify it under the terms of the GNU General Public License. | 7 | * modify it under the terms of the GNU General Public License. |
8 | */ | 8 | */ |
9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/apm_bios.h> | ||
11 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 11 | #include <linux/init.h> |
13 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
14 | #include <asm/io.h> | 13 | #include <linux/apm-emulation.h> |
15 | #include <asm/apm.h> | 14 | #include <linux/io.h> |
16 | #include <asm/adc.h> | 15 | #include <asm/adc.h> |
17 | #include <asm/hp6xx.h> | 16 | #include <asm/hp6xx.h> |
18 | 17 | ||
@@ -27,60 +26,41 @@ | |||
27 | 26 | ||
28 | #define MODNAME "hp6x0_apm" | 27 | #define MODNAME "hp6x0_apm" |
29 | 28 | ||
30 | static int hp6x0_apm_get_info(char *buf, char **start, off_t fpos, int length) | 29 | static void hp6x0_apm_get_power_status(struct apm_power_info *info) |
31 | { | 30 | { |
31 | int battery, backup, charging, percentage; | ||
32 | u8 pgdr; | 32 | u8 pgdr; |
33 | char *p; | ||
34 | int battery_status; | ||
35 | int battery_flag; | ||
36 | int ac_line_status; | ||
37 | int time_units = APM_BATTERY_LIFE_UNKNOWN; | ||
38 | 33 | ||
39 | int battery = adc_single(ADC_CHANNEL_BATTERY); | 34 | battery = adc_single(ADC_CHANNEL_BATTERY); |
40 | int backup = adc_single(ADC_CHANNEL_BACKUP); | 35 | backup = adc_single(ADC_CHANNEL_BACKUP); |
41 | int charging = adc_single(ADC_CHANNEL_CHARGE); | 36 | charging = adc_single(ADC_CHANNEL_CHARGE); |
42 | int percentage; | ||
43 | 37 | ||
44 | percentage = 100 * (battery - HP680_BATTERY_MIN) / | 38 | percentage = 100 * (battery - HP680_BATTERY_MIN) / |
45 | (HP680_BATTERY_MAX - HP680_BATTERY_MIN); | 39 | (HP680_BATTERY_MAX - HP680_BATTERY_MIN); |
46 | 40 | ||
47 | ac_line_status = (battery > HP680_BATTERY_AC_ON) ? | 41 | info->ac_line_status = (battery > HP680_BATTERY_AC_ON) ? |
48 | APM_AC_ONLINE : APM_AC_OFFLINE; | 42 | APM_AC_ONLINE : APM_AC_OFFLINE; |
49 | 43 | ||
50 | p = buf; | ||
51 | |||
52 | pgdr = ctrl_inb(SH7709_PGDR); | 44 | pgdr = ctrl_inb(SH7709_PGDR); |
53 | if (pgdr & PGDR_MAIN_BATTERY_OUT) { | 45 | if (pgdr & PGDR_MAIN_BATTERY_OUT) { |
54 | battery_status = APM_BATTERY_STATUS_NOT_PRESENT; | 46 | info->battery_status = APM_BATTERY_STATUS_NOT_PRESENT; |
55 | battery_flag = 0x80; | 47 | info->battery_flag = 0x80; |
56 | percentage = -1; | 48 | } else if (charging < 8) { |
57 | } else if (charging < 8 ) { | 49 | info->battery_status = APM_BATTERY_STATUS_CHARGING; |
58 | battery_status = APM_BATTERY_STATUS_CHARGING; | 50 | info->battery_flag = 0x08; |
59 | battery_flag = 0x08; | 51 | info->ac_line_status = 0xff; |
60 | ac_line_status = 0xff; | ||
61 | } else if (percentage <= APM_CRITICAL) { | 52 | } else if (percentage <= APM_CRITICAL) { |
62 | battery_status = APM_BATTERY_STATUS_CRITICAL; | 53 | info->battery_status = APM_BATTERY_STATUS_CRITICAL; |
63 | battery_flag = 0x04; | 54 | info->battery_flag = 0x04; |
64 | } else if (percentage <= APM_LOW) { | 55 | } else if (percentage <= APM_LOW) { |
65 | battery_status = APM_BATTERY_STATUS_LOW; | 56 | info->battery_status = APM_BATTERY_STATUS_LOW; |
66 | battery_flag = 0x02; | 57 | info->battery_flag = 0x02; |
67 | } else { | 58 | } else { |
68 | battery_status = APM_BATTERY_STATUS_HIGH; | 59 | info->battery_status = APM_BATTERY_STATUS_HIGH; |
69 | battery_flag = 0x01; | 60 | info->battery_flag = 0x01; |
70 | } | 61 | } |
71 | 62 | ||
72 | p += sprintf(p, "1.0 1.2 0x%02x 0x%02x 0x%02x 0x%02x %d%% %d %s\n", | 63 | info->units = 0; |
73 | APM_32_BIT_SUPPORT, | ||
74 | ac_line_status, | ||
75 | battery_status, | ||
76 | battery_flag, | ||
77 | percentage, | ||
78 | time_units, | ||
79 | "min"); | ||
80 | p += sprintf(p, "bat=%d backup=%d charge=%d\n", | ||
81 | battery, backup, charging); | ||
82 | |||
83 | return p - buf; | ||
84 | } | 64 | } |
85 | 65 | ||
86 | static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev) | 66 | static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev) |
@@ -96,14 +76,14 @@ static int __init hp6x0_apm_init(void) | |||
96 | int ret; | 76 | int ret; |
97 | 77 | ||
98 | ret = request_irq(HP680_BTN_IRQ, hp6x0_apm_interrupt, | 78 | ret = request_irq(HP680_BTN_IRQ, hp6x0_apm_interrupt, |
99 | IRQF_DISABLED, MODNAME, 0); | 79 | IRQF_DISABLED, MODNAME, NULL); |
100 | if (unlikely(ret < 0)) { | 80 | if (unlikely(ret < 0)) { |
101 | printk(KERN_ERR MODNAME ": IRQ %d request failed\n", | 81 | printk(KERN_ERR MODNAME ": IRQ %d request failed\n", |
102 | HP680_BTN_IRQ); | 82 | HP680_BTN_IRQ); |
103 | return ret; | 83 | return ret; |
104 | } | 84 | } |
105 | 85 | ||
106 | apm_get_info = hp6x0_apm_get_info; | 86 | apm_get_power_status = hp6x0_apm_get_power_status; |
107 | 87 | ||
108 | return ret; | 88 | return ret; |
109 | } | 89 | } |
@@ -111,7 +91,7 @@ static int __init hp6x0_apm_init(void) | |||
111 | static void __exit hp6x0_apm_exit(void) | 91 | static void __exit hp6x0_apm_exit(void) |
112 | { | 92 | { |
113 | free_irq(HP680_BTN_IRQ, 0); | 93 | free_irq(HP680_BTN_IRQ, 0); |
114 | apm_get_info = 0; | 94 | apm_get_info = NULL; |
115 | } | 95 | } |
116 | 96 | ||
117 | module_init(hp6x0_apm_init); | 97 | module_init(hp6x0_apm_init); |
diff --git a/arch/sh/boards/landisk/landisk_pwb.c b/arch/sh/boards/landisk/landisk_pwb.c index e62524978160..47a63c6617ed 100644 --- a/arch/sh/boards/landisk/landisk_pwb.c +++ b/arch/sh/boards/landisk/landisk_pwb.c | |||
@@ -150,7 +150,7 @@ static irqreturn_t sw_interrupt(int irq, void *dev_id) | |||
150 | return IRQ_HANDLED; | 150 | return IRQ_HANDLED; |
151 | } | 151 | } |
152 | 152 | ||
153 | static struct file_operations swdrv_fops = { | 153 | static const struct file_operations swdrv_fops = { |
154 | .read = swdrv_read, /* read */ | 154 | .read = swdrv_read, /* read */ |
155 | .write = swdrv_write, /* write */ | 155 | .write = swdrv_write, /* write */ |
156 | .open = swdrv_open, /* open */ | 156 | .open = swdrv_open, /* open */ |
diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile index 99c7e5249f7a..2f6d2bcb1c93 100644 --- a/arch/sh/kernel/Makefile +++ b/arch/sh/kernel/Makefile | |||
@@ -19,6 +19,5 @@ obj-$(CONFIG_SH_CPU_FREQ) += cpufreq.o | |||
19 | obj-$(CONFIG_MODULES) += module.o | 19 | obj-$(CONFIG_MODULES) += module.o |
20 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o | 20 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o |
21 | obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o | 21 | obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o |
22 | obj-$(CONFIG_APM) += apm.o | ||
23 | obj-$(CONFIG_PM) += pm.o | 22 | obj-$(CONFIG_PM) += pm.o |
24 | obj-$(CONFIG_STACKTRACE) += stacktrace.o | 23 | obj-$(CONFIG_STACKTRACE) += stacktrace.o |
diff --git a/arch/sh/kernel/apm.c b/arch/sh/kernel/apm.c deleted file mode 100644 index 4f66f91b1006..000000000000 --- a/arch/sh/kernel/apm.c +++ /dev/null | |||
@@ -1,538 +0,0 @@ | |||
1 | /* | ||
2 | * bios-less APM driver for hp680 | ||
3 | * | ||
4 | * Copyright 2005 (c) Andriy Skulysh <askulysh@gmail.com> | ||
5 | * | ||
6 | * based on ARM APM driver by | ||
7 | * Jamey Hicks <jamey@crl.dec.com> | ||
8 | * | ||
9 | * adapted from the APM BIOS driver for Linux by | ||
10 | * Stephen Rothwell (sfr@linuxcare.com) | ||
11 | * | ||
12 | * APM 1.2 Reference: | ||
13 | * Intel Corporation, Microsoft Corporation. Advanced Power Management | ||
14 | * (APM) BIOS Interface Specification, Revision 1.2, February 1996. | ||
15 | * | ||
16 | * [This document is available from Microsoft at: | ||
17 | * http://www.microsoft.com/hwdev/busbios/amp_12.htm] | ||
18 | */ | ||
19 | #include <linux/module.h> | ||
20 | #include <linux/poll.h> | ||
21 | #include <linux/timer.h> | ||
22 | #include <linux/slab.h> | ||
23 | #include <linux/proc_fs.h> | ||
24 | #include <linux/miscdevice.h> | ||
25 | #include <linux/apm_bios.h> | ||
26 | #include <linux/pm.h> | ||
27 | #include <linux/pm_legacy.h> | ||
28 | #include <asm/apm.h> | ||
29 | |||
30 | #define MODNAME "apm" | ||
31 | |||
32 | /* | ||
33 | * The apm_bios device is one of the misc char devices. | ||
34 | * This is its minor number. | ||
35 | */ | ||
36 | #define APM_MINOR_DEV 134 | ||
37 | |||
38 | /* | ||
39 | * Maximum number of events stored | ||
40 | */ | ||
41 | #define APM_MAX_EVENTS 16 | ||
42 | |||
43 | struct apm_queue { | ||
44 | unsigned int event_head; | ||
45 | unsigned int event_tail; | ||
46 | apm_event_t events[APM_MAX_EVENTS]; | ||
47 | }; | ||
48 | |||
49 | /* | ||
50 | * The per-file APM data | ||
51 | */ | ||
52 | struct apm_user { | ||
53 | struct list_head list; | ||
54 | |||
55 | unsigned int suser: 1; | ||
56 | unsigned int writer: 1; | ||
57 | unsigned int reader: 1; | ||
58 | |||
59 | int suspend_result; | ||
60 | unsigned int suspend_state; | ||
61 | #define SUSPEND_NONE 0 /* no suspend pending */ | ||
62 | #define SUSPEND_PENDING 1 /* suspend pending read */ | ||
63 | #define SUSPEND_READ 2 /* suspend read, pending ack */ | ||
64 | #define SUSPEND_ACKED 3 /* suspend acked */ | ||
65 | #define SUSPEND_DONE 4 /* suspend completed */ | ||
66 | |||
67 | struct apm_queue queue; | ||
68 | }; | ||
69 | |||
70 | /* | ||
71 | * Local variables | ||
72 | */ | ||
73 | static int suspends_pending; | ||
74 | |||
75 | static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue); | ||
76 | static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue); | ||
77 | |||
78 | /* | ||
79 | * This is a list of everyone who has opened /dev/apm_bios | ||
80 | */ | ||
81 | static DECLARE_RWSEM(user_list_lock); | ||
82 | static LIST_HEAD(apm_user_list); | ||
83 | |||
84 | /* | ||
85 | * kapmd info. kapmd provides us a process context to handle | ||
86 | * "APM" events within - specifically necessary if we're going | ||
87 | * to be suspending the system. | ||
88 | */ | ||
89 | static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait); | ||
90 | static DECLARE_COMPLETION(kapmd_exit); | ||
91 | static DEFINE_SPINLOCK(kapmd_queue_lock); | ||
92 | static struct apm_queue kapmd_queue; | ||
93 | |||
94 | int apm_suspended; | ||
95 | EXPORT_SYMBOL(apm_suspended); | ||
96 | |||
97 | /* Platform-specific apm_read_proc(). */ | ||
98 | int (*apm_get_info)(char *buf, char **start, off_t fpos, int length); | ||
99 | EXPORT_SYMBOL(apm_get_info); | ||
100 | |||
101 | /* | ||
102 | * APM event queue management. | ||
103 | */ | ||
104 | static inline int queue_empty(struct apm_queue *q) | ||
105 | { | ||
106 | return q->event_head == q->event_tail; | ||
107 | } | ||
108 | |||
109 | static inline apm_event_t queue_get_event(struct apm_queue *q) | ||
110 | { | ||
111 | q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS; | ||
112 | return q->events[q->event_tail]; | ||
113 | } | ||
114 | |||
115 | static void queue_add_event(struct apm_queue *q, apm_event_t event) | ||
116 | { | ||
117 | q->event_head = (q->event_head + 1) % APM_MAX_EVENTS; | ||
118 | if (q->event_head == q->event_tail) { | ||
119 | static int notified; | ||
120 | |||
121 | if (notified++ == 0) | ||
122 | printk(KERN_ERR "apm: an event queue overflowed\n"); | ||
123 | |||
124 | q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS; | ||
125 | } | ||
126 | q->events[q->event_head] = event; | ||
127 | } | ||
128 | |||
129 | static void queue_event_one_user(struct apm_user *as, apm_event_t event) | ||
130 | { | ||
131 | if (as->suser && as->writer) { | ||
132 | switch (event) { | ||
133 | case APM_SYS_SUSPEND: | ||
134 | case APM_USER_SUSPEND: | ||
135 | /* | ||
136 | * If this user already has a suspend pending, | ||
137 | * don't queue another one. | ||
138 | */ | ||
139 | if (as->suspend_state != SUSPEND_NONE) | ||
140 | return; | ||
141 | |||
142 | as->suspend_state = SUSPEND_PENDING; | ||
143 | suspends_pending++; | ||
144 | break; | ||
145 | } | ||
146 | } | ||
147 | queue_add_event(&as->queue, event); | ||
148 | } | ||
149 | |||
150 | static void queue_event(apm_event_t event, struct apm_user *sender) | ||
151 | { | ||
152 | struct apm_user *as; | ||
153 | |||
154 | down_read(&user_list_lock); | ||
155 | |||
156 | list_for_each_entry(as, &apm_user_list, list) | ||
157 | if (as != sender && as->reader) | ||
158 | queue_event_one_user(as, event); | ||
159 | |||
160 | up_read(&user_list_lock); | ||
161 | wake_up_interruptible(&apm_waitqueue); | ||
162 | } | ||
163 | |||
164 | /** | ||
165 | * apm_queue_event - queue an APM event for kapmd | ||
166 | * @event: APM event | ||
167 | * | ||
168 | * Queue an APM event for kapmd to process and ultimately take the | ||
169 | * appropriate action. Only a subset of events are handled: | ||
170 | * %APM_LOW_BATTERY | ||
171 | * %APM_POWER_STATUS_CHANGE | ||
172 | * %APM_USER_SUSPEND | ||
173 | * %APM_SYS_SUSPEND | ||
174 | * %APM_CRITICAL_SUSPEND | ||
175 | */ | ||
176 | void apm_queue_event(apm_event_t event) | ||
177 | { | ||
178 | spin_lock_irq(&kapmd_queue_lock); | ||
179 | queue_add_event(&kapmd_queue, event); | ||
180 | spin_unlock_irq(&kapmd_queue_lock); | ||
181 | |||
182 | wake_up_interruptible(&kapmd_wait); | ||
183 | } | ||
184 | EXPORT_SYMBOL(apm_queue_event); | ||
185 | |||
186 | static void apm_suspend(void) | ||
187 | { | ||
188 | struct apm_user *as; | ||
189 | int err; | ||
190 | |||
191 | apm_suspended = 1; | ||
192 | err = pm_suspend(PM_SUSPEND_MEM); | ||
193 | |||
194 | /* | ||
195 | * Anyone on the APM queues will think we're still suspended. | ||
196 | * Send a message so everyone knows we're now awake again. | ||
197 | */ | ||
198 | queue_event(APM_NORMAL_RESUME, NULL); | ||
199 | |||
200 | /* | ||
201 | * Finally, wake up anyone who is sleeping on the suspend. | ||
202 | */ | ||
203 | down_read(&user_list_lock); | ||
204 | list_for_each_entry(as, &apm_user_list, list) { | ||
205 | as->suspend_result = err; | ||
206 | as->suspend_state = SUSPEND_DONE; | ||
207 | } | ||
208 | up_read(&user_list_lock); | ||
209 | |||
210 | wake_up(&apm_suspend_waitqueue); | ||
211 | apm_suspended = 0; | ||
212 | } | ||
213 | |||
214 | static ssize_t apm_read(struct file *fp, char __user *buf, | ||
215 | size_t count, loff_t *ppos) | ||
216 | { | ||
217 | struct apm_user *as = fp->private_data; | ||
218 | apm_event_t event; | ||
219 | int i = count, ret = 0; | ||
220 | |||
221 | if (count < sizeof(apm_event_t)) | ||
222 | return -EINVAL; | ||
223 | |||
224 | if (queue_empty(&as->queue) && fp->f_flags & O_NONBLOCK) | ||
225 | return -EAGAIN; | ||
226 | |||
227 | wait_event_interruptible(apm_waitqueue, !queue_empty(&as->queue)); | ||
228 | |||
229 | while ((i >= sizeof(event)) && !queue_empty(&as->queue)) { | ||
230 | event = queue_get_event(&as->queue); | ||
231 | |||
232 | ret = -EFAULT; | ||
233 | if (copy_to_user(buf, &event, sizeof(event))) | ||
234 | break; | ||
235 | |||
236 | if (event == APM_SYS_SUSPEND || event == APM_USER_SUSPEND) | ||
237 | as->suspend_state = SUSPEND_READ; | ||
238 | |||
239 | buf += sizeof(event); | ||
240 | i -= sizeof(event); | ||
241 | } | ||
242 | |||
243 | if (i < count) | ||
244 | ret = count - i; | ||
245 | |||
246 | return ret; | ||
247 | } | ||
248 | |||
249 | static unsigned int apm_poll(struct file *fp, poll_table * wait) | ||
250 | { | ||
251 | struct apm_user *as = fp->private_data; | ||
252 | |||
253 | poll_wait(fp, &apm_waitqueue, wait); | ||
254 | return queue_empty(&as->queue) ? 0 : POLLIN | POLLRDNORM; | ||
255 | } | ||
256 | |||
257 | /* | ||
258 | * apm_ioctl - handle APM ioctl | ||
259 | * | ||
260 | * APM_IOC_SUSPEND | ||
261 | * This IOCTL is overloaded, and performs two functions. It is used to: | ||
262 | * - initiate a suspend | ||
263 | * - acknowledge a suspend read from /dev/apm_bios. | ||
264 | * Only when everyone who has opened /dev/apm_bios with write permission | ||
265 | * has acknowledge does the actual suspend happen. | ||
266 | */ | ||
267 | static int | ||
268 | apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg) | ||
269 | { | ||
270 | struct apm_user *as = filp->private_data; | ||
271 | unsigned long flags; | ||
272 | int err = -EINVAL; | ||
273 | |||
274 | if (!as->suser || !as->writer) | ||
275 | return -EPERM; | ||
276 | |||
277 | switch (cmd) { | ||
278 | case APM_IOC_SUSPEND: | ||
279 | as->suspend_result = -EINTR; | ||
280 | |||
281 | if (as->suspend_state == SUSPEND_READ) { | ||
282 | /* | ||
283 | * If we read a suspend command from /dev/apm_bios, | ||
284 | * then the corresponding APM_IOC_SUSPEND ioctl is | ||
285 | * interpreted as an acknowledge. | ||
286 | */ | ||
287 | as->suspend_state = SUSPEND_ACKED; | ||
288 | suspends_pending--; | ||
289 | } else { | ||
290 | /* | ||
291 | * Otherwise it is a request to suspend the system. | ||
292 | * Queue an event for all readers, and expect an | ||
293 | * acknowledge from all writers who haven't already | ||
294 | * acknowledged. | ||
295 | */ | ||
296 | queue_event(APM_USER_SUSPEND, as); | ||
297 | } | ||
298 | |||
299 | /* | ||
300 | * If there are no further acknowledges required, suspend | ||
301 | * the system. | ||
302 | */ | ||
303 | if (suspends_pending == 0) | ||
304 | apm_suspend(); | ||
305 | |||
306 | /* | ||
307 | * Wait for the suspend/resume to complete. If there are | ||
308 | * pending acknowledges, we wait here for them. | ||
309 | * | ||
310 | * Note that we need to ensure that the PM subsystem does | ||
311 | * not kick us out of the wait when it suspends the threads. | ||
312 | */ | ||
313 | flags = current->flags; | ||
314 | current->flags |= PF_NOFREEZE; | ||
315 | |||
316 | /* | ||
317 | * Note: do not allow a thread which is acking the suspend | ||
318 | * to escape until the resume is complete. | ||
319 | */ | ||
320 | if (as->suspend_state == SUSPEND_ACKED) | ||
321 | wait_event(apm_suspend_waitqueue, | ||
322 | as->suspend_state == SUSPEND_DONE); | ||
323 | else | ||
324 | wait_event_interruptible(apm_suspend_waitqueue, | ||
325 | as->suspend_state == SUSPEND_DONE); | ||
326 | |||
327 | current->flags = flags; | ||
328 | err = as->suspend_result; | ||
329 | as->suspend_state = SUSPEND_NONE; | ||
330 | break; | ||
331 | } | ||
332 | |||
333 | return err; | ||
334 | } | ||
335 | |||
336 | static int apm_release(struct inode * inode, struct file * filp) | ||
337 | { | ||
338 | struct apm_user *as = filp->private_data; | ||
339 | filp->private_data = NULL; | ||
340 | |||
341 | down_write(&user_list_lock); | ||
342 | list_del(&as->list); | ||
343 | up_write(&user_list_lock); | ||
344 | |||
345 | /* | ||
346 | * We are now unhooked from the chain. As far as new | ||
347 | * events are concerned, we no longer exist. However, we | ||
348 | * need to balance suspends_pending, which means the | ||
349 | * possibility of sleeping. | ||
350 | */ | ||
351 | if (as->suspend_state != SUSPEND_NONE) { | ||
352 | suspends_pending -= 1; | ||
353 | if (suspends_pending == 0) | ||
354 | apm_suspend(); | ||
355 | } | ||
356 | |||
357 | kfree(as); | ||
358 | return 0; | ||
359 | } | ||
360 | |||
361 | static int apm_open(struct inode * inode, struct file * filp) | ||
362 | { | ||
363 | struct apm_user *as; | ||
364 | |||
365 | as = kzalloc(sizeof(*as), GFP_KERNEL); | ||
366 | if (as) { | ||
367 | /* | ||
368 | * XXX - this is a tiny bit broken, when we consider BSD | ||
369 | * process accounting. If the device is opened by root, we | ||
370 | * instantly flag that we used superuser privs. Who knows, | ||
371 | * we might close the device immediately without doing a | ||
372 | * privileged operation -- cevans | ||
373 | */ | ||
374 | as->suser = capable(CAP_SYS_ADMIN); | ||
375 | as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE; | ||
376 | as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ; | ||
377 | |||
378 | down_write(&user_list_lock); | ||
379 | list_add(&as->list, &apm_user_list); | ||
380 | up_write(&user_list_lock); | ||
381 | |||
382 | filp->private_data = as; | ||
383 | } | ||
384 | |||
385 | return as ? 0 : -ENOMEM; | ||
386 | } | ||
387 | |||
388 | static struct file_operations apm_bios_fops = { | ||
389 | .owner = THIS_MODULE, | ||
390 | .read = apm_read, | ||
391 | .poll = apm_poll, | ||
392 | .ioctl = apm_ioctl, | ||
393 | .open = apm_open, | ||
394 | .release = apm_release, | ||
395 | }; | ||
396 | |||
397 | static struct miscdevice apm_device = { | ||
398 | .minor = APM_MINOR_DEV, | ||
399 | .name = "apm_bios", | ||
400 | .fops = &apm_bios_fops | ||
401 | }; | ||
402 | |||
403 | |||
404 | #ifdef CONFIG_PROC_FS | ||
405 | /* | ||
406 | * Arguments, with symbols from linux/apm_bios.h. | ||
407 | * | ||
408 | * 0) Linux driver version (this will change if format changes) | ||
409 | * 1) APM BIOS Version. Usually 1.0, 1.1 or 1.2. | ||
410 | * 2) APM flags from APM Installation Check (0x00): | ||
411 | * bit 0: APM_16_BIT_SUPPORT | ||
412 | * bit 1: APM_32_BIT_SUPPORT | ||
413 | * bit 2: APM_IDLE_SLOWS_CLOCK | ||
414 | * bit 3: APM_BIOS_DISABLED | ||
415 | * bit 4: APM_BIOS_DISENGAGED | ||
416 | * 3) AC line status | ||
417 | * 0x00: Off-line | ||
418 | * 0x01: On-line | ||
419 | * 0x02: On backup power (BIOS >= 1.1 only) | ||
420 | * 0xff: Unknown | ||
421 | * 4) Battery status | ||
422 | * 0x00: High | ||
423 | * 0x01: Low | ||
424 | * 0x02: Critical | ||
425 | * 0x03: Charging | ||
426 | * 0x04: Selected battery not present (BIOS >= 1.2 only) | ||
427 | * 0xff: Unknown | ||
428 | * 5) Battery flag | ||
429 | * bit 0: High | ||
430 | * bit 1: Low | ||
431 | * bit 2: Critical | ||
432 | * bit 3: Charging | ||
433 | * bit 7: No system battery | ||
434 | * 0xff: Unknown | ||
435 | * 6) Remaining battery life (percentage of charge): | ||
436 | * 0-100: valid | ||
437 | * -1: Unknown | ||
438 | * 7) Remaining battery life (time units): | ||
439 | * Number of remaining minutes or seconds | ||
440 | * -1: Unknown | ||
441 | * 8) min = minutes; sec = seconds | ||
442 | */ | ||
443 | static int apm_read_proc(char *buf, char **start, off_t fpos, int length) | ||
444 | { | ||
445 | if (likely(apm_get_info)) | ||
446 | return apm_get_info(buf, start, fpos, length); | ||
447 | |||
448 | return -EINVAL; | ||
449 | } | ||
450 | #endif | ||
451 | |||
452 | static int kapmd(void *arg) | ||
453 | { | ||
454 | daemonize("kapmd"); | ||
455 | current->flags |= PF_NOFREEZE; | ||
456 | |||
457 | do { | ||
458 | apm_event_t event; | ||
459 | |||
460 | wait_event_interruptible(kapmd_wait, | ||
461 | !queue_empty(&kapmd_queue) || !pm_active); | ||
462 | |||
463 | if (!pm_active) | ||
464 | break; | ||
465 | |||
466 | spin_lock_irq(&kapmd_queue_lock); | ||
467 | event = 0; | ||
468 | if (!queue_empty(&kapmd_queue)) | ||
469 | event = queue_get_event(&kapmd_queue); | ||
470 | spin_unlock_irq(&kapmd_queue_lock); | ||
471 | |||
472 | switch (event) { | ||
473 | case 0: | ||
474 | break; | ||
475 | |||
476 | case APM_LOW_BATTERY: | ||
477 | case APM_POWER_STATUS_CHANGE: | ||
478 | queue_event(event, NULL); | ||
479 | break; | ||
480 | |||
481 | case APM_USER_SUSPEND: | ||
482 | case APM_SYS_SUSPEND: | ||
483 | queue_event(event, NULL); | ||
484 | if (suspends_pending == 0) | ||
485 | apm_suspend(); | ||
486 | break; | ||
487 | |||
488 | case APM_CRITICAL_SUSPEND: | ||
489 | apm_suspend(); | ||
490 | break; | ||
491 | } | ||
492 | } while (1); | ||
493 | |||
494 | complete_and_exit(&kapmd_exit, 0); | ||
495 | } | ||
496 | |||
497 | static int __init apm_init(void) | ||
498 | { | ||
499 | int ret; | ||
500 | |||
501 | pm_active = 1; | ||
502 | |||
503 | ret = kernel_thread(kapmd, NULL, CLONE_KERNEL); | ||
504 | if (unlikely(ret < 0)) { | ||
505 | pm_active = 0; | ||
506 | return ret; | ||
507 | } | ||
508 | |||
509 | create_proc_info_entry("apm", 0, NULL, apm_read_proc); | ||
510 | |||
511 | ret = misc_register(&apm_device); | ||
512 | if (unlikely(ret != 0)) { | ||
513 | remove_proc_entry("apm", NULL); | ||
514 | |||
515 | pm_active = 0; | ||
516 | wake_up(&kapmd_wait); | ||
517 | wait_for_completion(&kapmd_exit); | ||
518 | } | ||
519 | |||
520 | return ret; | ||
521 | } | ||
522 | |||
523 | static void __exit apm_exit(void) | ||
524 | { | ||
525 | misc_deregister(&apm_device); | ||
526 | remove_proc_entry("apm", NULL); | ||
527 | |||
528 | pm_active = 0; | ||
529 | wake_up(&kapmd_wait); | ||
530 | wait_for_completion(&kapmd_exit); | ||
531 | } | ||
532 | |||
533 | module_init(apm_init); | ||
534 | module_exit(apm_exit); | ||
535 | |||
536 | MODULE_AUTHOR("Stephen Rothwell, Andriy Skulysh"); | ||
537 | MODULE_DESCRIPTION("Advanced Power Management"); | ||
538 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 225f9ea5cdd7..d6b817aa568f 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c | |||
@@ -75,7 +75,7 @@ static struct sh_machine_vector* __init get_mv_byname(const char* name); | |||
75 | #define RAMDISK_PROMPT_FLAG 0x8000 | 75 | #define RAMDISK_PROMPT_FLAG 0x8000 |
76 | #define RAMDISK_LOAD_FLAG 0x4000 | 76 | #define RAMDISK_LOAD_FLAG 0x4000 |
77 | 77 | ||
78 | static char command_line[COMMAND_LINE_SIZE] = { 0, }; | 78 | static char __initdata command_line[COMMAND_LINE_SIZE] = { 0, }; |
79 | 79 | ||
80 | static struct resource code_resource = { .name = "Kernel code", }; | 80 | static struct resource code_resource = { .name = "Kernel code", }; |
81 | static struct resource data_resource = { .name = "Kernel data", }; | 81 | static struct resource data_resource = { .name = "Kernel data", }; |
@@ -90,8 +90,8 @@ static inline void parse_cmdline (char ** cmdline_p, char mv_name[MV_NAME_SIZE], | |||
90 | int len = 0; | 90 | int len = 0; |
91 | 91 | ||
92 | /* Save unparsed command line copy for /proc/cmdline */ | 92 | /* Save unparsed command line copy for /proc/cmdline */ |
93 | memcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); | 93 | memcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); |
94 | saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; | 94 | boot_command_line[COMMAND_LINE_SIZE-1] = '\0'; |
95 | 95 | ||
96 | memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START; | 96 | memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START; |
97 | memory_end = memory_start + __MEMORY_SIZE; | 97 | memory_end = memory_start + __MEMORY_SIZE; |
diff --git a/arch/sh/kernel/time.c b/arch/sh/kernel/time.c index c206c9504c4b..d47e775962e9 100644 --- a/arch/sh/kernel/time.c +++ b/arch/sh/kernel/time.c | |||
@@ -41,14 +41,6 @@ static int null_rtc_set_time(const time_t secs) | |||
41 | void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time; | 41 | void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time; |
42 | int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time; | 42 | int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time; |
43 | 43 | ||
44 | /* | ||
45 | * Scheduler clock - returns current time in nanosec units. | ||
46 | */ | ||
47 | unsigned long long __attribute__ ((weak)) sched_clock(void) | ||
48 | { | ||
49 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
50 | } | ||
51 | |||
52 | #ifndef CONFIG_GENERIC_TIME | 44 | #ifndef CONFIG_GENERIC_TIME |
53 | void do_gettimeofday(struct timeval *tv) | 45 | void do_gettimeofday(struct timeval *tv) |
54 | { | 46 | { |
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S index f34bdcc33a7d..75de165867a0 100644 --- a/arch/sh/kernel/vmlinux.lds.S +++ b/arch/sh/kernel/vmlinux.lds.S | |||
@@ -83,9 +83,13 @@ SECTIONS | |||
83 | .con_initcall.init : { *(.con_initcall.init) } | 83 | .con_initcall.init : { *(.con_initcall.init) } |
84 | __con_initcall_end = .; | 84 | __con_initcall_end = .; |
85 | SECURITY_INIT | 85 | SECURITY_INIT |
86 | |||
87 | #ifdef CONFIG_BLK_DEV_INITRD | ||
86 | __initramfs_start = .; | 88 | __initramfs_start = .; |
87 | .init.ramfs : { *(.init.ramfs) } | 89 | .init.ramfs : { *(.init.ramfs) } |
88 | __initramfs_end = .; | 90 | __initramfs_end = .; |
91 | #endif | ||
92 | |||
89 | __machvec_start = .; | 93 | __machvec_start = .; |
90 | .init.machvec : { *(.init.machvec) } | 94 | .init.machvec : { *(.init.machvec) } |
91 | __machvec_end = .; | 95 | __machvec_end = .; |
diff --git a/arch/sh/kernel/vsyscall/vsyscall.c b/arch/sh/kernel/vsyscall/vsyscall.c index deb46941f315..7b0f66f03319 100644 --- a/arch/sh/kernel/vsyscall/vsyscall.c +++ b/arch/sh/kernel/vsyscall/vsyscall.c | |||
@@ -37,11 +37,12 @@ __setup("vdso=", vdso_setup); | |||
37 | * of the ELF DSO images included therein. | 37 | * of the ELF DSO images included therein. |
38 | */ | 38 | */ |
39 | extern const char vsyscall_trapa_start, vsyscall_trapa_end; | 39 | extern const char vsyscall_trapa_start, vsyscall_trapa_end; |
40 | static void *syscall_page; | 40 | static struct page *syscall_pages[1]; |
41 | 41 | ||
42 | int __init vsyscall_init(void) | 42 | int __init vsyscall_init(void) |
43 | { | 43 | { |
44 | syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); | 44 | void *syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); |
45 | syscall_pages[0] = virt_to_page(syscall_page); | ||
45 | 46 | ||
46 | /* | 47 | /* |
47 | * XXX: Map this page to a fixmap entry if we get around | 48 | * XXX: Map this page to a fixmap entry if we get around |
@@ -55,37 +56,10 @@ int __init vsyscall_init(void) | |||
55 | return 0; | 56 | return 0; |
56 | } | 57 | } |
57 | 58 | ||
58 | static struct page *syscall_vma_nopage(struct vm_area_struct *vma, | ||
59 | unsigned long address, int *type) | ||
60 | { | ||
61 | unsigned long offset = address - vma->vm_start; | ||
62 | struct page *page; | ||
63 | |||
64 | if (address < vma->vm_start || address > vma->vm_end) | ||
65 | return NOPAGE_SIGBUS; | ||
66 | |||
67 | page = virt_to_page(syscall_page + offset); | ||
68 | |||
69 | get_page(page); | ||
70 | |||
71 | return page; | ||
72 | } | ||
73 | |||
74 | /* Prevent VMA merging */ | ||
75 | static void syscall_vma_close(struct vm_area_struct *vma) | ||
76 | { | ||
77 | } | ||
78 | |||
79 | static struct vm_operations_struct syscall_vm_ops = { | ||
80 | .nopage = syscall_vma_nopage, | ||
81 | .close = syscall_vma_close, | ||
82 | }; | ||
83 | |||
84 | /* Setup a VMA at program startup for the vsyscall page */ | 59 | /* Setup a VMA at program startup for the vsyscall page */ |
85 | int arch_setup_additional_pages(struct linux_binprm *bprm, | 60 | int arch_setup_additional_pages(struct linux_binprm *bprm, |
86 | int executable_stack) | 61 | int executable_stack) |
87 | { | 62 | { |
88 | struct vm_area_struct *vma; | ||
89 | struct mm_struct *mm = current->mm; | 63 | struct mm_struct *mm = current->mm; |
90 | unsigned long addr; | 64 | unsigned long addr; |
91 | int ret; | 65 | int ret; |
@@ -97,30 +71,16 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, | |||
97 | goto up_fail; | 71 | goto up_fail; |
98 | } | 72 | } |
99 | 73 | ||
100 | vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); | 74 | ret = install_special_mapping(mm, addr, PAGE_SIZE, |
101 | if (!vma) { | 75 | VM_READ | VM_EXEC | |
102 | ret = -ENOMEM; | 76 | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC | |
77 | VM_ALWAYSDUMP, | ||
78 | syscall_pages); | ||
79 | if (unlikely(ret)) | ||
103 | goto up_fail; | 80 | goto up_fail; |
104 | } | ||
105 | |||
106 | vma->vm_start = addr; | ||
107 | vma->vm_end = addr + PAGE_SIZE; | ||
108 | /* MAYWRITE to allow gdb to COW and set breakpoints */ | ||
109 | vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE; | ||
110 | vma->vm_flags |= mm->def_flags; | ||
111 | vma->vm_page_prot = protection_map[vma->vm_flags & 7]; | ||
112 | vma->vm_ops = &syscall_vm_ops; | ||
113 | vma->vm_mm = mm; | ||
114 | |||
115 | ret = insert_vm_struct(mm, vma); | ||
116 | if (unlikely(ret)) { | ||
117 | kmem_cache_free(vm_area_cachep, vma); | ||
118 | goto up_fail; | ||
119 | } | ||
120 | 81 | ||
121 | current->mm->context.vdso = (void *)addr; | 82 | current->mm->context.vdso = (void *)addr; |
122 | 83 | ||
123 | mm->total_vm++; | ||
124 | up_fail: | 84 | up_fail: |
125 | up_write(&mm->mmap_sem); | 85 | up_write(&mm->mmap_sem); |
126 | return ret; | 86 | return ret; |
diff --git a/arch/sh/mm/cache-debugfs.c b/arch/sh/mm/cache-debugfs.c index e0122bd33ddb..909dcfa8c8c6 100644 --- a/arch/sh/mm/cache-debugfs.c +++ b/arch/sh/mm/cache-debugfs.c | |||
@@ -114,7 +114,7 @@ static int cache_debugfs_open(struct inode *inode, struct file *file) | |||
114 | return single_open(file, cache_seq_show, inode->i_private); | 114 | return single_open(file, cache_seq_show, inode->i_private); |
115 | } | 115 | } |
116 | 116 | ||
117 | static struct file_operations cache_debugfs_fops = { | 117 | static const struct file_operations cache_debugfs_fops = { |
118 | .owner = THIS_MODULE, | 118 | .owner = THIS_MODULE, |
119 | .open = cache_debugfs_open, | 119 | .open = cache_debugfs_open, |
120 | .read = seq_read, | 120 | .read = seq_read, |
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index 29bd37b1488e..bf0c263cb6fd 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c | |||
@@ -158,7 +158,6 @@ void __init paging_init(void) | |||
158 | * Setup some defaults for the zone sizes.. these should be safe | 158 | * Setup some defaults for the zone sizes.. these should be safe |
159 | * regardless of distcontiguous memory or MMU settings. | 159 | * regardless of distcontiguous memory or MMU settings. |
160 | */ | 160 | */ |
161 | zones_size[ZONE_DMA] = 0 >> PAGE_SHIFT; | ||
162 | zones_size[ZONE_NORMAL] = __MEMORY_SIZE >> PAGE_SHIFT; | 161 | zones_size[ZONE_NORMAL] = __MEMORY_SIZE >> PAGE_SHIFT; |
163 | #ifdef CONFIG_HIGHMEM | 162 | #ifdef CONFIG_HIGHMEM |
164 | zones_size[ZONE_HIGHMEM] = 0 >> PAGE_SHIFT; | 163 | zones_size[ZONE_HIGHMEM] = 0 >> PAGE_SHIFT; |
@@ -170,8 +169,6 @@ void __init paging_init(void) | |||
170 | * the zone sizes accordingly, in addition to turning it on. | 169 | * the zone sizes accordingly, in addition to turning it on. |
171 | */ | 170 | */ |
172 | { | 171 | { |
173 | unsigned long max_dma, low, start_pfn; | ||
174 | |||
175 | /* We don't need to map the kernel through the TLB, as | 172 | /* We don't need to map the kernel through the TLB, as |
176 | * it is permanatly mapped using P1. So clear the | 173 | * it is permanatly mapped using P1. So clear the |
177 | * entire pgd. */ | 174 | * entire pgd. */ |
@@ -179,19 +176,7 @@ void __init paging_init(void) | |||
179 | 176 | ||
180 | /* Turn on the MMU */ | 177 | /* Turn on the MMU */ |
181 | enable_mmu(); | 178 | enable_mmu(); |
182 | 179 | zones_size[ZONE_NORMAL] = MAX_LOW_PFN - START_PFN; | |
183 | /* Fixup the zone sizes */ | ||
184 | start_pfn = START_PFN; | ||
185 | max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT; | ||
186 | low = MAX_LOW_PFN; | ||
187 | |||
188 | if (low < max_dma) { | ||
189 | zones_size[ZONE_DMA] = low - start_pfn; | ||
190 | zones_size[ZONE_NORMAL] = 0; | ||
191 | } else { | ||
192 | zones_size[ZONE_DMA] = max_dma - start_pfn; | ||
193 | zones_size[ZONE_NORMAL] = low - max_dma; | ||
194 | } | ||
195 | } | 180 | } |
196 | 181 | ||
197 | /* Set an initial value for the MMU.TTB so we don't have to | 182 | /* Set an initial value for the MMU.TTB so we don't have to |
diff --git a/arch/sh/mm/pmb.c b/arch/sh/mm/pmb.c index b60ad83a7635..d0d45e2e0ab3 100644 --- a/arch/sh/mm/pmb.c +++ b/arch/sh/mm/pmb.c | |||
@@ -378,7 +378,7 @@ static int pmb_debugfs_open(struct inode *inode, struct file *file) | |||
378 | return single_open(file, pmb_seq_show, NULL); | 378 | return single_open(file, pmb_seq_show, NULL); |
379 | } | 379 | } |
380 | 380 | ||
381 | static struct file_operations pmb_debugfs_fops = { | 381 | static const struct file_operations pmb_debugfs_fops = { |
382 | .owner = THIS_MODULE, | 382 | .owner = THIS_MODULE, |
383 | .open = pmb_debugfs_open, | 383 | .open = pmb_debugfs_open, |
384 | .read = seq_read, | 384 | .read = seq_read, |
diff --git a/arch/sh/oprofile/op_model_sh7750.c b/arch/sh/oprofile/op_model_sh7750.c index 60402eec4b4d..0104e44bc76a 100644 --- a/arch/sh/oprofile/op_model_sh7750.c +++ b/arch/sh/oprofile/op_model_sh7750.c | |||
@@ -187,7 +187,7 @@ static ssize_t sh7750_write_count(struct file *file, const char __user *buf, | |||
187 | return count; | 187 | return count; |
188 | } | 188 | } |
189 | 189 | ||
190 | static struct file_operations count_fops = { | 190 | static const struct file_operations count_fops = { |
191 | .read = sh7750_read_count, | 191 | .read = sh7750_read_count, |
192 | .write = sh7750_write_count, | 192 | .write = sh7750_write_count, |
193 | }; | 193 | }; |
diff --git a/arch/sh64/Kconfig b/arch/sh64/Kconfig index 7bc0744b7ab6..e14b533558c8 100644 --- a/arch/sh64/Kconfig +++ b/arch/sh64/Kconfig | |||
@@ -36,9 +36,6 @@ config GENERIC_CALIBRATE_DELAY | |||
36 | config RWSEM_XCHGADD_ALGORITHM | 36 | config RWSEM_XCHGADD_ALGORITHM |
37 | bool | 37 | bool |
38 | 38 | ||
39 | config GENERIC_ISA_DMA | ||
40 | bool | ||
41 | |||
42 | config ARCH_HAS_ILOG2_U32 | 39 | config ARCH_HAS_ILOG2_U32 |
43 | bool | 40 | bool |
44 | default n | 41 | default n |
diff --git a/arch/sh64/kernel/setup.c b/arch/sh64/kernel/setup.c index b9e7d54d7b85..53e9d20a874a 100644 --- a/arch/sh64/kernel/setup.c +++ b/arch/sh64/kernel/setup.c | |||
@@ -83,7 +83,7 @@ extern int sh64_tlb_init(void); | |||
83 | #define RAMDISK_PROMPT_FLAG 0x8000 | 83 | #define RAMDISK_PROMPT_FLAG 0x8000 |
84 | #define RAMDISK_LOAD_FLAG 0x4000 | 84 | #define RAMDISK_LOAD_FLAG 0x4000 |
85 | 85 | ||
86 | static char command_line[COMMAND_LINE_SIZE] = { 0, }; | 86 | static char __initdata command_line[COMMAND_LINE_SIZE] = { 0, }; |
87 | unsigned long long memory_start = CONFIG_MEMORY_START; | 87 | unsigned long long memory_start = CONFIG_MEMORY_START; |
88 | unsigned long long memory_end = CONFIG_MEMORY_START + (CONFIG_MEMORY_SIZE_IN_MB * 1024 * 1024); | 88 | unsigned long long memory_end = CONFIG_MEMORY_START + (CONFIG_MEMORY_SIZE_IN_MB * 1024 * 1024); |
89 | 89 | ||
@@ -95,8 +95,8 @@ static inline void parse_mem_cmdline (char ** cmdline_p) | |||
95 | int len = 0; | 95 | int len = 0; |
96 | 96 | ||
97 | /* Save unparsed command line copy for /proc/cmdline */ | 97 | /* Save unparsed command line copy for /proc/cmdline */ |
98 | memcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); | 98 | memcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); |
99 | saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; | 99 | boot_command_line[COMMAND_LINE_SIZE-1] = '\0'; |
100 | 100 | ||
101 | for (;;) { | 101 | for (;;) { |
102 | /* | 102 | /* |
diff --git a/arch/sh64/kernel/time.c b/arch/sh64/kernel/time.c index 9c4a38a8698c..390b40de7cef 100644 --- a/arch/sh64/kernel/time.c +++ b/arch/sh64/kernel/time.c | |||
@@ -579,12 +579,3 @@ void enter_deep_standby(void) | |||
579 | asm __volatile__ ("nop"); | 579 | asm __volatile__ ("nop"); |
580 | panic("Unexpected wakeup!\n"); | 580 | panic("Unexpected wakeup!\n"); |
581 | } | 581 | } |
582 | |||
583 | /* | ||
584 | * Scheduler clock - returns current time in nanosec units. | ||
585 | */ | ||
586 | unsigned long long sched_clock(void) | ||
587 | { | ||
588 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
589 | } | ||
590 | |||
diff --git a/arch/sh64/kernel/vmlinux.lds.S b/arch/sh64/kernel/vmlinux.lds.S index 95c4d753e357..a59c5e998131 100644 --- a/arch/sh64/kernel/vmlinux.lds.S +++ b/arch/sh64/kernel/vmlinux.lds.S | |||
@@ -115,9 +115,13 @@ SECTIONS | |||
115 | .con_initcall.init : C_PHYS(.con_initcall.init) { *(.con_initcall.init) } | 115 | .con_initcall.init : C_PHYS(.con_initcall.init) { *(.con_initcall.init) } |
116 | __con_initcall_end = .; | 116 | __con_initcall_end = .; |
117 | SECURITY_INIT | 117 | SECURITY_INIT |
118 | |||
119 | #ifdef CONFIG_BLK_DEV_INITRD | ||
118 | __initramfs_start = .; | 120 | __initramfs_start = .; |
119 | .init.ramfs : C_PHYS(.init.ramfs) { *(.init.ramfs) } | 121 | .init.ramfs : C_PHYS(.init.ramfs) { *(.init.ramfs) } |
120 | __initramfs_end = .; | 122 | __initramfs_end = .; |
123 | #endif | ||
124 | |||
121 | . = ALIGN(PAGE_SIZE); | 125 | . = ALIGN(PAGE_SIZE); |
122 | __init_end = .; | 126 | __init_end = .; |
123 | 127 | ||
diff --git a/arch/sh64/mm/init.c b/arch/sh64/mm/init.c index 83295bd21aa7..5dc08787259c 100644 --- a/arch/sh64/mm/init.c +++ b/arch/sh64/mm/init.c | |||
@@ -118,10 +118,7 @@ void __init paging_init(void) | |||
118 | 118 | ||
119 | mmu_context_cache = MMU_CONTEXT_FIRST_VERSION; | 119 | mmu_context_cache = MMU_CONTEXT_FIRST_VERSION; |
120 | 120 | ||
121 | /* | 121 | zones_size[ZONE_NORMAL] = MAX_LOW_PFN - START_PFN; |
122 | * All memory is good as ZONE_NORMAL (fall-through) and ZONE_DMA. | ||
123 | */ | ||
124 | zones_size[ZONE_DMA] = MAX_LOW_PFN - START_PFN; | ||
125 | NODE_DATA(0)->node_mem_map = NULL; | 122 | NODE_DATA(0)->node_mem_map = NULL; |
126 | free_area_init_node(0, NODE_DATA(0), zones_size, __MEMORY_START >> PAGE_SHIFT, 0); | 123 | free_area_init_node(0, NODE_DATA(0), zones_size, __MEMORY_START >> PAGE_SHIFT, 0); |
127 | } | 124 | } |
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index d0dec1ea2eed..bd992c0048f0 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
@@ -13,6 +13,10 @@ config HIGHMEM | |||
13 | bool | 13 | bool |
14 | default y | 14 | default y |
15 | 15 | ||
16 | config ZONE_DMA | ||
17 | bool | ||
18 | default y | ||
19 | |||
16 | config GENERIC_ISA_DMA | 20 | config GENERIC_ISA_DMA |
17 | bool | 21 | bool |
18 | default y | 22 | default y |
diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile index 6616ee05c313..e795f282dece 100644 --- a/arch/sparc/kernel/Makefile +++ b/arch/sparc/kernel/Makefile | |||
@@ -12,7 +12,9 @@ obj-y := entry.o wof.o wuf.o etrap.o rtrap.o traps.o $(IRQ_OBJS) \ | |||
12 | sys_sparc.o sunos_asm.o systbls.o \ | 12 | sys_sparc.o sunos_asm.o systbls.o \ |
13 | time.o windows.o cpu.o devices.o sclow.o \ | 13 | time.o windows.o cpu.o devices.o sclow.o \ |
14 | tadpole.o tick14.o ptrace.o sys_solaris.o \ | 14 | tadpole.o tick14.o ptrace.o sys_solaris.o \ |
15 | unaligned.o muldiv.o semaphore.o prom.o of_device.o | 15 | unaligned.o muldiv.o semaphore.o prom.o of_device.o devres.o |
16 | |||
17 | devres-y = ../../../kernel/irq/devres.o | ||
16 | 18 | ||
17 | obj-$(CONFIG_PCI) += pcic.o | 19 | obj-$(CONFIG_PCI) += pcic.o |
18 | obj-$(CONFIG_SUN4) += sun4setup.o | 20 | obj-$(CONFIG_SUN4) += sun4setup.o |
diff --git a/arch/sparc/kernel/apc.c b/arch/sparc/kernel/apc.c index 406dd94afb45..d06a405ca718 100644 --- a/arch/sparc/kernel/apc.c +++ b/arch/sparc/kernel/apc.c | |||
@@ -127,7 +127,7 @@ static int apc_ioctl(struct inode *inode, struct file *f, | |||
127 | return 0; | 127 | return 0; |
128 | } | 128 | } |
129 | 129 | ||
130 | static struct file_operations apc_fops = { | 130 | static const struct file_operations apc_fops = { |
131 | .ioctl = apc_ioctl, | 131 | .ioctl = apc_ioctl, |
132 | .open = apc_open, | 132 | .open = apc_open, |
133 | .release = apc_release, | 133 | .release = apc_release, |
diff --git a/arch/sparc/kernel/setup.c b/arch/sparc/kernel/setup.c index 383526ad94fc..eccd8e87f529 100644 --- a/arch/sparc/kernel/setup.c +++ b/arch/sparc/kernel/setup.c | |||
@@ -246,7 +246,7 @@ void __init setup_arch(char **cmdline_p) | |||
246 | 246 | ||
247 | /* Initialize PROM console and command line. */ | 247 | /* Initialize PROM console and command line. */ |
248 | *cmdline_p = prom_getbootargs(); | 248 | *cmdline_p = prom_getbootargs(); |
249 | strcpy(saved_command_line, *cmdline_p); | 249 | strcpy(boot_command_line, *cmdline_p); |
250 | 250 | ||
251 | /* Set sparc_cpu_model */ | 251 | /* Set sparc_cpu_model */ |
252 | sparc_cpu_model = sun_unknown; | 252 | sparc_cpu_model = sun_unknown; |
diff --git a/arch/sparc/kernel/sunos_ioctl.c b/arch/sparc/kernel/sunos_ioctl.c index a6ba3d26222c..32e8274e4357 100644 --- a/arch/sparc/kernel/sunos_ioctl.c +++ b/arch/sparc/kernel/sunos_ioctl.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/errno.h> | 11 | #include <linux/errno.h> |
12 | #include <linux/string.h> | 12 | #include <linux/string.h> |
13 | #include <linux/termios.h> | 13 | #include <linux/termios.h> |
14 | #include <linux/tty.h> | ||
14 | #include <linux/ioctl.h> | 15 | #include <linux/ioctl.h> |
15 | #include <linux/route.h> | 16 | #include <linux/route.h> |
16 | #include <linux/sockios.h> | 17 | #include <linux/sockios.h> |
diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c index 0bf8c165fc92..da6606f0cffc 100644 --- a/arch/sparc/kernel/sys_sunos.c +++ b/arch/sparc/kernel/sys_sunos.c | |||
@@ -859,14 +859,16 @@ asmlinkage int sunos_wait4(pid_t pid, unsigned int __user *stat_addr, | |||
859 | return ret; | 859 | return ret; |
860 | } | 860 | } |
861 | 861 | ||
862 | extern int kill_pg(int, int, int); | ||
863 | asmlinkage int sunos_killpg(int pgrp, int sig) | 862 | asmlinkage int sunos_killpg(int pgrp, int sig) |
864 | { | 863 | { |
865 | int ret; | 864 | int ret; |
866 | 865 | ||
867 | lock_kernel(); | 866 | rcu_read_lock(); |
868 | ret = kill_pg(pgrp, sig, 0); | 867 | ret = -EINVAL; |
869 | unlock_kernel(); | 868 | if (pgrp > 0) |
869 | ret = kill_pgrp(find_pid(pgrp), sig, 0); | ||
870 | rcu_read_unlock(); | ||
871 | |||
870 | return ret; | 872 | return ret; |
871 | } | 873 | } |
872 | 874 | ||
diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c index 2fcce000d877..9bb1240aaf8a 100644 --- a/arch/sparc/kernel/time.c +++ b/arch/sparc/kernel/time.c | |||
@@ -436,15 +436,6 @@ static inline unsigned long do_gettimeoffset(void) | |||
436 | return (*master_l10_counter >> 10) & 0x1fffff; | 436 | return (*master_l10_counter >> 10) & 0x1fffff; |
437 | } | 437 | } |
438 | 438 | ||
439 | /* | ||
440 | * Returns nanoseconds | ||
441 | * XXX This is a suboptimal implementation. | ||
442 | */ | ||
443 | unsigned long long sched_clock(void) | ||
444 | { | ||
445 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
446 | } | ||
447 | |||
448 | /* Ok, my cute asm atomicity trick doesn't work anymore. | 439 | /* Ok, my cute asm atomicity trick doesn't work anymore. |
449 | * There are just too many variables that need to be protected | 440 | * There are just too many variables that need to be protected |
450 | * now (both members of xtime, et al.) | 441 | * now (both members of xtime, et al.) |
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S index b73e6b9067ed..e5c24e0521de 100644 --- a/arch/sparc/kernel/vmlinux.lds.S +++ b/arch/sparc/kernel/vmlinux.lds.S | |||
@@ -57,10 +57,14 @@ SECTIONS | |||
57 | .con_initcall.init : { *(.con_initcall.init) } | 57 | .con_initcall.init : { *(.con_initcall.init) } |
58 | __con_initcall_end = .; | 58 | __con_initcall_end = .; |
59 | SECURITY_INIT | 59 | SECURITY_INIT |
60 | |||
61 | #ifdef CONFIG_BLK_DEV_INITRD | ||
60 | . = ALIGN(4096); | 62 | . = ALIGN(4096); |
61 | __initramfs_start = .; | 63 | __initramfs_start = .; |
62 | .init.ramfs : { *(.init.ramfs) } | 64 | .init.ramfs : { *(.init.ramfs) } |
63 | __initramfs_end = .; | 65 | __initramfs_end = .; |
66 | #endif | ||
67 | |||
64 | . = ALIGN(32); | 68 | . = ALIGN(32); |
65 | __per_cpu_start = .; | 69 | __per_cpu_start = .; |
66 | .data.percpu : { *(.data.percpu) } | 70 | .data.percpu : { *(.data.percpu) } |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index d41f66ac7fff..f75a686ba644 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
@@ -232,10 +232,6 @@ config LARGE_ALLOCS | |||
232 | 232 | ||
233 | source "mm/Kconfig" | 233 | source "mm/Kconfig" |
234 | 234 | ||
235 | config GENERIC_ISA_DMA | ||
236 | bool | ||
237 | default y | ||
238 | |||
239 | config ISA | 235 | config ISA |
240 | bool | 236 | bool |
241 | help | 237 | help |
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig index 5a9e68b13e60..0f44a6a6675f 100644 --- a/arch/sparc64/defconfig +++ b/arch/sparc64/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.20-rc2 | 3 | # Linux kernel version: 2.6.20 |
4 | # Thu Dec 28 15:09:49 2006 | 4 | # Sun Feb 11 23:47:40 2007 |
5 | # | 5 | # |
6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
@@ -49,7 +49,6 @@ CONFIG_POSIX_MQUEUE=y | |||
49 | # CONFIG_IKCONFIG is not set | 49 | # CONFIG_IKCONFIG is not set |
50 | CONFIG_SYSFS_DEPRECATED=y | 50 | CONFIG_SYSFS_DEPRECATED=y |
51 | CONFIG_RELAY=y | 51 | CONFIG_RELAY=y |
52 | CONFIG_INITRAMFS_SOURCE="" | ||
53 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 52 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
54 | CONFIG_SYSCTL=y | 53 | CONFIG_SYSCTL=y |
55 | # CONFIG_EMBEDDED is not set | 54 | # CONFIG_EMBEDDED is not set |
@@ -144,14 +143,14 @@ CONFIG_HAVE_MEMORY_PRESENT=y | |||
144 | CONFIG_SPARSEMEM_EXTREME=y | 143 | CONFIG_SPARSEMEM_EXTREME=y |
145 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 144 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
146 | CONFIG_RESOURCES_64BIT=y | 145 | CONFIG_RESOURCES_64BIT=y |
147 | CONFIG_GENERIC_ISA_DMA=y | 146 | CONFIG_ZONE_DMA_FLAG=0 |
148 | CONFIG_SBUS=y | 147 | CONFIG_SBUS=y |
149 | CONFIG_SBUSCHAR=y | 148 | CONFIG_SBUSCHAR=y |
150 | CONFIG_SUN_AUXIO=y | 149 | CONFIG_SUN_AUXIO=y |
151 | CONFIG_SUN_IO=y | 150 | CONFIG_SUN_IO=y |
152 | CONFIG_PCI=y | 151 | CONFIG_PCI=y |
153 | CONFIG_PCI_DOMAINS=y | 152 | CONFIG_PCI_DOMAINS=y |
154 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | 153 | CONFIG_PCI_MSI=y |
155 | # CONFIG_PCI_DEBUG is not set | 154 | # CONFIG_PCI_DEBUG is not set |
156 | CONFIG_SUN_OPENPROMFS=m | 155 | CONFIG_SUN_OPENPROMFS=m |
157 | CONFIG_SPARC32_COMPAT=y | 156 | CONFIG_SPARC32_COMPAT=y |
@@ -182,7 +181,9 @@ CONFIG_UNIX=y | |||
182 | CONFIG_XFRM=y | 181 | CONFIG_XFRM=y |
183 | CONFIG_XFRM_USER=m | 182 | CONFIG_XFRM_USER=m |
184 | # CONFIG_XFRM_SUB_POLICY is not set | 183 | # CONFIG_XFRM_SUB_POLICY is not set |
184 | CONFIG_XFRM_MIGRATE=y | ||
185 | CONFIG_NET_KEY=m | 185 | CONFIG_NET_KEY=m |
186 | CONFIG_NET_KEY_MIGRATE=y | ||
186 | CONFIG_INET=y | 187 | CONFIG_INET=y |
187 | CONFIG_IP_MULTICAST=y | 188 | CONFIG_IP_MULTICAST=y |
188 | # CONFIG_IP_ADVANCED_ROUTER is not set | 189 | # CONFIG_IP_ADVANCED_ROUTER is not set |
@@ -300,6 +301,7 @@ CONFIG_STANDALONE=y | |||
300 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 301 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
301 | CONFIG_FW_LOADER=y | 302 | CONFIG_FW_LOADER=y |
302 | # CONFIG_DEBUG_DRIVER is not set | 303 | # CONFIG_DEBUG_DRIVER is not set |
304 | # CONFIG_DEBUG_DEVRES is not set | ||
303 | # CONFIG_SYS_HYPERVISOR is not set | 305 | # CONFIG_SYS_HYPERVISOR is not set |
304 | 306 | ||
305 | # | 307 | # |
@@ -393,6 +395,7 @@ CONFIG_BLK_DEV_ALI15X3=y | |||
393 | # CONFIG_BLK_DEV_JMICRON is not set | 395 | # CONFIG_BLK_DEV_JMICRON is not set |
394 | # CONFIG_BLK_DEV_SC1200 is not set | 396 | # CONFIG_BLK_DEV_SC1200 is not set |
395 | # CONFIG_BLK_DEV_PIIX is not set | 397 | # CONFIG_BLK_DEV_PIIX is not set |
398 | # CONFIG_BLK_DEV_IT8213 is not set | ||
396 | # CONFIG_BLK_DEV_IT821X is not set | 399 | # CONFIG_BLK_DEV_IT821X is not set |
397 | # CONFIG_BLK_DEV_NS87415 is not set | 400 | # CONFIG_BLK_DEV_NS87415 is not set |
398 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 401 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
@@ -402,6 +405,7 @@ CONFIG_BLK_DEV_ALI15X3=y | |||
402 | # CONFIG_BLK_DEV_SLC90E66 is not set | 405 | # CONFIG_BLK_DEV_SLC90E66 is not set |
403 | # CONFIG_BLK_DEV_TRM290 is not set | 406 | # CONFIG_BLK_DEV_TRM290 is not set |
404 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 407 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
408 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
405 | # CONFIG_IDE_ARM is not set | 409 | # CONFIG_IDE_ARM is not set |
406 | CONFIG_BLK_DEV_IDEDMA=y | 410 | CONFIG_BLK_DEV_IDEDMA=y |
407 | # CONFIG_IDEDMA_IVB is not set | 411 | # CONFIG_IDEDMA_IVB is not set |
@@ -579,6 +583,7 @@ CONFIG_NET_PCI=y | |||
579 | # CONFIG_EPIC100 is not set | 583 | # CONFIG_EPIC100 is not set |
580 | # CONFIG_SUNDANCE is not set | 584 | # CONFIG_SUNDANCE is not set |
581 | # CONFIG_VIA_RHINE is not set | 585 | # CONFIG_VIA_RHINE is not set |
586 | # CONFIG_SC92031 is not set | ||
582 | 587 | ||
583 | # | 588 | # |
584 | # Ethernet (1000 Mbit) | 589 | # Ethernet (1000 Mbit) |
@@ -601,11 +606,13 @@ CONFIG_E1000_NAPI=y | |||
601 | CONFIG_TIGON3=m | 606 | CONFIG_TIGON3=m |
602 | CONFIG_BNX2=m | 607 | CONFIG_BNX2=m |
603 | # CONFIG_QLA3XXX is not set | 608 | # CONFIG_QLA3XXX is not set |
609 | # CONFIG_ATL1 is not set | ||
604 | 610 | ||
605 | # | 611 | # |
606 | # Ethernet (10000 Mbit) | 612 | # Ethernet (10000 Mbit) |
607 | # | 613 | # |
608 | # CONFIG_CHELSIO_T1 is not set | 614 | # CONFIG_CHELSIO_T1 is not set |
615 | # CONFIG_CHELSIO_T3 is not set | ||
609 | # CONFIG_IXGB is not set | 616 | # CONFIG_IXGB is not set |
610 | # CONFIG_S2IO is not set | 617 | # CONFIG_S2IO is not set |
611 | # CONFIG_MYRI10GE is not set | 618 | # CONFIG_MYRI10GE is not set |
@@ -627,8 +634,17 @@ CONFIG_BNX2=m | |||
627 | # CONFIG_WAN is not set | 634 | # CONFIG_WAN is not set |
628 | # CONFIG_FDDI is not set | 635 | # CONFIG_FDDI is not set |
629 | # CONFIG_HIPPI is not set | 636 | # CONFIG_HIPPI is not set |
630 | # CONFIG_PPP is not set | 637 | CONFIG_PPP=m |
638 | CONFIG_PPP_MULTILINK=y | ||
639 | CONFIG_PPP_FILTER=y | ||
640 | CONFIG_PPP_ASYNC=m | ||
641 | CONFIG_PPP_SYNC_TTY=m | ||
642 | CONFIG_PPP_DEFLATE=m | ||
643 | CONFIG_PPP_BSDCOMP=m | ||
644 | CONFIG_PPP_MPPE=m | ||
645 | CONFIG_PPPOE=m | ||
631 | # CONFIG_SLIP is not set | 646 | # CONFIG_SLIP is not set |
647 | CONFIG_SLHC=m | ||
632 | # CONFIG_NET_FC is not set | 648 | # CONFIG_NET_FC is not set |
633 | # CONFIG_SHAPER is not set | 649 | # CONFIG_SHAPER is not set |
634 | # CONFIG_NETCONSOLE is not set | 650 | # CONFIG_NETCONSOLE is not set |
@@ -1043,6 +1059,11 @@ CONFIG_SND_SUN_CS4231=m | |||
1043 | # CONFIG_SND_SUN_DBRI is not set | 1059 | # CONFIG_SND_SUN_DBRI is not set |
1044 | 1060 | ||
1045 | # | 1061 | # |
1062 | # SoC audio support | ||
1063 | # | ||
1064 | # CONFIG_SND_SOC is not set | ||
1065 | |||
1066 | # | ||
1046 | # Open Sound System | 1067 | # Open Sound System |
1047 | # | 1068 | # |
1048 | # CONFIG_SOUND_PRIME is not set | 1069 | # CONFIG_SOUND_PRIME is not set |
@@ -1052,6 +1073,7 @@ CONFIG_AC97_BUS=m | |||
1052 | # HID Devices | 1073 | # HID Devices |
1053 | # | 1074 | # |
1054 | CONFIG_HID=y | 1075 | CONFIG_HID=y |
1076 | # CONFIG_HID_DEBUG is not set | ||
1055 | 1077 | ||
1056 | # | 1078 | # |
1057 | # USB support | 1079 | # USB support |
@@ -1066,9 +1088,7 @@ CONFIG_USB=y | |||
1066 | # Miscellaneous USB options | 1088 | # Miscellaneous USB options |
1067 | # | 1089 | # |
1068 | CONFIG_USB_DEVICEFS=y | 1090 | CONFIG_USB_DEVICEFS=y |
1069 | # CONFIG_USB_BANDWIDTH is not set | ||
1070 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1091 | # CONFIG_USB_DYNAMIC_MINORS is not set |
1071 | # CONFIG_USB_MULTITHREAD_PROBE is not set | ||
1072 | # CONFIG_USB_OTG is not set | 1092 | # CONFIG_USB_OTG is not set |
1073 | 1093 | ||
1074 | # | 1094 | # |
@@ -1078,9 +1098,11 @@ CONFIG_USB_EHCI_HCD=m | |||
1078 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | 1098 | # CONFIG_USB_EHCI_SPLIT_ISO is not set |
1079 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1099 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1080 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1100 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1101 | # CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set | ||
1081 | # CONFIG_USB_ISP116X_HCD is not set | 1102 | # CONFIG_USB_ISP116X_HCD is not set |
1082 | CONFIG_USB_OHCI_HCD=y | 1103 | CONFIG_USB_OHCI_HCD=y |
1083 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 1104 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
1105 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
1084 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 1106 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
1085 | CONFIG_USB_UHCI_HCD=m | 1107 | CONFIG_USB_UHCI_HCD=m |
1086 | # CONFIG_USB_SL811_HCD is not set | 1108 | # CONFIG_USB_SL811_HCD is not set |
@@ -1132,6 +1154,7 @@ CONFIG_USB_HIDDEV=y | |||
1132 | # CONFIG_USB_ATI_REMOTE2 is not set | 1154 | # CONFIG_USB_ATI_REMOTE2 is not set |
1133 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1155 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
1134 | # CONFIG_USB_APPLETOUCH is not set | 1156 | # CONFIG_USB_APPLETOUCH is not set |
1157 | # CONFIG_USB_GTCO is not set | ||
1135 | 1158 | ||
1136 | # | 1159 | # |
1137 | # USB Imaging devices | 1160 | # USB Imaging devices |
@@ -1236,6 +1259,10 @@ CONFIG_USB_HIDDEV=y | |||
1236 | # | 1259 | # |
1237 | 1260 | ||
1238 | # | 1261 | # |
1262 | # Auxiliary Display support | ||
1263 | # | ||
1264 | |||
1265 | # | ||
1239 | # Virtualization | 1266 | # Virtualization |
1240 | # | 1267 | # |
1241 | 1268 | ||
@@ -1426,7 +1453,6 @@ CONFIG_SCHEDSTATS=y | |||
1426 | # CONFIG_RT_MUTEX_TESTER is not set | 1453 | # CONFIG_RT_MUTEX_TESTER is not set |
1427 | # CONFIG_DEBUG_SPINLOCK is not set | 1454 | # CONFIG_DEBUG_SPINLOCK is not set |
1428 | # CONFIG_DEBUG_MUTEXES is not set | 1455 | # CONFIG_DEBUG_MUTEXES is not set |
1429 | # CONFIG_DEBUG_RWSEMS is not set | ||
1430 | # CONFIG_DEBUG_LOCK_ALLOC is not set | 1456 | # CONFIG_DEBUG_LOCK_ALLOC is not set |
1431 | # CONFIG_PROVE_LOCKING is not set | 1457 | # CONFIG_PROVE_LOCKING is not set |
1432 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1458 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
@@ -1473,8 +1499,10 @@ CONFIG_CRYPTO_TGR192=m | |||
1473 | CONFIG_CRYPTO_GF128MUL=m | 1499 | CONFIG_CRYPTO_GF128MUL=m |
1474 | CONFIG_CRYPTO_ECB=m | 1500 | CONFIG_CRYPTO_ECB=m |
1475 | CONFIG_CRYPTO_CBC=y | 1501 | CONFIG_CRYPTO_CBC=y |
1502 | CONFIG_CRYPTO_PCBC=m | ||
1476 | CONFIG_CRYPTO_LRW=m | 1503 | CONFIG_CRYPTO_LRW=m |
1477 | CONFIG_CRYPTO_DES=y | 1504 | CONFIG_CRYPTO_DES=y |
1505 | CONFIG_CRYPTO_FCRYPT=m | ||
1478 | CONFIG_CRYPTO_BLOWFISH=m | 1506 | CONFIG_CRYPTO_BLOWFISH=m |
1479 | CONFIG_CRYPTO_TWOFISH=m | 1507 | CONFIG_CRYPTO_TWOFISH=m |
1480 | CONFIG_CRYPTO_TWOFISH_COMMON=m | 1508 | CONFIG_CRYPTO_TWOFISH_COMMON=m |
@@ -1489,6 +1517,7 @@ CONFIG_CRYPTO_ANUBIS=m | |||
1489 | CONFIG_CRYPTO_DEFLATE=y | 1517 | CONFIG_CRYPTO_DEFLATE=y |
1490 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1518 | CONFIG_CRYPTO_MICHAEL_MIC=m |
1491 | CONFIG_CRYPTO_CRC32C=m | 1519 | CONFIG_CRYPTO_CRC32C=m |
1520 | CONFIG_CRYPTO_CAMELLIA=m | ||
1492 | CONFIG_CRYPTO_TEST=m | 1521 | CONFIG_CRYPTO_TEST=m |
1493 | 1522 | ||
1494 | # | 1523 | # |
@@ -1506,4 +1535,5 @@ CONFIG_LIBCRC32C=m | |||
1506 | CONFIG_ZLIB_INFLATE=y | 1535 | CONFIG_ZLIB_INFLATE=y |
1507 | CONFIG_ZLIB_DEFLATE=y | 1536 | CONFIG_ZLIB_DEFLATE=y |
1508 | CONFIG_PLIST=y | 1537 | CONFIG_PLIST=y |
1509 | CONFIG_IOMAP_COPY=y | 1538 | CONFIG_HAS_IOMEM=y |
1539 | CONFIG_HAS_IOPORT=y | ||
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index c3d068c7a412..b5ff3ee5ace1 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/seq_file.h> | 22 | #include <linux/seq_file.h> |
23 | #include <linux/bootmem.h> | 23 | #include <linux/bootmem.h> |
24 | #include <linux/irq.h> | 24 | #include <linux/irq.h> |
25 | #include <linux/msi.h> | ||
25 | 26 | ||
26 | #include <asm/ptrace.h> | 27 | #include <asm/ptrace.h> |
27 | #include <asm/processor.h> | 28 | #include <asm/processor.h> |
@@ -87,7 +88,6 @@ struct ino_bucket ivector_table[NUM_IVECS] __attribute__ ((aligned (SMP_CACHE_BY | |||
87 | #define irq_work(__cpu) &(trap_block[(__cpu)].irq_worklist) | 88 | #define irq_work(__cpu) &(trap_block[(__cpu)].irq_worklist) |
88 | 89 | ||
89 | static unsigned int virt_to_real_irq_table[NR_IRQS]; | 90 | static unsigned int virt_to_real_irq_table[NR_IRQS]; |
90 | static unsigned char virt_irq_cur = 1; | ||
91 | 91 | ||
92 | static unsigned char virt_irq_alloc(unsigned int real_irq) | 92 | static unsigned char virt_irq_alloc(unsigned int real_irq) |
93 | { | 93 | { |
@@ -95,26 +95,32 @@ static unsigned char virt_irq_alloc(unsigned int real_irq) | |||
95 | 95 | ||
96 | BUILD_BUG_ON(NR_IRQS >= 256); | 96 | BUILD_BUG_ON(NR_IRQS >= 256); |
97 | 97 | ||
98 | ent = virt_irq_cur; | 98 | for (ent = 1; ent < NR_IRQS; ent++) { |
99 | if (!virt_to_real_irq_table[ent]) | ||
100 | break; | ||
101 | } | ||
99 | if (ent >= NR_IRQS) { | 102 | if (ent >= NR_IRQS) { |
100 | printk(KERN_ERR "IRQ: Out of virtual IRQs.\n"); | 103 | printk(KERN_ERR "IRQ: Out of virtual IRQs.\n"); |
101 | return 0; | 104 | return 0; |
102 | } | 105 | } |
103 | 106 | ||
104 | virt_irq_cur = ent + 1; | ||
105 | virt_to_real_irq_table[ent] = real_irq; | 107 | virt_to_real_irq_table[ent] = real_irq; |
106 | 108 | ||
107 | return ent; | 109 | return ent; |
108 | } | 110 | } |
109 | 111 | ||
110 | #if 0 /* Currently unused. */ | 112 | static void virt_irq_free(unsigned int virt_irq) |
111 | static unsigned char real_to_virt_irq(unsigned int real_irq) | ||
112 | { | 113 | { |
113 | struct ino_bucket *bucket = __bucket(real_irq); | 114 | unsigned int real_irq; |
114 | 115 | ||
115 | return bucket->virt_irq; | 116 | if (virt_irq >= NR_IRQS) |
117 | return; | ||
118 | |||
119 | real_irq = virt_to_real_irq_table[virt_irq]; | ||
120 | virt_to_real_irq_table[virt_irq] = 0; | ||
121 | |||
122 | __bucket(real_irq)->virt_irq = 0; | ||
116 | } | 123 | } |
117 | #endif | ||
118 | 124 | ||
119 | static unsigned int virt_to_real_irq(unsigned char virt_irq) | 125 | static unsigned int virt_to_real_irq(unsigned char virt_irq) |
120 | { | 126 | { |
@@ -268,8 +274,7 @@ static int irq_choose_cpu(unsigned int virt_irq) | |||
268 | 274 | ||
269 | static void sun4u_irq_enable(unsigned int virt_irq) | 275 | static void sun4u_irq_enable(unsigned int virt_irq) |
270 | { | 276 | { |
271 | irq_desc_t *desc = irq_desc + virt_irq; | 277 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); |
272 | struct irq_handler_data *data = desc->handler_data; | ||
273 | 278 | ||
274 | if (likely(data)) { | 279 | if (likely(data)) { |
275 | unsigned long cpuid, imap; | 280 | unsigned long cpuid, imap; |
@@ -286,8 +291,7 @@ static void sun4u_irq_enable(unsigned int virt_irq) | |||
286 | 291 | ||
287 | static void sun4u_irq_disable(unsigned int virt_irq) | 292 | static void sun4u_irq_disable(unsigned int virt_irq) |
288 | { | 293 | { |
289 | irq_desc_t *desc = irq_desc + virt_irq; | 294 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); |
290 | struct irq_handler_data *data = desc->handler_data; | ||
291 | 295 | ||
292 | if (likely(data)) { | 296 | if (likely(data)) { |
293 | unsigned long imap = data->imap; | 297 | unsigned long imap = data->imap; |
@@ -300,8 +304,7 @@ static void sun4u_irq_disable(unsigned int virt_irq) | |||
300 | 304 | ||
301 | static void sun4u_irq_end(unsigned int virt_irq) | 305 | static void sun4u_irq_end(unsigned int virt_irq) |
302 | { | 306 | { |
303 | irq_desc_t *desc = irq_desc + virt_irq; | 307 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); |
304 | struct irq_handler_data *data = desc->handler_data; | ||
305 | 308 | ||
306 | if (likely(data)) | 309 | if (likely(data)) |
307 | upa_writel(ICLR_IDLE, data->iclr); | 310 | upa_writel(ICLR_IDLE, data->iclr); |
@@ -344,6 +347,20 @@ static void sun4v_irq_disable(unsigned int virt_irq) | |||
344 | } | 347 | } |
345 | } | 348 | } |
346 | 349 | ||
350 | #ifdef CONFIG_PCI_MSI | ||
351 | static void sun4v_msi_enable(unsigned int virt_irq) | ||
352 | { | ||
353 | sun4v_irq_enable(virt_irq); | ||
354 | unmask_msi_irq(virt_irq); | ||
355 | } | ||
356 | |||
357 | static void sun4v_msi_disable(unsigned int virt_irq) | ||
358 | { | ||
359 | mask_msi_irq(virt_irq); | ||
360 | sun4v_irq_disable(virt_irq); | ||
361 | } | ||
362 | #endif | ||
363 | |||
347 | static void sun4v_irq_end(unsigned int virt_irq) | 364 | static void sun4v_irq_end(unsigned int virt_irq) |
348 | { | 365 | { |
349 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); | 366 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); |
@@ -362,8 +379,7 @@ static void sun4v_irq_end(unsigned int virt_irq) | |||
362 | static void run_pre_handler(unsigned int virt_irq) | 379 | static void run_pre_handler(unsigned int virt_irq) |
363 | { | 380 | { |
364 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); | 381 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); |
365 | irq_desc_t *desc = irq_desc + virt_irq; | 382 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); |
366 | struct irq_handler_data *data = desc->handler_data; | ||
367 | 383 | ||
368 | if (likely(data->pre_handler)) { | 384 | if (likely(data->pre_handler)) { |
369 | data->pre_handler(__irq_ino(__irq(bucket)), | 385 | data->pre_handler(__irq_ino(__irq(bucket)), |
@@ -402,30 +418,47 @@ static struct irq_chip sun4v_irq_ack = { | |||
402 | .end = sun4v_irq_end, | 418 | .end = sun4v_irq_end, |
403 | }; | 419 | }; |
404 | 420 | ||
421 | #ifdef CONFIG_PCI_MSI | ||
422 | static struct irq_chip sun4v_msi = { | ||
423 | .typename = "sun4v+msi", | ||
424 | .mask = mask_msi_irq, | ||
425 | .unmask = unmask_msi_irq, | ||
426 | .enable = sun4v_msi_enable, | ||
427 | .disable = sun4v_msi_disable, | ||
428 | .ack = run_pre_handler, | ||
429 | .end = sun4v_irq_end, | ||
430 | }; | ||
431 | #endif | ||
432 | |||
405 | void irq_install_pre_handler(int virt_irq, | 433 | void irq_install_pre_handler(int virt_irq, |
406 | void (*func)(unsigned int, void *, void *), | 434 | void (*func)(unsigned int, void *, void *), |
407 | void *arg1, void *arg2) | 435 | void *arg1, void *arg2) |
408 | { | 436 | { |
409 | irq_desc_t *desc = irq_desc + virt_irq; | 437 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); |
410 | struct irq_handler_data *data = desc->handler_data; | 438 | struct irq_chip *chip; |
411 | 439 | ||
412 | data->pre_handler = func; | 440 | data->pre_handler = func; |
413 | data->pre_handler_arg1 = arg1; | 441 | data->pre_handler_arg1 = arg1; |
414 | data->pre_handler_arg2 = arg2; | 442 | data->pre_handler_arg2 = arg2; |
415 | 443 | ||
416 | if (desc->chip == &sun4u_irq_ack || | 444 | chip = get_irq_chip(virt_irq); |
417 | desc->chip == &sun4v_irq_ack) | 445 | if (chip == &sun4u_irq_ack || |
446 | chip == &sun4v_irq_ack | ||
447 | #ifdef CONFIG_PCI_MSI | ||
448 | || chip == &sun4v_msi | ||
449 | #endif | ||
450 | ) | ||
418 | return; | 451 | return; |
419 | 452 | ||
420 | desc->chip = (desc->chip == &sun4u_irq ? | 453 | chip = (chip == &sun4u_irq ? |
421 | &sun4u_irq_ack : &sun4v_irq_ack); | 454 | &sun4u_irq_ack : &sun4v_irq_ack); |
455 | set_irq_chip(virt_irq, chip); | ||
422 | } | 456 | } |
423 | 457 | ||
424 | unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) | 458 | unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) |
425 | { | 459 | { |
426 | struct ino_bucket *bucket; | 460 | struct ino_bucket *bucket; |
427 | struct irq_handler_data *data; | 461 | struct irq_handler_data *data; |
428 | irq_desc_t *desc; | ||
429 | int ino; | 462 | int ino; |
430 | 463 | ||
431 | BUG_ON(tlb_type == hypervisor); | 464 | BUG_ON(tlb_type == hypervisor); |
@@ -434,11 +467,11 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) | |||
434 | bucket = &ivector_table[ino]; | 467 | bucket = &ivector_table[ino]; |
435 | if (!bucket->virt_irq) { | 468 | if (!bucket->virt_irq) { |
436 | bucket->virt_irq = virt_irq_alloc(__irq(bucket)); | 469 | bucket->virt_irq = virt_irq_alloc(__irq(bucket)); |
437 | irq_desc[bucket->virt_irq].chip = &sun4u_irq; | 470 | set_irq_chip(bucket->virt_irq, &sun4u_irq); |
438 | } | 471 | } |
439 | 472 | ||
440 | desc = irq_desc + bucket->virt_irq; | 473 | data = get_irq_chip_data(bucket->virt_irq); |
441 | if (unlikely(desc->handler_data)) | 474 | if (unlikely(data)) |
442 | goto out; | 475 | goto out; |
443 | 476 | ||
444 | data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); | 477 | data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); |
@@ -446,7 +479,7 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) | |||
446 | prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n"); | 479 | prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n"); |
447 | prom_halt(); | 480 | prom_halt(); |
448 | } | 481 | } |
449 | desc->handler_data = data; | 482 | set_irq_chip_data(bucket->virt_irq, data); |
450 | 483 | ||
451 | data->imap = imap; | 484 | data->imap = imap; |
452 | data->iclr = iclr; | 485 | data->iclr = iclr; |
@@ -460,7 +493,6 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino) | |||
460 | struct ino_bucket *bucket; | 493 | struct ino_bucket *bucket; |
461 | struct irq_handler_data *data; | 494 | struct irq_handler_data *data; |
462 | unsigned long sysino; | 495 | unsigned long sysino; |
463 | irq_desc_t *desc; | ||
464 | 496 | ||
465 | BUG_ON(tlb_type != hypervisor); | 497 | BUG_ON(tlb_type != hypervisor); |
466 | 498 | ||
@@ -468,11 +500,11 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino) | |||
468 | bucket = &ivector_table[sysino]; | 500 | bucket = &ivector_table[sysino]; |
469 | if (!bucket->virt_irq) { | 501 | if (!bucket->virt_irq) { |
470 | bucket->virt_irq = virt_irq_alloc(__irq(bucket)); | 502 | bucket->virt_irq = virt_irq_alloc(__irq(bucket)); |
471 | irq_desc[bucket->virt_irq].chip = &sun4v_irq; | 503 | set_irq_chip(bucket->virt_irq, &sun4v_irq); |
472 | } | 504 | } |
473 | 505 | ||
474 | desc = irq_desc + bucket->virt_irq; | 506 | data = get_irq_chip_data(bucket->virt_irq); |
475 | if (unlikely(desc->handler_data)) | 507 | if (unlikely(data)) |
476 | goto out; | 508 | goto out; |
477 | 509 | ||
478 | data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); | 510 | data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); |
@@ -480,7 +512,7 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino) | |||
480 | prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n"); | 512 | prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n"); |
481 | prom_halt(); | 513 | prom_halt(); |
482 | } | 514 | } |
483 | desc->handler_data = data; | 515 | set_irq_chip_data(bucket->virt_irq, data); |
484 | 516 | ||
485 | /* Catch accidental accesses to these things. IMAP/ICLR handling | 517 | /* Catch accidental accesses to these things. IMAP/ICLR handling |
486 | * is done by hypervisor calls on sun4v platforms, not by direct | 518 | * is done by hypervisor calls on sun4v platforms, not by direct |
@@ -493,6 +525,56 @@ out: | |||
493 | return bucket->virt_irq; | 525 | return bucket->virt_irq; |
494 | } | 526 | } |
495 | 527 | ||
528 | #ifdef CONFIG_PCI_MSI | ||
529 | unsigned int sun4v_build_msi(u32 devhandle, unsigned int *virt_irq_p, | ||
530 | unsigned int msi_start, unsigned int msi_end) | ||
531 | { | ||
532 | struct ino_bucket *bucket; | ||
533 | struct irq_handler_data *data; | ||
534 | unsigned long sysino; | ||
535 | unsigned int devino; | ||
536 | |||
537 | BUG_ON(tlb_type != hypervisor); | ||
538 | |||
539 | /* Find a free devino in the given range. */ | ||
540 | for (devino = msi_start; devino < msi_end; devino++) { | ||
541 | sysino = sun4v_devino_to_sysino(devhandle, devino); | ||
542 | bucket = &ivector_table[sysino]; | ||
543 | if (!bucket->virt_irq) | ||
544 | break; | ||
545 | } | ||
546 | if (devino >= msi_end) | ||
547 | return 0; | ||
548 | |||
549 | sysino = sun4v_devino_to_sysino(devhandle, devino); | ||
550 | bucket = &ivector_table[sysino]; | ||
551 | bucket->virt_irq = virt_irq_alloc(__irq(bucket)); | ||
552 | *virt_irq_p = bucket->virt_irq; | ||
553 | set_irq_chip(bucket->virt_irq, &sun4v_msi); | ||
554 | |||
555 | data = get_irq_chip_data(bucket->virt_irq); | ||
556 | if (unlikely(data)) | ||
557 | return devino; | ||
558 | |||
559 | data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); | ||
560 | if (unlikely(!data)) { | ||
561 | prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n"); | ||
562 | prom_halt(); | ||
563 | } | ||
564 | set_irq_chip_data(bucket->virt_irq, data); | ||
565 | |||
566 | data->imap = ~0UL; | ||
567 | data->iclr = ~0UL; | ||
568 | |||
569 | return devino; | ||
570 | } | ||
571 | |||
572 | void sun4v_destroy_msi(unsigned int virt_irq) | ||
573 | { | ||
574 | virt_irq_free(virt_irq); | ||
575 | } | ||
576 | #endif | ||
577 | |||
496 | void ack_bad_irq(unsigned int virt_irq) | 578 | void ack_bad_irq(unsigned int virt_irq) |
497 | { | 579 | { |
498 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); | 580 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); |
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c index dfc41cd4bb5d..6b740eb6fe7e 100644 --- a/arch/sparc64/kernel/pci.c +++ b/arch/sparc64/kernel/pci.c | |||
@@ -13,6 +13,8 @@ | |||
13 | #include <linux/capability.h> | 13 | #include <linux/capability.h> |
14 | #include <linux/errno.h> | 14 | #include <linux/errno.h> |
15 | #include <linux/smp_lock.h> | 15 | #include <linux/smp_lock.h> |
16 | #include <linux/msi.h> | ||
17 | #include <linux/irq.h> | ||
16 | #include <linux/init.h> | 18 | #include <linux/init.h> |
17 | 19 | ||
18 | #include <asm/uaccess.h> | 20 | #include <asm/uaccess.h> |
@@ -646,4 +648,37 @@ int pci_domain_nr(struct pci_bus *pbus) | |||
646 | } | 648 | } |
647 | EXPORT_SYMBOL(pci_domain_nr); | 649 | EXPORT_SYMBOL(pci_domain_nr); |
648 | 650 | ||
651 | #ifdef CONFIG_PCI_MSI | ||
652 | int arch_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc) | ||
653 | { | ||
654 | struct pcidev_cookie *pcp = pdev->sysdata; | ||
655 | struct pci_pbm_info *pbm = pcp->pbm; | ||
656 | struct pci_controller_info *p = pbm->parent; | ||
657 | int virt_irq, err; | ||
658 | |||
659 | if (!pbm->msi_num || !p->setup_msi_irq) | ||
660 | return -EINVAL; | ||
661 | |||
662 | err = p->setup_msi_irq(&virt_irq, pdev, desc); | ||
663 | if (err < 0) | ||
664 | return err; | ||
665 | |||
666 | return virt_irq; | ||
667 | } | ||
668 | |||
669 | void arch_teardown_msi_irq(unsigned int virt_irq) | ||
670 | { | ||
671 | struct msi_desc *entry = get_irq_data(virt_irq); | ||
672 | struct pci_dev *pdev = entry->dev; | ||
673 | struct pcidev_cookie *pcp = pdev->sysdata; | ||
674 | struct pci_pbm_info *pbm = pcp->pbm; | ||
675 | struct pci_controller_info *p = pbm->parent; | ||
676 | |||
677 | if (!pbm->msi_num || !p->setup_msi_irq) | ||
678 | return; | ||
679 | |||
680 | return p->teardown_msi_irq(virt_irq, pdev); | ||
681 | } | ||
682 | #endif /* !(CONFIG_PCI_MSI) */ | ||
683 | |||
649 | #endif /* !(CONFIG_PCI) */ | 684 | #endif /* !(CONFIG_PCI) */ |
diff --git a/arch/sparc64/kernel/pci_common.c b/arch/sparc64/kernel/pci_common.c index 827ae30aa497..5a92cb90ebe0 100644 --- a/arch/sparc64/kernel/pci_common.c +++ b/arch/sparc64/kernel/pci_common.c | |||
@@ -7,6 +7,8 @@ | |||
7 | #include <linux/string.h> | 7 | #include <linux/string.h> |
8 | #include <linux/slab.h> | 8 | #include <linux/slab.h> |
9 | #include <linux/init.h> | 9 | #include <linux/init.h> |
10 | #include <linux/pci.h> | ||
11 | #include <linux/device.h> | ||
10 | 12 | ||
11 | #include <asm/pbm.h> | 13 | #include <asm/pbm.h> |
12 | #include <asm/prom.h> | 14 | #include <asm/prom.h> |
@@ -129,6 +131,20 @@ static void __init fixup_obp_assignments(struct pci_dev *pdev, | |||
129 | } | 131 | } |
130 | } | 132 | } |
131 | 133 | ||
134 | static ssize_t | ||
135 | show_pciobppath_attr(struct device * dev, struct device_attribute * attr, char * buf) | ||
136 | { | ||
137 | struct pci_dev *pdev; | ||
138 | struct pcidev_cookie *sysdata; | ||
139 | |||
140 | pdev = to_pci_dev(dev); | ||
141 | sysdata = pdev->sysdata; | ||
142 | |||
143 | return snprintf (buf, PAGE_SIZE, "%s\n", sysdata->prom_node->full_name); | ||
144 | } | ||
145 | |||
146 | static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH, show_pciobppath_attr, NULL); | ||
147 | |||
132 | /* Fill in the PCI device cookie sysdata for the given | 148 | /* Fill in the PCI device cookie sysdata for the given |
133 | * PCI device. This cookie is the means by which one | 149 | * PCI device. This cookie is the means by which one |
134 | * can get to OBP and PCI controller specific information | 150 | * can get to OBP and PCI controller specific information |
@@ -142,7 +158,7 @@ static void __init pdev_cookie_fillin(struct pci_pbm_info *pbm, | |||
142 | struct pcidev_cookie *pcp; | 158 | struct pcidev_cookie *pcp; |
143 | struct device_node *dp; | 159 | struct device_node *dp; |
144 | struct property *prop; | 160 | struct property *prop; |
145 | int nregs, len; | 161 | int nregs, len, err; |
146 | 162 | ||
147 | dp = find_device_prom_node(pbm, pdev, bus_node, | 163 | dp = find_device_prom_node(pbm, pdev, bus_node, |
148 | &pregs, &nregs); | 164 | &pregs, &nregs); |
@@ -215,6 +231,13 @@ static void __init pdev_cookie_fillin(struct pci_pbm_info *pbm, | |||
215 | fixup_obp_assignments(pdev, pcp); | 231 | fixup_obp_assignments(pdev, pcp); |
216 | 232 | ||
217 | pdev->sysdata = pcp; | 233 | pdev->sysdata = pcp; |
234 | |||
235 | /* we don't really care if we can create this file or not, | ||
236 | * but we need to assign the result of the call or the world will fall | ||
237 | * under alien invasion and everybody will be frozen on a spaceship | ||
238 | * ready to be eaten on alpha centauri by some green and jelly humanoid. | ||
239 | */ | ||
240 | err = sysfs_create_file(&pdev->dev.kobj, &dev_attr_obppath.attr); | ||
218 | } | 241 | } |
219 | 242 | ||
220 | void __init pci_fill_in_pbm_cookies(struct pci_bus *pbus, | 243 | void __init pci_fill_in_pbm_cookies(struct pci_bus *pbus, |
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c index 6b04794b7a97..ec22cd61ec8c 100644 --- a/arch/sparc64/kernel/pci_sun4v.c +++ b/arch/sparc64/kernel/pci_sun4v.c | |||
@@ -10,6 +10,8 @@ | |||
10 | #include <linux/slab.h> | 10 | #include <linux/slab.h> |
11 | #include <linux/interrupt.h> | 11 | #include <linux/interrupt.h> |
12 | #include <linux/percpu.h> | 12 | #include <linux/percpu.h> |
13 | #include <linux/irq.h> | ||
14 | #include <linux/msi.h> | ||
13 | 15 | ||
14 | #include <asm/pbm.h> | 16 | #include <asm/pbm.h> |
15 | #include <asm/iommu.h> | 17 | #include <asm/iommu.h> |
@@ -1074,6 +1076,443 @@ static void pci_sun4v_get_bus_range(struct pci_pbm_info *pbm) | |||
1074 | 1076 | ||
1075 | } | 1077 | } |
1076 | 1078 | ||
1079 | #ifdef CONFIG_PCI_MSI | ||
1080 | struct pci_sun4v_msiq_entry { | ||
1081 | u64 version_type; | ||
1082 | #define MSIQ_VERSION_MASK 0xffffffff00000000UL | ||
1083 | #define MSIQ_VERSION_SHIFT 32 | ||
1084 | #define MSIQ_TYPE_MASK 0x00000000000000ffUL | ||
1085 | #define MSIQ_TYPE_SHIFT 0 | ||
1086 | #define MSIQ_TYPE_NONE 0x00 | ||
1087 | #define MSIQ_TYPE_MSG 0x01 | ||
1088 | #define MSIQ_TYPE_MSI32 0x02 | ||
1089 | #define MSIQ_TYPE_MSI64 0x03 | ||
1090 | #define MSIQ_TYPE_INTX 0x08 | ||
1091 | #define MSIQ_TYPE_NONE2 0xff | ||
1092 | |||
1093 | u64 intx_sysino; | ||
1094 | u64 reserved1; | ||
1095 | u64 stick; | ||
1096 | u64 req_id; /* bus/device/func */ | ||
1097 | #define MSIQ_REQID_BUS_MASK 0xff00UL | ||
1098 | #define MSIQ_REQID_BUS_SHIFT 8 | ||
1099 | #define MSIQ_REQID_DEVICE_MASK 0x00f8UL | ||
1100 | #define MSIQ_REQID_DEVICE_SHIFT 3 | ||
1101 | #define MSIQ_REQID_FUNC_MASK 0x0007UL | ||
1102 | #define MSIQ_REQID_FUNC_SHIFT 0 | ||
1103 | |||
1104 | u64 msi_address; | ||
1105 | |||
1106 | /* The format of this value is message type dependant. | ||
1107 | * For MSI bits 15:0 are the data from the MSI packet. | ||
1108 | * For MSI-X bits 31:0 are the data from the MSI packet. | ||
1109 | * For MSG, the message code and message routing code where: | ||
1110 | * bits 39:32 is the bus/device/fn of the msg target-id | ||
1111 | * bits 18:16 is the message routing code | ||
1112 | * bits 7:0 is the message code | ||
1113 | * For INTx the low order 2-bits are: | ||
1114 | * 00 - INTA | ||
1115 | * 01 - INTB | ||
1116 | * 10 - INTC | ||
1117 | * 11 - INTD | ||
1118 | */ | ||
1119 | u64 msi_data; | ||
1120 | |||
1121 | u64 reserved2; | ||
1122 | }; | ||
1123 | |||
1124 | /* For now this just runs as a pre-handler for the real interrupt handler. | ||
1125 | * So we just walk through the queue and ACK all the entries, update the | ||
1126 | * head pointer, and return. | ||
1127 | * | ||
1128 | * In the longer term it would be nice to do something more integrated | ||
1129 | * wherein we can pass in some of this MSI info to the drivers. This | ||
1130 | * would be most useful for PCIe fabric error messages, although we could | ||
1131 | * invoke those directly from the loop here in order to pass the info around. | ||
1132 | */ | ||
1133 | static void pci_sun4v_msi_prehandler(unsigned int ino, void *data1, void *data2) | ||
1134 | { | ||
1135 | struct pci_pbm_info *pbm = data1; | ||
1136 | struct pci_sun4v_msiq_entry *base, *ep; | ||
1137 | unsigned long msiqid, orig_head, head, type, err; | ||
1138 | |||
1139 | msiqid = (unsigned long) data2; | ||
1140 | |||
1141 | head = 0xdeadbeef; | ||
1142 | err = pci_sun4v_msiq_gethead(pbm->devhandle, msiqid, &head); | ||
1143 | if (unlikely(err)) | ||
1144 | goto hv_error_get; | ||
1145 | |||
1146 | if (unlikely(head >= (pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry)))) | ||
1147 | goto bad_offset; | ||
1148 | |||
1149 | head /= sizeof(struct pci_sun4v_msiq_entry); | ||
1150 | orig_head = head; | ||
1151 | base = (pbm->msi_queues + ((msiqid - pbm->msiq_first) * | ||
1152 | (pbm->msiq_ent_count * | ||
1153 | sizeof(struct pci_sun4v_msiq_entry)))); | ||
1154 | ep = &base[head]; | ||
1155 | while ((ep->version_type & MSIQ_TYPE_MASK) != 0) { | ||
1156 | type = (ep->version_type & MSIQ_TYPE_MASK) >> MSIQ_TYPE_SHIFT; | ||
1157 | if (unlikely(type != MSIQ_TYPE_MSI32 && | ||
1158 | type != MSIQ_TYPE_MSI64)) | ||
1159 | goto bad_type; | ||
1160 | |||
1161 | pci_sun4v_msi_setstate(pbm->devhandle, | ||
1162 | ep->msi_data /* msi_num */, | ||
1163 | HV_MSISTATE_IDLE); | ||
1164 | |||
1165 | /* Clear the entry. */ | ||
1166 | ep->version_type &= ~MSIQ_TYPE_MASK; | ||
1167 | |||
1168 | /* Go to next entry in ring. */ | ||
1169 | head++; | ||
1170 | if (head >= pbm->msiq_ent_count) | ||
1171 | head = 0; | ||
1172 | ep = &base[head]; | ||
1173 | } | ||
1174 | |||
1175 | if (likely(head != orig_head)) { | ||
1176 | /* ACK entries by updating head pointer. */ | ||
1177 | head *= sizeof(struct pci_sun4v_msiq_entry); | ||
1178 | err = pci_sun4v_msiq_sethead(pbm->devhandle, msiqid, head); | ||
1179 | if (unlikely(err)) | ||
1180 | goto hv_error_set; | ||
1181 | } | ||
1182 | return; | ||
1183 | |||
1184 | hv_error_set: | ||
1185 | printk(KERN_EMERG "MSI: Hypervisor set head gives error %lu\n", err); | ||
1186 | goto hv_error_cont; | ||
1187 | |||
1188 | hv_error_get: | ||
1189 | printk(KERN_EMERG "MSI: Hypervisor get head gives error %lu\n", err); | ||
1190 | |||
1191 | hv_error_cont: | ||
1192 | printk(KERN_EMERG "MSI: devhandle[%x] msiqid[%lx] head[%lu]\n", | ||
1193 | pbm->devhandle, msiqid, head); | ||
1194 | return; | ||
1195 | |||
1196 | bad_offset: | ||
1197 | printk(KERN_EMERG "MSI: Hypervisor gives bad offset %lx max(%lx)\n", | ||
1198 | head, pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry)); | ||
1199 | return; | ||
1200 | |||
1201 | bad_type: | ||
1202 | printk(KERN_EMERG "MSI: Entry has bad type %lx\n", type); | ||
1203 | return; | ||
1204 | } | ||
1205 | |||
1206 | static int msi_bitmap_alloc(struct pci_pbm_info *pbm) | ||
1207 | { | ||
1208 | unsigned long size, bits_per_ulong; | ||
1209 | |||
1210 | bits_per_ulong = sizeof(unsigned long) * 8; | ||
1211 | size = (pbm->msi_num + (bits_per_ulong - 1)) & ~(bits_per_ulong - 1); | ||
1212 | size /= 8; | ||
1213 | BUG_ON(size % sizeof(unsigned long)); | ||
1214 | |||
1215 | pbm->msi_bitmap = kzalloc(size, GFP_KERNEL); | ||
1216 | if (!pbm->msi_bitmap) | ||
1217 | return -ENOMEM; | ||
1218 | |||
1219 | return 0; | ||
1220 | } | ||
1221 | |||
1222 | static void msi_bitmap_free(struct pci_pbm_info *pbm) | ||
1223 | { | ||
1224 | kfree(pbm->msi_bitmap); | ||
1225 | pbm->msi_bitmap = NULL; | ||
1226 | } | ||
1227 | |||
1228 | static int msi_queue_alloc(struct pci_pbm_info *pbm) | ||
1229 | { | ||
1230 | unsigned long q_size, alloc_size, pages, order; | ||
1231 | int i; | ||
1232 | |||
1233 | q_size = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); | ||
1234 | alloc_size = (pbm->msiq_num * q_size); | ||
1235 | order = get_order(alloc_size); | ||
1236 | pages = __get_free_pages(GFP_KERNEL | __GFP_COMP, order); | ||
1237 | if (pages == 0UL) { | ||
1238 | printk(KERN_ERR "MSI: Cannot allocate MSI queues (o=%lu).\n", | ||
1239 | order); | ||
1240 | return -ENOMEM; | ||
1241 | } | ||
1242 | memset((char *)pages, 0, PAGE_SIZE << order); | ||
1243 | pbm->msi_queues = (void *) pages; | ||
1244 | |||
1245 | for (i = 0; i < pbm->msiq_num; i++) { | ||
1246 | unsigned long err, base = __pa(pages + (i * q_size)); | ||
1247 | unsigned long ret1, ret2; | ||
1248 | |||
1249 | err = pci_sun4v_msiq_conf(pbm->devhandle, | ||
1250 | pbm->msiq_first + i, | ||
1251 | base, pbm->msiq_ent_count); | ||
1252 | if (err) { | ||
1253 | printk(KERN_ERR "MSI: msiq register fails (err=%lu)\n", | ||
1254 | err); | ||
1255 | goto h_error; | ||
1256 | } | ||
1257 | |||
1258 | err = pci_sun4v_msiq_info(pbm->devhandle, | ||
1259 | pbm->msiq_first + i, | ||
1260 | &ret1, &ret2); | ||
1261 | if (err) { | ||
1262 | printk(KERN_ERR "MSI: Cannot read msiq (err=%lu)\n", | ||
1263 | err); | ||
1264 | goto h_error; | ||
1265 | } | ||
1266 | if (ret1 != base || ret2 != pbm->msiq_ent_count) { | ||
1267 | printk(KERN_ERR "MSI: Bogus qconf " | ||
1268 | "expected[%lx:%x] got[%lx:%lx]\n", | ||
1269 | base, pbm->msiq_ent_count, | ||
1270 | ret1, ret2); | ||
1271 | goto h_error; | ||
1272 | } | ||
1273 | } | ||
1274 | |||
1275 | return 0; | ||
1276 | |||
1277 | h_error: | ||
1278 | free_pages(pages, order); | ||
1279 | return -EINVAL; | ||
1280 | } | ||
1281 | |||
1282 | static void pci_sun4v_msi_init(struct pci_pbm_info *pbm) | ||
1283 | { | ||
1284 | u32 *val; | ||
1285 | int len; | ||
1286 | |||
1287 | val = of_get_property(pbm->prom_node, "#msi-eqs", &len); | ||
1288 | if (!val || len != 4) | ||
1289 | goto no_msi; | ||
1290 | pbm->msiq_num = *val; | ||
1291 | if (pbm->msiq_num) { | ||
1292 | struct msiq_prop { | ||
1293 | u32 first_msiq; | ||
1294 | u32 num_msiq; | ||
1295 | u32 first_devino; | ||
1296 | } *mqp; | ||
1297 | struct msi_range_prop { | ||
1298 | u32 first_msi; | ||
1299 | u32 num_msi; | ||
1300 | } *mrng; | ||
1301 | struct addr_range_prop { | ||
1302 | u32 msi32_high; | ||
1303 | u32 msi32_low; | ||
1304 | u32 msi32_len; | ||
1305 | u32 msi64_high; | ||
1306 | u32 msi64_low; | ||
1307 | u32 msi64_len; | ||
1308 | } *arng; | ||
1309 | |||
1310 | val = of_get_property(pbm->prom_node, "msi-eq-size", &len); | ||
1311 | if (!val || len != 4) | ||
1312 | goto no_msi; | ||
1313 | |||
1314 | pbm->msiq_ent_count = *val; | ||
1315 | |||
1316 | mqp = of_get_property(pbm->prom_node, | ||
1317 | "msi-eq-to-devino", &len); | ||
1318 | if (!mqp || len != sizeof(struct msiq_prop)) | ||
1319 | goto no_msi; | ||
1320 | |||
1321 | pbm->msiq_first = mqp->first_msiq; | ||
1322 | pbm->msiq_first_devino = mqp->first_devino; | ||
1323 | |||
1324 | val = of_get_property(pbm->prom_node, "#msi", &len); | ||
1325 | if (!val || len != 4) | ||
1326 | goto no_msi; | ||
1327 | pbm->msi_num = *val; | ||
1328 | |||
1329 | mrng = of_get_property(pbm->prom_node, "msi-ranges", &len); | ||
1330 | if (!mrng || len != sizeof(struct msi_range_prop)) | ||
1331 | goto no_msi; | ||
1332 | pbm->msi_first = mrng->first_msi; | ||
1333 | |||
1334 | val = of_get_property(pbm->prom_node, "msi-data-mask", &len); | ||
1335 | if (!val || len != 4) | ||
1336 | goto no_msi; | ||
1337 | pbm->msi_data_mask = *val; | ||
1338 | |||
1339 | val = of_get_property(pbm->prom_node, "msix-data-width", &len); | ||
1340 | if (!val || len != 4) | ||
1341 | goto no_msi; | ||
1342 | pbm->msix_data_width = *val; | ||
1343 | |||
1344 | arng = of_get_property(pbm->prom_node, "msi-address-ranges", | ||
1345 | &len); | ||
1346 | if (!arng || len != sizeof(struct addr_range_prop)) | ||
1347 | goto no_msi; | ||
1348 | pbm->msi32_start = ((u64)arng->msi32_high << 32) | | ||
1349 | (u64) arng->msi32_low; | ||
1350 | pbm->msi64_start = ((u64)arng->msi64_high << 32) | | ||
1351 | (u64) arng->msi64_low; | ||
1352 | pbm->msi32_len = arng->msi32_len; | ||
1353 | pbm->msi64_len = arng->msi64_len; | ||
1354 | |||
1355 | if (msi_bitmap_alloc(pbm)) | ||
1356 | goto no_msi; | ||
1357 | |||
1358 | if (msi_queue_alloc(pbm)) { | ||
1359 | msi_bitmap_free(pbm); | ||
1360 | goto no_msi; | ||
1361 | } | ||
1362 | |||
1363 | printk(KERN_INFO "%s: MSI Queue first[%u] num[%u] count[%u] " | ||
1364 | "devino[0x%x]\n", | ||
1365 | pbm->name, | ||
1366 | pbm->msiq_first, pbm->msiq_num, | ||
1367 | pbm->msiq_ent_count, | ||
1368 | pbm->msiq_first_devino); | ||
1369 | printk(KERN_INFO "%s: MSI first[%u] num[%u] mask[0x%x] " | ||
1370 | "width[%u]\n", | ||
1371 | pbm->name, | ||
1372 | pbm->msi_first, pbm->msi_num, pbm->msi_data_mask, | ||
1373 | pbm->msix_data_width); | ||
1374 | printk(KERN_INFO "%s: MSI addr32[0x%lx:0x%x] " | ||
1375 | "addr64[0x%lx:0x%x]\n", | ||
1376 | pbm->name, | ||
1377 | pbm->msi32_start, pbm->msi32_len, | ||
1378 | pbm->msi64_start, pbm->msi64_len); | ||
1379 | printk(KERN_INFO "%s: MSI queues at RA [%p]\n", | ||
1380 | pbm->name, | ||
1381 | pbm->msi_queues); | ||
1382 | } | ||
1383 | |||
1384 | return; | ||
1385 | |||
1386 | no_msi: | ||
1387 | pbm->msiq_num = 0; | ||
1388 | printk(KERN_INFO "%s: No MSI support.\n", pbm->name); | ||
1389 | } | ||
1390 | |||
1391 | static int alloc_msi(struct pci_pbm_info *pbm) | ||
1392 | { | ||
1393 | int i; | ||
1394 | |||
1395 | for (i = 0; i < pbm->msi_num; i++) { | ||
1396 | if (!test_and_set_bit(i, pbm->msi_bitmap)) | ||
1397 | return i + pbm->msi_first; | ||
1398 | } | ||
1399 | |||
1400 | return -ENOENT; | ||
1401 | } | ||
1402 | |||
1403 | static void free_msi(struct pci_pbm_info *pbm, int msi_num) | ||
1404 | { | ||
1405 | msi_num -= pbm->msi_first; | ||
1406 | clear_bit(msi_num, pbm->msi_bitmap); | ||
1407 | } | ||
1408 | |||
1409 | static int pci_sun4v_setup_msi_irq(unsigned int *virt_irq_p, | ||
1410 | struct pci_dev *pdev, | ||
1411 | struct msi_desc *entry) | ||
1412 | { | ||
1413 | struct pcidev_cookie *pcp = pdev->sysdata; | ||
1414 | struct pci_pbm_info *pbm = pcp->pbm; | ||
1415 | unsigned long devino, msiqid; | ||
1416 | struct msi_msg msg; | ||
1417 | int msi_num, err; | ||
1418 | |||
1419 | *virt_irq_p = 0; | ||
1420 | |||
1421 | msi_num = alloc_msi(pbm); | ||
1422 | if (msi_num < 0) | ||
1423 | return msi_num; | ||
1424 | |||
1425 | devino = sun4v_build_msi(pbm->devhandle, virt_irq_p, | ||
1426 | pbm->msiq_first_devino, | ||
1427 | (pbm->msiq_first_devino + | ||
1428 | pbm->msiq_num)); | ||
1429 | err = -ENOMEM; | ||
1430 | if (!devino) | ||
1431 | goto out_err; | ||
1432 | |||
1433 | set_irq_msi(*virt_irq_p, entry); | ||
1434 | |||
1435 | msiqid = ((devino - pbm->msiq_first_devino) + | ||
1436 | pbm->msiq_first); | ||
1437 | |||
1438 | err = -EINVAL; | ||
1439 | if (pci_sun4v_msiq_setstate(pbm->devhandle, msiqid, HV_MSIQSTATE_IDLE)) | ||
1440 | if (err) | ||
1441 | goto out_err; | ||
1442 | |||
1443 | if (pci_sun4v_msiq_setvalid(pbm->devhandle, msiqid, HV_MSIQ_VALID)) | ||
1444 | goto out_err; | ||
1445 | |||
1446 | if (pci_sun4v_msi_setmsiq(pbm->devhandle, | ||
1447 | msi_num, msiqid, | ||
1448 | (entry->msi_attrib.is_64 ? | ||
1449 | HV_MSITYPE_MSI64 : HV_MSITYPE_MSI32))) | ||
1450 | goto out_err; | ||
1451 | |||
1452 | if (pci_sun4v_msi_setstate(pbm->devhandle, msi_num, HV_MSISTATE_IDLE)) | ||
1453 | goto out_err; | ||
1454 | |||
1455 | if (pci_sun4v_msi_setvalid(pbm->devhandle, msi_num, HV_MSIVALID_VALID)) | ||
1456 | goto out_err; | ||
1457 | |||
1458 | pcp->msi_num = msi_num; | ||
1459 | |||
1460 | if (entry->msi_attrib.is_64) { | ||
1461 | msg.address_hi = pbm->msi64_start >> 32; | ||
1462 | msg.address_lo = pbm->msi64_start & 0xffffffff; | ||
1463 | } else { | ||
1464 | msg.address_hi = 0; | ||
1465 | msg.address_lo = pbm->msi32_start; | ||
1466 | } | ||
1467 | msg.data = msi_num; | ||
1468 | write_msi_msg(*virt_irq_p, &msg); | ||
1469 | |||
1470 | irq_install_pre_handler(*virt_irq_p, | ||
1471 | pci_sun4v_msi_prehandler, | ||
1472 | pbm, (void *) msiqid); | ||
1473 | |||
1474 | return 0; | ||
1475 | |||
1476 | out_err: | ||
1477 | free_msi(pbm, msi_num); | ||
1478 | sun4v_destroy_msi(*virt_irq_p); | ||
1479 | *virt_irq_p = 0; | ||
1480 | return err; | ||
1481 | |||
1482 | } | ||
1483 | |||
1484 | static void pci_sun4v_teardown_msi_irq(unsigned int virt_irq, | ||
1485 | struct pci_dev *pdev) | ||
1486 | { | ||
1487 | struct pcidev_cookie *pcp = pdev->sysdata; | ||
1488 | struct pci_pbm_info *pbm = pcp->pbm; | ||
1489 | unsigned long msiqid, err; | ||
1490 | unsigned int msi_num; | ||
1491 | |||
1492 | msi_num = pcp->msi_num; | ||
1493 | err = pci_sun4v_msi_getmsiq(pbm->devhandle, msi_num, &msiqid); | ||
1494 | if (err) { | ||
1495 | printk(KERN_ERR "%s: getmsiq gives error %lu\n", | ||
1496 | pbm->name, err); | ||
1497 | return; | ||
1498 | } | ||
1499 | |||
1500 | pci_sun4v_msi_setvalid(pbm->devhandle, msi_num, HV_MSIVALID_INVALID); | ||
1501 | pci_sun4v_msiq_setvalid(pbm->devhandle, msiqid, HV_MSIQ_INVALID); | ||
1502 | |||
1503 | free_msi(pbm, msi_num); | ||
1504 | |||
1505 | /* The sun4v_destroy_msi() will liberate the devino and thus the MSIQ | ||
1506 | * allocation. | ||
1507 | */ | ||
1508 | sun4v_destroy_msi(virt_irq); | ||
1509 | } | ||
1510 | #else /* CONFIG_PCI_MSI */ | ||
1511 | static void pci_sun4v_msi_init(struct pci_pbm_info *pbm) | ||
1512 | { | ||
1513 | } | ||
1514 | #endif /* !(CONFIG_PCI_MSI) */ | ||
1515 | |||
1077 | static void pci_sun4v_pbm_init(struct pci_controller_info *p, struct device_node *dp, u32 devhandle) | 1516 | static void pci_sun4v_pbm_init(struct pci_controller_info *p, struct device_node *dp, u32 devhandle) |
1078 | { | 1517 | { |
1079 | struct pci_pbm_info *pbm; | 1518 | struct pci_pbm_info *pbm; |
@@ -1119,6 +1558,7 @@ static void pci_sun4v_pbm_init(struct pci_controller_info *p, struct device_node | |||
1119 | 1558 | ||
1120 | pci_sun4v_get_bus_range(pbm); | 1559 | pci_sun4v_get_bus_range(pbm); |
1121 | pci_sun4v_iommu_init(pbm); | 1560 | pci_sun4v_iommu_init(pbm); |
1561 | pci_sun4v_msi_init(pbm); | ||
1122 | 1562 | ||
1123 | pdev_htab_populate(pbm); | 1563 | pdev_htab_populate(pbm); |
1124 | } | 1564 | } |
@@ -1187,6 +1627,10 @@ void sun4v_pci_init(struct device_node *dp, char *model_name) | |||
1187 | p->scan_bus = pci_sun4v_scan_bus; | 1627 | p->scan_bus = pci_sun4v_scan_bus; |
1188 | p->base_address_update = pci_sun4v_base_address_update; | 1628 | p->base_address_update = pci_sun4v_base_address_update; |
1189 | p->resource_adjust = pci_sun4v_resource_adjust; | 1629 | p->resource_adjust = pci_sun4v_resource_adjust; |
1630 | #ifdef CONFIG_PCI_MSI | ||
1631 | p->setup_msi_irq = pci_sun4v_setup_msi_irq; | ||
1632 | p->teardown_msi_irq = pci_sun4v_teardown_msi_irq; | ||
1633 | #endif | ||
1190 | p->pci_ops = &pci_sun4v_ops; | 1634 | p->pci_ops = &pci_sun4v_ops; |
1191 | 1635 | ||
1192 | /* Like PSYCHO and SCHIZO we have a 2GB aligned area | 1636 | /* Like PSYCHO and SCHIZO we have a 2GB aligned area |
diff --git a/arch/sparc64/kernel/pci_sun4v.h b/arch/sparc64/kernel/pci_sun4v.h index 884d25f6158d..8e9fc3a5b4f5 100644 --- a/arch/sparc64/kernel/pci_sun4v.h +++ b/arch/sparc64/kernel/pci_sun4v.h | |||
@@ -28,4 +28,65 @@ extern int pci_sun4v_config_put(unsigned long devhandle, | |||
28 | unsigned long size, | 28 | unsigned long size, |
29 | unsigned long data); | 29 | unsigned long data); |
30 | 30 | ||
31 | extern unsigned long pci_sun4v_msiq_conf(unsigned long devhandle, | ||
32 | unsigned long msiqid, | ||
33 | unsigned long msiq_paddr, | ||
34 | unsigned long num_entries); | ||
35 | extern unsigned long pci_sun4v_msiq_info(unsigned long devhandle, | ||
36 | unsigned long msiqid, | ||
37 | unsigned long *msiq_paddr, | ||
38 | unsigned long *num_entries); | ||
39 | extern unsigned long pci_sun4v_msiq_getvalid(unsigned long devhandle, | ||
40 | unsigned long msiqid, | ||
41 | unsigned long *valid); | ||
42 | extern unsigned long pci_sun4v_msiq_setvalid(unsigned long devhandle, | ||
43 | unsigned long msiqid, | ||
44 | unsigned long valid); | ||
45 | extern unsigned long pci_sun4v_msiq_getstate(unsigned long devhandle, | ||
46 | unsigned long msiqid, | ||
47 | unsigned long *state); | ||
48 | extern unsigned long pci_sun4v_msiq_setstate(unsigned long devhandle, | ||
49 | unsigned long msiqid, | ||
50 | unsigned long state); | ||
51 | extern unsigned long pci_sun4v_msiq_gethead(unsigned long devhandle, | ||
52 | unsigned long msiqid, | ||
53 | unsigned long *head); | ||
54 | extern unsigned long pci_sun4v_msiq_sethead(unsigned long devhandle, | ||
55 | unsigned long msiqid, | ||
56 | unsigned long head); | ||
57 | extern unsigned long pci_sun4v_msiq_gettail(unsigned long devhandle, | ||
58 | unsigned long msiqid, | ||
59 | unsigned long *head); | ||
60 | extern unsigned long pci_sun4v_msi_getvalid(unsigned long devhandle, | ||
61 | unsigned long msinum, | ||
62 | unsigned long *valid); | ||
63 | extern unsigned long pci_sun4v_msi_setvalid(unsigned long devhandle, | ||
64 | unsigned long msinum, | ||
65 | unsigned long valid); | ||
66 | extern unsigned long pci_sun4v_msi_getmsiq(unsigned long devhandle, | ||
67 | unsigned long msinum, | ||
68 | unsigned long *msiq); | ||
69 | extern unsigned long pci_sun4v_msi_setmsiq(unsigned long devhandle, | ||
70 | unsigned long msinum, | ||
71 | unsigned long msiq, | ||
72 | unsigned long msitype); | ||
73 | extern unsigned long pci_sun4v_msi_getstate(unsigned long devhandle, | ||
74 | unsigned long msinum, | ||
75 | unsigned long *state); | ||
76 | extern unsigned long pci_sun4v_msi_setstate(unsigned long devhandle, | ||
77 | unsigned long msinum, | ||
78 | unsigned long state); | ||
79 | extern unsigned long pci_sun4v_msg_getmsiq(unsigned long devhandle, | ||
80 | unsigned long msinum, | ||
81 | unsigned long *msiq); | ||
82 | extern unsigned long pci_sun4v_msg_setmsiq(unsigned long devhandle, | ||
83 | unsigned long msinum, | ||
84 | unsigned long msiq); | ||
85 | extern unsigned long pci_sun4v_msg_getvalid(unsigned long devhandle, | ||
86 | unsigned long msinum, | ||
87 | unsigned long *valid); | ||
88 | extern unsigned long pci_sun4v_msg_setvalid(unsigned long devhandle, | ||
89 | unsigned long msinum, | ||
90 | unsigned long valid); | ||
91 | |||
31 | #endif /* !(_PCI_SUN4V_H) */ | 92 | #endif /* !(_PCI_SUN4V_H) */ |
diff --git a/arch/sparc64/kernel/pci_sun4v_asm.S b/arch/sparc64/kernel/pci_sun4v_asm.S index 6604fdbf746c..ecb81f389b06 100644 --- a/arch/sparc64/kernel/pci_sun4v_asm.S +++ b/arch/sparc64/kernel/pci_sun4v_asm.S | |||
@@ -93,3 +93,269 @@ pci_sun4v_config_put: | |||
93 | mov -1, %o1 | 93 | mov -1, %o1 |
94 | 1: retl | 94 | 1: retl |
95 | mov %o1, %o0 | 95 | mov %o1, %o0 |
96 | |||
97 | /* %o0: devhandle | ||
98 | * %o1: msiqid | ||
99 | * %o2: msiq phys address | ||
100 | * %o3: num entries | ||
101 | * | ||
102 | * returns %o0: status | ||
103 | * | ||
104 | * status will be zero if the operation completed | ||
105 | * successfully, else -1 if not | ||
106 | */ | ||
107 | .globl pci_sun4v_msiq_conf | ||
108 | pci_sun4v_msiq_conf: | ||
109 | mov HV_FAST_PCI_MSIQ_CONF, %o5 | ||
110 | ta HV_FAST_TRAP | ||
111 | retl | ||
112 | mov %o0, %o0 | ||
113 | |||
114 | /* %o0: devhandle | ||
115 | * %o1: msiqid | ||
116 | * %o2: &msiq_phys_addr | ||
117 | * %o3: &msiq_num_entries | ||
118 | * | ||
119 | * returns %o0: status | ||
120 | */ | ||
121 | .globl pci_sun4v_msiq_info | ||
122 | pci_sun4v_msiq_info: | ||
123 | mov %o2, %o4 | ||
124 | mov HV_FAST_PCI_MSIQ_INFO, %o5 | ||
125 | ta HV_FAST_TRAP | ||
126 | stx %o1, [%o4] | ||
127 | stx %o2, [%o3] | ||
128 | retl | ||
129 | mov %o0, %o0 | ||
130 | |||
131 | /* %o0: devhandle | ||
132 | * %o1: msiqid | ||
133 | * %o2: &valid | ||
134 | * | ||
135 | * returns %o0: status | ||
136 | */ | ||
137 | .globl pci_sun4v_msiq_getvalid | ||
138 | pci_sun4v_msiq_getvalid: | ||
139 | mov HV_FAST_PCI_MSIQ_GETVALID, %o5 | ||
140 | ta HV_FAST_TRAP | ||
141 | stx %o1, [%o2] | ||
142 | retl | ||
143 | mov %o0, %o0 | ||
144 | |||
145 | /* %o0: devhandle | ||
146 | * %o1: msiqid | ||
147 | * %o2: valid | ||
148 | * | ||
149 | * returns %o0: status | ||
150 | */ | ||
151 | .globl pci_sun4v_msiq_setvalid | ||
152 | pci_sun4v_msiq_setvalid: | ||
153 | mov HV_FAST_PCI_MSIQ_SETVALID, %o5 | ||
154 | ta HV_FAST_TRAP | ||
155 | retl | ||
156 | mov %o0, %o0 | ||
157 | |||
158 | /* %o0: devhandle | ||
159 | * %o1: msiqid | ||
160 | * %o2: &state | ||
161 | * | ||
162 | * returns %o0: status | ||
163 | */ | ||
164 | .globl pci_sun4v_msiq_getstate | ||
165 | pci_sun4v_msiq_getstate: | ||
166 | mov HV_FAST_PCI_MSIQ_GETSTATE, %o5 | ||
167 | ta HV_FAST_TRAP | ||
168 | stx %o1, [%o2] | ||
169 | retl | ||
170 | mov %o0, %o0 | ||
171 | |||
172 | /* %o0: devhandle | ||
173 | * %o1: msiqid | ||
174 | * %o2: state | ||
175 | * | ||
176 | * returns %o0: status | ||
177 | */ | ||
178 | .globl pci_sun4v_msiq_setstate | ||
179 | pci_sun4v_msiq_setstate: | ||
180 | mov HV_FAST_PCI_MSIQ_SETSTATE, %o5 | ||
181 | ta HV_FAST_TRAP | ||
182 | retl | ||
183 | mov %o0, %o0 | ||
184 | |||
185 | /* %o0: devhandle | ||
186 | * %o1: msiqid | ||
187 | * %o2: &head | ||
188 | * | ||
189 | * returns %o0: status | ||
190 | */ | ||
191 | .globl pci_sun4v_msiq_gethead | ||
192 | pci_sun4v_msiq_gethead: | ||
193 | mov HV_FAST_PCI_MSIQ_GETHEAD, %o5 | ||
194 | ta HV_FAST_TRAP | ||
195 | stx %o1, [%o2] | ||
196 | retl | ||
197 | mov %o0, %o0 | ||
198 | |||
199 | /* %o0: devhandle | ||
200 | * %o1: msiqid | ||
201 | * %o2: head | ||
202 | * | ||
203 | * returns %o0: status | ||
204 | */ | ||
205 | .globl pci_sun4v_msiq_sethead | ||
206 | pci_sun4v_msiq_sethead: | ||
207 | mov HV_FAST_PCI_MSIQ_SETHEAD, %o5 | ||
208 | ta HV_FAST_TRAP | ||
209 | retl | ||
210 | mov %o0, %o0 | ||
211 | |||
212 | /* %o0: devhandle | ||
213 | * %o1: msiqid | ||
214 | * %o2: &tail | ||
215 | * | ||
216 | * returns %o0: status | ||
217 | */ | ||
218 | .globl pci_sun4v_msiq_gettail | ||
219 | pci_sun4v_msiq_gettail: | ||
220 | mov HV_FAST_PCI_MSIQ_GETTAIL, %o5 | ||
221 | ta HV_FAST_TRAP | ||
222 | stx %o1, [%o2] | ||
223 | retl | ||
224 | mov %o0, %o0 | ||
225 | |||
226 | /* %o0: devhandle | ||
227 | * %o1: msinum | ||
228 | * %o2: &valid | ||
229 | * | ||
230 | * returns %o0: status | ||
231 | */ | ||
232 | .globl pci_sun4v_msi_getvalid | ||
233 | pci_sun4v_msi_getvalid: | ||
234 | mov HV_FAST_PCI_MSI_GETVALID, %o5 | ||
235 | ta HV_FAST_TRAP | ||
236 | stx %o1, [%o2] | ||
237 | retl | ||
238 | mov %o0, %o0 | ||
239 | |||
240 | /* %o0: devhandle | ||
241 | * %o1: msinum | ||
242 | * %o2: valid | ||
243 | * | ||
244 | * returns %o0: status | ||
245 | */ | ||
246 | .globl pci_sun4v_msi_setvalid | ||
247 | pci_sun4v_msi_setvalid: | ||
248 | mov HV_FAST_PCI_MSI_SETVALID, %o5 | ||
249 | ta HV_FAST_TRAP | ||
250 | retl | ||
251 | mov %o0, %o0 | ||
252 | |||
253 | /* %o0: devhandle | ||
254 | * %o1: msinum | ||
255 | * %o2: &msiq | ||
256 | * | ||
257 | * returns %o0: status | ||
258 | */ | ||
259 | .globl pci_sun4v_msi_getmsiq | ||
260 | pci_sun4v_msi_getmsiq: | ||
261 | mov HV_FAST_PCI_MSI_GETMSIQ, %o5 | ||
262 | ta HV_FAST_TRAP | ||
263 | stx %o1, [%o2] | ||
264 | retl | ||
265 | mov %o0, %o0 | ||
266 | |||
267 | /* %o0: devhandle | ||
268 | * %o1: msinum | ||
269 | * %o2: msitype | ||
270 | * %o3: msiq | ||
271 | * | ||
272 | * returns %o0: status | ||
273 | */ | ||
274 | .globl pci_sun4v_msi_setmsiq | ||
275 | pci_sun4v_msi_setmsiq: | ||
276 | mov HV_FAST_PCI_MSI_SETMSIQ, %o5 | ||
277 | ta HV_FAST_TRAP | ||
278 | retl | ||
279 | mov %o0, %o0 | ||
280 | |||
281 | /* %o0: devhandle | ||
282 | * %o1: msinum | ||
283 | * %o2: &state | ||
284 | * | ||
285 | * returns %o0: status | ||
286 | */ | ||
287 | .globl pci_sun4v_msi_getstate | ||
288 | pci_sun4v_msi_getstate: | ||
289 | mov HV_FAST_PCI_MSI_GETSTATE, %o5 | ||
290 | ta HV_FAST_TRAP | ||
291 | stx %o1, [%o2] | ||
292 | retl | ||
293 | mov %o0, %o0 | ||
294 | |||
295 | /* %o0: devhandle | ||
296 | * %o1: msinum | ||
297 | * %o2: state | ||
298 | * | ||
299 | * returns %o0: status | ||
300 | */ | ||
301 | .globl pci_sun4v_msi_setstate | ||
302 | pci_sun4v_msi_setstate: | ||
303 | mov HV_FAST_PCI_MSI_SETSTATE, %o5 | ||
304 | ta HV_FAST_TRAP | ||
305 | retl | ||
306 | mov %o0, %o0 | ||
307 | |||
308 | /* %o0: devhandle | ||
309 | * %o1: msinum | ||
310 | * %o2: &msiq | ||
311 | * | ||
312 | * returns %o0: status | ||
313 | */ | ||
314 | .globl pci_sun4v_msg_getmsiq | ||
315 | pci_sun4v_msg_getmsiq: | ||
316 | mov HV_FAST_PCI_MSG_GETMSIQ, %o5 | ||
317 | ta HV_FAST_TRAP | ||
318 | stx %o1, [%o2] | ||
319 | retl | ||
320 | mov %o0, %o0 | ||
321 | |||
322 | /* %o0: devhandle | ||
323 | * %o1: msinum | ||
324 | * %o2: msiq | ||
325 | * | ||
326 | * returns %o0: status | ||
327 | */ | ||
328 | .globl pci_sun4v_msg_setmsiq | ||
329 | pci_sun4v_msg_setmsiq: | ||
330 | mov HV_FAST_PCI_MSG_SETMSIQ, %o5 | ||
331 | ta HV_FAST_TRAP | ||
332 | retl | ||
333 | mov %o0, %o0 | ||
334 | |||
335 | /* %o0: devhandle | ||
336 | * %o1: msinum | ||
337 | * %o2: &valid | ||
338 | * | ||
339 | * returns %o0: status | ||
340 | */ | ||
341 | .globl pci_sun4v_msg_getvalid | ||
342 | pci_sun4v_msg_getvalid: | ||
343 | mov HV_FAST_PCI_MSG_GETVALID, %o5 | ||
344 | ta HV_FAST_TRAP | ||
345 | stx %o1, [%o2] | ||
346 | retl | ||
347 | mov %o0, %o0 | ||
348 | |||
349 | /* %o0: devhandle | ||
350 | * %o1: msinum | ||
351 | * %o2: valid | ||
352 | * | ||
353 | * returns %o0: status | ||
354 | */ | ||
355 | .globl pci_sun4v_msg_setvalid | ||
356 | pci_sun4v_msg_setvalid: | ||
357 | mov HV_FAST_PCI_MSG_SETVALID, %o5 | ||
358 | ta HV_FAST_TRAP | ||
359 | retl | ||
360 | mov %o0, %o0 | ||
361 | |||
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c index bf033b31d437..451028341c75 100644 --- a/arch/sparc64/kernel/setup.c +++ b/arch/sparc64/kernel/setup.c | |||
@@ -315,7 +315,7 @@ void __init setup_arch(char **cmdline_p) | |||
315 | { | 315 | { |
316 | /* Initialize PROM console and command line. */ | 316 | /* Initialize PROM console and command line. */ |
317 | *cmdline_p = prom_getbootargs(); | 317 | *cmdline_p = prom_getbootargs(); |
318 | strcpy(saved_command_line, *cmdline_p); | 318 | strcpy(boot_command_line, *cmdline_p); |
319 | 319 | ||
320 | if (tlb_type == hypervisor) | 320 | if (tlb_type == hypervisor) |
321 | printk("ARCH: SUN4V\n"); | 321 | printk("ARCH: SUN4V\n"); |
diff --git a/arch/sparc64/kernel/sunos_ioctl32.c b/arch/sparc64/kernel/sunos_ioctl32.c index 3f619ead22cc..a05e43d51755 100644 --- a/arch/sparc64/kernel/sunos_ioctl32.c +++ b/arch/sparc64/kernel/sunos_ioctl32.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/errno.h> | 11 | #include <linux/errno.h> |
12 | #include <linux/string.h> | 12 | #include <linux/string.h> |
13 | #include <linux/termios.h> | 13 | #include <linux/termios.h> |
14 | #include <linux/tty.h> | ||
14 | #include <linux/ioctl.h> | 15 | #include <linux/ioctl.h> |
15 | #include <linux/route.h> | 16 | #include <linux/route.h> |
16 | #include <linux/sockios.h> | 17 | #include <linux/sockios.h> |
diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c index e27cb71bd8e2..7876a0226285 100644 --- a/arch/sparc64/kernel/sys_sparc32.c +++ b/arch/sparc64/kernel/sys_sparc32.c | |||
@@ -459,70 +459,6 @@ asmlinkage long compat_sys_sysfs(int option, u32 arg1, u32 arg2) | |||
459 | return sys_sysfs(option, arg1, arg2); | 459 | return sys_sysfs(option, arg1, arg2); |
460 | } | 460 | } |
461 | 461 | ||
462 | struct sysinfo32 { | ||
463 | s32 uptime; | ||
464 | u32 loads[3]; | ||
465 | u32 totalram; | ||
466 | u32 freeram; | ||
467 | u32 sharedram; | ||
468 | u32 bufferram; | ||
469 | u32 totalswap; | ||
470 | u32 freeswap; | ||
471 | unsigned short procs; | ||
472 | unsigned short pad; | ||
473 | u32 totalhigh; | ||
474 | u32 freehigh; | ||
475 | u32 mem_unit; | ||
476 | char _f[20-2*sizeof(int)-sizeof(int)]; | ||
477 | }; | ||
478 | |||
479 | asmlinkage long sys32_sysinfo(struct sysinfo32 __user *info) | ||
480 | { | ||
481 | struct sysinfo s; | ||
482 | int ret, err; | ||
483 | int bitcount = 0; | ||
484 | mm_segment_t old_fs = get_fs (); | ||
485 | |||
486 | set_fs(KERNEL_DS); | ||
487 | ret = sys_sysinfo((struct sysinfo __user *) &s); | ||
488 | set_fs(old_fs); | ||
489 | /* Check to see if any memory value is too large for 32-bit and | ||
490 | * scale down if needed. | ||
491 | */ | ||
492 | if ((s.totalram >> 32) || (s.totalswap >> 32)) { | ||
493 | while (s.mem_unit < PAGE_SIZE) { | ||
494 | s.mem_unit <<= 1; | ||
495 | bitcount++; | ||
496 | } | ||
497 | s.totalram >>= bitcount; | ||
498 | s.freeram >>= bitcount; | ||
499 | s.sharedram >>= bitcount; | ||
500 | s.bufferram >>= bitcount; | ||
501 | s.totalswap >>= bitcount; | ||
502 | s.freeswap >>= bitcount; | ||
503 | s.totalhigh >>= bitcount; | ||
504 | s.freehigh >>= bitcount; | ||
505 | } | ||
506 | |||
507 | err = put_user (s.uptime, &info->uptime); | ||
508 | err |= __put_user (s.loads[0], &info->loads[0]); | ||
509 | err |= __put_user (s.loads[1], &info->loads[1]); | ||
510 | err |= __put_user (s.loads[2], &info->loads[2]); | ||
511 | err |= __put_user (s.totalram, &info->totalram); | ||
512 | err |= __put_user (s.freeram, &info->freeram); | ||
513 | err |= __put_user (s.sharedram, &info->sharedram); | ||
514 | err |= __put_user (s.bufferram, &info->bufferram); | ||
515 | err |= __put_user (s.totalswap, &info->totalswap); | ||
516 | err |= __put_user (s.freeswap, &info->freeswap); | ||
517 | err |= __put_user (s.procs, &info->procs); | ||
518 | err |= __put_user (s.totalhigh, &info->totalhigh); | ||
519 | err |= __put_user (s.freehigh, &info->freehigh); | ||
520 | err |= __put_user (s.mem_unit, &info->mem_unit); | ||
521 | if (err) | ||
522 | return -EFAULT; | ||
523 | return ret; | ||
524 | } | ||
525 | |||
526 | asmlinkage long compat_sys_sched_rr_get_interval(compat_pid_t pid, struct compat_timespec __user *interval) | 462 | asmlinkage long compat_sys_sched_rr_get_interval(compat_pid_t pid, struct compat_timespec __user *interval) |
527 | { | 463 | { |
528 | struct timespec t; | 464 | struct timespec t; |
diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c index 2ebc2c051383..4cff95b7b3a4 100644 --- a/arch/sparc64/kernel/sys_sunos32.c +++ b/arch/sparc64/kernel/sys_sunos32.c | |||
@@ -824,10 +824,17 @@ asmlinkage int sunos_wait4(compat_pid_t pid, compat_uint_t __user *stat_addr, in | |||
824 | return ret; | 824 | return ret; |
825 | } | 825 | } |
826 | 826 | ||
827 | extern int kill_pg(int, int, int); | ||
828 | asmlinkage int sunos_killpg(int pgrp, int sig) | 827 | asmlinkage int sunos_killpg(int pgrp, int sig) |
829 | { | 828 | { |
830 | return kill_pg(pgrp, sig, 0); | 829 | int ret; |
830 | |||
831 | rcu_read_lock(); | ||
832 | ret = -EINVAL; | ||
833 | if (pgrp > 0) | ||
834 | ret = kill_pgrp(find_pid(pgrp), sig, 0); | ||
835 | rcu_read_unlock(); | ||
836 | |||
837 | return ret; | ||
831 | } | 838 | } |
832 | 839 | ||
833 | asmlinkage int sunos_audit(void) | 840 | asmlinkage int sunos_audit(void) |
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index 9a8026797ac0..948b7d2d5874 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -61,7 +61,7 @@ sys_call_table32: | |||
61 | .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask | 61 | .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask |
62 | /*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir | 62 | /*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir |
63 | .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64 | 63 | .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64 |
64 | /*210*/ .word sys32_fadvise64_64, sys32_tgkill, sys32_waitpid, sys_swapoff, sys32_sysinfo | 64 | /*210*/ .word sys32_fadvise64_64, sys32_tgkill, sys32_waitpid, sys_swapoff, compat_sys_sysinfo |
65 | .word sys32_ipc, sys32_sigreturn, sys_clone, sys32_ioprio_get, compat_sys_adjtimex | 65 | .word sys32_ipc, sys32_sigreturn, sys_clone, sys32_ioprio_get, compat_sys_adjtimex |
66 | /*220*/ .word sys32_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys32_getpgid | 66 | /*220*/ .word sys32_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys32_getpgid |
67 | .word sys32_bdflush, sys32_sysfs, sys_nis_syscall, sys32_setfsuid16, sys32_setfsgid16 | 67 | .word sys32_bdflush, sys32_sysfs, sys_nis_syscall, sys32_setfsuid16, sys32_setfsgid16 |
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c index 061e1b1fa583..f84da4f1b706 100644 --- a/arch/sparc64/kernel/time.c +++ b/arch/sparc64/kernel/time.c | |||
@@ -1327,7 +1327,7 @@ static int mini_rtc_release(struct inode *inode, struct file *file) | |||
1327 | } | 1327 | } |
1328 | 1328 | ||
1329 | 1329 | ||
1330 | static struct file_operations mini_rtc_fops = { | 1330 | static const struct file_operations mini_rtc_fops = { |
1331 | .owner = THIS_MODULE, | 1331 | .owner = THIS_MODULE, |
1332 | .ioctl = mini_rtc_ioctl, | 1332 | .ioctl = mini_rtc_ioctl, |
1333 | .open = mini_rtc_open, | 1333 | .open = mini_rtc_open, |
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S index 4a6063f33e7a..13fa2a2e4513 100644 --- a/arch/sparc64/kernel/vmlinux.lds.S +++ b/arch/sparc64/kernel/vmlinux.lds.S | |||
@@ -81,10 +81,14 @@ SECTIONS | |||
81 | __sun4v_2insn_patch = .; | 81 | __sun4v_2insn_patch = .; |
82 | .sun4v_2insn_patch : { *(.sun4v_2insn_patch) } | 82 | .sun4v_2insn_patch : { *(.sun4v_2insn_patch) } |
83 | __sun4v_2insn_patch_end = .; | 83 | __sun4v_2insn_patch_end = .; |
84 | |||
85 | #ifdef CONFIG_BLK_DEV_INITRD | ||
84 | . = ALIGN(8192); | 86 | . = ALIGN(8192); |
85 | __initramfs_start = .; | 87 | __initramfs_start = .; |
86 | .init.ramfs : { *(.init.ramfs) } | 88 | .init.ramfs : { *(.init.ramfs) } |
87 | __initramfs_end = .; | 89 | __initramfs_end = .; |
90 | #endif | ||
91 | |||
88 | . = ALIGN(8192); | 92 | . = ALIGN(8192); |
89 | __per_cpu_start = .; | 93 | __per_cpu_start = .; |
90 | .data.percpu : { *(.data.percpu) } | 94 | .data.percpu : { *(.data.percpu) } |
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index 054822a3e05e..b1a1ee0cc6bd 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -416,7 +416,7 @@ void show_mem(void) | |||
416 | printk("Free swap: %6ldkB\n", | 416 | printk("Free swap: %6ldkB\n", |
417 | nr_swap_pages << (PAGE_SHIFT-10)); | 417 | nr_swap_pages << (PAGE_SHIFT-10)); |
418 | printk("%ld pages of RAM\n", num_physpages); | 418 | printk("%ld pages of RAM\n", num_physpages); |
419 | printk("%d free pages\n", nr_free_pages()); | 419 | printk("%lu free pages\n", nr_free_pages()); |
420 | } | 420 | } |
421 | 421 | ||
422 | void mmu_info(struct seq_file *m) | 422 | void mmu_info(struct seq_file *m) |
@@ -1467,8 +1467,8 @@ void __init paging_init(void) | |||
1467 | for (znum = 0; znum < MAX_NR_ZONES; znum++) | 1467 | for (znum = 0; znum < MAX_NR_ZONES; znum++) |
1468 | zones_size[znum] = zholes_size[znum] = 0; | 1468 | zones_size[znum] = zholes_size[znum] = 0; |
1469 | 1469 | ||
1470 | zones_size[ZONE_DMA] = end_pfn; | 1470 | zones_size[ZONE_NORMAL] = end_pfn; |
1471 | zholes_size[ZONE_DMA] = end_pfn - pages_avail; | 1471 | zholes_size[ZONE_NORMAL] = end_pfn - pages_avail; |
1472 | 1472 | ||
1473 | free_area_init_node(0, &contig_page_data, zones_size, | 1473 | free_area_init_node(0, &contig_page_data, zones_size, |
1474 | __pa(PAGE_OFFSET) >> PAGE_SHIFT, | 1474 | __pa(PAGE_OFFSET) >> PAGE_SHIFT, |
@@ -1593,7 +1593,7 @@ void __init mem_init(void) | |||
1593 | initpages = (((unsigned long) __init_end) - ((unsigned long) __init_begin)); | 1593 | initpages = (((unsigned long) __init_end) - ((unsigned long) __init_begin)); |
1594 | initpages = PAGE_ALIGN(initpages) >> PAGE_SHIFT; | 1594 | initpages = PAGE_ALIGN(initpages) >> PAGE_SHIFT; |
1595 | 1595 | ||
1596 | printk("Memory: %uk available (%ldk kernel code, %ldk data, %ldk init) [%016lx,%016lx]\n", | 1596 | printk("Memory: %luk available (%ldk kernel code, %ldk data, %ldk init) [%016lx,%016lx]\n", |
1597 | nr_free_pages() << (PAGE_SHIFT-10), | 1597 | nr_free_pages() << (PAGE_SHIFT-10), |
1598 | codepages << (PAGE_SHIFT-10), | 1598 | codepages << (PAGE_SHIFT-10), |
1599 | datapages << (PAGE_SHIFT-10), | 1599 | datapages << (PAGE_SHIFT-10), |
diff --git a/arch/sparc64/solaris/socksys.c b/arch/sparc64/solaris/socksys.c index 89a4757f192f..c2864447de82 100644 --- a/arch/sparc64/solaris/socksys.c +++ b/arch/sparc64/solaris/socksys.c | |||
@@ -163,7 +163,7 @@ static unsigned int socksys_poll(struct file * filp, poll_table * wait) | |||
163 | return mask; | 163 | return mask; |
164 | } | 164 | } |
165 | 165 | ||
166 | static struct file_operations socksys_fops = { | 166 | static const struct file_operations socksys_fops = { |
167 | .open = socksys_open, | 167 | .open = socksys_open, |
168 | .release = socksys_release, | 168 | .release = socksys_release, |
169 | }; | 169 | }; |
diff --git a/arch/um/Kconfig b/arch/um/Kconfig index d32a80e6668c..b3a21ba77cd2 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig | |||
@@ -16,6 +16,9 @@ config MMU | |||
16 | bool | 16 | bool |
17 | default y | 17 | default y |
18 | 18 | ||
19 | config NO_IOMEM | ||
20 | def_bool y | ||
21 | |||
19 | mainmenu "Linux/Usermode Kernel Configuration" | 22 | mainmenu "Linux/Usermode Kernel Configuration" |
20 | 23 | ||
21 | config ISA | 24 | config ISA |
diff --git a/arch/um/drivers/chan_kern.c b/arch/um/drivers/chan_kern.c index 7d4190e55654..7b8baf146acc 100644 --- a/arch/um/drivers/chan_kern.c +++ b/arch/um/drivers/chan_kern.c | |||
@@ -19,44 +19,11 @@ | |||
19 | #include "line.h" | 19 | #include "line.h" |
20 | #include "os.h" | 20 | #include "os.h" |
21 | 21 | ||
22 | /* XXX: could well be moved to somewhere else, if needed. */ | ||
23 | static int my_printf(const char * fmt, ...) | ||
24 | __attribute__ ((format (printf, 1, 2))); | ||
25 | |||
26 | static int my_printf(const char * fmt, ...) | ||
27 | { | ||
28 | /* Yes, can be called on atomic context.*/ | ||
29 | char *buf = kmalloc(4096, GFP_ATOMIC); | ||
30 | va_list args; | ||
31 | int r; | ||
32 | |||
33 | if (!buf) { | ||
34 | /* We print directly fmt. | ||
35 | * Yes, yes, yes, feel free to complain. */ | ||
36 | r = strlen(fmt); | ||
37 | } else { | ||
38 | va_start(args, fmt); | ||
39 | r = vsprintf(buf, fmt, args); | ||
40 | va_end(args); | ||
41 | fmt = buf; | ||
42 | } | ||
43 | |||
44 | if (r) | ||
45 | r = os_write_file(1, fmt, r); | ||
46 | return r; | ||
47 | |||
48 | } | ||
49 | |||
50 | #ifdef CONFIG_NOCONFIG_CHAN | 22 | #ifdef CONFIG_NOCONFIG_CHAN |
51 | /* Despite its name, there's no added trailing newline. */ | 23 | static void *not_configged_init(char *str, int device, |
52 | static int my_puts(const char * buf) | 24 | const struct chan_opts *opts) |
53 | { | ||
54 | return os_write_file(1, buf, strlen(buf)); | ||
55 | } | ||
56 | |||
57 | static void *not_configged_init(char *str, int device, struct chan_opts *opts) | ||
58 | { | 25 | { |
59 | my_puts("Using a channel type which is configured out of " | 26 | printk("Using a channel type which is configured out of " |
60 | "UML\n"); | 27 | "UML\n"); |
61 | return NULL; | 28 | return NULL; |
62 | } | 29 | } |
@@ -64,34 +31,34 @@ static void *not_configged_init(char *str, int device, struct chan_opts *opts) | |||
64 | static int not_configged_open(int input, int output, int primary, void *data, | 31 | static int not_configged_open(int input, int output, int primary, void *data, |
65 | char **dev_out) | 32 | char **dev_out) |
66 | { | 33 | { |
67 | my_puts("Using a channel type which is configured out of " | 34 | printk("Using a channel type which is configured out of " |
68 | "UML\n"); | 35 | "UML\n"); |
69 | return -ENODEV; | 36 | return -ENODEV; |
70 | } | 37 | } |
71 | 38 | ||
72 | static void not_configged_close(int fd, void *data) | 39 | static void not_configged_close(int fd, void *data) |
73 | { | 40 | { |
74 | my_puts("Using a channel type which is configured out of " | 41 | printk("Using a channel type which is configured out of " |
75 | "UML\n"); | 42 | "UML\n"); |
76 | } | 43 | } |
77 | 44 | ||
78 | static int not_configged_read(int fd, char *c_out, void *data) | 45 | static int not_configged_read(int fd, char *c_out, void *data) |
79 | { | 46 | { |
80 | my_puts("Using a channel type which is configured out of " | 47 | printk("Using a channel type which is configured out of " |
81 | "UML\n"); | 48 | "UML\n"); |
82 | return -EIO; | 49 | return -EIO; |
83 | } | 50 | } |
84 | 51 | ||
85 | static int not_configged_write(int fd, const char *buf, int len, void *data) | 52 | static int not_configged_write(int fd, const char *buf, int len, void *data) |
86 | { | 53 | { |
87 | my_puts("Using a channel type which is configured out of " | 54 | printk("Using a channel type which is configured out of " |
88 | "UML\n"); | 55 | "UML\n"); |
89 | return -EIO; | 56 | return -EIO; |
90 | } | 57 | } |
91 | 58 | ||
92 | static int not_configged_console_write(int fd, const char *buf, int len) | 59 | static int not_configged_console_write(int fd, const char *buf, int len) |
93 | { | 60 | { |
94 | my_puts("Using a channel type which is configured out of " | 61 | printk("Using a channel type which is configured out of " |
95 | "UML\n"); | 62 | "UML\n"); |
96 | return -EIO; | 63 | return -EIO; |
97 | } | 64 | } |
@@ -99,14 +66,14 @@ static int not_configged_console_write(int fd, const char *buf, int len) | |||
99 | static int not_configged_window_size(int fd, void *data, unsigned short *rows, | 66 | static int not_configged_window_size(int fd, void *data, unsigned short *rows, |
100 | unsigned short *cols) | 67 | unsigned short *cols) |
101 | { | 68 | { |
102 | my_puts("Using a channel type which is configured out of " | 69 | printk("Using a channel type which is configured out of " |
103 | "UML\n"); | 70 | "UML\n"); |
104 | return -ENODEV; | 71 | return -ENODEV; |
105 | } | 72 | } |
106 | 73 | ||
107 | static void not_configged_free(void *data) | 74 | static void not_configged_free(void *data) |
108 | { | 75 | { |
109 | my_puts("Using a channel type which is configured out of " | 76 | printk("Using a channel type which is configured out of " |
110 | "UML\n"); | 77 | "UML\n"); |
111 | } | 78 | } |
112 | 79 | ||
@@ -255,15 +222,28 @@ void enable_chan(struct line *line) | |||
255 | } | 222 | } |
256 | } | 223 | } |
257 | 224 | ||
225 | /* Items are added in IRQ context, when free_irq can't be called, and | ||
226 | * removed in process context, when it can. | ||
227 | * This handles interrupt sources which disappear, and which need to | ||
228 | * be permanently disabled. This is discovered in IRQ context, but | ||
229 | * the freeing of the IRQ must be done later. | ||
230 | */ | ||
231 | static DEFINE_SPINLOCK(irqs_to_free_lock); | ||
258 | static LIST_HEAD(irqs_to_free); | 232 | static LIST_HEAD(irqs_to_free); |
259 | 233 | ||
260 | void free_irqs(void) | 234 | void free_irqs(void) |
261 | { | 235 | { |
262 | struct chan *chan; | 236 | struct chan *chan; |
237 | LIST_HEAD(list); | ||
238 | struct list_head *ele; | ||
263 | 239 | ||
264 | while(!list_empty(&irqs_to_free)){ | 240 | spin_lock_irq(&irqs_to_free_lock); |
265 | chan = list_entry(irqs_to_free.next, struct chan, free_list); | 241 | list_splice_init(&irqs_to_free, &list); |
266 | list_del(&chan->free_list); | 242 | INIT_LIST_HEAD(&irqs_to_free); |
243 | spin_unlock_irq(&irqs_to_free_lock); | ||
244 | |||
245 | list_for_each(ele, &list){ | ||
246 | chan = list_entry(ele, struct chan, free_list); | ||
267 | 247 | ||
268 | if(chan->input) | 248 | if(chan->input) |
269 | free_irq(chan->line->driver->read_irq, chan); | 249 | free_irq(chan->line->driver->read_irq, chan); |
@@ -279,7 +259,9 @@ static void close_one_chan(struct chan *chan, int delay_free_irq) | |||
279 | return; | 259 | return; |
280 | 260 | ||
281 | if(delay_free_irq){ | 261 | if(delay_free_irq){ |
262 | spin_lock_irq(&irqs_to_free_lock); | ||
282 | list_add(&chan->free_list, &irqs_to_free); | 263 | list_add(&chan->free_list, &irqs_to_free); |
264 | spin_unlock_irq(&irqs_to_free_lock); | ||
283 | } | 265 | } |
284 | else { | 266 | else { |
285 | if(chan->input) | 267 | if(chan->input) |
@@ -372,8 +354,7 @@ int console_write_chan(struct list_head *chans, const char *buf, int len) | |||
372 | return ret; | 354 | return ret; |
373 | } | 355 | } |
374 | 356 | ||
375 | int console_open_chan(struct line *line, struct console *co, | 357 | int console_open_chan(struct line *line, struct console *co) |
376 | const struct chan_opts *opts) | ||
377 | { | 358 | { |
378 | int err; | 359 | int err; |
379 | 360 | ||
@@ -381,7 +362,7 @@ int console_open_chan(struct line *line, struct console *co, | |||
381 | if(err) | 362 | if(err) |
382 | return err; | 363 | return err; |
383 | 364 | ||
384 | printk("Console initialized on /dev/%s%d\n",co->name,co->index); | 365 | printk("Console initialized on /dev/%s%d\n", co->name, co->index); |
385 | return 0; | 366 | return 0; |
386 | } | 367 | } |
387 | 368 | ||
@@ -534,7 +515,7 @@ static const struct chan_type chan_table[] = { | |||
534 | }; | 515 | }; |
535 | 516 | ||
536 | static struct chan *parse_chan(struct line *line, char *str, int device, | 517 | static struct chan *parse_chan(struct line *line, char *str, int device, |
537 | const struct chan_opts *opts) | 518 | const struct chan_opts *opts, char **error_out) |
538 | { | 519 | { |
539 | const struct chan_type *entry; | 520 | const struct chan_type *entry; |
540 | const struct chan_ops *ops; | 521 | const struct chan_ops *ops; |
@@ -553,19 +534,21 @@ static struct chan *parse_chan(struct line *line, char *str, int device, | |||
553 | } | 534 | } |
554 | } | 535 | } |
555 | if(ops == NULL){ | 536 | if(ops == NULL){ |
556 | my_printf("parse_chan couldn't parse \"%s\"\n", | 537 | *error_out = "No match for configured backends"; |
557 | str); | ||
558 | return NULL; | 538 | return NULL; |
559 | } | 539 | } |
560 | if(ops->init == NULL) | 540 | |
561 | return NULL; | ||
562 | data = (*ops->init)(str, device, opts); | 541 | data = (*ops->init)(str, device, opts); |
563 | if(data == NULL) | 542 | if(data == NULL){ |
543 | *error_out = "Configuration failed"; | ||
564 | return NULL; | 544 | return NULL; |
545 | } | ||
565 | 546 | ||
566 | chan = kmalloc(sizeof(*chan), GFP_ATOMIC); | 547 | chan = kmalloc(sizeof(*chan), GFP_ATOMIC); |
567 | if(chan == NULL) | 548 | if(chan == NULL){ |
549 | *error_out = "Memory allocation failed"; | ||
568 | return NULL; | 550 | return NULL; |
551 | } | ||
569 | *chan = ((struct chan) { .list = LIST_HEAD_INIT(chan->list), | 552 | *chan = ((struct chan) { .list = LIST_HEAD_INIT(chan->list), |
570 | .free_list = | 553 | .free_list = |
571 | LIST_HEAD_INIT(chan->free_list), | 554 | LIST_HEAD_INIT(chan->free_list), |
@@ -582,7 +565,7 @@ static struct chan *parse_chan(struct line *line, char *str, int device, | |||
582 | } | 565 | } |
583 | 566 | ||
584 | int parse_chan_pair(char *str, struct line *line, int device, | 567 | int parse_chan_pair(char *str, struct line *line, int device, |
585 | const struct chan_opts *opts) | 568 | const struct chan_opts *opts, char **error_out) |
586 | { | 569 | { |
587 | struct list_head *chans = &line->chan_list; | 570 | struct list_head *chans = &line->chan_list; |
588 | struct chan *new, *chan; | 571 | struct chan *new, *chan; |
@@ -599,14 +582,14 @@ int parse_chan_pair(char *str, struct line *line, int device, | |||
599 | in = str; | 582 | in = str; |
600 | *out = '\0'; | 583 | *out = '\0'; |
601 | out++; | 584 | out++; |
602 | new = parse_chan(line, in, device, opts); | 585 | new = parse_chan(line, in, device, opts, error_out); |
603 | if(new == NULL) | 586 | if(new == NULL) |
604 | return -1; | 587 | return -1; |
605 | 588 | ||
606 | new->input = 1; | 589 | new->input = 1; |
607 | list_add(&new->list, chans); | 590 | list_add(&new->list, chans); |
608 | 591 | ||
609 | new = parse_chan(line, out, device, opts); | 592 | new = parse_chan(line, out, device, opts, error_out); |
610 | if(new == NULL) | 593 | if(new == NULL) |
611 | return -1; | 594 | return -1; |
612 | 595 | ||
@@ -614,7 +597,7 @@ int parse_chan_pair(char *str, struct line *line, int device, | |||
614 | new->output = 1; | 597 | new->output = 1; |
615 | } | 598 | } |
616 | else { | 599 | else { |
617 | new = parse_chan(line, str, device, opts); | 600 | new = parse_chan(line, str, device, opts, error_out); |
618 | if(new == NULL) | 601 | if(new == NULL) |
619 | return -1; | 602 | return -1; |
620 | 603 | ||
diff --git a/arch/um/drivers/harddog_kern.c b/arch/um/drivers/harddog_kern.c index 64ff22aa077b..55601687b3bc 100644 --- a/arch/um/drivers/harddog_kern.c +++ b/arch/um/drivers/harddog_kern.c | |||
@@ -9,10 +9,10 @@ | |||
9 | * modify it under the terms of the GNU General Public License | 9 | * modify it under the terms of the GNU General Public License |
10 | * as published by the Free Software Foundation; either version | 10 | * as published by the Free Software Foundation; either version |
11 | * 2 of the License, or (at your option) any later version. | 11 | * 2 of the License, or (at your option) any later version. |
12 | * | 12 | * |
13 | * Neither Alan Cox nor CymruNet Ltd. admit liability nor provide | 13 | * Neither Alan Cox nor CymruNet Ltd. admit liability nor provide |
14 | * warranty for any of this software. This material is provided | 14 | * warranty for any of this software. This material is provided |
15 | * "AS-IS" and at no charge. | 15 | * "AS-IS" and at no charge. |
16 | * | 16 | * |
17 | * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk> | 17 | * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk> |
18 | * | 18 | * |
@@ -29,11 +29,11 @@ | |||
29 | * Made SMP safe for 2.3.x | 29 | * Made SMP safe for 2.3.x |
30 | * | 30 | * |
31 | * 20011127 Joel Becker (jlbec@evilplan.org> | 31 | * 20011127 Joel Becker (jlbec@evilplan.org> |
32 | * Added soft_noboot; Allows testing the softdog trigger without | 32 | * Added soft_noboot; Allows testing the softdog trigger without |
33 | * requiring a recompile. | 33 | * requiring a recompile. |
34 | * Added WDIOC_GETTIMEOUT and WDIOC_SETTIMOUT. | 34 | * Added WDIOC_GETTIMEOUT and WDIOC_SETTIMOUT. |
35 | */ | 35 | */ |
36 | 36 | ||
37 | #include <linux/module.h> | 37 | #include <linux/module.h> |
38 | #include <linux/types.h> | 38 | #include <linux/types.h> |
39 | #include <linux/kernel.h> | 39 | #include <linux/kernel.h> |
@@ -44,12 +44,13 @@ | |||
44 | #include <linux/reboot.h> | 44 | #include <linux/reboot.h> |
45 | #include <linux/smp_lock.h> | 45 | #include <linux/smp_lock.h> |
46 | #include <linux/init.h> | 46 | #include <linux/init.h> |
47 | #include <linux/spinlock.h> | ||
47 | #include <asm/uaccess.h> | 48 | #include <asm/uaccess.h> |
48 | #include "mconsole.h" | 49 | #include "mconsole.h" |
49 | 50 | ||
50 | MODULE_LICENSE("GPL"); | 51 | MODULE_LICENSE("GPL"); |
51 | 52 | ||
52 | /* Locked by the BKL in harddog_open and harddog_release */ | 53 | static DEFINE_SPINLOCK(lock); |
53 | static int timer_alive; | 54 | static int timer_alive; |
54 | static int harddog_in_fd = -1; | 55 | static int harddog_in_fd = -1; |
55 | static int harddog_out_fd = -1; | 56 | static int harddog_out_fd = -1; |
@@ -57,18 +58,18 @@ static int harddog_out_fd = -1; | |||
57 | /* | 58 | /* |
58 | * Allow only one person to hold it open | 59 | * Allow only one person to hold it open |
59 | */ | 60 | */ |
60 | 61 | ||
61 | extern int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock); | 62 | extern int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock); |
62 | 63 | ||
63 | static int harddog_open(struct inode *inode, struct file *file) | 64 | static int harddog_open(struct inode *inode, struct file *file) |
64 | { | 65 | { |
65 | int err; | 66 | int err = -EBUSY; |
66 | char *sock = NULL; | 67 | char *sock = NULL; |
67 | 68 | ||
68 | lock_kernel(); | 69 | spin_lock(&lock); |
69 | if(timer_alive) | 70 | if(timer_alive) |
70 | return -EBUSY; | 71 | goto err; |
71 | #ifdef CONFIG_HARDDOG_NOWAYOUT | 72 | #ifdef CONFIG_HARDDOG_NOWAYOUT |
72 | __module_get(THIS_MODULE); | 73 | __module_get(THIS_MODULE); |
73 | #endif | 74 | #endif |
74 | 75 | ||
@@ -76,11 +77,15 @@ static int harddog_open(struct inode *inode, struct file *file) | |||
76 | sock = mconsole_notify_socket(); | 77 | sock = mconsole_notify_socket(); |
77 | #endif | 78 | #endif |
78 | err = start_watchdog(&harddog_in_fd, &harddog_out_fd, sock); | 79 | err = start_watchdog(&harddog_in_fd, &harddog_out_fd, sock); |
79 | if(err) return(err); | 80 | if(err) |
81 | goto err; | ||
80 | 82 | ||
81 | timer_alive = 1; | 83 | timer_alive = 1; |
82 | unlock_kernel(); | 84 | spin_unlock(&lock); |
83 | return nonseekable_open(inode, file); | 85 | return nonseekable_open(inode, file); |
86 | err: | ||
87 | spin_unlock(&lock); | ||
88 | return err; | ||
84 | } | 89 | } |
85 | 90 | ||
86 | extern void stop_watchdog(int in_fd, int out_fd); | 91 | extern void stop_watchdog(int in_fd, int out_fd); |
@@ -90,14 +95,16 @@ static int harddog_release(struct inode *inode, struct file *file) | |||
90 | /* | 95 | /* |
91 | * Shut off the timer. | 96 | * Shut off the timer. |
92 | */ | 97 | */ |
93 | lock_kernel(); | 98 | |
99 | spin_lock(&lock); | ||
94 | 100 | ||
95 | stop_watchdog(harddog_in_fd, harddog_out_fd); | 101 | stop_watchdog(harddog_in_fd, harddog_out_fd); |
96 | harddog_in_fd = -1; | 102 | harddog_in_fd = -1; |
97 | harddog_out_fd = -1; | 103 | harddog_out_fd = -1; |
98 | 104 | ||
99 | timer_alive=0; | 105 | timer_alive=0; |
100 | unlock_kernel(); | 106 | spin_unlock(&lock); |
107 | |||
101 | return 0; | 108 | return 0; |
102 | } | 109 | } |
103 | 110 | ||
@@ -110,7 +117,7 @@ static ssize_t harddog_write(struct file *file, const char __user *data, size_t | |||
110 | * Refresh the timer. | 117 | * Refresh the timer. |
111 | */ | 118 | */ |
112 | if(len) | 119 | if(len) |
113 | return(ping_watchdog(harddog_out_fd)); | 120 | return ping_watchdog(harddog_out_fd); |
114 | return 0; | 121 | return 0; |
115 | } | 122 | } |
116 | 123 | ||
@@ -134,11 +141,11 @@ static int harddog_ioctl(struct inode *inode, struct file *file, | |||
134 | case WDIOC_GETBOOTSTATUS: | 141 | case WDIOC_GETBOOTSTATUS: |
135 | return put_user(0,(int __user *)argp); | 142 | return put_user(0,(int __user *)argp); |
136 | case WDIOC_KEEPALIVE: | 143 | case WDIOC_KEEPALIVE: |
137 | return(ping_watchdog(harddog_out_fd)); | 144 | return ping_watchdog(harddog_out_fd); |
138 | } | 145 | } |
139 | } | 146 | } |
140 | 147 | ||
141 | static struct file_operations harddog_fops = { | 148 | static const struct file_operations harddog_fops = { |
142 | .owner = THIS_MODULE, | 149 | .owner = THIS_MODULE, |
143 | .write = harddog_write, | 150 | .write = harddog_write, |
144 | .ioctl = harddog_ioctl, | 151 | .ioctl = harddog_ioctl, |
@@ -165,7 +172,7 @@ static int __init harddog_init(void) | |||
165 | 172 | ||
166 | printk(banner); | 173 | printk(banner); |
167 | 174 | ||
168 | return(0); | 175 | return 0; |
169 | } | 176 | } |
170 | 177 | ||
171 | static void __exit harddog_exit(void) | 178 | static void __exit harddog_exit(void) |
@@ -175,14 +182,3 @@ static void __exit harddog_exit(void) | |||
175 | 182 | ||
176 | module_init(harddog_init); | 183 | module_init(harddog_init); |
177 | module_exit(harddog_exit); | 184 | module_exit(harddog_exit); |
178 | |||
179 | /* | ||
180 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
181 | * Emacs will notice this stuff at the end of the file and automatically | ||
182 | * adjust the settings for this buffer only. This must remain at the end | ||
183 | * of the file. | ||
184 | * --------------------------------------------------------------------------- | ||
185 | * Local variables: | ||
186 | * c-file-style: "linux" | ||
187 | * End: | ||
188 | */ | ||
diff --git a/arch/um/drivers/harddog_user.c b/arch/um/drivers/harddog_user.c index def013b5a3c7..c495ecf263b1 100644 --- a/arch/um/drivers/harddog_user.c +++ b/arch/um/drivers/harddog_user.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
@@ -38,7 +38,7 @@ int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock) | |||
38 | int in_fds[2], out_fds[2], pid, n, err; | 38 | int in_fds[2], out_fds[2], pid, n, err; |
39 | char pid_buf[sizeof("nnnnn\0")], c; | 39 | char pid_buf[sizeof("nnnnn\0")], c; |
40 | char *pid_args[] = { "/usr/bin/uml_watchdog", "-pid", pid_buf, NULL }; | 40 | char *pid_args[] = { "/usr/bin/uml_watchdog", "-pid", pid_buf, NULL }; |
41 | char *mconsole_args[] = { "/usr/bin/uml_watchdog", "-mconsole", NULL, | 41 | char *mconsole_args[] = { "/usr/bin/uml_watchdog", "-mconsole", NULL, |
42 | NULL }; | 42 | NULL }; |
43 | char **args = NULL; | 43 | char **args = NULL; |
44 | 44 | ||
@@ -96,7 +96,7 @@ int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock) | |||
96 | } | 96 | } |
97 | *in_fd_ret = in_fds[0]; | 97 | *in_fd_ret = in_fds[0]; |
98 | *out_fd_ret = out_fds[1]; | 98 | *out_fd_ret = out_fds[1]; |
99 | return(0); | 99 | return 0; |
100 | 100 | ||
101 | out_close_in: | 101 | out_close_in: |
102 | os_close_file(in_fds[0]); | 102 | os_close_file(in_fds[0]); |
@@ -105,7 +105,7 @@ int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock) | |||
105 | os_close_file(out_fds[0]); | 105 | os_close_file(out_fds[0]); |
106 | os_close_file(out_fds[1]); | 106 | os_close_file(out_fds[1]); |
107 | out: | 107 | out: |
108 | return(err); | 108 | return err; |
109 | } | 109 | } |
110 | 110 | ||
111 | void stop_watchdog(int in_fd, int out_fd) | 111 | void stop_watchdog(int in_fd, int out_fd) |
@@ -123,20 +123,9 @@ int ping_watchdog(int fd) | |||
123 | if(n != sizeof(c)){ | 123 | if(n != sizeof(c)){ |
124 | printk("ping_watchdog - write failed, err = %d\n", -n); | 124 | printk("ping_watchdog - write failed, err = %d\n", -n); |
125 | if(n < 0) | 125 | if(n < 0) |
126 | return(n); | 126 | return n; |
127 | return(-EIO); | 127 | return -EIO; |
128 | } | 128 | } |
129 | return 1; | 129 | return 1; |
130 | 130 | ||
131 | } | 131 | } |
132 | |||
133 | /* | ||
134 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
135 | * Emacs will notice this stuff at the end of the file and automatically | ||
136 | * adjust the settings for this buffer only. This must remain at the end | ||
137 | * of the file. | ||
138 | * --------------------------------------------------------------------------- | ||
139 | * Local variables: | ||
140 | * c-file-style: "linux" | ||
141 | * End: | ||
142 | */ | ||
diff --git a/arch/um/drivers/hostaudio_kern.c b/arch/um/drivers/hostaudio_kern.c index a0d148ea63d6..10e08a8c17c3 100644 --- a/arch/um/drivers/hostaudio_kern.c +++ b/arch/um/drivers/hostaudio_kern.c | |||
@@ -15,19 +15,22 @@ | |||
15 | #include "os.h" | 15 | #include "os.h" |
16 | 16 | ||
17 | struct hostaudio_state { | 17 | struct hostaudio_state { |
18 | int fd; | 18 | int fd; |
19 | }; | 19 | }; |
20 | 20 | ||
21 | struct hostmixer_state { | 21 | struct hostmixer_state { |
22 | int fd; | 22 | int fd; |
23 | }; | 23 | }; |
24 | 24 | ||
25 | #define HOSTAUDIO_DEV_DSP "/dev/sound/dsp" | 25 | #define HOSTAUDIO_DEV_DSP "/dev/sound/dsp" |
26 | #define HOSTAUDIO_DEV_MIXER "/dev/sound/mixer" | 26 | #define HOSTAUDIO_DEV_MIXER "/dev/sound/mixer" |
27 | 27 | ||
28 | /* Only changed from linux_main at boot time */ | 28 | /* Changed either at boot time or module load time. At boot, this is |
29 | char *dsp = HOSTAUDIO_DEV_DSP; | 29 | * single-threaded; at module load, multiple modules would each have |
30 | char *mixer = HOSTAUDIO_DEV_MIXER; | 30 | * their own copy of these variables. |
31 | */ | ||
32 | static char *dsp = HOSTAUDIO_DEV_DSP; | ||
33 | static char *mixer = HOSTAUDIO_DEV_MIXER; | ||
31 | 34 | ||
32 | #define DSP_HELP \ | 35 | #define DSP_HELP \ |
33 | " This is used to specify the host dsp device to the hostaudio driver.\n" \ | 36 | " This is used to specify the host dsp device to the hostaudio driver.\n" \ |
@@ -69,12 +72,12 @@ MODULE_PARM_DESC(mixer, MIXER_HELP); | |||
69 | static ssize_t hostaudio_read(struct file *file, char __user *buffer, | 72 | static ssize_t hostaudio_read(struct file *file, char __user *buffer, |
70 | size_t count, loff_t *ppos) | 73 | size_t count, loff_t *ppos) |
71 | { | 74 | { |
72 | struct hostaudio_state *state = file->private_data; | 75 | struct hostaudio_state *state = file->private_data; |
73 | void *kbuf; | 76 | void *kbuf; |
74 | int err; | 77 | int err; |
75 | 78 | ||
76 | #ifdef DEBUG | 79 | #ifdef DEBUG |
77 | printk("hostaudio: read called, count = %d\n", count); | 80 | printk("hostaudio: read called, count = %d\n", count); |
78 | #endif | 81 | #endif |
79 | 82 | ||
80 | kbuf = kmalloc(count, GFP_KERNEL); | 83 | kbuf = kmalloc(count, GFP_KERNEL); |
@@ -88,7 +91,7 @@ static ssize_t hostaudio_read(struct file *file, char __user *buffer, | |||
88 | if(copy_to_user(buffer, kbuf, err)) | 91 | if(copy_to_user(buffer, kbuf, err)) |
89 | err = -EFAULT; | 92 | err = -EFAULT; |
90 | 93 | ||
91 | out: | 94 | out: |
92 | kfree(kbuf); | 95 | kfree(kbuf); |
93 | return(err); | 96 | return(err); |
94 | } | 97 | } |
@@ -96,12 +99,12 @@ static ssize_t hostaudio_read(struct file *file, char __user *buffer, | |||
96 | static ssize_t hostaudio_write(struct file *file, const char __user *buffer, | 99 | static ssize_t hostaudio_write(struct file *file, const char __user *buffer, |
97 | size_t count, loff_t *ppos) | 100 | size_t count, loff_t *ppos) |
98 | { | 101 | { |
99 | struct hostaudio_state *state = file->private_data; | 102 | struct hostaudio_state *state = file->private_data; |
100 | void *kbuf; | 103 | void *kbuf; |
101 | int err; | 104 | int err; |
102 | 105 | ||
103 | #ifdef DEBUG | 106 | #ifdef DEBUG |
104 | printk("hostaudio: write called, count = %d\n", count); | 107 | printk("hostaudio: write called, count = %d\n", count); |
105 | #endif | 108 | #endif |
106 | 109 | ||
107 | kbuf = kmalloc(count, GFP_KERNEL); | 110 | kbuf = kmalloc(count, GFP_KERNEL); |
@@ -125,24 +128,24 @@ static ssize_t hostaudio_write(struct file *file, const char __user *buffer, | |||
125 | static unsigned int hostaudio_poll(struct file *file, | 128 | static unsigned int hostaudio_poll(struct file *file, |
126 | struct poll_table_struct *wait) | 129 | struct poll_table_struct *wait) |
127 | { | 130 | { |
128 | unsigned int mask = 0; | 131 | unsigned int mask = 0; |
129 | 132 | ||
130 | #ifdef DEBUG | 133 | #ifdef DEBUG |
131 | printk("hostaudio: poll called (unimplemented)\n"); | 134 | printk("hostaudio: poll called (unimplemented)\n"); |
132 | #endif | 135 | #endif |
133 | 136 | ||
134 | return(mask); | 137 | return(mask); |
135 | } | 138 | } |
136 | 139 | ||
137 | static int hostaudio_ioctl(struct inode *inode, struct file *file, | 140 | static int hostaudio_ioctl(struct inode *inode, struct file *file, |
138 | unsigned int cmd, unsigned long arg) | 141 | unsigned int cmd, unsigned long arg) |
139 | { | 142 | { |
140 | struct hostaudio_state *state = file->private_data; | 143 | struct hostaudio_state *state = file->private_data; |
141 | unsigned long data = 0; | 144 | unsigned long data = 0; |
142 | int err; | 145 | int err; |
143 | 146 | ||
144 | #ifdef DEBUG | 147 | #ifdef DEBUG |
145 | printk("hostaudio: ioctl called, cmd = %u\n", cmd); | 148 | printk("hostaudio: ioctl called, cmd = %u\n", cmd); |
146 | #endif | 149 | #endif |
147 | switch(cmd){ | 150 | switch(cmd){ |
148 | case SNDCTL_DSP_SPEED: | 151 | case SNDCTL_DSP_SPEED: |
@@ -179,42 +182,40 @@ static int hostaudio_ioctl(struct inode *inode, struct file *file, | |||
179 | 182 | ||
180 | static int hostaudio_open(struct inode *inode, struct file *file) | 183 | static int hostaudio_open(struct inode *inode, struct file *file) |
181 | { | 184 | { |
182 | struct hostaudio_state *state; | 185 | struct hostaudio_state *state; |
183 | int r = 0, w = 0; | 186 | int r = 0, w = 0; |
184 | int ret; | 187 | int ret; |
185 | 188 | ||
186 | #ifdef DEBUG | 189 | #ifdef DEBUG |
187 | printk("hostaudio: open called (host: %s)\n", dsp); | 190 | printk("hostaudio: open called (host: %s)\n", dsp); |
188 | #endif | 191 | #endif |
189 | 192 | ||
190 | state = kmalloc(sizeof(struct hostaudio_state), GFP_KERNEL); | 193 | state = kmalloc(sizeof(struct hostaudio_state), GFP_KERNEL); |
191 | if(state == NULL) | 194 | if(state == NULL) |
192 | return(-ENOMEM); | 195 | return(-ENOMEM); |
193 | 196 | ||
194 | if(file->f_mode & FMODE_READ) r = 1; | 197 | if(file->f_mode & FMODE_READ) r = 1; |
195 | if(file->f_mode & FMODE_WRITE) w = 1; | 198 | if(file->f_mode & FMODE_WRITE) w = 1; |
196 | 199 | ||
197 | ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); | 200 | ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); |
198 | if(ret < 0){ | 201 | if(ret < 0){ |
199 | kfree(state); | 202 | kfree(state); |
200 | return(ret); | 203 | return(ret); |
201 | } | 204 | } |
202 | |||
203 | state->fd = ret; | 205 | state->fd = ret; |
204 | file->private_data = state; | 206 | file->private_data = state; |
205 | return(0); | 207 | return(0); |
206 | } | 208 | } |
207 | 209 | ||
208 | static int hostaudio_release(struct inode *inode, struct file *file) | 210 | static int hostaudio_release(struct inode *inode, struct file *file) |
209 | { | 211 | { |
210 | struct hostaudio_state *state = file->private_data; | 212 | struct hostaudio_state *state = file->private_data; |
211 | 213 | ||
212 | #ifdef DEBUG | 214 | #ifdef DEBUG |
213 | printk("hostaudio: release called\n"); | 215 | printk("hostaudio: release called\n"); |
214 | #endif | 216 | #endif |
215 | 217 | os_close_file(state->fd); | |
216 | os_close_file(state->fd); | 218 | kfree(state); |
217 | kfree(state); | ||
218 | 219 | ||
219 | return(0); | 220 | return(0); |
220 | } | 221 | } |
@@ -224,10 +225,10 @@ static int hostaudio_release(struct inode *inode, struct file *file) | |||
224 | static int hostmixer_ioctl_mixdev(struct inode *inode, struct file *file, | 225 | static int hostmixer_ioctl_mixdev(struct inode *inode, struct file *file, |
225 | unsigned int cmd, unsigned long arg) | 226 | unsigned int cmd, unsigned long arg) |
226 | { | 227 | { |
227 | struct hostmixer_state *state = file->private_data; | 228 | struct hostmixer_state *state = file->private_data; |
228 | 229 | ||
229 | #ifdef DEBUG | 230 | #ifdef DEBUG |
230 | printk("hostmixer: ioctl called\n"); | 231 | printk("hostmixer: ioctl called\n"); |
231 | #endif | 232 | #endif |
232 | 233 | ||
233 | return(os_ioctl_generic(state->fd, cmd, arg)); | 234 | return(os_ioctl_generic(state->fd, cmd, arg)); |
@@ -235,68 +236,67 @@ static int hostmixer_ioctl_mixdev(struct inode *inode, struct file *file, | |||
235 | 236 | ||
236 | static int hostmixer_open_mixdev(struct inode *inode, struct file *file) | 237 | static int hostmixer_open_mixdev(struct inode *inode, struct file *file) |
237 | { | 238 | { |
238 | struct hostmixer_state *state; | 239 | struct hostmixer_state *state; |
239 | int r = 0, w = 0; | 240 | int r = 0, w = 0; |
240 | int ret; | 241 | int ret; |
241 | 242 | ||
242 | #ifdef DEBUG | 243 | #ifdef DEBUG |
243 | printk("hostmixer: open called (host: %s)\n", mixer); | 244 | printk("hostmixer: open called (host: %s)\n", mixer); |
244 | #endif | 245 | #endif |
245 | 246 | ||
246 | state = kmalloc(sizeof(struct hostmixer_state), GFP_KERNEL); | 247 | state = kmalloc(sizeof(struct hostmixer_state), GFP_KERNEL); |
247 | if(state == NULL) return(-ENOMEM); | 248 | if(state == NULL) return(-ENOMEM); |
248 | 249 | ||
249 | if(file->f_mode & FMODE_READ) r = 1; | 250 | if(file->f_mode & FMODE_READ) r = 1; |
250 | if(file->f_mode & FMODE_WRITE) w = 1; | 251 | if(file->f_mode & FMODE_WRITE) w = 1; |
251 | 252 | ||
252 | ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); | 253 | ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); |
253 | 254 | ||
254 | if(ret < 0){ | 255 | if(ret < 0){ |
255 | printk("hostaudio_open_mixdev failed to open '%s', err = %d\n", | 256 | printk("hostaudio_open_mixdev failed to open '%s', err = %d\n", |
256 | dsp, -ret); | 257 | dsp, -ret); |
257 | kfree(state); | 258 | kfree(state); |
258 | return(ret); | 259 | return(ret); |
259 | } | 260 | } |
260 | 261 | ||
261 | file->private_data = state; | 262 | file->private_data = state; |
262 | return(0); | 263 | return(0); |
263 | } | 264 | } |
264 | 265 | ||
265 | static int hostmixer_release(struct inode *inode, struct file *file) | 266 | static int hostmixer_release(struct inode *inode, struct file *file) |
266 | { | 267 | { |
267 | struct hostmixer_state *state = file->private_data; | 268 | struct hostmixer_state *state = file->private_data; |
268 | 269 | ||
269 | #ifdef DEBUG | 270 | #ifdef DEBUG |
270 | printk("hostmixer: release called\n"); | 271 | printk("hostmixer: release called\n"); |
271 | #endif | 272 | #endif |
272 | 273 | ||
273 | os_close_file(state->fd); | 274 | os_close_file(state->fd); |
274 | kfree(state); | 275 | kfree(state); |
275 | 276 | ||
276 | return(0); | 277 | return(0); |
277 | } | 278 | } |
278 | 279 | ||
279 | |||
280 | /* kernel module operations */ | 280 | /* kernel module operations */ |
281 | 281 | ||
282 | static const struct file_operations hostaudio_fops = { | 282 | static const struct file_operations hostaudio_fops = { |
283 | .owner = THIS_MODULE, | 283 | .owner = THIS_MODULE, |
284 | .llseek = no_llseek, | 284 | .llseek = no_llseek, |
285 | .read = hostaudio_read, | 285 | .read = hostaudio_read, |
286 | .write = hostaudio_write, | 286 | .write = hostaudio_write, |
287 | .poll = hostaudio_poll, | 287 | .poll = hostaudio_poll, |
288 | .ioctl = hostaudio_ioctl, | 288 | .ioctl = hostaudio_ioctl, |
289 | .mmap = NULL, | 289 | .mmap = NULL, |
290 | .open = hostaudio_open, | 290 | .open = hostaudio_open, |
291 | .release = hostaudio_release, | 291 | .release = hostaudio_release, |
292 | }; | 292 | }; |
293 | 293 | ||
294 | static const struct file_operations hostmixer_fops = { | 294 | static const struct file_operations hostmixer_fops = { |
295 | .owner = THIS_MODULE, | 295 | .owner = THIS_MODULE, |
296 | .llseek = no_llseek, | 296 | .llseek = no_llseek, |
297 | .ioctl = hostmixer_ioctl_mixdev, | 297 | .ioctl = hostmixer_ioctl_mixdev, |
298 | .open = hostmixer_open_mixdev, | 298 | .open = hostmixer_open_mixdev, |
299 | .release = hostmixer_release, | 299 | .release = hostmixer_release, |
300 | }; | 300 | }; |
301 | 301 | ||
302 | struct { | 302 | struct { |
@@ -310,42 +310,31 @@ MODULE_LICENSE("GPL"); | |||
310 | 310 | ||
311 | static int __init hostaudio_init_module(void) | 311 | static int __init hostaudio_init_module(void) |
312 | { | 312 | { |
313 | printk(KERN_INFO "UML Audio Relay (host dsp = %s, host mixer = %s)\n", | 313 | printk(KERN_INFO "UML Audio Relay (host dsp = %s, host mixer = %s)\n", |
314 | dsp, mixer); | 314 | dsp, mixer); |
315 | 315 | ||
316 | module_data.dev_audio = register_sound_dsp(&hostaudio_fops, -1); | 316 | module_data.dev_audio = register_sound_dsp(&hostaudio_fops, -1); |
317 | if(module_data.dev_audio < 0){ | 317 | if(module_data.dev_audio < 0){ |
318 | printk(KERN_ERR "hostaudio: couldn't register DSP device!\n"); | 318 | printk(KERN_ERR "hostaudio: couldn't register DSP device!\n"); |
319 | return -ENODEV; | 319 | return -ENODEV; |
320 | } | 320 | } |
321 | 321 | ||
322 | module_data.dev_mixer = register_sound_mixer(&hostmixer_fops, -1); | 322 | module_data.dev_mixer = register_sound_mixer(&hostmixer_fops, -1); |
323 | if(module_data.dev_mixer < 0){ | 323 | if(module_data.dev_mixer < 0){ |
324 | printk(KERN_ERR "hostmixer: couldn't register mixer " | 324 | printk(KERN_ERR "hostmixer: couldn't register mixer " |
325 | "device!\n"); | 325 | "device!\n"); |
326 | unregister_sound_dsp(module_data.dev_audio); | 326 | unregister_sound_dsp(module_data.dev_audio); |
327 | return -ENODEV; | 327 | return -ENODEV; |
328 | } | 328 | } |
329 | 329 | ||
330 | return 0; | 330 | return 0; |
331 | } | 331 | } |
332 | 332 | ||
333 | static void __exit hostaudio_cleanup_module (void) | 333 | static void __exit hostaudio_cleanup_module (void) |
334 | { | 334 | { |
335 | unregister_sound_mixer(module_data.dev_mixer); | 335 | unregister_sound_mixer(module_data.dev_mixer); |
336 | unregister_sound_dsp(module_data.dev_audio); | 336 | unregister_sound_dsp(module_data.dev_audio); |
337 | } | 337 | } |
338 | 338 | ||
339 | module_init(hostaudio_init_module); | 339 | module_init(hostaudio_init_module); |
340 | module_exit(hostaudio_cleanup_module); | 340 | module_exit(hostaudio_cleanup_module); |
341 | |||
342 | /* | ||
343 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
344 | * Emacs will notice this stuff at the end of the file and automatically | ||
345 | * adjust the settings for this buffer only. This must remain at the end | ||
346 | * of the file. | ||
347 | * --------------------------------------------------------------------------- | ||
348 | * Local variables: | ||
349 | * c-file-style: "linux" | ||
350 | * End: | ||
351 | */ | ||
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c index 83301e1ef67c..01d4ab6b0ef1 100644 --- a/arch/um/drivers/line.c +++ b/arch/um/drivers/line.c | |||
@@ -191,7 +191,6 @@ void line_flush_buffer(struct tty_struct *tty) | |||
191 | /*XXX: copied from line_write, verify if it is correct!*/ | 191 | /*XXX: copied from line_write, verify if it is correct!*/ |
192 | if(tty->stopped) | 192 | if(tty->stopped) |
193 | return; | 193 | return; |
194 | //return 0; | ||
195 | 194 | ||
196 | spin_lock_irqsave(&line->lock, flags); | 195 | spin_lock_irqsave(&line->lock, flags); |
197 | err = flush_buffer(line); | 196 | err = flush_buffer(line); |
@@ -421,42 +420,55 @@ int line_setup_irq(int fd, int input, int output, struct line *line, void *data) | |||
421 | return err; | 420 | return err; |
422 | } | 421 | } |
423 | 422 | ||
423 | /* Normally, a driver like this can rely mostly on the tty layer | ||
424 | * locking, particularly when it comes to the driver structure. | ||
425 | * However, in this case, mconsole requests can come in "from the | ||
426 | * side", and race with opens and closes. | ||
427 | * | ||
428 | * mconsole config requests will want to be sure the device isn't in | ||
429 | * use, and get_config, open, and close will want a stable | ||
430 | * configuration. The checking and modification of the configuration | ||
431 | * is done under a spinlock. Checking whether the device is in use is | ||
432 | * line->tty->count > 1, also under the spinlock. | ||
433 | * | ||
434 | * tty->count serves to decide whether the device should be enabled or | ||
435 | * disabled on the host. If it's equal to 1, then we are doing the | ||
436 | * first open or last close. Otherwise, open and close just return. | ||
437 | */ | ||
438 | |||
424 | int line_open(struct line *lines, struct tty_struct *tty) | 439 | int line_open(struct line *lines, struct tty_struct *tty) |
425 | { | 440 | { |
426 | struct line *line; | 441 | struct line *line = &lines[tty->index]; |
427 | int err = -ENODEV; | 442 | int err = -ENODEV; |
428 | 443 | ||
429 | line = &lines[tty->index]; | 444 | spin_lock(&line->count_lock); |
430 | tty->driver_data = line; | 445 | if(!line->valid) |
446 | goto out_unlock; | ||
431 | 447 | ||
432 | /* The IRQ which takes this lock is not yet enabled and won't be run | 448 | err = 0; |
433 | * before the end, so we don't need to use spin_lock_irq.*/ | 449 | if(tty->count > 1) |
434 | spin_lock(&line->lock); | 450 | goto out_unlock; |
451 | |||
452 | spin_unlock(&line->count_lock); | ||
435 | 453 | ||
436 | tty->driver_data = line; | 454 | tty->driver_data = line; |
437 | line->tty = tty; | 455 | line->tty = tty; |
438 | if(!line->valid) | ||
439 | goto out; | ||
440 | 456 | ||
441 | if(tty->count == 1){ | 457 | enable_chan(line); |
442 | /* Here the device is opened, if necessary, and interrupt | 458 | INIT_DELAYED_WORK(&line->task, line_timer_cb); |
443 | * is registered. | ||
444 | */ | ||
445 | enable_chan(line); | ||
446 | INIT_DELAYED_WORK(&line->task, line_timer_cb); | ||
447 | 459 | ||
448 | if(!line->sigio){ | 460 | if(!line->sigio){ |
449 | chan_enable_winch(&line->chan_list, tty); | 461 | chan_enable_winch(&line->chan_list, tty); |
450 | line->sigio = 1; | 462 | line->sigio = 1; |
451 | } | ||
452 | |||
453 | chan_window_size(&line->chan_list, &tty->winsize.ws_row, | ||
454 | &tty->winsize.ws_col); | ||
455 | } | 463 | } |
456 | 464 | ||
457 | err = 0; | 465 | chan_window_size(&line->chan_list, &tty->winsize.ws_row, |
458 | out: | 466 | &tty->winsize.ws_col); |
459 | spin_unlock(&line->lock); | 467 | |
468 | return err; | ||
469 | |||
470 | out_unlock: | ||
471 | spin_unlock(&line->count_lock); | ||
460 | return err; | 472 | return err; |
461 | } | 473 | } |
462 | 474 | ||
@@ -466,25 +478,36 @@ void line_close(struct tty_struct *tty, struct file * filp) | |||
466 | { | 478 | { |
467 | struct line *line = tty->driver_data; | 479 | struct line *line = tty->driver_data; |
468 | 480 | ||
469 | /* XXX: I assume this should be called in process context, not with | 481 | /* If line_open fails (and tty->driver_data is never set), |
470 | * interrupts disabled! | 482 | * tty_open will call line_close. So just return in this case. |
471 | */ | 483 | */ |
472 | spin_lock_irq(&line->lock); | 484 | if(line == NULL) |
485 | return; | ||
473 | 486 | ||
474 | /* We ignore the error anyway! */ | 487 | /* We ignore the error anyway! */ |
475 | flush_buffer(line); | 488 | flush_buffer(line); |
476 | 489 | ||
477 | if(tty->count == 1){ | 490 | spin_lock(&line->count_lock); |
478 | line->tty = NULL; | 491 | if(!line->valid) |
479 | tty->driver_data = NULL; | 492 | goto out_unlock; |
480 | 493 | ||
481 | if(line->sigio){ | 494 | if(tty->count > 1) |
482 | unregister_winch(tty); | 495 | goto out_unlock; |
483 | line->sigio = 0; | 496 | |
484 | } | 497 | spin_unlock(&line->count_lock); |
498 | |||
499 | line->tty = NULL; | ||
500 | tty->driver_data = NULL; | ||
501 | |||
502 | if(line->sigio){ | ||
503 | unregister_winch(tty); | ||
504 | line->sigio = 0; | ||
485 | } | 505 | } |
486 | 506 | ||
487 | spin_unlock_irq(&line->lock); | 507 | return; |
508 | |||
509 | out_unlock: | ||
510 | spin_unlock(&line->count_lock); | ||
488 | } | 511 | } |
489 | 512 | ||
490 | void close_lines(struct line *lines, int nlines) | 513 | void close_lines(struct line *lines, int nlines) |
@@ -495,14 +518,44 @@ void close_lines(struct line *lines, int nlines) | |||
495 | close_chan(&lines[i].chan_list, 0); | 518 | close_chan(&lines[i].chan_list, 0); |
496 | } | 519 | } |
497 | 520 | ||
521 | static int setup_one_line(struct line *lines, int n, char *init, int init_prio, | ||
522 | char **error_out) | ||
523 | { | ||
524 | struct line *line = &lines[n]; | ||
525 | int err = -EINVAL; | ||
526 | |||
527 | spin_lock(&line->count_lock); | ||
528 | |||
529 | if(line->tty != NULL){ | ||
530 | *error_out = "Device is already open"; | ||
531 | goto out; | ||
532 | } | ||
533 | |||
534 | if (line->init_pri <= init_prio){ | ||
535 | line->init_pri = init_prio; | ||
536 | if (!strcmp(init, "none")) | ||
537 | line->valid = 0; | ||
538 | else { | ||
539 | line->init_str = init; | ||
540 | line->valid = 1; | ||
541 | } | ||
542 | } | ||
543 | err = 0; | ||
544 | out: | ||
545 | spin_unlock(&line->count_lock); | ||
546 | return err; | ||
547 | } | ||
548 | |||
498 | /* Common setup code for both startup command line and mconsole initialization. | 549 | /* Common setup code for both startup command line and mconsole initialization. |
499 | * @lines contains the array (of size @num) to modify; | 550 | * @lines contains the array (of size @num) to modify; |
500 | * @init is the setup string; | 551 | * @init is the setup string; |
552 | * @error_out is an error string in the case of failure; | ||
501 | */ | 553 | */ |
502 | 554 | ||
503 | int line_setup(struct line *lines, unsigned int num, char *init) | 555 | int line_setup(struct line *lines, unsigned int num, char *init, |
556 | char **error_out) | ||
504 | { | 557 | { |
505 | int i, n; | 558 | int i, n, err; |
506 | char *end; | 559 | char *end; |
507 | 560 | ||
508 | if(*init == '=') { | 561 | if(*init == '=') { |
@@ -513,73 +566,56 @@ int line_setup(struct line *lines, unsigned int num, char *init) | |||
513 | else { | 566 | else { |
514 | n = simple_strtoul(init, &end, 0); | 567 | n = simple_strtoul(init, &end, 0); |
515 | if(*end != '='){ | 568 | if(*end != '='){ |
516 | printk(KERN_ERR "line_setup failed to parse \"%s\"\n", | 569 | *error_out = "Couldn't parse device number"; |
517 | init); | 570 | return -EINVAL; |
518 | return 0; | ||
519 | } | 571 | } |
520 | init = end; | 572 | init = end; |
521 | } | 573 | } |
522 | init++; | 574 | init++; |
523 | 575 | ||
524 | if (n >= (signed int) num) { | 576 | if (n >= (signed int) num) { |
525 | printk("line_setup - %d out of range ((0 ... %d) allowed)\n", | 577 | *error_out = "Device number out of range"; |
526 | n, num - 1); | 578 | return -EINVAL; |
527 | return 0; | ||
528 | } | 579 | } |
529 | else if (n >= 0){ | 580 | else if (n >= 0){ |
530 | if (lines[n].tty != NULL) { | 581 | err = setup_one_line(lines, n, init, INIT_ONE, error_out); |
531 | printk("line_setup - device %d is open\n", n); | 582 | if(err) |
532 | return 0; | 583 | return err; |
533 | } | ||
534 | if (lines[n].init_pri <= INIT_ONE){ | ||
535 | lines[n].init_pri = INIT_ONE; | ||
536 | if (!strcmp(init, "none")) | ||
537 | lines[n].valid = 0; | ||
538 | else { | ||
539 | lines[n].init_str = init; | ||
540 | lines[n].valid = 1; | ||
541 | } | ||
542 | } | ||
543 | } | 584 | } |
544 | else { | 585 | else { |
545 | for(i = 0; i < num; i++){ | 586 | for(i = 0; i < num; i++){ |
546 | if(lines[i].init_pri <= INIT_ALL){ | 587 | err = setup_one_line(lines, i, init, INIT_ALL, |
547 | lines[i].init_pri = INIT_ALL; | 588 | error_out); |
548 | if(!strcmp(init, "none")) lines[i].valid = 0; | 589 | if(err) |
549 | else { | 590 | return err; |
550 | lines[i].init_str = init; | ||
551 | lines[i].valid = 1; | ||
552 | } | ||
553 | } | ||
554 | } | 591 | } |
555 | } | 592 | } |
556 | return n == -1 ? num : n; | 593 | return n == -1 ? num : n; |
557 | } | 594 | } |
558 | 595 | ||
559 | int line_config(struct line *lines, unsigned int num, char *str, | 596 | int line_config(struct line *lines, unsigned int num, char *str, |
560 | const struct chan_opts *opts) | 597 | const struct chan_opts *opts, char **error_out) |
561 | { | 598 | { |
562 | struct line *line; | 599 | struct line *line; |
563 | char *new; | 600 | char *new; |
564 | int n; | 601 | int n; |
565 | 602 | ||
566 | if(*str == '='){ | 603 | if(*str == '='){ |
567 | printk("line_config - can't configure all devices from " | 604 | *error_out = "Can't configure all devices from mconsole"; |
568 | "mconsole\n"); | 605 | return -EINVAL; |
569 | return 1; | ||
570 | } | 606 | } |
571 | 607 | ||
572 | new = kstrdup(str, GFP_KERNEL); | 608 | new = kstrdup(str, GFP_KERNEL); |
573 | if(new == NULL){ | 609 | if(new == NULL){ |
574 | printk("line_config - kstrdup failed\n"); | 610 | *error_out = "Failed to allocate memory"; |
575 | return 1; | 611 | return -ENOMEM; |
576 | } | 612 | } |
577 | n = line_setup(lines, num, new); | 613 | n = line_setup(lines, num, new, error_out); |
578 | if(n < 0) | 614 | if(n < 0) |
579 | return 1; | 615 | return n; |
580 | 616 | ||
581 | line = &lines[n]; | 617 | line = &lines[n]; |
582 | return parse_chan_pair(line->init_str, line, n, opts); | 618 | return parse_chan_pair(line->init_str, line, n, opts, error_out); |
583 | } | 619 | } |
584 | 620 | ||
585 | int line_get_config(char *name, struct line *lines, unsigned int num, char *str, | 621 | int line_get_config(char *name, struct line *lines, unsigned int num, char *str, |
@@ -602,13 +638,13 @@ int line_get_config(char *name, struct line *lines, unsigned int num, char *str, | |||
602 | 638 | ||
603 | line = &lines[dev]; | 639 | line = &lines[dev]; |
604 | 640 | ||
605 | spin_lock(&line->lock); | 641 | spin_lock(&line->count_lock); |
606 | if(!line->valid) | 642 | if(!line->valid) |
607 | CONFIG_CHUNK(str, size, n, "none", 1); | 643 | CONFIG_CHUNK(str, size, n, "none", 1); |
608 | else if(line->tty == NULL) | 644 | else if(line->tty == NULL) |
609 | CONFIG_CHUNK(str, size, n, line->init_str, 1); | 645 | CONFIG_CHUNK(str, size, n, line->init_str, 1); |
610 | else n = chan_config_string(&line->chan_list, str, size, error_out); | 646 | else n = chan_config_string(&line->chan_list, str, size, error_out); |
611 | spin_unlock(&line->lock); | 647 | spin_unlock(&line->count_lock); |
612 | 648 | ||
613 | return n; | 649 | return n; |
614 | } | 650 | } |
@@ -628,22 +664,21 @@ int line_id(char **str, int *start_out, int *end_out) | |||
628 | return n; | 664 | return n; |
629 | } | 665 | } |
630 | 666 | ||
631 | int line_remove(struct line *lines, unsigned int num, int n) | 667 | int line_remove(struct line *lines, unsigned int num, int n, char **error_out) |
632 | { | 668 | { |
633 | int err; | 669 | int err; |
634 | char config[sizeof("conxxxx=none\0")]; | 670 | char config[sizeof("conxxxx=none\0")]; |
635 | 671 | ||
636 | sprintf(config, "%d=none", n); | 672 | sprintf(config, "%d=none", n); |
637 | err = line_setup(lines, num, config); | 673 | err = line_setup(lines, num, config, error_out); |
638 | if(err >= 0) | 674 | if(err >= 0) |
639 | err = 0; | 675 | err = 0; |
640 | return err; | 676 | return err; |
641 | } | 677 | } |
642 | 678 | ||
643 | struct tty_driver *line_register_devfs(struct lines *set, | 679 | struct tty_driver *register_lines(struct line_driver *line_driver, |
644 | struct line_driver *line_driver, | 680 | const struct tty_operations *ops, |
645 | const struct tty_operations *ops, | 681 | struct line *lines, int nlines) |
646 | struct line *lines, int nlines) | ||
647 | { | 682 | { |
648 | int i; | 683 | int i; |
649 | struct tty_driver *driver = alloc_tty_driver(nlines); | 684 | struct tty_driver *driver = alloc_tty_driver(nlines); |
@@ -683,6 +718,7 @@ static LIST_HEAD(winch_handlers); | |||
683 | void lines_init(struct line *lines, int nlines, struct chan_opts *opts) | 718 | void lines_init(struct line *lines, int nlines, struct chan_opts *opts) |
684 | { | 719 | { |
685 | struct line *line; | 720 | struct line *line; |
721 | char *error; | ||
686 | int i; | 722 | int i; |
687 | 723 | ||
688 | for(i = 0; i < nlines; i++){ | 724 | for(i = 0; i < nlines; i++){ |
@@ -696,8 +732,9 @@ void lines_init(struct line *lines, int nlines, struct chan_opts *opts) | |||
696 | if(line->init_str == NULL) | 732 | if(line->init_str == NULL) |
697 | printk("lines_init - kstrdup returned NULL\n"); | 733 | printk("lines_init - kstrdup returned NULL\n"); |
698 | 734 | ||
699 | if(parse_chan_pair(line->init_str, line, i, opts)){ | 735 | if(parse_chan_pair(line->init_str, line, i, opts, &error)){ |
700 | printk("parse_chan_pair failed for device %d\n", i); | 736 | printk("parse_chan_pair failed for device %d : %s\n", |
737 | i, error); | ||
701 | line->valid = 0; | 738 | line->valid = 0; |
702 | } | 739 | } |
703 | } | 740 | } |
@@ -737,7 +774,7 @@ static irqreturn_t winch_interrupt(int irq, void *data) | |||
737 | line = tty->driver_data; | 774 | line = tty->driver_data; |
738 | chan_window_size(&line->chan_list, &tty->winsize.ws_row, | 775 | chan_window_size(&line->chan_list, &tty->winsize.ws_row, |
739 | &tty->winsize.ws_col); | 776 | &tty->winsize.ws_col); |
740 | kill_pg(tty->pgrp, SIGWINCH, 1); | 777 | kill_pgrp(tty->pgrp, SIGWINCH, 1); |
741 | } | 778 | } |
742 | out: | 779 | out: |
743 | if(winch->fd != -1) | 780 | if(winch->fd != -1) |
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c index 96f0189327af..178b2eff4a8c 100644 --- a/arch/um/drivers/mconsole_kern.c +++ b/arch/um/drivers/mconsole_kern.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include "irq_user.h" | 33 | #include "irq_user.h" |
34 | #include "init.h" | 34 | #include "init.h" |
35 | #include "os.h" | 35 | #include "os.h" |
36 | #include "umid.h" | ||
37 | #include "irq_kern.h" | 36 | #include "irq_kern.h" |
38 | #include "choose-mode.h" | 37 | #include "choose-mode.h" |
39 | 38 | ||
@@ -337,13 +336,15 @@ void mconsole_stop(struct mc_request *req) | |||
337 | mconsole_reply(req, "", 0, 0); | 336 | mconsole_reply(req, "", 0, 0); |
338 | } | 337 | } |
339 | 338 | ||
340 | /* This list is populated by __initcall routines. */ | 339 | static DEFINE_SPINLOCK(mc_devices_lock); |
341 | |||
342 | static LIST_HEAD(mconsole_devices); | 340 | static LIST_HEAD(mconsole_devices); |
343 | 341 | ||
344 | void mconsole_register_dev(struct mc_device *new) | 342 | void mconsole_register_dev(struct mc_device *new) |
345 | { | 343 | { |
344 | spin_lock(&mc_devices_lock); | ||
345 | BUG_ON(!list_empty(&new->list)); | ||
346 | list_add(&new->list, &mconsole_devices); | 346 | list_add(&new->list, &mconsole_devices); |
347 | spin_unlock(&mc_devices_lock); | ||
347 | } | 348 | } |
348 | 349 | ||
349 | static struct mc_device *mconsole_find_dev(char *name) | 350 | static struct mc_device *mconsole_find_dev(char *name) |
@@ -367,18 +368,21 @@ struct unplugged_pages { | |||
367 | void *pages[UNPLUGGED_PER_PAGE]; | 368 | void *pages[UNPLUGGED_PER_PAGE]; |
368 | }; | 369 | }; |
369 | 370 | ||
371 | static DECLARE_MUTEX(plug_mem_mutex); | ||
370 | static unsigned long long unplugged_pages_count = 0; | 372 | static unsigned long long unplugged_pages_count = 0; |
371 | static struct list_head unplugged_pages = LIST_HEAD_INIT(unplugged_pages); | 373 | static LIST_HEAD(unplugged_pages); |
372 | static int unplug_index = UNPLUGGED_PER_PAGE; | 374 | static int unplug_index = UNPLUGGED_PER_PAGE; |
373 | 375 | ||
374 | static int mem_config(char *str) | 376 | static int mem_config(char *str, char **error_out) |
375 | { | 377 | { |
376 | unsigned long long diff; | 378 | unsigned long long diff; |
377 | int err = -EINVAL, i, add; | 379 | int err = -EINVAL, i, add; |
378 | char *ret; | 380 | char *ret; |
379 | 381 | ||
380 | if(str[0] != '=') | 382 | if(str[0] != '='){ |
383 | *error_out = "Expected '=' after 'mem'"; | ||
381 | goto out; | 384 | goto out; |
385 | } | ||
382 | 386 | ||
383 | str++; | 387 | str++; |
384 | if(str[0] == '-') | 388 | if(str[0] == '-') |
@@ -386,15 +390,21 @@ static int mem_config(char *str) | |||
386 | else if(str[0] == '+'){ | 390 | else if(str[0] == '+'){ |
387 | add = 1; | 391 | add = 1; |
388 | } | 392 | } |
389 | else goto out; | 393 | else { |
394 | *error_out = "Expected increment to start with '-' or '+'"; | ||
395 | goto out; | ||
396 | } | ||
390 | 397 | ||
391 | str++; | 398 | str++; |
392 | diff = memparse(str, &ret); | 399 | diff = memparse(str, &ret); |
393 | if(*ret != '\0') | 400 | if(*ret != '\0'){ |
401 | *error_out = "Failed to parse memory increment"; | ||
394 | goto out; | 402 | goto out; |
403 | } | ||
395 | 404 | ||
396 | diff /= PAGE_SIZE; | 405 | diff /= PAGE_SIZE; |
397 | 406 | ||
407 | down(&plug_mem_mutex); | ||
398 | for(i = 0; i < diff; i++){ | 408 | for(i = 0; i < diff; i++){ |
399 | struct unplugged_pages *unplugged; | 409 | struct unplugged_pages *unplugged; |
400 | void *addr; | 410 | void *addr; |
@@ -435,11 +445,14 @@ static int mem_config(char *str) | |||
435 | unplugged = list_entry(entry, | 445 | unplugged = list_entry(entry, |
436 | struct unplugged_pages, | 446 | struct unplugged_pages, |
437 | list); | 447 | list); |
438 | unplugged->pages[unplug_index++] = addr; | ||
439 | err = os_drop_memory(addr, PAGE_SIZE); | 448 | err = os_drop_memory(addr, PAGE_SIZE); |
440 | if(err) | 449 | if(err){ |
441 | printk("Failed to release memory - " | 450 | printk("Failed to release memory - " |
442 | "errno = %d\n", err); | 451 | "errno = %d\n", err); |
452 | *error_out = "Failed to release memory"; | ||
453 | goto out_unlock; | ||
454 | } | ||
455 | unplugged->pages[unplug_index++] = addr; | ||
443 | } | 456 | } |
444 | 457 | ||
445 | unplugged_pages_count++; | 458 | unplugged_pages_count++; |
@@ -447,6 +460,8 @@ static int mem_config(char *str) | |||
447 | } | 460 | } |
448 | 461 | ||
449 | err = 0; | 462 | err = 0; |
463 | out_unlock: | ||
464 | up(&plug_mem_mutex); | ||
450 | out: | 465 | out: |
451 | return err; | 466 | return err; |
452 | } | 467 | } |
@@ -470,12 +485,14 @@ static int mem_id(char **str, int *start_out, int *end_out) | |||
470 | return 0; | 485 | return 0; |
471 | } | 486 | } |
472 | 487 | ||
473 | static int mem_remove(int n) | 488 | static int mem_remove(int n, char **error_out) |
474 | { | 489 | { |
490 | *error_out = "Memory doesn't support the remove operation"; | ||
475 | return -EBUSY; | 491 | return -EBUSY; |
476 | } | 492 | } |
477 | 493 | ||
478 | static struct mc_device mem_mc = { | 494 | static struct mc_device mem_mc = { |
495 | .list = LIST_HEAD_INIT(mem_mc.list), | ||
479 | .name = "mem", | 496 | .name = "mem", |
480 | .config = mem_config, | 497 | .config = mem_config, |
481 | .get_config = mem_get_config, | 498 | .get_config = mem_get_config, |
@@ -542,7 +559,7 @@ static void mconsole_get_config(int (*get_config)(char *, char *, int, | |||
542 | void mconsole_config(struct mc_request *req) | 559 | void mconsole_config(struct mc_request *req) |
543 | { | 560 | { |
544 | struct mc_device *dev; | 561 | struct mc_device *dev; |
545 | char *ptr = req->request.data, *name; | 562 | char *ptr = req->request.data, *name, *error_string = ""; |
546 | int err; | 563 | int err; |
547 | 564 | ||
548 | ptr += strlen("config"); | 565 | ptr += strlen("config"); |
@@ -559,8 +576,8 @@ void mconsole_config(struct mc_request *req) | |||
559 | ptr++; | 576 | ptr++; |
560 | 577 | ||
561 | if(*ptr == '='){ | 578 | if(*ptr == '='){ |
562 | err = (*dev->config)(name); | 579 | err = (*dev->config)(name, &error_string); |
563 | mconsole_reply(req, "", err, 0); | 580 | mconsole_reply(req, error_string, err, 0); |
564 | } | 581 | } |
565 | else mconsole_get_config(dev->get_config, req, name); | 582 | else mconsole_get_config(dev->get_config, req, name); |
566 | } | 583 | } |
@@ -595,13 +612,16 @@ void mconsole_remove(struct mc_request *req) | |||
595 | goto out; | 612 | goto out; |
596 | } | 613 | } |
597 | 614 | ||
598 | err = (*dev->remove)(n); | 615 | err_msg = NULL; |
616 | err = (*dev->remove)(n, &err_msg); | ||
599 | switch(err){ | 617 | switch(err){ |
600 | case -ENODEV: | 618 | case -ENODEV: |
601 | err_msg = "Device doesn't exist"; | 619 | if(err_msg == NULL) |
620 | err_msg = "Device doesn't exist"; | ||
602 | break; | 621 | break; |
603 | case -EBUSY: | 622 | case -EBUSY: |
604 | err_msg = "Device is currently open"; | 623 | if(err_msg == NULL) |
624 | err_msg = "Device is currently open"; | ||
605 | break; | 625 | break; |
606 | default: | 626 | default: |
607 | break; | 627 | break; |
@@ -615,7 +635,7 @@ struct mconsole_output { | |||
615 | struct mc_request *req; | 635 | struct mc_request *req; |
616 | }; | 636 | }; |
617 | 637 | ||
618 | static DEFINE_SPINLOCK(console_lock); | 638 | static DEFINE_SPINLOCK(client_lock); |
619 | static LIST_HEAD(clients); | 639 | static LIST_HEAD(clients); |
620 | static char console_buf[MCONSOLE_MAX_DATA]; | 640 | static char console_buf[MCONSOLE_MAX_DATA]; |
621 | static int console_index = 0; | 641 | static int console_index = 0; |
@@ -670,16 +690,18 @@ static void with_console(struct mc_request *req, void (*proc)(void *), | |||
670 | unsigned long flags; | 690 | unsigned long flags; |
671 | 691 | ||
672 | entry.req = req; | 692 | entry.req = req; |
693 | spin_lock_irqsave(&client_lock, flags); | ||
673 | list_add(&entry.list, &clients); | 694 | list_add(&entry.list, &clients); |
674 | spin_lock_irqsave(&console_lock, flags); | 695 | spin_unlock_irqrestore(&client_lock, flags); |
675 | 696 | ||
676 | (*proc)(arg); | 697 | (*proc)(arg); |
677 | 698 | ||
678 | mconsole_reply_len(req, console_buf, console_index, 0, 0); | 699 | mconsole_reply_len(req, console_buf, console_index, 0, 0); |
679 | console_index = 0; | 700 | console_index = 0; |
680 | 701 | ||
681 | spin_unlock_irqrestore(&console_lock, flags); | 702 | spin_lock_irqsave(&client_lock, flags); |
682 | list_del(&entry.list); | 703 | list_del(&entry.list); |
704 | spin_unlock_irqrestore(&client_lock, flags); | ||
683 | } | 705 | } |
684 | 706 | ||
685 | #ifdef CONFIG_MAGIC_SYSRQ | 707 | #ifdef CONFIG_MAGIC_SYSRQ |
diff --git a/arch/um/drivers/mconsole_user.c b/arch/um/drivers/mconsole_user.c index 75aef6f7ef6e..f02634fbf32a 100644 --- a/arch/um/drivers/mconsole_user.c +++ b/arch/um/drivers/mconsole_user.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include "user.h" | 16 | #include "user.h" |
17 | #include "sysdep/ptrace.h" | 17 | #include "sysdep/ptrace.h" |
18 | #include "mconsole.h" | 18 | #include "mconsole.h" |
19 | #include "umid.h" | 19 | #include "os.h" |
20 | #include "user_util.h" | 20 | #include "user_util.h" |
21 | 21 | ||
22 | static struct mconsole_command commands[] = { | 22 | static struct mconsole_command commands[] = { |
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c index afe3d427ddfa..04e31f86c10a 100644 --- a/arch/um/drivers/net_kern.c +++ b/arch/um/drivers/net_kern.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and | 2 | * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and |
3 | * James Leu (jleu@mindspring.net). | 3 | * James Leu (jleu@mindspring.net). |
4 | * Copyright (C) 2001 by various other people who didn't put their name here. | 4 | * Copyright (C) 2001 by various other people who didn't put their name here. |
5 | * Licensed under the GPL. | 5 | * Licensed under the GPL. |
@@ -91,8 +91,8 @@ irqreturn_t uml_net_interrupt(int irq, void *dev_id) | |||
91 | spin_lock(&lp->lock); | 91 | spin_lock(&lp->lock); |
92 | while((err = uml_net_rx(dev)) > 0) ; | 92 | while((err = uml_net_rx(dev)) > 0) ; |
93 | if(err < 0) { | 93 | if(err < 0) { |
94 | printk(KERN_ERR | 94 | printk(KERN_ERR |
95 | "Device '%s' read returned %d, shutting it down\n", | 95 | "Device '%s' read returned %d, shutting it down\n", |
96 | dev->name, err); | 96 | dev->name, err); |
97 | /* dev_close can't be called in interrupt context, and takes | 97 | /* dev_close can't be called in interrupt context, and takes |
98 | * again lp->lock. | 98 | * again lp->lock. |
@@ -108,7 +108,7 @@ irqreturn_t uml_net_interrupt(int irq, void *dev_id) | |||
108 | 108 | ||
109 | out: | 109 | out: |
110 | spin_unlock(&lp->lock); | 110 | spin_unlock(&lp->lock); |
111 | return(IRQ_HANDLED); | 111 | return IRQ_HANDLED; |
112 | } | 112 | } |
113 | 113 | ||
114 | static int uml_net_open(struct net_device *dev) | 114 | static int uml_net_open(struct net_device *dev) |
@@ -159,7 +159,7 @@ out: | |||
159 | static int uml_net_close(struct net_device *dev) | 159 | static int uml_net_close(struct net_device *dev) |
160 | { | 160 | { |
161 | struct uml_net_private *lp = dev->priv; | 161 | struct uml_net_private *lp = dev->priv; |
162 | 162 | ||
163 | netif_stop_queue(dev); | 163 | netif_stop_queue(dev); |
164 | 164 | ||
165 | free_irq(dev->irq, dev); | 165 | free_irq(dev->irq, dev); |
@@ -194,7 +194,7 @@ static int uml_net_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
194 | 194 | ||
195 | /* this is normally done in the interrupt when tx finishes */ | 195 | /* this is normally done in the interrupt when tx finishes */ |
196 | netif_wake_queue(dev); | 196 | netif_wake_queue(dev); |
197 | } | 197 | } |
198 | else if(len == 0){ | 198 | else if(len == 0){ |
199 | netif_start_queue(dev); | 199 | netif_start_queue(dev); |
200 | lp->stats.tx_dropped++; | 200 | lp->stats.tx_dropped++; |
@@ -239,7 +239,7 @@ static int uml_net_set_mac(struct net_device *dev, void *addr) | |||
239 | set_ether_mac(dev, hwaddr->sa_data); | 239 | set_ether_mac(dev, hwaddr->sa_data); |
240 | spin_unlock_irq(&lp->lock); | 240 | spin_unlock_irq(&lp->lock); |
241 | 241 | ||
242 | return(0); | 242 | return 0; |
243 | } | 243 | } |
244 | 244 | ||
245 | static int uml_net_change_mtu(struct net_device *dev, int new_mtu) | 245 | static int uml_net_change_mtu(struct net_device *dev, int new_mtu) |
@@ -333,7 +333,7 @@ static int eth_configure(int n, void *init, char *mac, | |||
333 | struct uml_net_private *lp; | 333 | struct uml_net_private *lp; |
334 | int save, err, size; | 334 | int save, err, size; |
335 | 335 | ||
336 | size = transport->private_size + sizeof(struct uml_net_private) + | 336 | size = transport->private_size + sizeof(struct uml_net_private) + |
337 | sizeof(((struct uml_net_private *) 0)->user); | 337 | sizeof(((struct uml_net_private *) 0)->user); |
338 | 338 | ||
339 | device = kzalloc(sizeof(*device), GFP_KERNEL); | 339 | device = kzalloc(sizeof(*device), GFP_KERNEL); |
@@ -438,7 +438,7 @@ static int eth_configure(int n, void *init, char *mac, | |||
438 | lp->tl.function = uml_net_user_timer_expire; | 438 | lp->tl.function = uml_net_user_timer_expire; |
439 | memcpy(lp->mac, device->mac, sizeof(lp->mac)); | 439 | memcpy(lp->mac, device->mac, sizeof(lp->mac)); |
440 | 440 | ||
441 | if (transport->user->init) | 441 | if (transport->user->init) |
442 | (*transport->user->init)(&lp->user, dev); | 442 | (*transport->user->init)(&lp->user, dev); |
443 | 443 | ||
444 | set_ether_mac(dev, device->mac); | 444 | set_ether_mac(dev, device->mac); |
@@ -460,38 +460,36 @@ static struct uml_net *find_device(int n) | |||
460 | device = NULL; | 460 | device = NULL; |
461 | out: | 461 | out: |
462 | spin_unlock(&devices_lock); | 462 | spin_unlock(&devices_lock); |
463 | return(device); | 463 | return device; |
464 | } | 464 | } |
465 | 465 | ||
466 | static int eth_parse(char *str, int *index_out, char **str_out) | 466 | static int eth_parse(char *str, int *index_out, char **str_out, |
467 | char **error_out) | ||
467 | { | 468 | { |
468 | char *end; | 469 | char *end; |
469 | int n; | 470 | int n, err = -EINVAL;; |
470 | 471 | ||
471 | n = simple_strtoul(str, &end, 0); | 472 | n = simple_strtoul(str, &end, 0); |
472 | if(end == str){ | 473 | if(end == str){ |
473 | printk(KERN_ERR "eth_setup: Failed to parse '%s'\n", str); | 474 | *error_out = "Bad device number"; |
474 | return(1); | 475 | return err; |
475 | } | ||
476 | if(n < 0){ | ||
477 | printk(KERN_ERR "eth_setup: device %d is negative\n", n); | ||
478 | return(1); | ||
479 | } | 476 | } |
477 | |||
480 | str = end; | 478 | str = end; |
481 | if(*str != '='){ | 479 | if(*str != '='){ |
482 | printk(KERN_ERR | 480 | *error_out = "Expected '=' after device number"; |
483 | "eth_setup: expected '=' after device number\n"); | 481 | return err; |
484 | return(1); | ||
485 | } | 482 | } |
483 | |||
486 | str++; | 484 | str++; |
487 | if(find_device(n)){ | 485 | if(find_device(n)){ |
488 | printk(KERN_ERR "eth_setup: Device %d already configured\n", | 486 | *error_out = "Device already configured"; |
489 | n); | 487 | return err; |
490 | return(1); | ||
491 | } | 488 | } |
492 | if(index_out) *index_out = n; | 489 | |
490 | *index_out = n; | ||
493 | *str_out = str; | 491 | *str_out = str; |
494 | return(0); | 492 | return 0; |
495 | } | 493 | } |
496 | 494 | ||
497 | struct eth_init { | 495 | struct eth_init { |
@@ -500,13 +498,11 @@ struct eth_init { | |||
500 | int index; | 498 | int index; |
501 | }; | 499 | }; |
502 | 500 | ||
503 | /* Filled in at boot time. Will need locking if the transports become | 501 | static DEFINE_SPINLOCK(transports_lock); |
504 | * modular. | 502 | static LIST_HEAD(transports); |
505 | */ | ||
506 | struct list_head transports = LIST_HEAD_INIT(transports); | ||
507 | 503 | ||
508 | /* Filled in during early boot */ | 504 | /* Filled in during early boot */ |
509 | struct list_head eth_cmd_line = LIST_HEAD_INIT(eth_cmd_line); | 505 | static LIST_HEAD(eth_cmd_line); |
510 | 506 | ||
511 | static int check_transport(struct transport *transport, char *eth, int n, | 507 | static int check_transport(struct transport *transport, char *eth, int n, |
512 | void **init_out, char **mac_out) | 508 | void **init_out, char **mac_out) |
@@ -515,23 +511,23 @@ static int check_transport(struct transport *transport, char *eth, int n, | |||
515 | 511 | ||
516 | len = strlen(transport->name); | 512 | len = strlen(transport->name); |
517 | if(strncmp(eth, transport->name, len)) | 513 | if(strncmp(eth, transport->name, len)) |
518 | return(0); | 514 | return 0; |
519 | 515 | ||
520 | eth += len; | 516 | eth += len; |
521 | if(*eth == ',') | 517 | if(*eth == ',') |
522 | eth++; | 518 | eth++; |
523 | else if(*eth != '\0') | 519 | else if(*eth != '\0') |
524 | return(0); | 520 | return 0; |
525 | 521 | ||
526 | *init_out = kmalloc(transport->setup_size, GFP_KERNEL); | 522 | *init_out = kmalloc(transport->setup_size, GFP_KERNEL); |
527 | if(*init_out == NULL) | 523 | if(*init_out == NULL) |
528 | return(1); | 524 | return 1; |
529 | 525 | ||
530 | if(!transport->setup(eth, mac_out, *init_out)){ | 526 | if(!transport->setup(eth, mac_out, *init_out)){ |
531 | kfree(*init_out); | 527 | kfree(*init_out); |
532 | *init_out = NULL; | 528 | *init_out = NULL; |
533 | } | 529 | } |
534 | return(1); | 530 | return 1; |
535 | } | 531 | } |
536 | 532 | ||
537 | void register_transport(struct transport *new) | 533 | void register_transport(struct transport *new) |
@@ -542,7 +538,10 @@ void register_transport(struct transport *new) | |||
542 | char *mac = NULL; | 538 | char *mac = NULL; |
543 | int match; | 539 | int match; |
544 | 540 | ||
541 | spin_lock(&transports_lock); | ||
542 | BUG_ON(!list_empty(&new->list)); | ||
545 | list_add(&new->list, &transports); | 543 | list_add(&new->list, &transports); |
544 | spin_unlock(&transports_lock); | ||
546 | 545 | ||
547 | list_for_each_safe(ele, next, ð_cmd_line){ | 546 | list_for_each_safe(ele, next, ð_cmd_line){ |
548 | eth = list_entry(ele, struct eth_init, list); | 547 | eth = list_entry(ele, struct eth_init, list); |
@@ -564,7 +563,9 @@ static int eth_setup_common(char *str, int index) | |||
564 | struct transport *transport; | 563 | struct transport *transport; |
565 | void *init; | 564 | void *init; |
566 | char *mac = NULL; | 565 | char *mac = NULL; |
566 | int found = 0; | ||
567 | 567 | ||
568 | spin_lock(&transports_lock); | ||
568 | list_for_each(ele, &transports){ | 569 | list_for_each(ele, &transports){ |
569 | transport = list_entry(ele, struct transport, list); | 570 | transport = list_entry(ele, struct transport, list); |
570 | if(!check_transport(transport, str, index, &init, &mac)) | 571 | if(!check_transport(transport, str, index, &init, &mac)) |
@@ -573,19 +574,26 @@ static int eth_setup_common(char *str, int index) | |||
573 | eth_configure(index, init, mac, transport); | 574 | eth_configure(index, init, mac, transport); |
574 | kfree(init); | 575 | kfree(init); |
575 | } | 576 | } |
576 | return(1); | 577 | found = 1; |
578 | break; | ||
577 | } | 579 | } |
578 | return(0); | 580 | |
581 | spin_unlock(&transports_lock); | ||
582 | return found; | ||
579 | } | 583 | } |
580 | 584 | ||
581 | static int eth_setup(char *str) | 585 | static int eth_setup(char *str) |
582 | { | 586 | { |
583 | struct eth_init *new; | 587 | struct eth_init *new; |
588 | char *error; | ||
584 | int n, err; | 589 | int n, err; |
585 | 590 | ||
586 | err = eth_parse(str, &n, &str); | 591 | err = eth_parse(str, &n, &str, &error); |
587 | if(err) | 592 | if(err){ |
593 | printk(KERN_ERR "eth_setup - Couldn't parse '%s' : %s\n", | ||
594 | str, error); | ||
588 | return 1; | 595 | return 1; |
596 | } | ||
589 | 597 | ||
590 | new = alloc_bootmem(sizeof(*new)); | 598 | new = alloc_bootmem(sizeof(*new)); |
591 | if (new == NULL){ | 599 | if (new == NULL){ |
@@ -607,38 +615,24 @@ __uml_help(eth_setup, | |||
607 | " Configure a network device.\n\n" | 615 | " Configure a network device.\n\n" |
608 | ); | 616 | ); |
609 | 617 | ||
610 | #if 0 | 618 | static int net_config(char *str, char **error_out) |
611 | static int eth_init(void) | ||
612 | { | ||
613 | struct list_head *ele, *next; | ||
614 | struct eth_init *eth; | ||
615 | |||
616 | list_for_each_safe(ele, next, ð_cmd_line){ | ||
617 | eth = list_entry(ele, struct eth_init, list); | ||
618 | |||
619 | if(eth_setup_common(eth->init, eth->index)) | ||
620 | list_del(ð->list); | ||
621 | } | ||
622 | |||
623 | return(1); | ||
624 | } | ||
625 | __initcall(eth_init); | ||
626 | #endif | ||
627 | |||
628 | static int net_config(char *str) | ||
629 | { | 619 | { |
630 | int n, err; | 620 | int n, err; |
631 | 621 | ||
632 | err = eth_parse(str, &n, &str); | 622 | err = eth_parse(str, &n, &str, error_out); |
633 | if(err) return(err); | 623 | if(err) |
624 | return err; | ||
634 | 625 | ||
626 | /* This string is broken up and the pieces used by the underlying | ||
627 | * driver. So, it is freed only if eth_setup_common fails. | ||
628 | */ | ||
635 | str = kstrdup(str, GFP_KERNEL); | 629 | str = kstrdup(str, GFP_KERNEL); |
636 | if(str == NULL){ | 630 | if(str == NULL){ |
637 | printk(KERN_ERR "net_config failed to strdup string\n"); | 631 | *error_out = "net_config failed to strdup string"; |
638 | return(-1); | 632 | return -ENOMEM; |
639 | } | 633 | } |
640 | err = !eth_setup_common(str, n); | 634 | err = !eth_setup_common(str, n); |
641 | if(err) | 635 | if(err) |
642 | kfree(str); | 636 | kfree(str); |
643 | return(err); | 637 | return(err); |
644 | } | 638 | } |
@@ -658,7 +652,7 @@ static int net_id(char **str, int *start_out, int *end_out) | |||
658 | return n; | 652 | return n; |
659 | } | 653 | } |
660 | 654 | ||
661 | static int net_remove(int n) | 655 | static int net_remove(int n, char **error_out) |
662 | { | 656 | { |
663 | struct uml_net *device; | 657 | struct uml_net *device; |
664 | struct net_device *dev; | 658 | struct net_device *dev; |
@@ -671,7 +665,7 @@ static int net_remove(int n) | |||
671 | dev = device->dev; | 665 | dev = device->dev; |
672 | lp = dev->priv; | 666 | lp = dev->priv; |
673 | if(lp->fd > 0) | 667 | if(lp->fd > 0) |
674 | return -EBUSY; | 668 | return -EBUSY; |
675 | if(lp->remove != NULL) (*lp->remove)(&lp->user); | 669 | if(lp->remove != NULL) (*lp->remove)(&lp->user); |
676 | unregister_netdev(dev); | 670 | unregister_netdev(dev); |
677 | platform_device_unregister(&device->pdev); | 671 | platform_device_unregister(&device->pdev); |
@@ -683,10 +677,11 @@ static int net_remove(int n) | |||
683 | } | 677 | } |
684 | 678 | ||
685 | static struct mc_device net_mc = { | 679 | static struct mc_device net_mc = { |
680 | .list = LIST_HEAD_INIT(net_mc.list), | ||
686 | .name = "eth", | 681 | .name = "eth", |
687 | .config = net_config, | 682 | .config = net_config, |
688 | .get_config = NULL, | 683 | .get_config = NULL, |
689 | .id = net_id, | 684 | .id = net_id, |
690 | .remove = net_remove, | 685 | .remove = net_remove, |
691 | }; | 686 | }; |
692 | 687 | ||
@@ -699,7 +694,8 @@ static int uml_inetaddr_event(struct notifier_block *this, unsigned long event, | |||
699 | void (*proc)(unsigned char *, unsigned char *, void *); | 694 | void (*proc)(unsigned char *, unsigned char *, void *); |
700 | unsigned char addr_buf[4], netmask_buf[4]; | 695 | unsigned char addr_buf[4], netmask_buf[4]; |
701 | 696 | ||
702 | if(dev->open != uml_net_open) return(NOTIFY_DONE); | 697 | if(dev->open != uml_net_open) |
698 | return NOTIFY_DONE; | ||
703 | 699 | ||
704 | lp = dev->priv; | 700 | lp = dev->priv; |
705 | 701 | ||
@@ -717,9 +713,10 @@ static int uml_inetaddr_event(struct notifier_block *this, unsigned long event, | |||
717 | memcpy(netmask_buf, &ifa->ifa_mask, sizeof(netmask_buf)); | 713 | memcpy(netmask_buf, &ifa->ifa_mask, sizeof(netmask_buf)); |
718 | (*proc)(addr_buf, netmask_buf, &lp->user); | 714 | (*proc)(addr_buf, netmask_buf, &lp->user); |
719 | } | 715 | } |
720 | return(NOTIFY_DONE); | 716 | return NOTIFY_DONE; |
721 | } | 717 | } |
722 | 718 | ||
719 | /* uml_net_init shouldn't be called twice on two CPUs at the same time */ | ||
723 | struct notifier_block uml_inetaddr_notifier = { | 720 | struct notifier_block uml_inetaddr_notifier = { |
724 | .notifier_call = uml_inetaddr_event, | 721 | .notifier_call = uml_inetaddr_event, |
725 | }; | 722 | }; |
@@ -727,7 +724,7 @@ struct notifier_block uml_inetaddr_notifier = { | |||
727 | static int uml_net_init(void) | 724 | static int uml_net_init(void) |
728 | { | 725 | { |
729 | struct list_head *ele; | 726 | struct list_head *ele; |
730 | struct uml_net_private *lp; | 727 | struct uml_net_private *lp; |
731 | struct in_device *ip; | 728 | struct in_device *ip; |
732 | struct in_ifaddr *in; | 729 | struct in_ifaddr *in; |
733 | 730 | ||
@@ -738,18 +735,21 @@ static int uml_net_init(void) | |||
738 | * didn't get a chance to run for them. This fakes it so that | 735 | * didn't get a chance to run for them. This fakes it so that |
739 | * addresses which have already been set up get handled properly. | 736 | * addresses which have already been set up get handled properly. |
740 | */ | 737 | */ |
738 | spin_lock(&opened_lock); | ||
741 | list_for_each(ele, &opened){ | 739 | list_for_each(ele, &opened){ |
742 | lp = list_entry(ele, struct uml_net_private, list); | 740 | lp = list_entry(ele, struct uml_net_private, list); |
743 | ip = lp->dev->ip_ptr; | 741 | ip = lp->dev->ip_ptr; |
744 | if(ip == NULL) continue; | 742 | if(ip == NULL) |
743 | continue; | ||
745 | in = ip->ifa_list; | 744 | in = ip->ifa_list; |
746 | while(in != NULL){ | 745 | while(in != NULL){ |
747 | uml_inetaddr_event(NULL, NETDEV_UP, in); | 746 | uml_inetaddr_event(NULL, NETDEV_UP, in); |
748 | in = in->ifa_next; | 747 | in = in->ifa_next; |
749 | } | 748 | } |
750 | } | 749 | } |
750 | spin_unlock(&opened_lock); | ||
751 | 751 | ||
752 | return(0); | 752 | return 0; |
753 | } | 753 | } |
754 | 754 | ||
755 | __initcall(uml_net_init); | 755 | __initcall(uml_net_init); |
@@ -759,13 +759,16 @@ static void close_devices(void) | |||
759 | struct list_head *ele; | 759 | struct list_head *ele; |
760 | struct uml_net_private *lp; | 760 | struct uml_net_private *lp; |
761 | 761 | ||
762 | spin_lock(&opened_lock); | ||
762 | list_for_each(ele, &opened){ | 763 | list_for_each(ele, &opened){ |
763 | lp = list_entry(ele, struct uml_net_private, list); | 764 | lp = list_entry(ele, struct uml_net_private, list); |
764 | free_irq(lp->dev->irq, lp->dev); | 765 | free_irq(lp->dev->irq, lp->dev); |
765 | if((lp->close != NULL) && (lp->fd >= 0)) | 766 | if((lp->close != NULL) && (lp->fd >= 0)) |
766 | (*lp->close)(lp->fd, &lp->user); | 767 | (*lp->close)(lp->fd, &lp->user); |
767 | if(lp->remove != NULL) (*lp->remove)(&lp->user); | 768 | if(lp->remove != NULL) |
769 | (*lp->remove)(&lp->user); | ||
768 | } | 770 | } |
771 | spin_unlock(&opened_lock); | ||
769 | } | 772 | } |
770 | 773 | ||
771 | __uml_exitcall(close_devices); | 774 | __uml_exitcall(close_devices); |
@@ -783,8 +786,8 @@ struct sk_buff *ether_adjust_skb(struct sk_buff *skb, int extra) | |||
783 | return(skb); | 786 | return(skb); |
784 | } | 787 | } |
785 | 788 | ||
786 | void iter_addresses(void *d, void (*cb)(unsigned char *, unsigned char *, | 789 | void iter_addresses(void *d, void (*cb)(unsigned char *, unsigned char *, |
787 | void *), | 790 | void *), |
788 | void *arg) | 791 | void *arg) |
789 | { | 792 | { |
790 | struct net_device *dev = d; | 793 | struct net_device *dev = d; |
@@ -809,11 +812,11 @@ int dev_netmask(void *d, void *m) | |||
809 | struct in_ifaddr *in; | 812 | struct in_ifaddr *in; |
810 | __be32 *mask_out = m; | 813 | __be32 *mask_out = m; |
811 | 814 | ||
812 | if(ip == NULL) | 815 | if(ip == NULL) |
813 | return(1); | 816 | return(1); |
814 | 817 | ||
815 | in = ip->ifa_list; | 818 | in = ip->ifa_list; |
816 | if(in == NULL) | 819 | if(in == NULL) |
817 | return(1); | 820 | return(1); |
818 | 821 | ||
819 | *mask_out = in->ifa_mask; | 822 | *mask_out = in->ifa_mask; |
@@ -827,7 +830,7 @@ void *get_output_buffer(int *len_out) | |||
827 | ret = (void *) __get_free_pages(GFP_KERNEL, 0); | 830 | ret = (void *) __get_free_pages(GFP_KERNEL, 0); |
828 | if(ret) *len_out = PAGE_SIZE; | 831 | if(ret) *len_out = PAGE_SIZE; |
829 | else *len_out = 0; | 832 | else *len_out = 0; |
830 | return(ret); | 833 | return ret; |
831 | } | 834 | } |
832 | 835 | ||
833 | void free_output_buffer(void *buffer) | 836 | void free_output_buffer(void *buffer) |
@@ -835,7 +838,7 @@ void free_output_buffer(void *buffer) | |||
835 | free_pages((unsigned long) buffer, 0); | 838 | free_pages((unsigned long) buffer, 0); |
836 | } | 839 | } |
837 | 840 | ||
838 | int tap_setup_common(char *str, char *type, char **dev_name, char **mac_out, | 841 | int tap_setup_common(char *str, char *type, char **dev_name, char **mac_out, |
839 | char **gate_addr) | 842 | char **gate_addr) |
840 | { | 843 | { |
841 | char *remain; | 844 | char *remain; |
@@ -854,14 +857,3 @@ unsigned short eth_protocol(struct sk_buff *skb) | |||
854 | { | 857 | { |
855 | return(eth_type_trans(skb, skb->dev)); | 858 | return(eth_type_trans(skb, skb->dev)); |
856 | } | 859 | } |
857 | |||
858 | /* | ||
859 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
860 | * Emacs will notice this stuff at the end of the file and automatically | ||
861 | * adjust the settings for this buffer only. This must remain at the end | ||
862 | * of the file. | ||
863 | * --------------------------------------------------------------------------- | ||
864 | * Local variables: | ||
865 | * c-file-style: "linux" | ||
866 | * End: | ||
867 | */ | ||
diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c index 6dfe632f1c14..1c8efd95c421 100644 --- a/arch/um/drivers/port_kern.c +++ b/arch/um/drivers/port_kern.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
@@ -55,9 +55,9 @@ static irqreturn_t pipe_interrupt(int irq, void *data) | |||
55 | fd = os_rcv_fd(conn->socket[0], &conn->helper_pid); | 55 | fd = os_rcv_fd(conn->socket[0], &conn->helper_pid); |
56 | if(fd < 0){ | 56 | if(fd < 0){ |
57 | if(fd == -EAGAIN) | 57 | if(fd == -EAGAIN) |
58 | return(IRQ_NONE); | 58 | return IRQ_NONE; |
59 | 59 | ||
60 | printk(KERN_ERR "pipe_interrupt : os_rcv_fd returned %d\n", | 60 | printk(KERN_ERR "pipe_interrupt : os_rcv_fd returned %d\n", |
61 | -fd); | 61 | -fd); |
62 | os_close_file(conn->fd); | 62 | os_close_file(conn->fd); |
63 | } | 63 | } |
@@ -68,7 +68,7 @@ static irqreturn_t pipe_interrupt(int irq, void *data) | |||
68 | list_add(&conn->list, &conn->port->connections); | 68 | list_add(&conn->list, &conn->port->connections); |
69 | 69 | ||
70 | complete(&conn->port->done); | 70 | complete(&conn->port->done); |
71 | return(IRQ_HANDLED); | 71 | return IRQ_HANDLED; |
72 | } | 72 | } |
73 | 73 | ||
74 | #define NO_WAITER_MSG \ | 74 | #define NO_WAITER_MSG \ |
@@ -97,14 +97,14 @@ static int port_accept(struct port_list *port) | |||
97 | "connection\n"); | 97 | "connection\n"); |
98 | goto out_close; | 98 | goto out_close; |
99 | } | 99 | } |
100 | *conn = ((struct connection) | 100 | *conn = ((struct connection) |
101 | { .list = LIST_HEAD_INIT(conn->list), | 101 | { .list = LIST_HEAD_INIT(conn->list), |
102 | .fd = fd, | 102 | .fd = fd, |
103 | .socket = { socket[0], socket[1] }, | 103 | .socket = { socket[0], socket[1] }, |
104 | .telnetd_pid = pid, | 104 | .telnetd_pid = pid, |
105 | .port = port }); | 105 | .port = port }); |
106 | 106 | ||
107 | if(um_request_irq(TELNETD_IRQ, socket[0], IRQ_READ, pipe_interrupt, | 107 | if(um_request_irq(TELNETD_IRQ, socket[0], IRQ_READ, pipe_interrupt, |
108 | IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, | 108 | IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, |
109 | "telnetd", conn)){ | 109 | "telnetd", conn)){ |
110 | printk(KERN_ERR "port_accept : failed to get IRQ for " | 110 | printk(KERN_ERR "port_accept : failed to get IRQ for " |
@@ -117,20 +117,20 @@ static int port_accept(struct port_list *port) | |||
117 | printk("No one waiting for port\n"); | 117 | printk("No one waiting for port\n"); |
118 | } | 118 | } |
119 | list_add(&conn->list, &port->pending); | 119 | list_add(&conn->list, &port->pending); |
120 | return(1); | 120 | return 1; |
121 | 121 | ||
122 | out_free: | 122 | out_free: |
123 | kfree(conn); | 123 | kfree(conn); |
124 | out_close: | 124 | out_close: |
125 | os_close_file(fd); | 125 | os_close_file(fd); |
126 | if(pid != -1) | 126 | if(pid != -1) |
127 | os_kill_process(pid, 1); | 127 | os_kill_process(pid, 1); |
128 | out: | 128 | out: |
129 | return(ret); | 129 | return ret; |
130 | } | 130 | } |
131 | 131 | ||
132 | DECLARE_MUTEX(ports_sem); | 132 | static DECLARE_MUTEX(ports_sem); |
133 | struct list_head ports = LIST_HEAD_INIT(ports); | 133 | static LIST_HEAD(ports); |
134 | 134 | ||
135 | void port_work_proc(struct work_struct *unused) | 135 | void port_work_proc(struct work_struct *unused) |
136 | { | 136 | { |
@@ -158,8 +158,8 @@ static irqreturn_t port_interrupt(int irq, void *data) | |||
158 | 158 | ||
159 | port->has_connection = 1; | 159 | port->has_connection = 1; |
160 | schedule_work(&port_work); | 160 | schedule_work(&port_work); |
161 | return(IRQ_HANDLED); | 161 | return IRQ_HANDLED; |
162 | } | 162 | } |
163 | 163 | ||
164 | void *port_data(int port_num) | 164 | void *port_data(int port_num) |
165 | { | 165 | { |
@@ -185,14 +185,14 @@ void *port_data(int port_num) | |||
185 | port_num, -fd); | 185 | port_num, -fd); |
186 | goto out_free; | 186 | goto out_free; |
187 | } | 187 | } |
188 | if(um_request_irq(ACCEPT_IRQ, fd, IRQ_READ, port_interrupt, | 188 | if(um_request_irq(ACCEPT_IRQ, fd, IRQ_READ, port_interrupt, |
189 | IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, "port", | 189 | IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, |
190 | port)){ | 190 | "port", port)){ |
191 | printk(KERN_ERR "Failed to get IRQ for port %d\n", port_num); | 191 | printk(KERN_ERR "Failed to get IRQ for port %d\n", port_num); |
192 | goto out_close; | 192 | goto out_close; |
193 | } | 193 | } |
194 | 194 | ||
195 | *port = ((struct port_list) | 195 | *port = ((struct port_list) |
196 | { .list = LIST_HEAD_INIT(port->list), | 196 | { .list = LIST_HEAD_INIT(port->list), |
197 | .wait_count = ATOMIC_INIT(0), | 197 | .wait_count = ATOMIC_INIT(0), |
198 | .has_connection = 0, | 198 | .has_connection = 0, |
@@ -222,7 +222,7 @@ void *port_data(int port_num) | |||
222 | os_close_file(fd); | 222 | os_close_file(fd); |
223 | out: | 223 | out: |
224 | up(&ports_sem); | 224 | up(&ports_sem); |
225 | return(dev); | 225 | return dev; |
226 | } | 226 | } |
227 | 227 | ||
228 | int port_wait(void *data) | 228 | int port_wait(void *data) |
@@ -232,15 +232,15 @@ int port_wait(void *data) | |||
232 | struct port_list *port = dev->port; | 232 | struct port_list *port = dev->port; |
233 | int fd; | 233 | int fd; |
234 | 234 | ||
235 | atomic_inc(&port->wait_count); | 235 | atomic_inc(&port->wait_count); |
236 | while(1){ | 236 | while(1){ |
237 | fd = -ERESTARTSYS; | 237 | fd = -ERESTARTSYS; |
238 | if(wait_for_completion_interruptible(&port->done)) | 238 | if(wait_for_completion_interruptible(&port->done)) |
239 | goto out; | 239 | goto out; |
240 | 240 | ||
241 | spin_lock(&port->lock); | 241 | spin_lock(&port->lock); |
242 | 242 | ||
243 | conn = list_entry(port->connections.next, struct connection, | 243 | conn = list_entry(port->connections.next, struct connection, |
244 | list); | 244 | list); |
245 | list_del(&conn->list); | 245 | list_del(&conn->list); |
246 | spin_unlock(&port->lock); | 246 | spin_unlock(&port->lock); |
@@ -248,12 +248,12 @@ int port_wait(void *data) | |||
248 | os_shutdown_socket(conn->socket[0], 1, 1); | 248 | os_shutdown_socket(conn->socket[0], 1, 1); |
249 | os_close_file(conn->socket[0]); | 249 | os_close_file(conn->socket[0]); |
250 | os_shutdown_socket(conn->socket[1], 1, 1); | 250 | os_shutdown_socket(conn->socket[1], 1, 1); |
251 | os_close_file(conn->socket[1]); | 251 | os_close_file(conn->socket[1]); |
252 | 252 | ||
253 | /* This is done here because freeing an IRQ can't be done | 253 | /* This is done here because freeing an IRQ can't be done |
254 | * within the IRQ handler. So, pipe_interrupt always ups | 254 | * within the IRQ handler. So, pipe_interrupt always ups |
255 | * the semaphore regardless of whether it got a successful | 255 | * the semaphore regardless of whether it got a successful |
256 | * connection. Then we loop here throwing out failed | 256 | * connection. Then we loop here throwing out failed |
257 | * connections until a good one is found. | 257 | * connections until a good one is found. |
258 | */ | 258 | */ |
259 | free_irq(TELNETD_IRQ, conn); | 259 | free_irq(TELNETD_IRQ, conn); |
diff --git a/arch/um/drivers/port_user.c b/arch/um/drivers/port_user.c index bc6afaf74c1a..80508023054f 100644 --- a/arch/um/drivers/port_user.c +++ b/arch/um/drivers/port_user.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2001 Jeff Dike (jdike@karaya.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
@@ -38,18 +38,18 @@ static void *port_init(char *str, int device, const struct chan_opts *opts) | |||
38 | if(*str != ':'){ | 38 | if(*str != ':'){ |
39 | printk("port_init : channel type 'port' must specify a " | 39 | printk("port_init : channel type 'port' must specify a " |
40 | "port number\n"); | 40 | "port number\n"); |
41 | return(NULL); | 41 | return NULL; |
42 | } | 42 | } |
43 | str++; | 43 | str++; |
44 | port = strtoul(str, &end, 0); | 44 | port = strtoul(str, &end, 0); |
45 | if((*end != '\0') || (end == str)){ | 45 | if((*end != '\0') || (end == str)){ |
46 | printk("port_init : couldn't parse port '%s'\n", str); | 46 | printk("port_init : couldn't parse port '%s'\n", str); |
47 | return(NULL); | 47 | return NULL; |
48 | } | 48 | } |
49 | 49 | ||
50 | kern_data = port_data(port); | 50 | kern_data = port_data(port); |
51 | if(kern_data == NULL) | 51 | if(kern_data == NULL) |
52 | return(NULL); | 52 | return NULL; |
53 | 53 | ||
54 | data = um_kmalloc(sizeof(*data)); | 54 | data = um_kmalloc(sizeof(*data)); |
55 | if(data == NULL) | 55 | if(data == NULL) |
@@ -59,10 +59,10 @@ static void *port_init(char *str, int device, const struct chan_opts *opts) | |||
59 | .kernel_data = kern_data }); | 59 | .kernel_data = kern_data }); |
60 | sprintf(data->dev, "%d", port); | 60 | sprintf(data->dev, "%d", port); |
61 | 61 | ||
62 | return(data); | 62 | return data; |
63 | err: | 63 | err: |
64 | port_kern_free(kern_data); | 64 | port_kern_free(kern_data); |
65 | return(NULL); | 65 | return NULL; |
66 | } | 66 | } |
67 | 67 | ||
68 | static void port_free(void *d) | 68 | static void port_free(void *d) |
@@ -83,14 +83,14 @@ static int port_open(int input, int output, int primary, void *d, | |||
83 | if((fd >= 0) && data->raw){ | 83 | if((fd >= 0) && data->raw){ |
84 | CATCH_EINTR(err = tcgetattr(fd, &data->tt)); | 84 | CATCH_EINTR(err = tcgetattr(fd, &data->tt)); |
85 | if(err) | 85 | if(err) |
86 | return(err); | 86 | return err; |
87 | 87 | ||
88 | err = raw(fd); | 88 | err = raw(fd); |
89 | if(err) | 89 | if(err) |
90 | return(err); | 90 | return err; |
91 | } | 91 | } |
92 | *dev_out = data->dev; | 92 | *dev_out = data->dev; |
93 | return(fd); | 93 | return fd; |
94 | } | 94 | } |
95 | 95 | ||
96 | static void port_close(int fd, void *d) | 96 | static void port_close(int fd, void *d) |
@@ -120,8 +120,8 @@ int port_listen_fd(int port) | |||
120 | int fd, err, arg; | 120 | int fd, err, arg; |
121 | 121 | ||
122 | fd = socket(PF_INET, SOCK_STREAM, 0); | 122 | fd = socket(PF_INET, SOCK_STREAM, 0); |
123 | if(fd == -1) | 123 | if(fd == -1) |
124 | return(-errno); | 124 | return -errno; |
125 | 125 | ||
126 | arg = 1; | 126 | arg = 1; |
127 | if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &arg, sizeof(arg)) < 0){ | 127 | if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &arg, sizeof(arg)) < 0){ |
@@ -136,7 +136,7 @@ int port_listen_fd(int port) | |||
136 | err = -errno; | 136 | err = -errno; |
137 | goto out; | 137 | goto out; |
138 | } | 138 | } |
139 | 139 | ||
140 | if(listen(fd, 1) < 0){ | 140 | if(listen(fd, 1) < 0){ |
141 | err = -errno; | 141 | err = -errno; |
142 | goto out; | 142 | goto out; |
@@ -146,10 +146,10 @@ int port_listen_fd(int port) | |||
146 | if(err < 0) | 146 | if(err < 0) |
147 | goto out; | 147 | goto out; |
148 | 148 | ||
149 | return(fd); | 149 | return fd; |
150 | out: | 150 | out: |
151 | os_close_file(fd); | 151 | os_close_file(fd); |
152 | return(err); | 152 | return err; |
153 | } | 153 | } |
154 | 154 | ||
155 | struct port_pre_exec_data { | 155 | struct port_pre_exec_data { |
@@ -173,13 +173,13 @@ void port_pre_exec(void *arg) | |||
173 | int port_connection(int fd, int *socket, int *pid_out) | 173 | int port_connection(int fd, int *socket, int *pid_out) |
174 | { | 174 | { |
175 | int new, err; | 175 | int new, err; |
176 | char *argv[] = { "/usr/sbin/in.telnetd", "-L", | 176 | char *argv[] = { "/usr/sbin/in.telnetd", "-L", |
177 | "/usr/lib/uml/port-helper", NULL }; | 177 | "/usr/lib/uml/port-helper", NULL }; |
178 | struct port_pre_exec_data data; | 178 | struct port_pre_exec_data data; |
179 | 179 | ||
180 | new = os_accept_connection(fd); | 180 | new = os_accept_connection(fd); |
181 | if(new < 0) | 181 | if(new < 0) |
182 | return(new); | 182 | return new; |
183 | 183 | ||
184 | err = os_pipe(socket, 0, 0); | 184 | err = os_pipe(socket, 0, 0); |
185 | if(err < 0) | 185 | if(err < 0) |
@@ -190,29 +190,18 @@ int port_connection(int fd, int *socket, int *pid_out) | |||
190 | .pipe_fd = socket[1] }); | 190 | .pipe_fd = socket[1] }); |
191 | 191 | ||
192 | err = run_helper(port_pre_exec, &data, argv, NULL); | 192 | err = run_helper(port_pre_exec, &data, argv, NULL); |
193 | if(err < 0) | 193 | if(err < 0) |
194 | goto out_shutdown; | 194 | goto out_shutdown; |
195 | 195 | ||
196 | *pid_out = err; | 196 | *pid_out = err; |
197 | return(new); | 197 | return new; |
198 | 198 | ||
199 | out_shutdown: | 199 | out_shutdown: |
200 | os_shutdown_socket(socket[0], 1, 1); | 200 | os_shutdown_socket(socket[0], 1, 1); |
201 | os_close_file(socket[0]); | 201 | os_close_file(socket[0]); |
202 | os_shutdown_socket(socket[1], 1, 1); | 202 | os_shutdown_socket(socket[1], 1, 1); |
203 | os_close_file(socket[1]); | 203 | os_close_file(socket[1]); |
204 | out_close: | 204 | out_close: |
205 | os_close_file(new); | 205 | os_close_file(new); |
206 | return(err); | 206 | return err; |
207 | } | 207 | } |
208 | |||
209 | /* | ||
210 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
211 | * Emacs will notice this stuff at the end of the file and automatically | ||
212 | * adjust the settings for this buffer only. This must remain at the end | ||
213 | * of the file. | ||
214 | * --------------------------------------------------------------------------- | ||
215 | * Local variables: | ||
216 | * c-file-style: "linux" | ||
217 | * End: | ||
218 | */ | ||
diff --git a/arch/um/drivers/random.c b/arch/um/drivers/random.c index 73b2bdd6d2d3..e942e836f995 100644 --- a/arch/um/drivers/random.c +++ b/arch/um/drivers/random.c | |||
@@ -78,6 +78,7 @@ static const struct file_operations rng_chrdev_ops = { | |||
78 | .read = rng_dev_read, | 78 | .read = rng_dev_read, |
79 | }; | 79 | }; |
80 | 80 | ||
81 | /* rng_init shouldn't be called more than once at boot time */ | ||
81 | static struct miscdevice rng_miscdev = { | 82 | static struct miscdevice rng_miscdev = { |
82 | RNG_MISCDEV_MINOR, | 83 | RNG_MISCDEV_MINOR, |
83 | RNG_MODULE_NAME, | 84 | RNG_MODULE_NAME, |
diff --git a/arch/um/drivers/ssl.c b/arch/um/drivers/ssl.c index ed9c59082d0d..fc22b9bd9153 100644 --- a/arch/um/drivers/ssl.c +++ b/arch/um/drivers/ssl.c | |||
@@ -38,6 +38,7 @@ static void ssl_announce(char *dev_name, int dev) | |||
38 | dev_name); | 38 | dev_name); |
39 | } | 39 | } |
40 | 40 | ||
41 | /* Almost const, except that xterm_title may be changed in an initcall */ | ||
41 | static struct chan_opts opts = { | 42 | static struct chan_opts opts = { |
42 | .announce = ssl_announce, | 43 | .announce = ssl_announce, |
43 | .xterm_title = "Serial Line #%d", | 44 | .xterm_title = "Serial Line #%d", |
@@ -46,10 +47,12 @@ static struct chan_opts opts = { | |||
46 | .in_kernel = 1, | 47 | .in_kernel = 1, |
47 | }; | 48 | }; |
48 | 49 | ||
49 | static int ssl_config(char *str); | 50 | static int ssl_config(char *str, char **error_out); |
50 | static int ssl_get_config(char *dev, char *str, int size, char **error_out); | 51 | static int ssl_get_config(char *dev, char *str, int size, char **error_out); |
51 | static int ssl_remove(int n); | 52 | static int ssl_remove(int n, char **error_out); |
52 | 53 | ||
54 | |||
55 | /* Const, except for .mc.list */ | ||
53 | static struct line_driver driver = { | 56 | static struct line_driver driver = { |
54 | .name = "UML serial line", | 57 | .name = "UML serial line", |
55 | .device_name = "ttyS", | 58 | .device_name = "ttyS", |
@@ -61,9 +64,8 @@ static struct line_driver driver = { | |||
61 | .read_irq_name = "ssl", | 64 | .read_irq_name = "ssl", |
62 | .write_irq = SSL_WRITE_IRQ, | 65 | .write_irq = SSL_WRITE_IRQ, |
63 | .write_irq_name = "ssl-write", | 66 | .write_irq_name = "ssl-write", |
64 | .symlink_from = "serial", | ||
65 | .symlink_to = "tts", | ||
66 | .mc = { | 67 | .mc = { |
68 | .list = LIST_HEAD_INIT(driver.mc.list), | ||
67 | .name = "ssl", | 69 | .name = "ssl", |
68 | .config = ssl_config, | 70 | .config = ssl_config, |
69 | .get_config = ssl_get_config, | 71 | .get_config = ssl_get_config, |
@@ -72,17 +74,16 @@ static struct line_driver driver = { | |||
72 | }, | 74 | }, |
73 | }; | 75 | }; |
74 | 76 | ||
75 | /* The array is initialized by line_init, which is an initcall. The | 77 | /* The array is initialized by line_init, at initcall time. The |
76 | * individual elements are protected by individual semaphores. | 78 | * elements are locked individually as needed. |
77 | */ | 79 | */ |
78 | static struct line serial_lines[NR_PORTS] = | 80 | static struct line serial_lines[NR_PORTS] = |
79 | { [0 ... NR_PORTS - 1] = LINE_INIT(CONFIG_SSL_CHAN, &driver) }; | 81 | { [0 ... NR_PORTS - 1] = LINE_INIT(CONFIG_SSL_CHAN, &driver) }; |
80 | 82 | ||
81 | static struct lines lines = LINES_INIT(NR_PORTS); | 83 | static int ssl_config(char *str, char **error_out) |
82 | |||
83 | static int ssl_config(char *str) | ||
84 | { | 84 | { |
85 | return line_config(serial_lines, ARRAY_SIZE(serial_lines), str, &opts); | 85 | return line_config(serial_lines, ARRAY_SIZE(serial_lines), str, &opts, |
86 | error_out); | ||
86 | } | 87 | } |
87 | 88 | ||
88 | static int ssl_get_config(char *dev, char *str, int size, char **error_out) | 89 | static int ssl_get_config(char *dev, char *str, int size, char **error_out) |
@@ -91,9 +92,10 @@ static int ssl_get_config(char *dev, char *str, int size, char **error_out) | |||
91 | size, error_out); | 92 | size, error_out); |
92 | } | 93 | } |
93 | 94 | ||
94 | static int ssl_remove(int n) | 95 | static int ssl_remove(int n, char **error_out) |
95 | { | 96 | { |
96 | return line_remove(serial_lines, ARRAY_SIZE(serial_lines), n); | 97 | return line_remove(serial_lines, ARRAY_SIZE(serial_lines), n, |
98 | error_out); | ||
97 | } | 99 | } |
98 | 100 | ||
99 | static int ssl_open(struct tty_struct *tty, struct file *filp) | 101 | static int ssl_open(struct tty_struct *tty, struct file *filp) |
@@ -168,9 +170,10 @@ static int ssl_console_setup(struct console *co, char *options) | |||
168 | { | 170 | { |
169 | struct line *line = &serial_lines[co->index]; | 171 | struct line *line = &serial_lines[co->index]; |
170 | 172 | ||
171 | return console_open_chan(line, co, &opts); | 173 | return console_open_chan(line, co); |
172 | } | 174 | } |
173 | 175 | ||
176 | /* No locking for register_console call - relies on single-threaded initcalls */ | ||
174 | static struct console ssl_cons = { | 177 | static struct console ssl_cons = { |
175 | .name = "ttyS", | 178 | .name = "ttyS", |
176 | .write = ssl_console_write, | 179 | .write = ssl_console_write, |
@@ -186,9 +189,8 @@ static int ssl_init(void) | |||
186 | 189 | ||
187 | printk(KERN_INFO "Initializing software serial port version %d\n", | 190 | printk(KERN_INFO "Initializing software serial port version %d\n", |
188 | ssl_version); | 191 | ssl_version); |
189 | ssl_driver = line_register_devfs(&lines, &driver, &ssl_ops, | 192 | ssl_driver = register_lines(&driver, &ssl_ops, serial_lines, |
190 | serial_lines, | 193 | ARRAY_SIZE(serial_lines)); |
191 | ARRAY_SIZE(serial_lines)); | ||
192 | 194 | ||
193 | lines_init(serial_lines, ARRAY_SIZE(serial_lines), &opts); | 195 | lines_init(serial_lines, ARRAY_SIZE(serial_lines), &opts); |
194 | 196 | ||
@@ -212,7 +214,15 @@ __uml_exitcall(ssl_exit); | |||
212 | 214 | ||
213 | static int ssl_chan_setup(char *str) | 215 | static int ssl_chan_setup(char *str) |
214 | { | 216 | { |
215 | return line_setup(serial_lines, ARRAY_SIZE(serial_lines), str); | 217 | char *error; |
218 | int ret; | ||
219 | |||
220 | ret = line_setup(serial_lines, ARRAY_SIZE(serial_lines), str, &error); | ||
221 | if(ret < 0) | ||
222 | printk(KERN_ERR "Failed to set up serial line with " | ||
223 | "configuration string \"%s\" : %s\n", str, error); | ||
224 | |||
225 | return 1; | ||
216 | } | 226 | } |
217 | 227 | ||
218 | __setup("ssl", ssl_chan_setup); | 228 | __setup("ssl", ssl_chan_setup); |
diff --git a/arch/um/drivers/stdio_console.c b/arch/um/drivers/stdio_console.c index 7a4897e27f42..7ff0b0fc37e7 100644 --- a/arch/um/drivers/stdio_console.c +++ b/arch/um/drivers/stdio_console.c | |||
@@ -30,8 +30,6 @@ | |||
30 | 30 | ||
31 | #define MAX_TTYS (16) | 31 | #define MAX_TTYS (16) |
32 | 32 | ||
33 | /* ----------------------------------------------------------------------------- */ | ||
34 | |||
35 | /* Referenced only by tty_driver below - presumably it's locked correctly | 33 | /* Referenced only by tty_driver below - presumably it's locked correctly |
36 | * by the tty driver. | 34 | * by the tty driver. |
37 | */ | 35 | */ |
@@ -44,6 +42,7 @@ void stdio_announce(char *dev_name, int dev) | |||
44 | dev_name); | 42 | dev_name); |
45 | } | 43 | } |
46 | 44 | ||
45 | /* Almost const, except that xterm_title may be changed in an initcall */ | ||
47 | static struct chan_opts opts = { | 46 | static struct chan_opts opts = { |
48 | .announce = stdio_announce, | 47 | .announce = stdio_announce, |
49 | .xterm_title = "Virtual Console #%d", | 48 | .xterm_title = "Virtual Console #%d", |
@@ -52,10 +51,12 @@ static struct chan_opts opts = { | |||
52 | .in_kernel = 1, | 51 | .in_kernel = 1, |
53 | }; | 52 | }; |
54 | 53 | ||
55 | static int con_config(char *str); | 54 | static int con_config(char *str, char **error_out); |
56 | static int con_get_config(char *dev, char *str, int size, char **error_out); | 55 | static int con_get_config(char *dev, char *str, int size, char **error_out); |
57 | static int con_remove(int n); | 56 | static int con_remove(int n, char **con_remove); |
57 | |||
58 | 58 | ||
59 | /* Const, except for .mc.list */ | ||
59 | static struct line_driver driver = { | 60 | static struct line_driver driver = { |
60 | .name = "UML console", | 61 | .name = "UML console", |
61 | .device_name = "tty", | 62 | .device_name = "tty", |
@@ -67,9 +68,8 @@ static struct line_driver driver = { | |||
67 | .read_irq_name = "console", | 68 | .read_irq_name = "console", |
68 | .write_irq = CONSOLE_WRITE_IRQ, | 69 | .write_irq = CONSOLE_WRITE_IRQ, |
69 | .write_irq_name = "console-write", | 70 | .write_irq_name = "console-write", |
70 | .symlink_from = "ttys", | ||
71 | .symlink_to = "vc", | ||
72 | .mc = { | 71 | .mc = { |
72 | .list = LIST_HEAD_INIT(driver.mc.list), | ||
73 | .name = "con", | 73 | .name = "con", |
74 | .config = con_config, | 74 | .config = con_config, |
75 | .get_config = con_get_config, | 75 | .get_config = con_get_config, |
@@ -78,18 +78,16 @@ static struct line_driver driver = { | |||
78 | }, | 78 | }, |
79 | }; | 79 | }; |
80 | 80 | ||
81 | static struct lines console_lines = LINES_INIT(MAX_TTYS); | 81 | /* The array is initialized by line_init, at initcall time. The |
82 | 82 | * elements are locked individually as needed. | |
83 | /* The array is initialized by line_init, which is an initcall. The | ||
84 | * individual elements are protected by individual semaphores. | ||
85 | */ | 83 | */ |
86 | struct line vts[MAX_TTYS] = { LINE_INIT(CONFIG_CON_ZERO_CHAN, &driver), | 84 | static struct line vts[MAX_TTYS] = { LINE_INIT(CONFIG_CON_ZERO_CHAN, &driver), |
87 | [ 1 ... MAX_TTYS - 1 ] = | 85 | [ 1 ... MAX_TTYS - 1 ] = |
88 | LINE_INIT(CONFIG_CON_CHAN, &driver) }; | 86 | LINE_INIT(CONFIG_CON_CHAN, &driver) }; |
89 | 87 | ||
90 | static int con_config(char *str) | 88 | static int con_config(char *str, char **error_out) |
91 | { | 89 | { |
92 | return line_config(vts, ARRAY_SIZE(vts), str, &opts); | 90 | return line_config(vts, ARRAY_SIZE(vts), str, &opts, error_out); |
93 | } | 91 | } |
94 | 92 | ||
95 | static int con_get_config(char *dev, char *str, int size, char **error_out) | 93 | static int con_get_config(char *dev, char *str, int size, char **error_out) |
@@ -97,9 +95,9 @@ static int con_get_config(char *dev, char *str, int size, char **error_out) | |||
97 | return line_get_config(dev, vts, ARRAY_SIZE(vts), str, size, error_out); | 95 | return line_get_config(dev, vts, ARRAY_SIZE(vts), str, size, error_out); |
98 | } | 96 | } |
99 | 97 | ||
100 | static int con_remove(int n) | 98 | static int con_remove(int n, char **error_out) |
101 | { | 99 | { |
102 | return line_remove(vts, ARRAY_SIZE(vts), n); | 100 | return line_remove(vts, ARRAY_SIZE(vts), n, error_out); |
103 | } | 101 | } |
104 | 102 | ||
105 | static int con_open(struct tty_struct *tty, struct file *filp) | 103 | static int con_open(struct tty_struct *tty, struct file *filp) |
@@ -146,9 +144,10 @@ static int uml_console_setup(struct console *co, char *options) | |||
146 | { | 144 | { |
147 | struct line *line = &vts[co->index]; | 145 | struct line *line = &vts[co->index]; |
148 | 146 | ||
149 | return console_open_chan(line, co, &opts); | 147 | return console_open_chan(line, co); |
150 | } | 148 | } |
151 | 149 | ||
150 | /* No locking for register_console call - relies on single-threaded initcalls */ | ||
152 | static struct console stdiocons = { | 151 | static struct console stdiocons = { |
153 | .name = "tty", | 152 | .name = "tty", |
154 | .write = uml_console_write, | 153 | .write = uml_console_write, |
@@ -156,16 +155,14 @@ static struct console stdiocons = { | |||
156 | .setup = uml_console_setup, | 155 | .setup = uml_console_setup, |
157 | .flags = CON_PRINTBUFFER, | 156 | .flags = CON_PRINTBUFFER, |
158 | .index = -1, | 157 | .index = -1, |
159 | .data = &vts, | ||
160 | }; | 158 | }; |
161 | 159 | ||
162 | int stdio_init(void) | 160 | int stdio_init(void) |
163 | { | 161 | { |
164 | char *new_title; | 162 | char *new_title; |
165 | 163 | ||
166 | console_driver = line_register_devfs(&console_lines, &driver, | 164 | console_driver = register_lines(&driver, &console_ops, vts, |
167 | &console_ops, vts, | 165 | ARRAY_SIZE(vts)); |
168 | ARRAY_SIZE(vts)); | ||
169 | if (console_driver == NULL) | 166 | if (console_driver == NULL) |
170 | return -1; | 167 | return -1; |
171 | printk(KERN_INFO "Initialized stdio console driver\n"); | 168 | printk(KERN_INFO "Initialized stdio console driver\n"); |
@@ -192,7 +189,15 @@ __uml_exitcall(console_exit); | |||
192 | 189 | ||
193 | static int console_chan_setup(char *str) | 190 | static int console_chan_setup(char *str) |
194 | { | 191 | { |
195 | return line_setup(vts, ARRAY_SIZE(vts), str); | 192 | char *error; |
193 | int ret; | ||
194 | |||
195 | ret = line_setup(vts, ARRAY_SIZE(vts), str, &error); | ||
196 | if(ret < 0) | ||
197 | printk(KERN_ERR "Failed to set up console with " | ||
198 | "configuration string \"%s\" : %s\n", str, error); | ||
199 | |||
200 | return 1; | ||
196 | } | 201 | } |
197 | __setup("con", console_chan_setup); | 202 | __setup("con", console_chan_setup); |
198 | __channel_help(console_chan_setup, "con"); | 203 | __channel_help(console_chan_setup, "con"); |
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 49c047b75cc5..f98d26e51381 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
@@ -56,6 +56,7 @@ | |||
56 | enum ubd_req { UBD_READ, UBD_WRITE }; | 56 | enum ubd_req { UBD_READ, UBD_WRITE }; |
57 | 57 | ||
58 | struct io_thread_req { | 58 | struct io_thread_req { |
59 | struct request *req; | ||
59 | enum ubd_req op; | 60 | enum ubd_req op; |
60 | int fds[2]; | 61 | int fds[2]; |
61 | unsigned long offsets[2]; | 62 | unsigned long offsets[2]; |
@@ -106,10 +107,6 @@ static inline void ubd_set_bit(__u64 bit, unsigned char *data) | |||
106 | 107 | ||
107 | #define DRIVER_NAME "uml-blkdev" | 108 | #define DRIVER_NAME "uml-blkdev" |
108 | 109 | ||
109 | /* Can be taken in interrupt context, and is passed to the block layer to lock | ||
110 | * the request queue. Kernel side code knows that. */ | ||
111 | static DEFINE_SPINLOCK(ubd_io_lock); | ||
112 | |||
113 | static DEFINE_MUTEX(ubd_lock); | 110 | static DEFINE_MUTEX(ubd_lock); |
114 | 111 | ||
115 | /* XXX - this made sense in 2.4 days, now it's only used as a boolean, and | 112 | /* XXX - this made sense in 2.4 days, now it's only used as a boolean, and |
@@ -132,12 +129,8 @@ static struct block_device_operations ubd_blops = { | |||
132 | .getgeo = ubd_getgeo, | 129 | .getgeo = ubd_getgeo, |
133 | }; | 130 | }; |
134 | 131 | ||
135 | /* Protected by the queue_lock */ | ||
136 | static request_queue_t *ubd_queue; | ||
137 | |||
138 | /* Protected by ubd_lock */ | 132 | /* Protected by ubd_lock */ |
139 | static int fake_major = MAJOR_NR; | 133 | static int fake_major = MAJOR_NR; |
140 | |||
141 | static struct gendisk *ubd_gendisk[MAX_DEV]; | 134 | static struct gendisk *ubd_gendisk[MAX_DEV]; |
142 | static struct gendisk *fake_gendisk[MAX_DEV]; | 135 | static struct gendisk *fake_gendisk[MAX_DEV]; |
143 | 136 | ||
@@ -148,10 +141,6 @@ static struct gendisk *fake_gendisk[MAX_DEV]; | |||
148 | #define OPEN_FLAGS ((struct openflags) { .r = 1, .w = 1, .s = 0, .c = 0, \ | 141 | #define OPEN_FLAGS ((struct openflags) { .r = 1, .w = 1, .s = 0, .c = 0, \ |
149 | .cl = 1 }) | 142 | .cl = 1 }) |
150 | #endif | 143 | #endif |
151 | |||
152 | /* Not protected - changed only in ubd_setup_common and then only to | ||
153 | * to enable O_SYNC. | ||
154 | */ | ||
155 | static struct openflags global_openflags = OPEN_FLAGS; | 144 | static struct openflags global_openflags = OPEN_FLAGS; |
156 | 145 | ||
157 | struct cow { | 146 | struct cow { |
@@ -178,6 +167,8 @@ struct ubd { | |||
178 | unsigned no_cow:1; | 167 | unsigned no_cow:1; |
179 | struct cow cow; | 168 | struct cow cow; |
180 | struct platform_device pdev; | 169 | struct platform_device pdev; |
170 | struct request_queue *queue; | ||
171 | spinlock_t lock; | ||
181 | }; | 172 | }; |
182 | 173 | ||
183 | #define DEFAULT_COW { \ | 174 | #define DEFAULT_COW { \ |
@@ -198,8 +189,10 @@ struct ubd { | |||
198 | .no_cow = 0, \ | 189 | .no_cow = 0, \ |
199 | .shared = 0, \ | 190 | .shared = 0, \ |
200 | .cow = DEFAULT_COW, \ | 191 | .cow = DEFAULT_COW, \ |
192 | .lock = SPIN_LOCK_UNLOCKED, \ | ||
201 | } | 193 | } |
202 | 194 | ||
195 | /* Protected by ubd_lock */ | ||
203 | struct ubd ubd_devs[MAX_DEV] = { [ 0 ... MAX_DEV - 1 ] = DEFAULT_UBD }; | 196 | struct ubd ubd_devs[MAX_DEV] = { [ 0 ... MAX_DEV - 1 ] = DEFAULT_UBD }; |
204 | 197 | ||
205 | /* Only changed by fake_ide_setup which is a setup */ | 198 | /* Only changed by fake_ide_setup which is a setup */ |
@@ -242,7 +235,6 @@ static void make_ide_entries(char *dev_name) | |||
242 | 235 | ||
243 | ent = create_proc_entry("media", S_IFREG|S_IRUGO, dir); | 236 | ent = create_proc_entry("media", S_IFREG|S_IRUGO, dir); |
244 | if(!ent) return; | 237 | if(!ent) return; |
245 | ent->nlink = 1; | ||
246 | ent->data = NULL; | 238 | ent->data = NULL; |
247 | ent->read_proc = proc_ide_read_media; | 239 | ent->read_proc = proc_ide_read_media; |
248 | ent->write_proc = NULL; | 240 | ent->write_proc = NULL; |
@@ -286,12 +278,12 @@ static int parse_unit(char **ptr) | |||
286 | * otherwise, the str pointer is used (and owned) inside ubd_devs array, so it | 278 | * otherwise, the str pointer is used (and owned) inside ubd_devs array, so it |
287 | * should not be freed on exit. | 279 | * should not be freed on exit. |
288 | */ | 280 | */ |
289 | static int ubd_setup_common(char *str, int *index_out) | 281 | static int ubd_setup_common(char *str, int *index_out, char **error_out) |
290 | { | 282 | { |
291 | struct ubd *ubd_dev; | 283 | struct ubd *ubd_dev; |
292 | struct openflags flags = global_openflags; | 284 | struct openflags flags = global_openflags; |
293 | char *backing_file; | 285 | char *backing_file; |
294 | int n, err, i; | 286 | int n, err = 0, i; |
295 | 287 | ||
296 | if(index_out) *index_out = -1; | 288 | if(index_out) *index_out = -1; |
297 | n = *str; | 289 | n = *str; |
@@ -302,56 +294,55 @@ static int ubd_setup_common(char *str, int *index_out) | |||
302 | str++; | 294 | str++; |
303 | if(!strcmp(str, "sync")){ | 295 | if(!strcmp(str, "sync")){ |
304 | global_openflags = of_sync(global_openflags); | 296 | global_openflags = of_sync(global_openflags); |
305 | return(0); | 297 | goto out1; |
306 | } | 298 | } |
299 | |||
300 | err = -EINVAL; | ||
307 | major = simple_strtoul(str, &end, 0); | 301 | major = simple_strtoul(str, &end, 0); |
308 | if((*end != '\0') || (end == str)){ | 302 | if((*end != '\0') || (end == str)){ |
309 | printk(KERN_ERR | 303 | *error_out = "Didn't parse major number"; |
310 | "ubd_setup : didn't parse major number\n"); | 304 | goto out1; |
311 | return(1); | ||
312 | } | 305 | } |
313 | 306 | ||
314 | err = 1; | 307 | mutex_lock(&ubd_lock); |
315 | mutex_lock(&ubd_lock); | 308 | if(fake_major != MAJOR_NR){ |
316 | if(fake_major != MAJOR_NR){ | 309 | *error_out = "Can't assign a fake major twice"; |
317 | printk(KERN_ERR "Can't assign a fake major twice\n"); | 310 | goto out1; |
318 | goto out1; | 311 | } |
319 | } | ||
320 | 312 | ||
321 | fake_major = major; | 313 | fake_major = major; |
322 | 314 | ||
323 | printk(KERN_INFO "Setting extra ubd major number to %d\n", | 315 | printk(KERN_INFO "Setting extra ubd major number to %d\n", |
324 | major); | 316 | major); |
325 | err = 0; | 317 | err = 0; |
326 | out1: | 318 | out1: |
327 | mutex_unlock(&ubd_lock); | 319 | mutex_unlock(&ubd_lock); |
328 | return(err); | 320 | return err; |
329 | } | 321 | } |
330 | 322 | ||
331 | n = parse_unit(&str); | 323 | n = parse_unit(&str); |
332 | if(n < 0){ | 324 | if(n < 0){ |
333 | printk(KERN_ERR "ubd_setup : couldn't parse unit number " | 325 | *error_out = "Couldn't parse device number"; |
334 | "'%s'\n", str); | 326 | return -EINVAL; |
335 | return(1); | ||
336 | } | 327 | } |
337 | if(n >= MAX_DEV){ | 328 | if(n >= MAX_DEV){ |
338 | printk(KERN_ERR "ubd_setup : index %d out of range " | 329 | *error_out = "Device number out of range"; |
339 | "(%d devices, from 0 to %d)\n", n, MAX_DEV, MAX_DEV - 1); | 330 | return 1; |
340 | return(1); | ||
341 | } | 331 | } |
342 | 332 | ||
343 | err = 1; | 333 | err = -EBUSY; |
344 | mutex_lock(&ubd_lock); | 334 | mutex_lock(&ubd_lock); |
345 | 335 | ||
346 | ubd_dev = &ubd_devs[n]; | 336 | ubd_dev = &ubd_devs[n]; |
347 | if(ubd_dev->file != NULL){ | 337 | if(ubd_dev->file != NULL){ |
348 | printk(KERN_ERR "ubd_setup : device already configured\n"); | 338 | *error_out = "Device is already configured"; |
349 | goto out; | 339 | goto out; |
350 | } | 340 | } |
351 | 341 | ||
352 | if (index_out) | 342 | if (index_out) |
353 | *index_out = n; | 343 | *index_out = n; |
354 | 344 | ||
345 | err = -EINVAL; | ||
355 | for (i = 0; i < sizeof("rscd="); i++) { | 346 | for (i = 0; i < sizeof("rscd="); i++) { |
356 | switch (*str) { | 347 | switch (*str) { |
357 | case 'r': | 348 | case 'r': |
@@ -370,47 +361,54 @@ static int ubd_setup_common(char *str, int *index_out) | |||
370 | str++; | 361 | str++; |
371 | goto break_loop; | 362 | goto break_loop; |
372 | default: | 363 | default: |
373 | printk(KERN_ERR "ubd_setup : Expected '=' or flag letter (r, s, c, or d)\n"); | 364 | *error_out = "Expected '=' or flag letter " |
365 | "(r, s, c, or d)"; | ||
374 | goto out; | 366 | goto out; |
375 | } | 367 | } |
376 | str++; | 368 | str++; |
377 | } | 369 | } |
378 | 370 | ||
379 | if (*str == '=') | 371 | if (*str == '=') |
380 | printk(KERN_ERR "ubd_setup : Too many flags specified\n"); | 372 | *error_out = "Too many flags specified"; |
381 | else | 373 | else |
382 | printk(KERN_ERR "ubd_setup : Expected '='\n"); | 374 | *error_out = "Missing '='"; |
383 | goto out; | 375 | goto out; |
384 | 376 | ||
385 | break_loop: | 377 | break_loop: |
386 | err = 0; | ||
387 | backing_file = strchr(str, ','); | 378 | backing_file = strchr(str, ','); |
388 | 379 | ||
389 | if (!backing_file) { | 380 | if (backing_file == NULL) |
390 | backing_file = strchr(str, ':'); | 381 | backing_file = strchr(str, ':'); |
391 | } | ||
392 | 382 | ||
393 | if(backing_file){ | 383 | if(backing_file != NULL){ |
394 | if(ubd_dev->no_cow) | 384 | if(ubd_dev->no_cow){ |
395 | printk(KERN_ERR "Can't specify both 'd' and a " | 385 | *error_out = "Can't specify both 'd' and a cow file"; |
396 | "cow file\n"); | 386 | goto out; |
387 | } | ||
397 | else { | 388 | else { |
398 | *backing_file = '\0'; | 389 | *backing_file = '\0'; |
399 | backing_file++; | 390 | backing_file++; |
400 | } | 391 | } |
401 | } | 392 | } |
393 | err = 0; | ||
402 | ubd_dev->file = str; | 394 | ubd_dev->file = str; |
403 | ubd_dev->cow.file = backing_file; | 395 | ubd_dev->cow.file = backing_file; |
404 | ubd_dev->boot_openflags = flags; | 396 | ubd_dev->boot_openflags = flags; |
405 | out: | 397 | out: |
406 | mutex_unlock(&ubd_lock); | 398 | mutex_unlock(&ubd_lock); |
407 | return(err); | 399 | return err; |
408 | } | 400 | } |
409 | 401 | ||
410 | static int ubd_setup(char *str) | 402 | static int ubd_setup(char *str) |
411 | { | 403 | { |
412 | ubd_setup_common(str, NULL); | 404 | char *error; |
413 | return(1); | 405 | int err; |
406 | |||
407 | err = ubd_setup_common(str, NULL, &error); | ||
408 | if(err) | ||
409 | printk(KERN_ERR "Failed to initialize device with \"%s\" : " | ||
410 | "%s\n", str, error); | ||
411 | return 1; | ||
414 | } | 412 | } |
415 | 413 | ||
416 | __setup("ubd", ubd_setup); | 414 | __setup("ubd", ubd_setup); |
@@ -422,7 +420,7 @@ __uml_help(ubd_setup, | |||
422 | " use either a ':' or a ',': the first one allows writing things like;\n" | 420 | " use either a ':' or a ',': the first one allows writing things like;\n" |
423 | " ubd0=~/Uml/root_cow:~/Uml/root_backing_file\n" | 421 | " ubd0=~/Uml/root_cow:~/Uml/root_backing_file\n" |
424 | " while with a ',' the shell would not expand the 2nd '~'.\n" | 422 | " while with a ',' the shell would not expand the 2nd '~'.\n" |
425 | " When using only one filename, UML will detect whether to thread it like\n" | 423 | " When using only one filename, UML will detect whether to treat it like\n" |
426 | " a COW file or a backing file. To override this detection, add the 'd'\n" | 424 | " a COW file or a backing file. To override this detection, add the 'd'\n" |
427 | " flag:\n" | 425 | " flag:\n" |
428 | " ubd0d=BackingFile\n" | 426 | " ubd0d=BackingFile\n" |
@@ -471,12 +469,6 @@ static void do_ubd_request(request_queue_t * q); | |||
471 | /* Only changed by ubd_init, which is an initcall. */ | 469 | /* Only changed by ubd_init, which is an initcall. */ |
472 | int thread_fd = -1; | 470 | int thread_fd = -1; |
473 | 471 | ||
474 | /* Changed by ubd_handler, which is serialized because interrupts only | ||
475 | * happen on CPU 0. | ||
476 | * XXX: currently unused. | ||
477 | */ | ||
478 | static int intr_count = 0; | ||
479 | |||
480 | /* call ubd_finish if you need to serialize */ | 472 | /* call ubd_finish if you need to serialize */ |
481 | static void __ubd_finish(struct request *req, int error) | 473 | static void __ubd_finish(struct request *req, int error) |
482 | { | 474 | { |
@@ -499,36 +491,38 @@ static void __ubd_finish(struct request *req, int error) | |||
499 | * spin_lock_irq()/spin_lock_irqsave() */ | 491 | * spin_lock_irq()/spin_lock_irqsave() */ |
500 | static inline void ubd_finish(struct request *req, int error) | 492 | static inline void ubd_finish(struct request *req, int error) |
501 | { | 493 | { |
502 | spin_lock(&ubd_io_lock); | 494 | struct ubd *dev = req->rq_disk->private_data; |
495 | |||
496 | spin_lock(&dev->lock); | ||
503 | __ubd_finish(req, error); | 497 | __ubd_finish(req, error); |
504 | spin_unlock(&ubd_io_lock); | 498 | spin_unlock(&dev->lock); |
505 | } | 499 | } |
506 | 500 | ||
507 | /* XXX - move this inside ubd_intr. */ | 501 | /* XXX - move this inside ubd_intr. */ |
508 | /* Called without ubd_io_lock held, and only in interrupt context. */ | 502 | /* Called without dev->lock held, and only in interrupt context. */ |
509 | static void ubd_handler(void) | 503 | static void ubd_handler(void) |
510 | { | 504 | { |
511 | struct io_thread_req req; | 505 | struct io_thread_req req; |
512 | struct request *rq = elv_next_request(ubd_queue); | 506 | struct request *rq; |
507 | struct ubd *dev; | ||
513 | int n; | 508 | int n; |
514 | 509 | ||
515 | do_ubd = 0; | 510 | do_ubd = 0; |
516 | intr_count++; | ||
517 | n = os_read_file(thread_fd, &req, sizeof(req)); | 511 | n = os_read_file(thread_fd, &req, sizeof(req)); |
518 | if(n != sizeof(req)){ | 512 | if(n != sizeof(req)){ |
519 | printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " | 513 | printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " |
520 | "err = %d\n", os_getpid(), -n); | 514 | "err = %d\n", os_getpid(), -n); |
521 | spin_lock(&ubd_io_lock); | ||
522 | end_request(rq, 0); | ||
523 | spin_unlock(&ubd_io_lock); | ||
524 | return; | 515 | return; |
525 | } | 516 | } |
526 | 517 | ||
518 | rq = req.req; | ||
519 | dev = rq->rq_disk->private_data; | ||
520 | |||
527 | ubd_finish(rq, req.error); | 521 | ubd_finish(rq, req.error); |
528 | reactivate_fd(thread_fd, UBD_IRQ); | 522 | reactivate_fd(thread_fd, UBD_IRQ); |
529 | spin_lock(&ubd_io_lock); | 523 | spin_lock(&dev->lock); |
530 | do_ubd_request(ubd_queue); | 524 | do_ubd_request(dev->queue); |
531 | spin_unlock(&ubd_io_lock); | 525 | spin_unlock(&dev->lock); |
532 | } | 526 | } |
533 | 527 | ||
534 | static irqreturn_t ubd_intr(int irq, void *dev) | 528 | static irqreturn_t ubd_intr(int irq, void *dev) |
@@ -632,8 +626,7 @@ static int ubd_open_dev(struct ubd *ubd_dev) | |||
632 | } | 626 | } |
633 | 627 | ||
634 | static int ubd_disk_register(int major, u64 size, int unit, | 628 | static int ubd_disk_register(int major, u64 size, int unit, |
635 | struct gendisk **disk_out) | 629 | struct gendisk **disk_out) |
636 | |||
637 | { | 630 | { |
638 | struct gendisk *disk; | 631 | struct gendisk *disk; |
639 | 632 | ||
@@ -659,7 +652,7 @@ static int ubd_disk_register(int major, u64 size, int unit, | |||
659 | } | 652 | } |
660 | 653 | ||
661 | disk->private_data = &ubd_devs[unit]; | 654 | disk->private_data = &ubd_devs[unit]; |
662 | disk->queue = ubd_queue; | 655 | disk->queue = ubd_devs[unit].queue; |
663 | add_disk(disk); | 656 | add_disk(disk); |
664 | 657 | ||
665 | *disk_out = disk; | 658 | *disk_out = disk; |
@@ -668,28 +661,39 @@ static int ubd_disk_register(int major, u64 size, int unit, | |||
668 | 661 | ||
669 | #define ROUND_BLOCK(n) ((n + ((1 << 9) - 1)) & (-1 << 9)) | 662 | #define ROUND_BLOCK(n) ((n + ((1 << 9) - 1)) & (-1 << 9)) |
670 | 663 | ||
671 | static int ubd_add(int n) | 664 | static int ubd_add(int n, char **error_out) |
672 | { | 665 | { |
673 | struct ubd *ubd_dev = &ubd_devs[n]; | 666 | struct ubd *ubd_dev = &ubd_devs[n]; |
674 | int err; | 667 | int err = 0; |
675 | 668 | ||
676 | err = -ENODEV; | ||
677 | if(ubd_dev->file == NULL) | 669 | if(ubd_dev->file == NULL) |
678 | goto out; | 670 | goto out; |
679 | 671 | ||
680 | err = ubd_file_size(ubd_dev, &ubd_dev->size); | 672 | err = ubd_file_size(ubd_dev, &ubd_dev->size); |
681 | if(err < 0) | 673 | if(err < 0){ |
674 | *error_out = "Couldn't determine size of device's file"; | ||
682 | goto out; | 675 | goto out; |
676 | } | ||
683 | 677 | ||
684 | ubd_dev->size = ROUND_BLOCK(ubd_dev->size); | 678 | ubd_dev->size = ROUND_BLOCK(ubd_dev->size); |
685 | 679 | ||
686 | err = ubd_disk_register(MAJOR_NR, ubd_dev->size, n, &ubd_gendisk[n]); | 680 | err = -ENOMEM; |
687 | if(err) | 681 | ubd_dev->queue = blk_init_queue(do_ubd_request, &ubd_dev->lock); |
682 | if (ubd_dev->queue == NULL) { | ||
683 | *error_out = "Failed to initialize device queue"; | ||
688 | goto out; | 684 | goto out; |
685 | } | ||
686 | ubd_dev->queue->queuedata = ubd_dev; | ||
687 | |||
688 | err = ubd_disk_register(MAJOR_NR, ubd_dev->size, n, &ubd_gendisk[n]); | ||
689 | if(err){ | ||
690 | *error_out = "Failed to register device"; | ||
691 | goto out_cleanup; | ||
692 | } | ||
689 | 693 | ||
690 | if(fake_major != MAJOR_NR) | 694 | if(fake_major != MAJOR_NR) |
691 | ubd_disk_register(fake_major, ubd_dev->size, n, | 695 | ubd_disk_register(fake_major, ubd_dev->size, n, |
692 | &fake_gendisk[n]); | 696 | &fake_gendisk[n]); |
693 | 697 | ||
694 | /* perhaps this should also be under the "if (fake_major)" above */ | 698 | /* perhaps this should also be under the "if (fake_major)" above */ |
695 | /* using the fake_disk->disk_name and also the fakehd_set name */ | 699 | /* using the fake_disk->disk_name and also the fakehd_set name */ |
@@ -699,30 +703,37 @@ static int ubd_add(int n) | |||
699 | err = 0; | 703 | err = 0; |
700 | out: | 704 | out: |
701 | return err; | 705 | return err; |
706 | |||
707 | out_cleanup: | ||
708 | blk_cleanup_queue(ubd_dev->queue); | ||
709 | goto out; | ||
702 | } | 710 | } |
703 | 711 | ||
704 | static int ubd_config(char *str) | 712 | static int ubd_config(char *str, char **error_out) |
705 | { | 713 | { |
706 | int n, ret; | 714 | int n, ret; |
707 | 715 | ||
716 | /* This string is possibly broken up and stored, so it's only | ||
717 | * freed if ubd_setup_common fails, or if only general options | ||
718 | * were set. | ||
719 | */ | ||
708 | str = kstrdup(str, GFP_KERNEL); | 720 | str = kstrdup(str, GFP_KERNEL); |
709 | if (str == NULL) { | 721 | if (str == NULL) { |
710 | printk(KERN_ERR "ubd_config failed to strdup string\n"); | 722 | *error_out = "Failed to allocate memory"; |
711 | ret = 1; | 723 | return -ENOMEM; |
712 | goto out; | ||
713 | } | 724 | } |
714 | ret = ubd_setup_common(str, &n); | 725 | |
715 | if (ret) { | 726 | ret = ubd_setup_common(str, &n, error_out); |
716 | ret = -1; | 727 | if (ret) |
717 | goto err_free; | 728 | goto err_free; |
718 | } | 729 | |
719 | if (n == -1) { | 730 | if (n == -1) { |
720 | ret = 0; | 731 | ret = 0; |
721 | goto err_free; | 732 | goto err_free; |
722 | } | 733 | } |
723 | 734 | ||
724 | mutex_lock(&ubd_lock); | 735 | mutex_lock(&ubd_lock); |
725 | ret = ubd_add(n); | 736 | ret = ubd_add(n, error_out); |
726 | if (ret) | 737 | if (ret) |
727 | ubd_devs[n].file = NULL; | 738 | ubd_devs[n].file = NULL; |
728 | mutex_unlock(&ubd_lock); | 739 | mutex_unlock(&ubd_lock); |
@@ -777,7 +788,7 @@ static int ubd_id(char **str, int *start_out, int *end_out) | |||
777 | return n; | 788 | return n; |
778 | } | 789 | } |
779 | 790 | ||
780 | static int ubd_remove(int n) | 791 | static int ubd_remove(int n, char **error_out) |
781 | { | 792 | { |
782 | struct ubd *ubd_dev; | 793 | struct ubd *ubd_dev; |
783 | int err = -ENODEV; | 794 | int err = -ENODEV; |
@@ -807,6 +818,7 @@ static int ubd_remove(int n) | |||
807 | fake_gendisk[n] = NULL; | 818 | fake_gendisk[n] = NULL; |
808 | } | 819 | } |
809 | 820 | ||
821 | blk_cleanup_queue(ubd_dev->queue); | ||
810 | platform_device_unregister(&ubd_dev->pdev); | 822 | platform_device_unregister(&ubd_dev->pdev); |
811 | *ubd_dev = ((struct ubd) DEFAULT_UBD); | 823 | *ubd_dev = ((struct ubd) DEFAULT_UBD); |
812 | err = 0; | 824 | err = 0; |
@@ -815,8 +827,11 @@ out: | |||
815 | return err; | 827 | return err; |
816 | } | 828 | } |
817 | 829 | ||
818 | /* All these are called by mconsole in process context and without ubd-specific locks. */ | 830 | /* All these are called by mconsole in process context and without |
831 | * ubd-specific locks. The structure itself is const except for .list. | ||
832 | */ | ||
819 | static struct mc_device ubd_mc = { | 833 | static struct mc_device ubd_mc = { |
834 | .list = LIST_HEAD_INIT(ubd_mc.list), | ||
820 | .name = "ubd", | 835 | .name = "ubd", |
821 | .config = ubd_config, | 836 | .config = ubd_config, |
822 | .get_config = ubd_get_config, | 837 | .get_config = ubd_get_config, |
@@ -836,13 +851,17 @@ static int __init ubd0_init(void) | |||
836 | { | 851 | { |
837 | struct ubd *ubd_dev = &ubd_devs[0]; | 852 | struct ubd *ubd_dev = &ubd_devs[0]; |
838 | 853 | ||
854 | mutex_lock(&ubd_lock); | ||
839 | if(ubd_dev->file == NULL) | 855 | if(ubd_dev->file == NULL) |
840 | ubd_dev->file = "root_fs"; | 856 | ubd_dev->file = "root_fs"; |
857 | mutex_unlock(&ubd_lock); | ||
858 | |||
841 | return(0); | 859 | return(0); |
842 | } | 860 | } |
843 | 861 | ||
844 | __initcall(ubd0_init); | 862 | __initcall(ubd0_init); |
845 | 863 | ||
864 | /* Used in ubd_init, which is an initcall */ | ||
846 | static struct platform_driver ubd_driver = { | 865 | static struct platform_driver ubd_driver = { |
847 | .driver = { | 866 | .driver = { |
848 | .name = DRIVER_NAME, | 867 | .name = DRIVER_NAME, |
@@ -851,17 +870,12 @@ static struct platform_driver ubd_driver = { | |||
851 | 870 | ||
852 | static int __init ubd_init(void) | 871 | static int __init ubd_init(void) |
853 | { | 872 | { |
854 | int i; | 873 | char *error; |
874 | int i, err; | ||
855 | 875 | ||
856 | if (register_blkdev(MAJOR_NR, "ubd")) | 876 | if (register_blkdev(MAJOR_NR, "ubd")) |
857 | return -1; | 877 | return -1; |
858 | 878 | ||
859 | ubd_queue = blk_init_queue(do_ubd_request, &ubd_io_lock); | ||
860 | if (!ubd_queue) { | ||
861 | unregister_blkdev(MAJOR_NR, "ubd"); | ||
862 | return -1; | ||
863 | } | ||
864 | |||
865 | if (fake_major != MAJOR_NR) { | 879 | if (fake_major != MAJOR_NR) { |
866 | char name[sizeof("ubd_nnn\0")]; | 880 | char name[sizeof("ubd_nnn\0")]; |
867 | 881 | ||
@@ -870,8 +884,14 @@ static int __init ubd_init(void) | |||
870 | return -1; | 884 | return -1; |
871 | } | 885 | } |
872 | platform_driver_register(&ubd_driver); | 886 | platform_driver_register(&ubd_driver); |
873 | for (i = 0; i < MAX_DEV; i++) | 887 | mutex_lock(&ubd_lock); |
874 | ubd_add(i); | 888 | for (i = 0; i < MAX_DEV; i++){ |
889 | err = ubd_add(i, &error); | ||
890 | if(err) | ||
891 | printk(KERN_ERR "Failed to initialize ubd device %d :" | ||
892 | "%s\n", i, error); | ||
893 | } | ||
894 | mutex_unlock(&ubd_lock); | ||
875 | return 0; | 895 | return 0; |
876 | } | 896 | } |
877 | 897 | ||
@@ -1003,7 +1023,7 @@ static void cowify_req(struct io_thread_req *req, unsigned long *bitmap, | |||
1003 | req->bitmap_words, bitmap_len); | 1023 | req->bitmap_words, bitmap_len); |
1004 | } | 1024 | } |
1005 | 1025 | ||
1006 | /* Called with ubd_io_lock held */ | 1026 | /* Called with dev->lock held */ |
1007 | static int prepare_request(struct request *req, struct io_thread_req *io_req) | 1027 | static int prepare_request(struct request *req, struct io_thread_req *io_req) |
1008 | { | 1028 | { |
1009 | struct gendisk *disk = req->rq_disk; | 1029 | struct gendisk *disk = req->rq_disk; |
@@ -1022,6 +1042,7 @@ static int prepare_request(struct request *req, struct io_thread_req *io_req) | |||
1022 | offset = ((__u64) req->sector) << 9; | 1042 | offset = ((__u64) req->sector) << 9; |
1023 | len = req->current_nr_sectors << 9; | 1043 | len = req->current_nr_sectors << 9; |
1024 | 1044 | ||
1045 | io_req->req = req; | ||
1025 | io_req->fds[0] = (ubd_dev->cow.file != NULL) ? ubd_dev->cow.fd : ubd_dev->fd; | 1046 | io_req->fds[0] = (ubd_dev->cow.file != NULL) ? ubd_dev->cow.fd : ubd_dev->fd; |
1026 | io_req->fds[1] = ubd_dev->fd; | 1047 | io_req->fds[1] = ubd_dev->fd; |
1027 | io_req->cow_offset = -1; | 1048 | io_req->cow_offset = -1; |
@@ -1043,7 +1064,7 @@ static int prepare_request(struct request *req, struct io_thread_req *io_req) | |||
1043 | return(0); | 1064 | return(0); |
1044 | } | 1065 | } |
1045 | 1066 | ||
1046 | /* Called with ubd_io_lock held */ | 1067 | /* Called with dev->lock held */ |
1047 | static void do_ubd_request(request_queue_t *q) | 1068 | static void do_ubd_request(request_queue_t *q) |
1048 | { | 1069 | { |
1049 | struct io_thread_req io_req; | 1070 | struct io_thread_req io_req; |
@@ -1102,7 +1123,7 @@ static int ubd_ioctl(struct inode * inode, struct file * file, | |||
1102 | sizeof(ubd_id))) | 1123 | sizeof(ubd_id))) |
1103 | return(-EFAULT); | 1124 | return(-EFAULT); |
1104 | return(0); | 1125 | return(0); |
1105 | 1126 | ||
1106 | case CDROMVOLREAD: | 1127 | case CDROMVOLREAD: |
1107 | if(copy_from_user(&volume, (char __user *) arg, sizeof(volume))) | 1128 | if(copy_from_user(&volume, (char __user *) arg, sizeof(volume))) |
1108 | return(-EFAULT); | 1129 | return(-EFAULT); |
diff --git a/arch/um/include/chan_kern.h b/arch/um/include/chan_kern.h index 9003a343e148..c4b41bb1035f 100644 --- a/arch/um/include/chan_kern.h +++ b/arch/um/include/chan_kern.h | |||
@@ -30,14 +30,13 @@ struct chan { | |||
30 | extern void chan_interrupt(struct list_head *chans, struct delayed_work *task, | 30 | extern void chan_interrupt(struct list_head *chans, struct delayed_work *task, |
31 | struct tty_struct *tty, int irq); | 31 | struct tty_struct *tty, int irq); |
32 | extern int parse_chan_pair(char *str, struct line *line, int device, | 32 | extern int parse_chan_pair(char *str, struct line *line, int device, |
33 | const struct chan_opts *opts); | 33 | const struct chan_opts *opts, char **error_out); |
34 | extern int open_chan(struct list_head *chans); | 34 | extern int open_chan(struct list_head *chans); |
35 | extern int write_chan(struct list_head *chans, const char *buf, int len, | 35 | extern int write_chan(struct list_head *chans, const char *buf, int len, |
36 | int write_irq); | 36 | int write_irq); |
37 | extern int console_write_chan(struct list_head *chans, const char *buf, | 37 | extern int console_write_chan(struct list_head *chans, const char *buf, |
38 | int len); | 38 | int len); |
39 | extern int console_open_chan(struct line *line, struct console *co, | 39 | extern int console_open_chan(struct line *line, struct console *co); |
40 | const struct chan_opts *opts); | ||
41 | extern void deactivate_chan(struct list_head *chans, int irq); | 40 | extern void deactivate_chan(struct list_head *chans, int irq); |
42 | extern void reactivate_chan(struct list_head *chans, int irq); | 41 | extern void reactivate_chan(struct list_head *chans, int irq); |
43 | extern void chan_enable_winch(struct list_head *chans, struct tty_struct *tty); | 42 | extern void chan_enable_winch(struct list_head *chans, struct tty_struct *tty); |
diff --git a/arch/um/include/chan_user.h b/arch/um/include/chan_user.h index a795547a1dbd..38f16d812e7c 100644 --- a/arch/um/include/chan_user.h +++ b/arch/um/include/chan_user.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
@@ -9,11 +9,11 @@ | |||
9 | #include "init.h" | 9 | #include "init.h" |
10 | 10 | ||
11 | struct chan_opts { | 11 | struct chan_opts { |
12 | void (*announce)(char *dev_name, int dev); | 12 | void (*const announce)(char *dev_name, int dev); |
13 | char *xterm_title; | 13 | char *xterm_title; |
14 | int raw; | 14 | const int raw; |
15 | unsigned long tramp_stack; | 15 | const unsigned long tramp_stack; |
16 | int in_kernel; | 16 | const int in_kernel; |
17 | }; | 17 | }; |
18 | 18 | ||
19 | enum chan_init_pri { INIT_STATIC, INIT_ALL, INIT_ONE }; | 19 | enum chan_init_pri { INIT_STATIC, INIT_ALL, INIT_ONE }; |
@@ -54,14 +54,3 @@ __uml_help(fn, prefix "[0-9]*=<channel description>\n" \ | |||
54 | ); | 54 | ); |
55 | 55 | ||
56 | #endif | 56 | #endif |
57 | |||
58 | /* | ||
59 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
60 | * Emacs will notice this stuff at the end of the file and automatically | ||
61 | * adjust the settings for this buffer only. This must remain at the end | ||
62 | * of the file. | ||
63 | * --------------------------------------------------------------------------- | ||
64 | * Local variables: | ||
65 | * c-file-style: "linux" | ||
66 | * End: | ||
67 | */ | ||
diff --git a/arch/um/include/kern_util.h b/arch/um/include/kern_util.h index cec9fcc57bf5..173af029d12b 100644 --- a/arch/um/include/kern_util.h +++ b/arch/um/include/kern_util.h | |||
@@ -61,7 +61,6 @@ extern int set_signals(int enable); | |||
61 | extern void force_sigbus(void); | 61 | extern void force_sigbus(void); |
62 | extern int pid_to_processor_id(int pid); | 62 | extern int pid_to_processor_id(int pid); |
63 | extern void deliver_signals(void *t); | 63 | extern void deliver_signals(void *t); |
64 | extern int next_syscall_index(int max); | ||
65 | extern int next_trap_index(int max); | 64 | extern int next_trap_index(int max); |
66 | extern void default_idle(void); | 65 | extern void default_idle(void); |
67 | extern void finish_fork(void); | 66 | extern void finish_fork(void); |
@@ -88,7 +87,6 @@ extern void timer_irq(union uml_pt_regs *regs); | |||
88 | extern void unprotect_stack(unsigned long stack); | 87 | extern void unprotect_stack(unsigned long stack); |
89 | extern void do_uml_exitcalls(void); | 88 | extern void do_uml_exitcalls(void); |
90 | extern int attach_debugger(int idle_pid, int pid, int stop); | 89 | extern int attach_debugger(int idle_pid, int pid, int stop); |
91 | extern void bad_segv(struct faultinfo fi, unsigned long ip); | ||
92 | extern int config_gdb(char *str); | 90 | extern int config_gdb(char *str); |
93 | extern int remove_gdb(void); | 91 | extern int remove_gdb(void); |
94 | extern char *uml_strdup(char *string); | 92 | extern char *uml_strdup(char *string); |
@@ -104,8 +102,6 @@ extern int clear_user_proc(void *buf, int size); | |||
104 | extern int copy_to_user_proc(void *to, void *from, int size); | 102 | extern int copy_to_user_proc(void *to, void *from, int size); |
105 | extern int copy_from_user_proc(void *to, void *from, int size); | 103 | extern int copy_from_user_proc(void *to, void *from, int size); |
106 | extern int strlen_user_proc(char *str); | 104 | extern int strlen_user_proc(char *str); |
107 | extern void bus_handler(int sig, union uml_pt_regs *regs); | ||
108 | extern void winch(int sig, union uml_pt_regs *regs); | ||
109 | extern long execute_syscall(void *r); | 105 | extern long execute_syscall(void *r); |
110 | extern int smp_sigio_handler(void); | 106 | extern int smp_sigio_handler(void); |
111 | extern void *get_current(void); | 107 | extern void *get_current(void); |
@@ -120,7 +116,6 @@ extern void time_init_kern(void); | |||
120 | 116 | ||
121 | /* Are we disallowed to sleep? Used to choose between GFP_KERNEL and GFP_ATOMIC. */ | 117 | /* Are we disallowed to sleep? Used to choose between GFP_KERNEL and GFP_ATOMIC. */ |
122 | extern int __cant_sleep(void); | 118 | extern int __cant_sleep(void); |
123 | extern void segv_handler(int sig, union uml_pt_regs *regs); | ||
124 | extern void sigio_handler(int sig, union uml_pt_regs *regs); | 119 | extern void sigio_handler(int sig, union uml_pt_regs *regs); |
125 | 120 | ||
126 | #endif | 121 | #endif |
diff --git a/arch/um/include/line.h b/arch/um/include/line.h index 5f232ae89fbb..1223f2c844b4 100644 --- a/arch/um/include/line.h +++ b/arch/um/include/line.h | |||
@@ -11,36 +11,37 @@ | |||
11 | #include "linux/tty.h" | 11 | #include "linux/tty.h" |
12 | #include "linux/interrupt.h" | 12 | #include "linux/interrupt.h" |
13 | #include "linux/spinlock.h" | 13 | #include "linux/spinlock.h" |
14 | #include "linux/mutex.h" | ||
14 | #include "chan_user.h" | 15 | #include "chan_user.h" |
15 | #include "mconsole_kern.h" | 16 | #include "mconsole_kern.h" |
16 | 17 | ||
18 | /* There's only one modifiable field in this - .mc.list */ | ||
17 | struct line_driver { | 19 | struct line_driver { |
18 | char *name; | 20 | const char *name; |
19 | char *device_name; | 21 | const char *device_name; |
20 | short major; | 22 | const short major; |
21 | short minor_start; | 23 | const short minor_start; |
22 | short type; | 24 | const short type; |
23 | short subtype; | 25 | const short subtype; |
24 | int read_irq; | 26 | const int read_irq; |
25 | char *read_irq_name; | 27 | const char *read_irq_name; |
26 | int write_irq; | 28 | const int write_irq; |
27 | char *write_irq_name; | 29 | const char *write_irq_name; |
28 | char *symlink_from; | ||
29 | char *symlink_to; | ||
30 | struct mc_device mc; | 30 | struct mc_device mc; |
31 | }; | 31 | }; |
32 | 32 | ||
33 | struct line { | 33 | struct line { |
34 | struct tty_struct *tty; | 34 | struct tty_struct *tty; |
35 | spinlock_t count_lock; | ||
36 | int valid; | ||
37 | |||
35 | char *init_str; | 38 | char *init_str; |
36 | int init_pri; | 39 | int init_pri; |
37 | struct list_head chan_list; | 40 | struct list_head chan_list; |
38 | int valid; | 41 | |
39 | int count; | ||
40 | int throttled; | ||
41 | /*This lock is actually, mostly, local to*/ | 42 | /*This lock is actually, mostly, local to*/ |
42 | spinlock_t lock; | 43 | spinlock_t lock; |
43 | 44 | int throttled; | |
44 | /* Yes, this is a real circular buffer. | 45 | /* Yes, this is a real circular buffer. |
45 | * XXX: And this should become a struct kfifo! | 46 | * XXX: And this should become a struct kfifo! |
46 | * | 47 | * |
@@ -57,22 +58,17 @@ struct line { | |||
57 | }; | 58 | }; |
58 | 59 | ||
59 | #define LINE_INIT(str, d) \ | 60 | #define LINE_INIT(str, d) \ |
60 | { .init_str = str, \ | 61 | { .count_lock = SPIN_LOCK_UNLOCKED, \ |
62 | .init_str = str, \ | ||
61 | .init_pri = INIT_STATIC, \ | 63 | .init_pri = INIT_STATIC, \ |
62 | .valid = 1, \ | 64 | .valid = 1, \ |
63 | .lock = SPIN_LOCK_UNLOCKED, \ | 65 | .lock = SPIN_LOCK_UNLOCKED, \ |
64 | .driver = d } | 66 | .driver = d } |
65 | 67 | ||
66 | struct lines { | ||
67 | int num; | ||
68 | }; | ||
69 | |||
70 | #define LINES_INIT(n) { .num = n } | ||
71 | |||
72 | extern void line_close(struct tty_struct *tty, struct file * filp); | 68 | extern void line_close(struct tty_struct *tty, struct file * filp); |
73 | extern int line_open(struct line *lines, struct tty_struct *tty); | 69 | extern int line_open(struct line *lines, struct tty_struct *tty); |
74 | extern int line_setup(struct line *lines, unsigned int sizeof_lines, | 70 | extern int line_setup(struct line *lines, unsigned int sizeof_lines, |
75 | char *init); | 71 | char *init, char **error_out); |
76 | extern int line_write(struct tty_struct *tty, const unsigned char *buf, | 72 | extern int line_write(struct tty_struct *tty, const unsigned char *buf, |
77 | int len); | 73 | int len); |
78 | extern void line_put_char(struct tty_struct *tty, unsigned char ch); | 74 | extern void line_put_char(struct tty_struct *tty, unsigned char ch); |
@@ -90,17 +86,18 @@ extern char *add_xterm_umid(char *base); | |||
90 | extern int line_setup_irq(int fd, int input, int output, struct line *line, | 86 | extern int line_setup_irq(int fd, int input, int output, struct line *line, |
91 | void *data); | 87 | void *data); |
92 | extern void line_close_chan(struct line *line); | 88 | extern void line_close_chan(struct line *line); |
93 | extern struct tty_driver * line_register_devfs(struct lines *set, | 89 | extern struct tty_driver *register_lines(struct line_driver *line_driver, |
94 | struct line_driver *line_driver, | 90 | const struct tty_operations *driver, |
95 | const struct tty_operations *driver, | 91 | struct line *lines, int nlines); |
96 | struct line *lines, int nlines); | ||
97 | extern void lines_init(struct line *lines, int nlines, struct chan_opts *opts); | 92 | extern void lines_init(struct line *lines, int nlines, struct chan_opts *opts); |
98 | extern void close_lines(struct line *lines, int nlines); | 93 | extern void close_lines(struct line *lines, int nlines); |
99 | 94 | ||
100 | extern int line_config(struct line *lines, unsigned int sizeof_lines, | 95 | extern int line_config(struct line *lines, unsigned int sizeof_lines, |
101 | char *str, const struct chan_opts *opts); | 96 | char *str, const struct chan_opts *opts, |
97 | char **error_out); | ||
102 | extern int line_id(char **str, int *start_out, int *end_out); | 98 | extern int line_id(char **str, int *start_out, int *end_out); |
103 | extern int line_remove(struct line *lines, unsigned int sizeof_lines, int n); | 99 | extern int line_remove(struct line *lines, unsigned int sizeof_lines, int n, |
100 | char **error_out); | ||
104 | extern int line_get_config(char *dev, struct line *lines, | 101 | extern int line_get_config(char *dev, struct line *lines, |
105 | unsigned int sizeof_lines, char *str, | 102 | unsigned int sizeof_lines, char *str, |
106 | int size, char **error_out); | 103 | int size, char **error_out); |
diff --git a/arch/um/include/mconsole_kern.h b/arch/um/include/mconsole_kern.h index 1ea6d928e1cd..d2fe07e78958 100644 --- a/arch/um/include/mconsole_kern.h +++ b/arch/um/include/mconsole_kern.h | |||
@@ -18,10 +18,10 @@ struct mconsole_entry { | |||
18 | struct mc_device { | 18 | struct mc_device { |
19 | struct list_head list; | 19 | struct list_head list; |
20 | char *name; | 20 | char *name; |
21 | int (*config)(char *); | 21 | int (*config)(char *, char **); |
22 | int (*get_config)(char *, char *, int, char **); | 22 | int (*get_config)(char *, char *, int, char **); |
23 | int (*id)(char **, int *, int *); | 23 | int (*id)(char **, int *, int *); |
24 | int (*remove)(int); | 24 | int (*remove)(int, char **); |
25 | }; | 25 | }; |
26 | 26 | ||
27 | #define CONFIG_CHUNK(str, size, current, chunk, end) \ | 27 | #define CONFIG_CHUNK(str, size, current, chunk, end) \ |
@@ -50,14 +50,3 @@ static inline void mconsole_register_dev(struct mc_device *new) | |||
50 | #endif | 50 | #endif |
51 | 51 | ||
52 | #endif | 52 | #endif |
53 | |||
54 | /* | ||
55 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
56 | * Emacs will notice this stuff at the end of the file and automatically | ||
57 | * adjust the settings for this buffer only. This must remain at the end | ||
58 | * of the file. | ||
59 | * --------------------------------------------------------------------------- | ||
60 | * Local variables: | ||
61 | * c-file-style: "linux" | ||
62 | * End: | ||
63 | */ | ||
diff --git a/arch/um/include/net_kern.h b/arch/um/include/net_kern.h index 218f8b47fdcd..125ab42df18a 100644 --- a/arch/um/include/net_kern.h +++ b/arch/um/include/net_kern.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
@@ -36,7 +36,7 @@ struct uml_net_private { | |||
36 | void (*remove)(void *); | 36 | void (*remove)(void *); |
37 | int (*read)(int, struct sk_buff **skb, struct uml_net_private *); | 37 | int (*read)(int, struct sk_buff **skb, struct uml_net_private *); |
38 | int (*write)(int, struct sk_buff **skb, struct uml_net_private *); | 38 | int (*write)(int, struct sk_buff **skb, struct uml_net_private *); |
39 | 39 | ||
40 | void (*add_address)(unsigned char *, unsigned char *, void *); | 40 | void (*add_address)(unsigned char *, unsigned char *, void *); |
41 | void (*delete_address)(unsigned char *, unsigned char *, void *); | 41 | void (*delete_address)(unsigned char *, unsigned char *, void *); |
42 | int (*set_mtu)(int mtu, void *); | 42 | int (*set_mtu)(int mtu, void *); |
@@ -52,18 +52,18 @@ struct net_kern_info { | |||
52 | 52 | ||
53 | struct transport { | 53 | struct transport { |
54 | struct list_head list; | 54 | struct list_head list; |
55 | char *name; | 55 | const char *name; |
56 | int (*setup)(char *, char **, void *); | 56 | int (* const setup)(char *, char **, void *); |
57 | const struct net_user_info *user; | 57 | const struct net_user_info *user; |
58 | const struct net_kern_info *kern; | 58 | const struct net_kern_info *kern; |
59 | int private_size; | 59 | const int private_size; |
60 | int setup_size; | 60 | const int setup_size; |
61 | }; | 61 | }; |
62 | 62 | ||
63 | extern struct net_device *ether_init(int); | 63 | extern struct net_device *ether_init(int); |
64 | extern unsigned short ether_protocol(struct sk_buff *); | 64 | extern unsigned short ether_protocol(struct sk_buff *); |
65 | extern struct sk_buff *ether_adjust_skb(struct sk_buff *skb, int extra); | 65 | extern struct sk_buff *ether_adjust_skb(struct sk_buff *skb, int extra); |
66 | extern int tap_setup_common(char *str, char *type, char **dev_name, | 66 | extern int tap_setup_common(char *str, char *type, char **dev_name, |
67 | char **mac_out, char **gate_addr); | 67 | char **mac_out, char **gate_addr); |
68 | extern void register_transport(struct transport *new); | 68 | extern void register_transport(struct transport *new); |
69 | extern unsigned short eth_protocol(struct sk_buff *skb); | 69 | extern unsigned short eth_protocol(struct sk_buff *skb); |
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index 13a86bd383d3..8629bd191492 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h | |||
@@ -137,7 +137,6 @@ extern int os_new_tty_pgrp(int fd, int pid); | |||
137 | extern int os_get_ifname(int fd, char *namebuf); | 137 | extern int os_get_ifname(int fd, char *namebuf); |
138 | extern int os_set_slip(int fd); | 138 | extern int os_set_slip(int fd); |
139 | extern int os_set_owner(int fd, int pid); | 139 | extern int os_set_owner(int fd, int pid); |
140 | extern int os_sigio_async(int master, int slave); | ||
141 | extern int os_mode_fd(int fd, int mode); | 140 | extern int os_mode_fd(int fd, int mode); |
142 | 141 | ||
143 | extern int os_seek_file(int fd, __u64 offset); | 142 | extern int os_seek_file(int fd, __u64 offset); |
@@ -341,4 +340,6 @@ extern void maybe_sigio_broken(int fd, int read); | |||
341 | extern void sig_handler_common_skas(int sig, void *sc_ptr); | 340 | extern void sig_handler_common_skas(int sig, void *sc_ptr); |
342 | extern void user_signal(int sig, union uml_pt_regs *regs, int pid); | 341 | extern void user_signal(int sig, union uml_pt_regs *regs, int pid); |
343 | 342 | ||
343 | extern int os_arch_prctl(int pid, int code, unsigned long *addr); | ||
344 | |||
344 | #endif | 345 | #endif |
diff --git a/arch/um/include/sigio.h b/arch/um/include/sigio.h index fe99ea163c2e..434f1a9ae4b3 100644 --- a/arch/um/include/sigio.h +++ b/arch/um/include/sigio.h | |||
@@ -12,14 +12,3 @@ extern void sigio_lock(void); | |||
12 | extern void sigio_unlock(void); | 12 | extern void sigio_unlock(void); |
13 | 13 | ||
14 | #endif | 14 | #endif |
15 | |||
16 | /* | ||
17 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
18 | * Emacs will notice this stuff at the end of the file and automatically | ||
19 | * adjust the settings for this buffer only. This must remain at the end | ||
20 | * of the file. | ||
21 | * --------------------------------------------------------------------------- | ||
22 | * Local variables: | ||
23 | * c-file-style: "linux" | ||
24 | * End: | ||
25 | */ | ||
diff --git a/arch/um/include/tempfile.h b/arch/um/include/tempfile.h index e36d9e0f5105..d441eac936b9 100644 --- a/arch/um/include/tempfile.h +++ b/arch/um/include/tempfile.h | |||
@@ -9,13 +9,3 @@ | |||
9 | extern int make_tempfile(const char *template, char **tempname, int do_unlink); | 9 | extern int make_tempfile(const char *template, char **tempname, int do_unlink); |
10 | 10 | ||
11 | #endif | 11 | #endif |
12 | /* | ||
13 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
14 | * Emacs will notice this stuff at the end of the file and automatically | ||
15 | * adjust the settings for this buffer only. This must remain at the end | ||
16 | * of the file. | ||
17 | * --------------------------------------------------------------------------- | ||
18 | * Local variables: | ||
19 | * c-file-style: "linux" | ||
20 | * End: | ||
21 | */ | ||
diff --git a/arch/um/include/umid.h b/arch/um/include/umid.h deleted file mode 100644 index 11373c851f15..000000000000 --- a/arch/um/include/umid.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Jeff Dike (jdike@karaya.com) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #ifndef __UMID_H__ | ||
7 | #define __UMID_H__ | ||
8 | |||
9 | extern int umid_file_name(char *name, char *buf, int len); | ||
10 | |||
11 | #endif | ||
12 | |||
13 | /* | ||
14 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
15 | * Emacs will notice this stuff at the end of the file and automatically | ||
16 | * adjust the settings for this buffer only. This must remain at the end | ||
17 | * of the file. | ||
18 | * --------------------------------------------------------------------------- | ||
19 | * Local variables: | ||
20 | * c-file-style: "linux" | ||
21 | * End: | ||
22 | */ | ||
diff --git a/arch/um/include/user_util.h b/arch/um/include/user_util.h index 06625fefef33..023575f67343 100644 --- a/arch/um/include/user_util.h +++ b/arch/um/include/user_util.h | |||
@@ -38,8 +38,6 @@ extern unsigned long long highmem; | |||
38 | 38 | ||
39 | extern char host_info[]; | 39 | extern char host_info[]; |
40 | 40 | ||
41 | extern char saved_command_line[]; | ||
42 | |||
43 | extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end; | 41 | extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end; |
44 | extern unsigned long _unprotected_end; | 42 | extern unsigned long _unprotected_end; |
45 | extern unsigned long brk_start; | 43 | extern unsigned long brk_start; |
diff --git a/arch/um/kernel/Makefile b/arch/um/kernel/Makefile index 6fa63a2a89e3..c5cf4a0827b0 100644 --- a/arch/um/kernel/Makefile +++ b/arch/um/kernel/Makefile | |||
@@ -7,7 +7,7 @@ extra-y := vmlinux.lds | |||
7 | clean-files := | 7 | clean-files := |
8 | 8 | ||
9 | obj-y = config.o exec.o exitcode.o init_task.o irq.o ksyms.o mem.o \ | 9 | obj-y = config.o exec.o exitcode.o init_task.o irq.o ksyms.o mem.o \ |
10 | physmem.o process.o ptrace.o reboot.o resource.o sigio.o \ | 10 | physmem.o process.o ptrace.o reboot.o sigio.o \ |
11 | signal.o smp.o syscall.o sysrq.o time.o tlb.o trap.o uaccess.o \ | 11 | signal.o smp.o syscall.o sysrq.o time.o tlb.o trap.o uaccess.o \ |
12 | um_arch.o umid.o | 12 | um_arch.o umid.o |
13 | 13 | ||
diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c index 8d56ec6cca79..121166400e25 100644 --- a/arch/um/kernel/exec.c +++ b/arch/um/kernel/exec.c | |||
@@ -39,9 +39,9 @@ static long execve1(char *file, char __user * __user *argv, | |||
39 | char __user *__user *env) | 39 | char __user *__user *env) |
40 | { | 40 | { |
41 | long error; | 41 | long error; |
42 | #ifdef CONFIG_TTY_LOG | ||
42 | struct tty_struct *tty; | 43 | struct tty_struct *tty; |
43 | 44 | ||
44 | #ifdef CONFIG_TTY_LOG | ||
45 | mutex_lock(&tty_mutex); | 45 | mutex_lock(&tty_mutex); |
46 | tty = get_current_tty(); | 46 | tty = get_current_tty(); |
47 | if (tty) | 47 | if (tty) |
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c index 5c1e611f628d..50a288bb875a 100644 --- a/arch/um/kernel/irq.c +++ b/arch/um/kernel/irq.c | |||
@@ -79,7 +79,7 @@ skip: | |||
79 | return 0; | 79 | return 0; |
80 | } | 80 | } |
81 | 81 | ||
82 | struct irq_fd *active_fds = NULL; | 82 | static struct irq_fd *active_fds = NULL; |
83 | static struct irq_fd **last_irq_ptr = &active_fds; | 83 | static struct irq_fd **last_irq_ptr = &active_fds; |
84 | 84 | ||
85 | extern void free_irqs(void); | 85 | extern void free_irqs(void); |
@@ -124,8 +124,8 @@ int activate_fd(int irq, int fd, int type, void *dev_id) | |||
124 | if (err < 0) | 124 | if (err < 0) |
125 | goto out; | 125 | goto out; |
126 | 126 | ||
127 | new_fd = um_kmalloc(sizeof(*new_fd)); | ||
128 | err = -ENOMEM; | 127 | err = -ENOMEM; |
128 | new_fd = kmalloc(sizeof(struct irq_fd), GFP_KERNEL); | ||
129 | if (new_fd == NULL) | 129 | if (new_fd == NULL) |
130 | goto out; | 130 | goto out; |
131 | 131 | ||
@@ -176,9 +176,8 @@ int activate_fd(int irq, int fd, int type, void *dev_id) | |||
176 | */ | 176 | */ |
177 | spin_unlock_irqrestore(&irq_lock, flags); | 177 | spin_unlock_irqrestore(&irq_lock, flags); |
178 | kfree(tmp_pfd); | 178 | kfree(tmp_pfd); |
179 | tmp_pfd = NULL; | ||
180 | 179 | ||
181 | tmp_pfd = um_kmalloc(n); | 180 | tmp_pfd = kmalloc(n, GFP_KERNEL); |
182 | if (tmp_pfd == NULL) | 181 | if (tmp_pfd == NULL) |
183 | goto out_kfree; | 182 | goto out_kfree; |
184 | 183 | ||
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c index c95855ba6ab5..e85d65deea0d 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c | |||
@@ -24,8 +24,9 @@ | |||
24 | #include "init.h" | 24 | #include "init.h" |
25 | #include "kern_constants.h" | 25 | #include "kern_constants.h" |
26 | 26 | ||
27 | /* Changed during early boot */ | 27 | /* allocated in paging_init, zeroed in mem_init, and unchanged thereafter */ |
28 | unsigned long *empty_zero_page = NULL; | 28 | unsigned long *empty_zero_page = NULL; |
29 | /* allocated in paging_init and unchanged thereafter */ | ||
29 | unsigned long *empty_bad_page = NULL; | 30 | unsigned long *empty_bad_page = NULL; |
30 | pgd_t swapper_pg_dir[PTRS_PER_PGD]; | 31 | pgd_t swapper_pg_dir[PTRS_PER_PGD]; |
31 | unsigned long long highmem; | 32 | unsigned long long highmem; |
@@ -65,8 +66,8 @@ void mem_init(void) | |||
65 | { | 66 | { |
66 | max_low_pfn = (high_physmem - uml_physmem) >> PAGE_SHIFT; | 67 | max_low_pfn = (high_physmem - uml_physmem) >> PAGE_SHIFT; |
67 | 68 | ||
68 | /* clear the zero-page */ | 69 | /* clear the zero-page */ |
69 | memset((void *) empty_zero_page, 0, PAGE_SIZE); | 70 | memset((void *) empty_zero_page, 0, PAGE_SIZE); |
70 | 71 | ||
71 | /* Map in the area just after the brk now that kmalloc is about | 72 | /* Map in the area just after the brk now that kmalloc is about |
72 | * to be turned on. | 73 | * to be turned on. |
@@ -253,8 +254,10 @@ struct page *arch_validate(struct page *page, gfp_t mask, int order) | |||
253 | int i; | 254 | int i; |
254 | 255 | ||
255 | again: | 256 | again: |
256 | if(page == NULL) return(page); | 257 | if(page == NULL) |
257 | if(PageHighMem(page)) return(page); | 258 | return page; |
259 | if(PageHighMem(page)) | ||
260 | return page; | ||
258 | 261 | ||
259 | addr = (unsigned long) page_address(page); | 262 | addr = (unsigned long) page_address(page); |
260 | for(i = 0; i < (1 << order); i++){ | 263 | for(i = 0; i < (1 << order); i++){ |
@@ -263,13 +266,15 @@ struct page *arch_validate(struct page *page, gfp_t mask, int order) | |||
263 | sizeof(zero), | 266 | sizeof(zero), |
264 | ¤t->thread.fault_addr, | 267 | ¤t->thread.fault_addr, |
265 | ¤t->thread.fault_catcher)){ | 268 | ¤t->thread.fault_catcher)){ |
266 | if(!(mask & __GFP_WAIT)) return(NULL); | 269 | if(!(mask & __GFP_WAIT)) |
270 | return NULL; | ||
267 | else break; | 271 | else break; |
268 | } | 272 | } |
269 | addr += PAGE_SIZE; | 273 | addr += PAGE_SIZE; |
270 | } | 274 | } |
271 | 275 | ||
272 | if(i == (1 << order)) return(page); | 276 | if(i == (1 << order)) |
277 | return page; | ||
273 | page = alloc_pages(mask, order); | 278 | page = alloc_pages(mask, order); |
274 | goto again; | 279 | goto again; |
275 | } | 280 | } |
@@ -283,7 +288,6 @@ void free_initmem(void) | |||
283 | } | 288 | } |
284 | 289 | ||
285 | #ifdef CONFIG_BLK_DEV_INITRD | 290 | #ifdef CONFIG_BLK_DEV_INITRD |
286 | |||
287 | void free_initrd_mem(unsigned long start, unsigned long end) | 291 | void free_initrd_mem(unsigned long start, unsigned long end) |
288 | { | 292 | { |
289 | if (start < end) | 293 | if (start < end) |
@@ -296,37 +300,36 @@ void free_initrd_mem(unsigned long start, unsigned long end) | |||
296 | totalram_pages++; | 300 | totalram_pages++; |
297 | } | 301 | } |
298 | } | 302 | } |
299 | |||
300 | #endif | 303 | #endif |
301 | 304 | ||
302 | void show_mem(void) | 305 | void show_mem(void) |
303 | { | 306 | { |
304 | int pfn, total = 0, reserved = 0; | 307 | int pfn, total = 0, reserved = 0; |
305 | int shared = 0, cached = 0; | 308 | int shared = 0, cached = 0; |
306 | int highmem = 0; | 309 | int highmem = 0; |
307 | struct page *page; | 310 | struct page *page; |
308 | 311 | ||
309 | printk("Mem-info:\n"); | 312 | printk("Mem-info:\n"); |
310 | show_free_areas(); | 313 | show_free_areas(); |
311 | printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); | 314 | printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); |
312 | pfn = max_mapnr; | 315 | pfn = max_mapnr; |
313 | while(pfn-- > 0) { | 316 | while(pfn-- > 0) { |
314 | page = pfn_to_page(pfn); | 317 | page = pfn_to_page(pfn); |
315 | total++; | 318 | total++; |
316 | if(PageHighMem(page)) | 319 | if(PageHighMem(page)) |
317 | highmem++; | 320 | highmem++; |
318 | if(PageReserved(page)) | 321 | if(PageReserved(page)) |
319 | reserved++; | 322 | reserved++; |
320 | else if(PageSwapCache(page)) | 323 | else if(PageSwapCache(page)) |
321 | cached++; | 324 | cached++; |
322 | else if(page_count(page)) | 325 | else if(page_count(page)) |
323 | shared += page_count(page) - 1; | 326 | shared += page_count(page) - 1; |
324 | } | 327 | } |
325 | printk("%d pages of RAM\n", total); | 328 | printk("%d pages of RAM\n", total); |
326 | printk("%d pages of HIGHMEM\n", highmem); | 329 | printk("%d pages of HIGHMEM\n", highmem); |
327 | printk("%d reserved pages\n", reserved); | 330 | printk("%d reserved pages\n", reserved); |
328 | printk("%d pages shared\n", shared); | 331 | printk("%d pages shared\n", shared); |
329 | printk("%d pages swap cached\n", cached); | 332 | printk("%d pages swap cached\n", cached); |
330 | } | 333 | } |
331 | 334 | ||
332 | /* | 335 | /* |
@@ -362,28 +365,7 @@ pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) | |||
362 | struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) | 365 | struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) |
363 | { | 366 | { |
364 | struct page *pte; | 367 | struct page *pte; |
365 | 368 | ||
366 | pte = alloc_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); | 369 | pte = alloc_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); |
367 | return pte; | 370 | return pte; |
368 | } | 371 | } |
369 | |||
370 | struct iomem_region *iomem_regions = NULL; | ||
371 | int iomem_size = 0; | ||
372 | |||
373 | extern int parse_iomem(char *str, int *add) __init; | ||
374 | |||
375 | __uml_setup("iomem=", parse_iomem, | ||
376 | "iomem=<name>,<file>\n" | ||
377 | " Configure <file> as an IO memory region named <name>.\n\n" | ||
378 | ); | ||
379 | |||
380 | /* | ||
381 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
382 | * Emacs will notice this stuff at the end of the file and automatically | ||
383 | * adjust the settings for this buffer only. This must remain at the end | ||
384 | * of the file. | ||
385 | * --------------------------------------------------------------------------- | ||
386 | * Local variables: | ||
387 | * c-file-style: "linux" | ||
388 | * End: | ||
389 | */ | ||
diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c index abafa64b8727..638f3b5f6094 100644 --- a/arch/um/kernel/physmem.c +++ b/arch/um/kernel/physmem.c | |||
@@ -40,7 +40,7 @@ static struct rb_node **find_rb(void *virt) | |||
40 | while(*n != NULL){ | 40 | while(*n != NULL){ |
41 | d = rb_entry(*n, struct phys_desc, rb); | 41 | d = rb_entry(*n, struct phys_desc, rb); |
42 | if(d->virt == virt) | 42 | if(d->virt == virt) |
43 | return(n); | 43 | return n; |
44 | 44 | ||
45 | if(d->virt > virt) | 45 | if(d->virt > virt) |
46 | n = &(*n)->rb_left; | 46 | n = &(*n)->rb_left; |
@@ -48,7 +48,7 @@ static struct rb_node **find_rb(void *virt) | |||
48 | n = &(*n)->rb_right; | 48 | n = &(*n)->rb_right; |
49 | } | 49 | } |
50 | 50 | ||
51 | return(n); | 51 | return n; |
52 | } | 52 | } |
53 | 53 | ||
54 | static struct phys_desc *find_phys_mapping(void *virt) | 54 | static struct phys_desc *find_phys_mapping(void *virt) |
@@ -56,9 +56,9 @@ static struct phys_desc *find_phys_mapping(void *virt) | |||
56 | struct rb_node **n = find_rb(virt); | 56 | struct rb_node **n = find_rb(virt); |
57 | 57 | ||
58 | if(*n == NULL) | 58 | if(*n == NULL) |
59 | return(NULL); | 59 | return NULL; |
60 | 60 | ||
61 | return(rb_entry(*n, struct phys_desc, rb)); | 61 | return rb_entry(*n, struct phys_desc, rb); |
62 | } | 62 | } |
63 | 63 | ||
64 | static void insert_phys_mapping(struct phys_desc *desc) | 64 | static void insert_phys_mapping(struct phys_desc *desc) |
@@ -89,10 +89,10 @@ static struct desc_mapping *find_mapping(int fd) | |||
89 | list_for_each(ele, &descriptor_mappings){ | 89 | list_for_each(ele, &descriptor_mappings){ |
90 | desc = list_entry(ele, struct desc_mapping, list); | 90 | desc = list_entry(ele, struct desc_mapping, list); |
91 | if(desc->fd == fd) | 91 | if(desc->fd == fd) |
92 | return(desc); | 92 | return desc; |
93 | } | 93 | } |
94 | 94 | ||
95 | return(NULL); | 95 | return NULL; |
96 | } | 96 | } |
97 | 97 | ||
98 | static struct desc_mapping *descriptor_mapping(int fd) | 98 | static struct desc_mapping *descriptor_mapping(int fd) |
@@ -101,11 +101,11 @@ static struct desc_mapping *descriptor_mapping(int fd) | |||
101 | 101 | ||
102 | desc = find_mapping(fd); | 102 | desc = find_mapping(fd); |
103 | if(desc != NULL) | 103 | if(desc != NULL) |
104 | return(desc); | 104 | return desc; |
105 | 105 | ||
106 | desc = kmalloc(sizeof(*desc), GFP_ATOMIC); | 106 | desc = kmalloc(sizeof(*desc), GFP_ATOMIC); |
107 | if(desc == NULL) | 107 | if(desc == NULL) |
108 | return(NULL); | 108 | return NULL; |
109 | 109 | ||
110 | *desc = ((struct desc_mapping) | 110 | *desc = ((struct desc_mapping) |
111 | { .fd = fd, | 111 | { .fd = fd, |
@@ -113,7 +113,7 @@ static struct desc_mapping *descriptor_mapping(int fd) | |||
113 | .pages = LIST_HEAD_INIT(desc->pages) }); | 113 | .pages = LIST_HEAD_INIT(desc->pages) }); |
114 | list_add(&desc->list, &descriptor_mappings); | 114 | list_add(&desc->list, &descriptor_mappings); |
115 | 115 | ||
116 | return(desc); | 116 | return desc; |
117 | } | 117 | } |
118 | 118 | ||
119 | int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w) | 119 | int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w) |
@@ -125,11 +125,11 @@ int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w) | |||
125 | 125 | ||
126 | fd_maps = descriptor_mapping(fd); | 126 | fd_maps = descriptor_mapping(fd); |
127 | if(fd_maps == NULL) | 127 | if(fd_maps == NULL) |
128 | return(-ENOMEM); | 128 | return -ENOMEM; |
129 | 129 | ||
130 | phys = __pa(virt); | 130 | phys = __pa(virt); |
131 | desc = find_phys_mapping(virt); | 131 | desc = find_phys_mapping(virt); |
132 | if(desc != NULL) | 132 | if(desc != NULL) |
133 | panic("Address 0x%p is already substituted\n", virt); | 133 | panic("Address 0x%p is already substituted\n", virt); |
134 | 134 | ||
135 | err = -ENOMEM; | 135 | err = -ENOMEM; |
@@ -155,7 +155,7 @@ int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w) | |||
155 | rb_erase(&desc->rb, &phys_mappings); | 155 | rb_erase(&desc->rb, &phys_mappings); |
156 | kfree(desc); | 156 | kfree(desc); |
157 | out: | 157 | out: |
158 | return(err); | 158 | return err; |
159 | } | 159 | } |
160 | 160 | ||
161 | static int physmem_fd = -1; | 161 | static int physmem_fd = -1; |
@@ -182,10 +182,10 @@ int physmem_remove_mapping(void *virt) | |||
182 | virt = (void *) ((unsigned long) virt & PAGE_MASK); | 182 | virt = (void *) ((unsigned long) virt & PAGE_MASK); |
183 | desc = find_phys_mapping(virt); | 183 | desc = find_phys_mapping(virt); |
184 | if(desc == NULL) | 184 | if(desc == NULL) |
185 | return(0); | 185 | return 0; |
186 | 186 | ||
187 | remove_mapping(desc); | 187 | remove_mapping(desc); |
188 | return(1); | 188 | return 1; |
189 | } | 189 | } |
190 | 190 | ||
191 | void physmem_forget_descriptor(int fd) | 191 | void physmem_forget_descriptor(int fd) |
@@ -239,9 +239,9 @@ void arch_free_page(struct page *page, int order) | |||
239 | 239 | ||
240 | int is_remapped(void *virt) | 240 | int is_remapped(void *virt) |
241 | { | 241 | { |
242 | struct phys_desc *desc = find_phys_mapping(virt); | 242 | struct phys_desc *desc = find_phys_mapping(virt); |
243 | 243 | ||
244 | return(desc != NULL); | 244 | return desc != NULL; |
245 | } | 245 | } |
246 | 246 | ||
247 | /* Changed during early boot */ | 247 | /* Changed during early boot */ |
@@ -276,7 +276,7 @@ int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) | |||
276 | else map = alloc_bootmem_low_pages(total_len); | 276 | else map = alloc_bootmem_low_pages(total_len); |
277 | 277 | ||
278 | if(map == NULL) | 278 | if(map == NULL) |
279 | return(-ENOMEM); | 279 | return -ENOMEM; |
280 | 280 | ||
281 | for(i = 0; i < total_pages; i++){ | 281 | for(i = 0; i < total_pages; i++){ |
282 | p = &map[i]; | 282 | p = &map[i]; |
@@ -286,7 +286,7 @@ int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) | |||
286 | } | 286 | } |
287 | 287 | ||
288 | max_mapnr = total_pages; | 288 | max_mapnr = total_pages; |
289 | return(0); | 289 | return 0; |
290 | } | 290 | } |
291 | 291 | ||
292 | /* Changed during early boot */ | 292 | /* Changed during early boot */ |
@@ -296,7 +296,7 @@ unsigned long get_kmem_end(void) | |||
296 | { | 296 | { |
297 | if(kmem_top == 0) | 297 | if(kmem_top == 0) |
298 | kmem_top = CHOOSE_MODE(kmem_end_tt, kmem_end_skas); | 298 | kmem_top = CHOOSE_MODE(kmem_end_tt, kmem_end_skas); |
299 | return(kmem_top); | 299 | return kmem_top; |
300 | } | 300 | } |
301 | 301 | ||
302 | void map_memory(unsigned long virt, unsigned long phys, unsigned long len, | 302 | void map_memory(unsigned long virt, unsigned long phys, unsigned long len, |
@@ -379,7 +379,7 @@ int phys_mapping(unsigned long phys, __u64 *offset_out) | |||
379 | *offset_out = phys - iomem_size; | 379 | *offset_out = phys - iomem_size; |
380 | } | 380 | } |
381 | 381 | ||
382 | return(fd); | 382 | return fd; |
383 | } | 383 | } |
384 | 384 | ||
385 | static int __init uml_mem_setup(char *line, int *add) | 385 | static int __init uml_mem_setup(char *line, int *add) |
@@ -398,6 +398,23 @@ __uml_setup("mem=", uml_mem_setup, | |||
398 | " Example: mem=64M\n\n" | 398 | " Example: mem=64M\n\n" |
399 | ); | 399 | ); |
400 | 400 | ||
401 | extern int __init parse_iomem(char *str, int *add); | ||
402 | |||
403 | __uml_setup("iomem=", parse_iomem, | ||
404 | "iomem=<name>,<file>\n" | ||
405 | " Configure <file> as an IO memory region named <name>.\n\n" | ||
406 | ); | ||
407 | |||
408 | /* | ||
409 | * This list is constructed in parse_iomem and addresses filled in in | ||
410 | * setup_iomem, both of which run during early boot. Afterwards, it's | ||
411 | * unchanged. | ||
412 | */ | ||
413 | struct iomem_region *iomem_regions = NULL; | ||
414 | |||
415 | /* Initialized in parse_iomem */ | ||
416 | int iomem_size = 0; | ||
417 | |||
401 | unsigned long find_iomem(char *driver, unsigned long *len_out) | 418 | unsigned long find_iomem(char *driver, unsigned long *len_out) |
402 | { | 419 | { |
403 | struct iomem_region *region = iomem_regions; | 420 | struct iomem_region *region = iomem_regions; |
@@ -405,13 +422,13 @@ unsigned long find_iomem(char *driver, unsigned long *len_out) | |||
405 | while(region != NULL){ | 422 | while(region != NULL){ |
406 | if(!strcmp(region->driver, driver)){ | 423 | if(!strcmp(region->driver, driver)){ |
407 | *len_out = region->size; | 424 | *len_out = region->size; |
408 | return(region->virt); | 425 | return region->virt; |
409 | } | 426 | } |
410 | 427 | ||
411 | region = region->next; | 428 | region = region->next; |
412 | } | 429 | } |
413 | 430 | ||
414 | return(0); | 431 | return 0; |
415 | } | 432 | } |
416 | 433 | ||
417 | int setup_iomem(void) | 434 | int setup_iomem(void) |
@@ -435,18 +452,7 @@ int setup_iomem(void) | |||
435 | region = region->next; | 452 | region = region->next; |
436 | } | 453 | } |
437 | 454 | ||
438 | return(0); | 455 | return 0; |
439 | } | 456 | } |
440 | 457 | ||
441 | __initcall(setup_iomem); | 458 | __initcall(setup_iomem); |
442 | |||
443 | /* | ||
444 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
445 | * Emacs will notice this stuff at the end of the file and automatically | ||
446 | * adjust the settings for this buffer only. This must remain at the end | ||
447 | * of the file. | ||
448 | * --------------------------------------------------------------------------- | ||
449 | * Local variables: | ||
450 | * c-file-style: "linux" | ||
451 | * End: | ||
452 | */ | ||
diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c index 9a77fb3c269d..627742d89434 100644 --- a/arch/um/kernel/ptrace.c +++ b/arch/um/kernel/ptrace.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include "kern_util.h" | 18 | #include "kern_util.h" |
19 | #include "skas_ptrace.h" | 19 | #include "skas_ptrace.h" |
20 | #include "sysdep/ptrace.h" | 20 | #include "sysdep/ptrace.h" |
21 | #include "os.h" | ||
21 | 22 | ||
22 | static inline void set_singlestepping(struct task_struct *child, int on) | 23 | static inline void set_singlestepping(struct task_struct *child, int on) |
23 | { | 24 | { |
@@ -241,6 +242,12 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
241 | break; | 242 | break; |
242 | } | 243 | } |
243 | #endif | 244 | #endif |
245 | #ifdef PTRACE_ARCH_PRCTL | ||
246 | case PTRACE_ARCH_PRCTL: | ||
247 | /* XXX Calls ptrace on the host - needs some SMP thinking */ | ||
248 | ret = arch_prctl_skas(child, data, (void *) addr); | ||
249 | break; | ||
250 | #endif | ||
244 | default: | 251 | default: |
245 | ret = ptrace_request(child, request, addr, data); | 252 | ret = ptrace_request(child, request, addr, data); |
246 | break; | 253 | break; |
diff --git a/arch/um/kernel/resource.c b/arch/um/kernel/resource.c deleted file mode 100644 index 32188e12e8af..000000000000 --- a/arch/um/kernel/resource.c +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #include "linux/pci.h" | ||
7 | |||
8 | unsigned long resource_fixup(struct pci_dev * dev, struct resource * res, | ||
9 | unsigned long start, unsigned long size) | ||
10 | { | ||
11 | return start; | ||
12 | } | ||
13 | |||
14 | /* | ||
15 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
16 | * Emacs will notice this stuff at the end of the file and automatically | ||
17 | * adjust the settings for this buffer only. This must remain at the end | ||
18 | * of the file. | ||
19 | * --------------------------------------------------------------------------- | ||
20 | * Local variables: | ||
21 | * c-file-style: "linux" | ||
22 | * End: | ||
23 | */ | ||
diff --git a/arch/um/kernel/sigio.c b/arch/um/kernel/sigio.c index 2b0ab438301c..89f9866a1354 100644 --- a/arch/um/kernel/sigio.c +++ b/arch/um/kernel/sigio.c | |||
@@ -23,7 +23,7 @@ static irqreturn_t sigio_interrupt(int irq, void *data) | |||
23 | 23 | ||
24 | os_read_file(sigio_irq_fd, &c, sizeof(c)); | 24 | os_read_file(sigio_irq_fd, &c, sizeof(c)); |
25 | reactivate_fd(sigio_irq_fd, SIGIO_WRITE_IRQ); | 25 | reactivate_fd(sigio_irq_fd, SIGIO_WRITE_IRQ); |
26 | return(IRQ_HANDLED); | 26 | return IRQ_HANDLED; |
27 | } | 27 | } |
28 | 28 | ||
29 | int write_sigio_irq(int fd) | 29 | int write_sigio_irq(int fd) |
@@ -36,12 +36,13 @@ int write_sigio_irq(int fd) | |||
36 | if(err){ | 36 | if(err){ |
37 | printk("write_sigio_irq : um_request_irq failed, err = %d\n", | 37 | printk("write_sigio_irq : um_request_irq failed, err = %d\n", |
38 | err); | 38 | err); |
39 | return(-1); | 39 | return -1; |
40 | } | 40 | } |
41 | sigio_irq_fd = fd; | 41 | sigio_irq_fd = fd; |
42 | return(0); | 42 | return 0; |
43 | } | 43 | } |
44 | 44 | ||
45 | /* These are called from os-Linux/sigio.c to protect its pollfds arrays. */ | ||
45 | static DEFINE_SPINLOCK(sigio_spinlock); | 46 | static DEFINE_SPINLOCK(sigio_spinlock); |
46 | 47 | ||
47 | void sigio_lock(void) | 48 | void sigio_lock(void) |
diff --git a/arch/um/kernel/skas/mem.c b/arch/um/kernel/skas/mem.c index 0d2cce621134..7c18dfcd7d8e 100644 --- a/arch/um/kernel/skas/mem.c +++ b/arch/um/kernel/skas/mem.c | |||
@@ -14,13 +14,9 @@ unsigned long set_task_sizes_skas(unsigned long *task_size_out) | |||
14 | unsigned long host_task_size = ROUND_4M((unsigned long) | 14 | unsigned long host_task_size = ROUND_4M((unsigned long) |
15 | &host_task_size); | 15 | &host_task_size); |
16 | 16 | ||
17 | #ifdef CONFIG_HOST_TASK_SIZE | ||
18 | *host_size_out = ROUND_4M(CONFIG_HOST_TASK_SIZE); | ||
19 | *task_size_out = CONFIG_HOST_TASK_SIZE; | ||
20 | #else | ||
21 | if (!skas_needs_stub) | 17 | if (!skas_needs_stub) |
22 | *task_size_out = host_task_size; | 18 | *task_size_out = host_task_size; |
23 | else *task_size_out = CONFIG_STUB_START & PGDIR_MASK; | 19 | else *task_size_out = CONFIG_STUB_START & PGDIR_MASK; |
24 | #endif | 20 | |
25 | return host_task_size; | 21 | return host_task_size; |
26 | } | 22 | } |
diff --git a/arch/um/kernel/syscall.c b/arch/um/kernel/syscall.c index f5ed8624648b..2828c5283227 100644 --- a/arch/um/kernel/syscall.c +++ b/arch/um/kernel/syscall.c | |||
@@ -149,22 +149,6 @@ long sys_olduname(struct oldold_utsname __user * name) | |||
149 | return error; | 149 | return error; |
150 | } | 150 | } |
151 | 151 | ||
152 | DEFINE_SPINLOCK(syscall_lock); | ||
153 | |||
154 | static int syscall_index = 0; | ||
155 | |||
156 | int next_syscall_index(int limit) | ||
157 | { | ||
158 | int ret; | ||
159 | |||
160 | spin_lock(&syscall_lock); | ||
161 | ret = syscall_index; | ||
162 | if(++syscall_index == limit) | ||
163 | syscall_index = 0; | ||
164 | spin_unlock(&syscall_lock); | ||
165 | return(ret); | ||
166 | } | ||
167 | |||
168 | int kernel_execve(const char *filename, char *const argv[], char *const envp[]) | 152 | int kernel_execve(const char *filename, char *const argv[], char *const envp[]) |
169 | { | 153 | { |
170 | mm_segment_t fs; | 154 | mm_segment_t fs; |
diff --git a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c index 239c98054dec..f9e02b31a97a 100644 --- a/arch/um/kernel/sysrq.c +++ b/arch/um/kernel/sysrq.c | |||
@@ -50,7 +50,7 @@ void dump_stack(void) | |||
50 | EXPORT_SYMBOL(dump_stack); | 50 | EXPORT_SYMBOL(dump_stack); |
51 | 51 | ||
52 | /*Stolen from arch/i386/kernel/traps.c */ | 52 | /*Stolen from arch/i386/kernel/traps.c */ |
53 | static int kstack_depth_to_print = 24; | 53 | static const int kstack_depth_to_print = 24; |
54 | 54 | ||
55 | /* This recently started being used in arch-independent code too, as in | 55 | /* This recently started being used in arch-independent code too, as in |
56 | * kernel/sched.c.*/ | 56 | * kernel/sched.c.*/ |
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c index 2e354b3ca060..b1f8b0752419 100644 --- a/arch/um/kernel/time.c +++ b/arch/um/kernel/time.c | |||
@@ -35,31 +35,31 @@ unsigned long long sched_clock(void) | |||
35 | return (unsigned long long)jiffies_64 * (1000000000 / HZ); | 35 | return (unsigned long long)jiffies_64 * (1000000000 / HZ); |
36 | } | 36 | } |
37 | 37 | ||
38 | static unsigned long long prev_nsecs; | 38 | static unsigned long long prev_nsecs[NR_CPUS]; |
39 | #ifdef CONFIG_UML_REAL_TIME_CLOCK | 39 | #ifdef CONFIG_UML_REAL_TIME_CLOCK |
40 | static long long delta; /* Deviation per interval */ | 40 | static long long delta[NR_CPUS]; /* Deviation per interval */ |
41 | #endif | 41 | #endif |
42 | 42 | ||
43 | void timer_irq(union uml_pt_regs *regs) | 43 | void timer_irq(union uml_pt_regs *regs) |
44 | { | 44 | { |
45 | unsigned long long ticks = 0; | 45 | unsigned long long ticks = 0; |
46 | |||
47 | #ifdef CONFIG_UML_REAL_TIME_CLOCK | 46 | #ifdef CONFIG_UML_REAL_TIME_CLOCK |
48 | if(prev_nsecs){ | 47 | int c = cpu(); |
48 | if(prev_nsecs[c]){ | ||
49 | /* We've had 1 tick */ | 49 | /* We've had 1 tick */ |
50 | unsigned long long nsecs = os_nsecs(); | 50 | unsigned long long nsecs = os_nsecs(); |
51 | 51 | ||
52 | delta += nsecs - prev_nsecs; | 52 | delta[c] += nsecs - prev_nsecs[c]; |
53 | prev_nsecs = nsecs; | 53 | prev_nsecs[c] = nsecs; |
54 | 54 | ||
55 | /* Protect against the host clock being set backwards */ | 55 | /* Protect against the host clock being set backwards */ |
56 | if(delta < 0) | 56 | if(delta[c] < 0) |
57 | delta = 0; | 57 | delta[c] = 0; |
58 | 58 | ||
59 | ticks += (delta * HZ) / BILLION; | 59 | ticks += (delta[c] * HZ) / BILLION; |
60 | delta -= (ticks * BILLION) / HZ; | 60 | delta[c] -= (ticks * BILLION) / HZ; |
61 | } | 61 | } |
62 | else prev_nsecs = os_nsecs(); | 62 | else prev_nsecs[c] = os_nsecs(); |
63 | #else | 63 | #else |
64 | ticks = 1; | 64 | ticks = 1; |
65 | #endif | 65 | #endif |
@@ -69,8 +69,8 @@ void timer_irq(union uml_pt_regs *regs) | |||
69 | } | 69 | } |
70 | } | 70 | } |
71 | 71 | ||
72 | /* Protects local_offset */ | ||
72 | static DEFINE_SPINLOCK(timer_spinlock); | 73 | static DEFINE_SPINLOCK(timer_spinlock); |
73 | |||
74 | static unsigned long long local_offset = 0; | 74 | static unsigned long long local_offset = 0; |
75 | 75 | ||
76 | static inline unsigned long long get_time(void) | 76 | static inline unsigned long long get_time(void) |
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c index b5f124a2f6ae..26f15c458574 100644 --- a/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c | |||
@@ -128,7 +128,18 @@ out_of_memory: | |||
128 | goto out; | 128 | goto out; |
129 | } | 129 | } |
130 | 130 | ||
131 | void segv_handler(int sig, union uml_pt_regs *regs) | 131 | static void bad_segv(struct faultinfo fi, unsigned long ip) |
132 | { | ||
133 | struct siginfo si; | ||
134 | |||
135 | si.si_signo = SIGSEGV; | ||
136 | si.si_code = SEGV_ACCERR; | ||
137 | si.si_addr = (void __user *) FAULT_ADDRESS(fi); | ||
138 | current->thread.arch.faultinfo = fi; | ||
139 | force_sig_info(SIGSEGV, &si, current); | ||
140 | } | ||
141 | |||
142 | static void segv_handler(int sig, union uml_pt_regs *regs) | ||
132 | { | 143 | { |
133 | struct faultinfo * fi = UPT_FAULTINFO(regs); | 144 | struct faultinfo * fi = UPT_FAULTINFO(regs); |
134 | 145 | ||
@@ -205,17 +216,6 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user, void *sc) | |||
205 | return(0); | 216 | return(0); |
206 | } | 217 | } |
207 | 218 | ||
208 | void bad_segv(struct faultinfo fi, unsigned long ip) | ||
209 | { | ||
210 | struct siginfo si; | ||
211 | |||
212 | si.si_signo = SIGSEGV; | ||
213 | si.si_code = SEGV_ACCERR; | ||
214 | si.si_addr = (void __user *) FAULT_ADDRESS(fi); | ||
215 | current->thread.arch.faultinfo = fi; | ||
216 | force_sig_info(SIGSEGV, &si, current); | ||
217 | } | ||
218 | |||
219 | void relay_signal(int sig, union uml_pt_regs *regs) | 219 | void relay_signal(int sig, union uml_pt_regs *regs) |
220 | { | 220 | { |
221 | if(arch_handle_signal(sig, regs)) | 221 | if(arch_handle_signal(sig, regs)) |
@@ -232,14 +232,14 @@ void relay_signal(int sig, union uml_pt_regs *regs) | |||
232 | force_sig(sig, current); | 232 | force_sig(sig, current); |
233 | } | 233 | } |
234 | 234 | ||
235 | void bus_handler(int sig, union uml_pt_regs *regs) | 235 | static void bus_handler(int sig, union uml_pt_regs *regs) |
236 | { | 236 | { |
237 | if(current->thread.fault_catcher != NULL) | 237 | if(current->thread.fault_catcher != NULL) |
238 | do_longjmp(current->thread.fault_catcher, 1); | 238 | do_longjmp(current->thread.fault_catcher, 1); |
239 | else relay_signal(sig, regs); | 239 | else relay_signal(sig, regs); |
240 | } | 240 | } |
241 | 241 | ||
242 | void winch(int sig, union uml_pt_regs *regs) | 242 | static void winch(int sig, union uml_pt_regs *regs) |
243 | { | 243 | { |
244 | do_IRQ(WINCH_IRQ, regs); | 244 | do_IRQ(WINCH_IRQ, regs); |
245 | } | 245 | } |
diff --git a/arch/um/kernel/tt/gdb.c b/arch/um/kernel/tt/gdb.c index 786e4edd86c5..8eba8f7dca68 100644 --- a/arch/um/kernel/tt/gdb.c +++ b/arch/um/kernel/tt/gdb.c | |||
@@ -139,7 +139,7 @@ static void config_gdb_cb(void *arg) | |||
139 | init_proxy(debugger_pid, 0, 0); | 139 | init_proxy(debugger_pid, 0, 0); |
140 | } | 140 | } |
141 | 141 | ||
142 | int gdb_config(char *str) | 142 | int gdb_config(char *str, char **error_out) |
143 | { | 143 | { |
144 | struct gdb_data data; | 144 | struct gdb_data data; |
145 | 145 | ||
@@ -154,7 +154,7 @@ void remove_gdb_cb(void *unused) | |||
154 | exit_debugger_cb(NULL); | 154 | exit_debugger_cb(NULL); |
155 | } | 155 | } |
156 | 156 | ||
157 | int gdb_remove(int unused) | 157 | int gdb_remove(int unused, char **error_out) |
158 | { | 158 | { |
159 | initial_thread_cb(remove_gdb_cb, NULL); | 159 | initial_thread_cb(remove_gdb_cb, NULL); |
160 | return 0; | 160 | return 0; |
diff --git a/arch/um/kernel/tt/gdb_kern.c b/arch/um/kernel/tt/gdb_kern.c index 68e1bf63cd0a..03b06bc00771 100644 --- a/arch/um/kernel/tt/gdb_kern.c +++ b/arch/um/kernel/tt/gdb_kern.c | |||
@@ -8,10 +8,11 @@ | |||
8 | 8 | ||
9 | #ifdef CONFIG_MCONSOLE | 9 | #ifdef CONFIG_MCONSOLE |
10 | 10 | ||
11 | extern int gdb_config(char *str); | 11 | extern int gdb_config(char *str, char **error_out); |
12 | extern int gdb_remove(int n); | 12 | extern int gdb_remove(int n, char **error_out); |
13 | 13 | ||
14 | static struct mc_device gdb_mc = { | 14 | static struct mc_device gdb_mc = { |
15 | .list = INIT_LIST_HEAD(gdb_mc.list), | ||
15 | .name = "gdb", | 16 | .name = "gdb", |
16 | .config = gdb_config, | 17 | .config = gdb_config, |
17 | .remove = gdb_remove, | 18 | .remove = gdb_remove, |
diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c index 66f43c906821..89c6dba731f8 100644 --- a/arch/um/kernel/um_arch.c +++ b/arch/um/kernel/um_arch.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include "kern.h" | 30 | #include "kern.h" |
31 | #include "mem_user.h" | 31 | #include "mem_user.h" |
32 | #include "mem.h" | 32 | #include "mem.h" |
33 | #include "umid.h" | ||
34 | #include "initrd.h" | 33 | #include "initrd.h" |
35 | #include "init.h" | 34 | #include "init.h" |
36 | #include "os.h" | 35 | #include "os.h" |
@@ -44,9 +43,9 @@ | |||
44 | #define DEFAULT_COMMAND_LINE "root=98:0" | 43 | #define DEFAULT_COMMAND_LINE "root=98:0" |
45 | 44 | ||
46 | /* Changed in linux_main and setup_arch, which run before SMP is started */ | 45 | /* Changed in linux_main and setup_arch, which run before SMP is started */ |
47 | static char command_line[COMMAND_LINE_SIZE] = { 0 }; | 46 | static char __initdata command_line[COMMAND_LINE_SIZE] = { 0 }; |
48 | 47 | ||
49 | static void add_arg(char *arg) | 48 | static void __init add_arg(char *arg) |
50 | { | 49 | { |
51 | if (strlen(command_line) + strlen(arg) + 1 > COMMAND_LINE_SIZE) { | 50 | if (strlen(command_line) + strlen(arg) + 1 > COMMAND_LINE_SIZE) { |
52 | printf("add_arg: Too many command line arguments!\n"); | 51 | printf("add_arg: Too many command line arguments!\n"); |
@@ -331,7 +330,7 @@ EXPORT_SYMBOL(end_iomem); | |||
331 | 330 | ||
332 | extern char __binary_start; | 331 | extern char __binary_start; |
333 | 332 | ||
334 | int linux_main(int argc, char **argv) | 333 | int __init linux_main(int argc, char **argv) |
335 | { | 334 | { |
336 | unsigned long avail, diff; | 335 | unsigned long avail, diff; |
337 | unsigned long virtmem_size, max_physmem; | 336 | unsigned long virtmem_size, max_physmem; |
@@ -482,7 +481,7 @@ void __init setup_arch(char **cmdline_p) | |||
482 | atomic_notifier_chain_register(&panic_notifier_list, | 481 | atomic_notifier_chain_register(&panic_notifier_list, |
483 | &panic_exit_notifier); | 482 | &panic_exit_notifier); |
484 | paging_init(); | 483 | paging_init(); |
485 | strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); | 484 | strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); |
486 | *cmdline_p = command_line; | 485 | *cmdline_p = command_line; |
487 | setup_hostinfo(); | 486 | setup_hostinfo(); |
488 | } | 487 | } |
diff --git a/arch/um/kernel/umid.c b/arch/um/kernel/umid.c index 4eaee823bfd2..039e16efcd55 100644 --- a/arch/um/kernel/umid.c +++ b/arch/um/kernel/umid.c | |||
@@ -16,8 +16,10 @@ static int __init set_umid_arg(char *name, int *add) | |||
16 | { | 16 | { |
17 | int err; | 17 | int err; |
18 | 18 | ||
19 | if(umid_inited) | 19 | if(umid_inited){ |
20 | printf("umid already set\n"); | ||
20 | return 0; | 21 | return 0; |
22 | } | ||
21 | 23 | ||
22 | *add = 0; | 24 | *add = 0; |
23 | err = set_umid(name); | 25 | err = set_umid(name); |
diff --git a/arch/um/os-Linux/aio.c b/arch/um/os-Linux/aio.c index f897140cc4ae..6ff12743a0bd 100644 --- a/arch/um/os-Linux/aio.c +++ b/arch/um/os-Linux/aio.c | |||
@@ -24,9 +24,6 @@ struct aio_thread_req { | |||
24 | struct aio_context *aio; | 24 | struct aio_context *aio; |
25 | }; | 25 | }; |
26 | 26 | ||
27 | static int aio_req_fd_r = -1; | ||
28 | static int aio_req_fd_w = -1; | ||
29 | |||
30 | #if defined(HAVE_AIO_ABI) | 27 | #if defined(HAVE_AIO_ABI) |
31 | #include <linux/aio_abi.h> | 28 | #include <linux/aio_abi.h> |
32 | 29 | ||
@@ -111,6 +108,7 @@ static int do_aio(aio_context_t ctx, enum aio_type type, int fd, char *buf, | |||
111 | return err; | 108 | return err; |
112 | } | 109 | } |
113 | 110 | ||
111 | /* Initialized in an initcall and unchanged thereafter */ | ||
114 | static aio_context_t ctx = 0; | 112 | static aio_context_t ctx = 0; |
115 | 113 | ||
116 | static int aio_thread(void *arg) | 114 | static int aio_thread(void *arg) |
@@ -137,7 +135,7 @@ static int aio_thread(void *arg) | |||
137 | err = os_write_file(reply_fd, &reply, sizeof(reply)); | 135 | err = os_write_file(reply_fd, &reply, sizeof(reply)); |
138 | if(err != sizeof(reply)) | 136 | if(err != sizeof(reply)) |
139 | printk("aio_thread - write failed, fd = %d, " | 137 | printk("aio_thread - write failed, fd = %d, " |
140 | "err = %d\n", aio_req_fd_r, -err); | 138 | "err = %d\n", reply_fd, -err); |
141 | } | 139 | } |
142 | } | 140 | } |
143 | return 0; | 141 | return 0; |
@@ -182,6 +180,11 @@ out: | |||
182 | return err; | 180 | return err; |
183 | } | 181 | } |
184 | 182 | ||
183 | /* These are initialized in initcalls and not changed */ | ||
184 | static int aio_req_fd_r = -1; | ||
185 | static int aio_req_fd_w = -1; | ||
186 | static int aio_pid = -1; | ||
187 | |||
185 | static int not_aio_thread(void *arg) | 188 | static int not_aio_thread(void *arg) |
186 | { | 189 | { |
187 | struct aio_thread_req req; | 190 | struct aio_thread_req req; |
@@ -208,14 +211,12 @@ static int not_aio_thread(void *arg) | |||
208 | err = os_write_file(req.aio->reply_fd, &reply, sizeof(reply)); | 211 | err = os_write_file(req.aio->reply_fd, &reply, sizeof(reply)); |
209 | if(err != sizeof(reply)) | 212 | if(err != sizeof(reply)) |
210 | printk("not_aio_thread - write failed, fd = %d, " | 213 | printk("not_aio_thread - write failed, fd = %d, " |
211 | "err = %d\n", aio_req_fd_r, -err); | 214 | "err = %d\n", req.aio->reply_fd, -err); |
212 | } | 215 | } |
213 | 216 | ||
214 | return 0; | 217 | return 0; |
215 | } | 218 | } |
216 | 219 | ||
217 | static int aio_pid = -1; | ||
218 | |||
219 | static int init_aio_24(void) | 220 | static int init_aio_24(void) |
220 | { | 221 | { |
221 | unsigned long stack; | 222 | unsigned long stack; |
@@ -308,6 +309,7 @@ static int submit_aio_26(enum aio_type type, int io_fd, char *buf, int len, | |||
308 | } | 309 | } |
309 | #endif | 310 | #endif |
310 | 311 | ||
312 | /* Initialized in an initcall and unchanged thereafter */ | ||
311 | static int aio_24 = DEFAULT_24_AIO; | 313 | static int aio_24 = DEFAULT_24_AIO; |
312 | 314 | ||
313 | static int __init set_aio_24(char *name, int *add) | 315 | static int __init set_aio_24(char *name, int *add) |
diff --git a/arch/um/os-Linux/elf_aux.c b/arch/um/os-Linux/elf_aux.c index 5a99dd3fbed0..3a8d7e3aae0a 100644 --- a/arch/um/os-Linux/elf_aux.c +++ b/arch/um/os-Linux/elf_aux.c | |||
@@ -21,12 +21,11 @@ typedef Elf32_auxv_t elf_auxv_t; | |||
21 | typedef Elf64_auxv_t elf_auxv_t; | 21 | typedef Elf64_auxv_t elf_auxv_t; |
22 | #endif | 22 | #endif |
23 | 23 | ||
24 | /* These are initialized very early in boot and never changed */ | ||
24 | char * elf_aux_platform; | 25 | char * elf_aux_platform; |
25 | long elf_aux_hwcap; | 26 | long elf_aux_hwcap; |
26 | |||
27 | unsigned long vsyscall_ehdr; | 27 | unsigned long vsyscall_ehdr; |
28 | unsigned long vsyscall_end; | 28 | unsigned long vsyscall_end; |
29 | |||
30 | unsigned long __kernel_vsyscall; | 29 | unsigned long __kernel_vsyscall; |
31 | 30 | ||
32 | __init void scan_elf_aux( char **envp) | 31 | __init void scan_elf_aux( char **envp) |
diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c index 189fa677085a..371b4335f46d 100644 --- a/arch/um/os-Linux/file.c +++ b/arch/um/os-Linux/file.c | |||
@@ -162,25 +162,6 @@ int os_set_owner(int fd, int pid) | |||
162 | return 0; | 162 | return 0; |
163 | } | 163 | } |
164 | 164 | ||
165 | /* FIXME? moved wholesale from sigio_user.c to get fcntls out of that file */ | ||
166 | int os_sigio_async(int master, int slave) | ||
167 | { | ||
168 | int flags; | ||
169 | |||
170 | flags = fcntl(master, F_GETFL); | ||
171 | if(flags < 0) | ||
172 | return -errno; | ||
173 | |||
174 | if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) || | ||
175 | (fcntl(master, F_SETOWN, os_getpid()) < 0)) | ||
176 | return -errno; | ||
177 | |||
178 | if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0)) | ||
179 | return -errno; | ||
180 | |||
181 | return(0); | ||
182 | } | ||
183 | |||
184 | int os_mode_fd(int fd, int mode) | 165 | int os_mode_fd(int fd, int mode) |
185 | { | 166 | { |
186 | int err; | 167 | int err; |
diff --git a/arch/um/os-Linux/irq.c b/arch/um/os-Linux/irq.c index d46b818c1311..d1b61d474e0a 100644 --- a/arch/um/os-Linux/irq.c +++ b/arch/um/os-Linux/irq.c | |||
@@ -20,6 +20,10 @@ | |||
20 | #include "os.h" | 20 | #include "os.h" |
21 | #include "um_malloc.h" | 21 | #include "um_malloc.h" |
22 | 22 | ||
23 | /* | ||
24 | * Locked by irq_lock in arch/um/kernel/irq.c. Changed by os_create_pollfd | ||
25 | * and os_free_irq_by_cb, which are called under irq_lock. | ||
26 | */ | ||
23 | static struct pollfd *pollfds = NULL; | 27 | static struct pollfd *pollfds = NULL; |
24 | static int pollfds_num = 0; | 28 | static int pollfds_num = 0; |
25 | static int pollfds_size = 0; | 29 | static int pollfds_size = 0; |
@@ -58,7 +62,7 @@ int os_create_pollfd(int fd, int events, void *tmp_pfd, int size_tmpfds) | |||
58 | if (pollfds_num == pollfds_size) { | 62 | if (pollfds_num == pollfds_size) { |
59 | if (size_tmpfds <= pollfds_size * sizeof(pollfds[0])) { | 63 | if (size_tmpfds <= pollfds_size * sizeof(pollfds[0])) { |
60 | /* return min size needed for new pollfds area */ | 64 | /* return min size needed for new pollfds area */ |
61 | return((pollfds_size + 1) * sizeof(pollfds[0])); | 65 | return (pollfds_size + 1) * sizeof(pollfds[0]); |
62 | } | 66 | } |
63 | 67 | ||
64 | if (pollfds != NULL) { | 68 | if (pollfds != NULL) { |
diff --git a/arch/um/os-Linux/mem.c b/arch/um/os-Linux/mem.c index 4203681e508d..f1ea169db85e 100644 --- a/arch/um/os-Linux/mem.c +++ b/arch/um/os-Linux/mem.c | |||
@@ -20,7 +20,13 @@ | |||
20 | 20 | ||
21 | #include <sys/param.h> | 21 | #include <sys/param.h> |
22 | 22 | ||
23 | /* Modified by which_tmpdir, which is called during early boot */ | ||
23 | static char *default_tmpdir = "/tmp"; | 24 | static char *default_tmpdir = "/tmp"; |
25 | |||
26 | /* | ||
27 | * Modified when creating the physical memory file and when checking | ||
28 | * the tmp filesystem for usability, both happening during early boot. | ||
29 | */ | ||
24 | static char *tempdir = NULL; | 30 | static char *tempdir = NULL; |
25 | 31 | ||
26 | static void __init find_tempdir(void) | 32 | static void __init find_tempdir(void) |
@@ -29,7 +35,8 @@ static void __init find_tempdir(void) | |||
29 | int i; | 35 | int i; |
30 | char *dir = NULL; | 36 | char *dir = NULL; |
31 | 37 | ||
32 | if(tempdir != NULL) return; /* We've already been called */ | 38 | if(tempdir != NULL) /* We've already been called */ |
39 | return; | ||
33 | for(i = 0; dirs[i]; i++){ | 40 | for(i = 0; dirs[i]; i++){ |
34 | dir = getenv(dirs[i]); | 41 | dir = getenv(dirs[i]); |
35 | if((dir != NULL) && (*dir != '\0')) | 42 | if((dir != NULL) && (*dir != '\0')) |
@@ -83,6 +90,7 @@ static int next(int fd, char *buf, int size, char c) | |||
83 | return 1; | 90 | return 1; |
84 | } | 91 | } |
85 | 92 | ||
93 | /* which_tmpdir is called only during early boot */ | ||
86 | static int checked_tmpdir = 0; | 94 | static int checked_tmpdir = 0; |
87 | 95 | ||
88 | /* Look for a tmpfs mounted at /dev/shm. I couldn't find a cleaner | 96 | /* Look for a tmpfs mounted at /dev/shm. I couldn't find a cleaner |
@@ -186,7 +194,7 @@ int make_tempfile(const char *template, char **out_tempname, int do_unlink) | |||
186 | } else { | 194 | } else { |
187 | free(tempname); | 195 | free(tempname); |
188 | } | 196 | } |
189 | return(fd); | 197 | return fd; |
190 | out: | 198 | out: |
191 | free(tempname); | 199 | free(tempname); |
192 | return -1; | 200 | return -1; |
@@ -231,7 +239,7 @@ int create_tmp_file(unsigned long long len) | |||
231 | exit(1); | 239 | exit(1); |
232 | } | 240 | } |
233 | 241 | ||
234 | return(fd); | 242 | return fd; |
235 | } | 243 | } |
236 | 244 | ||
237 | int create_mem_file(unsigned long long len) | 245 | int create_mem_file(unsigned long long len) |
@@ -245,7 +253,7 @@ int create_mem_file(unsigned long long len) | |||
245 | errno = -err; | 253 | errno = -err; |
246 | perror("exec_close"); | 254 | perror("exec_close"); |
247 | } | 255 | } |
248 | return(fd); | 256 | return fd; |
249 | } | 257 | } |
250 | 258 | ||
251 | 259 | ||
diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c index 7fe92680c7dd..5178eba9afa5 100644 --- a/arch/um/os-Linux/start_up.c +++ b/arch/um/os-Linux/start_up.c | |||
@@ -54,7 +54,7 @@ static int ptrace_child(void *arg) | |||
54 | perror("ptrace"); | 54 | perror("ptrace"); |
55 | os_kill_process(pid, 0); | 55 | os_kill_process(pid, 0); |
56 | } | 56 | } |
57 | os_stop_process(pid); | 57 | kill(pid, SIGSTOP); |
58 | 58 | ||
59 | /*This syscall will be intercepted by the parent. Don't call more than | 59 | /*This syscall will be intercepted by the parent. Don't call more than |
60 | * once, please.*/ | 60 | * once, please.*/ |
@@ -73,6 +73,34 @@ static int ptrace_child(void *arg) | |||
73 | _exit(ret); | 73 | _exit(ret); |
74 | } | 74 | } |
75 | 75 | ||
76 | static void fatal_perror(char *str) | ||
77 | { | ||
78 | perror(str); | ||
79 | exit(1); | ||
80 | } | ||
81 | |||
82 | static void fatal(char *fmt, ...) | ||
83 | { | ||
84 | va_list list; | ||
85 | |||
86 | va_start(list, fmt); | ||
87 | vprintf(fmt, list); | ||
88 | va_end(list); | ||
89 | fflush(stdout); | ||
90 | |||
91 | exit(1); | ||
92 | } | ||
93 | |||
94 | static void non_fatal(char *fmt, ...) | ||
95 | { | ||
96 | va_list list; | ||
97 | |||
98 | va_start(list, fmt); | ||
99 | vprintf(fmt, list); | ||
100 | va_end(list); | ||
101 | fflush(stdout); | ||
102 | } | ||
103 | |||
76 | static int start_ptraced_child(void **stack_out) | 104 | static int start_ptraced_child(void **stack_out) |
77 | { | 105 | { |
78 | void *stack; | 106 | void *stack; |
@@ -82,20 +110,20 @@ static int start_ptraced_child(void **stack_out) | |||
82 | stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, | 110 | stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, |
83 | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); | 111 | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); |
84 | if(stack == MAP_FAILED) | 112 | if(stack == MAP_FAILED) |
85 | panic("check_ptrace : mmap failed, errno = %d", errno); | 113 | fatal_perror("check_ptrace : mmap failed"); |
86 | sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *); | 114 | sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *); |
87 | pid = clone(ptrace_child, (void *) sp, SIGCHLD, NULL); | 115 | pid = clone(ptrace_child, (void *) sp, SIGCHLD, NULL); |
88 | if(pid < 0) | 116 | if(pid < 0) |
89 | panic("start_ptraced_child : clone failed, errno = %d", errno); | 117 | fatal_perror("start_ptraced_child : clone failed"); |
90 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); | 118 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); |
91 | if(n < 0) | 119 | if(n < 0) |
92 | panic("check_ptrace : clone failed, errno = %d", errno); | 120 | fatal_perror("check_ptrace : clone failed"); |
93 | if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGSTOP)) | 121 | if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGSTOP)) |
94 | panic("check_ptrace : expected SIGSTOP, got status = %d", | 122 | fatal("check_ptrace : expected SIGSTOP, got status = %d", |
95 | status); | 123 | status); |
96 | 124 | ||
97 | *stack_out = stack; | 125 | *stack_out = stack; |
98 | return(pid); | 126 | return pid; |
99 | } | 127 | } |
100 | 128 | ||
101 | /* When testing for SYSEMU support, if it is one of the broken versions, we | 129 | /* When testing for SYSEMU support, if it is one of the broken versions, we |
@@ -105,34 +133,34 @@ static int start_ptraced_child(void **stack_out) | |||
105 | * must work anyway! | 133 | * must work anyway! |
106 | */ | 134 | */ |
107 | static int stop_ptraced_child(int pid, void *stack, int exitcode, | 135 | static int stop_ptraced_child(int pid, void *stack, int exitcode, |
108 | int mustpanic) | 136 | int mustexit) |
109 | { | 137 | { |
110 | int status, n, ret = 0; | 138 | int status, n, ret = 0; |
111 | 139 | ||
112 | if(ptrace(PTRACE_CONT, pid, 0, 0) < 0) | 140 | if(ptrace(PTRACE_CONT, pid, 0, 0) < 0) |
113 | panic("check_ptrace : ptrace failed, errno = %d", errno); | 141 | fatal_perror("stop_ptraced_child : ptrace failed"); |
114 | CATCH_EINTR(n = waitpid(pid, &status, 0)); | 142 | CATCH_EINTR(n = waitpid(pid, &status, 0)); |
115 | if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) { | 143 | if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) { |
116 | int exit_with = WEXITSTATUS(status); | 144 | int exit_with = WEXITSTATUS(status); |
117 | if (exit_with == 2) | 145 | if (exit_with == 2) |
118 | printf("check_ptrace : child exited with status 2. " | 146 | non_fatal("check_ptrace : child exited with status 2. " |
119 | "Serious trouble happening! Try updating your " | 147 | "Serious trouble happening! Try updating " |
120 | "host skas patch!\nDisabling SYSEMU support."); | 148 | "your host skas patch!\nDisabling SYSEMU " |
121 | printf("check_ptrace : child exited with exitcode %d, while " | 149 | "support."); |
122 | "expecting %d; status 0x%x", exit_with, | 150 | non_fatal("check_ptrace : child exited with exitcode %d, while " |
123 | exitcode, status); | 151 | "expecting %d; status 0x%x\n", exit_with, |
124 | if (mustpanic) | 152 | exitcode, status); |
125 | panic("\n"); | 153 | if (mustexit) |
126 | else | 154 | exit(1); |
127 | printf("\n"); | ||
128 | ret = -1; | 155 | ret = -1; |
129 | } | 156 | } |
130 | 157 | ||
131 | if(munmap(stack, PAGE_SIZE) < 0) | 158 | if(munmap(stack, PAGE_SIZE) < 0) |
132 | panic("check_ptrace : munmap failed, errno = %d", errno); | 159 | fatal_perror("check_ptrace : munmap failed"); |
133 | return ret; | 160 | return ret; |
134 | } | 161 | } |
135 | 162 | ||
163 | /* Changed only during early boot */ | ||
136 | int ptrace_faultinfo = 1; | 164 | int ptrace_faultinfo = 1; |
137 | int ptrace_ldt = 1; | 165 | int ptrace_ldt = 1; |
138 | int proc_mm = 1; | 166 | int proc_mm = 1; |
@@ -160,6 +188,7 @@ __uml_setup("mode=skas0", mode_skas0_cmd_param, | |||
160 | " specify mode=tt. Note that this was recently added - on \n" | 188 | " specify mode=tt. Note that this was recently added - on \n" |
161 | " older kernels you must use simply \"skas0\".\n\n"); | 189 | " older kernels you must use simply \"skas0\".\n\n"); |
162 | 190 | ||
191 | /* Changed only during early boot */ | ||
163 | static int force_sysemu_disabled = 0; | 192 | static int force_sysemu_disabled = 0; |
164 | 193 | ||
165 | static int __init nosysemu_cmd_param(char *str, int* add) | 194 | static int __init nosysemu_cmd_param(char *str, int* add) |
@@ -180,9 +209,9 @@ __uml_setup("nosysemu", nosysemu_cmd_param, | |||
180 | static void __init check_sysemu(void) | 209 | static void __init check_sysemu(void) |
181 | { | 210 | { |
182 | void *stack; | 211 | void *stack; |
183 | int pid, n, status, count=0; | 212 | int pid, n, status, count=0; |
184 | 213 | ||
185 | printf("Checking syscall emulation patch for ptrace..."); | 214 | non_fatal("Checking syscall emulation patch for ptrace..."); |
186 | sysemu_supported = 0; | 215 | sysemu_supported = 0; |
187 | pid = start_ptraced_child(&stack); | 216 | pid = start_ptraced_child(&stack); |
188 | 217 | ||
@@ -191,31 +220,30 @@ static void __init check_sysemu(void) | |||
191 | 220 | ||
192 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); | 221 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); |
193 | if (n < 0) | 222 | if (n < 0) |
194 | panic("check_sysemu : wait failed, errno = %d", errno); | 223 | fatal_perror("check_sysemu : wait failed"); |
195 | if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGTRAP)) | 224 | if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGTRAP)) |
196 | panic("check_sysemu : expected SIGTRAP, " | 225 | fatal("check_sysemu : expected SIGTRAP, got status = %d", |
197 | "got status = %d", status); | 226 | status); |
198 | 227 | ||
199 | n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_RET_OFFSET, | 228 | n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_RET_OFFSET, |
200 | os_getpid()); | 229 | os_getpid()); |
201 | if(n < 0) | 230 | if(n < 0) |
202 | panic("check_sysemu : failed to modify system " | 231 | fatal_perror("check_sysemu : failed to modify system call " |
203 | "call return, errno = %d", errno); | 232 | "return"); |
204 | 233 | ||
205 | if (stop_ptraced_child(pid, stack, 0, 0) < 0) | 234 | if (stop_ptraced_child(pid, stack, 0, 0) < 0) |
206 | goto fail_stopped; | 235 | goto fail_stopped; |
207 | 236 | ||
208 | sysemu_supported = 1; | 237 | sysemu_supported = 1; |
209 | printf("OK\n"); | 238 | non_fatal("OK\n"); |
210 | set_using_sysemu(!force_sysemu_disabled); | 239 | set_using_sysemu(!force_sysemu_disabled); |
211 | 240 | ||
212 | printf("Checking advanced syscall emulation patch for ptrace..."); | 241 | non_fatal("Checking advanced syscall emulation patch for ptrace..."); |
213 | pid = start_ptraced_child(&stack); | 242 | pid = start_ptraced_child(&stack); |
214 | 243 | ||
215 | if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, | 244 | if((ptrace(PTRACE_OLDSETOPTIONS, pid, 0, |
216 | (void *) PTRACE_O_TRACESYSGOOD) < 0) | 245 | (void *) PTRACE_O_TRACESYSGOOD) < 0)) |
217 | panic("check_ptrace: PTRACE_OLDSETOPTIONS failed, errno = %d", | 246 | fatal_perror("check_ptrace: PTRACE_OLDSETOPTIONS failed"); |
218 | errno); | ||
219 | 247 | ||
220 | while(1){ | 248 | while(1){ |
221 | count++; | 249 | count++; |
@@ -223,29 +251,30 @@ static void __init check_sysemu(void) | |||
223 | goto fail; | 251 | goto fail; |
224 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); | 252 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); |
225 | if(n < 0) | 253 | if(n < 0) |
226 | panic("check_ptrace : wait failed, errno = %d", errno); | 254 | fatal_perror("check_ptrace : wait failed"); |
255 | |||
227 | if(WIFSTOPPED(status) && (WSTOPSIG(status) == (SIGTRAP|0x80))){ | 256 | if(WIFSTOPPED(status) && (WSTOPSIG(status) == (SIGTRAP|0x80))){ |
228 | if (!count) | 257 | if (!count) |
229 | panic("check_ptrace : SYSEMU_SINGLESTEP " | 258 | fatal("check_ptrace : SYSEMU_SINGLESTEP " |
230 | "doesn't singlestep"); | 259 | "doesn't singlestep"); |
231 | n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_RET_OFFSET, | 260 | n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_RET_OFFSET, |
232 | os_getpid()); | 261 | os_getpid()); |
233 | if(n < 0) | 262 | if(n < 0) |
234 | panic("check_sysemu : failed to modify system " | 263 | fatal_perror("check_sysemu : failed to modify " |
235 | "call return, errno = %d", errno); | 264 | "system call return"); |
236 | break; | 265 | break; |
237 | } | 266 | } |
238 | else if(WIFSTOPPED(status) && (WSTOPSIG(status) == SIGTRAP)) | 267 | else if(WIFSTOPPED(status) && (WSTOPSIG(status) == SIGTRAP)) |
239 | count++; | 268 | count++; |
240 | else | 269 | else |
241 | panic("check_ptrace : expected SIGTRAP or " | 270 | fatal("check_ptrace : expected SIGTRAP or " |
242 | "(SIGTRAP|0x80), got status = %d", status); | 271 | "(SIGTRAP | 0x80), got status = %d", status); |
243 | } | 272 | } |
244 | if (stop_ptraced_child(pid, stack, 0, 0) < 0) | 273 | if (stop_ptraced_child(pid, stack, 0, 0) < 0) |
245 | goto fail_stopped; | 274 | goto fail_stopped; |
246 | 275 | ||
247 | sysemu_supported = 2; | 276 | sysemu_supported = 2; |
248 | printf("OK\n"); | 277 | non_fatal("OK\n"); |
249 | 278 | ||
250 | if ( !force_sysemu_disabled ) | 279 | if ( !force_sysemu_disabled ) |
251 | set_using_sysemu(sysemu_supported); | 280 | set_using_sysemu(sysemu_supported); |
@@ -254,7 +283,7 @@ static void __init check_sysemu(void) | |||
254 | fail: | 283 | fail: |
255 | stop_ptraced_child(pid, stack, 1, 0); | 284 | stop_ptraced_child(pid, stack, 1, 0); |
256 | fail_stopped: | 285 | fail_stopped: |
257 | printf("missing\n"); | 286 | non_fatal("missing\n"); |
258 | } | 287 | } |
259 | 288 | ||
260 | static void __init check_ptrace(void) | 289 | static void __init check_ptrace(void) |
@@ -262,22 +291,25 @@ static void __init check_ptrace(void) | |||
262 | void *stack; | 291 | void *stack; |
263 | int pid, syscall, n, status; | 292 | int pid, syscall, n, status; |
264 | 293 | ||
265 | printf("Checking that ptrace can change system call numbers..."); | 294 | non_fatal("Checking that ptrace can change system call numbers..."); |
266 | pid = start_ptraced_child(&stack); | 295 | pid = start_ptraced_child(&stack); |
267 | 296 | ||
268 | if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0) | 297 | if((ptrace(PTRACE_OLDSETOPTIONS, pid, 0, |
269 | panic("check_ptrace: PTRACE_OLDSETOPTIONS failed, errno = %d", errno); | 298 | (void *) PTRACE_O_TRACESYSGOOD) < 0)) |
299 | fatal_perror("check_ptrace: PTRACE_OLDSETOPTIONS failed"); | ||
270 | 300 | ||
271 | while(1){ | 301 | while(1){ |
272 | if(ptrace(PTRACE_SYSCALL, pid, 0, 0) < 0) | 302 | if(ptrace(PTRACE_SYSCALL, pid, 0, 0) < 0) |
273 | panic("check_ptrace : ptrace failed, errno = %d", | 303 | fatal_perror("check_ptrace : ptrace failed"); |
274 | errno); | 304 | |
275 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); | 305 | CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); |
276 | if(n < 0) | 306 | if(n < 0) |
277 | panic("check_ptrace : wait failed, errno = %d", errno); | 307 | fatal_perror("check_ptrace : wait failed"); |
278 | if(!WIFSTOPPED(status) || (WSTOPSIG(status) != (SIGTRAP|0x80))) | 308 | |
279 | panic("check_ptrace : expected (SIGTRAP|0x80), " | 309 | if(!WIFSTOPPED(status) || |
280 | "got status = %d", status); | 310 | (WSTOPSIG(status) != (SIGTRAP | 0x80))) |
311 | fatal("check_ptrace : expected (SIGTRAP|0x80), " | ||
312 | "got status = %d", status); | ||
281 | 313 | ||
282 | syscall = ptrace(PTRACE_PEEKUSR, pid, PT_SYSCALL_NR_OFFSET, | 314 | syscall = ptrace(PTRACE_PEEKUSR, pid, PT_SYSCALL_NR_OFFSET, |
283 | 0); | 315 | 0); |
@@ -285,13 +317,13 @@ static void __init check_ptrace(void) | |||
285 | n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_NR_OFFSET, | 317 | n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_NR_OFFSET, |
286 | __NR_getppid); | 318 | __NR_getppid); |
287 | if(n < 0) | 319 | if(n < 0) |
288 | panic("check_ptrace : failed to modify system " | 320 | fatal_perror("check_ptrace : failed to modify " |
289 | "call, errno = %d", errno); | 321 | "system call"); |
290 | break; | 322 | break; |
291 | } | 323 | } |
292 | } | 324 | } |
293 | stop_ptraced_child(pid, stack, 0, 1); | 325 | stop_ptraced_child(pid, stack, 0, 1); |
294 | printf("OK\n"); | 326 | non_fatal("OK\n"); |
295 | check_sysemu(); | 327 | check_sysemu(); |
296 | } | 328 | } |
297 | 329 | ||
@@ -350,22 +382,22 @@ static inline void check_skas3_ptrace_faultinfo(void) | |||
350 | void *stack; | 382 | void *stack; |
351 | int pid, n; | 383 | int pid, n; |
352 | 384 | ||
353 | printf(" - PTRACE_FAULTINFO..."); | 385 | non_fatal(" - PTRACE_FAULTINFO..."); |
354 | pid = start_ptraced_child(&stack); | 386 | pid = start_ptraced_child(&stack); |
355 | 387 | ||
356 | n = ptrace(PTRACE_FAULTINFO, pid, 0, &fi); | 388 | n = ptrace(PTRACE_FAULTINFO, pid, 0, &fi); |
357 | if (n < 0) { | 389 | if (n < 0) { |
358 | ptrace_faultinfo = 0; | 390 | ptrace_faultinfo = 0; |
359 | if(errno == EIO) | 391 | if(errno == EIO) |
360 | printf("not found\n"); | 392 | non_fatal("not found\n"); |
361 | else | 393 | else |
362 | perror("not found"); | 394 | perror("not found"); |
363 | } | 395 | } |
364 | else { | 396 | else { |
365 | if (!ptrace_faultinfo) | 397 | if (!ptrace_faultinfo) |
366 | printf("found but disabled on command line\n"); | 398 | non_fatal("found but disabled on command line\n"); |
367 | else | 399 | else |
368 | printf("found\n"); | 400 | non_fatal("found\n"); |
369 | } | 401 | } |
370 | 402 | ||
371 | init_registers(pid); | 403 | init_registers(pid); |
@@ -383,13 +415,13 @@ static inline void check_skas3_ptrace_ldt(void) | |||
383 | .ptr = ldtbuf, | 415 | .ptr = ldtbuf, |
384 | .bytecount = sizeof(ldtbuf)}; | 416 | .bytecount = sizeof(ldtbuf)}; |
385 | 417 | ||
386 | printf(" - PTRACE_LDT..."); | 418 | non_fatal(" - PTRACE_LDT..."); |
387 | pid = start_ptraced_child(&stack); | 419 | pid = start_ptraced_child(&stack); |
388 | 420 | ||
389 | n = ptrace(PTRACE_LDT, pid, 0, (unsigned long) &ldt_op); | 421 | n = ptrace(PTRACE_LDT, pid, 0, (unsigned long) &ldt_op); |
390 | if (n < 0) { | 422 | if (n < 0) { |
391 | if(errno == EIO) | 423 | if(errno == EIO) |
392 | printf("not found\n"); | 424 | non_fatal("not found\n"); |
393 | else { | 425 | else { |
394 | perror("not found"); | 426 | perror("not found"); |
395 | } | 427 | } |
@@ -397,9 +429,9 @@ static inline void check_skas3_ptrace_ldt(void) | |||
397 | } | 429 | } |
398 | else { | 430 | else { |
399 | if(ptrace_ldt) | 431 | if(ptrace_ldt) |
400 | printf("found\n"); | 432 | non_fatal("found\n"); |
401 | else | 433 | else |
402 | printf("found, but use is disabled\n"); | 434 | non_fatal("found, but use is disabled\n"); |
403 | } | 435 | } |
404 | 436 | ||
405 | stop_ptraced_child(pid, stack, 1, 1); | 437 | stop_ptraced_child(pid, stack, 1, 1); |
@@ -414,22 +446,22 @@ static inline void check_skas3_ptrace_ldt(void) | |||
414 | 446 | ||
415 | static inline void check_skas3_proc_mm(void) | 447 | static inline void check_skas3_proc_mm(void) |
416 | { | 448 | { |
417 | printf(" - /proc/mm..."); | 449 | non_fatal(" - /proc/mm..."); |
418 | if (os_access("/proc/mm", OS_ACC_W_OK) < 0) { | 450 | if (access("/proc/mm", W_OK) < 0) { |
419 | proc_mm = 0; | 451 | proc_mm = 0; |
420 | printf("not found\n"); | 452 | perror("not found"); |
421 | } | 453 | } |
422 | else { | 454 | else { |
423 | if (!proc_mm) | 455 | if (!proc_mm) |
424 | printf("found but disabled on command line\n"); | 456 | non_fatal("found but disabled on command line\n"); |
425 | else | 457 | else |
426 | printf("found\n"); | 458 | non_fatal("found\n"); |
427 | } | 459 | } |
428 | } | 460 | } |
429 | 461 | ||
430 | int can_do_skas(void) | 462 | int can_do_skas(void) |
431 | { | 463 | { |
432 | printf("Checking for the skas3 patch in the host:\n"); | 464 | non_fatal("Checking for the skas3 patch in the host:\n"); |
433 | 465 | ||
434 | check_skas3_proc_mm(); | 466 | check_skas3_proc_mm(); |
435 | check_skas3_ptrace_faultinfo(); | 467 | check_skas3_ptrace_faultinfo(); |
@@ -443,16 +475,16 @@ int can_do_skas(void) | |||
443 | #else | 475 | #else |
444 | int can_do_skas(void) | 476 | int can_do_skas(void) |
445 | { | 477 | { |
446 | return(0); | 478 | return 0; |
447 | } | 479 | } |
448 | #endif | 480 | #endif |
449 | 481 | ||
450 | int __init parse_iomem(char *str, int *add) | 482 | int __init parse_iomem(char *str, int *add) |
451 | { | 483 | { |
452 | struct iomem_region *new; | 484 | struct iomem_region *new; |
453 | struct uml_stat buf; | 485 | struct stat64 buf; |
454 | char *file, *driver; | 486 | char *file, *driver; |
455 | int fd, err, size; | 487 | int fd, size; |
456 | 488 | ||
457 | driver = str; | 489 | driver = str; |
458 | file = strchr(str,','); | 490 | file = strchr(str,','); |
@@ -462,15 +494,14 @@ int __init parse_iomem(char *str, int *add) | |||
462 | } | 494 | } |
463 | *file = '\0'; | 495 | *file = '\0'; |
464 | file++; | 496 | file++; |
465 | fd = os_open_file(file, of_rdwr(OPENFLAGS()), 0); | 497 | fd = open(file, O_RDWR, 0); |
466 | if(fd < 0){ | 498 | if(fd < 0){ |
467 | os_print_error(fd, "parse_iomem - Couldn't open io file"); | 499 | os_print_error(fd, "parse_iomem - Couldn't open io file"); |
468 | goto out; | 500 | goto out; |
469 | } | 501 | } |
470 | 502 | ||
471 | err = os_stat_fd(fd, &buf); | 503 | if(fstat64(fd, &buf) < 0){ |
472 | if(err < 0){ | 504 | perror("parse_iomem - cannot stat_fd file"); |
473 | os_print_error(err, "parse_iomem - cannot stat_fd file"); | ||
474 | goto out_close; | 505 | goto out_close; |
475 | } | 506 | } |
476 | 507 | ||
@@ -480,7 +511,7 @@ int __init parse_iomem(char *str, int *add) | |||
480 | goto out_close; | 511 | goto out_close; |
481 | } | 512 | } |
482 | 513 | ||
483 | size = (buf.ust_size + UM_KERN_PAGE_SIZE) & ~(UM_KERN_PAGE_SIZE - 1); | 514 | size = (buf.st_size + UM_KERN_PAGE_SIZE) & ~(UM_KERN_PAGE_SIZE - 1); |
484 | 515 | ||
485 | *new = ((struct iomem_region) { .next = iomem_regions, | 516 | *new = ((struct iomem_region) { .next = iomem_regions, |
486 | .driver = driver, | 517 | .driver = driver, |
@@ -491,11 +522,11 @@ int __init parse_iomem(char *str, int *add) | |||
491 | iomem_regions = new; | 522 | iomem_regions = new; |
492 | iomem_size += new->size + UM_KERN_PAGE_SIZE; | 523 | iomem_size += new->size + UM_KERN_PAGE_SIZE; |
493 | 524 | ||
494 | return(0); | 525 | return 0; |
495 | out_close: | 526 | out_close: |
496 | os_close_file(fd); | 527 | close(fd); |
497 | out: | 528 | out: |
498 | return(1); | 529 | return 1; |
499 | } | 530 | } |
500 | 531 | ||
501 | 532 | ||
@@ -526,6 +557,24 @@ static void openpty_cb(void *arg) | |||
526 | info->err = -errno; | 557 | info->err = -errno; |
527 | } | 558 | } |
528 | 559 | ||
560 | static int async_pty(int master, int slave) | ||
561 | { | ||
562 | int flags; | ||
563 | |||
564 | flags = fcntl(master, F_GETFL); | ||
565 | if(flags < 0) | ||
566 | return -errno; | ||
567 | |||
568 | if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) || | ||
569 | (fcntl(master, F_SETOWN, os_getpid()) < 0)) | ||
570 | return -errno; | ||
571 | |||
572 | if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0)) | ||
573 | return -errno; | ||
574 | |||
575 | return(0); | ||
576 | } | ||
577 | |||
529 | static void __init check_one_sigio(void (*proc)(int, int)) | 578 | static void __init check_one_sigio(void (*proc)(int, int)) |
530 | { | 579 | { |
531 | struct sigaction old, new; | 580 | struct sigaction old, new; |
@@ -551,7 +600,7 @@ static void __init check_one_sigio(void (*proc)(int, int)) | |||
551 | if (err < 0) | 600 | if (err < 0) |
552 | panic("check_sigio : __raw failed, errno = %d\n", -err); | 601 | panic("check_sigio : __raw failed, errno = %d\n", -err); |
553 | 602 | ||
554 | err = os_sigio_async(master, slave); | 603 | err = async_pty(master, slave); |
555 | if(err < 0) | 604 | if(err < 0) |
556 | panic("tty_fds : sigio_async failed, err = %d\n", -err); | 605 | panic("tty_fds : sigio_async failed, err = %d\n", -err); |
557 | 606 | ||
diff --git a/arch/um/os-Linux/sys-i386/registers.c b/arch/um/os-Linux/sys-i386/registers.c index 7cd0369e02b3..79cd93c8c5ed 100644 --- a/arch/um/os-Linux/sys-i386/registers.c +++ b/arch/um/os-Linux/sys-i386/registers.c | |||
@@ -34,27 +34,27 @@ void init_thread_registers(union uml_pt_regs *to) | |||
34 | int save_fp_registers(int pid, unsigned long *fp_regs) | 34 | int save_fp_registers(int pid, unsigned long *fp_regs) |
35 | { | 35 | { |
36 | if(ptrace(PTRACE_GETFPREGS, pid, 0, fp_regs) < 0) | 36 | if(ptrace(PTRACE_GETFPREGS, pid, 0, fp_regs) < 0) |
37 | return(-errno); | 37 | return -errno; |
38 | return(0); | 38 | return 0; |
39 | } | 39 | } |
40 | 40 | ||
41 | int restore_fp_registers(int pid, unsigned long *fp_regs) | 41 | int restore_fp_registers(int pid, unsigned long *fp_regs) |
42 | { | 42 | { |
43 | if(ptrace(PTRACE_SETFPREGS, pid, 0, fp_regs) < 0) | 43 | if(ptrace(PTRACE_SETFPREGS, pid, 0, fp_regs) < 0) |
44 | return(-errno); | 44 | return -errno; |
45 | return(0); | 45 | return 0; |
46 | } | 46 | } |
47 | 47 | ||
48 | static int move_registers(int pid, int int_op, union uml_pt_regs *regs, | 48 | static int move_registers(int pid, int int_op, union uml_pt_regs *regs, |
49 | int fp_op, unsigned long *fp_regs) | 49 | int fp_op, unsigned long *fp_regs) |
50 | { | 50 | { |
51 | if(ptrace(int_op, pid, 0, regs->skas.regs) < 0) | 51 | if(ptrace(int_op, pid, 0, regs->skas.regs) < 0) |
52 | return(-errno); | 52 | return -errno; |
53 | 53 | ||
54 | if(ptrace(fp_op, pid, 0, fp_regs) < 0) | 54 | if(ptrace(fp_op, pid, 0, fp_regs) < 0) |
55 | return(-errno); | 55 | return -errno; |
56 | 56 | ||
57 | return(0); | 57 | return 0; |
58 | } | 58 | } |
59 | 59 | ||
60 | void save_registers(int pid, union uml_pt_regs *regs) | 60 | void save_registers(int pid, union uml_pt_regs *regs) |
diff --git a/arch/um/os-Linux/sys-x86_64/Makefile b/arch/um/os-Linux/sys-x86_64/Makefile index f67842a7735b..7955e061a678 100644 --- a/arch/um/os-Linux/sys-x86_64/Makefile +++ b/arch/um/os-Linux/sys-x86_64/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # Licensed under the GPL | 3 | # Licensed under the GPL |
4 | # | 4 | # |
5 | 5 | ||
6 | obj-$(CONFIG_MODE_SKAS) = registers.o signal.o | 6 | obj-$(CONFIG_MODE_SKAS) = registers.o prctl.o signal.o |
7 | 7 | ||
8 | USER_OBJS := $(obj-y) | 8 | USER_OBJS := $(obj-y) |
9 | 9 | ||
diff --git a/arch/um/os-Linux/sys-x86_64/prctl.c b/arch/um/os-Linux/sys-x86_64/prctl.c new file mode 100644 index 000000000000..9d34eddb517f --- /dev/null +++ b/arch/um/os-Linux/sys-x86_64/prctl.c | |||
@@ -0,0 +1,12 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Jeff Dike (jdike@{addtoit.com,linux.intel.com}) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #include <sys/ptrace.h> | ||
7 | #include <linux/ptrace.h> | ||
8 | |||
9 | int os_arch_prctl(int pid, int code, unsigned long *addr) | ||
10 | { | ||
11 | return ptrace(PTRACE_ARCH_PRCTL, pid, (unsigned long) addr, code); | ||
12 | } | ||
diff --git a/arch/um/os-Linux/sys-x86_64/registers.c b/arch/um/os-Linux/sys-x86_64/registers.c index cb8e8a263280..a2d7e0c603f7 100644 --- a/arch/um/os-Linux/sys-x86_64/registers.c +++ b/arch/um/os-Linux/sys-x86_64/registers.c | |||
@@ -27,12 +27,12 @@ static int move_registers(int pid, int int_op, int fp_op, | |||
27 | union uml_pt_regs *regs) | 27 | union uml_pt_regs *regs) |
28 | { | 28 | { |
29 | if(ptrace(int_op, pid, 0, regs->skas.regs) < 0) | 29 | if(ptrace(int_op, pid, 0, regs->skas.regs) < 0) |
30 | return(-errno); | 30 | return -errno; |
31 | 31 | ||
32 | if(ptrace(fp_op, pid, 0, regs->skas.fp) < 0) | 32 | if(ptrace(fp_op, pid, 0, regs->skas.fp) < 0) |
33 | return(-errno); | 33 | return -errno; |
34 | 34 | ||
35 | return(0); | 35 | return 0; |
36 | } | 36 | } |
37 | 37 | ||
38 | void save_registers(int pid, union uml_pt_regs *regs) | 38 | void save_registers(int pid, union uml_pt_regs *regs) |
diff --git a/arch/um/os-Linux/umid.c b/arch/um/os-Linux/umid.c index 48092b95c8ab..b462863f7172 100644 --- a/arch/um/os-Linux/umid.c +++ b/arch/um/os-Linux/umid.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #define UMID_LEN 64 | 18 | #define UMID_LEN 64 |
19 | 19 | ||
20 | /* Changed by set_umid, which is run early in boot */ | 20 | /* Changed by set_umid, which is run early in boot */ |
21 | char umid[UMID_LEN] = { 0 }; | 21 | static char umid[UMID_LEN] = { 0 }; |
22 | 22 | ||
23 | /* Changed by set_uml_dir and make_uml_dir, which are run early in boot */ | 23 | /* Changed by set_uml_dir and make_uml_dir, which are run early in boot */ |
24 | static char *uml_dir = UML_DIR; | 24 | static char *uml_dir = UML_DIR; |
@@ -235,6 +235,7 @@ int __init set_umid(char *name) | |||
235 | return 0; | 235 | return 0; |
236 | } | 236 | } |
237 | 237 | ||
238 | /* Changed in make_umid, which is called during early boot */ | ||
238 | static int umid_setup = 0; | 239 | static int umid_setup = 0; |
239 | 240 | ||
240 | int __init make_umid(void) | 241 | int __init make_umid(void) |
diff --git a/arch/um/sys-x86_64/ptrace.c b/arch/um/sys-x86_64/ptrace.c index 147bbf05cbc2..55b66e09a98c 100644 --- a/arch/um/sys-x86_64/ptrace.c +++ b/arch/um/sys-x86_64/ptrace.c | |||
@@ -71,8 +71,6 @@ int poke_user(struct task_struct *child, long addr, long data) | |||
71 | 71 | ||
72 | if (addr < MAX_REG_OFFSET) | 72 | if (addr < MAX_REG_OFFSET) |
73 | return putreg(child, addr, data); | 73 | return putreg(child, addr, data); |
74 | |||
75 | #if 0 /* Need x86_64 debugregs handling */ | ||
76 | else if((addr >= offsetof(struct user, u_debugreg[0])) && | 74 | else if((addr >= offsetof(struct user, u_debugreg[0])) && |
77 | (addr <= offsetof(struct user, u_debugreg[7]))){ | 75 | (addr <= offsetof(struct user, u_debugreg[7]))){ |
78 | addr -= offsetof(struct user, u_debugreg[0]); | 76 | addr -= offsetof(struct user, u_debugreg[0]); |
@@ -81,7 +79,6 @@ int poke_user(struct task_struct *child, long addr, long data) | |||
81 | child->thread.arch.debugregs[addr] = data; | 79 | child->thread.arch.debugregs[addr] = data; |
82 | return 0; | 80 | return 0; |
83 | } | 81 | } |
84 | #endif | ||
85 | return -EIO; | 82 | return -EIO; |
86 | } | 83 | } |
87 | 84 | ||
@@ -119,14 +116,12 @@ int peek_user(struct task_struct *child, long addr, long data) | |||
119 | if(addr < MAX_REG_OFFSET){ | 116 | if(addr < MAX_REG_OFFSET){ |
120 | tmp = getreg(child, addr); | 117 | tmp = getreg(child, addr); |
121 | } | 118 | } |
122 | #if 0 /* Need x86_64 debugregs handling */ | ||
123 | else if((addr >= offsetof(struct user, u_debugreg[0])) && | 119 | else if((addr >= offsetof(struct user, u_debugreg[0])) && |
124 | (addr <= offsetof(struct user, u_debugreg[7]))){ | 120 | (addr <= offsetof(struct user, u_debugreg[7]))){ |
125 | addr -= offsetof(struct user, u_debugreg[0]); | 121 | addr -= offsetof(struct user, u_debugreg[0]); |
126 | addr = addr >> 2; | 122 | addr = addr >> 2; |
127 | tmp = child->thread.arch.debugregs[addr]; | 123 | tmp = child->thread.arch.debugregs[addr]; |
128 | } | 124 | } |
129 | #endif | ||
130 | return put_user(tmp, (unsigned long *) data); | 125 | return put_user(tmp, (unsigned long *) data); |
131 | } | 126 | } |
132 | 127 | ||
diff --git a/arch/um/sys-x86_64/syscalls.c b/arch/um/sys-x86_64/syscalls.c index 73ce4463f70c..01b91f9fa789 100644 --- a/arch/um/sys-x86_64/syscalls.c +++ b/arch/um/sys-x86_64/syscalls.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include "asm/prctl.h" /* XXX This should get the constants from libc */ | 16 | #include "asm/prctl.h" /* XXX This should get the constants from libc */ |
17 | #include "choose-mode.h" | 17 | #include "choose-mode.h" |
18 | #include "kern.h" | 18 | #include "kern.h" |
19 | #include "os.h" | ||
19 | 20 | ||
20 | asmlinkage long sys_uname64(struct new_utsname __user * name) | 21 | asmlinkage long sys_uname64(struct new_utsname __user * name) |
21 | { | 22 | { |
@@ -58,40 +59,69 @@ static long arch_prctl_tt(int code, unsigned long addr) | |||
58 | 59 | ||
59 | #ifdef CONFIG_MODE_SKAS | 60 | #ifdef CONFIG_MODE_SKAS |
60 | 61 | ||
61 | /* XXX: Must also call arch_prctl in the host, beside saving the segment bases! */ | 62 | long arch_prctl_skas(struct task_struct *task, int code, |
62 | static long arch_prctl_skas(int code, unsigned long addr) | 63 | unsigned long __user *addr) |
63 | { | 64 | { |
64 | long ret = 0; | 65 | unsigned long *ptr = addr, tmp; |
66 | long ret; | ||
67 | int pid = task->mm->context.skas.id.u.pid; | ||
65 | 68 | ||
69 | /* | ||
70 | * With ARCH_SET_FS (and ARCH_SET_GS is treated similarly to | ||
71 | * be safe), we need to call arch_prctl on the host because | ||
72 | * setting %fs may result in something else happening (like a | ||
73 | * GDT or thread.fs being set instead). So, we let the host | ||
74 | * fiddle the registers and thread struct and restore the | ||
75 | * registers afterwards. | ||
76 | * | ||
77 | * So, the saved registers are stored to the process (this | ||
78 | * needed because a stub may have been the last thing to run), | ||
79 | * arch_prctl is run on the host, then the registers are read | ||
80 | * back. | ||
81 | */ | ||
66 | switch(code){ | 82 | switch(code){ |
67 | case ARCH_SET_FS: | 83 | case ARCH_SET_FS: |
68 | current->thread.regs.regs.skas.regs[FS_BASE / sizeof(unsigned long)] = addr; | ||
69 | break; | ||
70 | case ARCH_SET_GS: | 84 | case ARCH_SET_GS: |
71 | current->thread.regs.regs.skas.regs[GS_BASE / sizeof(unsigned long)] = addr; | 85 | restore_registers(pid, ¤t->thread.regs.regs); |
86 | break; | ||
87 | case ARCH_GET_FS: | ||
88 | case ARCH_GET_GS: | ||
89 | /* | ||
90 | * With these two, we read to a local pointer and | ||
91 | * put_user it to the userspace pointer that we were | ||
92 | * given. If addr isn't valid (because it hasn't been | ||
93 | * faulted in or is just bogus), we want put_user to | ||
94 | * fault it in (or return -EFAULT) instead of having | ||
95 | * the host return -EFAULT. | ||
96 | */ | ||
97 | ptr = &tmp; | ||
98 | } | ||
99 | |||
100 | ret = os_arch_prctl(pid, code, ptr); | ||
101 | if(ret) | ||
102 | return ret; | ||
103 | |||
104 | switch(code){ | ||
105 | case ARCH_SET_FS: | ||
106 | case ARCH_SET_GS: | ||
107 | save_registers(pid, ¤t->thread.regs.regs); | ||
72 | break; | 108 | break; |
73 | case ARCH_GET_FS: | 109 | case ARCH_GET_FS: |
74 | ret = put_user(current->thread.regs.regs.skas. | 110 | ret = put_user(tmp, addr); |
75 | regs[FS_BASE / sizeof(unsigned long)], | ||
76 | (unsigned long __user *)addr); | ||
77 | break; | 111 | break; |
78 | case ARCH_GET_GS: | 112 | case ARCH_GET_GS: |
79 | ret = put_user(current->thread.regs.regs.skas. | 113 | ret = put_user(tmp, addr); |
80 | regs[GS_BASE / sizeof(unsigned long)], | ||
81 | (unsigned long __user *)addr); | ||
82 | break; | 114 | break; |
83 | default: | ||
84 | ret = -EINVAL; | ||
85 | break; | ||
86 | } | 115 | } |
87 | 116 | ||
88 | return(ret); | 117 | return ret; |
89 | } | 118 | } |
90 | #endif | 119 | #endif |
91 | 120 | ||
92 | long sys_arch_prctl(int code, unsigned long addr) | 121 | long sys_arch_prctl(int code, unsigned long addr) |
93 | { | 122 | { |
94 | return(CHOOSE_MODE_PROC(arch_prctl_tt, arch_prctl_skas, code, addr)); | 123 | return CHOOSE_MODE_PROC(arch_prctl_tt, arch_prctl_skas, current, code, |
124 | (unsigned long __user *) addr); | ||
95 | } | 125 | } |
96 | 126 | ||
97 | long sys_clone(unsigned long clone_flags, unsigned long newsp, | 127 | long sys_clone(unsigned long clone_flags, unsigned long newsp, |
@@ -105,5 +135,14 @@ long sys_clone(unsigned long clone_flags, unsigned long newsp, | |||
105 | ret = do_fork(clone_flags, newsp, ¤t->thread.regs, 0, parent_tid, | 135 | ret = do_fork(clone_flags, newsp, ¤t->thread.regs, 0, parent_tid, |
106 | child_tid); | 136 | child_tid); |
107 | current->thread.forking = 0; | 137 | current->thread.forking = 0; |
108 | return(ret); | 138 | return ret; |
139 | } | ||
140 | |||
141 | void arch_switch_to_skas(struct task_struct *from, struct task_struct *to) | ||
142 | { | ||
143 | if(to->thread.arch.fs == 0) | ||
144 | return; | ||
145 | |||
146 | arch_prctl_skas(to, ARCH_SET_FS, (void __user *) to->thread.arch.fs); | ||
109 | } | 147 | } |
148 | |||
diff --git a/arch/um/sys-x86_64/tls.c b/arch/um/sys-x86_64/tls.c index ce1bf1b81c43..febbc94be25f 100644 --- a/arch/um/sys-x86_64/tls.c +++ b/arch/um/sys-x86_64/tls.c | |||
@@ -1,14 +1,17 @@ | |||
1 | #include "linux/sched.h" | 1 | #include "linux/sched.h" |
2 | 2 | ||
3 | void debug_arch_force_load_TLS(void) | ||
4 | { | ||
5 | } | ||
6 | |||
7 | void clear_flushed_tls(struct task_struct *task) | 3 | void clear_flushed_tls(struct task_struct *task) |
8 | { | 4 | { |
9 | } | 5 | } |
10 | 6 | ||
11 | int arch_copy_tls(struct task_struct *t) | 7 | int arch_copy_tls(struct task_struct *t) |
12 | { | 8 | { |
9 | /* | ||
10 | * If CLONE_SETTLS is set, we need to save the thread id | ||
11 | * (which is argument 5, child_tid, of clone) so it can be set | ||
12 | * during context switches. | ||
13 | */ | ||
14 | t->thread.arch.fs = t->thread.regs.regs.skas.regs[R8 / sizeof(long)]; | ||
15 | |||
13 | return 0; | 16 | return 0; |
14 | } | 17 | } |
diff --git a/arch/v850/Kconfig b/arch/v850/Kconfig index f0d4d72e560f..dbfab8fc9b49 100644 --- a/arch/v850/Kconfig +++ b/arch/v850/Kconfig | |||
@@ -10,6 +10,9 @@ mainmenu "uClinux/v850 (w/o MMU) Kernel Configuration" | |||
10 | config MMU | 10 | config MMU |
11 | bool | 11 | bool |
12 | default n | 12 | default n |
13 | config ZONE_DMA | ||
14 | bool | ||
15 | default y | ||
13 | config RWSEM_GENERIC_SPINLOCK | 16 | config RWSEM_GENERIC_SPINLOCK |
14 | bool | 17 | bool |
15 | default y | 18 | default y |
diff --git a/arch/v850/kernel/anna.c b/arch/v850/kernel/anna.c index 40892d3e3c24..0e429041a117 100644 --- a/arch/v850/kernel/anna.c +++ b/arch/v850/kernel/anna.c | |||
@@ -114,7 +114,7 @@ static struct v850e_intc_irq_init irq_inits[] = { | |||
114 | { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 3, 5 }, | 114 | { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 3, 5 }, |
115 | { 0 } | 115 | { 0 } |
116 | }; | 116 | }; |
117 | #define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) | 117 | #define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1) |
118 | 118 | ||
119 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; | 119 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; |
120 | 120 | ||
diff --git a/arch/v850/kernel/as85ep1.c b/arch/v850/kernel/as85ep1.c index 5352f8a5aa07..18437bc5c3ad 100644 --- a/arch/v850/kernel/as85ep1.c +++ b/arch/v850/kernel/as85ep1.c | |||
@@ -142,7 +142,7 @@ static struct v850e_intc_irq_init irq_inits[] = { | |||
142 | { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 3, 5 }, | 142 | { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 3, 5 }, |
143 | { 0 } | 143 | { 0 } |
144 | }; | 144 | }; |
145 | #define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) | 145 | #define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1) |
146 | 146 | ||
147 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; | 147 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; |
148 | 148 | ||
diff --git a/arch/v850/kernel/fpga85e2c.c b/arch/v850/kernel/fpga85e2c.c index cb04a6954ccb..5c4923558a75 100644 --- a/arch/v850/kernel/fpga85e2c.c +++ b/arch/v850/kernel/fpga85e2c.c | |||
@@ -138,7 +138,7 @@ struct v850e_intc_irq_init irq_inits[] = { | |||
138 | { "RPU", IRQ_RPU(0), IRQ_RPU_NUM, 1, 6 }, | 138 | { "RPU", IRQ_RPU(0), IRQ_RPU_NUM, 1, 6 }, |
139 | { 0 } | 139 | { 0 } |
140 | }; | 140 | }; |
141 | #define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) | 141 | #define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1) |
142 | 142 | ||
143 | struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; | 143 | struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; |
144 | 144 | ||
diff --git a/arch/v850/kernel/gbus_int.c b/arch/v850/kernel/gbus_int.c index 25d636e79e6a..b2bcc251f65b 100644 --- a/arch/v850/kernel/gbus_int.c +++ b/arch/v850/kernel/gbus_int.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
18 | #include <linux/signal.h> | 18 | #include <linux/signal.h> |
19 | #include <linux/kernel.h> | ||
19 | 20 | ||
20 | #include <asm/machdep.h> | 21 | #include <asm/machdep.h> |
21 | 22 | ||
@@ -36,7 +37,7 @@ struct used_gint { | |||
36 | { 1, GBUS_INT_PRIORITY_HIGH }, | 37 | { 1, GBUS_INT_PRIORITY_HIGH }, |
37 | { 3, GBUS_INT_PRIORITY_LOW } | 38 | { 3, GBUS_INT_PRIORITY_LOW } |
38 | }; | 39 | }; |
39 | #define NUM_USED_GINTS (sizeof used_gint / sizeof used_gint[0]) | 40 | #define NUM_USED_GINTS ARRAY_SIZE(used_gint) |
40 | 41 | ||
41 | /* A table of which GINT is used by each GBUS interrupts (they are | 42 | /* A table of which GINT is used by each GBUS interrupts (they are |
42 | assigned based on priority). */ | 43 | assigned based on priority). */ |
@@ -231,8 +232,7 @@ struct gbus_int_irq_init gbus_irq_inits[] __initdata = { | |||
231 | { "GBUS_INT", IRQ_GBUS_INT(0), IRQ_GBUS_INT_NUM, 1, 6}, | 232 | { "GBUS_INT", IRQ_GBUS_INT(0), IRQ_GBUS_INT_NUM, 1, 6}, |
232 | { 0 } | 233 | { 0 } |
233 | }; | 234 | }; |
234 | #define NUM_GBUS_IRQ_INITS \ | 235 | #define NUM_GBUS_IRQ_INITS (ARRAY_SIZE(gbus_irq_inits) - 1) |
235 | ((sizeof gbus_irq_inits / sizeof gbus_irq_inits[0]) - 1) | ||
236 | 236 | ||
237 | static struct hw_interrupt_type gbus_hw_itypes[NUM_GBUS_IRQ_INITS]; | 237 | static struct hw_interrupt_type gbus_hw_itypes[NUM_GBUS_IRQ_INITS]; |
238 | 238 | ||
diff --git a/arch/v850/kernel/ma.c b/arch/v850/kernel/ma.c index 2aa8ab0f7edc..143774de75e1 100644 --- a/arch/v850/kernel/ma.c +++ b/arch/v850/kernel/ma.c | |||
@@ -43,7 +43,7 @@ static struct v850e_intc_irq_init irq_inits[] = { | |||
43 | { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 4, 5 }, | 43 | { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 4, 5 }, |
44 | { 0 } | 44 | { 0 } |
45 | }; | 45 | }; |
46 | #define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) | 46 | #define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1) |
47 | 47 | ||
48 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; | 48 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; |
49 | 49 | ||
diff --git a/arch/v850/kernel/me2.c b/arch/v850/kernel/me2.c index 14b0c8858aa4..38be5c194f6b 100644 --- a/arch/v850/kernel/me2.c +++ b/arch/v850/kernel/me2.c | |||
@@ -44,7 +44,7 @@ static struct v850e_intc_irq_init irq_inits[] = { | |||
44 | { "UBTITO", IRQ_INTUBTITO(0), IRQ_INTUBTITO_NUM, 5, 4 }, | 44 | { "UBTITO", IRQ_INTUBTITO(0), IRQ_INTUBTITO_NUM, 5, 4 }, |
45 | { 0 } | 45 | { 0 } |
46 | }; | 46 | }; |
47 | #define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) | 47 | #define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1) |
48 | 48 | ||
49 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; | 49 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; |
50 | 50 | ||
diff --git a/arch/v850/kernel/rte_cb.c b/arch/v850/kernel/rte_cb.c index 0f7f6cd705a2..43018e1edebd 100644 --- a/arch/v850/kernel/rte_cb.c +++ b/arch/v850/kernel/rte_cb.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
16 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
18 | #include <linux/kernel.h> | ||
18 | 19 | ||
19 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
20 | #include <asm/v850e_uart.h> | 21 | #include <asm/v850e_uart.h> |
@@ -176,8 +177,7 @@ static struct gbus_int_irq_init gbus_irq_inits[] = { | |||
176 | #endif | 177 | #endif |
177 | { 0 } | 178 | { 0 } |
178 | }; | 179 | }; |
179 | #define NUM_GBUS_IRQ_INITS \ | 180 | #define NUM_GBUS_IRQ_INITS (ARRAY_SIZE(gbus_irq_inits) - 1) |
180 | ((sizeof gbus_irq_inits / sizeof gbus_irq_inits[0]) - 1) | ||
181 | 181 | ||
182 | static struct hw_interrupt_type gbus_hw_itypes[NUM_GBUS_IRQ_INITS]; | 182 | static struct hw_interrupt_type gbus_hw_itypes[NUM_GBUS_IRQ_INITS]; |
183 | 183 | ||
diff --git a/arch/v850/kernel/rte_cb_leds.c b/arch/v850/kernel/rte_cb_leds.c index 996bd4f33ecb..aa47ab1dcd87 100644 --- a/arch/v850/kernel/rte_cb_leds.c +++ b/arch/v850/kernel/rte_cb_leds.c | |||
@@ -117,7 +117,7 @@ static loff_t leds_dev_lseek (struct file *file, loff_t offs, int whence) | |||
117 | return 0; | 117 | return 0; |
118 | } | 118 | } |
119 | 119 | ||
120 | static struct file_operations leds_fops = { | 120 | static const struct file_operations leds_fops = { |
121 | .read = leds_dev_read, | 121 | .read = leds_dev_read, |
122 | .write = leds_dev_write, | 122 | .write = leds_dev_write, |
123 | .llseek = leds_dev_lseek | 123 | .llseek = leds_dev_lseek |
diff --git a/arch/v850/kernel/rte_mb_a_pci.c b/arch/v850/kernel/rte_mb_a_pci.c index 35213fa9f7d8..35a4bd5515cb 100644 --- a/arch/v850/kernel/rte_mb_a_pci.c +++ b/arch/v850/kernel/rte_mb_a_pci.c | |||
@@ -70,8 +70,7 @@ static struct mb_pci_dev_irq mb_pci_dev_irqs[] = { | |||
70 | /* PCI slot 2 */ | 70 | /* PCI slot 2 */ |
71 | { 9, IRQ_MB_A_PCI2(0), 1 } | 71 | { 9, IRQ_MB_A_PCI2(0), 1 } |
72 | }; | 72 | }; |
73 | #define NUM_MB_PCI_DEV_IRQS \ | 73 | #define NUM_MB_PCI_DEV_IRQS ARRAY_SIZE(mb_pci_dev_irqs) |
74 | (sizeof mb_pci_dev_irqs / sizeof mb_pci_dev_irqs[0]) | ||
75 | 74 | ||
76 | 75 | ||
77 | /* PCI configuration primitives. */ | 76 | /* PCI configuration primitives. */ |
diff --git a/arch/v850/kernel/rte_me2_cb.c b/arch/v850/kernel/rte_me2_cb.c index 3be355a029e2..46803d48dffe 100644 --- a/arch/v850/kernel/rte_me2_cb.c +++ b/arch/v850/kernel/rte_me2_cb.c | |||
@@ -170,8 +170,7 @@ static struct cb_pic_irq_init cb_pic_irq_inits[] = { | |||
170 | { "CB_EXTTM2", IRQ_CB_EXTTM2, 1, 1, 6 }, | 170 | { "CB_EXTTM2", IRQ_CB_EXTTM2, 1, 1, 6 }, |
171 | { 0 } | 171 | { 0 } |
172 | }; | 172 | }; |
173 | #define NUM_CB_PIC_IRQ_INITS \ | 173 | #define NUM_CB_PIC_IRQ_INITS (ARRAY_SIZE(cb_pic_irq_inits) - 1) |
174 | ((sizeof cb_pic_irq_inits / sizeof cb_pic_irq_inits[0]) - 1) | ||
175 | 174 | ||
176 | static struct hw_interrupt_type cb_pic_hw_itypes[NUM_CB_PIC_IRQ_INITS]; | 175 | static struct hw_interrupt_type cb_pic_hw_itypes[NUM_CB_PIC_IRQ_INITS]; |
177 | static unsigned char cb_pic_active_irqs = 0; | 176 | static unsigned char cb_pic_active_irqs = 0; |
diff --git a/arch/v850/kernel/setup.c b/arch/v850/kernel/setup.c index 1bf672a25692..a914f244f494 100644 --- a/arch/v850/kernel/setup.c +++ b/arch/v850/kernel/setup.c | |||
@@ -42,7 +42,7 @@ extern char _root_fs_image_start __attribute__ ((__weak__)); | |||
42 | extern char _root_fs_image_end __attribute__ ((__weak__)); | 42 | extern char _root_fs_image_end __attribute__ ((__weak__)); |
43 | 43 | ||
44 | 44 | ||
45 | char command_line[COMMAND_LINE_SIZE]; | 45 | char __initdata command_line[COMMAND_LINE_SIZE]; |
46 | 46 | ||
47 | /* Memory not used by the kernel. */ | 47 | /* Memory not used by the kernel. */ |
48 | static unsigned long total_ram_pages; | 48 | static unsigned long total_ram_pages; |
@@ -64,8 +64,8 @@ void __init setup_arch (char **cmdline) | |||
64 | { | 64 | { |
65 | /* Keep a copy of command line */ | 65 | /* Keep a copy of command line */ |
66 | *cmdline = command_line; | 66 | *cmdline = command_line; |
67 | memcpy (saved_command_line, command_line, COMMAND_LINE_SIZE); | 67 | memcpy (boot_command_line, command_line, COMMAND_LINE_SIZE); |
68 | saved_command_line[COMMAND_LINE_SIZE - 1] = '\0'; | 68 | boot_command_line[COMMAND_LINE_SIZE - 1] = '\0'; |
69 | 69 | ||
70 | console_verbose (); | 70 | console_verbose (); |
71 | 71 | ||
diff --git a/arch/v850/kernel/teg.c b/arch/v850/kernel/teg.c index 290d50665016..699248f92aae 100644 --- a/arch/v850/kernel/teg.c +++ b/arch/v850/kernel/teg.c | |||
@@ -43,7 +43,7 @@ static struct v850e_intc_irq_init irq_inits[] = { | |||
43 | { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 1, 5 }, | 43 | { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 1, 5 }, |
44 | { 0 } | 44 | { 0 } |
45 | }; | 45 | }; |
46 | #define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) | 46 | #define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1) |
47 | 47 | ||
48 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; | 48 | static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; |
49 | 49 | ||
diff --git a/arch/v850/kernel/time.c b/arch/v850/kernel/time.c index cd06f47c0ea7..486e3a441c86 100644 --- a/arch/v850/kernel/time.c +++ b/arch/v850/kernel/time.c | |||
@@ -28,14 +28,6 @@ | |||
28 | #define TICK_SIZE (tick_nsec / 1000) | 28 | #define TICK_SIZE (tick_nsec / 1000) |
29 | 29 | ||
30 | /* | 30 | /* |
31 | * Scheduler clock - returns current time in nanosec units. | ||
32 | */ | ||
33 | unsigned long long sched_clock(void) | ||
34 | { | ||
35 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
36 | } | ||
37 | |||
38 | /* | ||
39 | * timer_interrupt() needs to keep up the real-time clock, | 31 | * timer_interrupt() needs to keep up the real-time clock, |
40 | * as well as call the "do_timer()" routine every clocktick | 32 | * as well as call the "do_timer()" routine every clocktick |
41 | */ | 33 | */ |
diff --git a/arch/v850/kernel/vmlinux.lds.S b/arch/v850/kernel/vmlinux.lds.S index 3a5fd07fe064..356308221251 100644 --- a/arch/v850/kernel/vmlinux.lds.S +++ b/arch/v850/kernel/vmlinux.lds.S | |||
@@ -190,12 +190,16 @@ | |||
190 | __root_fs_image_start = . ; \ | 190 | __root_fs_image_start = . ; \ |
191 | *(.root) \ | 191 | *(.root) \ |
192 | __root_fs_image_end = . ; | 192 | __root_fs_image_end = . ; |
193 | |||
194 | #ifdef CONFIG_BLK_DEV_INITRD | ||
193 | /* The initramfs archive. */ | 195 | /* The initramfs archive. */ |
194 | #define INITRAMFS_CONTENTS \ | 196 | #define INITRAMFS_CONTENTS \ |
195 | . = ALIGN (4) ; \ | 197 | . = ALIGN (4) ; \ |
196 | ___initramfs_start = . ; \ | 198 | ___initramfs_start = . ; \ |
197 | *(.init.ramfs) \ | 199 | *(.init.ramfs) \ |
198 | ___initramfs_end = . ; | 200 | ___initramfs_end = . ; |
201 | #endif | ||
202 | |||
199 | /* Where the initial bootmap (bitmap for the boot-time memory allocator) | 203 | /* Where the initial bootmap (bitmap for the boot-time memory allocator) |
200 | should be place. */ | 204 | should be place. */ |
201 | #define BOOTMAP_CONTENTS \ | 205 | #define BOOTMAP_CONTENTS \ |
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig index d4275537b25b..02dd39457bcf 100644 --- a/arch/x86_64/Kconfig +++ b/arch/x86_64/Kconfig | |||
@@ -44,6 +44,10 @@ config MMU | |||
44 | bool | 44 | bool |
45 | default y | 45 | default y |
46 | 46 | ||
47 | config ZONE_DMA | ||
48 | bool | ||
49 | default y | ||
50 | |||
47 | config ISA | 51 | config ISA |
48 | bool | 52 | bool |
49 | 53 | ||
diff --git a/arch/x86_64/ia32/ia32_binfmt.c b/arch/x86_64/ia32/ia32_binfmt.c index 5ce0bd486bbf..6efe04f3cbca 100644 --- a/arch/x86_64/ia32/ia32_binfmt.c +++ b/arch/x86_64/ia32/ia32_binfmt.c | |||
@@ -300,12 +300,10 @@ int ia32_setup_arg_pages(struct linux_binprm *bprm, unsigned long stack_top, | |||
300 | bprm->loader += stack_base; | 300 | bprm->loader += stack_base; |
301 | bprm->exec += stack_base; | 301 | bprm->exec += stack_base; |
302 | 302 | ||
303 | mpnt = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); | 303 | mpnt = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); |
304 | if (!mpnt) | 304 | if (!mpnt) |
305 | return -ENOMEM; | 305 | return -ENOMEM; |
306 | 306 | ||
307 | memset(mpnt, 0, sizeof(*mpnt)); | ||
308 | |||
309 | down_write(&mm->mmap_sem); | 307 | down_write(&mm->mmap_sem); |
310 | { | 308 | { |
311 | mpnt->vm_mm = mm; | 309 | mpnt->vm_mm = mm; |
diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S index b4aa875e175b..5f32cf4de5fb 100644 --- a/arch/x86_64/ia32/ia32entry.S +++ b/arch/x86_64/ia32/ia32entry.S | |||
@@ -515,7 +515,7 @@ ia32_sys_call_table: | |||
515 | .quad sys32_vm86_warning /* vm86old */ | 515 | .quad sys32_vm86_warning /* vm86old */ |
516 | .quad compat_sys_wait4 | 516 | .quad compat_sys_wait4 |
517 | .quad sys_swapoff /* 115 */ | 517 | .quad sys_swapoff /* 115 */ |
518 | .quad sys32_sysinfo | 518 | .quad compat_sys_sysinfo |
519 | .quad sys32_ipc | 519 | .quad sys32_ipc |
520 | .quad sys_fsync | 520 | .quad sys_fsync |
521 | .quad stub32_sigreturn | 521 | .quad stub32_sigreturn |
diff --git a/arch/x86_64/ia32/sys_ia32.c b/arch/x86_64/ia32/sys_ia32.c index c9bac3af29d6..200fdde18d96 100644 --- a/arch/x86_64/ia32/sys_ia32.c +++ b/arch/x86_64/ia32/sys_ia32.c | |||
@@ -523,72 +523,6 @@ sys32_sysfs(int option, u32 arg1, u32 arg2) | |||
523 | return sys_sysfs(option, arg1, arg2); | 523 | return sys_sysfs(option, arg1, arg2); |
524 | } | 524 | } |
525 | 525 | ||
526 | struct sysinfo32 { | ||
527 | s32 uptime; | ||
528 | u32 loads[3]; | ||
529 | u32 totalram; | ||
530 | u32 freeram; | ||
531 | u32 sharedram; | ||
532 | u32 bufferram; | ||
533 | u32 totalswap; | ||
534 | u32 freeswap; | ||
535 | unsigned short procs; | ||
536 | unsigned short pad; | ||
537 | u32 totalhigh; | ||
538 | u32 freehigh; | ||
539 | u32 mem_unit; | ||
540 | char _f[20-2*sizeof(u32)-sizeof(int)]; | ||
541 | }; | ||
542 | |||
543 | asmlinkage long | ||
544 | sys32_sysinfo(struct sysinfo32 __user *info) | ||
545 | { | ||
546 | struct sysinfo s; | ||
547 | int ret; | ||
548 | mm_segment_t old_fs = get_fs (); | ||
549 | int bitcount = 0; | ||
550 | |||
551 | set_fs (KERNEL_DS); | ||
552 | ret = sys_sysinfo((struct sysinfo __user *)&s); | ||
553 | set_fs (old_fs); | ||
554 | |||
555 | /* Check to see if any memory value is too large for 32-bit and scale | ||
556 | * down if needed | ||
557 | */ | ||
558 | if ((s.totalram >> 32) || (s.totalswap >> 32)) { | ||
559 | while (s.mem_unit < PAGE_SIZE) { | ||
560 | s.mem_unit <<= 1; | ||
561 | bitcount++; | ||
562 | } | ||
563 | s.totalram >>= bitcount; | ||
564 | s.freeram >>= bitcount; | ||
565 | s.sharedram >>= bitcount; | ||
566 | s.bufferram >>= bitcount; | ||
567 | s.totalswap >>= bitcount; | ||
568 | s.freeswap >>= bitcount; | ||
569 | s.totalhigh >>= bitcount; | ||
570 | s.freehigh >>= bitcount; | ||
571 | } | ||
572 | |||
573 | if (!access_ok(VERIFY_WRITE, info, sizeof(struct sysinfo32)) || | ||
574 | __put_user (s.uptime, &info->uptime) || | ||
575 | __put_user (s.loads[0], &info->loads[0]) || | ||
576 | __put_user (s.loads[1], &info->loads[1]) || | ||
577 | __put_user (s.loads[2], &info->loads[2]) || | ||
578 | __put_user (s.totalram, &info->totalram) || | ||
579 | __put_user (s.freeram, &info->freeram) || | ||
580 | __put_user (s.sharedram, &info->sharedram) || | ||
581 | __put_user (s.bufferram, &info->bufferram) || | ||
582 | __put_user (s.totalswap, &info->totalswap) || | ||
583 | __put_user (s.freeswap, &info->freeswap) || | ||
584 | __put_user (s.procs, &info->procs) || | ||
585 | __put_user (s.totalhigh, &info->totalhigh) || | ||
586 | __put_user (s.freehigh, &info->freehigh) || | ||
587 | __put_user (s.mem_unit, &info->mem_unit)) | ||
588 | return -EFAULT; | ||
589 | return 0; | ||
590 | } | ||
591 | |||
592 | asmlinkage long | 526 | asmlinkage long |
593 | sys32_sched_rr_get_interval(compat_pid_t pid, struct compat_timespec __user *interval) | 527 | sys32_sched_rr_get_interval(compat_pid_t pid, struct compat_timespec __user *interval) |
594 | { | 528 | { |
diff --git a/arch/x86_64/ia32/syscall32.c b/arch/x86_64/ia32/syscall32.c index 59f1fa155915..568ff0df89e7 100644 --- a/arch/x86_64/ia32/syscall32.c +++ b/arch/x86_64/ia32/syscall32.c | |||
@@ -18,68 +18,34 @@ extern unsigned char syscall32_syscall[], syscall32_syscall_end[]; | |||
18 | extern unsigned char syscall32_sysenter[], syscall32_sysenter_end[]; | 18 | extern unsigned char syscall32_sysenter[], syscall32_sysenter_end[]; |
19 | extern int sysctl_vsyscall32; | 19 | extern int sysctl_vsyscall32; |
20 | 20 | ||
21 | char *syscall32_page; | 21 | static struct page *syscall32_pages[1]; |
22 | static int use_sysenter = -1; | 22 | static int use_sysenter = -1; |
23 | 23 | ||
24 | static struct page * | ||
25 | syscall32_nopage(struct vm_area_struct *vma, unsigned long adr, int *type) | ||
26 | { | ||
27 | struct page *p = virt_to_page(adr - vma->vm_start + syscall32_page); | ||
28 | get_page(p); | ||
29 | return p; | ||
30 | } | ||
31 | |||
32 | /* Prevent VMA merging */ | ||
33 | static void syscall32_vma_close(struct vm_area_struct *vma) | ||
34 | { | ||
35 | } | ||
36 | |||
37 | static struct vm_operations_struct syscall32_vm_ops = { | ||
38 | .close = syscall32_vma_close, | ||
39 | .nopage = syscall32_nopage, | ||
40 | }; | ||
41 | |||
42 | struct linux_binprm; | 24 | struct linux_binprm; |
43 | 25 | ||
44 | /* Setup a VMA at program startup for the vsyscall page */ | 26 | /* Setup a VMA at program startup for the vsyscall page */ |
45 | int syscall32_setup_pages(struct linux_binprm *bprm, int exstack) | 27 | int syscall32_setup_pages(struct linux_binprm *bprm, int exstack) |
46 | { | 28 | { |
47 | int npages = (VSYSCALL32_END - VSYSCALL32_BASE) >> PAGE_SHIFT; | ||
48 | struct vm_area_struct *vma; | ||
49 | struct mm_struct *mm = current->mm; | 29 | struct mm_struct *mm = current->mm; |
50 | int ret; | 30 | int ret; |
51 | 31 | ||
52 | vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); | 32 | down_write(&mm->mmap_sem); |
53 | if (!vma) | ||
54 | return -ENOMEM; | ||
55 | |||
56 | memset(vma, 0, sizeof(struct vm_area_struct)); | ||
57 | /* Could randomize here */ | ||
58 | vma->vm_start = VSYSCALL32_BASE; | ||
59 | vma->vm_end = VSYSCALL32_END; | ||
60 | /* MAYWRITE to allow gdb to COW and set breakpoints */ | ||
61 | vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE; | ||
62 | /* | 33 | /* |
34 | * MAYWRITE to allow gdb to COW and set breakpoints | ||
35 | * | ||
63 | * Make sure the vDSO gets into every core dump. | 36 | * Make sure the vDSO gets into every core dump. |
64 | * Dumping its contents makes post-mortem fully interpretable later | 37 | * Dumping its contents makes post-mortem fully interpretable later |
65 | * without matching up the same kernel and hardware config to see | 38 | * without matching up the same kernel and hardware config to see |
66 | * what PC values meant. | 39 | * what PC values meant. |
67 | */ | 40 | */ |
68 | vma->vm_flags |= VM_ALWAYSDUMP; | 41 | /* Could randomize here */ |
69 | vma->vm_flags |= mm->def_flags; | 42 | ret = install_special_mapping(mm, VSYSCALL32_BASE, PAGE_SIZE, |
70 | vma->vm_page_prot = protection_map[vma->vm_flags & 7]; | 43 | VM_READ|VM_EXEC| |
71 | vma->vm_ops = &syscall32_vm_ops; | 44 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| |
72 | vma->vm_mm = mm; | 45 | VM_ALWAYSDUMP, |
73 | 46 | syscall32_pages); | |
74 | down_write(&mm->mmap_sem); | ||
75 | if ((ret = insert_vm_struct(mm, vma))) { | ||
76 | up_write(&mm->mmap_sem); | ||
77 | kmem_cache_free(vm_area_cachep, vma); | ||
78 | return ret; | ||
79 | } | ||
80 | mm->total_vm += npages; | ||
81 | up_write(&mm->mmap_sem); | 47 | up_write(&mm->mmap_sem); |
82 | return 0; | 48 | return ret; |
83 | } | 49 | } |
84 | 50 | ||
85 | const char *arch_vma_name(struct vm_area_struct *vma) | 51 | const char *arch_vma_name(struct vm_area_struct *vma) |
@@ -92,9 +58,10 @@ const char *arch_vma_name(struct vm_area_struct *vma) | |||
92 | 58 | ||
93 | static int __init init_syscall32(void) | 59 | static int __init init_syscall32(void) |
94 | { | 60 | { |
95 | syscall32_page = (void *)get_zeroed_page(GFP_KERNEL); | 61 | char *syscall32_page = (void *)get_zeroed_page(GFP_KERNEL); |
96 | if (!syscall32_page) | 62 | if (!syscall32_page) |
97 | panic("Cannot allocate syscall32 page"); | 63 | panic("Cannot allocate syscall32 page"); |
64 | syscall32_pages[0] = virt_to_page(syscall32_page); | ||
98 | if (use_sysenter > 0) { | 65 | if (use_sysenter > 0) { |
99 | memcpy(syscall32_page, syscall32_sysenter, | 66 | memcpy(syscall32_page, syscall32_sysenter, |
100 | syscall32_sysenter_end - syscall32_sysenter); | 67 | syscall32_sysenter_end - syscall32_sysenter); |
diff --git a/arch/x86_64/kernel/head64.c b/arch/x86_64/kernel/head64.c index cc230b93cd1c..5f197b0a330a 100644 --- a/arch/x86_64/kernel/head64.c +++ b/arch/x86_64/kernel/head64.c | |||
@@ -34,8 +34,6 @@ static void __init clear_bss(void) | |||
34 | #define OLD_CL_BASE_ADDR 0x90000 | 34 | #define OLD_CL_BASE_ADDR 0x90000 |
35 | #define OLD_CL_OFFSET 0x90022 | 35 | #define OLD_CL_OFFSET 0x90022 |
36 | 36 | ||
37 | extern char saved_command_line[]; | ||
38 | |||
39 | static void __init copy_bootdata(char *real_mode_data) | 37 | static void __init copy_bootdata(char *real_mode_data) |
40 | { | 38 | { |
41 | int new_data; | 39 | int new_data; |
@@ -50,7 +48,7 @@ static void __init copy_bootdata(char *real_mode_data) | |||
50 | new_data = OLD_CL_BASE_ADDR + * (u16 *) OLD_CL_OFFSET; | 48 | new_data = OLD_CL_BASE_ADDR + * (u16 *) OLD_CL_OFFSET; |
51 | } | 49 | } |
52 | command_line = (char *) ((u64)(new_data)); | 50 | command_line = (char *) ((u64)(new_data)); |
53 | memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); | 51 | memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); |
54 | } | 52 | } |
55 | 53 | ||
56 | void __init x86_64_start_kernel(char * real_mode_data) | 54 | void __init x86_64_start_kernel(char * real_mode_data) |
diff --git a/arch/x86_64/kernel/mce.c b/arch/x86_64/kernel/mce.c index ac085038af29..bdb54a2c9f18 100644 --- a/arch/x86_64/kernel/mce.c +++ b/arch/x86_64/kernel/mce.c | |||
@@ -516,7 +516,7 @@ static int mce_ioctl(struct inode *i, struct file *f,unsigned int cmd, unsigned | |||
516 | } | 516 | } |
517 | } | 517 | } |
518 | 518 | ||
519 | static struct file_operations mce_chrdev_ops = { | 519 | static const struct file_operations mce_chrdev_ops = { |
520 | .read = mce_read, | 520 | .read = mce_read, |
521 | .ioctl = mce_ioctl, | 521 | .ioctl = mce_ioctl, |
522 | }; | 522 | }; |
diff --git a/arch/x86_64/kernel/mce_amd.c b/arch/x86_64/kernel/mce_amd.c index fa09debad4b7..93c707257637 100644 --- a/arch/x86_64/kernel/mce_amd.c +++ b/arch/x86_64/kernel/mce_amd.c | |||
@@ -401,7 +401,6 @@ static __cpuinit int allocate_threshold_blocks(unsigned int cpu, | |||
401 | b = kzalloc(sizeof(struct threshold_block), GFP_KERNEL); | 401 | b = kzalloc(sizeof(struct threshold_block), GFP_KERNEL); |
402 | if (!b) | 402 | if (!b) |
403 | return -ENOMEM; | 403 | return -ENOMEM; |
404 | memset(b, 0, sizeof(struct threshold_block)); | ||
405 | 404 | ||
406 | b->block = block; | 405 | b->block = block; |
407 | b->bank = bank; | 406 | b->bank = bank; |
@@ -490,7 +489,6 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank) | |||
490 | err = -ENOMEM; | 489 | err = -ENOMEM; |
491 | goto out; | 490 | goto out; |
492 | } | 491 | } |
493 | memset(b, 0, sizeof(struct threshold_bank)); | ||
494 | 492 | ||
495 | kobject_set_name(&b->kobj, "threshold_bank%i", bank); | 493 | kobject_set_name(&b->kobj, "threshold_bank%i", bank); |
496 | b->kobj.parent = &per_cpu(device_mce, cpu).kobj; | 494 | b->kobj.parent = &per_cpu(device_mce, cpu).kobj; |
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c index af425a8049fb..60477244d1a3 100644 --- a/arch/x86_64/kernel/setup.c +++ b/arch/x86_64/kernel/setup.c | |||
@@ -100,7 +100,7 @@ EXPORT_SYMBOL_GPL(edid_info); | |||
100 | 100 | ||
101 | extern int root_mountflags; | 101 | extern int root_mountflags; |
102 | 102 | ||
103 | char command_line[COMMAND_LINE_SIZE]; | 103 | char __initdata command_line[COMMAND_LINE_SIZE]; |
104 | 104 | ||
105 | struct resource standard_io_resources[] = { | 105 | struct resource standard_io_resources[] = { |
106 | { .name = "dma1", .start = 0x00, .end = 0x1f, | 106 | { .name = "dma1", .start = 0x00, .end = 0x1f, |
@@ -343,7 +343,7 @@ static void discover_ebda(void) | |||
343 | 343 | ||
344 | void __init setup_arch(char **cmdline_p) | 344 | void __init setup_arch(char **cmdline_p) |
345 | { | 345 | { |
346 | printk(KERN_INFO "Command line: %s\n", saved_command_line); | 346 | printk(KERN_INFO "Command line: %s\n", boot_command_line); |
347 | 347 | ||
348 | ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); | 348 | ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); |
349 | screen_info = SCREEN_INFO; | 349 | screen_info = SCREEN_INFO; |
@@ -373,7 +373,7 @@ void __init setup_arch(char **cmdline_p) | |||
373 | 373 | ||
374 | early_identify_cpu(&boot_cpu_data); | 374 | early_identify_cpu(&boot_cpu_data); |
375 | 375 | ||
376 | strlcpy(command_line, saved_command_line, COMMAND_LINE_SIZE); | 376 | strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); |
377 | *cmdline_p = command_line; | 377 | *cmdline_p = command_line; |
378 | 378 | ||
379 | parse_early_param(); | 379 | parse_early_param(); |
diff --git a/arch/x86_64/kernel/vmlinux.lds.S b/arch/x86_64/kernel/vmlinux.lds.S index 1e54ddf2338d..c360c4225244 100644 --- a/arch/x86_64/kernel/vmlinux.lds.S +++ b/arch/x86_64/kernel/vmlinux.lds.S | |||
@@ -192,10 +192,14 @@ SECTIONS | |||
192 | from .altinstructions and .eh_frame */ | 192 | from .altinstructions and .eh_frame */ |
193 | .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } | 193 | .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } |
194 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } | 194 | .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } |
195 | |||
196 | #ifdef CONFIG_BLK_DEV_INITRD | ||
195 | . = ALIGN(4096); | 197 | . = ALIGN(4096); |
196 | __initramfs_start = .; | 198 | __initramfs_start = .; |
197 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { *(.init.ramfs) } | 199 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { *(.init.ramfs) } |
198 | __initramfs_end = .; | 200 | __initramfs_end = .; |
201 | #endif | ||
202 | |||
199 | . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); | 203 | . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); |
200 | __per_cpu_start = .; | 204 | __per_cpu_start = .; |
201 | .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { *(.data.percpu) } | 205 | .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { *(.data.percpu) } |
diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c index a65fc6f1dcaf..49e8cf2e06f8 100644 --- a/arch/x86_64/mm/fault.c +++ b/arch/x86_64/mm/fault.c | |||
@@ -69,27 +69,6 @@ static inline int notify_page_fault(enum die_val val, const char *str, | |||
69 | return atomic_notifier_call_chain(¬ify_page_fault_chain, val, &args); | 69 | return atomic_notifier_call_chain(¬ify_page_fault_chain, val, &args); |
70 | } | 70 | } |
71 | 71 | ||
72 | void bust_spinlocks(int yes) | ||
73 | { | ||
74 | int loglevel_save = console_loglevel; | ||
75 | if (yes) { | ||
76 | oops_in_progress = 1; | ||
77 | } else { | ||
78 | #ifdef CONFIG_VT | ||
79 | unblank_screen(); | ||
80 | #endif | ||
81 | oops_in_progress = 0; | ||
82 | /* | ||
83 | * OK, the message is on the console. Now we call printk() | ||
84 | * without oops_in_progress set so that printk will give klogd | ||
85 | * a poke. Hold onto your hats... | ||
86 | */ | ||
87 | console_loglevel = 15; /* NMI oopser may have shut the console up */ | ||
88 | printk(" "); | ||
89 | console_loglevel = loglevel_save; | ||
90 | } | ||
91 | } | ||
92 | |||
93 | /* Sometimes the CPU reports invalid exceptions on prefetch. | 72 | /* Sometimes the CPU reports invalid exceptions on prefetch. |
94 | Check that here and ignore. | 73 | Check that here and ignore. |
95 | Opcode checker based on code by Richard Brunner */ | 74 | Opcode checker based on code by Richard Brunner */ |
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index 2e74cb0b7807..7fbb44bea37f 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig | |||
@@ -7,6 +7,10 @@ config FRAME_POINTER | |||
7 | bool | 7 | bool |
8 | default n | 8 | default n |
9 | 9 | ||
10 | config ZONE_DMA | ||
11 | bool | ||
12 | default y | ||
13 | |||
10 | config XTENSA | 14 | config XTENSA |
11 | bool | 15 | bool |
12 | default y | 16 | default y |
@@ -42,6 +46,9 @@ config ARCH_HAS_ILOG2_U64 | |||
42 | bool | 46 | bool |
43 | default n | 47 | default n |
44 | 48 | ||
49 | config NO_IOPORT | ||
50 | def_bool y | ||
51 | |||
45 | source "init/Kconfig" | 52 | source "init/Kconfig" |
46 | 53 | ||
47 | menu "Processor type and features" | 54 | menu "Processor type and features" |
diff --git a/arch/xtensa/kernel/setup.c b/arch/xtensa/kernel/setup.c index b6374c09de20..1ecf6716c327 100644 --- a/arch/xtensa/kernel/setup.c +++ b/arch/xtensa/kernel/setup.c | |||
@@ -78,7 +78,7 @@ extern unsigned long loops_per_jiffy; | |||
78 | 78 | ||
79 | /* Command line specified as configuration option. */ | 79 | /* Command line specified as configuration option. */ |
80 | 80 | ||
81 | static char command_line[COMMAND_LINE_SIZE]; | 81 | static char __initdata command_line[COMMAND_LINE_SIZE]; |
82 | 82 | ||
83 | #ifdef CONFIG_CMDLINE_BOOL | 83 | #ifdef CONFIG_CMDLINE_BOOL |
84 | static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; | 84 | static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; |
@@ -253,8 +253,8 @@ void __init setup_arch(char **cmdline_p) | |||
253 | extern int mem_reserve(unsigned long, unsigned long, int); | 253 | extern int mem_reserve(unsigned long, unsigned long, int); |
254 | extern void bootmem_init(void); | 254 | extern void bootmem_init(void); |
255 | 255 | ||
256 | memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); | 256 | memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); |
257 | saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; | 257 | boot_command_line[COMMAND_LINE_SIZE-1] = '\0'; |
258 | *cmdline_p = command_line; | 258 | *cmdline_p = command_line; |
259 | 259 | ||
260 | /* Reserve some memory regions */ | 260 | /* Reserve some memory regions */ |
diff --git a/arch/xtensa/kernel/time.c b/arch/xtensa/kernel/time.c index a350431363a0..22949be4a5d8 100644 --- a/arch/xtensa/kernel/time.c +++ b/arch/xtensa/kernel/time.c | |||
@@ -38,15 +38,6 @@ unsigned long ccount_nsec; /* nsec per ccount increment */ | |||
38 | unsigned int last_ccount_stamp; | 38 | unsigned int last_ccount_stamp; |
39 | static long last_rtc_update = 0; | 39 | static long last_rtc_update = 0; |
40 | 40 | ||
41 | /* | ||
42 | * Scheduler clock - returns current tim in nanosec units. | ||
43 | */ | ||
44 | |||
45 | unsigned long long sched_clock(void) | ||
46 | { | ||
47 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
48 | } | ||
49 | |||
50 | static irqreturn_t timer_interrupt(int irq, void *dev_id); | 41 | static irqreturn_t timer_interrupt(int irq, void *dev_id); |
51 | static struct irqaction timer_irqaction = { | 42 | static struct irqaction timer_irqaction = { |
52 | .handler = timer_interrupt, | 43 | .handler = timer_interrupt, |
diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S index a36c104c3a52..ab6370054cee 100644 --- a/arch/xtensa/kernel/vmlinux.lds.S +++ b/arch/xtensa/kernel/vmlinux.lds.S | |||
@@ -203,10 +203,12 @@ SECTIONS | |||
203 | .data.percpu : { *(.data.percpu) } | 203 | .data.percpu : { *(.data.percpu) } |
204 | __per_cpu_end = .; | 204 | __per_cpu_end = .; |
205 | 205 | ||
206 | #ifdef CONFIG_BLK_DEV_INITRD | ||
206 | . = ALIGN(4096); | 207 | . = ALIGN(4096); |
207 | __initramfs_start =.; | 208 | __initramfs_start =.; |
208 | .init.ramfs : { *(.init.ramfs) } | 209 | .init.ramfs : { *(.init.ramfs) } |
209 | __initramfs_end = .; | 210 | __initramfs_end = .; |
211 | #endif | ||
210 | 212 | ||
211 | /* We need this dummy segment here */ | 213 | /* We need this dummy segment here */ |
212 | 214 | ||