162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_cisource "arch/powerpc/platforms/Kconfig.cputype" 362306a36Sopenharmony_ci 462306a36Sopenharmony_ciconfig CC_HAS_ELFV2 562306a36Sopenharmony_ci def_bool PPC64 && $(cc-option, -mabi=elfv2) 662306a36Sopenharmony_ci 762306a36Sopenharmony_ciconfig CC_HAS_PREFIXED 862306a36Sopenharmony_ci def_bool PPC64 && $(cc-option, -mcpu=power10 -mprefixed) 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ciconfig CC_HAS_PCREL 1162306a36Sopenharmony_ci # Clang has a bug (https://github.com/llvm/llvm-project/issues/62372) 1262306a36Sopenharmony_ci # where pcrel code is not generated if -msoft-float, -mno-altivec, or 1362306a36Sopenharmony_ci # -mno-vsx options are also given. Without these options, fp/vec 1462306a36Sopenharmony_ci # instructions are generated from regular kernel code. So Clang can't 1562306a36Sopenharmony_ci # do pcrel yet. 1662306a36Sopenharmony_ci def_bool PPC64 && CC_IS_GCC && $(cc-option, -mcpu=power10 -mpcrel) 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciconfig 32BIT 1962306a36Sopenharmony_ci bool 2062306a36Sopenharmony_ci default y if PPC32 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ciconfig 64BIT 2362306a36Sopenharmony_ci bool 2462306a36Sopenharmony_ci default y if PPC64 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ciconfig LIVEPATCH_64 2762306a36Sopenharmony_ci def_bool PPC64 2862306a36Sopenharmony_ci depends on LIVEPATCH 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciconfig MMU 3162306a36Sopenharmony_ci bool 3262306a36Sopenharmony_ci default y 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MAX 3562306a36Sopenharmony_ci # On Book3S 64, the default virtual address space for 64-bit processes 3662306a36Sopenharmony_ci # is 2^47 (128TB). As a maximum, allow randomisation to consume up to 3762306a36Sopenharmony_ci # 32T of address space (2^45), which should ensure a reasonable gap 3862306a36Sopenharmony_ci # between bottom-up and top-down allocations for applications that 3962306a36Sopenharmony_ci # consume "normal" amounts of address space. Book3S 64 only supports 64K 4062306a36Sopenharmony_ci # and 4K page sizes. 4162306a36Sopenharmony_ci default 29 if PPC_BOOK3S_64 && PPC_64K_PAGES # 29 = 45 (32T) - 16 (64K) 4262306a36Sopenharmony_ci default 33 if PPC_BOOK3S_64 # 33 = 45 (32T) - 12 (4K) 4362306a36Sopenharmony_ci # 4462306a36Sopenharmony_ci # On all other 64-bit platforms (currently only Book3E), the virtual 4562306a36Sopenharmony_ci # address space is 2^46 (64TB). Allow randomisation to consume up to 16T 4662306a36Sopenharmony_ci # of address space (2^44). Only 4K page sizes are supported. 4762306a36Sopenharmony_ci default 32 if 64BIT # 32 = 44 (16T) - 12 (4K) 4862306a36Sopenharmony_ci # 4962306a36Sopenharmony_ci # For 32-bit, use the compat values, as they're the same. 5062306a36Sopenharmony_ci default ARCH_MMAP_RND_COMPAT_BITS_MAX 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ciconfig ARCH_MMAP_RND_BITS_MIN 5362306a36Sopenharmony_ci # Allow randomisation to consume up to 1GB of address space (2^30). 5462306a36Sopenharmony_ci default 14 if 64BIT && PPC_64K_PAGES # 14 = 30 (1GB) - 16 (64K) 5562306a36Sopenharmony_ci default 18 if 64BIT # 18 = 30 (1GB) - 12 (4K) 5662306a36Sopenharmony_ci # 5762306a36Sopenharmony_ci # For 32-bit, use the compat values, as they're the same. 5862306a36Sopenharmony_ci default ARCH_MMAP_RND_COMPAT_BITS_MIN 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ciconfig ARCH_MMAP_RND_COMPAT_BITS_MAX 6162306a36Sopenharmony_ci # Total virtual address space for 32-bit processes is 2^31 (2GB). 6262306a36Sopenharmony_ci # Allow randomisation to consume up to 512MB of address space (2^29). 6362306a36Sopenharmony_ci default 11 if PPC_256K_PAGES # 11 = 29 (512MB) - 18 (256K) 6462306a36Sopenharmony_ci default 13 if PPC_64K_PAGES # 13 = 29 (512MB) - 16 (64K) 6562306a36Sopenharmony_ci default 15 if PPC_16K_PAGES # 15 = 29 (512MB) - 14 (16K) 6662306a36Sopenharmony_ci default 17 # 17 = 29 (512MB) - 12 (4K) 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ciconfig ARCH_MMAP_RND_COMPAT_BITS_MIN 6962306a36Sopenharmony_ci # Total virtual address space for 32-bit processes is 2^31 (2GB). 7062306a36Sopenharmony_ci # Allow randomisation to consume up to 8MB of address space (2^23). 7162306a36Sopenharmony_ci default 5 if PPC_256K_PAGES # 5 = 23 (8MB) - 18 (256K) 7262306a36Sopenharmony_ci default 7 if PPC_64K_PAGES # 7 = 23 (8MB) - 16 (64K) 7362306a36Sopenharmony_ci default 9 if PPC_16K_PAGES # 9 = 23 (8MB) - 14 (16K) 7462306a36Sopenharmony_ci default 11 # 11 = 23 (8MB) - 12 (4K) 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ciconfig NR_IRQS 7762306a36Sopenharmony_ci int "Number of virtual interrupt numbers" 7862306a36Sopenharmony_ci range 32 1048576 7962306a36Sopenharmony_ci default "512" 8062306a36Sopenharmony_ci help 8162306a36Sopenharmony_ci This defines the number of virtual interrupt numbers the kernel 8262306a36Sopenharmony_ci can manage. Virtual interrupt numbers are what you see in 8362306a36Sopenharmony_ci /proc/interrupts. If you configure your system to have too few, 8462306a36Sopenharmony_ci drivers will fail to load or worse - handle with care. 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ciconfig NMI_IPI 8762306a36Sopenharmony_ci bool 8862306a36Sopenharmony_ci depends on SMP && (DEBUGGER || KEXEC_CORE || HARDLOCKUP_DETECTOR) 8962306a36Sopenharmony_ci default y 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ciconfig PPC_WATCHDOG 9262306a36Sopenharmony_ci bool 9362306a36Sopenharmony_ci depends on HARDLOCKUP_DETECTOR_ARCH 9462306a36Sopenharmony_ci default y 9562306a36Sopenharmony_ci help 9662306a36Sopenharmony_ci This is a placeholder when the powerpc hardlockup detector 9762306a36Sopenharmony_ci watchdog is selected (arch/powerpc/kernel/watchdog.c). It is 9862306a36Sopenharmony_ci selected via the generic lockup detector menu which is why we 9962306a36Sopenharmony_ci have no standalone config option for it here. 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ciconfig STACKTRACE_SUPPORT 10262306a36Sopenharmony_ci bool 10362306a36Sopenharmony_ci default y 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ciconfig LOCKDEP_SUPPORT 10662306a36Sopenharmony_ci bool 10762306a36Sopenharmony_ci default y 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ciconfig GENERIC_LOCKBREAK 11062306a36Sopenharmony_ci bool 11162306a36Sopenharmony_ci default y 11262306a36Sopenharmony_ci depends on SMP && PREEMPTION && !PPC_QUEUED_SPINLOCKS 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ciconfig GENERIC_HWEIGHT 11562306a36Sopenharmony_ci bool 11662306a36Sopenharmony_ci default y 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ciconfig PPC 11962306a36Sopenharmony_ci bool 12062306a36Sopenharmony_ci default y 12162306a36Sopenharmony_ci # 12262306a36Sopenharmony_ci # Please keep this list sorted alphabetically. 12362306a36Sopenharmony_ci # 12462306a36Sopenharmony_ci select ARCH_32BIT_OFF_T if PPC32 12562306a36Sopenharmony_ci select ARCH_DISABLE_KASAN_INLINE if PPC_RADIX_MMU 12662306a36Sopenharmony_ci select ARCH_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE 12762306a36Sopenharmony_ci select ARCH_ENABLE_MEMORY_HOTPLUG 12862306a36Sopenharmony_ci select ARCH_ENABLE_MEMORY_HOTREMOVE 12962306a36Sopenharmony_ci select ARCH_HAS_COPY_MC if PPC64 13062306a36Sopenharmony_ci select ARCH_HAS_CURRENT_STACK_POINTER 13162306a36Sopenharmony_ci select ARCH_HAS_DEBUG_VIRTUAL 13262306a36Sopenharmony_ci select ARCH_HAS_DEBUG_VM_PGTABLE 13362306a36Sopenharmony_ci select ARCH_HAS_DEBUG_WX if STRICT_KERNEL_RWX 13462306a36Sopenharmony_ci select ARCH_HAS_DEVMEM_IS_ALLOWED 13562306a36Sopenharmony_ci select ARCH_HAS_DMA_MAP_DIRECT if PPC_PSERIES 13662306a36Sopenharmony_ci select ARCH_HAS_FORTIFY_SOURCE 13762306a36Sopenharmony_ci select ARCH_HAS_GCOV_PROFILE_ALL 13862306a36Sopenharmony_ci select ARCH_HAS_HUGEPD if HUGETLB_PAGE 13962306a36Sopenharmony_ci select ARCH_HAS_KCOV 14062306a36Sopenharmony_ci select ARCH_HAS_MEMBARRIER_CALLBACKS 14162306a36Sopenharmony_ci select ARCH_HAS_MEMBARRIER_SYNC_CORE 14262306a36Sopenharmony_ci select ARCH_HAS_MEMREMAP_COMPAT_ALIGN if PPC_64S_HASH_MMU 14362306a36Sopenharmony_ci select ARCH_HAS_MMIOWB if PPC64 14462306a36Sopenharmony_ci select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 14562306a36Sopenharmony_ci select ARCH_HAS_PHYS_TO_DMA 14662306a36Sopenharmony_ci select ARCH_HAS_PMEM_API 14762306a36Sopenharmony_ci select ARCH_HAS_PTE_DEVMAP if PPC_BOOK3S_64 14862306a36Sopenharmony_ci select ARCH_HAS_PTE_SPECIAL 14962306a36Sopenharmony_ci select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE && PPC_BOOK3S_64 15062306a36Sopenharmony_ci select ARCH_HAS_SET_MEMORY 15162306a36Sopenharmony_ci select ARCH_HAS_STRICT_KERNEL_RWX if (PPC_BOOK3S || PPC_8xx || 40x) && !HIBERNATION 15262306a36Sopenharmony_ci select ARCH_HAS_STRICT_KERNEL_RWX if PPC_85xx && !HIBERNATION && !RANDOMIZE_BASE 15362306a36Sopenharmony_ci select ARCH_HAS_STRICT_MODULE_RWX if ARCH_HAS_STRICT_KERNEL_RWX 15462306a36Sopenharmony_ci select ARCH_HAS_SYSCALL_WRAPPER if !SPU_BASE && !COMPAT 15562306a36Sopenharmony_ci select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 15662306a36Sopenharmony_ci select ARCH_HAS_UACCESS_FLUSHCACHE 15762306a36Sopenharmony_ci select ARCH_HAS_UBSAN_SANITIZE_ALL 15862306a36Sopenharmony_ci select ARCH_HAVE_NMI_SAFE_CMPXCHG 15962306a36Sopenharmony_ci select ARCH_KEEP_MEMBLOCK 16062306a36Sopenharmony_ci select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if PPC_RADIX_MMU 16162306a36Sopenharmony_ci select ARCH_MIGHT_HAVE_PC_PARPORT 16262306a36Sopenharmony_ci select ARCH_MIGHT_HAVE_PC_SERIO 16362306a36Sopenharmony_ci select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX 16462306a36Sopenharmony_ci select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT 16562306a36Sopenharmony_ci select ARCH_SPLIT_ARG64 if PPC32 16662306a36Sopenharmony_ci select ARCH_STACKWALK 16762306a36Sopenharmony_ci select ARCH_SUPPORTS_ATOMIC_RMW 16862306a36Sopenharmony_ci select ARCH_SUPPORTS_DEBUG_PAGEALLOC if PPC_BOOK3S || PPC_8xx || 40x 16962306a36Sopenharmony_ci select ARCH_USE_BUILTIN_BSWAP 17062306a36Sopenharmony_ci select ARCH_USE_CMPXCHG_LOCKREF if PPC64 17162306a36Sopenharmony_ci select ARCH_USE_MEMTEST 17262306a36Sopenharmony_ci select ARCH_USE_QUEUED_RWLOCKS if PPC_QUEUED_SPINLOCKS 17362306a36Sopenharmony_ci select ARCH_WANT_DEFAULT_BPF_JIT 17462306a36Sopenharmony_ci select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT 17562306a36Sopenharmony_ci select ARCH_WANT_IPC_PARSE_VERSION 17662306a36Sopenharmony_ci select ARCH_WANT_IRQS_OFF_ACTIVATE_MM 17762306a36Sopenharmony_ci select ARCH_WANT_LD_ORPHAN_WARN 17862306a36Sopenharmony_ci select ARCH_WANT_OPTIMIZE_DAX_VMEMMAP if PPC_RADIX_MMU 17962306a36Sopenharmony_ci select ARCH_WANTS_MODULES_DATA_IN_VMALLOC if PPC_BOOK3S_32 || PPC_8xx 18062306a36Sopenharmony_ci select ARCH_WEAK_RELEASE_ACQUIRE 18162306a36Sopenharmony_ci select BINFMT_ELF 18262306a36Sopenharmony_ci select BUILDTIME_TABLE_SORT 18362306a36Sopenharmony_ci select CLONE_BACKWARDS 18462306a36Sopenharmony_ci select CPUMASK_OFFSTACK if NR_CPUS >= 8192 18562306a36Sopenharmony_ci select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN 18662306a36Sopenharmony_ci select DMA_OPS_BYPASS if PPC64 18762306a36Sopenharmony_ci select DMA_OPS if PPC64 18862306a36Sopenharmony_ci select DYNAMIC_FTRACE if FUNCTION_TRACER 18962306a36Sopenharmony_ci select EDAC_ATOMIC_SCRUB 19062306a36Sopenharmony_ci select EDAC_SUPPORT 19162306a36Sopenharmony_ci select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if ARCH_USING_PATCHABLE_FUNCTION_ENTRY 19262306a36Sopenharmony_ci select GENERIC_ATOMIC64 if PPC32 19362306a36Sopenharmony_ci select GENERIC_CLOCKEVENTS_BROADCAST if SMP 19462306a36Sopenharmony_ci select GENERIC_CMOS_UPDATE 19562306a36Sopenharmony_ci select GENERIC_CPU_AUTOPROBE 19662306a36Sopenharmony_ci select GENERIC_CPU_VULNERABILITIES if PPC_BARRIER_NOSPEC 19762306a36Sopenharmony_ci select GENERIC_EARLY_IOREMAP 19862306a36Sopenharmony_ci select GENERIC_GETTIMEOFDAY 19962306a36Sopenharmony_ci select GENERIC_IDLE_POLL_SETUP 20062306a36Sopenharmony_ci select GENERIC_IOREMAP 20162306a36Sopenharmony_ci select GENERIC_IRQ_SHOW 20262306a36Sopenharmony_ci select GENERIC_IRQ_SHOW_LEVEL 20362306a36Sopenharmony_ci select GENERIC_PCI_IOMAP if PCI 20462306a36Sopenharmony_ci select GENERIC_PTDUMP 20562306a36Sopenharmony_ci select GENERIC_SMP_IDLE_THREAD 20662306a36Sopenharmony_ci select GENERIC_TIME_VSYSCALL 20762306a36Sopenharmony_ci select GENERIC_VDSO_TIME_NS 20862306a36Sopenharmony_ci select HAS_IOPORT if PCI 20962306a36Sopenharmony_ci select HAVE_ARCH_AUDITSYSCALL 21062306a36Sopenharmony_ci select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP 21162306a36Sopenharmony_ci select HAVE_ARCH_HUGE_VMAP if PPC_RADIX_MMU || PPC_8xx 21262306a36Sopenharmony_ci select HAVE_ARCH_JUMP_LABEL 21362306a36Sopenharmony_ci select HAVE_ARCH_JUMP_LABEL_RELATIVE 21462306a36Sopenharmony_ci select HAVE_ARCH_KASAN if PPC32 && PPC_PAGE_SHIFT <= 14 21562306a36Sopenharmony_ci select HAVE_ARCH_KASAN if PPC_RADIX_MMU 21662306a36Sopenharmony_ci select HAVE_ARCH_KASAN if PPC_BOOK3E_64 21762306a36Sopenharmony_ci select HAVE_ARCH_KASAN_VMALLOC if HAVE_ARCH_KASAN 21862306a36Sopenharmony_ci select HAVE_ARCH_KCSAN 21962306a36Sopenharmony_ci select HAVE_ARCH_KFENCE if ARCH_SUPPORTS_DEBUG_PAGEALLOC 22062306a36Sopenharmony_ci select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET 22162306a36Sopenharmony_ci select HAVE_ARCH_WITHIN_STACK_FRAMES 22262306a36Sopenharmony_ci select HAVE_ARCH_KGDB 22362306a36Sopenharmony_ci select HAVE_ARCH_MMAP_RND_BITS 22462306a36Sopenharmony_ci select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT 22562306a36Sopenharmony_ci select HAVE_ARCH_NVRAM_OPS 22662306a36Sopenharmony_ci select HAVE_ARCH_SECCOMP_FILTER 22762306a36Sopenharmony_ci select HAVE_ARCH_TRACEHOOK 22862306a36Sopenharmony_ci select HAVE_ASM_MODVERSIONS 22962306a36Sopenharmony_ci select HAVE_CONTEXT_TRACKING_USER 23062306a36Sopenharmony_ci select HAVE_C_RECORDMCOUNT 23162306a36Sopenharmony_ci select HAVE_DEBUG_KMEMLEAK 23262306a36Sopenharmony_ci select HAVE_DEBUG_STACKOVERFLOW 23362306a36Sopenharmony_ci select HAVE_DYNAMIC_FTRACE 23462306a36Sopenharmony_ci select HAVE_DYNAMIC_FTRACE_WITH_ARGS if ARCH_USING_PATCHABLE_FUNCTION_ENTRY || MPROFILE_KERNEL || PPC32 23562306a36Sopenharmony_ci select HAVE_DYNAMIC_FTRACE_WITH_REGS if ARCH_USING_PATCHABLE_FUNCTION_ENTRY || MPROFILE_KERNEL || PPC32 23662306a36Sopenharmony_ci select HAVE_EBPF_JIT 23762306a36Sopenharmony_ci select HAVE_EFFICIENT_UNALIGNED_ACCESS 23862306a36Sopenharmony_ci select HAVE_FAST_GUP 23962306a36Sopenharmony_ci select HAVE_FTRACE_MCOUNT_RECORD 24062306a36Sopenharmony_ci select HAVE_FUNCTION_DESCRIPTORS if PPC64_ELF_ABI_V1 24162306a36Sopenharmony_ci select HAVE_FUNCTION_ERROR_INJECTION 24262306a36Sopenharmony_ci select HAVE_FUNCTION_GRAPH_TRACER 24362306a36Sopenharmony_ci select HAVE_FUNCTION_TRACER if PPC64 || (PPC32 && CC_IS_GCC) 24462306a36Sopenharmony_ci select HAVE_GCC_PLUGINS if GCC_VERSION >= 50200 # plugin support on gcc <= 5.1 is buggy on PPC 24562306a36Sopenharmony_ci select HAVE_GENERIC_VDSO 24662306a36Sopenharmony_ci select HAVE_HARDLOCKUP_DETECTOR_ARCH if PPC_BOOK3S_64 && SMP 24762306a36Sopenharmony_ci select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI 24862306a36Sopenharmony_ci select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx) 24962306a36Sopenharmony_ci select HAVE_IOREMAP_PROT 25062306a36Sopenharmony_ci select HAVE_IRQ_TIME_ACCOUNTING 25162306a36Sopenharmony_ci select HAVE_KERNEL_GZIP 25262306a36Sopenharmony_ci select HAVE_KERNEL_LZMA if DEFAULT_UIMAGE 25362306a36Sopenharmony_ci select HAVE_KERNEL_LZO if DEFAULT_UIMAGE 25462306a36Sopenharmony_ci select HAVE_KERNEL_XZ if PPC_BOOK3S || 44x 25562306a36Sopenharmony_ci select HAVE_KPROBES 25662306a36Sopenharmony_ci select HAVE_KPROBES_ON_FTRACE 25762306a36Sopenharmony_ci select HAVE_KRETPROBES 25862306a36Sopenharmony_ci select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if HAVE_OBJTOOL_MCOUNT && (!ARCH_USING_PATCHABLE_FUNCTION_ENTRY || (!CC_IS_GCC || GCC_VERSION >= 110100)) 25962306a36Sopenharmony_ci select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS 26062306a36Sopenharmony_ci select HAVE_MOD_ARCH_SPECIFIC 26162306a36Sopenharmony_ci select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S) 26262306a36Sopenharmony_ci select HAVE_OPTPROBES 26362306a36Sopenharmony_ci select HAVE_OBJTOOL if ARCH_USING_PATCHABLE_FUNCTION_ENTRY || MPROFILE_KERNEL || PPC32 26462306a36Sopenharmony_ci select HAVE_OBJTOOL_MCOUNT if HAVE_OBJTOOL 26562306a36Sopenharmony_ci select HAVE_PERF_EVENTS 26662306a36Sopenharmony_ci select HAVE_PERF_EVENTS_NMI if PPC64 26762306a36Sopenharmony_ci select HAVE_PERF_REGS 26862306a36Sopenharmony_ci select HAVE_PERF_USER_STACK_DUMP 26962306a36Sopenharmony_ci select HAVE_REGS_AND_STACK_ACCESS_API 27062306a36Sopenharmony_ci select HAVE_RELIABLE_STACKTRACE 27162306a36Sopenharmony_ci select HAVE_RSEQ 27262306a36Sopenharmony_ci select HAVE_SETUP_PER_CPU_AREA if PPC64 27362306a36Sopenharmony_ci select HAVE_SOFTIRQ_ON_OWN_STACK 27462306a36Sopenharmony_ci select HAVE_STACKPROTECTOR if PPC32 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r2) 27562306a36Sopenharmony_ci select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13) 27662306a36Sopenharmony_ci select HAVE_STATIC_CALL if PPC32 27762306a36Sopenharmony_ci select HAVE_SYSCALL_TRACEPOINTS 27862306a36Sopenharmony_ci select HAVE_VIRT_CPU_ACCOUNTING 27962306a36Sopenharmony_ci select HAVE_VIRT_CPU_ACCOUNTING_GEN 28062306a36Sopenharmony_ci select HOTPLUG_SMT if HOTPLUG_CPU 28162306a36Sopenharmony_ci select SMT_NUM_THREADS_DYNAMIC 28262306a36Sopenharmony_ci select HUGETLB_PAGE_SIZE_VARIABLE if PPC_BOOK3S_64 && HUGETLB_PAGE 28362306a36Sopenharmony_ci select IOMMU_HELPER if PPC64 28462306a36Sopenharmony_ci select IRQ_DOMAIN 28562306a36Sopenharmony_ci select IRQ_FORCED_THREADING 28662306a36Sopenharmony_ci select KASAN_VMALLOC if KASAN && MODULES 28762306a36Sopenharmony_ci select LOCK_MM_AND_FIND_VMA 28862306a36Sopenharmony_ci select MMU_GATHER_PAGE_SIZE 28962306a36Sopenharmony_ci select MMU_GATHER_RCU_TABLE_FREE 29062306a36Sopenharmony_ci select MMU_GATHER_MERGE_VMAS 29162306a36Sopenharmony_ci select MMU_LAZY_TLB_SHOOTDOWN if PPC_BOOK3S_64 29262306a36Sopenharmony_ci select MODULES_USE_ELF_RELA 29362306a36Sopenharmony_ci select NEED_DMA_MAP_STATE if PPC64 || NOT_COHERENT_CACHE 29462306a36Sopenharmony_ci select NEED_PER_CPU_EMBED_FIRST_CHUNK if PPC64 29562306a36Sopenharmony_ci select NEED_PER_CPU_PAGE_FIRST_CHUNK if PPC64 29662306a36Sopenharmony_ci select NEED_SG_DMA_LENGTH 29762306a36Sopenharmony_ci select OF 29862306a36Sopenharmony_ci select OF_EARLY_FLATTREE 29962306a36Sopenharmony_ci select OLD_SIGACTION if PPC32 30062306a36Sopenharmony_ci select OLD_SIGSUSPEND 30162306a36Sopenharmony_ci select PCI_DOMAINS if PCI 30262306a36Sopenharmony_ci select PCI_MSI_ARCH_FALLBACKS if PCI_MSI 30362306a36Sopenharmony_ci select PCI_SYSCALL if PCI 30462306a36Sopenharmony_ci select PPC_DAWR if PPC64 30562306a36Sopenharmony_ci select RTC_LIB 30662306a36Sopenharmony_ci select SPARSE_IRQ 30762306a36Sopenharmony_ci select STRICT_KERNEL_RWX if STRICT_MODULE_RWX 30862306a36Sopenharmony_ci select SYSCTL_EXCEPTION_TRACE 30962306a36Sopenharmony_ci select THREAD_INFO_IN_TASK 31062306a36Sopenharmony_ci select TRACE_IRQFLAGS_SUPPORT 31162306a36Sopenharmony_ci # 31262306a36Sopenharmony_ci # Please keep this list sorted alphabetically. 31362306a36Sopenharmony_ci # 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ciconfig PPC_BARRIER_NOSPEC 31662306a36Sopenharmony_ci bool 31762306a36Sopenharmony_ci default y 31862306a36Sopenharmony_ci depends on PPC_BOOK3S_64 || PPC_E500 31962306a36Sopenharmony_ci 32062306a36Sopenharmony_ciconfig PPC_HAS_LBARX_LHARX 32162306a36Sopenharmony_ci bool 32262306a36Sopenharmony_ci 32362306a36Sopenharmony_ciconfig EARLY_PRINTK 32462306a36Sopenharmony_ci bool 32562306a36Sopenharmony_ci default y 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_ciconfig PANIC_TIMEOUT 32862306a36Sopenharmony_ci int 32962306a36Sopenharmony_ci default 180 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_ciconfig COMPAT 33262306a36Sopenharmony_ci bool "Enable support for 32bit binaries" 33362306a36Sopenharmony_ci depends on PPC64 33462306a36Sopenharmony_ci depends on !CC_IS_CLANG || CLANG_VERSION >= 120000 33562306a36Sopenharmony_ci default y if !CPU_LITTLE_ENDIAN 33662306a36Sopenharmony_ci select ARCH_WANT_OLD_COMPAT_IPC 33762306a36Sopenharmony_ci select COMPAT_OLD_SIGACTION 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_ciconfig SCHED_OMIT_FRAME_POINTER 34062306a36Sopenharmony_ci bool 34162306a36Sopenharmony_ci default y 34262306a36Sopenharmony_ci 34362306a36Sopenharmony_ciconfig ARCH_MAY_HAVE_PC_FDC 34462306a36Sopenharmony_ci bool 34562306a36Sopenharmony_ci default PCI 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ciconfig PPC_UDBG_16550 34862306a36Sopenharmony_ci bool 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ciconfig GENERIC_TBSYNC 35162306a36Sopenharmony_ci bool 35262306a36Sopenharmony_ci default y if PPC32 && SMP 35362306a36Sopenharmony_ci 35462306a36Sopenharmony_ciconfig AUDIT_ARCH 35562306a36Sopenharmony_ci bool 35662306a36Sopenharmony_ci default y 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_ciconfig GENERIC_BUG 35962306a36Sopenharmony_ci bool 36062306a36Sopenharmony_ci default y 36162306a36Sopenharmony_ci depends on BUG 36262306a36Sopenharmony_ci 36362306a36Sopenharmony_ciconfig GENERIC_BUG_RELATIVE_POINTERS 36462306a36Sopenharmony_ci def_bool y 36562306a36Sopenharmony_ci depends on GENERIC_BUG 36662306a36Sopenharmony_ci 36762306a36Sopenharmony_ciconfig SYS_SUPPORTS_APM_EMULATION 36862306a36Sopenharmony_ci default y if PMAC_APM_EMU 36962306a36Sopenharmony_ci bool 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ciconfig EPAPR_BOOT 37262306a36Sopenharmony_ci bool 37362306a36Sopenharmony_ci help 37462306a36Sopenharmony_ci Used to allow a board to specify it wants an ePAPR compliant wrapper. 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_ciconfig DEFAULT_UIMAGE 37762306a36Sopenharmony_ci bool 37862306a36Sopenharmony_ci help 37962306a36Sopenharmony_ci Used to allow a board to specify it wants a uImage built by default 38062306a36Sopenharmony_ci 38162306a36Sopenharmony_ciconfig ARCH_HIBERNATION_POSSIBLE 38262306a36Sopenharmony_ci bool 38362306a36Sopenharmony_ci default y 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ciconfig ARCH_SUSPEND_POSSIBLE 38662306a36Sopenharmony_ci def_bool y 38762306a36Sopenharmony_ci depends on ADB_PMU || PPC_EFIKA || PPC_LITE5200 || PPC_83xx || \ 38862306a36Sopenharmony_ci (PPC_85xx && !PPC_E500MC) || PPC_86xx || PPC_PSERIES \ 38962306a36Sopenharmony_ci || 44x || 40x 39062306a36Sopenharmony_ci 39162306a36Sopenharmony_ciconfig ARCH_SUSPEND_NONZERO_CPU 39262306a36Sopenharmony_ci def_bool y 39362306a36Sopenharmony_ci depends on PPC_POWERNV || PPC_PSERIES 39462306a36Sopenharmony_ci 39562306a36Sopenharmony_ciconfig ARCH_HAS_ADD_PAGES 39662306a36Sopenharmony_ci def_bool y 39762306a36Sopenharmony_ci depends on ARCH_ENABLE_MEMORY_HOTPLUG 39862306a36Sopenharmony_ci 39962306a36Sopenharmony_ciconfig PPC_DCR_NATIVE 40062306a36Sopenharmony_ci bool 40162306a36Sopenharmony_ci 40262306a36Sopenharmony_ciconfig PPC_DCR_MMIO 40362306a36Sopenharmony_ci bool 40462306a36Sopenharmony_ci 40562306a36Sopenharmony_ciconfig PPC_DCR 40662306a36Sopenharmony_ci bool 40762306a36Sopenharmony_ci depends on PPC_DCR_NATIVE || PPC_DCR_MMIO 40862306a36Sopenharmony_ci default y 40962306a36Sopenharmony_ci 41062306a36Sopenharmony_ciconfig PPC_PCI_OF_BUS_MAP 41162306a36Sopenharmony_ci bool "Use pci_to_OF_bus_map (deprecated)" 41262306a36Sopenharmony_ci depends on PPC32 41362306a36Sopenharmony_ci depends on PPC_PMAC || PPC_CHRP 41462306a36Sopenharmony_ci help 41562306a36Sopenharmony_ci This option uses pci_to_OF_bus_map to map OF nodes to PCI devices, which 41662306a36Sopenharmony_ci restricts the system to only having 256 PCI buses. On CHRP it also causes 41762306a36Sopenharmony_ci the "pci-OF-bus-map" property to be created in the device tree. 41862306a36Sopenharmony_ci 41962306a36Sopenharmony_ci If unsure, say "N". 42062306a36Sopenharmony_ci 42162306a36Sopenharmony_ciconfig PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT 42262306a36Sopenharmony_ci depends on PPC32 42362306a36Sopenharmony_ci depends on !PPC_PCI_OF_BUS_MAP 42462306a36Sopenharmony_ci bool "Assign PCI bus numbers from zero individually for each PCI domain" 42562306a36Sopenharmony_ci default y 42662306a36Sopenharmony_ci help 42762306a36Sopenharmony_ci By default on PPC32 were PCI bus numbers unique across all PCI domains. 42862306a36Sopenharmony_ci So system could have only 256 PCI buses independently of available 42962306a36Sopenharmony_ci PCI domains. When this option is enabled then PCI bus numbers are 43062306a36Sopenharmony_ci PCI domain dependent and each PCI controller on own domain can have 43162306a36Sopenharmony_ci 256 PCI buses, like it is on other Linux architectures. 43262306a36Sopenharmony_ci 43362306a36Sopenharmony_ciconfig PPC_OF_PLATFORM_PCI 43462306a36Sopenharmony_ci bool 43562306a36Sopenharmony_ci depends on PCI 43662306a36Sopenharmony_ci depends on PPC64 # not supported on 32 bits yet 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_ciconfig ARCH_SUPPORTS_UPROBES 43962306a36Sopenharmony_ci def_bool y 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_ciconfig PPC_ADV_DEBUG_REGS 44262306a36Sopenharmony_ci bool 44362306a36Sopenharmony_ci depends on 40x || BOOKE 44462306a36Sopenharmony_ci default y 44562306a36Sopenharmony_ci 44662306a36Sopenharmony_ciconfig PPC_ADV_DEBUG_IACS 44762306a36Sopenharmony_ci int 44862306a36Sopenharmony_ci depends on PPC_ADV_DEBUG_REGS 44962306a36Sopenharmony_ci default 4 if 44x 45062306a36Sopenharmony_ci default 2 45162306a36Sopenharmony_ci 45262306a36Sopenharmony_ciconfig PPC_ADV_DEBUG_DACS 45362306a36Sopenharmony_ci int 45462306a36Sopenharmony_ci depends on PPC_ADV_DEBUG_REGS 45562306a36Sopenharmony_ci default 2 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_ciconfig PPC_ADV_DEBUG_DVCS 45862306a36Sopenharmony_ci int 45962306a36Sopenharmony_ci depends on PPC_ADV_DEBUG_REGS 46062306a36Sopenharmony_ci default 2 if 44x 46162306a36Sopenharmony_ci default 0 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_ciconfig PPC_ADV_DEBUG_DAC_RANGE 46462306a36Sopenharmony_ci bool 46562306a36Sopenharmony_ci depends on PPC_ADV_DEBUG_REGS && 44x 46662306a36Sopenharmony_ci default y 46762306a36Sopenharmony_ci 46862306a36Sopenharmony_ciconfig PPC_DAWR 46962306a36Sopenharmony_ci bool 47062306a36Sopenharmony_ci 47162306a36Sopenharmony_ciconfig PGTABLE_LEVELS 47262306a36Sopenharmony_ci int 47362306a36Sopenharmony_ci default 2 if !PPC64 47462306a36Sopenharmony_ci default 4 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_cisource "arch/powerpc/sysdev/Kconfig" 47762306a36Sopenharmony_cisource "arch/powerpc/platforms/Kconfig" 47862306a36Sopenharmony_ci 47962306a36Sopenharmony_cimenu "Kernel options" 48062306a36Sopenharmony_ci 48162306a36Sopenharmony_ciconfig HIGHMEM 48262306a36Sopenharmony_ci bool "High memory support" 48362306a36Sopenharmony_ci depends on PPC32 48462306a36Sopenharmony_ci select KMAP_LOCAL 48562306a36Sopenharmony_ci 48662306a36Sopenharmony_cisource "kernel/Kconfig.hz" 48762306a36Sopenharmony_ci 48862306a36Sopenharmony_ciconfig MATH_EMULATION 48962306a36Sopenharmony_ci bool "Math emulation" 49062306a36Sopenharmony_ci depends on 4xx || PPC_8xx || PPC_MPC832x || BOOKE || PPC_MICROWATT 49162306a36Sopenharmony_ci select PPC_FPU_REGS 49262306a36Sopenharmony_ci help 49362306a36Sopenharmony_ci Some PowerPC chips designed for embedded applications do not have 49462306a36Sopenharmony_ci a floating-point unit and therefore do not implement the 49562306a36Sopenharmony_ci floating-point instructions in the PowerPC instruction set. If you 49662306a36Sopenharmony_ci say Y here, the kernel will include code to emulate a floating-point 49762306a36Sopenharmony_ci unit, which will allow programs that use floating-point 49862306a36Sopenharmony_ci instructions to run. 49962306a36Sopenharmony_ci 50062306a36Sopenharmony_ci This is also useful to emulate missing (optional) instructions 50162306a36Sopenharmony_ci such as fsqrt on cores that do have an FPU but do not implement 50262306a36Sopenharmony_ci them (such as Freescale BookE). 50362306a36Sopenharmony_ci 50462306a36Sopenharmony_cichoice 50562306a36Sopenharmony_ci prompt "Math emulation options" 50662306a36Sopenharmony_ci default MATH_EMULATION_FULL 50762306a36Sopenharmony_ci depends on MATH_EMULATION 50862306a36Sopenharmony_ci 50962306a36Sopenharmony_ciconfig MATH_EMULATION_FULL 51062306a36Sopenharmony_ci bool "Emulate all the floating point instructions" 51162306a36Sopenharmony_ci help 51262306a36Sopenharmony_ci Select this option will enable the kernel to support to emulate 51362306a36Sopenharmony_ci all the floating point instructions. If your SoC doesn't have 51462306a36Sopenharmony_ci a FPU, you should select this. 51562306a36Sopenharmony_ci 51662306a36Sopenharmony_ciconfig MATH_EMULATION_HW_UNIMPLEMENTED 51762306a36Sopenharmony_ci bool "Just emulate the FPU unimplemented instructions" 51862306a36Sopenharmony_ci help 51962306a36Sopenharmony_ci Select this if you know there does have a hardware FPU on your 52062306a36Sopenharmony_ci SoC, but some floating point instructions are not implemented by that. 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_ciendchoice 52362306a36Sopenharmony_ci 52462306a36Sopenharmony_ciconfig PPC_TRANSACTIONAL_MEM 52562306a36Sopenharmony_ci bool "Transactional Memory support for POWERPC" 52662306a36Sopenharmony_ci depends on PPC_BOOK3S_64 52762306a36Sopenharmony_ci depends on SMP 52862306a36Sopenharmony_ci select ALTIVEC 52962306a36Sopenharmony_ci select VSX 53062306a36Sopenharmony_ci help 53162306a36Sopenharmony_ci Support user-mode Transactional Memory on POWERPC. 53262306a36Sopenharmony_ci 53362306a36Sopenharmony_ciconfig PPC_UV 53462306a36Sopenharmony_ci bool "Ultravisor support" 53562306a36Sopenharmony_ci depends on KVM_BOOK3S_HV_POSSIBLE 53662306a36Sopenharmony_ci depends on DEVICE_PRIVATE 53762306a36Sopenharmony_ci default n 53862306a36Sopenharmony_ci help 53962306a36Sopenharmony_ci This option paravirtualizes the kernel to run in POWER platforms that 54062306a36Sopenharmony_ci supports the Protected Execution Facility (PEF). On such platforms, 54162306a36Sopenharmony_ci the ultravisor firmware runs at a privilege level above the 54262306a36Sopenharmony_ci hypervisor. 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ci If unsure, say "N". 54562306a36Sopenharmony_ci 54662306a36Sopenharmony_ciconfig LD_HEAD_STUB_CATCH 54762306a36Sopenharmony_ci bool "Reserve 256 bytes to cope with linker stubs in HEAD text" if EXPERT 54862306a36Sopenharmony_ci depends on PPC64 54962306a36Sopenharmony_ci help 55062306a36Sopenharmony_ci Very large kernels can cause linker branch stubs to be generated by 55162306a36Sopenharmony_ci code in head_64.S, which moves the head text sections out of their 55262306a36Sopenharmony_ci specified location. This option can work around the problem. 55362306a36Sopenharmony_ci 55462306a36Sopenharmony_ci If unsure, say "N". 55562306a36Sopenharmony_ci 55662306a36Sopenharmony_ciconfig MPROFILE_KERNEL 55762306a36Sopenharmony_ci depends on PPC64_ELF_ABI_V2 && FUNCTION_TRACER 55862306a36Sopenharmony_ci def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -mlittle-endian) if CPU_LITTLE_ENDIAN 55962306a36Sopenharmony_ci def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -mbig-endian) if CPU_BIG_ENDIAN 56062306a36Sopenharmony_ci 56162306a36Sopenharmony_ciconfig ARCH_USING_PATCHABLE_FUNCTION_ENTRY 56262306a36Sopenharmony_ci depends on FUNCTION_TRACER && (PPC32 || PPC64_ELF_ABI_V2) 56362306a36Sopenharmony_ci depends on $(cc-option,-fpatchable-function-entry=2) 56462306a36Sopenharmony_ci def_bool y if PPC32 56562306a36Sopenharmony_ci def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh $(CC) -mlittle-endian) if PPC64 && CPU_LITTLE_ENDIAN 56662306a36Sopenharmony_ci def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh $(CC) -mbig-endian) if PPC64 && CPU_BIG_ENDIAN 56762306a36Sopenharmony_ci 56862306a36Sopenharmony_ciconfig HOTPLUG_CPU 56962306a36Sopenharmony_ci bool "Support for enabling/disabling CPUs" 57062306a36Sopenharmony_ci depends on SMP && (PPC_PSERIES || \ 57162306a36Sopenharmony_ci PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE) 57262306a36Sopenharmony_ci help 57362306a36Sopenharmony_ci Say Y here to be able to disable and re-enable individual 57462306a36Sopenharmony_ci CPUs at runtime on SMP machines. 57562306a36Sopenharmony_ci 57662306a36Sopenharmony_ci Say N if you are unsure. 57762306a36Sopenharmony_ci 57862306a36Sopenharmony_ciconfig INTERRUPT_SANITIZE_REGISTERS 57962306a36Sopenharmony_ci bool "Clear gprs on interrupt arrival" 58062306a36Sopenharmony_ci depends on PPC64 && ARCH_HAS_SYSCALL_WRAPPER 58162306a36Sopenharmony_ci default PPC_BOOK3E_64 || PPC_PSERIES || PPC_POWERNV 58262306a36Sopenharmony_ci help 58362306a36Sopenharmony_ci Reduce the influence of user register state on interrupt handlers and 58462306a36Sopenharmony_ci syscalls through clearing user state from registers before handling 58562306a36Sopenharmony_ci the exception. 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_ciconfig PPC_QUEUED_SPINLOCKS 58862306a36Sopenharmony_ci bool "Queued spinlocks" if EXPERT 58962306a36Sopenharmony_ci depends on SMP 59062306a36Sopenharmony_ci default PPC_BOOK3S_64 59162306a36Sopenharmony_ci help 59262306a36Sopenharmony_ci Say Y here to use queued spinlocks which give better scalability and 59362306a36Sopenharmony_ci fairness on large SMP and NUMA systems without harming single threaded 59462306a36Sopenharmony_ci performance. 59562306a36Sopenharmony_ci 59662306a36Sopenharmony_ciconfig ARCH_CPU_PROBE_RELEASE 59762306a36Sopenharmony_ci def_bool y 59862306a36Sopenharmony_ci depends on HOTPLUG_CPU 59962306a36Sopenharmony_ci 60062306a36Sopenharmony_ciconfig PPC64_SUPPORTS_MEMORY_FAILURE 60162306a36Sopenharmony_ci bool "Add support for memory hwpoison" 60262306a36Sopenharmony_ci depends on PPC_BOOK3S_64 60362306a36Sopenharmony_ci default "y" if PPC_POWERNV 60462306a36Sopenharmony_ci select ARCH_SUPPORTS_MEMORY_FAILURE 60562306a36Sopenharmony_ci 60662306a36Sopenharmony_ciconfig ARCH_SUPPORTS_KEXEC 60762306a36Sopenharmony_ci def_bool PPC_BOOK3S || PPC_E500 || (44x && !SMP) 60862306a36Sopenharmony_ci 60962306a36Sopenharmony_ciconfig ARCH_SUPPORTS_KEXEC_FILE 61062306a36Sopenharmony_ci def_bool PPC64 61162306a36Sopenharmony_ci 61262306a36Sopenharmony_ciconfig ARCH_SUPPORTS_KEXEC_PURGATORY 61362306a36Sopenharmony_ci def_bool y 61462306a36Sopenharmony_ci 61562306a36Sopenharmony_ciconfig ARCH_SELECTS_KEXEC_FILE 61662306a36Sopenharmony_ci def_bool y 61762306a36Sopenharmony_ci depends on KEXEC_FILE 61862306a36Sopenharmony_ci select KEXEC_ELF 61962306a36Sopenharmony_ci select HAVE_IMA_KEXEC if IMA 62062306a36Sopenharmony_ci 62162306a36Sopenharmony_ciconfig PPC64_BIG_ENDIAN_ELF_ABI_V2 62262306a36Sopenharmony_ci # Option is available to BFD, but LLD does not support ELFv1 so this is 62362306a36Sopenharmony_ci # always true there. 62462306a36Sopenharmony_ci prompt "Build big-endian kernel using ELF ABI V2" if LD_IS_BFD && EXPERT 62562306a36Sopenharmony_ci def_bool y 62662306a36Sopenharmony_ci depends on PPC64 && CPU_BIG_ENDIAN 62762306a36Sopenharmony_ci depends on CC_HAS_ELFV2 62862306a36Sopenharmony_ci help 62962306a36Sopenharmony_ci This builds the kernel image using the "Power Architecture 64-Bit ELF 63062306a36Sopenharmony_ci V2 ABI Specification", which has a reduced stack overhead and faster 63162306a36Sopenharmony_ci function calls. This internal kernel ABI option does not affect 63262306a36Sopenharmony_ci userspace compatibility. 63362306a36Sopenharmony_ci 63462306a36Sopenharmony_ci The V2 ABI is standard for 64-bit little-endian, but for big-endian 63562306a36Sopenharmony_ci it is less well tested by kernel and toolchain. However some distros 63662306a36Sopenharmony_ci build userspace this way, and it can produce a functioning kernel. 63762306a36Sopenharmony_ci 63862306a36Sopenharmony_ciconfig RELOCATABLE 63962306a36Sopenharmony_ci bool "Build a relocatable kernel" 64062306a36Sopenharmony_ci depends on PPC64 || (FLATMEM && (44x || PPC_85xx)) 64162306a36Sopenharmony_ci select NONSTATIC_KERNEL 64262306a36Sopenharmony_ci help 64362306a36Sopenharmony_ci This builds a kernel image that is capable of running at the 64462306a36Sopenharmony_ci location the kernel is loaded at. For ppc32, there is no any 64562306a36Sopenharmony_ci alignment restrictions, and this feature is a superset of 64662306a36Sopenharmony_ci DYNAMIC_MEMSTART and hence overrides it. For ppc64, we should use 64762306a36Sopenharmony_ci 16k-aligned base address. The kernel is linked as a 64862306a36Sopenharmony_ci position-independent executable (PIE) and contains dynamic relocations 64962306a36Sopenharmony_ci which are processed early in the bootup process. 65062306a36Sopenharmony_ci 65162306a36Sopenharmony_ci One use is for the kexec on panic case where the recovery kernel 65262306a36Sopenharmony_ci must live at a different physical address than the primary 65362306a36Sopenharmony_ci kernel. 65462306a36Sopenharmony_ci 65562306a36Sopenharmony_ci Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address 65662306a36Sopenharmony_ci it has been loaded at and the compile time physical addresses 65762306a36Sopenharmony_ci CONFIG_PHYSICAL_START is ignored. However CONFIG_PHYSICAL_START 65862306a36Sopenharmony_ci setting can still be useful to bootwrappers that need to know the 65962306a36Sopenharmony_ci load address of the kernel (eg. u-boot/mkimage). 66062306a36Sopenharmony_ci 66162306a36Sopenharmony_ciconfig RANDOMIZE_BASE 66262306a36Sopenharmony_ci bool "Randomize the address of the kernel image" 66362306a36Sopenharmony_ci depends on PPC_85xx && FLATMEM 66462306a36Sopenharmony_ci depends on RELOCATABLE 66562306a36Sopenharmony_ci help 66662306a36Sopenharmony_ci Randomizes the virtual address at which the kernel image is 66762306a36Sopenharmony_ci loaded, as a security feature that deters exploit attempts 66862306a36Sopenharmony_ci relying on knowledge of the location of kernel internals. 66962306a36Sopenharmony_ci 67062306a36Sopenharmony_ci If unsure, say Y. 67162306a36Sopenharmony_ci 67262306a36Sopenharmony_ciconfig RELOCATABLE_TEST 67362306a36Sopenharmony_ci bool "Test relocatable kernel" 67462306a36Sopenharmony_ci depends on (PPC64 && RELOCATABLE) 67562306a36Sopenharmony_ci help 67662306a36Sopenharmony_ci This runs the relocatable kernel at the address it was initially 67762306a36Sopenharmony_ci loaded at, which tends to be non-zero and therefore test the 67862306a36Sopenharmony_ci relocation code. 67962306a36Sopenharmony_ci 68062306a36Sopenharmony_ciconfig ARCH_SUPPORTS_CRASH_DUMP 68162306a36Sopenharmony_ci def_bool PPC64 || PPC_BOOK3S_32 || PPC_85xx || (44x && !SMP) 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_ciconfig ARCH_SELECTS_CRASH_DUMP 68462306a36Sopenharmony_ci def_bool y 68562306a36Sopenharmony_ci depends on CRASH_DUMP 68662306a36Sopenharmony_ci select RELOCATABLE if PPC64 || 44x || PPC_85xx 68762306a36Sopenharmony_ci 68862306a36Sopenharmony_ciconfig FA_DUMP 68962306a36Sopenharmony_ci bool "Firmware-assisted dump" 69062306a36Sopenharmony_ci depends on PPC64 && (PPC_RTAS || PPC_POWERNV) 69162306a36Sopenharmony_ci select CRASH_CORE 69262306a36Sopenharmony_ci select CRASH_DUMP 69362306a36Sopenharmony_ci help 69462306a36Sopenharmony_ci A robust mechanism to get reliable kernel crash dump with 69562306a36Sopenharmony_ci assistance from firmware. This approach does not use kexec, 69662306a36Sopenharmony_ci instead firmware assists in booting the capture kernel 69762306a36Sopenharmony_ci while preserving memory contents. Firmware-assisted dump 69862306a36Sopenharmony_ci is meant to be a kdump replacement offering robustness and 69962306a36Sopenharmony_ci speed not possible without system firmware assistance. 70062306a36Sopenharmony_ci 70162306a36Sopenharmony_ci If unsure, say "y". Only special kernels like petitboot may 70262306a36Sopenharmony_ci need to say "N" here. 70362306a36Sopenharmony_ci 70462306a36Sopenharmony_ciconfig PRESERVE_FA_DUMP 70562306a36Sopenharmony_ci bool "Preserve Firmware-assisted dump" 70662306a36Sopenharmony_ci depends on PPC64 && PPC_POWERNV && !FA_DUMP 70762306a36Sopenharmony_ci help 70862306a36Sopenharmony_ci On a kernel with FA_DUMP disabled, this option helps to preserve 70962306a36Sopenharmony_ci crash data from a previously crash'ed kernel. Useful when the next 71062306a36Sopenharmony_ci memory preserving kernel boot would process this crash data. 71162306a36Sopenharmony_ci Petitboot kernel is the typical usecase for this option. 71262306a36Sopenharmony_ci 71362306a36Sopenharmony_ciconfig OPAL_CORE 71462306a36Sopenharmony_ci bool "Export OPAL memory as /sys/firmware/opal/core" 71562306a36Sopenharmony_ci depends on PPC64 && PPC_POWERNV 71662306a36Sopenharmony_ci help 71762306a36Sopenharmony_ci This option uses the MPIPL support in firmware to provide an 71862306a36Sopenharmony_ci ELF core of OPAL memory after a crash. The ELF core is exported 71962306a36Sopenharmony_ci as /sys/firmware/opal/core file which is helpful in debugging 72062306a36Sopenharmony_ci OPAL crashes using GDB. 72162306a36Sopenharmony_ci 72262306a36Sopenharmony_ciconfig IRQ_ALL_CPUS 72362306a36Sopenharmony_ci bool "Distribute interrupts on all CPUs by default" 72462306a36Sopenharmony_ci depends on SMP 72562306a36Sopenharmony_ci help 72662306a36Sopenharmony_ci This option gives the kernel permission to distribute IRQs across 72762306a36Sopenharmony_ci multiple CPUs. Saying N here will route all IRQs to the first 72862306a36Sopenharmony_ci CPU. Generally saying Y is safe, although some problems have been 72962306a36Sopenharmony_ci reported with SMP Power Macintoshes with this option enabled. 73062306a36Sopenharmony_ci 73162306a36Sopenharmony_ciconfig NUMA 73262306a36Sopenharmony_ci bool "NUMA Memory Allocation and Scheduler Support" 73362306a36Sopenharmony_ci depends on PPC64 && SMP 73462306a36Sopenharmony_ci default y if PPC_PSERIES || PPC_POWERNV 73562306a36Sopenharmony_ci select USE_PERCPU_NUMA_NODE_ID 73662306a36Sopenharmony_ci help 73762306a36Sopenharmony_ci Enable NUMA (Non-Uniform Memory Access) support. 73862306a36Sopenharmony_ci 73962306a36Sopenharmony_ci The kernel will try to allocate memory used by a CPU on the 74062306a36Sopenharmony_ci local memory controller of the CPU and add some more 74162306a36Sopenharmony_ci NUMA awareness to the kernel. 74262306a36Sopenharmony_ci 74362306a36Sopenharmony_ciconfig NODES_SHIFT 74462306a36Sopenharmony_ci int 74562306a36Sopenharmony_ci default "8" if PPC64 74662306a36Sopenharmony_ci default "4" 74762306a36Sopenharmony_ci depends on NUMA 74862306a36Sopenharmony_ci 74962306a36Sopenharmony_ciconfig HAVE_MEMORYLESS_NODES 75062306a36Sopenharmony_ci def_bool y 75162306a36Sopenharmony_ci depends on NUMA 75262306a36Sopenharmony_ci 75362306a36Sopenharmony_ciconfig ARCH_SELECT_MEMORY_MODEL 75462306a36Sopenharmony_ci def_bool y 75562306a36Sopenharmony_ci depends on PPC64 75662306a36Sopenharmony_ci 75762306a36Sopenharmony_ciconfig ARCH_FLATMEM_ENABLE 75862306a36Sopenharmony_ci def_bool y 75962306a36Sopenharmony_ci depends on (PPC64 && !NUMA) || PPC32 76062306a36Sopenharmony_ci 76162306a36Sopenharmony_ciconfig ARCH_SPARSEMEM_ENABLE 76262306a36Sopenharmony_ci def_bool y 76362306a36Sopenharmony_ci depends on PPC64 76462306a36Sopenharmony_ci select SPARSEMEM_VMEMMAP_ENABLE 76562306a36Sopenharmony_ci 76662306a36Sopenharmony_ciconfig ARCH_SPARSEMEM_DEFAULT 76762306a36Sopenharmony_ci def_bool y 76862306a36Sopenharmony_ci depends on PPC_BOOK3S_64 76962306a36Sopenharmony_ci 77062306a36Sopenharmony_ciconfig ILLEGAL_POINTER_VALUE 77162306a36Sopenharmony_ci hex 77262306a36Sopenharmony_ci # This is roughly half way between the top of user space and the bottom 77362306a36Sopenharmony_ci # of kernel space, which seems about as good as we can get. 77462306a36Sopenharmony_ci default 0x5deadbeef0000000 if PPC64 77562306a36Sopenharmony_ci default 0 77662306a36Sopenharmony_ci 77762306a36Sopenharmony_ciconfig ARCH_MEMORY_PROBE 77862306a36Sopenharmony_ci def_bool y 77962306a36Sopenharmony_ci depends on MEMORY_HOTPLUG 78062306a36Sopenharmony_ci 78162306a36Sopenharmony_cichoice 78262306a36Sopenharmony_ci prompt "Page size" 78362306a36Sopenharmony_ci default PPC_64K_PAGES if PPC_BOOK3S_64 78462306a36Sopenharmony_ci default PPC_4K_PAGES 78562306a36Sopenharmony_ci help 78662306a36Sopenharmony_ci Select the kernel logical page size. Increasing the page size 78762306a36Sopenharmony_ci will reduce software overhead at each page boundary, allow 78862306a36Sopenharmony_ci hardware prefetch mechanisms to be more effective, and allow 78962306a36Sopenharmony_ci larger dma transfers increasing IO efficiency and reducing 79062306a36Sopenharmony_ci overhead. However the utilization of memory will increase. 79162306a36Sopenharmony_ci For example, each cached file will using a multiple of the 79262306a36Sopenharmony_ci page size to hold its contents and the difference between the 79362306a36Sopenharmony_ci end of file and the end of page is wasted. 79462306a36Sopenharmony_ci 79562306a36Sopenharmony_ci Some dedicated systems, such as software raid serving with 79662306a36Sopenharmony_ci accelerated calculations, have shown significant increases. 79762306a36Sopenharmony_ci 79862306a36Sopenharmony_ci If you configure a 64 bit kernel for 64k pages but the 79962306a36Sopenharmony_ci processor does not support them, then the kernel will simulate 80062306a36Sopenharmony_ci them with 4k pages, loading them on demand, but with the 80162306a36Sopenharmony_ci reduced software overhead and larger internal fragmentation. 80262306a36Sopenharmony_ci For the 32 bit kernel, a large page option will not be offered 80362306a36Sopenharmony_ci unless it is supported by the configured processor. 80462306a36Sopenharmony_ci 80562306a36Sopenharmony_ci If unsure, choose 4K_PAGES. 80662306a36Sopenharmony_ci 80762306a36Sopenharmony_ciconfig PPC_4K_PAGES 80862306a36Sopenharmony_ci bool "4k page size" 80962306a36Sopenharmony_ci select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64 81062306a36Sopenharmony_ci 81162306a36Sopenharmony_ciconfig PPC_16K_PAGES 81262306a36Sopenharmony_ci bool "16k page size" 81362306a36Sopenharmony_ci depends on 44x || PPC_8xx 81462306a36Sopenharmony_ci 81562306a36Sopenharmony_ciconfig PPC_64K_PAGES 81662306a36Sopenharmony_ci bool "64k page size" 81762306a36Sopenharmony_ci depends on 44x || PPC_BOOK3S_64 81862306a36Sopenharmony_ci select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64 81962306a36Sopenharmony_ci 82062306a36Sopenharmony_ciconfig PPC_256K_PAGES 82162306a36Sopenharmony_ci bool "256k page size (Requires non-standard binutils settings)" 82262306a36Sopenharmony_ci depends on 44x && !PPC_47x 82362306a36Sopenharmony_ci help 82462306a36Sopenharmony_ci Make the page size 256k. 82562306a36Sopenharmony_ci 82662306a36Sopenharmony_ci The kernel will only be able to run applications that have been 82762306a36Sopenharmony_ci compiled with '-zmax-page-size' set to 256K (the default is 64K) using 82862306a36Sopenharmony_ci binutils later than 2.17.50.0.3, or by patching the ELF_MAXPAGESIZE 82962306a36Sopenharmony_ci definition from 0x10000 to 0x40000 in older versions. 83062306a36Sopenharmony_ci 83162306a36Sopenharmony_ciendchoice 83262306a36Sopenharmony_ci 83362306a36Sopenharmony_ciconfig PAGE_SIZE_4KB 83462306a36Sopenharmony_ci def_bool y 83562306a36Sopenharmony_ci depends on PPC_4K_PAGES 83662306a36Sopenharmony_ci 83762306a36Sopenharmony_ciconfig PAGE_SIZE_16KB 83862306a36Sopenharmony_ci def_bool y 83962306a36Sopenharmony_ci depends on PPC_16K_PAGES 84062306a36Sopenharmony_ci 84162306a36Sopenharmony_ciconfig PAGE_SIZE_64KB 84262306a36Sopenharmony_ci def_bool y 84362306a36Sopenharmony_ci depends on PPC_64K_PAGES 84462306a36Sopenharmony_ci 84562306a36Sopenharmony_ciconfig PAGE_SIZE_256KB 84662306a36Sopenharmony_ci def_bool y 84762306a36Sopenharmony_ci depends on PPC_256K_PAGES 84862306a36Sopenharmony_ci 84962306a36Sopenharmony_ciconfig PPC_PAGE_SHIFT 85062306a36Sopenharmony_ci int 85162306a36Sopenharmony_ci default 18 if PPC_256K_PAGES 85262306a36Sopenharmony_ci default 16 if PPC_64K_PAGES 85362306a36Sopenharmony_ci default 14 if PPC_16K_PAGES 85462306a36Sopenharmony_ci default 12 85562306a36Sopenharmony_ci 85662306a36Sopenharmony_ciconfig THREAD_SHIFT 85762306a36Sopenharmony_ci int "Thread shift" if EXPERT 85862306a36Sopenharmony_ci range 13 15 85962306a36Sopenharmony_ci default "15" if PPC_256K_PAGES 86062306a36Sopenharmony_ci default "15" if PPC_PSERIES || PPC_POWERNV 86162306a36Sopenharmony_ci default "14" if PPC64 86262306a36Sopenharmony_ci default "13" 86362306a36Sopenharmony_ci help 86462306a36Sopenharmony_ci Used to define the stack size. The default is almost always what you 86562306a36Sopenharmony_ci want. Only change this if you know what you are doing. 86662306a36Sopenharmony_ci 86762306a36Sopenharmony_ciconfig DATA_SHIFT_BOOL 86862306a36Sopenharmony_ci bool "Set custom data alignment" 86962306a36Sopenharmony_ci depends on ADVANCED_OPTIONS 87062306a36Sopenharmony_ci depends on STRICT_KERNEL_RWX || DEBUG_PAGEALLOC || KFENCE 87162306a36Sopenharmony_ci depends on PPC_BOOK3S_32 || (PPC_8xx && !PIN_TLB_DATA && !STRICT_KERNEL_RWX) || \ 87262306a36Sopenharmony_ci PPC_85xx 87362306a36Sopenharmony_ci help 87462306a36Sopenharmony_ci This option allows you to set the kernel data alignment. When 87562306a36Sopenharmony_ci RAM is mapped by blocks, the alignment needs to fit the size and 87662306a36Sopenharmony_ci number of possible blocks. The default should be OK for most configs. 87762306a36Sopenharmony_ci 87862306a36Sopenharmony_ci Say N here unless you know what you are doing. 87962306a36Sopenharmony_ci 88062306a36Sopenharmony_ciconfig DATA_SHIFT 88162306a36Sopenharmony_ci int "Data shift" if DATA_SHIFT_BOOL 88262306a36Sopenharmony_ci default 24 if STRICT_KERNEL_RWX && PPC64 88362306a36Sopenharmony_ci range 17 28 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC || KFENCE) && PPC_BOOK3S_32 88462306a36Sopenharmony_ci range 19 23 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC || KFENCE) && PPC_8xx 88562306a36Sopenharmony_ci range 20 24 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC || KFENCE) && PPC_85xx 88662306a36Sopenharmony_ci default 22 if STRICT_KERNEL_RWX && PPC_BOOK3S_32 88762306a36Sopenharmony_ci default 18 if (DEBUG_PAGEALLOC || KFENCE) && PPC_BOOK3S_32 88862306a36Sopenharmony_ci default 23 if STRICT_KERNEL_RWX && PPC_8xx 88962306a36Sopenharmony_ci default 23 if (DEBUG_PAGEALLOC || KFENCE) && PPC_8xx && PIN_TLB_DATA 89062306a36Sopenharmony_ci default 19 if (DEBUG_PAGEALLOC || KFENCE) && PPC_8xx 89162306a36Sopenharmony_ci default 24 if STRICT_KERNEL_RWX && PPC_85xx 89262306a36Sopenharmony_ci default PPC_PAGE_SHIFT 89362306a36Sopenharmony_ci help 89462306a36Sopenharmony_ci On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO. 89562306a36Sopenharmony_ci Smaller is the alignment, greater is the number of necessary DBATs. 89662306a36Sopenharmony_ci 89762306a36Sopenharmony_ci On 8xx, large pages (512kb or 8M) are used to map kernel linear 89862306a36Sopenharmony_ci memory. Aligning to 8M reduces TLB misses as only 8M pages are used 89962306a36Sopenharmony_ci in that case. If PIN_TLB is selected, it must be aligned to 8M as 90062306a36Sopenharmony_ci 8M pages will be pinned. 90162306a36Sopenharmony_ci 90262306a36Sopenharmony_ciconfig ARCH_FORCE_MAX_ORDER 90362306a36Sopenharmony_ci int "Order of maximal physically contiguous allocations" 90462306a36Sopenharmony_ci range 7 8 if PPC64 && PPC_64K_PAGES 90562306a36Sopenharmony_ci default "8" if PPC64 && PPC_64K_PAGES 90662306a36Sopenharmony_ci range 12 12 if PPC64 && !PPC_64K_PAGES 90762306a36Sopenharmony_ci default "12" if PPC64 && !PPC_64K_PAGES 90862306a36Sopenharmony_ci range 8 10 if PPC32 && PPC_16K_PAGES 90962306a36Sopenharmony_ci default "8" if PPC32 && PPC_16K_PAGES 91062306a36Sopenharmony_ci range 6 10 if PPC32 && PPC_64K_PAGES 91162306a36Sopenharmony_ci default "6" if PPC32 && PPC_64K_PAGES 91262306a36Sopenharmony_ci range 4 10 if PPC32 && PPC_256K_PAGES 91362306a36Sopenharmony_ci default "4" if PPC32 && PPC_256K_PAGES 91462306a36Sopenharmony_ci range 10 12 91562306a36Sopenharmony_ci default "10" 91662306a36Sopenharmony_ci help 91762306a36Sopenharmony_ci The kernel page allocator limits the size of maximal physically 91862306a36Sopenharmony_ci contiguous allocations. The limit is called MAX_ORDER and it 91962306a36Sopenharmony_ci defines the maximal power of two of number of pages that can be 92062306a36Sopenharmony_ci allocated as a single contiguous block. This option allows 92162306a36Sopenharmony_ci overriding the default setting when ability to allocate very 92262306a36Sopenharmony_ci large blocks of physically contiguous memory is required. 92362306a36Sopenharmony_ci 92462306a36Sopenharmony_ci The page size is not necessarily 4KB. For example, on 64-bit 92562306a36Sopenharmony_ci systems, 64KB pages can be enabled via CONFIG_PPC_64K_PAGES. Keep 92662306a36Sopenharmony_ci this in mind when choosing a value for this option. 92762306a36Sopenharmony_ci 92862306a36Sopenharmony_ci Don't change if unsure. 92962306a36Sopenharmony_ci 93062306a36Sopenharmony_ciconfig PPC_SUBPAGE_PROT 93162306a36Sopenharmony_ci bool "Support setting protections for 4k subpages (subpage_prot syscall)" 93262306a36Sopenharmony_ci default n 93362306a36Sopenharmony_ci depends on PPC_64S_HASH_MMU && PPC_64K_PAGES 93462306a36Sopenharmony_ci help 93562306a36Sopenharmony_ci This option adds support for system call to allow user programs 93662306a36Sopenharmony_ci to set access permissions (read/write, readonly, or no access) 93762306a36Sopenharmony_ci on the 4k subpages of each 64k page. 93862306a36Sopenharmony_ci 93962306a36Sopenharmony_ci If unsure, say N here. 94062306a36Sopenharmony_ci 94162306a36Sopenharmony_ciconfig PPC_PROT_SAO_LPAR 94262306a36Sopenharmony_ci bool "Support PROT_SAO mappings in LPARs" 94362306a36Sopenharmony_ci depends on PPC_BOOK3S_64 94462306a36Sopenharmony_ci help 94562306a36Sopenharmony_ci This option adds support for PROT_SAO mappings from userspace 94662306a36Sopenharmony_ci inside LPARs on supported CPUs. 94762306a36Sopenharmony_ci 94862306a36Sopenharmony_ci This may cause issues when performing guest migration from 94962306a36Sopenharmony_ci a CPU that supports SAO to one that does not. 95062306a36Sopenharmony_ci 95162306a36Sopenharmony_ci If unsure, say N here. 95262306a36Sopenharmony_ci 95362306a36Sopenharmony_ciconfig PPC_COPRO_BASE 95462306a36Sopenharmony_ci bool 95562306a36Sopenharmony_ci 95662306a36Sopenharmony_ciconfig SCHED_SMT 95762306a36Sopenharmony_ci bool "SMT (Hyperthreading) scheduler support" 95862306a36Sopenharmony_ci depends on PPC64 && SMP 95962306a36Sopenharmony_ci help 96062306a36Sopenharmony_ci SMT scheduler support improves the CPU scheduler's decision making 96162306a36Sopenharmony_ci when dealing with POWER5 cpus at a cost of slightly increased 96262306a36Sopenharmony_ci overhead in some places. If unsure say N here. 96362306a36Sopenharmony_ci 96462306a36Sopenharmony_ciconfig PPC_DENORMALISATION 96562306a36Sopenharmony_ci bool "PowerPC denormalisation exception handling" 96662306a36Sopenharmony_ci depends on PPC_BOOK3S_64 96762306a36Sopenharmony_ci default "y" if PPC_POWERNV 96862306a36Sopenharmony_ci help 96962306a36Sopenharmony_ci Add support for handling denormalisation of single precision 97062306a36Sopenharmony_ci values. Useful for bare metal only. If unsure say Y here. 97162306a36Sopenharmony_ci 97262306a36Sopenharmony_ciconfig CMDLINE 97362306a36Sopenharmony_ci string "Initial kernel command string" 97462306a36Sopenharmony_ci default "" 97562306a36Sopenharmony_ci help 97662306a36Sopenharmony_ci On some platforms, there is currently no way for the boot loader to 97762306a36Sopenharmony_ci pass arguments to the kernel. For these platforms, you can supply 97862306a36Sopenharmony_ci some command-line options at build time by entering them here. In 97962306a36Sopenharmony_ci most cases you will need to specify the root device here. 98062306a36Sopenharmony_ci 98162306a36Sopenharmony_cichoice 98262306a36Sopenharmony_ci prompt "Kernel command line type" if CMDLINE != "" 98362306a36Sopenharmony_ci default CMDLINE_FROM_BOOTLOADER 98462306a36Sopenharmony_ci 98562306a36Sopenharmony_ciconfig CMDLINE_FROM_BOOTLOADER 98662306a36Sopenharmony_ci bool "Use bootloader kernel arguments if available" 98762306a36Sopenharmony_ci help 98862306a36Sopenharmony_ci Uses the command-line options passed by the boot loader. If 98962306a36Sopenharmony_ci the boot loader doesn't provide any, the default kernel command 99062306a36Sopenharmony_ci string provided in CMDLINE will be used. 99162306a36Sopenharmony_ci 99262306a36Sopenharmony_ciconfig CMDLINE_EXTEND 99362306a36Sopenharmony_ci bool "Extend bootloader kernel arguments" 99462306a36Sopenharmony_ci help 99562306a36Sopenharmony_ci The command-line arguments provided by the boot loader will be 99662306a36Sopenharmony_ci appended to the default kernel command string. 99762306a36Sopenharmony_ci 99862306a36Sopenharmony_ciconfig CMDLINE_FORCE 99962306a36Sopenharmony_ci bool "Always use the default kernel command string" 100062306a36Sopenharmony_ci help 100162306a36Sopenharmony_ci Always use the default kernel command string, even if the boot 100262306a36Sopenharmony_ci loader passes other arguments to the kernel. 100362306a36Sopenharmony_ci This is useful if you cannot or don't want to change the 100462306a36Sopenharmony_ci command-line options your boot loader passes to the kernel. 100562306a36Sopenharmony_ci 100662306a36Sopenharmony_ciendchoice 100762306a36Sopenharmony_ci 100862306a36Sopenharmony_ciconfig EXTRA_TARGETS 100962306a36Sopenharmony_ci string "Additional default image types" 101062306a36Sopenharmony_ci help 101162306a36Sopenharmony_ci List additional targets to be built by the bootwrapper here (separated 101262306a36Sopenharmony_ci by spaces). This is useful for targets that depend of device tree 101362306a36Sopenharmony_ci files in the .dts directory. 101462306a36Sopenharmony_ci 101562306a36Sopenharmony_ci Targets in this list will be build as part of the default build 101662306a36Sopenharmony_ci target, or when the user does a 'make zImage' or a 101762306a36Sopenharmony_ci 'make zImage.initrd'. 101862306a36Sopenharmony_ci 101962306a36Sopenharmony_ci If unsure, leave blank 102062306a36Sopenharmony_ci 102162306a36Sopenharmony_ciconfig ARCH_WANTS_FREEZER_CONTROL 102262306a36Sopenharmony_ci def_bool y 102362306a36Sopenharmony_ci depends on ADB_PMU 102462306a36Sopenharmony_ci 102562306a36Sopenharmony_cisource "kernel/power/Kconfig" 102662306a36Sopenharmony_ci 102762306a36Sopenharmony_ciconfig PPC_MEM_KEYS 102862306a36Sopenharmony_ci prompt "PowerPC Memory Protection Keys" 102962306a36Sopenharmony_ci def_bool y 103062306a36Sopenharmony_ci depends on PPC_BOOK3S_64 103162306a36Sopenharmony_ci depends on PPC_64S_HASH_MMU 103262306a36Sopenharmony_ci select ARCH_USES_HIGH_VMA_FLAGS 103362306a36Sopenharmony_ci select ARCH_HAS_PKEYS 103462306a36Sopenharmony_ci help 103562306a36Sopenharmony_ci Memory Protection Keys provides a mechanism for enforcing 103662306a36Sopenharmony_ci page-based protections, but without requiring modification of the 103762306a36Sopenharmony_ci page tables when an application changes protection domains. 103862306a36Sopenharmony_ci 103962306a36Sopenharmony_ci For details, see Documentation/core-api/protection-keys.rst 104062306a36Sopenharmony_ci 104162306a36Sopenharmony_ci If unsure, say y. 104262306a36Sopenharmony_ci 104362306a36Sopenharmony_ciconfig PPC_SECURE_BOOT 104462306a36Sopenharmony_ci prompt "Enable secure boot support" 104562306a36Sopenharmony_ci bool 104662306a36Sopenharmony_ci depends on PPC_POWERNV || PPC_PSERIES 104762306a36Sopenharmony_ci depends on IMA_ARCH_POLICY 104862306a36Sopenharmony_ci imply IMA_SECURE_AND_OR_TRUSTED_BOOT 104962306a36Sopenharmony_ci select PSERIES_PLPKS if PPC_PSERIES 105062306a36Sopenharmony_ci help 105162306a36Sopenharmony_ci Systems with firmware secure boot enabled need to define security 105262306a36Sopenharmony_ci policies to extend secure boot to the OS. This config allows a user 105362306a36Sopenharmony_ci to enable OS secure boot on systems that have firmware support for 105462306a36Sopenharmony_ci it. If in doubt say N. 105562306a36Sopenharmony_ci 105662306a36Sopenharmony_ciconfig PPC_SECVAR_SYSFS 105762306a36Sopenharmony_ci bool "Enable sysfs interface for POWER secure variables" 105862306a36Sopenharmony_ci default y 105962306a36Sopenharmony_ci depends on PPC_SECURE_BOOT 106062306a36Sopenharmony_ci depends on SYSFS 106162306a36Sopenharmony_ci help 106262306a36Sopenharmony_ci POWER secure variables are managed and controlled by firmware. 106362306a36Sopenharmony_ci These variables are exposed to userspace via sysfs to enable 106462306a36Sopenharmony_ci read/write operations on these variables. Say Y if you have 106562306a36Sopenharmony_ci secure boot enabled and want to expose variables to userspace. 106662306a36Sopenharmony_ci 106762306a36Sopenharmony_ciendmenu 106862306a36Sopenharmony_ci 106962306a36Sopenharmony_ciconfig ISA_DMA_API 107062306a36Sopenharmony_ci bool 107162306a36Sopenharmony_ci default PCI 107262306a36Sopenharmony_ci 107362306a36Sopenharmony_cimenu "Bus options" 107462306a36Sopenharmony_ci 107562306a36Sopenharmony_ciconfig ISA 107662306a36Sopenharmony_ci bool "Support for ISA-bus hardware" 107762306a36Sopenharmony_ci depends on PPC_CHRP 107862306a36Sopenharmony_ci select PPC_I8259 107962306a36Sopenharmony_ci help 108062306a36Sopenharmony_ci Find out whether you have ISA slots on your motherboard. ISA is the 108162306a36Sopenharmony_ci name of a bus system, i.e. the way the CPU talks to the other stuff 108262306a36Sopenharmony_ci inside your box. If you have an Apple machine, say N here; if you 108362306a36Sopenharmony_ci have an IBM RS/6000 or pSeries machine, say Y. If you have an 108462306a36Sopenharmony_ci embedded board, consult your board documentation. 108562306a36Sopenharmony_ci 108662306a36Sopenharmony_ciconfig GENERIC_ISA_DMA 108762306a36Sopenharmony_ci bool 108862306a36Sopenharmony_ci depends on ISA_DMA_API 108962306a36Sopenharmony_ci default y 109062306a36Sopenharmony_ci 109162306a36Sopenharmony_ciconfig PPC_INDIRECT_PCI 109262306a36Sopenharmony_ci bool 109362306a36Sopenharmony_ci depends on PCI 109462306a36Sopenharmony_ci default y if 40x || 44x 109562306a36Sopenharmony_ci 109662306a36Sopenharmony_ciconfig SBUS 109762306a36Sopenharmony_ci bool 109862306a36Sopenharmony_ci 109962306a36Sopenharmony_ciconfig FSL_SOC 110062306a36Sopenharmony_ci bool 110162306a36Sopenharmony_ci 110262306a36Sopenharmony_ciconfig FSL_PCI 110362306a36Sopenharmony_ci bool 110462306a36Sopenharmony_ci select ARCH_HAS_DMA_SET_MASK 110562306a36Sopenharmony_ci select PPC_INDIRECT_PCI 110662306a36Sopenharmony_ci select PCI_QUIRKS 110762306a36Sopenharmony_ci 110862306a36Sopenharmony_ciconfig FSL_PMC 110962306a36Sopenharmony_ci bool 111062306a36Sopenharmony_ci default y 111162306a36Sopenharmony_ci depends on SUSPEND && (PPC_85xx || PPC_86xx) 111262306a36Sopenharmony_ci help 111362306a36Sopenharmony_ci Freescale MPC85xx/MPC86xx power management controller support 111462306a36Sopenharmony_ci (suspend/resume). For MPC83xx see platforms/83xx/suspend.c 111562306a36Sopenharmony_ci 111662306a36Sopenharmony_ciconfig PPC4xx_CPM 111762306a36Sopenharmony_ci bool 111862306a36Sopenharmony_ci default y 111962306a36Sopenharmony_ci depends on SUSPEND && (44x || 40x) 112062306a36Sopenharmony_ci help 112162306a36Sopenharmony_ci PPC4xx Clock Power Management (CPM) support (suspend/resume). 112262306a36Sopenharmony_ci It also enables support for two different idle states (idle-wait 112362306a36Sopenharmony_ci and idle-doze). 112462306a36Sopenharmony_ci 112562306a36Sopenharmony_ciconfig 4xx_SOC 112662306a36Sopenharmony_ci bool 112762306a36Sopenharmony_ci 112862306a36Sopenharmony_ciconfig FSL_LBC 112962306a36Sopenharmony_ci bool "Freescale Local Bus support" 113062306a36Sopenharmony_ci help 113162306a36Sopenharmony_ci Enables reporting of errors from the Freescale local bus 113262306a36Sopenharmony_ci controller. Also contains some common code used by 113362306a36Sopenharmony_ci drivers for specific local bus peripherals. 113462306a36Sopenharmony_ci 113562306a36Sopenharmony_ciconfig FSL_GTM 113662306a36Sopenharmony_ci bool 113762306a36Sopenharmony_ci depends on PPC_83xx || QUICC_ENGINE || CPM2 113862306a36Sopenharmony_ci help 113962306a36Sopenharmony_ci Freescale General-purpose Timers support 114062306a36Sopenharmony_ci 114162306a36Sopenharmony_ciconfig FSL_RIO 114262306a36Sopenharmony_ci bool "Freescale Embedded SRIO Controller support" 114362306a36Sopenharmony_ci depends on RAPIDIO = y && HAVE_RAPIDIO 114462306a36Sopenharmony_ci default "n" 114562306a36Sopenharmony_ci help 114662306a36Sopenharmony_ci Include support for RapidIO controller on Freescale embedded 114762306a36Sopenharmony_ci processors (MPC8548, MPC8641, etc). 114862306a36Sopenharmony_ci 114962306a36Sopenharmony_ciendmenu 115062306a36Sopenharmony_ci 115162306a36Sopenharmony_ciconfig NONSTATIC_KERNEL 115262306a36Sopenharmony_ci bool 115362306a36Sopenharmony_ci 115462306a36Sopenharmony_cimenu "Advanced setup" 115562306a36Sopenharmony_ci depends on PPC32 115662306a36Sopenharmony_ci 115762306a36Sopenharmony_ciconfig ADVANCED_OPTIONS 115862306a36Sopenharmony_ci bool "Prompt for advanced kernel configuration options" 115962306a36Sopenharmony_ci help 116062306a36Sopenharmony_ci This option will enable prompting for a variety of advanced kernel 116162306a36Sopenharmony_ci configuration options. These options can cause the kernel to not 116262306a36Sopenharmony_ci work if they are set incorrectly, but can be used to optimize certain 116362306a36Sopenharmony_ci aspects of kernel memory management. 116462306a36Sopenharmony_ci 116562306a36Sopenharmony_ci Unless you know what you are doing, say N here. 116662306a36Sopenharmony_ci 116762306a36Sopenharmony_cicomment "Default settings for advanced configuration options are used" 116862306a36Sopenharmony_ci depends on !ADVANCED_OPTIONS 116962306a36Sopenharmony_ci 117062306a36Sopenharmony_ciconfig LOWMEM_SIZE_BOOL 117162306a36Sopenharmony_ci bool "Set maximum low memory" 117262306a36Sopenharmony_ci depends on ADVANCED_OPTIONS 117362306a36Sopenharmony_ci help 117462306a36Sopenharmony_ci This option allows you to set the maximum amount of memory which 117562306a36Sopenharmony_ci will be used as "low memory", that is, memory which the kernel can 117662306a36Sopenharmony_ci access directly, without having to set up a kernel virtual mapping. 117762306a36Sopenharmony_ci This can be useful in optimizing the layout of kernel virtual 117862306a36Sopenharmony_ci memory. 117962306a36Sopenharmony_ci 118062306a36Sopenharmony_ci Say N here unless you know what you are doing. 118162306a36Sopenharmony_ci 118262306a36Sopenharmony_ciconfig LOWMEM_SIZE 118362306a36Sopenharmony_ci hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL 118462306a36Sopenharmony_ci default "0x30000000" 118562306a36Sopenharmony_ci 118662306a36Sopenharmony_ciconfig LOWMEM_CAM_NUM_BOOL 118762306a36Sopenharmony_ci bool "Set number of CAMs to use to map low memory" 118862306a36Sopenharmony_ci depends on ADVANCED_OPTIONS && PPC_85xx 118962306a36Sopenharmony_ci help 119062306a36Sopenharmony_ci This option allows you to set the maximum number of CAM slots that 119162306a36Sopenharmony_ci will be used to map low memory. There are a limited number of slots 119262306a36Sopenharmony_ci available and even more limited number that will fit in the L1 MMU. 119362306a36Sopenharmony_ci However, using more entries will allow mapping more low memory. This 119462306a36Sopenharmony_ci can be useful in optimizing the layout of kernel virtual memory. 119562306a36Sopenharmony_ci 119662306a36Sopenharmony_ci Say N here unless you know what you are doing. 119762306a36Sopenharmony_ci 119862306a36Sopenharmony_ciconfig LOWMEM_CAM_NUM 119962306a36Sopenharmony_ci depends on PPC_85xx 120062306a36Sopenharmony_ci int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL 120162306a36Sopenharmony_ci default 3 if !STRICT_KERNEL_RWX 120262306a36Sopenharmony_ci default 9 if DATA_SHIFT >= 24 120362306a36Sopenharmony_ci default 12 if DATA_SHIFT >= 22 120462306a36Sopenharmony_ci default 15 120562306a36Sopenharmony_ci 120662306a36Sopenharmony_ciconfig DYNAMIC_MEMSTART 120762306a36Sopenharmony_ci bool "Enable page aligned dynamic load address for kernel" 120862306a36Sopenharmony_ci depends on ADVANCED_OPTIONS && FLATMEM && (PPC_85xx || 44x) 120962306a36Sopenharmony_ci select NONSTATIC_KERNEL 121062306a36Sopenharmony_ci help 121162306a36Sopenharmony_ci This option enables the kernel to be loaded at any page aligned 121262306a36Sopenharmony_ci physical address. The kernel creates a mapping from KERNELBASE to 121362306a36Sopenharmony_ci the address where the kernel is loaded. The page size here implies 121462306a36Sopenharmony_ci the TLB page size of the mapping for kernel on the particular platform. 121562306a36Sopenharmony_ci Please refer to the init code for finding the TLB page size. 121662306a36Sopenharmony_ci 121762306a36Sopenharmony_ci DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE 121862306a36Sopenharmony_ci kernel image, where the only restriction is the page aligned kernel 121962306a36Sopenharmony_ci load address. When this option is enabled, the compile time physical 122062306a36Sopenharmony_ci address CONFIG_PHYSICAL_START is ignored. 122162306a36Sopenharmony_ci 122262306a36Sopenharmony_ci This option is overridden by CONFIG_RELOCATABLE 122362306a36Sopenharmony_ci 122462306a36Sopenharmony_ciconfig PAGE_OFFSET_BOOL 122562306a36Sopenharmony_ci bool "Set custom page offset address" 122662306a36Sopenharmony_ci depends on ADVANCED_OPTIONS 122762306a36Sopenharmony_ci help 122862306a36Sopenharmony_ci This option allows you to set the kernel virtual address at which 122962306a36Sopenharmony_ci the kernel will map low memory. This can be useful in optimizing 123062306a36Sopenharmony_ci the virtual memory layout of the system. 123162306a36Sopenharmony_ci 123262306a36Sopenharmony_ci Say N here unless you know what you are doing. 123362306a36Sopenharmony_ci 123462306a36Sopenharmony_ciconfig PAGE_OFFSET 123562306a36Sopenharmony_ci hex "Virtual address of memory base" if PAGE_OFFSET_BOOL 123662306a36Sopenharmony_ci default "0xc0000000" 123762306a36Sopenharmony_ci 123862306a36Sopenharmony_ciconfig KERNEL_START_BOOL 123962306a36Sopenharmony_ci bool "Set custom kernel base address" 124062306a36Sopenharmony_ci depends on ADVANCED_OPTIONS 124162306a36Sopenharmony_ci help 124262306a36Sopenharmony_ci This option allows you to set the kernel virtual address at which 124362306a36Sopenharmony_ci the kernel will be loaded. Normally this should match PAGE_OFFSET 124462306a36Sopenharmony_ci however there are times (like kdump) that one might not want them 124562306a36Sopenharmony_ci to be the same. 124662306a36Sopenharmony_ci 124762306a36Sopenharmony_ci Say N here unless you know what you are doing. 124862306a36Sopenharmony_ci 124962306a36Sopenharmony_ciconfig KERNEL_START 125062306a36Sopenharmony_ci hex "Virtual address of kernel base" if KERNEL_START_BOOL 125162306a36Sopenharmony_ci default PAGE_OFFSET if PAGE_OFFSET_BOOL 125262306a36Sopenharmony_ci default "0xc2000000" if CRASH_DUMP && !NONSTATIC_KERNEL 125362306a36Sopenharmony_ci default "0xc0000000" 125462306a36Sopenharmony_ci 125562306a36Sopenharmony_ciconfig PHYSICAL_START_BOOL 125662306a36Sopenharmony_ci bool "Set physical address where the kernel is loaded" 125762306a36Sopenharmony_ci depends on ADVANCED_OPTIONS && FLATMEM && PPC_85xx 125862306a36Sopenharmony_ci help 125962306a36Sopenharmony_ci This gives the physical address where the kernel is loaded. 126062306a36Sopenharmony_ci 126162306a36Sopenharmony_ci Say N here unless you know what you are doing. 126262306a36Sopenharmony_ci 126362306a36Sopenharmony_ciconfig PHYSICAL_START 126462306a36Sopenharmony_ci hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL 126562306a36Sopenharmony_ci default "0x02000000" if PPC_BOOK3S && CRASH_DUMP && !NONSTATIC_KERNEL 126662306a36Sopenharmony_ci default "0x00000000" 126762306a36Sopenharmony_ci 126862306a36Sopenharmony_ciconfig PHYSICAL_ALIGN 126962306a36Sopenharmony_ci hex 127062306a36Sopenharmony_ci default "0x04000000" if PPC_85xx 127162306a36Sopenharmony_ci help 127262306a36Sopenharmony_ci This value puts the alignment restrictions on physical address 127362306a36Sopenharmony_ci where kernel is loaded and run from. Kernel is compiled for an 127462306a36Sopenharmony_ci address which meets above alignment restriction. 127562306a36Sopenharmony_ci 127662306a36Sopenharmony_ciconfig TASK_SIZE_BOOL 127762306a36Sopenharmony_ci bool "Set custom user task size" 127862306a36Sopenharmony_ci depends on ADVANCED_OPTIONS 127962306a36Sopenharmony_ci help 128062306a36Sopenharmony_ci This option allows you to set the amount of virtual address space 128162306a36Sopenharmony_ci allocated to user tasks. This can be useful in optimizing the 128262306a36Sopenharmony_ci virtual memory layout of the system. 128362306a36Sopenharmony_ci 128462306a36Sopenharmony_ci Say N here unless you know what you are doing. 128562306a36Sopenharmony_ci 128662306a36Sopenharmony_ciconfig TASK_SIZE 128762306a36Sopenharmony_ci hex "Size of user task space" if TASK_SIZE_BOOL 128862306a36Sopenharmony_ci default "0x80000000" if PPC_8xx 128962306a36Sopenharmony_ci default "0xb0000000" if PPC_BOOK3S_32 129062306a36Sopenharmony_ci default "0xc0000000" 129162306a36Sopenharmony_ciendmenu 129262306a36Sopenharmony_ci 129362306a36Sopenharmony_ciif PPC64 129462306a36Sopenharmony_ci# This value must have zeroes in the bottom 60 bits otherwise lots will break 129562306a36Sopenharmony_ciconfig PAGE_OFFSET 129662306a36Sopenharmony_ci hex 129762306a36Sopenharmony_ci default "0xc000000000000000" 129862306a36Sopenharmony_ciconfig KERNEL_START 129962306a36Sopenharmony_ci hex 130062306a36Sopenharmony_ci default "0xc000000000000000" 130162306a36Sopenharmony_ciconfig PHYSICAL_START 130262306a36Sopenharmony_ci hex 130362306a36Sopenharmony_ci default "0x00000000" 130462306a36Sopenharmony_ciendif 130562306a36Sopenharmony_ci 130662306a36Sopenharmony_ciconfig PPC_LIB_RHEAP 130762306a36Sopenharmony_ci bool 130862306a36Sopenharmony_ci 130962306a36Sopenharmony_cisource "arch/powerpc/kvm/Kconfig" 131062306a36Sopenharmony_ci 131162306a36Sopenharmony_cisource "kernel/livepatch/Kconfig" 1312