0001 # SPDX-License-Identifier: GPL-2.0-only
0002 config 64BIT
0003 bool "64-bit kernel" if "$(ARCH)" = "sparc"
0004 default "$(ARCH)" = "sparc64"
0005 help
0006 SPARC is a family of RISC microprocessors designed and marketed by
0007 Sun Microsystems, incorporated. They are very widely found in Sun
0008 workstations and clones.
0009
0010 Say yes to build a 64-bit kernel - formerly known as sparc64
0011 Say no to build a 32-bit kernel - formerly known as sparc
0012
0013 config SPARC
0014 bool
0015 default y
0016 select ARCH_MIGHT_HAVE_PC_PARPORT if SPARC64 && PCI
0017 select ARCH_MIGHT_HAVE_PC_SERIO
0018 select DMA_OPS
0019 select OF
0020 select OF_PROMTREE
0021 select HAVE_ASM_MODVERSIONS
0022 select HAVE_ARCH_KGDB if !SMP || SPARC64
0023 select HAVE_ARCH_TRACEHOOK
0024 select HAVE_ARCH_SECCOMP if SPARC64
0025 select HAVE_EXIT_THREAD
0026 select HAVE_PCI
0027 select SYSCTL_EXCEPTION_TRACE
0028 select RTC_CLASS
0029 select RTC_DRV_M48T59
0030 select RTC_SYSTOHC
0031 select HAVE_ARCH_JUMP_LABEL if SPARC64
0032 select GENERIC_IRQ_SHOW
0033 select ARCH_WANT_IPC_PARSE_VERSION
0034 select GENERIC_PCI_IOMAP
0035 select HAVE_NMI_WATCHDOG if SPARC64
0036 select HAVE_CBPF_JIT if SPARC32
0037 select HAVE_EBPF_JIT if SPARC64
0038 select HAVE_DEBUG_BUGVERBOSE
0039 select GENERIC_SMP_IDLE_THREAD
0040 select MODULES_USE_ELF_RELA
0041 select PCI_SYSCALL if PCI
0042 select PCI_MSI_ARCH_FALLBACKS if PCI_MSI
0043 select ODD_RT_SIGACTION
0044 select OLD_SIGSUSPEND
0045 select CPU_NO_EFFICIENT_FFS
0046 select LOCKDEP_SMALL if LOCKDEP
0047 select NEED_DMA_MAP_STATE
0048 select NEED_SG_DMA_LENGTH
0049 select TRACE_IRQFLAGS_SUPPORT
0050
0051 config SPARC32
0052 def_bool !64BIT
0053 select ARCH_32BIT_OFF_T
0054 select ARCH_HAS_SYNC_DMA_FOR_CPU
0055 select CLZ_TAB
0056 select DMA_DIRECT_REMAP
0057 select GENERIC_ATOMIC64
0058 select HAVE_UID16
0059 select OLD_SIGACTION
0060 select ZONE_DMA
0061
0062 config SPARC64
0063 def_bool 64BIT
0064 select ALTERNATE_USER_ADDRESS_SPACE
0065 select HAVE_FUNCTION_TRACER
0066 select HAVE_FUNCTION_GRAPH_TRACER
0067 select HAVE_KRETPROBES
0068 select HAVE_KPROBES
0069 select MMU_GATHER_RCU_TABLE_FREE if SMP
0070 select MMU_GATHER_MERGE_VMAS
0071 select MMU_GATHER_NO_FLUSH_CACHE
0072 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
0073 select HAVE_DYNAMIC_FTRACE
0074 select HAVE_FTRACE_MCOUNT_RECORD
0075 select HAVE_SYSCALL_TRACEPOINTS
0076 select HAVE_CONTEXT_TRACKING_USER
0077 select HAVE_TIF_NOHZ
0078 select HAVE_DEBUG_KMEMLEAK
0079 select IOMMU_HELPER
0080 select SPARSE_IRQ
0081 select RTC_DRV_CMOS
0082 select RTC_DRV_BQ4802
0083 select RTC_DRV_SUN4V
0084 select RTC_DRV_STARFIRE
0085 select HAVE_PERF_EVENTS
0086 select PERF_USE_VMALLOC
0087 select ARCH_HAVE_NMI_SAFE_CMPXCHG
0088 select HAVE_C_RECORDMCOUNT
0089 select HAVE_ARCH_AUDITSYSCALL
0090 select ARCH_SUPPORTS_ATOMIC_RMW
0091 select ARCH_SUPPORTS_DEBUG_PAGEALLOC
0092 select HAVE_NMI
0093 select HAVE_REGS_AND_STACK_ACCESS_API
0094 select ARCH_USE_QUEUED_RWLOCKS
0095 select ARCH_USE_QUEUED_SPINLOCKS
0096 select GENERIC_TIME_VSYSCALL
0097 select ARCH_CLOCKSOURCE_DATA
0098 select ARCH_HAS_PTE_SPECIAL
0099 select PCI_DOMAINS if PCI
0100 select ARCH_HAS_GIGANTIC_PAGE
0101 select HAVE_SOFTIRQ_ON_OWN_STACK
0102 select HAVE_SETUP_PER_CPU_AREA
0103 select NEED_PER_CPU_EMBED_FIRST_CHUNK
0104 select NEED_PER_CPU_PAGE_FIRST_CHUNK
0105
0106 config ARCH_PROC_KCORE_TEXT
0107 def_bool y
0108
0109 config CPU_BIG_ENDIAN
0110 def_bool y
0111
0112 config ARCH_ATU
0113 bool
0114 default y if SPARC64
0115
0116 config STACKTRACE_SUPPORT
0117 bool
0118 default y if SPARC64
0119
0120 config LOCKDEP_SUPPORT
0121 bool
0122 default y if SPARC64
0123
0124 config ARCH_HIBERNATION_POSSIBLE
0125 def_bool y if SPARC64
0126
0127 config AUDIT_ARCH
0128 bool
0129 default y
0130
0131 config MMU
0132 bool
0133 default y
0134
0135 config HIGHMEM
0136 bool
0137 default y if SPARC32
0138 select KMAP_LOCAL
0139
0140 config GENERIC_ISA_DMA
0141 bool
0142 default y if SPARC32
0143
0144 config PGTABLE_LEVELS
0145 default 4 if 64BIT
0146 default 3
0147
0148 config ARCH_SUPPORTS_UPROBES
0149 def_bool y if SPARC64
0150
0151 menu "Processor type and features"
0152
0153 config SMP
0154 bool "Symmetric multi-processing support"
0155 help
0156 This enables support for systems with more than one CPU. If you have
0157 a system with only one CPU, say N. If you have a system with more
0158 than one CPU, say Y.
0159
0160 If you say N here, the kernel will run on uni- and multiprocessor
0161 machines, but will use only one CPU of a multiprocessor machine. If
0162 you say Y here, the kernel will run on many, but not all,
0163 uniprocessor machines. On a uniprocessor machine, the kernel
0164 will run faster if you say N here.
0165
0166 People using multiprocessor machines who say Y here should also say
0167 Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
0168 Management" code will be disabled if you say Y here.
0169
0170 See also <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO
0171 available at <https://www.tldp.org/docs.html#howto>.
0172
0173 If you don't know what to do here, say N.
0174
0175 config NR_CPUS
0176 int "Maximum number of CPUs"
0177 depends on SMP
0178 range 2 32 if SPARC32
0179 range 2 4096 if SPARC64
0180 default 32 if SPARC32
0181 default 4096 if SPARC64
0182
0183 source "kernel/Kconfig.hz"
0184
0185 config GENERIC_HWEIGHT
0186 bool
0187 default y
0188
0189 config GENERIC_CALIBRATE_DELAY
0190 bool
0191 default y
0192
0193 config ARCH_MAY_HAVE_PC_FDC
0194 bool
0195 default y
0196
0197 config EMULATED_CMPXCHG
0198 bool
0199 default y if SPARC32
0200 help
0201 Sparc32 does not have a CAS instruction like sparc64. cmpxchg()
0202 is emulated, and therefore it is not completely atomic.
0203
0204 # Makefile helpers
0205 config SPARC32_SMP
0206 bool
0207 default y
0208 depends on SPARC32 && SMP
0209
0210 config SPARC64_SMP
0211 bool
0212 default y
0213 depends on SPARC64 && SMP
0214
0215 config EARLYFB
0216 bool "Support for early boot text console"
0217 default y
0218 depends on SPARC64
0219 help
0220 Say Y here to enable a faster early framebuffer boot console.
0221
0222 config HOTPLUG_CPU
0223 bool "Support for hot-pluggable CPUs"
0224 depends on SPARC64 && SMP
0225 help
0226 Say Y here to experiment with turning CPUs off and on. CPUs
0227 can be controlled through /sys/devices/system/cpu/cpu#.
0228 Say N if you want to disable CPU hotplug.
0229
0230 if SPARC64
0231 source "drivers/cpufreq/Kconfig"
0232 endif
0233
0234 config US3_MC
0235 tristate "UltraSPARC-III Memory Controller driver"
0236 depends on SPARC64
0237 default y
0238 help
0239 This adds a driver for the UltraSPARC-III memory controller.
0240 Loading this driver allows exact mnemonic strings to be
0241 printed in the event of a memory error, so that the faulty DIMM
0242 on the motherboard can be matched to the error.
0243
0244 If in doubt, say Y, as this information can be very useful.
0245
0246 # Global things across all Sun machines.
0247 config GENERIC_LOCKBREAK
0248 bool
0249 default y
0250 depends on SPARC64 && SMP && PREEMPTION
0251
0252 config NUMA
0253 bool "NUMA support"
0254 depends on SPARC64 && SMP
0255
0256 config NODES_SHIFT
0257 int "Maximum NUMA Nodes (as a power of 2)"
0258 range 4 5 if SPARC64
0259 default "5"
0260 depends on NUMA
0261 help
0262 Specify the maximum number of NUMA Nodes available on the target
0263 system. Increases memory reserved to accommodate various tables.
0264
0265 config ARCH_SPARSEMEM_ENABLE
0266 def_bool y if SPARC64
0267 select SPARSEMEM_VMEMMAP_ENABLE
0268
0269 config ARCH_SPARSEMEM_DEFAULT
0270 def_bool y if SPARC64
0271
0272 config FORCE_MAX_ZONEORDER
0273 int "Maximum zone order"
0274 default "13"
0275 help
0276 The kernel memory allocator divides physically contiguous memory
0277 blocks into "zones", where each zone is a power of two number of
0278 pages. This option selects the largest power of two that the kernel
0279 keeps in the memory allocator. If you need to allocate very large
0280 blocks of physically contiguous memory, then you may need to
0281 increase this value.
0282
0283 This config option is actually maximum order plus one. For example,
0284 a value of 13 means that the largest free memory block is 2^12 pages.
0285
0286 if SPARC64
0287 source "kernel/power/Kconfig"
0288 endif
0289
0290 config SCHED_SMT
0291 bool "SMT (Hyperthreading) scheduler support"
0292 depends on SPARC64 && SMP
0293 default y
0294 help
0295 SMT scheduler support improves the CPU scheduler's decision making
0296 when dealing with SPARC cpus at a cost of slightly increased overhead
0297 in some places. If unsure say N here.
0298
0299 config SCHED_MC
0300 bool "Multi-core scheduler support"
0301 depends on SPARC64 && SMP
0302 default y
0303 help
0304 Multi-core scheduler support improves the CPU scheduler's decision
0305 making when dealing with multi-core CPU chips at a cost of slightly
0306 increased overhead in some places. If unsure say N here.
0307
0308 config CMDLINE_BOOL
0309 bool "Default bootloader kernel arguments"
0310 depends on SPARC64
0311
0312 config CMDLINE
0313 string "Initial kernel command string"
0314 depends on CMDLINE_BOOL
0315 default "console=ttyS0,9600 root=/dev/sda1"
0316 help
0317 Say Y here if you want to be able to pass default arguments to
0318 the kernel. This will be overridden by the bootloader, if you
0319 use one (such as SILO). This is most useful if you want to boot
0320 a kernel from TFTP, and want default options to be available
0321 with having them passed on the command line.
0322
0323 NOTE: This option WILL override the PROM bootargs setting!
0324
0325 config SUN_PM
0326 bool
0327 default y if SPARC32
0328 help
0329 Enable power management and CPU standby features on supported
0330 SPARC platforms.
0331
0332 config SPARC_LED
0333 tristate "Sun4m LED driver"
0334 depends on SPARC32
0335 help
0336 This driver toggles the front-panel LED on sun4m systems
0337 in a user-specifiable manner. Its state can be probed
0338 by reading /proc/led and its blinking mode can be changed
0339 via writes to /proc/led
0340
0341 config SERIAL_CONSOLE
0342 bool
0343 depends on SPARC32
0344 default y
0345 help
0346 If you say Y here, it will be possible to use a serial port as the
0347 system console (the system console is the device which receives all
0348 kernel messages and warnings and which allows logins in single user
0349 mode). This could be useful if some terminal or printer is connected
0350 to that serial port.
0351
0352 Even if you say Y here, the currently visible virtual console
0353 (/dev/tty0) will still be used as the system console by default, but
0354 you can alter that using a kernel command line option such as
0355 "console=ttyS1". (Try "man bootparam" or see the documentation of
0356 your boot loader (silo) about how to pass options to the kernel at
0357 boot time.)
0358
0359 If you don't have a graphics card installed and you say Y here, the
0360 kernel will automatically use the first serial line, /dev/ttyS0, as
0361 system console.
0362
0363 If unsure, say N.
0364
0365 config SPARC_LEON
0366 bool "Sparc Leon processor family"
0367 depends on SPARC32
0368 select USB_EHCI_BIG_ENDIAN_MMIO
0369 select USB_EHCI_BIG_ENDIAN_DESC
0370 select USB_UHCI_BIG_ENDIAN_MMIO
0371 select USB_UHCI_BIG_ENDIAN_DESC
0372 help
0373 If you say Y here if you are running on a SPARC-LEON processor.
0374 The LEON processor is a synthesizable VHDL model of the
0375 SPARC-v8 standard. LEON is part of the GRLIB collection of
0376 IP cores that are distributed under GPL. GRLIB can be downloaded
0377 from www.gaisler.com. You can download a sparc-linux cross-compilation
0378 toolchain at www.gaisler.com.
0379
0380 if SPARC_LEON
0381 menu "U-Boot options"
0382
0383 config UBOOT_LOAD_ADDR
0384 hex "uImage Load Address"
0385 default 0x40004000
0386 help
0387 U-Boot kernel load address, the address in physical address space
0388 where u-boot will place the Linux kernel before booting it.
0389 This address is normally the base address of main memory + 0x4000.
0390
0391 config UBOOT_FLASH_ADDR
0392 hex "uImage.o Load Address"
0393 default 0x00080000
0394 help
0395 Optional setting only affecting the uImage.o ELF-image used to
0396 download the uImage file to the target using a ELF-loader other than
0397 U-Boot. It may for example be used to download an uImage to FLASH with
0398 the GRMON utility before even starting u-boot.
0399
0400 config UBOOT_ENTRY_ADDR
0401 hex "uImage Entry Address"
0402 default 0xf0004000
0403 help
0404 Do not change this unless you know what you're doing. This is
0405 hardcoded by the SPARC32 and LEON port.
0406
0407 This is the virtual address u-boot jumps to when booting the Linux
0408 Kernel.
0409
0410 endmenu
0411 endif
0412
0413 endmenu
0414
0415 menu "Bus options (PCI etc.)"
0416 config SBUS
0417 bool
0418 default y
0419
0420 config SBUSCHAR
0421 bool
0422 default y
0423
0424 config SUN_LDOMS
0425 bool "Sun Logical Domains support"
0426 depends on SPARC64
0427 help
0428 Say Y here is you want to support virtual devices via
0429 Logical Domains.
0430
0431 config PCIC_PCI
0432 bool
0433 depends on PCI && SPARC32 && !SPARC_LEON
0434 default y
0435
0436 config LEON_PCI
0437 bool
0438 depends on PCI && SPARC_LEON
0439 default y
0440
0441 config SPARC_GRPCI1
0442 bool "GRPCI Host Bridge Support"
0443 depends on LEON_PCI
0444 default y
0445 help
0446 Say Y here to include the GRPCI Host Bridge Driver. The GRPCI
0447 PCI host controller is typically found in GRLIB SPARC32/LEON
0448 systems. The driver has one property (all_pci_errors) controlled
0449 from the bootloader that makes the GRPCI to generate interrupts
0450 on detected PCI Parity and System errors.
0451
0452 config SPARC_GRPCI2
0453 bool "GRPCI2 Host Bridge Support"
0454 depends on LEON_PCI
0455 default y
0456 help
0457 Say Y here to include the GRPCI2 Host Bridge Driver.
0458
0459 config SUN_OPENPROMFS
0460 tristate "Openprom tree appears in /proc/openprom"
0461 help
0462 If you say Y, the OpenPROM device tree will be available as a
0463 virtual file system, which you can mount to /proc/openprom by "mount
0464 -t openpromfs none /proc/openprom".
0465
0466 To compile the /proc/openprom support as a module, choose M here: the
0467 module will be called openpromfs.
0468
0469 Only choose N if you know in advance that you will not need to modify
0470 OpenPROM settings on the running system.
0471
0472 # Makefile helpers
0473 config SPARC64_PCI
0474 bool
0475 default y
0476 depends on SPARC64 && PCI
0477
0478 config SPARC64_PCI_MSI
0479 bool
0480 default y
0481 depends on SPARC64_PCI && PCI_MSI
0482
0483 endmenu
0484
0485 config COMPAT
0486 bool
0487 depends on SPARC64
0488 default y
0489 select HAVE_UID16
0490 select ARCH_WANT_OLD_COMPAT_IPC
0491 select COMPAT_OLD_SIGACTION
0492
0493 source "drivers/sbus/char/Kconfig"