aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm26/kernel/entry.S10
-rw-r--r--arch/cris/arch-v32/drivers/pci/dma.c2
-rw-r--r--arch/frv/mm/init.c3
-rw-r--r--arch/i386/kernel/pci-dma.c2
-rw-r--r--arch/powerpc/platforms/ps3/Kconfig28
-rw-r--r--arch/um/Kconfig.char19
-rw-r--r--arch/um/os-Linux/elf_aux.c3
-rw-r--r--arch/um/os-Linux/sigio.c5
-rw-r--r--arch/um/sys-i386/ldt.c36
9 files changed, 74 insertions, 34 deletions
diff --git a/arch/arm26/kernel/entry.S b/arch/arm26/kernel/entry.S
index 6d910ea43d34..91496cc687b1 100644
--- a/arch/arm26/kernel/entry.S
+++ b/arch/arm26/kernel/entry.S
@@ -245,11 +245,6 @@ ENTRY(vector_swi)
245 zero_fp 245 zero_fp
246 get_scno 246 get_scno
247 247
248#ifdef CONFIG_ALIGNMENT_TRAP
249 ldr ip, __cr_alignment
250 ldr ip, [ip]
251 mcr p15, 0, ip, c1, c0 @ update control register
252#endif
253 enable_irqs ip 248 enable_irqs ip
254 249
255 str r4, [sp, #-S_OFF]! @ push fifth arg 250 str r4, [sp, #-S_OFF]! @ push fifth arg
@@ -299,11 +294,6 @@ __sys_trace_return:
299 b ret_slow_syscall 294 b ret_slow_syscall
300 295
301 .align 5 296 .align 5
302#ifdef CONFIG_ALIGNMENT_TRAP
303 .type __cr_alignment, #object
304__cr_alignment:
305 .word cr_alignment
306#endif
307 297
308 .type sys_call_table, #object 298 .type sys_call_table, #object
309ENTRY(sys_call_table) 299ENTRY(sys_call_table)
diff --git a/arch/cris/arch-v32/drivers/pci/dma.c b/arch/cris/arch-v32/drivers/pci/dma.c
index 426b09878a05..70d3bf0c92e8 100644
--- a/arch/cris/arch-v32/drivers/pci/dma.c
+++ b/arch/cris/arch-v32/drivers/pci/dma.c
@@ -111,7 +111,7 @@ int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
111 return DMA_MEMORY_IO; 111 return DMA_MEMORY_IO;
112 112
113 free1_out: 113 free1_out:
114 kfree(dev->dma_mem->bitmap); 114 kfree(dev->dma_mem);
115 out: 115 out:
116 return 0; 116 return 0;
117} 117}
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c
index 3f3a0ed3539b..4103c2c487f3 100644
--- a/arch/frv/mm/init.c
+++ b/arch/frv/mm/init.c
@@ -126,8 +126,7 @@ void __init paging_init(void)
126 126
127 /* distribute the allocatable pages across the various zones and pass them to the allocator 127 /* distribute the allocatable pages across the various zones and pass them to the allocator
128 */ 128 */
129 zones_size[ZONE_DMA] = max_low_pfn - min_low_pfn; 129 zones_size[ZONE_NORMAL] = max_low_pfn - min_low_pfn;
130 zones_size[ZONE_NORMAL] = 0;
131#ifdef CONFIG_HIGHMEM 130#ifdef CONFIG_HIGHMEM
132 zones_size[ZONE_HIGHMEM] = num_physpages - num_mappedpages; 131 zones_size[ZONE_HIGHMEM] = num_physpages - num_mappedpages;
133#endif 132#endif
diff --git a/arch/i386/kernel/pci-dma.c b/arch/i386/kernel/pci-dma.c
index 41af692c1584..3ebcea033623 100644
--- a/arch/i386/kernel/pci-dma.c
+++ b/arch/i386/kernel/pci-dma.c
@@ -110,7 +110,7 @@ int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
110 return DMA_MEMORY_IO; 110 return DMA_MEMORY_IO;
111 111
112 free1_out: 112 free1_out:
113 kfree(dev->dma_mem->bitmap); 113 kfree(dev->dma_mem);
114 out: 114 out:
115 if (mem_base) 115 if (mem_base)
116 iounmap(mem_base); 116 iounmap(mem_base);
diff --git a/arch/powerpc/platforms/ps3/Kconfig b/arch/powerpc/platforms/ps3/Kconfig
index d270a1e374d5..1a481a60a883 100644
--- a/arch/powerpc/platforms/ps3/Kconfig
+++ b/arch/powerpc/platforms/ps3/Kconfig
@@ -1,9 +1,24 @@
1menu "PS3 Platform Options" 1menu "PS3 Platform Options"
2 depends on PPC_PS3 2 depends on PPC_PS3
3 3
4config PS3_ADVANCED
5 depends on PPC_PS3
6 bool "PS3 Advanced configuration options"
7 help
8 This gives you access to some advanced options for the PS3. The
9 defaults should be fine for most users, but these options may make
10 it possible to better control the kernel configuration if you know
11 what you are doing.
12
13 Note that the answer to this question won't directly affect the
14 kernel: saying N will just cause the configurator to skip all
15 the questions about these options.
16
17 Most users should say N to this question.
18
4config PS3_HTAB_SIZE 19config PS3_HTAB_SIZE
5 depends on PPC_PS3 20 depends on PPC_PS3
6 int "PS3 Platform pagetable size" 21 int "PS3 Platform pagetable size" if PS3_ADVANCED
7 range 18 20 22 range 18 20
8 default 20 23 default 20
9 help 24 help
@@ -42,7 +57,7 @@ config PS3_USE_LPAR_ADDR
42 57
43config PS3_VUART 58config PS3_VUART
44 depends on PPC_PS3 59 depends on PPC_PS3
45 bool "PS3 Virtual UART support" 60 bool "PS3 Virtual UART support" if PS3_ADVANCED
46 default y 61 default y
47 help 62 help
48 Include support for the PS3 Virtual UART. 63 Include support for the PS3 Virtual UART.
@@ -52,9 +67,8 @@ config PS3_VUART
52 general, all users will say Y. 67 general, all users will say Y.
53 68
54config PS3_PS3AV 69config PS3_PS3AV
55 tristate "PS3 AV settings driver" 70 tristate "PS3 AV settings driver" if PS3_ADVANCED
56 depends on PPC_PS3 71 depends on PS3_VUART
57 select PS3_VUART
58 default y 72 default y
59 help 73 help
60 Include support for the PS3 AV Settings driver. 74 Include support for the PS3 AV Settings driver.
@@ -63,8 +77,8 @@ config PS3_PS3AV
63 general, all users will say Y or M. 77 general, all users will say Y or M.
64 78
65config PS3_SYS_MANAGER 79config PS3_SYS_MANAGER
66 bool "PS3 System Manager driver" 80 bool "PS3 System Manager driver" if PS3_ADVANCED
67 select PS3_VUART 81 depends on PS3_VUART
68 default y 82 default y
69 help 83 help
70 Include support for the PS3 System Manager. 84 Include support for the PS3 System Manager.
diff --git a/arch/um/Kconfig.char b/arch/um/Kconfig.char
index e03e40c7aac3..a5b079d5e865 100644
--- a/arch/um/Kconfig.char
+++ b/arch/um/Kconfig.char
@@ -146,6 +146,25 @@ config LEGACY_PTYS
146 security. This option enables these legacy devices; on most 146 security. This option enables these legacy devices; on most
147 systems, it is safe to say N. 147 systems, it is safe to say N.
148 148
149config RAW_DRIVER
150 tristate "RAW driver (/dev/raw/rawN) (OBSOLETE)"
151 help
152 The raw driver permits block devices to be bound to /dev/raw/rawN.
153 Once bound, I/O against /dev/raw/rawN uses efficient zero-copy I/O.
154 See the raw(8) manpage for more details.
155
156 The raw driver is deprecated and will be removed soon.
157 Applications should simply open the device (eg /dev/hda1)
158 with the O_DIRECT flag.
159
160config MAX_RAW_DEVS
161 int "Maximum number of RAW devices to support (1-8192)"
162 depends on RAW_DRIVER
163 default "256"
164 help
165 The maximum number of RAW devices that are supported.
166 Default is 256. Increase this number in case you need lots of
167 raw devices.
149 168
150config LEGACY_PTY_COUNT 169config LEGACY_PTY_COUNT
151 int "Maximum number of legacy PTY in use" 170 int "Maximum number of legacy PTY in use"
diff --git a/arch/um/os-Linux/elf_aux.c b/arch/um/os-Linux/elf_aux.c
index 3a8d7e3aae0a..608784d4ec57 100644
--- a/arch/um/os-Linux/elf_aux.c
+++ b/arch/um/os-Linux/elf_aux.c
@@ -39,6 +39,9 @@ __init void scan_elf_aux( char **envp)
39 switch ( auxv->a_type ) { 39 switch ( auxv->a_type ) {
40 case AT_SYSINFO: 40 case AT_SYSINFO:
41 __kernel_vsyscall = auxv->a_un.a_val; 41 __kernel_vsyscall = auxv->a_un.a_val;
42 /* See if the page is under TASK_SIZE */
43 if (__kernel_vsyscall < (unsigned long) envp)
44 __kernel_vsyscall = 0;
42 break; 45 break;
43 case AT_SYSINFO_EHDR: 46 case AT_SYSINFO_EHDR:
44 vsyscall_ehdr = auxv->a_un.a_val; 47 vsyscall_ehdr = auxv->a_un.a_val;
diff --git a/arch/um/os-Linux/sigio.c b/arch/um/os-Linux/sigio.c
index b2e1fd8e3571..3fc43b33db66 100644
--- a/arch/um/os-Linux/sigio.c
+++ b/arch/um/os-Linux/sigio.c
@@ -334,8 +334,11 @@ void maybe_sigio_broken(int fd, int read)
334 334
335 sigio_lock(); 335 sigio_lock();
336 err = need_poll(&all_sigio_fds, all_sigio_fds.used + 1); 336 err = need_poll(&all_sigio_fds, all_sigio_fds.used + 1);
337 if(err) 337 if(err){
338 printk("maybe_sigio_broken - failed to add pollfd for "
339 "descriptor %d\n", fd);
338 goto out; 340 goto out;
341 }
339 342
340 all_sigio_fds.poll[all_sigio_fds.used++] = 343 all_sigio_fds.poll[all_sigio_fds.used++] =
341 ((struct pollfd) { .fd = fd, 344 ((struct pollfd) { .fd = fd,
diff --git a/arch/um/sys-i386/ldt.c b/arch/um/sys-i386/ldt.c
index 5db7737df0ff..4a8b4202ef9e 100644
--- a/arch/um/sys-i386/ldt.c
+++ b/arch/um/sys-i386/ldt.c
@@ -7,6 +7,7 @@
7#include "linux/slab.h" 7#include "linux/slab.h"
8#include "linux/types.h" 8#include "linux/types.h"
9#include "linux/errno.h" 9#include "linux/errno.h"
10#include "linux/spinlock.h"
10#include "asm/uaccess.h" 11#include "asm/uaccess.h"
11#include "asm/smp.h" 12#include "asm/smp.h"
12#include "asm/ldt.h" 13#include "asm/ldt.h"
@@ -386,23 +387,33 @@ static long do_modify_ldt_skas(int func, void __user *ptr,
386 return ret; 387 return ret;
387} 388}
388 389
389short dummy_list[9] = {0, -1}; 390static DEFINE_SPINLOCK(host_ldt_lock);
390short * host_ldt_entries = NULL; 391static short dummy_list[9] = {0, -1};
392static short * host_ldt_entries = NULL;
391 393
392void ldt_get_host_info(void) 394static void ldt_get_host_info(void)
393{ 395{
394 long ret; 396 long ret;
395 struct ldt_entry * ldt; 397 struct ldt_entry * ldt, *tmp;
396 int i, size, k, order; 398 int i, size, k, order;
397 399
400 spin_lock(&host_ldt_lock);
401
402 if(host_ldt_entries != NULL){
403 spin_unlock(&host_ldt_lock);
404 return;
405 }
398 host_ldt_entries = dummy_list+1; 406 host_ldt_entries = dummy_list+1;
399 407
408 spin_unlock(&host_ldt_lock);
409
400 for(i = LDT_PAGES_MAX-1, order=0; i; i>>=1, order++); 410 for(i = LDT_PAGES_MAX-1, order=0; i; i>>=1, order++);
401 411
402 ldt = (struct ldt_entry *) 412 ldt = (struct ldt_entry *)
403 __get_free_pages(GFP_KERNEL|__GFP_ZERO, order); 413 __get_free_pages(GFP_KERNEL|__GFP_ZERO, order);
404 if(ldt == NULL) { 414 if(ldt == NULL) {
405 printk("ldt_get_host_info: couldn't allocate buffer for host ldt\n"); 415 printk("ldt_get_host_info: couldn't allocate buffer for host "
416 "ldt\n");
406 return; 417 return;
407 } 418 }
408 419
@@ -426,11 +437,13 @@ void ldt_get_host_info(void)
426 host_ldt_entries = dummy_list; 437 host_ldt_entries = dummy_list;
427 else { 438 else {
428 size = (size + 1) * sizeof(dummy_list[0]); 439 size = (size + 1) * sizeof(dummy_list[0]);
429 host_ldt_entries = kmalloc(size, GFP_KERNEL); 440 tmp = kmalloc(size, GFP_KERNEL);
430 if(host_ldt_entries == NULL) { 441 if(tmp == NULL) {
431 printk("ldt_get_host_info: couldn't allocate host ldt list\n"); 442 printk("ldt_get_host_info: couldn't allocate host ldt "
443 "list\n");
432 goto out_free; 444 goto out_free;
433 } 445 }
446 host_ldt_entries = tmp;
434 } 447 }
435 448
436 for(i=0, k=0; i<ret/LDT_ENTRY_SIZE; i++){ 449 for(i=0, k=0; i<ret/LDT_ENTRY_SIZE; i++){
@@ -480,8 +493,7 @@ long init_new_ldt(struct mmu_context_skas * new_mm,
480 * inherited from the host. All ldt-entries found 493 * inherited from the host. All ldt-entries found
481 * will be reset in the following loop 494 * will be reset in the following loop
482 */ 495 */
483 if(host_ldt_entries == NULL) 496 ldt_get_host_info();
484 ldt_get_host_info();
485 for(num_p=host_ldt_entries; *num_p != -1; num_p++){ 497 for(num_p=host_ldt_entries; *num_p != -1; num_p++){
486 desc.entry_number = *num_p; 498 desc.entry_number = *num_p;
487 err = write_ldt_entry(&new_mm->id, 1, &desc, 499 err = write_ldt_entry(&new_mm->id, 1, &desc,
@@ -560,6 +572,6 @@ void free_ldt(struct mmu_context_skas * mm)
560 572
561int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount) 573int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount)
562{ 574{
563 return(CHOOSE_MODE_PROC(do_modify_ldt_tt, do_modify_ldt_skas, func, 575 return CHOOSE_MODE_PROC(do_modify_ldt_tt, do_modify_ldt_skas, func,
564 ptr, bytecount)); 576 ptr, bytecount);
565} 577}