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