1# SPDX-License-Identifier: GPL-2.0-only 2# 3# For a description of the syntax of this configuration file, 4# see Documentation/kbuild/kconfig-language.rst. 5# 6 7config 64BIT 8 bool 9 10config 32BIT 11 bool 12 13config RISCV 14 def_bool y 15 select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION 16 select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2 17 select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE 18 select ARCH_HAS_BINFMT_FLAT 19 select ARCH_HAS_CURRENT_STACK_POINTER 20 select ARCH_HAS_DEBUG_VIRTUAL if MMU 21 select ARCH_HAS_DEBUG_VM_PGTABLE 22 select ARCH_HAS_DEBUG_WX 23 select ARCH_HAS_FORTIFY_SOURCE 24 select ARCH_HAS_GCOV_PROFILE_ALL 25 select ARCH_HAS_GIGANTIC_PAGE 26 select ARCH_HAS_KCOV 27 select ARCH_HAS_MMIOWB 28 select ARCH_HAS_PMEM_API 29 select ARCH_HAS_PTE_SPECIAL 30 select ARCH_HAS_SET_DIRECT_MAP if MMU 31 select ARCH_HAS_SET_MEMORY if MMU 32 select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL 33 select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL 34 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 35 select ARCH_HAS_UBSAN_SANITIZE_ALL 36 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX 37 select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT 38 select ARCH_STACKWALK 39 select ARCH_SUPPORTS_ATOMIC_RMW 40 select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU 41 select ARCH_SUPPORTS_HUGETLBFS if MMU 42 select ARCH_SUPPORTS_PAGE_TABLE_CHECK if MMU 43 select ARCH_USE_MEMTEST 44 select ARCH_USE_QUEUED_RWLOCKS 45 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU 46 select ARCH_WANT_FRAME_POINTERS 47 select ARCH_WANT_GENERAL_HUGETLB 48 select ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP 49 select ARCH_WANT_HUGE_PMD_SHARE if 64BIT 50 select ARCH_WANT_LD_ORPHAN_WARN if !XIP_KERNEL 51 select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE 52 select BINFMT_FLAT_NO_DATA_START_OFFSET if !MMU 53 select BUILDTIME_TABLE_SORT if MMU 54 select CLINT_TIMER if !MMU 55 select CLONE_BACKWARDS 56 select COMMON_CLK 57 select CPU_PM if CPU_IDLE 58 select EDAC_SUPPORT 59 select GENERIC_ARCH_TOPOLOGY 60 select GENERIC_ATOMIC64 if !64BIT 61 select GENERIC_CLOCKEVENTS_BROADCAST if SMP 62 select GENERIC_EARLY_IOREMAP 63 select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO 64 select GENERIC_IDLE_POLL_SETUP 65 select GENERIC_IOREMAP if MMU 66 select GENERIC_IRQ_MULTI_HANDLER 67 select GENERIC_IRQ_SHOW 68 select GENERIC_IRQ_SHOW_LEVEL 69 select GENERIC_LIB_DEVMEM_IS_ALLOWED 70 select GENERIC_PCI_IOMAP 71 select GENERIC_PTDUMP if MMU 72 select GENERIC_SCHED_CLOCK 73 select GENERIC_SMP_IDLE_THREAD 74 select GENERIC_TIME_VSYSCALL if MMU && 64BIT 75 select GENERIC_VDSO_TIME_NS if HAVE_GENERIC_VDSO 76 select HARDIRQS_SW_RESEND 77 select HAVE_ARCH_AUDITSYSCALL 78 select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP 79 select HAVE_ARCH_HUGE_VMAP if MMU && 64BIT && !XIP_KERNEL 80 select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL 81 select HAVE_ARCH_JUMP_LABEL_RELATIVE if !XIP_KERNEL 82 select HAVE_ARCH_KASAN if MMU && 64BIT 83 select HAVE_ARCH_KASAN_VMALLOC if MMU && 64BIT 84 select HAVE_ARCH_KFENCE if MMU && 64BIT 85 select HAVE_ARCH_KGDB if !XIP_KERNEL 86 select HAVE_ARCH_KGDB_QXFER_PKT 87 select HAVE_ARCH_MMAP_RND_BITS if MMU 88 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT 89 select HAVE_ARCH_SECCOMP_FILTER 90 select HAVE_ARCH_THREAD_STRUCT_WHITELIST 91 select HAVE_ARCH_TRACEHOOK 92 select HAVE_ARCH_TRANSPARENT_HUGEPAGE if 64BIT && MMU 93 select HAVE_ARCH_VMAP_STACK if MMU && 64BIT 94 select HAVE_ASM_MODVERSIONS 95 select HAVE_CONTEXT_TRACKING_USER 96 select HAVE_DEBUG_KMEMLEAK 97 select HAVE_DMA_CONTIGUOUS if MMU 98 select HAVE_EBPF_JIT if MMU 99 select HAVE_FUNCTION_ARG_ACCESS_API 100 select HAVE_FUNCTION_ERROR_INJECTION 101 select HAVE_GCC_PLUGINS 102 select HAVE_GENERIC_VDSO if MMU && 64BIT 103 select HAVE_IRQ_TIME_ACCOUNTING 104 select HAVE_KPROBES if !XIP_KERNEL 105 select HAVE_KPROBES_ON_FTRACE if !XIP_KERNEL 106 select HAVE_KRETPROBES if !XIP_KERNEL 107 select HAVE_RETHOOK if !XIP_KERNEL 108 select HAVE_MOVE_PMD 109 select HAVE_MOVE_PUD 110 select HAVE_PCI 111 select HAVE_PERF_EVENTS 112 select HAVE_PERF_REGS 113 select HAVE_PERF_USER_STACK_DUMP 114 select HAVE_POSIX_CPU_TIMERS_TASK_WORK 115 select HAVE_REGS_AND_STACK_ACCESS_API 116 select HAVE_RSEQ 117 select HAVE_STACKPROTECTOR 118 select HAVE_SYSCALL_TRACEPOINTS 119 select IRQ_DOMAIN 120 select IRQ_FORCED_THREADING 121 select MODULES_USE_ELF_RELA if MODULES 122 select MODULE_SECTIONS if MODULES 123 select OF 124 select OF_DMA_DEFAULT_COHERENT 125 select OF_EARLY_FLATTREE 126 select OF_IRQ 127 select PCI_DOMAINS_GENERIC if PCI 128 select PCI_MSI if PCI 129 select RISCV_INTC 130 select RISCV_TIMER if RISCV_SBI 131 select SIFIVE_PLIC 132 select SPARSE_IRQ 133 select SYSCTL_EXCEPTION_TRACE 134 select THREAD_INFO_IN_TASK 135 select TRACE_IRQFLAGS_SUPPORT 136 select UACCESS_MEMCPY if !MMU 137 select ZONE_DMA32 if 64BIT 138 select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && MMU && $(cc-option,-fpatchable-function-entry=8) 139 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE 140 select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL 141 select HAVE_FUNCTION_GRAPH_TRACER 142 select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION 143 144config ARCH_MMAP_RND_BITS_MIN 145 default 18 if 64BIT 146 default 8 147 148config ARCH_MMAP_RND_COMPAT_BITS_MIN 149 default 8 150 151# max bits determined by the following formula: 152# VA_BITS - PAGE_SHIFT - 3 153config ARCH_MMAP_RND_BITS_MAX 154 default 24 if 64BIT # SV39 based 155 default 17 156 157config ARCH_MMAP_RND_COMPAT_BITS_MAX 158 default 17 159 160# set if we run in machine mode, cleared if we run in supervisor mode 161config RISCV_M_MODE 162 bool 163 default !MMU 164 165# set if we are running in S-mode and can use SBI calls 166config RISCV_SBI 167 bool 168 depends on !RISCV_M_MODE 169 default y 170 171config MMU 172 bool "MMU-based Paged Memory Management Support" 173 default y 174 help 175 Select if you want MMU-based virtualised addressing space 176 support by paged memory management. If unsure, say 'Y'. 177 178config PAGE_OFFSET 179 hex 180 default 0xC0000000 if 32BIT 181 default 0x80000000 if 64BIT && !MMU 182 default 0xff60000000000000 if 64BIT 183 184config KASAN_SHADOW_OFFSET 185 hex 186 depends on KASAN_GENERIC 187 default 0xdfffffff00000000 if 64BIT 188 default 0xffffffff if 32BIT 189 190config ARCH_FLATMEM_ENABLE 191 def_bool !NUMA 192 193config ARCH_SPARSEMEM_ENABLE 194 def_bool y 195 depends on MMU 196 select SPARSEMEM_STATIC if 32BIT && SPARSEMEM 197 select SPARSEMEM_VMEMMAP_ENABLE if 64BIT 198 199config ARCH_SELECT_MEMORY_MODEL 200 def_bool ARCH_SPARSEMEM_ENABLE 201 202config ARCH_SUPPORTS_UPROBES 203 def_bool y 204 205config STACKTRACE_SUPPORT 206 def_bool y 207 208config GENERIC_BUG 209 def_bool y 210 depends on BUG 211 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT 212 213config GENERIC_BUG_RELATIVE_POINTERS 214 bool 215 216config GENERIC_CALIBRATE_DELAY 217 def_bool y 218 219config GENERIC_CSUM 220 def_bool y 221 222config GENERIC_HWEIGHT 223 def_bool y 224 225config FIX_EARLYCON_MEM 226 def_bool MMU 227 228config PGTABLE_LEVELS 229 int 230 default 5 if 64BIT 231 default 2 232 233config LOCKDEP_SUPPORT 234 def_bool y 235 236config RISCV_DMA_NONCOHERENT 237 bool 238 select ARCH_HAS_DMA_PREP_COHERENT 239 select ARCH_HAS_SETUP_DMA_OPS 240 select ARCH_HAS_SYNC_DMA_FOR_CPU 241 select ARCH_HAS_SYNC_DMA_FOR_DEVICE 242 select DMA_DIRECT_REMAP 243 244config AS_HAS_INSN 245 def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero) 246 247source "arch/riscv/Kconfig.socs" 248source "arch/riscv/Kconfig.erratas" 249 250menu "Platform type" 251 252config NONPORTABLE 253 bool "Allow configurations that result in non-portable kernels" 254 help 255 RISC-V kernel binaries are compatible between all known systems 256 whenever possible, but there are some use cases that can only be 257 satisfied by configurations that result in kernel binaries that are 258 not portable between systems. 259 260 Selecting N does not guarantee kernels will be portable to all known 261 systems. Selecting any of the options guarded by NONPORTABLE will 262 result in kernel binaries that are unlikely to be portable between 263 systems. 264 265 If unsure, say N. 266 267choice 268 prompt "Base ISA" 269 default ARCH_RV64I 270 help 271 This selects the base ISA that this kernel will target and must match 272 the target platform. 273 274config ARCH_RV32I 275 bool "RV32I" 276 depends on NONPORTABLE 277 select 32BIT 278 select GENERIC_LIB_ASHLDI3 279 select GENERIC_LIB_ASHRDI3 280 select GENERIC_LIB_LSHRDI3 281 select GENERIC_LIB_UCMPDI2 282 select MMU 283 284config ARCH_RV64I 285 bool "RV64I" 286 select 64BIT 287 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 288 select SWIOTLB if MMU 289 290endchoice 291 292# We must be able to map all physical memory into the kernel, but the compiler 293# is still a bit more efficient when generating code if it's setup in a manner 294# such that it can only map 2GiB of memory. 295choice 296 prompt "Kernel Code Model" 297 default CMODEL_MEDLOW if 32BIT 298 default CMODEL_MEDANY if 64BIT 299 300 config CMODEL_MEDLOW 301 bool "medium low code model" 302 config CMODEL_MEDANY 303 bool "medium any code model" 304endchoice 305 306config MODULE_SECTIONS 307 bool 308 select HAVE_MOD_ARCH_SPECIFIC 309 310config SMP 311 bool "Symmetric Multi-Processing" 312 help 313 This enables support for systems with more than one CPU. If 314 you say N here, the kernel will run on single and 315 multiprocessor machines, but will use only one CPU of a 316 multiprocessor machine. If you say Y here, the kernel will run 317 on many, but not all, single processor machines. On a single 318 processor machine, the kernel will run faster if you say N 319 here. 320 321 If you don't know what to do here, say N. 322 323config NR_CPUS 324 int "Maximum number of CPUs (2-512)" 325 depends on SMP 326 range 2 512 if !RISCV_SBI_V01 327 range 2 32 if RISCV_SBI_V01 && 32BIT 328 range 2 64 if RISCV_SBI_V01 && 64BIT 329 default "32" if 32BIT 330 default "64" if 64BIT 331 332config HOTPLUG_CPU 333 bool "Support for hot-pluggable CPUs" 334 depends on SMP 335 select GENERIC_IRQ_MIGRATION 336 help 337 338 Say Y here to experiment with turning CPUs off and on. CPUs 339 can be controlled through /sys/devices/system/cpu. 340 341 Say N if you want to disable CPU hotplug. 342 343choice 344 prompt "CPU Tuning" 345 default TUNE_GENERIC 346 347config TUNE_GENERIC 348 bool "generic" 349 350endchoice 351 352# Common NUMA Features 353config NUMA 354 bool "NUMA Memory Allocation and Scheduler Support" 355 depends on SMP && MMU 356 select ARCH_SUPPORTS_NUMA_BALANCING 357 select GENERIC_ARCH_NUMA 358 select NEED_PER_CPU_EMBED_FIRST_CHUNK 359 select OF_NUMA 360 select USE_PERCPU_NUMA_NODE_ID 361 help 362 Enable NUMA (Non-Uniform Memory Access) support. 363 364 The kernel will try to allocate memory used by a CPU on the 365 local memory of the CPU and add some more NUMA awareness to the kernel. 366 367config NODES_SHIFT 368 int "Maximum NUMA Nodes (as a power of 2)" 369 range 1 10 370 default "2" 371 depends on NUMA 372 help 373 Specify the maximum number of NUMA Nodes available on the target 374 system. Increases memory reserved to accommodate various tables. 375 376config RISCV_ALTERNATIVE 377 bool 378 depends on !XIP_KERNEL 379 help 380 This Kconfig allows the kernel to automatically patch the 381 errata required by the execution platform at run time. The 382 code patching is performed once in the boot stages. It means 383 that the overhead from this mechanism is just taken once. 384 385config RISCV_ALTERNATIVE_EARLY 386 bool 387 depends on RISCV_ALTERNATIVE 388 help 389 Allows early patching of the kernel for special errata 390 391config RISCV_ISA_C 392 bool "Emit compressed instructions when building Linux" 393 default y 394 help 395 Adds "C" to the ISA subsets that the toolchain is allowed to emit 396 when building Linux, which results in compressed instructions in the 397 Linux binary. 398 399 If you don't know what to do here, say Y. 400 401config RISCV_ISA_SVPBMT 402 bool "SVPBMT extension support" 403 depends on 64BIT && MMU 404 depends on !XIP_KERNEL 405 default y 406 select RISCV_ALTERNATIVE 407 help 408 Adds support to dynamically detect the presence of the SVPBMT 409 ISA-extension (Supervisor-mode: page-based memory types) and 410 enable its usage. 411 412 The memory type for a page contains a combination of attributes 413 that indicate the cacheability, idempotency, and ordering 414 properties for access to that page. 415 416 The SVPBMT extension is only available on 64Bit cpus. 417 418 If you don't know what to do here, say Y. 419 420config TOOLCHAIN_HAS_ZBB 421 bool 422 default y 423 depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbb) 424 depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb) 425 depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900 426 depends on AS_IS_GNU 427 428config RISCV_ISA_ZBB 429 bool "Zbb extension support for bit manipulation instructions" 430 depends on TOOLCHAIN_HAS_ZBB 431 depends on !XIP_KERNEL && MMU 432 select RISCV_ALTERNATIVE 433 default y 434 help 435 Adds support to dynamically detect the presence of the ZBB 436 extension (basic bit manipulation) and enable its usage. 437 438 The Zbb extension provides instructions to accelerate a number 439 of bit-specific operations (count bit population, sign extending, 440 bitrotation, etc). 441 442 If you don't know what to do here, say Y. 443 444config RISCV_ISA_ZICBOM 445 bool "Zicbom extension support for non-coherent DMA operation" 446 depends on !XIP_KERNEL && MMU 447 default y 448 select RISCV_ALTERNATIVE 449 select RISCV_DMA_NONCOHERENT 450 help 451 Adds support to dynamically detect the presence of the ZICBOM 452 extension (Cache Block Management Operations) and enable its 453 usage. 454 455 The Zicbom extension can be used to handle for example 456 non-coherent DMA support on devices that need it. 457 458 If you don't know what to do here, say Y. 459 460config TOOLCHAIN_HAS_ZIHINTPAUSE 461 bool 462 default y 463 depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zihintpause) 464 depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zihintpause) 465 depends on LLD_VERSION >= 150000 || LD_VERSION >= 23600 466 467config TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI 468 def_bool y 469 # https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=aed44286efa8ae8717a77d94b51ac3614e2ca6dc 470 depends on AS_IS_GNU && AS_VERSION >= 23800 471 help 472 Newer binutils versions default to ISA spec version 20191213 which 473 moves some instructions from the I extension to the Zicsr and Zifencei 474 extensions. 475 476config TOOLCHAIN_NEEDS_OLD_ISA_SPEC 477 def_bool y 478 depends on TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI 479 # https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16 480 depends on CC_IS_CLANG && CLANG_VERSION < 170000 481 help 482 Certain versions of clang do not support zicsr and zifencei via -march 483 but newer versions of binutils require it for the reasons noted in the 484 help text of CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI. This 485 option causes an older ISA spec compatible with these older versions 486 of clang to be passed to GAS, which has the same result as passing zicsr 487 and zifencei to -march. 488 489config FPU 490 bool "FPU support" 491 default y 492 help 493 Say N here if you want to disable all floating-point related procedure 494 in the kernel. 495 496 If you don't know what to do here, say Y. 497 498endmenu # "Platform type" 499 500menu "Kernel features" 501 502source "kernel/Kconfig.hz" 503 504config RISCV_SBI_V01 505 bool "SBI v0.1 support" 506 depends on RISCV_SBI 507 help 508 This config allows kernel to use SBI v0.1 APIs. This will be 509 deprecated in future once legacy M-mode software are no longer in use. 510 511config RISCV_BOOT_SPINWAIT 512 bool "Spinwait booting method" 513 depends on SMP 514 default y if RISCV_SBI_V01 || RISCV_M_MODE 515 help 516 This enables support for booting Linux via spinwait method. In the 517 spinwait method, all cores randomly jump to Linux. One of the cores 518 gets chosen via lottery and all other keep spinning on a percpu 519 variable. This method cannot support CPU hotplug and sparse hartid 520 scheme. It should be only enabled for M-mode Linux or platforms relying 521 on older firmware without SBI HSM extension. All other platforms should 522 rely on ordered booting via SBI HSM extension which gets chosen 523 dynamically at runtime if the firmware supports it. 524 525 Since spinwait is incompatible with sparse hart IDs, it requires 526 NR_CPUS be large enough to contain the physical hart ID of the first 527 hart to enter Linux. 528 529 If unsure what to do here, say N. 530 531config KEXEC 532 bool "Kexec system call" 533 depends on MMU 534 select HOTPLUG_CPU if SMP 535 select KEXEC_CORE 536 help 537 kexec is a system call that implements the ability to shutdown your 538 current kernel, and to start another kernel. It is like a reboot 539 but it is independent of the system firmware. And like a reboot 540 you can start any kernel with it, not just Linux. 541 542 The name comes from the similarity to the exec system call. 543 544config KEXEC_FILE 545 bool "kexec file based systmem call" 546 depends on 64BIT && MMU 547 select HAVE_IMA_KEXEC if IMA 548 select KEXEC_CORE 549 select KEXEC_ELF 550 help 551 This is new version of kexec system call. This system call is 552 file based and takes file descriptors as system call argument 553 for kernel and initramfs as opposed to list of segments as 554 accepted by previous system call. 555 556 If you don't know what to do here, say Y. 557 558config ARCH_HAS_KEXEC_PURGATORY 559 def_bool KEXEC_FILE 560 depends on CRYPTO=y 561 depends on CRYPTO_SHA256=y 562 563config CRASH_DUMP 564 bool "Build kdump crash kernel" 565 help 566 Generate crash dump after being started by kexec. This should 567 be normally only set in special crash dump kernels which are 568 loaded in the main kernel with kexec-tools into a specially 569 reserved region and then later executed after a crash by 570 kdump/kexec. 571 572 For more details see Documentation/admin-guide/kdump/kdump.rst 573 574config COMPAT 575 bool "Kernel support for 32-bit U-mode" 576 default 64BIT 577 depends on 64BIT && MMU 578 help 579 This option enables support for a 32-bit U-mode running under a 64-bit 580 kernel at S-mode. riscv32-specific components such as system calls, 581 the user helper functions (vdso), signal rt_frame functions and the 582 ptrace interface are handled appropriately by the kernel. 583 584 If you want to execute 32-bit userspace applications, say Y. 585 586endmenu # "Kernel features" 587 588menu "Boot options" 589 590config CMDLINE 591 string "Built-in kernel command line" 592 help 593 For most platforms, the arguments for the kernel's command line 594 are provided at run-time, during boot. However, there are cases 595 where either no arguments are being provided or the provided 596 arguments are insufficient or even invalid. 597 598 When that occurs, it is possible to define a built-in command 599 line here and choose how the kernel should use it later on. 600 601choice 602 prompt "Built-in command line usage" if CMDLINE != "" 603 default CMDLINE_FALLBACK 604 help 605 Choose how the kernel will handle the provided built-in command 606 line. 607 608config CMDLINE_FALLBACK 609 bool "Use bootloader kernel arguments if available" 610 help 611 Use the built-in command line as fallback in case we get nothing 612 during boot. This is the default behaviour. 613 614config CMDLINE_EXTEND 615 bool "Extend bootloader kernel arguments" 616 help 617 The command-line arguments provided during boot will be 618 appended to the built-in command line. This is useful in 619 cases where the provided arguments are insufficient and 620 you don't want to or cannot modify them. 621 622config CMDLINE_FORCE 623 bool "Always use the default kernel command string" 624 help 625 Always use the built-in command line, even if we get one during 626 boot. This is useful in case you need to override the provided 627 command line on systems where you don't have or want control 628 over it. 629 630endchoice 631 632config EFI_STUB 633 bool 634 635config EFI 636 bool "UEFI runtime support" 637 depends on OF && !XIP_KERNEL 638 depends on MMU 639 default y 640 select EFI_GENERIC_STUB 641 select EFI_PARAMS_FROM_FDT 642 select EFI_RUNTIME_WRAPPERS 643 select EFI_STUB 644 select LIBFDT 645 select RISCV_ISA_C 646 select UCS2_STRING 647 help 648 This option provides support for runtime services provided 649 by UEFI firmware (such as non-volatile variables, realtime 650 clock, and platform reset). A UEFI stub is also provided to 651 allow the kernel to be booted as an EFI application. This 652 is only useful on systems that have UEFI firmware. 653 654config CC_HAVE_STACKPROTECTOR_TLS 655 def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0) 656 657config STACKPROTECTOR_PER_TASK 658 def_bool y 659 depends on !RANDSTRUCT 660 depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS 661 662config PHYS_RAM_BASE_FIXED 663 bool "Explicitly specified physical RAM address" 664 depends on NONPORTABLE 665 default n 666 667config PHYS_RAM_BASE 668 hex "Platform Physical RAM address" 669 depends on PHYS_RAM_BASE_FIXED 670 default "0x80000000" 671 help 672 This is the physical address of RAM in the system. It has to be 673 explicitly specified to run early relocations of read-write data 674 from flash to RAM. 675 676config XIP_KERNEL 677 bool "Kernel Execute-In-Place from ROM" 678 depends on MMU && SPARSEMEM && NONPORTABLE 679 # This prevents XIP from being enabled by all{yes,mod}config, which 680 # fail to build since XIP doesn't support large kernels. 681 depends on !COMPILE_TEST 682 select PHYS_RAM_BASE_FIXED 683 help 684 Execute-In-Place allows the kernel to run from non-volatile storage 685 directly addressable by the CPU, such as NOR flash. This saves RAM 686 space since the text section of the kernel is not loaded from flash 687 to RAM. Read-write sections, such as the data section and stack, 688 are still copied to RAM. The XIP kernel is not compressed since 689 it has to run directly from flash, so it will take more space to 690 store it. The flash address used to link the kernel object files, 691 and for storing it, is configuration dependent. Therefore, if you 692 say Y here, you must know the proper physical address where to 693 store the kernel image depending on your own flash memory usage. 694 695 Also note that the make target becomes "make xipImage" rather than 696 "make zImage" or "make Image". The final kernel binary to put in 697 ROM memory will be arch/riscv/boot/xipImage. 698 699 SPARSEMEM is required because the kernel text and rodata that are 700 flash resident are not backed by memmap, then any attempt to get 701 a struct page on those regions will trigger a fault. 702 703 If unsure, say N. 704 705config XIP_PHYS_ADDR 706 hex "XIP Kernel Physical Location" 707 depends on XIP_KERNEL 708 default "0x21000000" 709 help 710 This is the physical address in your flash memory the kernel will 711 be linked for and stored to. This address is dependent on your 712 own flash usage. 713 714endmenu # "Boot options" 715 716config BUILTIN_DTB 717 bool 718 depends on OF && NONPORTABLE 719 default y if XIP_KERNEL 720 721config PORTABLE 722 bool 723 default !NONPORTABLE 724 select EFI 725 select MMU 726 select OF 727 728menu "Power management options" 729 730source "kernel/power/Kconfig" 731 732endmenu # "Power management options" 733 734menu "CPU Power Management" 735 736source "drivers/cpuidle/Kconfig" 737 738source "drivers/cpufreq/Kconfig" 739 740endmenu # "CPU Power Management" 741 742source "arch/riscv/kvm/Kconfig" 743