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