diff options
Diffstat (limited to 'arch/ia64/kernel')
| -rw-r--r-- | arch/ia64/kernel/crash.c | 11 | ||||
| -rw-r--r-- | arch/ia64/kernel/entry.S | 1 | ||||
| -rw-r--r-- | arch/ia64/kernel/mca.c | 104 | ||||
| -rw-r--r-- | arch/ia64/kernel/pci-swiotlb.c | 4 | ||||
| -rw-r--r-- | arch/ia64/kernel/perfmon.c | 14 | ||||
| -rw-r--r-- | arch/ia64/kernel/unaligned.c | 6 | 
6 files changed, 70 insertions, 70 deletions
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c index 6631a9dfafd..b942f4032d7 100644 --- a/arch/ia64/kernel/crash.c +++ b/arch/ia64/kernel/crash.c @@ -239,32 +239,29 @@ kdump_init_notifier(struct notifier_block *self, unsigned long val, void *data)  #ifdef CONFIG_SYSCTL  static ctl_table kdump_ctl_table[] = {  	{ -		.ctl_name = CTL_UNNUMBERED,  		.procname = "kdump_on_init",  		.data = &kdump_on_init,  		.maxlen = sizeof(int),  		.mode = 0644, -		.proc_handler = &proc_dointvec, +		.proc_handler = proc_dointvec,  	},  	{ -		.ctl_name = CTL_UNNUMBERED,  		.procname = "kdump_on_fatal_mca",  		.data = &kdump_on_fatal_mca,  		.maxlen = sizeof(int),  		.mode = 0644, -		.proc_handler = &proc_dointvec, +		.proc_handler = proc_dointvec,  	}, -	{ .ctl_name = 0 } +	{ }  };  static ctl_table sys_table[] = {  	{ -	  .ctl_name = CTL_KERN,  	  .procname = "kernel",  	  .mode = 0555,  	  .child = kdump_ctl_table,  	}, -	{ .ctl_name = 0 } +	{ }  };  #endif diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S index d0e7d37017b..d75b872ca4d 100644 --- a/arch/ia64/kernel/entry.S +++ b/arch/ia64/kernel/entry.S @@ -1806,6 +1806,7 @@ sys_call_table:  	data8 sys_preadv  	data8 sys_pwritev			// 1320  	data8 sys_rt_tgsigqueueinfo +	data8 sys_recvmmsg  	.org sys_call_table + 8*NR_syscalls	// guard against failures to increase NR_syscalls  #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */ diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index d2877a7bfe2..496ac7a9948 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c @@ -887,6 +887,60 @@ ia64_mca_modify_comm(const struct task_struct *previous_current)  	memcpy(current->comm, comm, sizeof(current->comm));  } +static void +finish_pt_regs(struct pt_regs *regs, const pal_min_state_area_t *ms, +		unsigned long *nat) +{ +	const u64 *bank; + +	/* If ipsr.ic then use pmsa_{iip,ipsr,ifs}, else use +	 * pmsa_{xip,xpsr,xfs} +	 */ +	if (ia64_psr(regs)->ic) { +		regs->cr_iip = ms->pmsa_iip; +		regs->cr_ipsr = ms->pmsa_ipsr; +		regs->cr_ifs = ms->pmsa_ifs; +	} else { +		regs->cr_iip = ms->pmsa_xip; +		regs->cr_ipsr = ms->pmsa_xpsr; +		regs->cr_ifs = ms->pmsa_xfs; +	} +	regs->pr = ms->pmsa_pr; +	regs->b0 = ms->pmsa_br0; +	regs->ar_rsc = ms->pmsa_rsc; +	copy_reg(&ms->pmsa_gr[1-1], ms->pmsa_nat_bits, ®s->r1, nat); +	copy_reg(&ms->pmsa_gr[2-1], ms->pmsa_nat_bits, ®s->r2, nat); +	copy_reg(&ms->pmsa_gr[3-1], ms->pmsa_nat_bits, ®s->r3, nat); +	copy_reg(&ms->pmsa_gr[8-1], ms->pmsa_nat_bits, ®s->r8, nat); +	copy_reg(&ms->pmsa_gr[9-1], ms->pmsa_nat_bits, ®s->r9, nat); +	copy_reg(&ms->pmsa_gr[10-1], ms->pmsa_nat_bits, ®s->r10, nat); +	copy_reg(&ms->pmsa_gr[11-1], ms->pmsa_nat_bits, ®s->r11, nat); +	copy_reg(&ms->pmsa_gr[12-1], ms->pmsa_nat_bits, ®s->r12, nat); +	copy_reg(&ms->pmsa_gr[13-1], ms->pmsa_nat_bits, ®s->r13, nat); +	copy_reg(&ms->pmsa_gr[14-1], ms->pmsa_nat_bits, ®s->r14, nat); +	copy_reg(&ms->pmsa_gr[15-1], ms->pmsa_nat_bits, ®s->r15, nat); +	if (ia64_psr(regs)->bn) +		bank = ms->pmsa_bank1_gr; +	else +		bank = ms->pmsa_bank0_gr; +	copy_reg(&bank[16-16], ms->pmsa_nat_bits, ®s->r16, nat); +	copy_reg(&bank[17-16], ms->pmsa_nat_bits, ®s->r17, nat); +	copy_reg(&bank[18-16], ms->pmsa_nat_bits, ®s->r18, nat); +	copy_reg(&bank[19-16], ms->pmsa_nat_bits, ®s->r19, nat); +	copy_reg(&bank[20-16], ms->pmsa_nat_bits, ®s->r20, nat); +	copy_reg(&bank[21-16], ms->pmsa_nat_bits, ®s->r21, nat); +	copy_reg(&bank[22-16], ms->pmsa_nat_bits, ®s->r22, nat); +	copy_reg(&bank[23-16], ms->pmsa_nat_bits, ®s->r23, nat); +	copy_reg(&bank[24-16], ms->pmsa_nat_bits, ®s->r24, nat); +	copy_reg(&bank[25-16], ms->pmsa_nat_bits, ®s->r25, nat); +	copy_reg(&bank[26-16], ms->pmsa_nat_bits, ®s->r26, nat); +	copy_reg(&bank[27-16], ms->pmsa_nat_bits, ®s->r27, nat); +	copy_reg(&bank[28-16], ms->pmsa_nat_bits, ®s->r28, nat); +	copy_reg(&bank[29-16], ms->pmsa_nat_bits, ®s->r29, nat); +	copy_reg(&bank[30-16], ms->pmsa_nat_bits, ®s->r30, nat); +	copy_reg(&bank[31-16], ms->pmsa_nat_bits, ®s->r31, nat); +} +  /* On entry to this routine, we are running on the per cpu stack, see   * mca_asm.h.  The original stack has not been touched by this event.  Some of   * the original stack's registers will be in the RBS on this stack.  This stack @@ -921,7 +975,6 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,  	u64 r12 = ms->pmsa_gr[12-1], r13 = ms->pmsa_gr[13-1];  	u64 ar_bspstore = regs->ar_bspstore;  	u64 ar_bsp = regs->ar_bspstore + (loadrs >> 16); -	const u64 *bank;  	const char *msg;  	int cpu = smp_processor_id(); @@ -1024,54 +1077,9 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,  	p = (char *)r12 - sizeof(*regs);  	old_regs = (struct pt_regs *)p;  	memcpy(old_regs, regs, sizeof(*regs)); -	/* If ipsr.ic then use pmsa_{iip,ipsr,ifs}, else use -	 * pmsa_{xip,xpsr,xfs} -	 */ -	if (ia64_psr(regs)->ic) { -		old_regs->cr_iip = ms->pmsa_iip; -		old_regs->cr_ipsr = ms->pmsa_ipsr; -		old_regs->cr_ifs = ms->pmsa_ifs; -	} else { -		old_regs->cr_iip = ms->pmsa_xip; -		old_regs->cr_ipsr = ms->pmsa_xpsr; -		old_regs->cr_ifs = ms->pmsa_xfs; -	} -	old_regs->pr = ms->pmsa_pr; -	old_regs->b0 = ms->pmsa_br0;  	old_regs->loadrs = loadrs; -	old_regs->ar_rsc = ms->pmsa_rsc;  	old_unat = old_regs->ar_unat; -	copy_reg(&ms->pmsa_gr[1-1], ms->pmsa_nat_bits, &old_regs->r1, &old_unat); -	copy_reg(&ms->pmsa_gr[2-1], ms->pmsa_nat_bits, &old_regs->r2, &old_unat); -	copy_reg(&ms->pmsa_gr[3-1], ms->pmsa_nat_bits, &old_regs->r3, &old_unat); -	copy_reg(&ms->pmsa_gr[8-1], ms->pmsa_nat_bits, &old_regs->r8, &old_unat); -	copy_reg(&ms->pmsa_gr[9-1], ms->pmsa_nat_bits, &old_regs->r9, &old_unat); -	copy_reg(&ms->pmsa_gr[10-1], ms->pmsa_nat_bits, &old_regs->r10, &old_unat); -	copy_reg(&ms->pmsa_gr[11-1], ms->pmsa_nat_bits, &old_regs->r11, &old_unat); -	copy_reg(&ms->pmsa_gr[12-1], ms->pmsa_nat_bits, &old_regs->r12, &old_unat); -	copy_reg(&ms->pmsa_gr[13-1], ms->pmsa_nat_bits, &old_regs->r13, &old_unat); -	copy_reg(&ms->pmsa_gr[14-1], ms->pmsa_nat_bits, &old_regs->r14, &old_unat); -	copy_reg(&ms->pmsa_gr[15-1], ms->pmsa_nat_bits, &old_regs->r15, &old_unat); -	if (ia64_psr(old_regs)->bn) -		bank = ms->pmsa_bank1_gr; -	else -		bank = ms->pmsa_bank0_gr; -	copy_reg(&bank[16-16], ms->pmsa_nat_bits, &old_regs->r16, &old_unat); -	copy_reg(&bank[17-16], ms->pmsa_nat_bits, &old_regs->r17, &old_unat); -	copy_reg(&bank[18-16], ms->pmsa_nat_bits, &old_regs->r18, &old_unat); -	copy_reg(&bank[19-16], ms->pmsa_nat_bits, &old_regs->r19, &old_unat); -	copy_reg(&bank[20-16], ms->pmsa_nat_bits, &old_regs->r20, &old_unat); -	copy_reg(&bank[21-16], ms->pmsa_nat_bits, &old_regs->r21, &old_unat); -	copy_reg(&bank[22-16], ms->pmsa_nat_bits, &old_regs->r22, &old_unat); -	copy_reg(&bank[23-16], ms->pmsa_nat_bits, &old_regs->r23, &old_unat); -	copy_reg(&bank[24-16], ms->pmsa_nat_bits, &old_regs->r24, &old_unat); -	copy_reg(&bank[25-16], ms->pmsa_nat_bits, &old_regs->r25, &old_unat); -	copy_reg(&bank[26-16], ms->pmsa_nat_bits, &old_regs->r26, &old_unat); -	copy_reg(&bank[27-16], ms->pmsa_nat_bits, &old_regs->r27, &old_unat); -	copy_reg(&bank[28-16], ms->pmsa_nat_bits, &old_regs->r28, &old_unat); -	copy_reg(&bank[29-16], ms->pmsa_nat_bits, &old_regs->r29, &old_unat); -	copy_reg(&bank[30-16], ms->pmsa_nat_bits, &old_regs->r30, &old_unat); -	copy_reg(&bank[31-16], ms->pmsa_nat_bits, &old_regs->r31, &old_unat); +	finish_pt_regs(old_regs, ms, &old_unat);  	/* Next stack a struct switch_stack.  mca_asm.S built a partial  	 * switch_stack, copy it and fill in the blanks using pt_regs and @@ -1141,6 +1149,8 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,  no_mod:  	mprintk(KERN_INFO "cpu %d, %s %s, original stack not modified\n",  			smp_processor_id(), type, msg); +	old_unat = regs->ar_unat; +	finish_pt_regs(regs, ms, &old_unat);  	return previous_current;  } diff --git a/arch/ia64/kernel/pci-swiotlb.c b/arch/ia64/kernel/pci-swiotlb.c index 285aae8431c..53292abf846 100644 --- a/arch/ia64/kernel/pci-swiotlb.c +++ b/arch/ia64/kernel/pci-swiotlb.c @@ -41,7 +41,7 @@ struct dma_map_ops swiotlb_dma_ops = {  void __init swiotlb_dma_init(void)  {  	dma_ops = &swiotlb_dma_ops; -	swiotlb_init(); +	swiotlb_init(1);  }  void __init pci_swiotlb_init(void) @@ -51,7 +51,7 @@ void __init pci_swiotlb_init(void)  		swiotlb = 1;  		printk(KERN_INFO "PCI-DMA: Re-initialize machine vector.\n");  		machvec_init("dig"); -		swiotlb_init(); +		swiotlb_init(1);  		dma_ops = &swiotlb_dma_ops;  #else  		panic("Unable to find Intel IOMMU"); diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index f1782705b1f..402698b6689 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c @@ -522,42 +522,37 @@ EXPORT_SYMBOL(pfm_sysctl);  static ctl_table pfm_ctl_table[]={  	{ -		.ctl_name	= CTL_UNNUMBERED,  		.procname	= "debug",  		.data		= &pfm_sysctl.debug,  		.maxlen		= sizeof(int),  		.mode		= 0666, -		.proc_handler	= &proc_dointvec, +		.proc_handler	= proc_dointvec,  	},  	{ -		.ctl_name	= CTL_UNNUMBERED,  		.procname	= "debug_ovfl",  		.data		= &pfm_sysctl.debug_ovfl,  		.maxlen		= sizeof(int),  		.mode		= 0666, -		.proc_handler	= &proc_dointvec, +		.proc_handler	= proc_dointvec,  	},  	{ -		.ctl_name	= CTL_UNNUMBERED,  		.procname	= "fastctxsw",  		.data		= &pfm_sysctl.fastctxsw,  		.maxlen		= sizeof(int),  		.mode		= 0600, -		.proc_handler	=  &proc_dointvec, +		.proc_handler	= proc_dointvec,  	},  	{ -		.ctl_name	= CTL_UNNUMBERED,  		.procname	= "expert_mode",  		.data		= &pfm_sysctl.expert_mode,  		.maxlen		= sizeof(int),  		.mode		= 0600, -		.proc_handler	= &proc_dointvec, +		.proc_handler	= proc_dointvec,  	},  	{}  };  static ctl_table pfm_sysctl_dir[] = {  	{ -		.ctl_name	= CTL_UNNUMBERED,  		.procname	= "perfmon",  		.mode		= 0555,  		.child		= pfm_ctl_table, @@ -566,7 +561,6 @@ static ctl_table pfm_sysctl_dir[] = {  };  static ctl_table pfm_sysctl_root[] = {  	{ -		.ctl_name	= CTL_KERN,  		.procname	= "kernel",  		.mode		= 0555,  		.child		= pfm_sysctl_dir, diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c index 6db08599ebb..776dd40397e 100644 --- a/arch/ia64/kernel/unaligned.c +++ b/arch/ia64/kernel/unaligned.c @@ -60,7 +60,6 @@ dump (const char *str, void *vp, size_t len)   */  int no_unaligned_warning;  int unaligned_dump_stack; -static int noprint_warning;  /*   * For M-unit: @@ -1357,9 +1356,8 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)  			/* watch for command names containing %s */  			printk(KERN_WARNING "%s", buf);  		} else { -			if (no_unaligned_warning && !noprint_warning) { -				noprint_warning = 1; -				printk(KERN_WARNING "%s(%d) encountered an " +			if (no_unaligned_warning) { +				printk_once(KERN_WARNING "%s(%d) encountered an "  				       "unaligned exception which required\n"  				       "kernel assistance, which degrades "  				       "the performance of the application.\n"  |