Browse Source

Merge with master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

David Woodhouse 20 years ago
parent
commit
13e652800d
48 changed files with 301 additions and 375 deletions
  1. 1 1
      Makefile
  2. 1 1
      arch/i386/kernel/acpi/boot.c
  3. 2 0
      arch/ppc/Kconfig
  4. 1 0
      arch/ppc64/Kconfig
  5. 0 7
      arch/ppc64/kernel/pSeries_smp.c
  6. 12 4
      arch/ppc64/kernel/xics.c
  7. 0 1
      arch/um/include/user_util.h
  8. 1 5
      arch/um/kernel/Makefile
  9. 9 11
      arch/um/kernel/process_kern.c
  10. 29 50
      arch/um/kernel/ptrace.c
  11. 0 1
      arch/um/kernel/skas/include/mode_kern-skas.h
  12. 2 2
      arch/um/kernel/skas/include/uaccess-skas.h
  13. 22 13
      arch/um/kernel/skas/process.c
  14. 0 4
      arch/um/kernel/skas/process_kern.c
  15. 5 2
      arch/um/kernel/skas/uaccess.c
  16. 0 1
      arch/um/kernel/syscall_kern.c
  17. 1 1
      arch/um/kernel/trap_kern.c
  18. 0 1
      arch/um/kernel/tt/include/mode_kern-tt.h
  19. 2 2
      arch/um/kernel/tt/include/uaccess-tt.h
  20. 1 7
      arch/um/kernel/tt/mem.c
  21. 11 9
      arch/um/kernel/tt/process_kern.c
  22. 4 0
      arch/um/kernel/tt/syscall_user.c
  23. 4 3
      arch/um/kernel/um_arch.c
  24. 40 0
      arch/um/sys-i386/ptrace.c
  25. 40 0
      arch/um/sys-ppc/ptrace.c
  26. 44 0
      arch/um/sys-x86_64/ptrace.c
  27. 1 1
      arch/um/sys-x86_64/signal.c
  28. 2 0
      arch/um/sys-x86_64/syscalls.c
  29. 1 1
      drivers/block/rd.c
  30. 12 2
      drivers/media/video/tuner-core.c
  31. 1 1
      drivers/s390/scsi/zfcp_aux.c
  32. 0 1
      drivers/s390/scsi/zfcp_def.h
  33. 1 1
      drivers/scsi/aacraid/linit.c
  34. 0 2
      drivers/scsi/aic7xxx/aic7xxx_osm.c
  35. 0 6
      drivers/scsi/aic7xxx/aic7xxx_osm.h
  36. 1 7
      drivers/scsi/qla2xxx/qla_attr.c
  37. 2 2
      drivers/scsi/qla2xxx/qla_gbl.h
  38. 2 1
      drivers/scsi/qla2xxx/qla_os.c
  39. 1 1
      drivers/scsi/scsi.c
  40. 34 15
      drivers/scsi/scsi_transport_spi.c
  41. 3 0
      drivers/scsi/sr_ioctl.c
  42. 3 2
      drivers/scsi/sym53c8xx_2/sym_glue.c
  43. 2 0
      drivers/serial/8250_pci.c
  44. 0 5
      fs/partitions/msdos.c
  45. 0 3
      include/asm-ppc64/xics.h
  46. 0 196
      include/asm-um/elf.h
  47. 2 1
      include/asm-um/setup.h
  48. 1 1
      sound/pci/via82xx.c

+ 1 - 1
Makefile

@@ -1,7 +1,7 @@
 VERSION = 2
 VERSION = 2
 PATCHLEVEL = 6
 PATCHLEVEL = 6
 SUBLEVEL = 12
 SUBLEVEL = 12
-EXTRAVERSION =-rc3
+EXTRAVERSION =-rc4
 NAME=Woozy Numbat
 NAME=Woozy Numbat
 
 
 # *DOCUMENTATION*
 # *DOCUMENTATION*

+ 1 - 1
arch/i386/kernel/acpi/boot.c

@@ -650,7 +650,7 @@ acpi_find_rsdp (void)
 	 */
 	 */
 	rsdp_phys = acpi_scan_rsdp (0, 0x400);
 	rsdp_phys = acpi_scan_rsdp (0, 0x400);
 	if (!rsdp_phys)
 	if (!rsdp_phys)
-		rsdp_phys = acpi_scan_rsdp (0xE0000, 0xFFFFF);
+		rsdp_phys = acpi_scan_rsdp (0xE0000, 0x20000);
 
 
 	return rsdp_phys;
 	return rsdp_phys;
 }
 }

+ 2 - 0
arch/ppc/Kconfig

@@ -77,9 +77,11 @@ config 44x
 	bool "44x"
 	bool "44x"
 
 
 config POWER3
 config POWER3
+	select PPC_FPU
 	bool "POWER3"
 	bool "POWER3"
 
 
 config POWER4
 config POWER4
+	select PPC_FPU
 	bool "POWER4 and 970 (G5)"
 	bool "POWER4 and 970 (G5)"
 
 
 config 8xx
 config 8xx

+ 1 - 0
arch/ppc64/Kconfig

@@ -262,6 +262,7 @@ config PPC_RTAS
 config RTAS_PROC
 config RTAS_PROC
 	bool "Proc interface to RTAS"
 	bool "Proc interface to RTAS"
 	depends on PPC_RTAS
 	depends on PPC_RTAS
+	default y
 
 
 config RTAS_FLASH
 config RTAS_FLASH
 	tristate "Firmware flash interface"
 	tristate "Firmware flash interface"

+ 0 - 7
arch/ppc64/kernel/pSeries_smp.c

@@ -326,13 +326,6 @@ static void __devinit smp_xics_setup_cpu(int cpu)
 
 
 	cpu_clear(cpu, of_spin_map);
 	cpu_clear(cpu, of_spin_map);
 
 
-	/*
-	 * Put the calling processor into the GIQ.  This is really only
-	 * necessary from a secondary thread as the OF start-cpu interface
-	 * performs this function for us on primary threads.
-	 */
-	rtas_set_indicator(GLOBAL_INTERRUPT_QUEUE,
-		(1UL << interrupt_server_size) - 1 - default_distrib_server, 1);
 }
 }
 
 
 static DEFINE_SPINLOCK(timebase_lock);
 static DEFINE_SPINLOCK(timebase_lock);

+ 12 - 4
arch/ppc64/kernel/xics.c

@@ -432,6 +432,7 @@ void xics_cause_IPI(int cpu)
 {
 {
 	ops->qirr_info(cpu, IPI_PRIORITY);
 	ops->qirr_info(cpu, IPI_PRIORITY);
 }
 }
+#endif /* CONFIG_SMP */
 
 
 void xics_setup_cpu(void)
 void xics_setup_cpu(void)
 {
 {
@@ -439,9 +440,17 @@ void xics_setup_cpu(void)
 
 
 	ops->cppr_info(cpu, 0xff);
 	ops->cppr_info(cpu, 0xff);
 	iosync();
 	iosync();
-}
 
 
-#endif /* CONFIG_SMP */
+	/*
+	 * Put the calling processor into the GIQ.  This is really only
+	 * necessary from a secondary thread as the OF start-cpu interface
+	 * performs this function for us on primary threads.
+	 *
+	 * XXX: undo of teardown on kexec needs this too, as may hotplug
+	 */
+	rtas_set_indicator(GLOBAL_INTERRUPT_QUEUE,
+		(1UL << interrupt_server_size) - 1 - default_distrib_server, 1);
+}
 
 
 void xics_init_IRQ(void)
 void xics_init_IRQ(void)
 {
 {
@@ -563,8 +572,7 @@ nextnode:
 	for (; i < NR_IRQS; ++i)
 	for (; i < NR_IRQS; ++i)
 		get_irq_desc(i)->handler = &xics_pic;
 		get_irq_desc(i)->handler = &xics_pic;
 
 
-	ops->cppr_info(boot_cpuid, 0xff);
-	iosync();
+	xics_setup_cpu();
 
 
 	ppc64_boot_msg(0x21, "XICS Done");
 	ppc64_boot_msg(0x21, "XICS Done");
 }
 }

+ 0 - 1
arch/um/include/user_util.h

@@ -67,7 +67,6 @@ extern void *um_kmalloc(int size);
 extern int switcheroo(int fd, int prot, void *from, void *to, int size);
 extern int switcheroo(int fd, int prot, void *from, void *to, int size);
 extern void setup_machinename(char *machine_out);
 extern void setup_machinename(char *machine_out);
 extern void setup_hostinfo(void);
 extern void setup_hostinfo(void);
-extern void add_arg(char *arg);
 extern void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int));
 extern void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int));
 extern void init_new_thread_signals(int altstack);
 extern void init_new_thread_signals(int altstack);
 extern void do_exec(int old_pid, int new_pid);
 extern void do_exec(int old_pid, int new_pid);

+ 1 - 5
arch/um/kernel/Makefile

@@ -23,14 +23,10 @@ obj-$(CONFIG_SYSCALL_DEBUG) += syscall_user.o
 obj-$(CONFIG_MODE_TT) += tt/
 obj-$(CONFIG_MODE_TT) += tt/
 obj-$(CONFIG_MODE_SKAS) += skas/
 obj-$(CONFIG_MODE_SKAS) += skas/
 
 
-# This needs be compiled with frame pointers regardless of how the rest of the
-# kernel is built.
-CFLAGS_frame.o := -fno-omit-frame-pointer
-
 user-objs-$(CONFIG_TTY_LOG) += tty_log.o
 user-objs-$(CONFIG_TTY_LOG) += tty_log.o
 
 
 USER_OBJS := $(user-objs-y) config.o helper.o main.o process.o tempfile.o \
 USER_OBJS := $(user-objs-y) config.o helper.o main.o process.o tempfile.o \
-	time.o tty_log.o umid.o user_util.o frame.o
+	time.o tty_log.o umid.o user_util.o
 
 
 include arch/um/scripts/Makefile.rules
 include arch/um/scripts/Makefile.rules
 
 

+ 9 - 11
arch/um/kernel/process_kern.c

@@ -115,16 +115,6 @@ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
 	return(pid);
 	return(pid);
 }
 }
 
 
-void switch_mm(struct mm_struct *prev, struct mm_struct *next, 
-	       struct task_struct *tsk)
-{
-	int cpu = smp_processor_id();
-
-	if (prev != next) 
-		cpu_clear(cpu, prev->cpu_vm_mask);
-	cpu_set(cpu, next->cpu_vm_mask);
-}
-
 void set_current(void *t)
 void set_current(void *t)
 {
 {
 	struct task_struct *task = t;
 	struct task_struct *task = t;
@@ -152,7 +142,6 @@ void release_thread(struct task_struct *task)
  
  
 void exit_thread(void)
 void exit_thread(void)
 {
 {
-	CHOOSE_MODE(exit_thread_tt(), exit_thread_skas());
 	unprotect_stack((unsigned long) current_thread);
 	unprotect_stack((unsigned long) current_thread);
 }
 }
  
  
@@ -476,12 +465,21 @@ int singlestepping(void * t)
 	return 2;
 	return 2;
 }
 }
 
 
+/*
+ * Only x86 and x86_64 have an arch_align_stack().
+ * All other arches have "#define arch_align_stack(x) (x)"
+ * in their asm/system.h
+ * As this is included in UML from asm-um/system-generic.h,
+ * we can use it to behave as the subarch does.
+ */
+#ifndef arch_align_stack
 unsigned long arch_align_stack(unsigned long sp)
 unsigned long arch_align_stack(unsigned long sp)
 {
 {
 	if (randomize_va_space)
 	if (randomize_va_space)
 		sp -= get_random_int() % 8192;
 		sp -= get_random_int() % 8192;
 	return sp & ~0xf;
 	return sp & ~0xf;
 }
 }
+#endif
 
 
 
 
 /*
 /*

+ 29 - 50
arch/um/kernel/ptrace.c

@@ -19,15 +19,30 @@
 #include "skas_ptrace.h"
 #include "skas_ptrace.h"
 #include "sysdep/ptrace.h"
 #include "sysdep/ptrace.h"
 
 
+static inline void set_singlestepping(struct task_struct *child, int on)
+{
+        if (on)
+                child->ptrace |= PT_DTRACE;
+        else
+                child->ptrace &= ~PT_DTRACE;
+        child->thread.singlestep_syscall = 0;
+
+#ifdef SUBARCH_SET_SINGLESTEPPING
+        SUBARCH_SET_SINGLESTEPPING(child, on)
+#endif
+                }
+
 /*
 /*
  * Called by kernel/ptrace.c when detaching..
  * Called by kernel/ptrace.c when detaching..
  */
  */
 void ptrace_disable(struct task_struct *child)
 void ptrace_disable(struct task_struct *child)
 { 
 { 
-	child->ptrace &= ~PT_DTRACE;
-	child->thread.singlestep_syscall = 0;
+        set_singlestepping(child,0);
 }
 }
 
 
+extern int peek_user(struct task_struct * child, long addr, long data);
+extern int poke_user(struct task_struct * child, long addr, long data);
+
 long sys_ptrace(long request, long pid, long addr, long data)
 long sys_ptrace(long request, long pid, long addr, long data)
 {
 {
 	struct task_struct *child;
 	struct task_struct *child;
@@ -67,6 +82,10 @@ long sys_ptrace(long request, long pid, long addr, long data)
 		goto out_tsk;
 		goto out_tsk;
 	}
 	}
 
 
+#ifdef SUBACH_PTRACE_SPECIAL
+        SUBARCH_PTRACE_SPECIAL(child,request,addr,data)
+#endif
+
 	ret = ptrace_check_attach(child, request == PTRACE_KILL);
 	ret = ptrace_check_attach(child, request == PTRACE_KILL);
 	if (ret < 0)
 	if (ret < 0)
 		goto out_tsk;
 		goto out_tsk;
@@ -87,28 +106,9 @@ long sys_ptrace(long request, long pid, long addr, long data)
 	}
 	}
 
 
 	/* read the word at location addr in the USER area. */
 	/* read the word at location addr in the USER area. */
-	case PTRACE_PEEKUSR: {
-		unsigned long tmp;
-
-		ret = -EIO;
-		if ((addr & 3) || addr < 0) 
-			break;
-
-		tmp = 0;  /* Default return condition */
-		if(addr < MAX_REG_OFFSET){
-			tmp = getreg(child, addr);
-		}
-#if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT)
-		else if((addr >= offsetof(struct user, u_debugreg[0])) &&
-			(addr <= offsetof(struct user, u_debugreg[7]))){
-			addr -= offsetof(struct user, u_debugreg[0]);
-			addr = addr >> 2;
-			tmp = child->thread.arch.debugregs[addr];
-		}
-#endif
-		ret = put_user(tmp, (unsigned long __user *) data);
-		break;
-	}
+        case PTRACE_PEEKUSR:
+                ret = peek_user(child, addr, data);
+                break;
 
 
 	/* when I and D space are separate, this will have to be fixed. */
 	/* when I and D space are separate, this will have to be fixed. */
 	case PTRACE_POKETEXT: /* write the word at location addr. */
 	case PTRACE_POKETEXT: /* write the word at location addr. */
@@ -121,26 +121,8 @@ long sys_ptrace(long request, long pid, long addr, long data)
 		break;
 		break;
 
 
 	case PTRACE_POKEUSR: /* write the word at location addr in the USER area */
 	case PTRACE_POKEUSR: /* write the word at location addr in the USER area */
-		ret = -EIO;
-		if ((addr & 3) || addr < 0)
-			break;
-
-		if (addr < MAX_REG_OFFSET) {
-			ret = putreg(child, addr, data);
-			break;
-		}
-#if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT)
-		else if((addr >= offsetof(struct user, u_debugreg[0])) &&
-			(addr <= offsetof(struct user, u_debugreg[7]))){
-			  addr -= offsetof(struct user, u_debugreg[0]);
-			  addr = addr >> 2;
-			  if((addr == 4) || (addr == 5)) break;
-			  child->thread.arch.debugregs[addr] = data;
-			  ret = 0;
-		}
-#endif
-
-		break;
+                ret = poke_user(child, addr, data);
+                break;
 
 
 	case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */
 	case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */
 	case PTRACE_CONT: { /* restart after signal. */
 	case PTRACE_CONT: { /* restart after signal. */
@@ -148,8 +130,7 @@ long sys_ptrace(long request, long pid, long addr, long data)
 		if (!valid_signal(data))
 		if (!valid_signal(data))
 			break;
 			break;
 
 
-		child->ptrace &= ~PT_DTRACE;
-		child->thread.singlestep_syscall = 0;
+                set_singlestepping(child, 0);
 		if (request == PTRACE_SYSCALL) {
 		if (request == PTRACE_SYSCALL) {
 			set_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
 			set_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
 		}
 		}
@@ -172,8 +153,7 @@ long sys_ptrace(long request, long pid, long addr, long data)
 		if (child->exit_state == EXIT_ZOMBIE)	/* already dead */
 		if (child->exit_state == EXIT_ZOMBIE)	/* already dead */
 			break;
 			break;
 
 
-		child->ptrace &= ~PT_DTRACE;
-		child->thread.singlestep_syscall = 0;
+                set_singlestepping(child, 0);
 		child->exit_code = SIGKILL;
 		child->exit_code = SIGKILL;
 		wake_up_process(child);
 		wake_up_process(child);
 		break;
 		break;
@@ -184,8 +164,7 @@ long sys_ptrace(long request, long pid, long addr, long data)
 		if (!valid_signal(data))
 		if (!valid_signal(data))
 			break;
 			break;
 		clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
 		clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
-		child->ptrace |= PT_DTRACE;
-		child->thread.singlestep_syscall = 0;
+                set_singlestepping(child, 1);
 		child->exit_code = data;
 		child->exit_code = data;
 		/* give it a chance to run. */
 		/* give it a chance to run. */
 		wake_up_process(child);
 		wake_up_process(child);

+ 0 - 1
arch/um/kernel/skas/include/mode_kern-skas.h

@@ -18,7 +18,6 @@ extern int copy_thread_skas(int nr, unsigned long clone_flags,
 			    unsigned long sp, unsigned long stack_top,
 			    unsigned long sp, unsigned long stack_top,
 			    struct task_struct *p, struct pt_regs *regs);
 			    struct task_struct *p, struct pt_regs *regs);
 extern void release_thread_skas(struct task_struct *task);
 extern void release_thread_skas(struct task_struct *task);
-extern void exit_thread_skas(void);
 extern void initial_thread_cb_skas(void (*proc)(void *), void *arg);
 extern void initial_thread_cb_skas(void (*proc)(void *), void *arg);
 extern void init_idle_skas(void);
 extern void init_idle_skas(void);
 extern void flush_tlb_kernel_range_skas(unsigned long start,
 extern void flush_tlb_kernel_range_skas(unsigned long start,

+ 2 - 2
arch/um/kernel/skas/include/uaccess-skas.h

@@ -18,8 +18,8 @@
 	  ((unsigned long) (addr) + (size) <= FIXADDR_USER_END) && \
 	  ((unsigned long) (addr) + (size) <= FIXADDR_USER_END) && \
 	  ((unsigned long) (addr) + (size) >= (unsigned long)(addr))))
 	  ((unsigned long) (addr) + (size) >= (unsigned long)(addr))))
 
 
-static inline int __deprecated verify_area_skas(int type, const void * addr,
-				   unsigned long size)
+static inline int verify_area_skas(int type, const void * addr,
+                                   unsigned long size)
 {
 {
 	return(access_ok_skas(type, addr, size) ? 0 : -EFAULT);
 	return(access_ok_skas(type, addr, size) ? 0 : -EFAULT);
 }
 }

+ 22 - 13
arch/um/kernel/skas/process.c

@@ -201,6 +201,11 @@ void userspace(union uml_pt_regs *regs)
 		}
 		}
 	}
 	}
 }
 }
+#define INIT_JMP_NEW_THREAD 0
+#define INIT_JMP_REMOVE_SIGSTACK 1
+#define INIT_JMP_CALLBACK 2
+#define INIT_JMP_HALT 3
+#define INIT_JMP_REBOOT 4
 
 
 void new_thread(void *stack, void **switch_buf_ptr, void **fork_buf_ptr,
 void new_thread(void *stack, void **switch_buf_ptr, void **fork_buf_ptr,
 		void (*handler)(int))
 		void (*handler)(int))
@@ -236,7 +241,7 @@ void thread_wait(void *sw, void *fb)
 	*switch_buf = &buf;
 	*switch_buf = &buf;
 	fork_buf = fb;
 	fork_buf = fb;
 	if(sigsetjmp(buf, 1) == 0)
 	if(sigsetjmp(buf, 1) == 0)
-		siglongjmp(*fork_buf, 1);
+		siglongjmp(*fork_buf, INIT_JMP_REMOVE_SIGSTACK);
 }
 }
 
 
 void switch_threads(void *me, void *next)
 void switch_threads(void *me, void *next)
@@ -266,21 +271,25 @@ int start_idle_thread(void *stack, void *switch_buf_ptr, void **fork_buf_ptr)
 
 
 	*fork_buf_ptr = &initial_jmpbuf;
 	*fork_buf_ptr = &initial_jmpbuf;
 	n = sigsetjmp(initial_jmpbuf, 1);
 	n = sigsetjmp(initial_jmpbuf, 1);
-	if(n == 0)
-		new_thread_proc((void *) stack, new_thread_handler);
-	else if(n == 1)
-		remove_sigstack();
-	else if(n == 2){
+        switch(n){
+        case INIT_JMP_NEW_THREAD:
+                new_thread_proc((void *) stack, new_thread_handler);
+                break;
+        case INIT_JMP_REMOVE_SIGSTACK:
+                remove_sigstack();
+                break;
+        case INIT_JMP_CALLBACK:
 		(*cb_proc)(cb_arg);
 		(*cb_proc)(cb_arg);
 		siglongjmp(*cb_back, 1);
 		siglongjmp(*cb_back, 1);
-	}
-	else if(n == 3){
+                break;
+        case INIT_JMP_HALT:
 		kmalloc_ok = 0;
 		kmalloc_ok = 0;
 		return(0);
 		return(0);
-	}
-	else if(n == 4){
+        case INIT_JMP_REBOOT:
 		kmalloc_ok = 0;
 		kmalloc_ok = 0;
 		return(1);
 		return(1);
+        default:
+                panic("Bad sigsetjmp return in start_idle_thread - %d\n", n);
 	}
 	}
 	siglongjmp(**switch_buf, 1);
 	siglongjmp(**switch_buf, 1);
 }
 }
@@ -305,7 +314,7 @@ void initial_thread_cb_skas(void (*proc)(void *), void *arg)
 
 
 	block_signals();
 	block_signals();
 	if(sigsetjmp(here, 1) == 0)
 	if(sigsetjmp(here, 1) == 0)
-		siglongjmp(initial_jmpbuf, 2);
+		siglongjmp(initial_jmpbuf, INIT_JMP_CALLBACK);
 	unblock_signals();
 	unblock_signals();
 
 
 	cb_proc = NULL;
 	cb_proc = NULL;
@@ -316,13 +325,13 @@ void initial_thread_cb_skas(void (*proc)(void *), void *arg)
 void halt_skas(void)
 void halt_skas(void)
 {
 {
 	block_signals();
 	block_signals();
-	siglongjmp(initial_jmpbuf, 3);
+	siglongjmp(initial_jmpbuf, INIT_JMP_HALT);
 }
 }
 
 
 void reboot_skas(void)
 void reboot_skas(void)
 {
 {
 	block_signals();
 	block_signals();
-	siglongjmp(initial_jmpbuf, 4);
+	siglongjmp(initial_jmpbuf, INIT_JMP_REBOOT);
 }
 }
 
 
 void switch_mm_skas(int mm_fd)
 void switch_mm_skas(int mm_fd)

+ 0 - 4
arch/um/kernel/skas/process_kern.c

@@ -83,10 +83,6 @@ void release_thread_skas(struct task_struct *task)
 {
 {
 }
 }
 
 
-void exit_thread_skas(void)
-{
-}
-
 void fork_handler(int sig)
 void fork_handler(int sig)
 {
 {
         change_sig(SIGUSR1, 1);
         change_sig(SIGUSR1, 1);

+ 5 - 2
arch/um/kernel/skas/uaccess.c

@@ -29,9 +29,12 @@ static unsigned long maybe_map(unsigned long virt, int is_write)
 	if(IS_ERR(phys) || (is_write && !pte_write(pte))){
 	if(IS_ERR(phys) || (is_write && !pte_write(pte))){
 		err = handle_page_fault(virt, 0, is_write, 1, &dummy_code);
 		err = handle_page_fault(virt, 0, is_write, 1, &dummy_code);
 		if(err)
 		if(err)
-			return(0);
+			return(-1UL);
 		phys = um_virt_to_phys(current, virt, NULL);
 		phys = um_virt_to_phys(current, virt, NULL);
 	}
 	}
+        if(IS_ERR(phys))
+                phys = (void *) -1;
+
 	return((unsigned long) phys);
 	return((unsigned long) phys);
 }
 }
 
 
@@ -42,7 +45,7 @@ static int do_op(unsigned long addr, int len, int is_write,
 	int n;
 	int n;
 
 
 	addr = maybe_map(addr, is_write);
 	addr = maybe_map(addr, is_write);
-	if(addr == -1)
+	if(addr == -1UL)
 		return(-1);
 		return(-1);
 
 
 	page = phys_to_page(addr);
 	page = phys_to_page(addr);

+ 0 - 1
arch/um/kernel/syscall_kern.c

@@ -17,7 +17,6 @@
 #include "linux/utime.h"
 #include "linux/utime.h"
 #include "asm/mman.h"
 #include "asm/mman.h"
 #include "asm/uaccess.h"
 #include "asm/uaccess.h"
-#include "asm/ipc.h"
 #include "kern_util.h"
 #include "kern_util.h"
 #include "user_util.h"
 #include "user_util.h"
 #include "sysdep/syscalls.h"
 #include "sysdep/syscalls.h"

+ 1 - 1
arch/um/kernel/trap_kern.c

@@ -48,7 +48,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
 		goto good_area;
 		goto good_area;
 	else if(!(vma->vm_flags & VM_GROWSDOWN)) 
 	else if(!(vma->vm_flags & VM_GROWSDOWN)) 
 		goto out;
 		goto out;
-	else if(!ARCH_IS_STACKGROW(address))
+	else if(is_user && !ARCH_IS_STACKGROW(address))
 		goto out;
 		goto out;
 	else if(expand_stack(vma, address)) 
 	else if(expand_stack(vma, address)) 
 		goto out;
 		goto out;

+ 0 - 1
arch/um/kernel/tt/include/mode_kern-tt.h

@@ -19,7 +19,6 @@ extern int copy_thread_tt(int nr, unsigned long clone_flags, unsigned long sp,
 			  unsigned long stack_top, struct task_struct *p,
 			  unsigned long stack_top, struct task_struct *p,
 			  struct pt_regs *regs);
 			  struct pt_regs *regs);
 extern void release_thread_tt(struct task_struct *task);
 extern void release_thread_tt(struct task_struct *task);
-extern void exit_thread_tt(void);
 extern void initial_thread_cb_tt(void (*proc)(void *), void *arg);
 extern void initial_thread_cb_tt(void (*proc)(void *), void *arg);
 extern void init_idle_tt(void);
 extern void init_idle_tt(void);
 extern void flush_tlb_kernel_range_tt(unsigned long start, unsigned long end);
 extern void flush_tlb_kernel_range_tt(unsigned long start, unsigned long end);

+ 2 - 2
arch/um/kernel/tt/include/uaccess-tt.h

@@ -33,8 +33,8 @@ extern unsigned long uml_physmem;
          (((unsigned long) (addr) <= ((unsigned long) (addr) + (size))) && \
          (((unsigned long) (addr) <= ((unsigned long) (addr) + (size))) && \
           (under_task_size(addr, size) || is_stack(addr, size))))
           (under_task_size(addr, size) || is_stack(addr, size))))
 
 
-static inline int __deprecated verify_area_tt(int type, const void * addr,
-				 unsigned long size)
+static inline int verify_area_tt(int type, const void * addr,
+                                 unsigned long size)
 {
 {
 	return(access_ok_tt(type, addr, size) ? 0 : -EFAULT);
 	return(access_ok_tt(type, addr, size) ? 0 : -EFAULT);
 }
 }

+ 1 - 7
arch/um/kernel/tt/mem.c

@@ -21,14 +21,8 @@ void before_mem_tt(unsigned long brk_start)
 	remap_data(UML_ROUND_DOWN(&__bss_start), UML_ROUND_UP(&_end), 1);
 	remap_data(UML_ROUND_DOWN(&__bss_start), UML_ROUND_UP(&_end), 1);
 }
 }
 
 
-#ifdef CONFIG_HOST_2G_2G
-#define TOP 0x80000000
-#else
-#define TOP 0xc0000000
-#endif
-
 #define SIZE ((CONFIG_NEST_LEVEL + CONFIG_KERNEL_HALF_GIGS) * 0x20000000)
 #define SIZE ((CONFIG_NEST_LEVEL + CONFIG_KERNEL_HALF_GIGS) * 0x20000000)
-#define START (TOP - SIZE)
+#define START (CONFIG_TOP_ADDR - SIZE)
 
 
 unsigned long set_task_sizes_tt(int arg, unsigned long *host_size_out, 
 unsigned long set_task_sizes_tt(int arg, unsigned long *host_size_out, 
 				unsigned long *task_size_out)
 				unsigned long *task_size_out)

+ 11 - 9
arch/um/kernel/tt/process_kern.c

@@ -65,8 +65,7 @@ void *switch_to_tt(void *prev, void *next, void *last)
 		panic("write of switch_pipe failed, err = %d", -err);
 		panic("write of switch_pipe failed, err = %d", -err);
 
 
 	reading = 1;
 	reading = 1;
-	if((from->exit_state == EXIT_ZOMBIE) ||
-	   (from->exit_state == EXIT_DEAD))
+        if(from->thread.mode.tt.switch_pipe[0] == -1)
 		os_kill_process(os_getpid(), 0);
 		os_kill_process(os_getpid(), 0);
 
 
 	err = os_read_file(from->thread.mode.tt.switch_pipe[0], &c, sizeof(c));
 	err = os_read_file(from->thread.mode.tt.switch_pipe[0], &c, sizeof(c));
@@ -81,8 +80,7 @@ void *switch_to_tt(void *prev, void *next, void *last)
 	 * in case it has not already killed itself.
 	 * in case it has not already killed itself.
 	 */
 	 */
 	prev_sched = current->thread.prev_sched;
 	prev_sched = current->thread.prev_sched;
-	if((prev_sched->exit_state == EXIT_ZOMBIE) ||
-	   (prev_sched->exit_state == EXIT_DEAD))
+        if(prev_sched->thread.mode.tt.switch_pipe[0] == -1)
 		os_kill_process(prev_sched->thread.mode.tt.extern_pid, 1);
 		os_kill_process(prev_sched->thread.mode.tt.extern_pid, 1);
 
 
 	change_sig(SIGVTALRM, vtalrm);
 	change_sig(SIGVTALRM, vtalrm);
@@ -101,14 +99,18 @@ void release_thread_tt(struct task_struct *task)
 {
 {
 	int pid = task->thread.mode.tt.extern_pid;
 	int pid = task->thread.mode.tt.extern_pid;
 
 
+	/*
+         * We first have to kill the other process, before
+         * closing its switch_pipe. Else it might wake up
+         * and receive "EOF" before we could kill it.
+         */
 	if(os_getpid() != pid)
 	if(os_getpid() != pid)
 		os_kill_process(pid, 0);
 		os_kill_process(pid, 0);
-}
 
 
-void exit_thread_tt(void)
-{
-	os_close_file(current->thread.mode.tt.switch_pipe[0]);
-	os_close_file(current->thread.mode.tt.switch_pipe[1]);
+        os_close_file(task->thread.mode.tt.switch_pipe[0]);
+        os_close_file(task->thread.mode.tt.switch_pipe[1]);
+	/* use switch_pipe as flag: thread is released */
+        task->thread.mode.tt.switch_pipe[0] = -1;
 }
 }
 
 
 void suspend_new_thread(int fd)
 void suspend_new_thread(int fd)

+ 4 - 0
arch/um/kernel/tt/syscall_user.c

@@ -63,6 +63,10 @@ void do_syscall(void *task, int pid, int local_using_sysemu)
 
 
 	UPT_SYSCALL_NR(TASK_REGS(task)) = PT_SYSCALL_NR(proc_regs);
 	UPT_SYSCALL_NR(TASK_REGS(task)) = PT_SYSCALL_NR(proc_regs);
 
 
+#ifdef UPT_ORIGGPR2
+        UPT_ORIGGPR2(TASK_REGS(task)) = REGS_ORIGGPR2(proc_regs);
+#endif
+
 	if(((unsigned long *) PT_IP(proc_regs) >= &_stext) &&
 	if(((unsigned long *) PT_IP(proc_regs) >= &_stext) &&
 	   ((unsigned long *) PT_IP(proc_regs) <= &_etext))
 	   ((unsigned long *) PT_IP(proc_regs) <= &_etext))
 		tracer_panic("I'm tracing myself and I can't get out");
 		tracer_panic("I'm tracing myself and I can't get out");

+ 4 - 3
arch/um/kernel/um_arch.c

@@ -23,6 +23,7 @@
 #include "asm/ptrace.h"
 #include "asm/ptrace.h"
 #include "asm/elf.h"
 #include "asm/elf.h"
 #include "asm/user.h"
 #include "asm/user.h"
+#include "asm/setup.h"
 #include "ubd_user.h"
 #include "ubd_user.h"
 #include "asm/current.h"
 #include "asm/current.h"
 #include "asm/setup.h"
 #include "asm/setup.h"
@@ -42,9 +43,9 @@
 #define DEFAULT_COMMAND_LINE "root=98:0"
 #define DEFAULT_COMMAND_LINE "root=98:0"
 
 
 /* Changed in linux_main and setup_arch, which run before SMP is started */
 /* Changed in linux_main and setup_arch, which run before SMP is started */
-char command_line[COMMAND_LINE_SIZE] = { 0 };
+static char command_line[COMMAND_LINE_SIZE] = { 0 };
 
 
-void add_arg(char *arg)
+static void add_arg(char *arg)
 {
 {
 	if (strlen(command_line) + strlen(arg) + 1 > COMMAND_LINE_SIZE) {
 	if (strlen(command_line) + strlen(arg) + 1 > COMMAND_LINE_SIZE) {
 		printf("add_arg: Too many command line arguments!\n");
 		printf("add_arg: Too many command line arguments!\n");
@@ -449,7 +450,7 @@ void __init setup_arch(char **cmdline_p)
 {
 {
 	notifier_chain_register(&panic_notifier_list, &panic_exit_notifier);
 	notifier_chain_register(&panic_notifier_list, &panic_exit_notifier);
 	paging_init();
 	paging_init();
- 	strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
+        strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
  	*cmdline_p = command_line;
  	*cmdline_p = command_line;
 	setup_hostinfo();
 	setup_hostinfo();
 }
 }

+ 40 - 0
arch/um/sys-i386/ptrace.c

@@ -73,6 +73,25 @@ int putreg(struct task_struct *child, int regno, unsigned long value)
 	return 0;
 	return 0;
 }
 }
 
 
+int poke_user(struct task_struct *child, long addr, long data)
+{
+        if ((addr & 3) || addr < 0)
+                return -EIO;
+
+        if (addr < MAX_REG_OFFSET)
+                return putreg(child, addr, data);
+
+        else if((addr >= offsetof(struct user, u_debugreg[0])) &&
+                (addr <= offsetof(struct user, u_debugreg[7]))){
+                addr -= offsetof(struct user, u_debugreg[0]);
+                addr = addr >> 2;
+                if((addr == 4) || (addr == 5)) return -EIO;
+                child->thread.arch.debugregs[addr] = data;
+                return 0;
+        }
+        return -EIO;
+}
+
 unsigned long getreg(struct task_struct *child, int regno)
 unsigned long getreg(struct task_struct *child, int regno)
 {
 {
 	unsigned long retval = ~0UL;
 	unsigned long retval = ~0UL;
@@ -93,6 +112,27 @@ unsigned long getreg(struct task_struct *child, int regno)
 	return retval;
 	return retval;
 }
 }
 
 
+int peek_user(struct task_struct *child, long addr, long data)
+{
+/* read the word at location addr in the USER area. */
+        unsigned long tmp;
+
+        if ((addr & 3) || addr < 0)
+                return -EIO;
+
+        tmp = 0;  /* Default return condition */
+        if(addr < MAX_REG_OFFSET){
+                tmp = getreg(child, addr);
+        }
+        else if((addr >= offsetof(struct user, u_debugreg[0])) &&
+                (addr <= offsetof(struct user, u_debugreg[7]))){
+                addr -= offsetof(struct user, u_debugreg[0]);
+                addr = addr >> 2;
+                tmp = child->thread.arch.debugregs[addr];
+        }
+        return put_user(tmp, (unsigned long *) data);
+}
+
 struct i387_fxsave_struct {
 struct i387_fxsave_struct {
 	unsigned short	cwd;
 	unsigned short	cwd;
 	unsigned short	swd;
 	unsigned short	swd;

+ 40 - 0
arch/um/sys-ppc/ptrace.c

@@ -8,6 +8,25 @@ int putreg(struct task_struct *child, unsigned long regno,
 	return 0;
 	return 0;
 }
 }
 
 
+int poke_user(struct task_struct *child, long addr, long data)
+{
+	if ((addr & 3) || addr < 0)
+		return -EIO;
+
+	if (addr < MAX_REG_OFFSET)
+		return putreg(child, addr, data);
+
+	else if((addr >= offsetof(struct user, u_debugreg[0])) &&
+		(addr <= offsetof(struct user, u_debugreg[7]))){
+		  addr -= offsetof(struct user, u_debugreg[0]);
+		  addr = addr >> 2;
+		  if((addr == 4) || (addr == 5)) return -EIO;
+		  child->thread.arch.debugregs[addr] = data;
+		  return 0;
+	}
+	return -EIO;
+}
+
 unsigned long getreg(struct task_struct *child, unsigned long regno)
 unsigned long getreg(struct task_struct *child, unsigned long regno)
 {
 {
 	unsigned long retval = ~0UL;
 	unsigned long retval = ~0UL;
@@ -16,6 +35,27 @@ unsigned long getreg(struct task_struct *child, unsigned long regno)
 	return retval;
 	return retval;
 }
 }
 
 
+int peek_user(struct task_struct *child, long addr, long data)
+{
+	/* read the word at location addr in the USER area. */
+	unsigned long tmp;
+
+	if ((addr & 3) || addr < 0)
+		return -EIO;
+
+	tmp = 0;  /* Default return condition */
+	if(addr < MAX_REG_OFFSET){
+		tmp = getreg(child, addr);
+	}
+	else if((addr >= offsetof(struct user, u_debugreg[0])) &&
+		(addr <= offsetof(struct user, u_debugreg[7]))){
+		addr -= offsetof(struct user, u_debugreg[0]);
+		addr = addr >> 2;
+		tmp = child->thread.arch.debugregs[addr];
+	}
+	return put_user(tmp, (unsigned long *) data);
+}
+
 /*
 /*
  * Overrides for Emacs so that we follow Linus's tabbing style.
  * Overrides for Emacs so that we follow Linus's tabbing style.
  * Emacs will notice this stuff at the end of the file and automatically
  * Emacs will notice this stuff at the end of the file and automatically

+ 44 - 0
arch/um/sys-x86_64/ptrace.c

@@ -62,6 +62,27 @@ int putreg(struct task_struct *child, int regno, unsigned long value)
 	return 0;
 	return 0;
 }
 }
 
 
+int poke_user(struct task_struct *child, long addr, long data)
+{
+        if ((addr & 3) || addr < 0)
+                return -EIO;
+
+        if (addr < MAX_REG_OFFSET)
+                return putreg(child, addr, data);
+
+#if 0 /* Need x86_64 debugregs handling */
+        else if((addr >= offsetof(struct user, u_debugreg[0])) &&
+                (addr <= offsetof(struct user, u_debugreg[7]))){
+                addr -= offsetof(struct user, u_debugreg[0]);
+                addr = addr >> 2;
+                if((addr == 4) || (addr == 5)) return -EIO;
+                child->thread.arch.debugregs[addr] = data;
+                return 0;
+        }
+#endif
+        return -EIO;
+}
+
 unsigned long getreg(struct task_struct *child, int regno)
 unsigned long getreg(struct task_struct *child, int regno)
 {
 {
 	unsigned long retval = ~0UL;
 	unsigned long retval = ~0UL;
@@ -84,6 +105,29 @@ unsigned long getreg(struct task_struct *child, int regno)
 	return retval;
 	return retval;
 }
 }
 
 
+int peek_user(struct task_struct *child, long addr, long data)
+{
+	/* read the word at location addr in the USER area. */
+        unsigned long tmp;
+
+        if ((addr & 3) || addr < 0)
+                return -EIO;
+
+        tmp = 0;  /* Default return condition */
+        if(addr < MAX_REG_OFFSET){
+                tmp = getreg(child, addr);
+        }
+#if 0 /* Need x86_64 debugregs handling */
+        else if((addr >= offsetof(struct user, u_debugreg[0])) &&
+                (addr <= offsetof(struct user, u_debugreg[7]))){
+                addr -= offsetof(struct user, u_debugreg[0]);
+                addr = addr >> 2;
+                tmp = child->thread.arch.debugregs[addr];
+        }
+#endif
+        return put_user(tmp, (unsigned long *) data);
+}
+
 void arch_switch(void)
 void arch_switch(void)
 {
 {
 /* XXX
 /* XXX

+ 1 - 1
arch/um/sys-x86_64/signal.c

@@ -168,7 +168,7 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,
 
 
 	frame = (struct rt_sigframe __user *)
 	frame = (struct rt_sigframe __user *)
 		round_down(stack_top - sizeof(struct rt_sigframe), 16) - 8;
 		round_down(stack_top - sizeof(struct rt_sigframe), 16) - 8;
-	frame -= 128;
+	((unsigned char *) frame) -= 128;
 
 
 	if (!access_ok(VERIFY_WRITE, fp, sizeof(struct _fpstate)))
 	if (!access_ok(VERIFY_WRITE, fp, sizeof(struct _fpstate)))
 		goto out;
 		goto out;

+ 2 - 0
arch/um/sys-x86_64/syscalls.c

@@ -44,6 +44,8 @@ long sys_modify_ldt_tt(int func, void *ptr, unsigned long bytecount)
 #ifdef CONFIG_MODE_SKAS
 #ifdef CONFIG_MODE_SKAS
 extern int userspace_pid[];
 extern int userspace_pid[];
 
 
+#include "skas_ptrace.h"
+
 long sys_modify_ldt_skas(int func, void *ptr, unsigned long bytecount)
 long sys_modify_ldt_skas(int func, void *ptr, unsigned long bytecount)
 {
 {
 	struct ptrace_ldt ldt;
 	struct ptrace_ldt ldt;

+ 1 - 1
drivers/block/rd.c

@@ -74,7 +74,7 @@ static struct request_queue *rd_queue[CONFIG_BLK_DEV_RAM_COUNT];
  * architecture-specific setup routine (from the stored boot sector
  * architecture-specific setup routine (from the stored boot sector
  * information).
  * information).
  */
  */
-static int rd_size = CONFIG_BLK_DEV_RAM_SIZE;	/* Size of the RAM disks */
+int rd_size = CONFIG_BLK_DEV_RAM_SIZE;		/* Size of the RAM disks */
 /*
 /*
  * It would be very desirable to have a soft-blocksize (that in the case
  * It would be very desirable to have a soft-blocksize (that in the case
  * of the ramdisk driver is also the hardblocksize ;) of PAGE_SIZE because
  * of the ramdisk driver is also the hardblocksize ;) of PAGE_SIZE because

+ 12 - 2
drivers/media/video/tuner-core.c

@@ -357,8 +357,16 @@ tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
 		    V4L2_TUNER_RADIO != t->mode)
 		    V4L2_TUNER_RADIO != t->mode)
 			set_tv_freq(client,400*16);
 			set_tv_freq(client,400*16);
 		t->mode  = f->type;
 		t->mode  = f->type;
-		t->freq  = f->frequency;
-		set_freq(client,t->freq);
+		set_freq(client,f->frequency);
+		break;
+	}
+	case VIDIOC_G_FREQUENCY:
+	{
+		struct v4l2_frequency *f = arg;
+
+		SWITCH_V4L2;
+		f->type = t->mode;
+		f->frequency = t->freq;
 		break;
 		break;
 	}
 	}
 	case VIDIOC_G_TUNER:
 	case VIDIOC_G_TUNER:
@@ -368,6 +376,8 @@ tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
 		SWITCH_V4L2;
 		SWITCH_V4L2;
 		if (V4L2_TUNER_RADIO == t->mode  &&  t->has_signal)
 		if (V4L2_TUNER_RADIO == t->mode  &&  t->has_signal)
 			tuner->signal = t->has_signal(client);
 			tuner->signal = t->has_signal(client);
+		tuner->rangelow = tv_range[0] * 16;
+		tuner->rangehigh = tv_range[1] * 16;
 		break;
 		break;
 	}
 	}
 	default:
 	default:

+ 1 - 1
drivers/s390/scsi/zfcp_aux.c

@@ -52,7 +52,7 @@ static inline int zfcp_sg_list_copy_from_user(struct zfcp_sg_list *,
 static inline int zfcp_sg_list_copy_to_user(void __user *,
 static inline int zfcp_sg_list_copy_to_user(void __user *,
 					    struct zfcp_sg_list *, size_t);
 					    struct zfcp_sg_list *, size_t);
 
 
-static int zfcp_cfdc_dev_ioctl(struct file *, unsigned int, unsigned long);
+static long zfcp_cfdc_dev_ioctl(struct file *, unsigned int, unsigned long);
 
 
 #define ZFCP_CFDC_IOC_MAGIC                     0xDD
 #define ZFCP_CFDC_IOC_MAGIC                     0xDD
 #define ZFCP_CFDC_IOC \
 #define ZFCP_CFDC_IOC \

+ 0 - 1
drivers/s390/scsi/zfcp_def.h

@@ -61,7 +61,6 @@
 #include <linux/mempool.h>
 #include <linux/mempool.h>
 #include <linux/syscalls.h>
 #include <linux/syscalls.h>
 #include <linux/ioctl.h>
 #include <linux/ioctl.h>
-#include <linux/ioctl32.h>
 
 
 /************************ DEBUG FLAGS *****************************************/
 /************************ DEBUG FLAGS *****************************************/
 
 

+ 1 - 1
drivers/scsi/aacraid/linit.c

@@ -450,7 +450,7 @@ static int aac_cfg_open(struct inode *inode, struct file *file)
 		}
 		}
 	}
 	}
 
 
-	return 0;
+	return err;
 }
 }
 
 
 /**
 /**

+ 0 - 2
drivers/scsi/aic7xxx/aic7xxx_osm.c

@@ -2335,8 +2335,6 @@ ahc_linux_free_target(struct ahc_softc *ahc, struct ahc_linux_target *targ)
 		      AHC_TRANS_GOAL, /*paused*/FALSE);
 		      AHC_TRANS_GOAL, /*paused*/FALSE);
 	ahc_update_neg_request(ahc, &devinfo, tstate, tinfo, AHC_NEG_ALWAYS);
 	ahc_update_neg_request(ahc, &devinfo, tstate, tinfo, AHC_NEG_ALWAYS);
 	ahc->platform_data->targets[target_offset] = NULL;
 	ahc->platform_data->targets[target_offset] = NULL;
-	if (targ->inq_data != NULL)
-		free(targ->inq_data, M_DEVBUF);
 	free(targ, M_DEVBUF);
 	free(targ, M_DEVBUF);
 }
 }
 
 

+ 0 - 6
drivers/scsi/aic7xxx/aic7xxx_osm.h

@@ -423,10 +423,6 @@ struct ahc_linux_device {
 	struct			ahc_linux_target *target;
 	struct			ahc_linux_target *target;
 };
 };
 
 
-typedef enum {
-	AHC_INQ_VALID		 = 0x02,
-} ahc_linux_targ_flags;
-
 struct ahc_linux_target {
 struct ahc_linux_target {
 	struct ahc_linux_device	 *devices[AHC_NUM_LUNS];
 	struct ahc_linux_device	 *devices[AHC_NUM_LUNS];
 	int			  channel;
 	int			  channel;
@@ -434,8 +430,6 @@ struct ahc_linux_target {
 	int			  refcount;
 	int			  refcount;
 	struct ahc_transinfo	  last_tinfo;
 	struct ahc_transinfo	  last_tinfo;
 	struct ahc_softc	 *ahc;
 	struct ahc_softc	 *ahc;
-	ahc_linux_targ_flags	  flags;
-	struct scsi_inquiry_data *inq_data;
 };
 };
 
 
 /********************* Definitions Required by the Core ***********************/
 /********************* Definitions Required by the Core ***********************/

+ 1 - 7
drivers/scsi/qla2xxx/qla_attr.c

@@ -300,7 +300,7 @@ qla2x00_set_rport_loss_tmo(struct fc_rport *rport, uint32_t timeout)
 	rport->dev_loss_tmo = ha->port_down_retry_count + 5;
 	rport->dev_loss_tmo = ha->port_down_retry_count + 5;
 }
 }
 
 
-static struct fc_function_template qla2xxx_transport_functions = {
+struct fc_function_template qla2xxx_transport_functions = {
 
 
 	.show_host_node_name = 1,
 	.show_host_node_name = 1,
 	.show_host_port_name = 1,
 	.show_host_port_name = 1,
@@ -322,12 +322,6 @@ static struct fc_function_template qla2xxx_transport_functions = {
 
 
 };
 };
 
 
-struct scsi_transport_template *
-qla2x00_alloc_transport_tmpl(void)
-{
-	return (fc_attach_transport(&qla2xxx_transport_functions));
-}
-
 void
 void
 qla2x00_init_host_attr(scsi_qla_host_t *ha)
 qla2x00_init_host_attr(scsi_qla_host_t *ha)
 {
 {

+ 2 - 2
drivers/scsi/qla2xxx/qla_gbl.h

@@ -24,7 +24,6 @@
 #define	__QLA_GBL_H
 #define	__QLA_GBL_H
 
 
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
-#include <scsi/scsi_transport.h>
 
 
 extern void qla2x00_remove_one(struct pci_dev *);
 extern void qla2x00_remove_one(struct pci_dev *);
 extern int qla2x00_probe_one(struct pci_dev *, struct qla_board_info *);
 extern int qla2x00_probe_one(struct pci_dev *, struct qla_board_info *);
@@ -248,9 +247,10 @@ extern void qla2x00_cancel_io_descriptors(scsi_qla_host_t *);
 /*
 /*
  * Global Function Prototypes in qla_attr.c source file.
  * Global Function Prototypes in qla_attr.c source file.
  */
  */
+struct fc_function_template;
+extern struct fc_function_template qla2xxx_transport_functions;
 extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *);
 extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *);
 extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *);
 extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *);
-extern struct scsi_transport_template *qla2x00_alloc_transport_tmpl(void);
 extern void qla2x00_init_host_attr(scsi_qla_host_t *);
 extern void qla2x00_init_host_attr(scsi_qla_host_t *);
 extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *);
 extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *);
 extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *);
 extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *);

+ 2 - 1
drivers/scsi/qla2xxx/qla_os.c

@@ -2350,7 +2350,8 @@ qla2x00_module_init(void)
 #if DEBUG_QLA2100
 #if DEBUG_QLA2100
 	strcat(qla2x00_version_str, "-debug");
 	strcat(qla2x00_version_str, "-debug");
 #endif
 #endif
-	qla2xxx_transport_template = qla2x00_alloc_transport_tmpl();
+	qla2xxx_transport_template =
+	    fc_attach_transport(&qla2xxx_transport_functions);
 	if (!qla2xxx_transport_template)
 	if (!qla2xxx_transport_template)
 		return -ENODEV;
 		return -ENODEV;
 
 

+ 1 - 1
drivers/scsi/scsi.c

@@ -542,7 +542,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
 		 * that the device is no longer present */
 		 * that the device is no longer present */
 		cmd->result = DID_NO_CONNECT << 16;
 		cmd->result = DID_NO_CONNECT << 16;
 		atomic_inc(&cmd->device->iorequest_cnt);
 		atomic_inc(&cmd->device->iorequest_cnt);
-		scsi_done(cmd);
+		__scsi_done(cmd);
 		/* return 0 (because the command has been processed) */
 		/* return 0 (because the command has been processed) */
 		goto out;
 		goto out;
 	}
 	}

+ 34 - 15
drivers/scsi/scsi_transport_spi.c

@@ -22,6 +22,7 @@
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/workqueue.h>
 #include <linux/workqueue.h>
+#include <linux/blkdev.h>
 #include <asm/semaphore.h>
 #include <asm/semaphore.h>
 #include <scsi/scsi.h>
 #include <scsi/scsi.h>
 #include "scsi_priv.h"
 #include "scsi_priv.h"
@@ -41,6 +42,11 @@
 
 
 #define SPI_MAX_ECHO_BUFFER_SIZE	4096
 #define SPI_MAX_ECHO_BUFFER_SIZE	4096
 
 
+#define DV_LOOPS	3
+#define DV_TIMEOUT	(10*HZ)
+#define DV_RETRIES	3	/* should only need at most 
+				 * two cc/ua clears */
+
 /* Private data accessors (keep these out of the header file) */
 /* Private data accessors (keep these out of the header file) */
 #define spi_dv_pending(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_pending)
 #define spi_dv_pending(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_pending)
 #define spi_dv_sem(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_sem)
 #define spi_dv_sem(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_sem)
@@ -100,6 +106,29 @@ static int sprint_frac(char *dest, int value, int denom)
 	return result;
 	return result;
 }
 }
 
 
+/* Modification of scsi_wait_req that will clear UNIT ATTENTION conditions
+ * resulting from (likely) bus and device resets */
+static void spi_wait_req(struct scsi_request *sreq, const void *cmd,
+			 void *buffer, unsigned bufflen)
+{
+	int i;
+
+	for(i = 0; i < DV_RETRIES; i++) {
+		sreq->sr_request->flags |= REQ_FAILFAST;
+
+		scsi_wait_req(sreq, cmd, buffer, bufflen,
+			      DV_TIMEOUT, /* retries */ 1);
+		if (sreq->sr_result & DRIVER_SENSE) {
+			struct scsi_sense_hdr sshdr;
+
+			if (scsi_request_normalize_sense(sreq, &sshdr)
+			    && sshdr.sense_key == UNIT_ATTENTION)
+				continue;
+		}
+		break;
+	}
+}
+
 static struct {
 static struct {
 	enum spi_signal_type	value;
 	enum spi_signal_type	value;
 	char			*name;
 	char			*name;
@@ -378,11 +407,6 @@ static CLASS_DEVICE_ATTR(signalling, S_IRUGO | S_IWUSR,
 	if(i->f->set_##x)		\
 	if(i->f->set_##x)		\
 		i->f->set_##x(sdev->sdev_target, y)
 		i->f->set_##x(sdev->sdev_target, y)
 
 
-#define DV_LOOPS	3
-#define DV_TIMEOUT	(10*HZ)
-#define DV_RETRIES	3	/* should only need at most 
-				 * two cc/ua clears */
-
 enum spi_compare_returns {
 enum spi_compare_returns {
 	SPI_COMPARE_SUCCESS,
 	SPI_COMPARE_SUCCESS,
 	SPI_COMPARE_FAILURE,
 	SPI_COMPARE_FAILURE,
@@ -446,8 +470,7 @@ spi_dv_device_echo_buffer(struct scsi_request *sreq, u8 *buffer,
 	for (r = 0; r < retries; r++) {
 	for (r = 0; r < retries; r++) {
 		sreq->sr_cmd_len = 0;	/* wait_req to fill in */
 		sreq->sr_cmd_len = 0;	/* wait_req to fill in */
 		sreq->sr_data_direction = DMA_TO_DEVICE;
 		sreq->sr_data_direction = DMA_TO_DEVICE;
-		scsi_wait_req(sreq, spi_write_buffer, buffer, len,
-			      DV_TIMEOUT, DV_RETRIES);
+		spi_wait_req(sreq, spi_write_buffer, buffer, len);
 		if(sreq->sr_result || !scsi_device_online(sdev)) {
 		if(sreq->sr_result || !scsi_device_online(sdev)) {
 			struct scsi_sense_hdr sshdr;
 			struct scsi_sense_hdr sshdr;
 
 
@@ -471,8 +494,7 @@ spi_dv_device_echo_buffer(struct scsi_request *sreq, u8 *buffer,
 		memset(ptr, 0, len);
 		memset(ptr, 0, len);
 		sreq->sr_cmd_len = 0;	/* wait_req to fill in */
 		sreq->sr_cmd_len = 0;	/* wait_req to fill in */
 		sreq->sr_data_direction = DMA_FROM_DEVICE;
 		sreq->sr_data_direction = DMA_FROM_DEVICE;
-		scsi_wait_req(sreq, spi_read_buffer, ptr, len,
-			      DV_TIMEOUT, DV_RETRIES);
+		spi_wait_req(sreq, spi_read_buffer, ptr, len);
 		scsi_device_set_state(sdev, SDEV_QUIESCE);
 		scsi_device_set_state(sdev, SDEV_QUIESCE);
 
 
 		if (memcmp(buffer, ptr, len) != 0)
 		if (memcmp(buffer, ptr, len) != 0)
@@ -500,8 +522,7 @@ spi_dv_device_compare_inquiry(struct scsi_request *sreq, u8 *buffer,
 
 
 		memset(ptr, 0, len);
 		memset(ptr, 0, len);
 
 
-		scsi_wait_req(sreq, spi_inquiry, ptr, len,
-			      DV_TIMEOUT, DV_RETRIES);
+		spi_wait_req(sreq, spi_inquiry, ptr, len);
 		
 		
 		if(sreq->sr_result || !scsi_device_online(sdev)) {
 		if(sreq->sr_result || !scsi_device_online(sdev)) {
 			scsi_device_set_state(sdev, SDEV_QUIESCE);
 			scsi_device_set_state(sdev, SDEV_QUIESCE);
@@ -593,8 +614,7 @@ spi_dv_device_get_echo_buffer(struct scsi_request *sreq, u8 *buffer)
 	 * (reservation conflict, device not ready, etc) just
 	 * (reservation conflict, device not ready, etc) just
 	 * skip the write tests */
 	 * skip the write tests */
 	for (l = 0; ; l++) {
 	for (l = 0; ; l++) {
-		scsi_wait_req(sreq, spi_test_unit_ready, NULL, 0,
-			      DV_TIMEOUT, DV_RETRIES);
+		spi_wait_req(sreq, spi_test_unit_ready, NULL, 0);
 
 
 		if(sreq->sr_result) {
 		if(sreq->sr_result) {
 			if(l >= 3)
 			if(l >= 3)
@@ -608,8 +628,7 @@ spi_dv_device_get_echo_buffer(struct scsi_request *sreq, u8 *buffer)
 	sreq->sr_cmd_len = 0;
 	sreq->sr_cmd_len = 0;
 	sreq->sr_data_direction = DMA_FROM_DEVICE;
 	sreq->sr_data_direction = DMA_FROM_DEVICE;
 
 
-	scsi_wait_req(sreq, spi_read_buffer_descriptor, buffer, 4,
-		      DV_TIMEOUT, DV_RETRIES);
+	spi_wait_req(sreq, spi_read_buffer_descriptor, buffer, 4);
 
 
 	if (sreq->sr_result)
 	if (sreq->sr_result)
 		/* Device has no echo buffer */
 		/* Device has no echo buffer */

+ 3 - 0
drivers/scsi/sr_ioctl.c

@@ -281,6 +281,9 @@ int sr_get_mcn(struct cdrom_device_info *cdi, struct cdrom_mcn *mcn)
 	char *buffer = kmalloc(32, GFP_KERNEL | SR_GFP_DMA(cd));
 	char *buffer = kmalloc(32, GFP_KERNEL | SR_GFP_DMA(cd));
 	int result;
 	int result;
 
 
+	if (!buffer)
+		return -ENOMEM;
+
 	memset(&cgc, 0, sizeof(struct packet_command));
 	memset(&cgc, 0, sizeof(struct packet_command));
 	cgc.cmd[0] = GPCMD_READ_SUBCHANNEL;
 	cgc.cmd[0] = GPCMD_READ_SUBCHANNEL;
 	cgc.cmd[2] = 0x40;	/* I do want the subchannel info */
 	cgc.cmd[2] = 0x40;	/* I do want the subchannel info */

+ 3 - 2
drivers/scsi/sym53c8xx_2/sym_glue.c

@@ -2038,8 +2038,9 @@ static void sym2_set_period(struct scsi_target *starget, int period)
 	struct sym_hcb *np = sym_get_hcb(shost);
 	struct sym_hcb *np = sym_get_hcb(shost);
 	struct sym_tcb *tp = &np->target[starget->id];
 	struct sym_tcb *tp = &np->target[starget->id];
 
 
-	/* have to have DT for these transfers */
-	if (period <= np->minsync)
+	/* have to have DT for these transfers, but DT will also
+	 * set width, so check that this is allowed */
+	if (period <= np->minsync && spi_width(starget))
 		tp->tgoal.dt = 1;
 		tp->tgoal.dt = 1;
 
 
 	tp->tgoal.period = period;
 	tp->tgoal.period = period;

+ 2 - 0
drivers/serial/8250_pci.c

@@ -1009,6 +1009,8 @@ get_pci_irq(struct pci_dev *dev, struct pci_board *board, int idx)
  *  n    = number of serial ports
  *  n    = number of serial ports
  *  baud = baud rate
  *  baud = baud rate
  *
  *
+ * This table is sorted by (in order): baud, bt, bn, n.
+ *
  * Please note: in theory if n = 1, _bt infix should make no difference.
  * Please note: in theory if n = 1, _bt infix should make no difference.
  * ie, pbn_b0_1_115200 is the same as pbn_b0_bt_1_115200
  * ie, pbn_b0_1_115200 is the same as pbn_b0_bt_1_115200
  */
  */

+ 0 - 5
fs/partitions/msdos.c

@@ -114,9 +114,6 @@ parse_extended(struct parsed_partitions *state, struct block_device *bdev,
 		 */
 		 */
 		for (i=0; i<4; i++, p++) {
 		for (i=0; i<4; i++, p++) {
 			u32 offs, size, next;
 			u32 offs, size, next;
-
-			if (SYS_IND(p) == 0)
-				continue;
 			if (!NR_SECTS(p) || is_extended_partition(p))
 			if (!NR_SECTS(p) || is_extended_partition(p))
 				continue;
 				continue;
 
 
@@ -433,8 +430,6 @@ int msdos_partition(struct parsed_partitions *state, struct block_device *bdev)
 	for (slot = 1 ; slot <= 4 ; slot++, p++) {
 	for (slot = 1 ; slot <= 4 ; slot++, p++) {
 		u32 start = START_SECT(p)*sector_size;
 		u32 start = START_SECT(p)*sector_size;
 		u32 size = NR_SECTS(p)*sector_size;
 		u32 size = NR_SECTS(p)*sector_size;
-		if (SYS_IND(p) == 0)
-			continue;
 		if (!size)
 		if (!size)
 			continue;
 			continue;
 		if (is_extended_partition(p)) {
 		if (is_extended_partition(p)) {

+ 0 - 3
include/asm-ppc64/xics.h

@@ -30,7 +30,4 @@ struct xics_ipi_struct {
 
 
 extern struct xics_ipi_struct xics_ipi_message[NR_CPUS] __cacheline_aligned;
 extern struct xics_ipi_struct xics_ipi_message[NR_CPUS] __cacheline_aligned;
 
 
-extern unsigned int default_distrib_server;
-extern unsigned int interrupt_server_size;
-
 #endif /* _PPC64_KERNEL_XICS_H */
 #endif /* _PPC64_KERNEL_XICS_H */

+ 0 - 196
include/asm-um/elf.h

@@ -1,196 +0,0 @@
-/*
- * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
- * Licensed under the GPL
- */
-#ifndef __UM_ELF_I386_H
-#define __UM_ELF_I386_H
-
-#include "user.h"
-
-#if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT)
-
-#define R_386_NONE	0
-#define R_386_32	1
-#define R_386_PC32	2
-#define R_386_GOT32	3
-#define R_386_PLT32	4
-#define R_386_COPY	5
-#define R_386_GLOB_DAT	6
-#define R_386_JMP_SLOT	7
-#define R_386_RELATIVE	8
-#define R_386_GOTOFF	9
-#define R_386_GOTPC	10
-#define R_386_NUM	11
-
-#elif defined(CONFIG_UML_X86) && defined(CONFIG_64BIT)
-
-/* x86-64 relocation types */
-#define R_X86_64_NONE		0	/* No reloc */
-#define R_X86_64_64		1	/* Direct 64 bit  */
-#define R_X86_64_PC32		2	/* PC relative 32 bit signed */
-#define R_X86_64_GOT32		3	/* 32 bit GOT entry */
-#define R_X86_64_PLT32		4	/* 32 bit PLT address */
-#define R_X86_64_COPY		5	/* Copy symbol at runtime */
-#define R_X86_64_GLOB_DAT	6	/* Create GOT entry */
-#define R_X86_64_JUMP_SLOT	7	/* Create PLT entry */
-#define R_X86_64_RELATIVE	8	/* Adjust by program base */
-#define R_X86_64_GOTPCREL	9	/* 32 bit signed pc relative
-					   offset to GOT */
-#define R_X86_64_32		10	/* Direct 32 bit zero extended */
-#define R_X86_64_32S		11	/* Direct 32 bit sign extended */
-#define R_X86_64_16		12	/* Direct 16 bit zero extended */
-#define R_X86_64_PC16		13	/* 16 bit sign extended pc relative */
-#define R_X86_64_8		14	/* Direct 8 bit sign extended  */
-#define R_X86_64_PC8		15	/* 8 bit sign extended pc relative */
-
-#define R_X86_64_NUM		16
-
-#endif
-
-typedef unsigned long elf_greg_t;
-
-#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
-typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
-typedef struct user_i387_struct elf_fpregset_t;
-
-/*
- * This is used to ensure we don't load something for the wrong architecture.
- */
-#define elf_check_arch(x) \
-	(((x)->e_machine == EM_386) || ((x)->e_machine == EM_486))
-
-#define ELF_CLASS	ELFCLASS32
-#define ELF_DATA        ELFDATA2LSB
-#define ELF_ARCH        EM_386
-
-#define ELF_PLAT_INIT(regs, load_addr) do { \
-	PT_REGS_EBX(regs) = 0; \
-	PT_REGS_ECX(regs) = 0; \
-	PT_REGS_EDX(regs) = 0; \
-	PT_REGS_ESI(regs) = 0; \
-	PT_REGS_EDI(regs) = 0; \
-	PT_REGS_EBP(regs) = 0; \
-	PT_REGS_EAX(regs) = 0; \
-} while(0)
-
-#define USE_ELF_CORE_DUMP
-#define ELF_EXEC_PAGESIZE 4096
-
-#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
-
-/* Shamelessly stolen from include/asm-i386/elf.h */
-
-#define ELF_CORE_COPY_REGS(pr_reg, regs) do {	\
-	pr_reg[0] = PT_REGS_EBX(regs);		\
-	pr_reg[1] = PT_REGS_ECX(regs);		\
-	pr_reg[2] = PT_REGS_EDX(regs);		\
-	pr_reg[3] = PT_REGS_ESI(regs);		\
-	pr_reg[4] = PT_REGS_EDI(regs);		\
-	pr_reg[5] = PT_REGS_EBP(regs);		\
-	pr_reg[6] = PT_REGS_EAX(regs);		\
-	pr_reg[7] = PT_REGS_DS(regs);		\
-	pr_reg[8] = PT_REGS_ES(regs);		\
-	/* fake once used fs and gs selectors? */	\
-	pr_reg[9] = PT_REGS_DS(regs);		\
-	pr_reg[10] = PT_REGS_DS(regs);		\
-	pr_reg[11] = PT_REGS_SYSCALL_NR(regs);	\
-	pr_reg[12] = PT_REGS_IP(regs);		\
-	pr_reg[13] = PT_REGS_CS(regs);		\
-	pr_reg[14] = PT_REGS_EFLAGS(regs);	\
-	pr_reg[15] = PT_REGS_SP(regs);		\
-	pr_reg[16] = PT_REGS_SS(regs);		\
-} while(0);
-
-extern long elf_aux_hwcap;
-#define ELF_HWCAP (elf_aux_hwcap)
-
-extern char * elf_aux_platform;
-#define ELF_PLATFORM (elf_aux_platform)
-
-#define SET_PERSONALITY(ex, ibcs2) do ; while(0)
-
-extern unsigned long vsyscall_ehdr;
-extern unsigned long vsyscall_end;
-extern unsigned long __kernel_vsyscall;
-
-#define VSYSCALL_BASE vsyscall_ehdr
-#define VSYSCALL_END vsyscall_end
-
-/*
- * This is the range that is readable by user mode, and things
- * acting like user mode such as get_user_pages.
- */
-#define FIXADDR_USER_START      VSYSCALL_BASE
-#define FIXADDR_USER_END        VSYSCALL_END
-
-/*
- * Architecture-neutral AT_ values in 0-17, leave some room
- * for more of them, start the x86-specific ones at 32.
- */
-#define AT_SYSINFO		32
-#define AT_SYSINFO_EHDR		33
-
-#define ARCH_DLINFO						\
-do {								\
-	if ( vsyscall_ehdr ) {					\
-		NEW_AUX_ENT(AT_SYSINFO,	__kernel_vsyscall);	\
-		NEW_AUX_ENT(AT_SYSINFO_EHDR, vsyscall_ehdr);	\
-	}							\
-} while (0)
-
-/*
- * These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out
- * extra segments containing the vsyscall DSO contents.  Dumping its
- * contents makes post-mortem fully interpretable later without matching up
- * the same kernel and hardware config to see what PC values meant.
- * Dumping its extra ELF program headers includes all the other information
- * a debugger needs to easily find how the vsyscall DSO was being used.
- */
-#define ELF_CORE_EXTRA_PHDRS						      \
-	(vsyscall_ehdr ? (((struct elfhdr *)vsyscall_ehdr)->e_phnum) : 0 )
-
-#define ELF_CORE_WRITE_EXTRA_PHDRS					      \
-if ( vsyscall_ehdr ) {							      \
-	const struct elfhdr *const ehdrp = (struct elfhdr *)vsyscall_ehdr;    \
-	const struct elf_phdr *const phdrp =				      \
-		(const struct elf_phdr *) (vsyscall_ehdr + ehdrp->e_phoff);   \
-	int i;								      \
-	Elf32_Off ofs = 0;						      \
-	for (i = 0; i < ehdrp->e_phnum; ++i) {				      \
-		struct elf_phdr phdr = phdrp[i];			      \
-		if (phdr.p_type == PT_LOAD) {				      \
-			ofs = phdr.p_offset = offset;			      \
-			offset += phdr.p_filesz;			      \
-		}							      \
-		else							      \
-			phdr.p_offset += ofs;				      \
-		phdr.p_paddr = 0; /* match other core phdrs */		      \
-		DUMP_WRITE(&phdr, sizeof(phdr));			      \
-	}								      \
-}
-#define ELF_CORE_WRITE_EXTRA_DATA					      \
-if ( vsyscall_ehdr ) {							      \
-	const struct elfhdr *const ehdrp = (struct elfhdr *)vsyscall_ehdr;    \
-	const struct elf_phdr *const phdrp =				      \
-		(const struct elf_phdr *) (vsyscall_ehdr + ehdrp->e_phoff);   \
-	int i;								      \
-	for (i = 0; i < ehdrp->e_phnum; ++i) {				      \
-		if (phdrp[i].p_type == PT_LOAD)				      \
-			DUMP_WRITE((void *) phdrp[i].p_vaddr,		      \
-				   phdrp[i].p_filesz);			      \
-	}								      \
-}
-
-#endif
-
-/*
- * Overrides for Emacs so that we follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only.  This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-file-style: "linux"
- * End:
- */

+ 2 - 1
include/asm-um/setup.h

@@ -2,7 +2,8 @@
 #define SETUP_H_INCLUDED
 #define SETUP_H_INCLUDED
 
 
 /* POSIX mandated with _POSIX_ARG_MAX that we can rely on 4096 chars in the
 /* POSIX mandated with _POSIX_ARG_MAX that we can rely on 4096 chars in the
- * command line, so this choice is ok.*/
+ * command line, so this choice is ok.
+ */
 
 
 #define COMMAND_LINE_SIZE 4096
 #define COMMAND_LINE_SIZE 4096
 
 

+ 1 - 1
sound/pci/via82xx.c

@@ -1836,7 +1836,7 @@ static void __devinit snd_via82xx_proc_init(via82xx_t *chip)
  *
  *
  */
  */
 
 
-static int __devinit snd_via82xx_chip_init(via82xx_t *chip)
+static int snd_via82xx_chip_init(via82xx_t *chip)
 {
 {
 	unsigned int val;
 	unsigned int val;
 	int max_count;
 	int max_count;