123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579 |
- # SPDX-License-Identifier: GPL-2.0-only
- #
- # For a description of the syntax of this configuration file,
- # see Documentation/kbuild/kconfig-language.rst.
- #
- config 64BIT
- bool
- config 32BIT
- bool
- config RISCV
- def_bool y
- select ARCH_CLOCKSOURCE_INIT
- select ARCH_SUPPORTS_ATOMIC_RMW
- select ARCH_HAS_BINFMT_FLAT
- select ARCH_HAS_DEBUG_VM_PGTABLE
- select ARCH_HAS_DEBUG_VIRTUAL if MMU
- select ARCH_HAS_DEBUG_WX
- select ARCH_HAS_GCOV_PROFILE_ALL
- select ARCH_HAS_GIGANTIC_PAGE
- select ARCH_HAS_KCOV
- select ARCH_HAS_MMIOWB
- select ARCH_HAS_PTE_SPECIAL
- select ARCH_HAS_SET_DIRECT_MAP
- select ARCH_HAS_SET_MEMORY
- select ARCH_HAS_STRICT_KERNEL_RWX if MMU
- select ARCH_HAS_STRICT_MODULE_RWX if MMU
- select ARCH_HAS_DMA_PREP_COHERENT
- select ARCH_HAS_SYNC_DMA_FOR_CPU
- select ARCH_HAS_SYNC_DMA_FOR_DEVICE
- select ARCH_HAS_DMA_WRITE_COMBINE
- select ARCH_HAS_DMA_MMAP_PGPROT
- select ARCH_KEEP_MEMBLOCK
- select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
- select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
- select ARCH_USE_QUEUED_RWLOCKS
- select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
- select ARCH_WANT_FRAME_POINTERS
- select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
- select CLONE_BACKWARDS
- select CLINT_TIMER if !MMU
- select COMMON_CLK
- select CPU_PM if (SUSPEND || CPU_IDLE)
- select COMPAT_BINFMT_ELF if BINFMT_ELF && COMPAT
- select EDAC_SUPPORT
- select DMA_DIRECT_REMAP
- select GENERIC_ALLOCATOR
- select GENERIC_ARCH_TOPOLOGY if SMP
- select GENERIC_ATOMIC64 if !64BIT
- select GENERIC_CLOCKEVENTS
- select GENERIC_EARLY_IOREMAP
- select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
- select GENERIC_IOREMAP
- select GENERIC_IRQ_MULTI_HANDLER
- select GENERIC_IRQ_SHOW
- select GENERIC_PCI_IOMAP
- select GENERIC_PTDUMP if MMU
- select GENERIC_SCHED_CLOCK
- select GENERIC_SMP_IDLE_THREAD
- select GENERIC_STRNCPY_FROM_USER if MMU
- select GENERIC_STRNLEN_USER if MMU
- select GENERIC_TIME_VSYSCALL if MMU && 64BIT
- select HANDLE_DOMAIN_IRQ
- select HAVE_ARCH_AUDITSYSCALL
- select HAVE_ARCH_JUMP_LABEL
- select HAVE_ARCH_JUMP_LABEL_RELATIVE
- select HAVE_ARCH_KASAN if MMU && 64BIT
- select HAVE_ARCH_KGDB
- select HAVE_ARCH_KGDB_QXFER_PKT
- select HAVE_ARCH_MMAP_RND_BITS if MMU
- select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
- select HAVE_ARCH_SECCOMP_FILTER
- select HAVE_ARCH_TRACEHOOK
- select HAVE_ASM_MODVERSIONS
- select HAVE_CONTEXT_TRACKING
- select HAVE_DEBUG_KMEMLEAK
- select HAVE_DMA_CONTIGUOUS if MMU
- select HAVE_EBPF_JIT if MMU
- select HAVE_FUTEX_CMPXCHG if FUTEX
- select HAVE_GCC_PLUGINS
- select HAVE_FUNCTION_ERROR_INJECTION
- select HAVE_EFFICIENT_UNALIGNED_ACCESS
- select HAVE_GENERIC_VDSO if MMU && 64BIT
- select HAVE_KPROBES
- select HAVE_KPROBES_ON_FTRACE
- select HAVE_KRETPROBES
- select HAVE_PCI
- select HAVE_PERF_EVENTS
- select HAVE_PERF_REGS
- select HAVE_PERF_USER_STACK_DUMP
- select HAVE_REGS_AND_STACK_ACCESS_API
- select HAVE_STACKPROTECTOR
- select HAVE_SYSCALL_TRACEPOINTS
- select IRQ_DOMAIN
- select MODULES_USE_ELF_RELA if MODULES
- select MODULE_SECTIONS if MODULES
- select OF
- select OF_EARLY_FLATTREE
- select OF_IRQ
- select PCI_DOMAINS_GENERIC if PCI
- select PCI_MSI if PCI
- select RISCV_INTC
- select RISCV_TIMER if RISCV_SBI
- select SPARSE_IRQ
- select SYSCTL_EXCEPTION_TRACE
- select THREAD_INFO_IN_TASK
- select UACCESS_MEMCPY if !MMU
- config ARCH_MMAP_RND_BITS_MIN
- default 18 if 64BIT
- default 8
- config ARCH_MMAP_RND_COMPAT_BITS_MIN
- default 8
- # max bits determined by the following formula:
- # VA_BITS - PAGE_SHIFT - 3
- config ARCH_MMAP_RND_BITS_MAX
- default 24 if 64BIT # SV39 based
- default 17
- config ARCH_MMAP_RND_COMPAT_BITS_MAX
- default 17
- # set if we run in machine mode, cleared if we run in supervisor mode
- config RISCV_M_MODE
- bool
- default !MMU
- # set if we are running in S-mode and can use SBI calls
- config RISCV_SBI
- bool
- depends on !RISCV_M_MODE
- default y
- config MMU
- bool "MMU-based Paged Memory Management Support"
- default y
- help
- Select if you want MMU-based virtualised addressing space
- support by paged memory management. If unsure, say 'Y'.
- config ZONE_DMA32
- bool
- default y if 64BIT
- config VA_BITS
- int
- default 32 if 32BIT
- default 39 if 64BIT
- config PA_BITS
- int
- default 34 if 32BIT
- default 56 if 64BIT
- config PAGE_OFFSET
- hex
- default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
- default 0x80000000 if 64BIT && !MMU
- default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
- default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
- config KASAN_SHADOW_OFFSET
- hex
- depends on KASAN_GENERIC
- default 0xdfffffc800000000 if 64BIT
- default 0xffffffff if 32BIT
- config FORCE_MAX_ZONEORDER
- int "Maximum zone order"
- default 13
- help
- The kernel memory allocator divides physically contiguous memory
- blocks into "zones", where each zone is a power of two number of
- pages. This option selects the largest power of two that the kernel
- keeps in the memory allocator. If you need to allocate very large
- blocks of physically contiguous memory, then you may need to
- increase this value.
- This config option is actually maximum order plus one. For example,
- a value of 13 means that the largest free memory block is 2^12 pages.
- config ARCH_FLATMEM_ENABLE
- def_bool y
- config ARCH_SPARSEMEM_ENABLE
- def_bool y
- depends on MMU
- select SPARSEMEM_STATIC if 32BIT && SPARSEMEM
- select SPARSEMEM_VMEMMAP_ENABLE if 64BIT
- config ARCH_SELECT_MEMORY_MODEL
- def_bool ARCH_SPARSEMEM_ENABLE
- config ARCH_WANT_GENERAL_HUGETLB
- def_bool y
- config ARCH_SUPPORTS_DEBUG_PAGEALLOC
- def_bool y
- config ARCH_SUPPORTS_UPROBES
- def_bool y
- config SYS_SUPPORTS_HUGETLBFS
- depends on MMU
- def_bool y
- config STACKTRACE_SUPPORT
- def_bool y
- config TRACE_IRQFLAGS_SUPPORT
- def_bool y
- config GENERIC_BUG
- def_bool y
- depends on BUG
- select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
- config GENERIC_BUG_RELATIVE_POINTERS
- bool
- config GENERIC_CALIBRATE_DELAY
- def_bool y
- config GENERIC_CSUM
- def_bool y
- config GENERIC_HWEIGHT
- def_bool y
- config FIX_EARLYCON_MEM
- def_bool MMU
- config PGTABLE_LEVELS
- int
- default 3 if 64BIT
- default 2
- config LOCKDEP_SUPPORT
- def_bool y
- source "arch/riscv/Kconfig.socs"
- menu "Platform type"
- choice
- prompt "Base ISA"
- default ARCH_RV64I
- help
- This selects the base ISA that this kernel will target and must match
- the target platform.
- config ARCH_RV32I
- bool "RV32I"
- select 32BIT
- select GENERIC_LIB_ASHLDI3
- select GENERIC_LIB_ASHRDI3
- select GENERIC_LIB_LSHRDI3
- select GENERIC_LIB_UCMPDI2
- select MMU
- config ARCH_RV64I
- bool "RV64I"
- select 64BIT
- select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && GCC_VERSION >= 50000
- select HAVE_DYNAMIC_FTRACE if MMU
- select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
- select HAVE_FTRACE_MCOUNT_RECORD
- select HAVE_FUNCTION_GRAPH_TRACER
- select HAVE_FUNCTION_TRACER
- select SWIOTLB if RISCV_SWIOTLB
- endchoice
- # We must be able to map all physical memory into the kernel, but the compiler
- # is still a bit more efficient when generating code if it's setup in a manner
- # such that it can only map 2GiB of memory.
- choice
- prompt "Kernel Code Model"
- default CMODEL_MEDLOW if 32BIT
- default CMODEL_MEDANY if 64BIT
- config CMODEL_MEDLOW
- bool "medium low code model"
- config CMODEL_MEDANY
- bool "medium any code model"
- endchoice
- config MODULE_SECTIONS
- bool
- select HAVE_MOD_ARCH_SPECIFIC
- choice
- prompt "Maximum Physical Memory"
- default MAXPHYSMEM_1GB if 32BIT
- default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
- default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
- config MAXPHYSMEM_1GB
- depends on 32BIT
- bool "1GiB"
- config MAXPHYSMEM_2GB
- depends on 64BIT && CMODEL_MEDLOW
- bool "2GiB"
- config MAXPHYSMEM_128GB
- depends on 64BIT && CMODEL_MEDANY
- bool "128GiB"
- endchoice
- config SMP
- bool "Symmetric Multi-Processing"
- help
- This enables support for systems with more than one CPU. If
- you say N here, the kernel will run on single and
- multiprocessor machines, but will use only one CPU of a
- multiprocessor machine. If you say Y here, the kernel will run
- on many, but not all, single processor machines. On a single
- processor machine, the kernel will run faster if you say N
- here.
- If you don't know what to do here, say N.
- config NR_CPUS
- int "Maximum number of CPUs (2-32)"
- range 2 32
- depends on SMP
- default "8"
- config HOTPLUG_CPU
- bool "Support for hot-pluggable CPUs"
- depends on SMP
- select GENERIC_IRQ_MIGRATION
- help
- Say Y here to experiment with turning CPUs off and on. CPUs
- can be controlled through /sys/devices/system/cpu.
- Say N if you want to disable CPU hotplug.
- choice
- prompt "CPU Tuning"
- default TUNE_GENERIC
- config TUNE_GENERIC
- bool "generic"
- endchoice
- config RISCV_ISA_C
- bool "Emit compressed instructions when building Linux"
- default y
- help
- Adds "C" to the ISA subsets that the toolchain is allowed to emit
- when building Linux, which results in compressed instructions in the
- Linux binary.
- If you don't know what to do here, say Y.
- config NO_SFENCE_VMA
- bool "Replace sfence.vma with CSR_SMCIR operation"
- depends on !SMP
- default y
- config RISCV_SWIOTLB
- bool "Enable SWIOTLB"
- depends on MMU
- default y
- menu "supported PMU type"
- depends on PERF_EVENTS
- config RISCV_BASE_PMU
- bool "Base Performance Monitoring Unit"
- def_bool n
- help
- A base PMU that serves as a reference implementation and has limited
- feature of perf. It can run on any RISC-V machines so serves as the
- fallback, but this option can also be disable to reduce kernel size.
- endmenu
- config FPU
- bool "FPU support"
- default y
- help
- Say N here if you want to disable all floating-point related procedure
- in the kernel.
- If you don't know what to do here, say Y.
- config VECTOR
- bool "VECTOR support"
- default n
- choice VECTOR_VERSION
- prompt "Vector Version"
- depends on VECTOR
- default VECTOR_1_0
- config VECTOR_1_0
- bool "VECTOR 1.0 support"
- help
- Say N here if you want to disable all vector 1.0 related procedure
- in the kernel.
- If you don't know what to do here, say Y.
- config VECTOR_0_7
- bool "VECTOR 0.7 support"
- help
- Say N here if you want to disable all vector 0.7 related procedure
- in the kernel.
- If you don't know what to do here, say Y.
- endchoice
- config VLEN_256
- bool "VECTOR VLEN 256"
- depends on VECTOR
- default n
- config VECTOR_EMU
- bool "VECTOR e64 emulate for c906 v1"
- depends on VECTOR
- default n
- config THEAD_ISA
- bool "T-HEAD extension ISA in AFLAGS with -march=_xtheadc"
- default n
- endmenu
- menu "Kernel features"
- source "kernel/Kconfig.hz"
- config RISCV_SBI_V01
- bool "SBI v0.1 support"
- default y
- depends on RISCV_SBI
- help
- This config allows kernel to use SBI v0.1 APIs. This will be
- deprecated in future once legacy M-mode software are no longer in use.
- config KEXEC
- bool "Kexec system call"
- select KEXEC_CORE
- select HOTPLUG_CPU if SMP
- depends on MMU
- default y
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
- The name comes from the similarity to the exec system call.
- config CRASH_DUMP
- bool "Build kdump crash kernel"
- default y
- help
- Generate crash dump after being started by kexec. This should
- be normally only set in special crash dump kernels which are
- loaded in the main kernel with kexec-tools into a specially
- reserved region and then later executed after a crash by
- kdump/kexec.
- For more details see Documentation/admin-guide/kdump/kdump.rst
- config COMPAT
- bool "Kernel support for 32-bit U-mode"
- depends on 64BIT && MMU
- help
- This option enables support for a 32-bit U-mode running under a 64-bit
- kernel at S-mode. riscv32-specific components such as system calls,
- the user helper functions (vdso), signal rt_frame functions and the
- ptrace interface are handled appropriately by the kernel.
- If you want to execute 32-bit userspace applications, say Y.
- config SYSVIPC_COMPAT
- def_bool y
- depends on COMPAT && SYSVIPC
- endmenu
- menu "Boot options"
- config CMDLINE
- string "Built-in kernel command line"
- help
- For most platforms, the arguments for the kernel's command line
- are provided at run-time, during boot. However, there are cases
- where either no arguments are being provided or the provided
- arguments are insufficient or even invalid.
- When that occurs, it is possible to define a built-in command
- line here and choose how the kernel should use it later on.
- choice
- prompt "Built-in command line usage" if CMDLINE != ""
- default CMDLINE_FALLBACK
- help
- Choose how the kernel will handle the provided built-in command
- line.
- config CMDLINE_FALLBACK
- bool "Use bootloader kernel arguments if available"
- help
- Use the built-in command line as fallback in case we get nothing
- during boot. This is the default behaviour.
- config CMDLINE_EXTEND
- bool "Extend bootloader kernel arguments"
- help
- The command-line arguments provided during boot will be
- appended to the built-in command line. This is useful in
- cases where the provided arguments are insufficient and
- you don't want to or cannot modify them.
- config CMDLINE_FORCE
- bool "Always use the default kernel command string"
- help
- Always use the built-in command line, even if we get one during
- boot. This is useful in case you need to override the provided
- command line on systems where you don't have or want control
- over it.
- endchoice
- config EFI_STUB
- bool
- config EFI
- bool "UEFI runtime support"
- depends on OF
- select LIBFDT
- select UCS2_STRING
- select EFI_PARAMS_FROM_FDT
- select EFI_STUB
- select EFI_GENERIC_STUB
- select EFI_RUNTIME_WRAPPERS
- select RISCV_ISA_C
- depends on MMU
- default y
- help
- This option provides support for runtime services provided
- by UEFI firmware (such as non-volatile variables, realtime
- clock, and platform reset). A UEFI stub is also provided to
- allow the kernel to be booted as an EFI application. This
- is only useful on systems that have UEFI firmware.
- endmenu
- config BUILTIN_DTB
- def_bool n
- depends on RISCV_M_MODE
- depends on OF
- menu "Power management options"
- source "drivers/cpuidle/Kconfig"
- source "drivers/cpufreq/Kconfig"
- source "kernel/power/Kconfig"
- config ARCH_SUSPEND_POSSIBLE
- def_bool y
- endmenu
- source "arch/riscv/kvm/Kconfig"
- source "drivers/firmware/Kconfig"
|