ARM: SMP: move CPU number sanity checks to smp_init_cpus()
Ensure that the number of CPUs is sanity checked before setting the number of possible CPUs. This avoids any chance of overflowing the cpu_possible bitmap. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
28e18293cf
commit
bbc3d14e9a
|
@ -120,16 +120,6 @@ void __init smp_init_cpus(void)
|
||||||
|
|
||||||
ncores = get_core_count();
|
ncores = get_core_count();
|
||||||
|
|
||||||
for (i = 0; i < ncores; i++)
|
|
||||||
set_cpu_possible(i, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init smp_prepare_cpus(unsigned int max_cpus)
|
|
||||||
{
|
|
||||||
unsigned int ncores = get_core_count();
|
|
||||||
unsigned int cpu = smp_processor_id();
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* sanity check */
|
/* sanity check */
|
||||||
if (ncores == 0) {
|
if (ncores == 0) {
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
|
@ -144,6 +134,17 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
ncores, NR_CPUS);
|
ncores, NR_CPUS);
|
||||||
ncores = NR_CPUS;
|
ncores = NR_CPUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < ncores; i++)
|
||||||
|
set_cpu_possible(i, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
|
{
|
||||||
|
unsigned int ncores = num_possible_cpus();
|
||||||
|
unsigned int cpu = smp_processor_id();
|
||||||
|
int i;
|
||||||
|
|
||||||
smp_store_cpu_info(cpu);
|
smp_store_cpu_info(cpu);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -160,16 +160,6 @@ void __init smp_init_cpus(void)
|
||||||
{
|
{
|
||||||
unsigned int i, ncores = get_core_count();
|
unsigned int i, ncores = get_core_count();
|
||||||
|
|
||||||
for (i = 0; i < ncores; i++)
|
|
||||||
set_cpu_possible(i, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init smp_prepare_cpus(unsigned int max_cpus)
|
|
||||||
{
|
|
||||||
unsigned int ncores = get_core_count();
|
|
||||||
unsigned int cpu = smp_processor_id();
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* sanity check */
|
/* sanity check */
|
||||||
if (ncores == 0) {
|
if (ncores == 0) {
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
|
@ -186,6 +176,16 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
ncores = NR_CPUS;
|
ncores = NR_CPUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < ncores; i++)
|
||||||
|
set_cpu_possible(i, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
|
{
|
||||||
|
unsigned int ncores = num_possible_cpus();
|
||||||
|
unsigned int cpu = smp_processor_id();
|
||||||
|
int i;
|
||||||
|
|
||||||
smp_store_cpu_info(cpu);
|
smp_store_cpu_info(cpu);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -128,16 +128,6 @@ void __init smp_init_cpus(void)
|
||||||
{
|
{
|
||||||
unsigned int i, ncores = get_core_count();
|
unsigned int i, ncores = get_core_count();
|
||||||
|
|
||||||
for (i = 0; i < ncores; i++)
|
|
||||||
set_cpu_possible(i, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init smp_prepare_cpus(unsigned int max_cpus)
|
|
||||||
{
|
|
||||||
unsigned int ncores = get_core_count();
|
|
||||||
unsigned int cpu = smp_processor_id();
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* sanity check */
|
/* sanity check */
|
||||||
if (ncores == 0) {
|
if (ncores == 0) {
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
|
@ -145,14 +135,24 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
ncores = 1;
|
ncores = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ncores > num_possible_cpus()) {
|
if (ncores > NR_CPUS) {
|
||||||
printk(KERN_WARNING
|
printk(KERN_WARNING
|
||||||
"U8500: no. of cores (%d) greater than configured "
|
"U8500: no. of cores (%d) greater than configured "
|
||||||
"maximum of %d - clipping\n",
|
"maximum of %d - clipping\n",
|
||||||
ncores, num_possible_cpus());
|
ncores, NR_CPUS);
|
||||||
ncores = num_possible_cpus();
|
ncores = NR_CPUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < ncores; i++)
|
||||||
|
set_cpu_possible(i, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
|
{
|
||||||
|
unsigned int ncores = num_possible_cpus();
|
||||||
|
unsigned int cpu = smp_processor_id();
|
||||||
|
int i;
|
||||||
|
|
||||||
smp_store_cpu_info(cpu);
|
smp_store_cpu_info(cpu);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue