Yes, you're right
I was being overly cautious.
I did check the kernel source before I replied which is why I said 64bit Linux can support
at least 64 CPUS! since that was the number I was able to confirm during my initial search although I didn't find it in the code.
While it is true the kernel can support 256 CPUs, most architectures cannot.
The kernel can be extended while most architectures are often limited by hardware design and physical restrictions.
In the source they apparently set MAX_CPUS to 32 for PPC and 16 for voyager.
include/asm-ppc/residual.h
#define MAX_CPUS 32 /* These should be set to the maximum */#define MAX_MEMS 64 /* number possible for this system. */#define MAX_DEVICES 256 /* Changing these will change the */#define AVE_PNP_SIZE 32 /* structure, hence the version of */#define MAX_MEM_SEGS 64 /* this header file. */
include/asm-i386/voyager.h
/* The following structures and definitions are for the Kernel/SUS
* interface these are needed to find out how SUS initialised any Quad
* boards in the system */
#define NUMBER_OF_MC_BUSSES 2
#define SLOTS_PER_MC_BUS 8
#define MAX_CPUS 16 /* 16 way CPU system */
#define MAX_PROCESSOR_BOARDS 4 /* 4 processor slot system */
#define MAX_CACHE_LEVELS 4 /* # of cache levels supported */
#define MAX_SHARED_CPUS 4 /* # of CPUs that can share a LARC */
#define NUMBER_OF_POS_REGS 8
For MIPS they set it to 128 and 256.
include/asm-mips/sn/sn0/arch.h:#define MAXCPUS 128
include/asm-mips/sn/sn0/arch.h:#define MAXCPUS 256
The maxcpus bootparam allows you to specify the number of CPUs at boot time however I do not believe you can override the #define.