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_ALTERNATIVE if !XIP_KERNEL 130 select RISCV_INTC 131 select RISCV_TIMER if RISCV_SBI 132 select SIFIVE_PLIC 133 select SPARSE_IRQ 134 select SYSCTL_EXCEPTION_TRACE 135 select THREAD_INFO_IN_TASK 136 select TRACE_IRQFLAGS_SUPPORT 137 select UACCESS_MEMCPY if !MMU 138 select ZONE_DMA32 if 64BIT 139 select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && MMU && $(cc-option,-fpatchable-function-entry=8) 140 select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE 141 select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL 142 select HAVE_FUNCTION_GRAPH_TRACER 143 select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION 144 145config ARCH_MMAP_RND_BITS_MIN 146 default 18 if 64BIT 147 default 8 148 149config ARCH_MMAP_RND_COMPAT_BITS_MIN 150 default 8 151 152# max bits determined by the following formula: 153# VA_BITS - PAGE_SHIFT - 3 154config ARCH_MMAP_RND_BITS_MAX 155 default 24 if 64BIT # SV39 based 156 default 17 157 158config ARCH_MMAP_RND_COMPAT_BITS_MAX 159 default 17 160 161# set if we run in machine mode, cleared if we run in supervisor mode 162config RISCV_M_MODE 163 bool 164 default !MMU 165 166# set if we are running in S-mode and can use SBI calls 167config RISCV_SBI 168 bool 169 depends on !RISCV_M_MODE 170 default y 171 172config MMU 173 bool "MMU-based Paged Memory Management Support" 174 default y 175 help 176 Select if you want MMU-based virtualised addressing space 177 support by paged memory management. If unsure, say 'Y'. 178 179config PAGE_OFFSET 180 hex 181 default 0xC0000000 if 32BIT 182 default 0x80000000 if 64BIT && !MMU 183 default 0xff60000000000000 if 64BIT 184 185config KASAN_SHADOW_OFFSET 186 hex 187 depends on KASAN_GENERIC 188 default 0xdfffffff00000000 if 64BIT 189 default 0xffffffff if 32BIT 190 191config ARCH_FLATMEM_ENABLE 192 def_bool !NUMA 193 194config ARCH_SPARSEMEM_ENABLE 195 def_bool y 196 depends on MMU 197 select SPARSEMEM_STATIC if 32BIT && SPARSEMEM 198 select SPARSEMEM_VMEMMAP_ENABLE if 64BIT 199 200config ARCH_SELECT_MEMORY_MODEL 201 def_bool ARCH_SPARSEMEM_ENABLE 202 203config ARCH_SUPPORTS_UPROBES 204 def_bool y 205 206config STACKTRACE_SUPPORT 207 def_bool y 208 209config GENERIC_BUG 210 def_bool y 211 depends on BUG 212 select GENERIC_BUG_RELATIVE_POINTERS if 64BIT 213 214config GENERIC_BUG_RELATIVE_POINTERS 215 bool 216 217config GENERIC_CALIBRATE_DELAY 218 def_bool y 219 220config GENERIC_CSUM 221 def_bool y 222 223config GENERIC_HWEIGHT 224 def_bool y 225 226config FIX_EARLYCON_MEM 227 def_bool MMU 228 229config PGTABLE_LEVELS 230 int 231 default 5 if 64BIT 232 default 2 233 234config LOCKDEP_SUPPORT 235 def_bool y 236 237config RISCV_DMA_NONCOHERENT 238 bool 239 select ARCH_HAS_DMA_PREP_COHERENT 240 select ARCH_HAS_SETUP_DMA_OPS 241 select ARCH_HAS_SYNC_DMA_FOR_CPU 242 select ARCH_HAS_SYNC_DMA_FOR_DEVICE 243 select DMA_DIRECT_REMAP 244 245config AS_HAS_INSN 246 def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero) 247 248source "arch/riscv/Kconfig.socs" 249source "arch/riscv/Kconfig.erratas" 250 251menu "Platform type" 252 253config NONPORTABLE 254 bool "Allow configurations that result in non-portable kernels" 255 help 256 RISC-V kernel binaries are compatible between all known systems 257 whenever possible, but there are some use cases that can only be 258 satisfied by configurations that result in kernel binaries that are 259 not portable between systems. 260 261 Selecting N does not guarantee kernels will be portable to all known 262 systems. Selecting any of the options guarded by NONPORTABLE will 263 result in kernel binaries that are unlikely to be portable between 264 systems. 265 266 If unsure, say N. 267 268choice 269 prompt "Base ISA" 270 default ARCH_RV64I 271 help 272 This selects the base ISA that this kernel will target and must match 273 the target platform. 274 275config ARCH_RV32I 276 bool "RV32I" 277 depends on NONPORTABLE 278 select 32BIT 279 select GENERIC_LIB_ASHLDI3 280 select GENERIC_LIB_ASHRDI3 281 select GENERIC_LIB_LSHRDI3 282 select GENERIC_LIB_UCMPDI2 283 select MMU 284 285config ARCH_RV64I 286 bool "RV64I" 287 select 64BIT 288 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 289 select SWIOTLB if MMU 290 291endchoice 292 293# We must be able to map all physical memory into the kernel, but the compiler 294# is still a bit more efficient when generating code if it's setup in a manner 295# such that it can only map 2GiB of memory. 296choice 297 prompt "Kernel Code Model" 298 default CMODEL_MEDLOW if 32BIT 299 default CMODEL_MEDANY if 64BIT 300 301 config CMODEL_MEDLOW 302 bool "medium low code model" 303 config CMODEL_MEDANY 304 bool "medium any code model" 305endchoice 306 307config MODULE_SECTIONS 308 bool 309 select HAVE_MOD_ARCH_SPECIFIC 310 311config SMP 312 bool "Symmetric Multi-Processing" 313 help 314 This enables support for systems with more than one CPU. If 315 you say N here, the kernel will run on single and 316 multiprocessor machines, but will use only one CPU of a 317 multiprocessor machine. If you say Y here, the kernel will run 318 on many, but not all, single processor machines. On a single 319 processor machine, the kernel will run faster if you say N 320 here. 321 322 If you don't know what to do here, say N. 323 324config NR_CPUS 325 int "Maximum number of CPUs (2-512)" 326 depends on SMP 327 range 2 512 if !RISCV_SBI_V01 328 range 2 32 if RISCV_SBI_V01 && 32BIT 329 range 2 64 if RISCV_SBI_V01 && 64BIT 330 default "32" if 32BIT 331 default "64" if 64BIT 332 333config HOTPLUG_CPU 334 bool "Support for hot-pluggable CPUs" 335 depends on SMP 336 select GENERIC_IRQ_MIGRATION 337 help 338 339 Say Y here to experiment with turning CPUs off and on. CPUs 340 can be controlled through /sys/devices/system/cpu. 341 342 Say N if you want to disable CPU hotplug. 343 344choice 345 prompt "CPU Tuning" 346 default TUNE_GENERIC 347 348config TUNE_GENERIC 349 bool "generic" 350 351endchoice 352 353# Common NUMA Features 354config NUMA 355 bool "NUMA Memory Allocation and Scheduler Support" 356 depends on SMP && MMU 357 select ARCH_SUPPORTS_NUMA_BALANCING 358 select GENERIC_ARCH_NUMA 359 select NEED_PER_CPU_EMBED_FIRST_CHUNK 360 select OF_NUMA 361 select USE_PERCPU_NUMA_NODE_ID 362 help 363 Enable NUMA (Non-Uniform Memory Access) support. 364 365 The kernel will try to allocate memory used by a CPU on the 366 local memory of the CPU and add some more NUMA awareness to the kernel. 367 368config NODES_SHIFT 369 int "Maximum NUMA Nodes (as a power of 2)" 370 range 1 10 371 default "2" 372 depends on NUMA 373 help 374 Specify the maximum number of NUMA Nodes available on the target 375 system. Increases memory reserved to accommodate various tables. 376 377config RISCV_ALTERNATIVE 378 bool 379 depends on !XIP_KERNEL 380 help 381 This Kconfig allows the kernel to automatically patch the 382 errata required by the execution platform at run time. The 383 code patching is performed once in the boot stages. It means 384 that the overhead from this mechanism is just taken once. 385 386config RISCV_ALTERNATIVE_EARLY 387 bool 388 depends on RISCV_ALTERNATIVE 389 help 390 Allows early patching of the kernel for special errata 391 392config RISCV_ISA_C 393 bool "Emit compressed instructions when building Linux" 394 default y 395 help 396 Adds "C" to the ISA subsets that the toolchain is allowed to emit 397 when building Linux, which results in compressed instructions in the 398 Linux binary. 399 400 If you don't know what to do here, say Y. 401 402config RISCV_ISA_SVPBMT 403 bool "SVPBMT extension support" 404 depends on 64BIT && MMU 405 depends on RISCV_ALTERNATIVE 406 default y 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 MMU 432 depends on 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 MMU 447 depends on RISCV_ALTERNATIVE 448 default y 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