diff options
Diffstat (limited to 'arch/openrisc/kernel/smp.c')
| -rw-r--r-- | arch/openrisc/kernel/smp.c | 12 | 
1 files changed, 5 insertions, 7 deletions
diff --git a/arch/openrisc/kernel/smp.c b/arch/openrisc/kernel/smp.c index 415e209732a3..27041db2c8b0 100644 --- a/arch/openrisc/kernel/smp.c +++ b/arch/openrisc/kernel/smp.c @@ -65,11 +65,7 @@ void __init smp_init_cpus(void)  	u32 cpu_id;  	for_each_of_cpu_node(cpu) { -		if (of_property_read_u32(cpu, "reg", &cpu_id)) { -			pr_warn("%s missing reg property", cpu->full_name); -			continue; -		} - +		cpu_id = of_get_cpu_hwid(cpu, 0);  		if (cpu_id < NR_CPUS)  			set_cpu_possible(cpu_id, true);  	} @@ -272,7 +268,7 @@ static inline void ipi_flush_tlb_range(void *info)  	local_flush_tlb_range(NULL, fd->addr1, fd->addr2);  } -static void smp_flush_tlb_range(struct cpumask *cmask, unsigned long start, +static void smp_flush_tlb_range(const struct cpumask *cmask, unsigned long start,  				unsigned long end)  {  	unsigned int cpuid; @@ -320,7 +316,9 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)  void flush_tlb_range(struct vm_area_struct *vma,  		     unsigned long start, unsigned long end)  { -	smp_flush_tlb_range(mm_cpumask(vma->vm_mm), start, end); +	const struct cpumask *cmask = vma ? mm_cpumask(vma->vm_mm) +					  : cpu_online_mask; +	smp_flush_tlb_range(cmask, start, end);  }  /* Instruction cache invalidate - performed on each cpu */  |