i386/x86_64 mpparse.c: kill maxcpus
PATCH 1/1 i386/x86_64 mpparse.c: kill maxcpus
Do we really need a global variable that does only hold the value of NR_CPUS?
---
arch/i386/kernel/mpparse.c | 7 +++---- arch/i386/mach-visws/mpparse.c | 6 ++---- arch/x86_64/kernel/mpparse.c | 7 +++---- 3 files changed, 8 insertions(+), 12 deletions(-)
arch/i386/kernel/mpparse.c renamed from arch/i386/kernel/mpparse.c.old +3 -4
@@ -37,7 +37,6 @@/* Have we found an MP table */ int smp_found_config; -unsigned int __initdata maxcpus =NR_CPUS ;/* * Various Linux-internal data structures created from the
@@ -189,9 +188,9 @@return ; } -if (num_processors >= maxcpus) { -printk (KERN_WARNING "WARNING: maxcpus limit of %i reached." -" Processor ignored.\n" , maxcpus); +if (num_processors >=NR_CPUS ) { +printk (KERN_WARNING "WARNING: NR_CPUS limit of %i reached." +" Processor ignored.\n" ,NR_CPUS );return ; } num_processors++;
arch/i386/mach-visws/mpparse.c renamed from arch/i386/mach-visws/mpparse.c.old +2 -4
@@ -28,8 +28,6 @@/* Bitmask of physically existing CPUs */ physid_mask_t phys_cpu_present_map; -unsigned int __initdata maxcpus =NR_CPUS ; -/* * The Visual Workstation is Intel MP compliant in the hardware * sense, but it doesn't have a BIOS(-configuration table).
@@ -90,8 +88,8 @@ ncpus =CO_CPU_MAX ; } -if (ncpus > maxcpus) - ncpus = maxcpus; +if (ncpus >NR_CPUS ) + ncpus =NR_CPUS ; smp_found_config =1 ;while (ncpus--)
arch/x86_64/kernel/mpparse.c renamed from arch/x86_64/kernel/mpparse.c.old +3 -4
@@ -33,7 +33,6 @@/* Have we found an MP table */ int smp_found_config; -unsigned int __initdata maxcpus =NR_CPUS ;int acpi_found_madt;
@@ -126,9 +125,9 @@ " Processor ignored.\n", NR_CPUS);return ; } -if (num_processors >= maxcpus) { -printk (KERN_WARNING "WARNING: maxcpus limit of %i reached." -" Processor ignored.\n" , maxcpus); +if (num_processors >=NR_CPUS ) { +printk (KERN_WARNING "WARNING: NR_CPUS limit of %i reached." +" Processor ignored.\n" ,NR_CPUS );return ; }
Quoted 2 lines · Adrian Bunk
Do we really need a global variable that does only hold the value of
NR_CPUS?
Yes.
NR_CPUS = compile time
maxcpus = boot command line at runtime.
Dave
Quoted 8 lines · Dave Jones
Quoted 2 lines · Adrian Bunk
Do we really need a global variable that does only hold the value of
NR_CPUS?Yes.
NR_CPUS= compile time
maxcpus = boot command line at runtime.
If this is how is was expected to work - it isn't exactly what is currently implemented.
The function maxcpus in init/main.c sets a static variable max_cpus - not the global variable maxcpus in the mpparse.c files.
How should it be?
Should max_cpus in init/main.c become global and replace the maxcpus from the mpparse.c files?
Quoted 1 line
Dave
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedQuoted 5 lines · Adrian Bunk
Quoted 4 lines · Dave Jones
Quoted 2 lines · Adrian Bunk
Do we really need a global variable that does only hold the value of
NR_CPUS?
Quoted 7 lines
Quoted 4 lines
Yes.
NR_CPUS= compile time
maxcpus = boot command line at runtime.If this is how is was expected to work - it isn't exactly what is currently implemented.
It's ugly, as its setting the same thing in two different places, but I don't see any obvious reason why it won't work.
Quoted 2 lines
The function maxcpus in
init/main.csets a static variablemax_cpus- not the global variable maxcpus in thempparse.cfiles.
Both variables are used differently. The arch specific var is only used for HT descrimination. The init/main.c one is used for smp bringup.
Quoted 4 lines
How should it be?
Should
max_cpusininit/main.cbecome global and replace the maxcpus from thempparse.cfiles?
I'd just leave it as it is, as it seems to be working right now.
Dave
Quoted 11 lines · Dave Jones
Quoted 10 lines · Adrian Bunk
Quoted 8 lines · Dave Jones
Quoted 2 lines · Adrian Bunk
Do we really need a global variable that does only hold the value of
NR_CPUS?Yes.
NR_CPUS= compile time
maxcpus = boot command line at runtime.
Quoted 6 lines
Quoted 2 lines
If this is how is was expected to work - it isn't exactly what is currently implemented.
It's ugly, as its setting the same thing in two different places, but I don't see any obvious reason why it won't work.
...
I might be too dumb, but where are the mpparse.c maxcpus variables ever set to any value different from NR_CPUS?
Quoted 1 line
Dave
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedQuoted 15 lines · Adrian Bunk
Quoted 14 lines · Dave Jones
Quoted 12 lines · Adrian Bunk
Quoted 8 lines · Dave Jones
Quoted 2 lines · Adrian Bunk
Do we really need a global variable that does only hold the value of
NR_CPUS?Yes.
NR_CPUS= compile time
maxcpus = boot command line at runtime.If this is how is was expected to work - it isn't exactly what is currently implemented.
Quoted 6 lines
Quoted 3 lines
It's ugly, as its setting the same thing in two different places, but I don't see any obvious reason why it won't work.
...I might be too dumb, but where are the
mpparse.cmaxcpus variables ever set to any value different fromNR_CPUS?
arch/x86_64/kernel/setup.c:parse_cmdline_early()
...
else if (!memcmp(from, "maxcpus=", 8)) {
extern unsigned int maxcpus;
maxcpus = simple_strtoul(from + 8, NULL, 0);
}
...
DaveQuoted 25 lines · Dave Jones
Quoted 15 lines · Adrian Bunk
Quoted 14 lines · Dave Jones
Quoted 12 lines · Adrian Bunk
Quoted 8 lines · Dave Jones
Quoted 2 lines · Adrian Bunk
Do we really need a global variable that does only hold the value of
NR_CPUS?Yes.
NR_CPUS= compile time
maxcpus = boot command line at runtime.If this is how is was expected to work - it isn't exactly what is currently implemented.
Quoted 6 lines
Quoted 3 lines
It's ugly, as its setting the same thing in two different places, but I don't see any obvious reason why it won't work.
...I might be too dumb, but where are the
mpparse.cmaxcpus variables ever set to any value different fromNR_CPUS?arch/x86_64/kernel/setup.c:parse_cmdline_early()
Quoted 7 lines
...
else if (!memcmp(from, "maxcpus=", 8)) {
extern unsigned int maxcpus;
maxcpus = simple_strtoul(from + 8, NULL, 0);
}
...Ah, thanks.
I didn't see this extern declaration.
(and my test compiles were with SMP=n...)
Quoted 1 line
Dave
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed