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 FPU 468 bool "FPU support" 469 default y 470 help 471 Say N here if you want to disable all floating-point related procedure 472 in the kernel. 473 474 If you don't know what to do here, say Y. 475 476endmenu # "Platform type" 477 478menu "Kernel features" 479 480source "kernel/Kconfig.hz" 481 482config RISCV_SBI_V01 483 bool "SBI v0.1 support" 484 depends on RISCV_SBI 485 help 486 This config allows kernel to use SBI v0.1 APIs. This will be 487 deprecated in future once legacy M-mode software are no longer in use. 488 489config RISCV_BOOT_SPINWAIT 490 bool "Spinwait booting method" 491 depends on SMP 492 default y if RISCV_SBI_V01 || RISCV_M_MODE 493 help 494 This enables support for booting Linux via spinwait method. In the 495 spinwait method, all cores randomly jump to Linux. One of the cores 496 gets chosen via lottery and all other keep spinning on a percpu 497 variable. This method cannot support CPU hotplug and sparse hartid 498 scheme. It should be only enabled for M-mode Linux or platforms relying 499 on older firmware without SBI HSM extension. All other platforms should 500 rely on ordered booting via SBI HSM extension which gets chosen 501 dynamically at runtime if the firmware supports it. 502 503 Since spinwait is incompatible with sparse hart IDs, it requires 504 NR_CPUS be large enough to contain the physical hart ID of the first 505 hart to enter Linux. 506 507 If unsure what to do here, say N. 508 509config KEXEC 510 bool "Kexec system call" 511 depends on MMU 512 select HOTPLUG_CPU if SMP 513 select KEXEC_CORE 514 help 515 kexec is a system call that implements the ability to shutdown your 516 current kernel, and to start another kernel. It is like a reboot 517 but it is independent of the system firmware. And like a reboot 518 you can start any kernel with it, not just Linux. 519 520 The name comes from the similarity to the exec system call. 521 522config KEXEC_FILE 523 bool "kexec file based systmem call" 524 depends on 64BIT && MMU 525 select HAVE_IMA_KEXEC if IMA 526 select KEXEC_CORE 527 select KEXEC_ELF 528 help 529 This is new version of kexec system call. This system call is 530 file based and takes file descriptors as system call argument 531 for kernel and initramfs as opposed to list of segments as 532 accepted by previous system call. 533 534 If you don't know what to do here, say Y. 535 536config ARCH_HAS_KEXEC_PURGATORY 537 def_bool KEXEC_FILE 538 depends on CRYPTO=y 539 depends on CRYPTO_SHA256=y 540 541config CRASH_DUMP 542 bool "Build kdump crash kernel" 543 help 544 Generate crash dump after being started by kexec. This should 545 be normally only set in special crash dump kernels which are 546 loaded in the main kernel with kexec-tools into a specially 547 reserved region and then later executed after a crash by 548 kdump/kexec. 549 550 For more details see Documentation/admin-guide/kdump/kdump.rst 551 552config COMPAT 553 bool "Kernel support for 32-bit U-mode" 554 default 64BIT 555 depends on 64BIT && MMU 556 help 557 This option enables support for a 32-bit U-mode running under a 64-bit 558 kernel at S-mode. riscv32-specific components such as system calls, 559 the user helper functions (vdso), signal rt_frame functions and the 560 ptrace interface are handled appropriately by the kernel. 561 562 If you want to execute 32-bit userspace applications, say Y. 563 564endmenu # "Kernel features" 565 566menu "Boot options" 567 568config CMDLINE 569 string "Built-in kernel command line" 570 help 571 For most platforms, the arguments for the kernel's command line 572 are provided at run-time, during boot. However, there are cases 573 where either no arguments are being provided or the provided 574 arguments are insufficient or even invalid. 575 576 When that occurs, it is possible to define a built-in command 577 line here and choose how the kernel should use it later on. 578 579choice 580 prompt "Built-in command line usage" if CMDLINE != "" 581 default CMDLINE_FALLBACK 582 help 583 Choose how the kernel will handle the provided built-in command 584 line. 585 586config CMDLINE_FALLBACK 587 bool "Use bootloader kernel arguments if available" 588 help 589 Use the built-in command line as fallback in case we get nothing 590 during boot. This is the default behaviour. 591 592config CMDLINE_EXTEND 593 bool "Extend bootloader kernel arguments" 594 help 595 The command-line arguments provided during boot will be 596 appended to the built-in command line. This is useful in 597 cases where the provided arguments are insufficient and 598 you don't want to or cannot modify them. 599 600config CMDLINE_FORCE 601 bool "Always use the default kernel command string" 602 help 603 Always use the built-in command line, even if we get one during 604 boot. This is useful in case you need to override the provided 605 command line on systems where you don't have or want control 606 over it. 607 608endchoice 609 610config EFI_STUB 611 bool 612 613config EFI 614 bool "UEFI runtime support" 615 depends on OF && !XIP_KERNEL 616 depends on MMU 617 default y 618 select EFI_GENERIC_STUB 619 select EFI_PARAMS_FROM_FDT 620 select EFI_RUNTIME_WRAPPERS 621 select EFI_STUB 622 select LIBFDT 623 select RISCV_ISA_C 624 select UCS2_STRING 625 help 626 This option provides support for runtime services provided 627 by UEFI firmware (such as non-volatile variables, realtime 628 clock, and platform reset). A UEFI stub is also provided to 629 allow the kernel to be booted as an EFI application. This 630 is only useful on systems that have UEFI firmware. 631 632config CC_HAVE_STACKPROTECTOR_TLS 633 def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0) 634 635config STACKPROTECTOR_PER_TASK 636 def_bool y 637 depends on !RANDSTRUCT 638 depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_TLS 639 640config PHYS_RAM_BASE_FIXED 641 bool "Explicitly specified physical RAM address" 642 depends on NONPORTABLE 643 default n 644 645config PHYS_RAM_BASE 646 hex "Platform Physical RAM address" 647 depends on PHYS_RAM_BASE_FIXED 648 default "0x80000000" 649 help 650 This is the physical address of RAM in the system. It has to be 651 explicitly specified to run early relocations of read-write data 652 from flash to RAM. 653 654config XIP_KERNEL 655 bool "Kernel Execute-In-Place from ROM" 656 depends on MMU && SPARSEMEM && NONPORTABLE 657 # This prevents XIP from being enabled by all{yes,mod}config, which 658 # fail to build since XIP doesn't support large kernels. 659 depends on !COMPILE_TEST 660 select PHYS_RAM_BASE_FIXED 661 help 662 Execute-In-Place allows the kernel to run from non-volatile storage 663 directly addressable by the CPU, such as NOR flash. This saves RAM 664 space since the text section of the kernel is not loaded from flash 665 to RAM. Read-write sections, such as the data section and stack, 666 are still copied to RAM. The XIP kernel is not compressed since 667 it has to run directly from flash, so it will take more space to 668 store it. The flash address used to link the kernel object files, 669 and for storing it, is configuration dependent. Therefore, if you 670 say Y here, you must know the proper physical address where to 671 store the kernel image depending on your own flash memory usage. 672 673 Also note that the make target becomes "make xipImage" rather than 674 "make zImage" or "make Image". The final kernel binary to put in 675 ROM memory will be arch/riscv/boot/xipImage. 676 677 SPARSEMEM is required because the kernel text and rodata that are 678 flash resident are not backed by memmap, then any attempt to get 679 a struct page on those regions will trigger a fault. 680 681 If unsure, say N. 682 683config XIP_PHYS_ADDR 684 hex "XIP Kernel Physical Location" 685 depends on XIP_KERNEL 686 default "0x21000000" 687 help 688 This is the physical address in your flash memory the kernel will 689 be linked for and stored to. This address is dependent on your 690 own flash usage. 691 692endmenu # "Boot options" 693 694config BUILTIN_DTB 695 bool 696 depends on OF && NONPORTABLE 697 default y if XIP_KERNEL 698 699config PORTABLE 700 bool 701 default !NONPORTABLE 702 select EFI 703 select MMU 704 select OF 705 706menu "Power management options" 707 708source "kernel/power/Kconfig" 709 710endmenu # "Power management options" 711 712menu "CPU Power Management" 713 714source "drivers/cpuidle/Kconfig" 715 716source "drivers/cpufreq/Kconfig" 717 718endmenu # "CPU Power Management" 719 720source "arch/riscv/kvm/Kconfig" 721