Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 547598d3 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64]: Adjust kernel PC validation test in fault handler.
  [SPARC64]: Loosen checks in exception table handling.
  [SPARC64]: Fix section mismatch from kernel_map_range
  [SPARC64]: Fix section mismatchs from dr_cpu_data
  [SPARC]: Fix build in arch/sparc/kernel/led.c
parents 5ad58728 be71716e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3,6 +3,9 @@
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/jiffies.h>
#include <linux/timer.h>
#include <linux/uaccess.h>

#include <asm/auxio.h>

+7 −7
Original line number Diff line number Diff line
@@ -525,7 +525,7 @@ static void dr_cpu_mark(struct ds_data *resp, int cpu, int ncpus,
	}
}

static int dr_cpu_configure(struct ds_info *dp,
static int __cpuinit dr_cpu_configure(struct ds_info *dp,
				      struct ds_cap_state *cp,
				      u64 req_num,
				      cpumask_t *mask)
@@ -623,7 +623,7 @@ static int dr_cpu_unconfigure(struct ds_info *dp,
	return 0;
}

static void dr_cpu_data(struct ds_info *dp,
static void __cpuinit dr_cpu_data(struct ds_info *dp,
				  struct ds_cap_state *cp,
				  void *buf, int len)
{
+1 −1
Original line number Diff line number Diff line
@@ -758,7 +758,7 @@ static void __devinit get_mondo_data(struct mdesc_handle *hp, u64 mp,
	get_one_mondo_bits(val, &tb->nonresum_qmask, 2);
}

void __devinit mdesc_fill_in_cpu_data(cpumask_t mask)
void __cpuinit mdesc_fill_in_cpu_data(cpumask_t mask)
{
	struct mdesc_handle *hp = mdesc_grab();
	u64 mp;
+3 −11
Original line number Diff line number Diff line
@@ -244,16 +244,8 @@ static void do_kernel_fault(struct pt_regs *regs, int si_code, int fault_code,
	if (regs->tstate & TSTATE_PRIV) {
		const struct exception_table_entry *entry;

		if (asi == ASI_P && (insn & 0xc0800000) == 0xc0800000) {
			if (insn & 0x2000)
				asi = (regs->tstate >> 24);
			else
				asi = (insn >> 5);
		}
	
		/* Look in asi.h: All _S asis have LS bit set */
		if ((asi & 0x1) &&
		    (entry = search_exception_tables(regs->tpc))) {
		entry = search_exception_tables(regs->tpc);
		if (entry) {
			regs->tpc = entry->fixup;
			regs->tnpc = regs->tpc + 4;
			return;
@@ -294,7 +286,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
		unsigned long tpc = regs->tpc;

		/* Sanity check the PC. */
		if ((tpc >= KERNBASE && tpc < (unsigned long) _etext) ||
		if ((tpc >= KERNBASE && tpc < (unsigned long) __init_end) ||
		    (tpc >= MODULES_VADDR && tpc < MODULES_END)) {
			/* Valid, no problems... */
		} else {
+2 −1
Original line number Diff line number Diff line
@@ -1010,7 +1010,8 @@ static struct linux_prom64_registers pall[MAX_BANKS] __initdata;
static int pall_ents __initdata;

#ifdef CONFIG_DEBUG_PAGEALLOC
static unsigned long kernel_map_range(unsigned long pstart, unsigned long pend, pgprot_t prot)
static unsigned long __ref kernel_map_range(unsigned long pstart,
					    unsigned long pend, pgprot_t prot)
{
	unsigned long vstart = PAGE_OFFSET + pstart;
	unsigned long vend = PAGE_OFFSET + pend;