diff options
Diffstat (limited to 'arch/parisc/kernel')
| -rw-r--r-- | arch/parisc/kernel/cache.c | 5 | ||||
| -rw-r--r-- | arch/parisc/kernel/parisc_ksyms.c | 2 | ||||
| -rw-r--r-- | arch/parisc/kernel/pdc_chassis.c | 43 | ||||
| -rw-r--r-- | arch/parisc/kernel/process.c | 22 | ||||
| -rw-r--r-- | arch/parisc/kernel/smp.c | 2 | ||||
| -rw-r--r-- | arch/parisc/kernel/sys_parisc32.c | 41 | ||||
| -rw-r--r-- | arch/parisc/kernel/syscall_table.S | 8 | ||||
| -rw-r--r-- | arch/parisc/kernel/traps.c | 10 | 
8 files changed, 32 insertions, 101 deletions
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index 4b12890642e..83ded26cad0 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c @@ -421,14 +421,11 @@ void purge_tlb_entries(struct mm_struct *mm, unsigned long addr)  	/* Note: purge_tlb_entries can be called at startup with  	   no context.  */ -	/* Disable preemption while we play with %sr1.  */ -	preempt_disable(); -	mtsp(mm->context, 1);  	purge_tlb_start(flags); +	mtsp(mm->context, 1);  	pdtlb(addr);  	pitlb(addr);  	purge_tlb_end(flags); -	preempt_enable();  }  EXPORT_SYMBOL(purge_tlb_entries); diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c index 6795dc6c995..568b2c61ea0 100644 --- a/arch/parisc/kernel/parisc_ksyms.c +++ b/arch/parisc/kernel/parisc_ksyms.c @@ -120,11 +120,13 @@ extern void __ashrdi3(void);  extern void __ashldi3(void);  extern void __lshrdi3(void);  extern void __muldi3(void); +extern void __ucmpdi2(void);  EXPORT_SYMBOL(__ashrdi3);  EXPORT_SYMBOL(__ashldi3);  EXPORT_SYMBOL(__lshrdi3);  EXPORT_SYMBOL(__muldi3); +EXPORT_SYMBOL(__ucmpdi2);  asmlinkage void * __canonicalize_funcptr_for_compare(void *);  EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); diff --git a/arch/parisc/kernel/pdc_chassis.c b/arch/parisc/kernel/pdc_chassis.c index d47ba1aa825..8fa314fbfb1 100644 --- a/arch/parisc/kernel/pdc_chassis.c +++ b/arch/parisc/kernel/pdc_chassis.c @@ -30,11 +30,13 @@  #endif  #include <linux/init.h> +#include <linux/module.h>  #include <linux/kernel.h>  #include <linux/reboot.h>  #include <linux/notifier.h>  #include <linux/cache.h>  #include <linux/proc_fs.h> +#include <linux/seq_file.h>  #include <asm/pdc_chassis.h>  #include <asm/processor.h> @@ -244,38 +246,38 @@ int pdc_chassis_send_status(int message)  #ifdef CONFIG_PDC_CHASSIS_WARN  #ifdef CONFIG_PROC_FS -static int pdc_chassis_warn_pread(char *page, char **start, off_t off, -		int count, int *eof, void *data) +static int pdc_chassis_warn_show(struct seq_file *m, void *v)  { -	char *out = page; -	int len, ret;  	unsigned long warn;  	u32 warnreg; -	ret = pdc_chassis_warn(&warn); -	if (ret != PDC_OK) +	if (pdc_chassis_warn(&warn) != PDC_OK)  		return -EIO;  	warnreg = (warn & 0xFFFFFFFF);  	if ((warnreg >> 24) & 0xFF) -		out += sprintf(out, "Chassis component failure! (eg fan or PSU): 0x%.2x\n", ((warnreg >> 24) & 0xFF)); +		seq_printf(m, "Chassis component failure! (eg fan or PSU): 0x%.2x\n", +			   (warnreg >> 24) & 0xFF); -	out += sprintf(out, "Battery: %s\n", (warnreg & 0x04) ? "Low!" : "OK"); -	out += sprintf(out, "Temp low: %s\n", (warnreg & 0x02) ? "Exceeded!" : "OK"); -	out += sprintf(out, "Temp mid: %s\n", (warnreg & 0x01) ? "Exceeded!" : "OK"); +	seq_printf(m, "Battery: %s\n", (warnreg & 0x04) ? "Low!" : "OK"); +	seq_printf(m, "Temp low: %s\n", (warnreg & 0x02) ? "Exceeded!" : "OK"); +	seq_printf(m, "Temp mid: %s\n", (warnreg & 0x01) ? "Exceeded!" : "OK"); +	return 0; +} -	len = out - page - off; -	if (len < count) { -		*eof = 1; -		if (len <= 0) return 0; -	} else { -		len = count; -	} -	*start = page + off; -	return len; +static int pdc_chassis_warn_open(struct inode *inode, struct file *file) +{ +	return single_open(file, pdc_chassis_warn_show, NULL);  } +static const struct file_operations pdc_chassis_warn_fops = { +	.open		= pdc_chassis_warn_open, +	.read		= seq_read, +	.llseek		= seq_lseek, +	.release	= seq_release, +}; +  static int __init pdc_chassis_create_procfs(void)  {  	unsigned long test; @@ -290,8 +292,7 @@ static int __init pdc_chassis_create_procfs(void)  	printk(KERN_INFO "Enabling PDC chassis warnings support v%s\n",  			PDC_CHASSIS_VER); -	create_proc_read_entry("chassis", 0400, NULL, pdc_chassis_warn_pread, -				NULL); +	proc_create("chassis", 0400, NULL, &pdc_chassis_warn_fops);  	return 0;  } diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index d13507246c5..55f92b61418 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -59,28 +59,6 @@  #include <asm/unwind.h>  #include <asm/sections.h> -/* - * The idle thread. There's no useful work to be - * done, so just try to conserve power and have a - * low exit latency (ie sit in a loop waiting for - * somebody to say that they'd like to reschedule) - */ -void cpu_idle(void) -{ -	set_thread_flag(TIF_POLLING_NRFLAG); - -	/* endless idle loop with no priority at all */ -	while (1) { -		rcu_idle_enter(); -		while (!need_resched()) -			barrier(); -		rcu_idle_exit(); -		schedule_preempt_disabled(); -		check_pgt_cache(); -	} -} - -  #define COMMAND_GLOBAL  F_EXTEND(0xfffe0030)  #define CMD_RESET       5       /* reset any module */ diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 6266730efd6..fd1bb1519c2 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c @@ -329,7 +329,7 @@ void __init smp_callin(void)  	local_irq_enable();  /* Interrupts have been off until now */ -	cpu_idle();      /* Wait for timer to schedule some work */ +	cpu_startup_entry(CPUHP_ONLINE);  	/* NOTREACHED */  	panic("smp_callin() AAAAaaaaahhhh....\n"); diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c index 051c8b90231..f517e08e7f0 100644 --- a/arch/parisc/kernel/sys_parisc32.c +++ b/arch/parisc/kernel/sys_parisc32.c @@ -60,47 +60,6 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,      return -ENOSYS;  } -/* Note: it is necessary to treat out_fd and in_fd as unsigned ints, with the - * corresponding cast to a signed int to insure that the proper conversion - * (sign extension) between the register representation of a signed int (msr in - * 32-bit mode) and the register representation of a signed int (msr in 64-bit - * mode) is performed. - */ -asmlinkage long sys32_sendfile(u32 out_fd, u32 in_fd, -			       compat_off_t __user *offset, compat_size_t count) -{ -	return compat_sys_sendfile((int)out_fd, (int)in_fd, offset, count); -} - -asmlinkage long sys32_sendfile64(u32 out_fd, u32 in_fd, -				 compat_loff_t __user *offset, compat_size_t count) -{ -	return sys_sendfile64((int)out_fd, (int)in_fd, -				(loff_t __user *)offset, count); -} - -asmlinkage long sys32_semctl(int semid, int semnum, int cmd, union semun arg) -{ -        union semun u; -	 -        if (cmd == SETVAL) { -                /* Ugh.  arg is a union of int,ptr,ptr,ptr, so is 8 bytes. -                 * The int should be in the first 4, but our argument -                 * frobbing has left it in the last 4. -                 */ -                u.val = *((int *)&arg + 1); -                return sys_semctl (semid, semnum, cmd, u); -	} -	return sys_semctl (semid, semnum, cmd, arg); -} - -long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf, -			  size_t len) -{ -	return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low, -				  buf, len); -} -  asmlinkage long compat_sys_fanotify_mark(int fan_fd, int flags, u32 mask_hi,  					 u32 mask_lo, int fd,  					 const char __user *pathname) diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index f57dc137b8d..0c9107285e6 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S @@ -198,7 +198,7 @@  	ENTRY_SAME(madvise)  	ENTRY_SAME(clone_wrapper)	/* 120 */  	ENTRY_SAME(setdomainname) -	ENTRY_DIFF(sendfile) +	ENTRY_COMP(sendfile)  	/* struct sockaddr... */  	ENTRY_SAME(recvfrom)  	/* struct timex contains longs */ @@ -282,7 +282,7 @@  	ENTRY_COMP(recvmsg)  	ENTRY_SAME(semop)		/* 185 */  	ENTRY_SAME(semget) -	ENTRY_DIFF(semctl) +	ENTRY_COMP(semctl)  	ENTRY_COMP(msgsnd)  	ENTRY_COMP(msgrcv)  	ENTRY_SAME(msgget)		/* 190 */ @@ -304,7 +304,7 @@  	ENTRY_SAME(gettid)  	ENTRY_OURS(readahead)  	ENTRY_SAME(tkill) -	ENTRY_DIFF(sendfile64) +	ENTRY_COMP(sendfile64)  	ENTRY_COMP(futex)		/* 210 */  	ENTRY_COMP(sched_setaffinity)  	ENTRY_COMP(sched_getaffinity) @@ -318,7 +318,7 @@  	ENTRY_SAME(alloc_hugepages)	/* 220 */  	ENTRY_SAME(free_hugepages)  	ENTRY_SAME(exit_group) -	ENTRY_DIFF(lookup_dcookie) +	ENTRY_COMP(lookup_dcookie)  	ENTRY_SAME(epoll_create)  	ENTRY_SAME(epoll_ctl)		/* 225 */  	ENTRY_SAME(epoll_wait) diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index aeb8f8f2c07..f702bff0bed 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c @@ -126,6 +126,8 @@ void show_regs(struct pt_regs *regs)  	user = user_mode(regs);  	level = user ? KERN_DEBUG : KERN_CRIT; +	show_regs_print_info(level); +  	print_gr(level, regs);  	for (i = 0; i < 8; i += 4) @@ -158,14 +160,6 @@ void show_regs(struct pt_regs *regs)  	}  } - -void dump_stack(void) -{ -	show_stack(NULL, NULL); -} - -EXPORT_SYMBOL(dump_stack); -  static void do_show_stack(struct unwind_frame_info *info)  {  	int i = 1;  |