config IOMMU_HELPER
        def_bool (CALGARY_IOMMU || GART_IOMMU || SWIOTLB)
+config MAXSMP
+       bool "Configure Maximum number of SMP Processors and NUMA Nodes"
+       depends on X86_64 && SMP
+       default n
+       help
+         Configure maximum number of CPUS and NUMA Nodes for this architecture.
+         If unsure, say N.
 
+if MAXSMP
 config NR_CPUS
-       int "Maximum number of CPUs (2-255)"
-       range 2 255
+       int
+       default "4096"
+endif
+
+if !MAXSMP
+config NR_CPUS
+       int "Maximum number of CPUs (2-4096)"
+       range 2 4096
        depends on SMP
        default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000
        default "8"
        help
          This allows you to specify the maximum number of CPUs which this
-         kernel will support.  The maximum supported value is 255 and the
+         kernel will support.  The maximum supported value is 4096 and the
          minimum value which makes sense is 2.
 
          This is purely to save memory - each supported CPU adds
          approximately eight kilobytes to the kernel image.
+endif
 
 config SCHED_SMT
        bool "SMT (Hyperthreading) scheduler support"
          into virtual nodes when booted with "numa=fake=N", where N is the
          number of nodes. This is only useful for debugging.
 
+if MAXSMP
+
+config NODES_SHIFT
+       int
+       default "9"
+endif
+
+if !MAXSMP
 config NODES_SHIFT
-       int "Max num nodes shift(1-9)"
-       range 1 9  if X86_64
+       int "Maximum NUMA Nodes (as a power of 2)"
+       range 1 9   if X86_64
        default "6" if X86_64
        default "4" if X86_NUMAQ
        default "3"
        depends on NEED_MULTIPLE_NODES
+       help
+         Specify the maximum number of NUMA Nodes available on the target
+         system.  Increases memory reserved to accomodate various tables.
+endif
 
 config HAVE_ARCH_BOOTMEM_NODE
        def_bool y