forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 cde9070d9970eef1f7ec2360586c802a16230ad8
kernel/arch/powerpc/Kconfig
....@@ -1,10 +1,6 @@
11 # SPDX-License-Identifier: GPL-2.0
22 source "arch/powerpc/platforms/Kconfig.cputype"
33
4
-config PPC32
5
- bool
6
- default y if !PPC64
7
-
84 config 32BIT
95 bool
106 default y if PPC32
....@@ -48,7 +44,7 @@
4844 # Allow randomisation to consume up to 512MB of address space (2^29).
4945 default 11 if PPC_256K_PAGES # 11 = 29 (512MB) - 18 (256K)
5046 default 13 if PPC_64K_PAGES # 13 = 29 (512MB) - 16 (64K)
51
- default 15 if PPC_16K_PAGES # 15 = 29 (512MB) - 14 (16K)
47
+ default 15 if PPC_16K_PAGES # 15 = 29 (512MB) - 14 (16K)
5248 default 17 # 17 = 29 (512MB) - 12 (4K)
5349
5450 config ARCH_MMAP_RND_COMPAT_BITS_MIN
....@@ -63,7 +59,10 @@
6359 def_bool PPC64
6460
6561 config NEED_PER_CPU_EMBED_FIRST_CHUNK
66
- def_bool PPC64
62
+ def_bool y if PPC64
63
+
64
+config NEED_PER_CPU_PAGE_FIRST_CHUNK
65
+ def_bool y if PPC64
6766
6867 config NR_IRQS
6968 int "Number of virtual interrupt numbers"
....@@ -103,25 +102,14 @@
103102 bool
104103 default y
105104
106
-config RWSEM_GENERIC_SPINLOCK
107
- bool
108
- default y if PREEMPT_RT_FULL
109
-
110
-config RWSEM_XCHGADD_ALGORITHM
111
- bool
112
- default y if !PREEMPT_RT_FULL
113
-
114105 config GENERIC_LOCKBREAK
115106 bool
116107 default y
117
- depends on SMP && PREEMPT
108
+ depends on SMP && PREEMPTION
118109
119110 config GENERIC_HWEIGHT
120111 bool
121112 default y
122
-
123
-config ARCH_HAS_DMA_SET_COHERENT_MASK
124
- bool
125113
126114 config PPC
127115 bool
....@@ -129,36 +117,49 @@
129117 #
130118 # Please keep this list sorted alphabetically.
131119 #
120
+ select ARCH_32BIT_OFF_T if PPC32
121
+ select ARCH_HAS_DEBUG_VIRTUAL
132122 select ARCH_HAS_DEVMEM_IS_ALLOWED
133
- select ARCH_HAS_DMA_SET_COHERENT_MASK
134123 select ARCH_HAS_ELF_RANDOMIZE
135124 select ARCH_HAS_FORTIFY_SOURCE
136125 select ARCH_HAS_GCOV_PROFILE_ALL
126
+ select ARCH_HAS_KCOV
127
+ select ARCH_HAS_HUGEPD if HUGETLB_PAGE
128
+ select ARCH_HAS_MEMREMAP_COMPAT_ALIGN
129
+ select ARCH_HAS_MMIOWB if PPC64
137130 select ARCH_HAS_PHYS_TO_DMA
138
- select ARCH_HAS_PMEM_API if PPC64
131
+ select ARCH_HAS_PMEM_API
132
+ select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
133
+ select ARCH_HAS_PTE_DEVMAP if PPC_BOOK3S_64
139134 select ARCH_HAS_PTE_SPECIAL
140135 select ARCH_HAS_MEMBARRIER_CALLBACKS
141
- select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE
142
- select ARCH_HAS_SG_CHAIN
136
+ select ARCH_HAS_MEMBARRIER_SYNC_CORE
137
+ select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE && PPC_BOOK3S_64
143138 select ARCH_HAS_STRICT_KERNEL_RWX if (PPC32 && !HIBERNATION)
144139 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
145
- select ARCH_HAS_UACCESS_FLUSHCACHE if PPC64
140
+ select ARCH_HAS_UACCESS_FLUSHCACHE
141
+ select ARCH_HAS_COPY_MC if PPC64
146142 select ARCH_HAS_UBSAN_SANITIZE_ALL
147
- select ARCH_HAS_ZONE_DEVICE if PPC_BOOK3S_64
148143 select ARCH_HAVE_NMI_SAFE_CMPXCHG
144
+ select ARCH_KEEP_MEMBLOCK
149145 select ARCH_MIGHT_HAVE_PC_PARPORT
150146 select ARCH_MIGHT_HAVE_PC_SERIO
151147 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
152148 select ARCH_SUPPORTS_ATOMIC_RMW
153149 select ARCH_USE_BUILTIN_BSWAP
154150 select ARCH_USE_CMPXCHG_LOCKREF if PPC64
151
+ select ARCH_USE_QUEUED_RWLOCKS if PPC_QUEUED_SPINLOCKS
152
+ select ARCH_USE_QUEUED_SPINLOCKS if PPC_QUEUED_SPINLOCKS
155153 select ARCH_WANT_IPC_PARSE_VERSION
156154 select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
155
+ select ARCH_WANT_LD_ORPHAN_WARN
157156 select ARCH_WEAK_RELEASE_ACQUIRE
158157 select BINFMT_ELF
159
- select BUILDTIME_EXTABLE_SORT
158
+ select BUILDTIME_TABLE_SORT
160159 select CLONE_BACKWARDS
161160 select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN
161
+ select DMA_OPS if PPC64
162
+ select DMA_OPS_BYPASS if PPC64
162163 select DYNAMIC_FTRACE if FUNCTION_TRACER
163164 select EDAC_ATOMIC_SCRUB
164165 select EDAC_SUPPORT
....@@ -168,45 +169,57 @@
168169 select GENERIC_CMOS_UPDATE
169170 select GENERIC_CPU_AUTOPROBE
170171 select GENERIC_CPU_VULNERABILITIES if PPC_BARRIER_NOSPEC
172
+ select GENERIC_EARLY_IOREMAP
171173 select GENERIC_IRQ_SHOW
172174 select GENERIC_IRQ_SHOW_LEVEL
175
+ select GENERIC_PCI_IOMAP if PCI
173176 select GENERIC_SMP_IDLE_THREAD
174177 select GENERIC_STRNCPY_FROM_USER
175178 select GENERIC_STRNLEN_USER
176179 select GENERIC_TIME_VSYSCALL
177180 select HAVE_ARCH_AUDITSYSCALL
181
+ select HAVE_ARCH_HUGE_VMAP if PPC_BOOK3S_64 && PPC_RADIX_MMU
178182 select HAVE_ARCH_JUMP_LABEL
183
+ select HAVE_ARCH_KASAN if PPC32 && PPC_PAGE_SHIFT <= 14
184
+ select HAVE_ARCH_KASAN_VMALLOC if PPC32 && PPC_PAGE_SHIFT <= 14
179185 select HAVE_ARCH_KGDB
180186 select HAVE_ARCH_MMAP_RND_BITS
181187 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
188
+ select HAVE_ARCH_NVRAM_OPS
182189 select HAVE_ARCH_SECCOMP_FILTER
183190 select HAVE_ARCH_TRACEHOOK
191
+ select HAVE_ASM_MODVERSIONS
192
+ select HAVE_C_RECORDMCOUNT
184193 select HAVE_CBPF_JIT if !PPC64
194
+ select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13)
195
+ select HAVE_STACKPROTECTOR if PPC32 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r2)
185196 select HAVE_CONTEXT_TRACKING if PPC64
197
+ select HAVE_TIF_NOHZ if PPC64
186198 select HAVE_DEBUG_KMEMLEAK
187199 select HAVE_DEBUG_STACKOVERFLOW
188200 select HAVE_DYNAMIC_FTRACE
189201 select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL
190202 select HAVE_EBPF_JIT if PPC64
191203 select HAVE_EFFICIENT_UNALIGNED_ACCESS if !(CPU_LITTLE_ENDIAN && POWER7_CPU)
204
+ select HAVE_FAST_GUP
192205 select HAVE_FTRACE_MCOUNT_RECORD
206
+ select HAVE_FUNCTION_ERROR_INJECTION
193207 select HAVE_FUNCTION_GRAPH_TRACER
194208 select HAVE_FUNCTION_TRACER
195209 select HAVE_GCC_PLUGINS if GCC_VERSION >= 50200 # plugin support on gcc <= 5.1 is buggy on PPC
196
- select HAVE_GENERIC_GUP
197210 select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx)
198211 select HAVE_IDE
199212 select HAVE_IOREMAP_PROT
200213 select HAVE_IRQ_EXIT_ON_IRQ_STACK
201214 select HAVE_KERNEL_GZIP
202
- select HAVE_KERNEL_XZ if PPC_BOOK3S
215
+ select HAVE_KERNEL_LZMA if DEFAULT_UIMAGE
216
+ select HAVE_KERNEL_LZO if DEFAULT_UIMAGE
217
+ select HAVE_KERNEL_XZ if PPC_BOOK3S || 44x
203218 select HAVE_KPROBES
204219 select HAVE_KPROBES_ON_FTRACE
205220 select HAVE_KRETPROBES
206221 select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
207222 select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS
208
- select HAVE_MEMBLOCK
209
- select HAVE_MEMBLOCK_NODE_MAP
210223 select HAVE_MOD_ARCH_SPECIFIC
211224 select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
212225 select HAVE_HARDLOCKUP_DETECTOR_ARCH if PPC64 && PPC_BOOK3S && SMP
....@@ -217,10 +230,10 @@
217230 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH
218231 select HAVE_PERF_REGS
219232 select HAVE_PERF_USER_STACK_DUMP
220
- select HAVE_PREEMPT_LAZY
221
- select HAVE_RCU_TABLE_FREE if SMP
233
+ select MMU_GATHER_RCU_TABLE_FREE
234
+ select MMU_GATHER_PAGE_SIZE
222235 select HAVE_REGS_AND_STACK_ACCESS_API
223
- select HAVE_RELIABLE_STACKTRACE if PPC64 && CPU_LITTLE_ENDIAN
236
+ select HAVE_RELIABLE_STACKTRACE if PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
224237 select HAVE_SYSCALL_TRACEPOINTS
225238 select HAVE_VIRT_CPU_ACCOUNTING
226239 select HAVE_IRQ_TIME_ACCOUNTING
....@@ -231,28 +244,28 @@
231244 select MODULES_USE_ELF_RELA
232245 select NEED_DMA_MAP_STATE if PPC64 || NOT_COHERENT_CACHE
233246 select NEED_SG_DMA_LENGTH
234
- select NO_BOOTMEM
235247 select OF
236248 select OF_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE
237249 select OF_EARLY_FLATTREE
238
- select OF_RESERVED_MEM
239250 select OLD_SIGACTION if PPC32
240251 select OLD_SIGSUSPEND
252
+ select PCI_DOMAINS if PCI
253
+ select PCI_MSI_ARCH_FALLBACKS if PCI_MSI
254
+ select PCI_SYSCALL if PCI
255
+ select PPC_DAWR if PPC64
241256 select RTC_LIB
242257 select SPARSE_IRQ
243258 select SYSCTL_EXCEPTION_TRACE
259
+ select THREAD_INFO_IN_TASK
244260 select VIRT_TO_BUS if !PPC64
245261 #
246262 # Please keep this list sorted alphabetically.
247263 #
248264
249265 config PPC_BARRIER_NOSPEC
250
- bool
251
- default y
252
- depends on PPC_BOOK3S_64 || PPC_FSL_BOOK3E
253
-
254
-config GENERIC_CSUM
255
- def_bool n
266
+ bool
267
+ default y
268
+ depends on PPC_BOOK3S_64 || PPC_FSL_BOOK3E
256269
257270 config EARLY_PRINTK
258271 bool
....@@ -263,8 +276,9 @@
263276 default 180
264277
265278 config COMPAT
266
- bool
267
- default y if PPC64
279
+ bool "Enable support for 32bit binaries"
280
+ depends on PPC64
281
+ default y if !CPU_LITTLE_ENDIAN
268282 select COMPAT_BINFMT_ELF
269283 select ARCH_WANT_OLD_COMPAT_IPC
270284 select COMPAT_OLD_SIGACTION
....@@ -273,11 +287,6 @@
273287 bool
274288 depends on COMPAT && SYSVIPC
275289 default y
276
-
277
-# All PPC32s use generic nvram driver through ppc_md
278
-config GENERIC_NVRAM
279
- bool
280
- default y if PPC32
281290
282291 config SCHED_OMIT_FRAME_POINTER
283292 bool
....@@ -289,12 +298,10 @@
289298
290299 config PPC_UDBG_16550
291300 bool
292
- default n
293301
294302 config GENERIC_TBSYNC
295303 bool
296304 default y if PPC32 && SMP
297
- default n
298305
299306 config AUDIT_ARCH
300307 bool
....@@ -313,13 +320,11 @@
313320 bool
314321 help
315322 Used to allow a board to specify it wants an ePAPR compliant wrapper.
316
- default n
317323
318324 config DEFAULT_UIMAGE
319325 bool
320326 help
321327 Used to allow a board to specify it wants a uImage built by default
322
- default n
323328
324329 config ARCH_HIBERNATION_POSSIBLE
325330 bool
....@@ -331,13 +336,15 @@
331336 (PPC_85xx && !PPC_E500MC) || PPC_86xx || PPC_PSERIES \
332337 || 44x || 40x
333338
339
+config ARCH_SUSPEND_NONZERO_CPU
340
+ def_bool y
341
+ depends on PPC_POWERNV || PPC_PSERIES
342
+
334343 config PPC_DCR_NATIVE
335344 bool
336
- default n
337345
338346 config PPC_DCR_MMIO
339347 bool
340
- default n
341348
342349 config PPC_DCR
343350 bool
....@@ -348,7 +355,6 @@
348355 bool
349356 depends on PCI
350357 depends on PPC64 # not supported on 32 bits yet
351
- default n
352358
353359 config ARCH_SUPPORTS_DEBUG_PAGEALLOC
354360 depends on PPC32 || PPC_BOOK3S_64
....@@ -384,14 +390,16 @@
384390 depends on PPC_ADV_DEBUG_REGS && 44x
385391 default y
386392
387
-config ZONE_DMA32
393
+config PPC_DAWR
388394 bool
389
- default y if PPC64
395
+
396
+config ZONE_DMA
397
+ bool
398
+ default y if PPC_BOOK3E_64
390399
391400 config PGTABLE_LEVELS
392401 int
393402 default 2 if !PPC64
394
- default 3 if PPC_64K_PAGES && !PPC_BOOK3S_64
395403 default 4
396404
397405 source "arch/powerpc/sysdev/Kconfig"
....@@ -401,19 +409,19 @@
401409
402410 config HIGHMEM
403411 bool "High memory support"
404
- depends on PPC32 && !PREEMPT_RT_FULL
412
+ depends on PPC32
405413
406
-source kernel/Kconfig.hz
414
+source "kernel/Kconfig.hz"
407415
408416 config HUGETLB_PAGE_SIZE_VARIABLE
409417 bool
410
- depends on HUGETLB_PAGE
418
+ depends on HUGETLB_PAGE && PPC_BOOK3S_64
411419 default y
412420
413421 config MATH_EMULATION
414422 bool "Math emulation"
415423 depends on 4xx || PPC_8xx || PPC_MPC832x || BOOKE
416
- ---help---
424
+ help
417425 Some PowerPC chips designed for embedded applications do not have
418426 a floating-point unit and therefore do not implement the
419427 floating-point instructions in the PowerPC instruction set. If you
....@@ -432,33 +440,44 @@
432440
433441 config MATH_EMULATION_FULL
434442 bool "Emulate all the floating point instructions"
435
- ---help---
443
+ help
436444 Select this option will enable the kernel to support to emulate
437445 all the floating point instructions. If your SoC doesn't have
438446 a FPU, you should select this.
439447
440448 config MATH_EMULATION_HW_UNIMPLEMENTED
441449 bool "Just emulate the FPU unimplemented instructions"
442
- ---help---
450
+ help
443451 Select this if you know there does have a hardware FPU on your
444452 SoC, but some floating point instructions are not implemented by that.
445453
446454 endchoice
447455
448456 config PPC_TRANSACTIONAL_MEM
449
- bool "Transactional Memory support for POWERPC"
450
- depends on PPC_BOOK3S_64
451
- depends on SMP
452
- select ALTIVEC
453
- select VSX
454
- default n
455
- ---help---
456
- Support user-mode Transactional Memory on POWERPC.
457
+ bool "Transactional Memory support for POWERPC"
458
+ depends on PPC_BOOK3S_64
459
+ depends on SMP
460
+ select ALTIVEC
461
+ select VSX
462
+ help
463
+ Support user-mode Transactional Memory on POWERPC.
464
+
465
+config PPC_UV
466
+ bool "Ultravisor support"
467
+ depends on KVM_BOOK3S_HV_POSSIBLE
468
+ depends on DEVICE_PRIVATE
469
+ default n
470
+ help
471
+ This option paravirtualizes the kernel to run in POWER platforms that
472
+ supports the Protected Execution Facility (PEF). On such platforms,
473
+ the ultravisor firmware runs at a privilege level above the
474
+ hypervisor.
475
+
476
+ If unsure, say "N".
457477
458478 config LD_HEAD_STUB_CATCH
459479 bool "Reserve 256 bytes to cope with linker stubs in HEAD text" if EXPERT
460480 depends on PPC64
461
- default n
462481 help
463482 Very large kernels can cause linker branch stubs to be generated by
464483 code in head_64.S, which moves the head text sections out of their
....@@ -467,27 +486,37 @@
467486 If unsure, say "N".
468487
469488 config MPROFILE_KERNEL
470
- depends on PPC64 && CPU_LITTLE_ENDIAN
489
+ depends on PPC64 && CPU_LITTLE_ENDIAN && FUNCTION_TRACER
471490 def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__)
472491
473492 config HOTPLUG_CPU
474493 bool "Support for enabling/disabling CPUs"
475494 depends on SMP && (PPC_PSERIES || \
476
- PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
477
- ---help---
495
+ PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
496
+ help
478497 Say Y here to be able to disable and re-enable individual
479498 CPUs at runtime on SMP machines.
480499
481500 Say N if you are unsure.
501
+
502
+config PPC_QUEUED_SPINLOCKS
503
+ bool "Queued spinlocks"
504
+ depends on SMP
505
+ help
506
+ Say Y here to use queued spinlocks which give better scalability and
507
+ fairness on large SMP and NUMA systems without harming single threaded
508
+ performance.
509
+
510
+ This option is currently experimental, the code is more complex and
511
+ less tested so it defaults to "N" for the moment.
512
+
513
+ If unsure, say "N".
482514
483515 config ARCH_CPU_PROBE_RELEASE
484516 def_bool y
485517 depends on HOTPLUG_CPU
486518
487519 config ARCH_ENABLE_MEMORY_HOTPLUG
488
- def_bool y
489
-
490
-config ARCH_HAS_WALK_MEMORY
491520 def_bool y
492521
493522 config ARCH_ENABLE_MEMORY_HOTREMOVE
....@@ -522,6 +551,7 @@
522551 select KEXEC_CORE
523552 select HAVE_IMA_KEXEC
524553 select BUILD_BIN2C
554
+ select KEXEC_ELF
525555 depends on PPC64
526556 depends on CRYPTO=y
527557 depends on CRYPTO_SHA256=y
....@@ -558,10 +588,20 @@
558588 setting can still be useful to bootwrappers that need to know the
559589 load address of the kernel (eg. u-boot/mkimage).
560590
591
+config RANDOMIZE_BASE
592
+ bool "Randomize the address of the kernel image"
593
+ depends on (FSL_BOOKE && FLATMEM && PPC32)
594
+ depends on RELOCATABLE
595
+ help
596
+ Randomizes the virtual address at which the kernel image is
597
+ loaded, as a security feature that deters exploit attempts
598
+ relying on knowledge of the location of kernel internals.
599
+
600
+ If unsure, say Y.
601
+
561602 config RELOCATABLE_TEST
562603 bool "Test relocatable kernel"
563604 depends on (PPC64 && RELOCATABLE)
564
- default n
565605 help
566606 This runs the relocatable kernel at the address it was initially
567607 loaded at, which tends to be non-zero and therefore test the
....@@ -569,7 +609,7 @@
569609
570610 config CRASH_DUMP
571611 bool "Build a dump capture kernel"
572
- depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
612
+ depends on PPC64 || PPC_BOOK3S_32 || FSL_BOOKE || (44x && !SMP)
573613 select RELOCATABLE if PPC64 || 44x || FSL_BOOKE
574614 help
575615 Build a kernel suitable for use as a dump capture kernel.
....@@ -578,7 +618,7 @@
578618
579619 config FA_DUMP
580620 bool "Firmware-assisted dump"
581
- depends on PPC64 && PPC_RTAS
621
+ depends on PPC64 && (PPC_RTAS || PPC_POWERNV)
582622 select CRASH_CORE
583623 select CRASH_DUMP
584624 help
....@@ -589,7 +629,26 @@
589629 is meant to be a kdump replacement offering robustness and
590630 speed not possible without system firmware assistance.
591631
592
- If unsure, say "N"
632
+ If unsure, say "y". Only special kernels like petitboot may
633
+ need to say "N" here.
634
+
635
+config PRESERVE_FA_DUMP
636
+ bool "Preserve Firmware-assisted dump"
637
+ depends on PPC64 && PPC_POWERNV && !FA_DUMP
638
+ help
639
+ On a kernel with FA_DUMP disabled, this option helps to preserve
640
+ crash data from a previously crash'ed kernel. Useful when the next
641
+ memory preserving kernel boot would process this crash data.
642
+ Petitboot kernel is the typical usecase for this option.
643
+
644
+config OPAL_CORE
645
+ bool "Export OPAL memory as /sys/firmware/opal/core"
646
+ depends on PPC64 && PPC_POWERNV
647
+ help
648
+ This option uses the MPIPL support in firmware to provide an
649
+ ELF core of OPAL memory after a crash. The ELF core is exported
650
+ as /sys/firmware/opal/core file which is helpful in debugging
651
+ OPAL crashes using GDB.
593652
594653 config IRQ_ALL_CPUS
595654 bool "Distribute interrupts on all CPUs by default"
....@@ -650,15 +709,6 @@
650709 def_bool y
651710 depends on MEMORY_HOTPLUG
652711
653
-# Some NUMA nodes have memory ranges that span
654
-# other nodes. Even though a pfn is valid and
655
-# between a node's start and end pfns, it may not
656
-# reside on that node. See memmap_init_zone()
657
-# for details.
658
-config NODES_SPAN_OTHER_NODES
659
- def_bool y
660
- depends on NEED_MULTIPLE_NODES
661
-
662712 config STDBINUTILS
663713 bool "Using standard binutils settings"
664714 depends on 44x
....@@ -706,7 +756,7 @@
706756
707757 config PPC_64K_PAGES
708758 bool "64k page size"
709
- depends on !PPC_FSL_BOOK3E && (44x || PPC_BOOK3S_64 || PPC_BOOK3E_64)
759
+ depends on 44x || PPC_BOOK3S_64
710760 select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
711761
712762 config PPC_256K_PAGES
....@@ -724,6 +774,13 @@
724774
725775 endchoice
726776
777
+config PPC_PAGE_SHIFT
778
+ int
779
+ default 18 if PPC_256K_PAGES
780
+ default 16 if PPC_64K_PAGES
781
+ default 14 if PPC_16K_PAGES
782
+ default 12
783
+
727784 config THREAD_SHIFT
728785 int "Thread shift" if EXPERT
729786 range 13 15
....@@ -733,6 +790,39 @@
733790 help
734791 Used to define the stack size. The default is almost always what you
735792 want. Only change this if you know what you are doing.
793
+
794
+config DATA_SHIFT_BOOL
795
+ bool "Set custom data alignment"
796
+ depends on ADVANCED_OPTIONS
797
+ depends on STRICT_KERNEL_RWX || DEBUG_PAGEALLOC
798
+ depends on PPC_BOOK3S_32 || (PPC_8xx && !PIN_TLB_DATA && \
799
+ (!PIN_TLB_TEXT || !STRICT_KERNEL_RWX))
800
+ help
801
+ This option allows you to set the kernel data alignment. When
802
+ RAM is mapped by blocks, the alignment needs to fit the size and
803
+ number of possible blocks. The default should be OK for most configs.
804
+
805
+ Say N here unless you know what you are doing.
806
+
807
+config DATA_SHIFT
808
+ int "Data shift" if DATA_SHIFT_BOOL
809
+ default 24 if STRICT_KERNEL_RWX && PPC64
810
+ range 17 28 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC) && PPC_BOOK3S_32
811
+ range 19 23 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC) && PPC_8xx
812
+ default 22 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
813
+ default 18 if DEBUG_PAGEALLOC && PPC_BOOK3S_32
814
+ default 23 if STRICT_KERNEL_RWX && PPC_8xx
815
+ default 23 if DEBUG_PAGEALLOC && PPC_8xx && PIN_TLB_DATA
816
+ default 19 if DEBUG_PAGEALLOC && PPC_8xx
817
+ default PPC_PAGE_SHIFT
818
+ help
819
+ On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO.
820
+ Smaller is the alignment, greater is the number of necessary DBATs.
821
+
822
+ On 8xx, large pages (512kb or 8M) are used to map kernel linear
823
+ memory. Aligning to 8M reduces TLB misses as only 8M pages are used
824
+ in that case. If PIN_TLB is selected, it must be aligned to 8M as
825
+ 8M pages will be pinned.
736826
737827 config FORCE_MAX_ZONEORDER
738828 int "Maximum zone order"
....@@ -764,16 +854,30 @@
764854 this in mind when choosing a value for this option.
765855
766856 config PPC_SUBPAGE_PROT
767
- bool "Support setting protections for 4k subpages"
857
+ bool "Support setting protections for 4k subpages (subpage_prot syscall)"
858
+ default n
768859 depends on PPC_BOOK3S_64 && PPC_64K_PAGES
769860 help
770
- This option adds support for a system call to allow user programs
861
+ This option adds support for system call to allow user programs
771862 to set access permissions (read/write, readonly, or no access)
772863 on the 4k subpages of each 64k page.
773864
865
+ If unsure, say N here.
866
+
867
+config PPC_PROT_SAO_LPAR
868
+ bool "Support PROT_SAO mappings in LPARs"
869
+ depends on PPC_BOOK3S_64
870
+ help
871
+ This option adds support for PROT_SAO mappings from userspace
872
+ inside LPARs on supported CPUs.
873
+
874
+ This may cause issues when performing guest migration from
875
+ a CPU that supports SAO to one that does not.
876
+
877
+ If unsure, say N here.
878
+
774879 config PPC_COPRO_BASE
775880 bool
776
- default n
777881
778882 config SCHED_SMT
779883 bool "SMT (Hyperthreading) scheduler support"
....@@ -787,31 +891,45 @@
787891 bool "PowerPC denormalisation exception handling"
788892 depends on PPC_BOOK3S_64
789893 default "y" if PPC_POWERNV
790
- ---help---
894
+ help
791895 Add support for handling denormalisation of single precision
792896 values. Useful for bare metal only. If unsure say Y here.
793897
794
-config CMDLINE_BOOL
795
- bool "Default bootloader kernel arguments"
796
-
797898 config CMDLINE
798899 string "Initial kernel command string"
799
- depends on CMDLINE_BOOL
800
- default "console=ttyS0,9600 console=tty0 root=/dev/sda2"
900
+ default ""
801901 help
802902 On some platforms, there is currently no way for the boot loader to
803903 pass arguments to the kernel. For these platforms, you can supply
804904 some command-line options at build time by entering them here. In
805905 most cases you will need to specify the root device here.
806906
907
+choice
908
+ prompt "Kernel command line type" if CMDLINE != ""
909
+ default CMDLINE_FROM_BOOTLOADER
910
+
911
+config CMDLINE_FROM_BOOTLOADER
912
+ bool "Use bootloader kernel arguments if available"
913
+ help
914
+ Uses the command-line options passed by the boot loader. If
915
+ the boot loader doesn't provide any, the default kernel command
916
+ string provided in CMDLINE will be used.
917
+
918
+config CMDLINE_EXTEND
919
+ bool "Extend bootloader kernel arguments"
920
+ help
921
+ The command-line arguments provided by the boot loader will be
922
+ appended to the default kernel command string.
923
+
807924 config CMDLINE_FORCE
808925 bool "Always use the default kernel command string"
809
- depends on CMDLINE_BOOL
810926 help
811927 Always use the default kernel command string, even if the boot
812928 loader passes other arguments to the kernel.
813929 This is useful if you cannot or don't want to change the
814930 command-line options your boot loader passes to the kernel.
931
+
932
+endchoice
815933
816934 config EXTRA_TARGETS
817935 string "Additional default image types"
....@@ -830,24 +948,7 @@
830948 def_bool y
831949 depends on ADB_PMU
832950
833
-source kernel/power/Kconfig
834
-
835
-config SECCOMP
836
- bool "Enable seccomp to safely compute untrusted bytecode"
837
- depends on PROC_FS
838
- default y
839
- help
840
- This kernel feature is useful for number crunching applications
841
- that may need to compute untrusted bytecode during their
842
- execution. By using pipes or other transports made available to
843
- the process as file descriptors supporting the read/write
844
- syscalls, it's possible to isolate those applications in
845
- their own address space using seccomp. Once seccomp is
846
- enabled via /proc/<pid>/seccomp, it cannot be disabled
847
- and the task is only allowed to execute a few safe syscalls
848
- defined by each seccomp mode.
849
-
850
- If unsure, say Y. Only embedded should say N here.
951
+source "kernel/power/Kconfig"
851952
852953 config PPC_MEM_KEYS
853954 prompt "PowerPC Memory Protection Keys"
....@@ -860,9 +961,45 @@
860961 page-based protections, but without requiring modification of the
861962 page tables when an application changes protection domains.
862963
863
- For details, see Documentation/vm/protection-keys.rst
964
+ For details, see Documentation/core-api/protection-keys.rst
864965
865966 If unsure, say y.
967
+
968
+config PPC_SECURE_BOOT
969
+ prompt "Enable secure boot support"
970
+ bool
971
+ depends on PPC_POWERNV || PPC_PSERIES
972
+ depends on IMA_ARCH_POLICY
973
+ imply IMA_SECURE_AND_OR_TRUSTED_BOOT
974
+ help
975
+ Systems with firmware secure boot enabled need to define security
976
+ policies to extend secure boot to the OS. This config allows a user
977
+ to enable OS secure boot on systems that have firmware support for
978
+ it. If in doubt say N.
979
+
980
+config PPC_SECVAR_SYSFS
981
+ bool "Enable sysfs interface for POWER secure variables"
982
+ default y
983
+ depends on PPC_SECURE_BOOT
984
+ depends on SYSFS
985
+ help
986
+ POWER secure variables are managed and controlled by firmware.
987
+ These variables are exposed to userspace via sysfs to enable
988
+ read/write operations on these variables. Say Y if you have
989
+ secure boot enabled and want to expose variables to userspace.
990
+
991
+config PPC_RTAS_FILTER
992
+ bool "Enable filtering of RTAS syscalls"
993
+ default y
994
+ depends on PPC_RTAS
995
+ help
996
+ The RTAS syscall API has security issues that could be used to
997
+ compromise system integrity. This option enforces restrictions on the
998
+ RTAS calls and arguments passed by userspace programs to mitigate
999
+ these issues.
1000
+
1001
+ Say Y unless you know what you are doing and the filter is causing
1002
+ problems for you.
8661003
8671004 endmenu
8681005
....@@ -883,10 +1020,6 @@
8831020 have an IBM RS/6000 or pSeries machine, say Y. If you have an
8841021 embedded board, consult your board documentation.
8851022
886
-config ZONE_DMA
887
- bool
888
- default y
889
-
8901023 config GENERIC_ISA_DMA
8911024 bool
8921025 depends on ISA_DMA_API
....@@ -896,10 +1029,6 @@
8961029 bool
8971030 depends on PCI
8981031 default y if 40x || 44x
899
- default n
900
-
901
-config EISA
902
- bool
9031032
9041033 config SBUS
9051034 bool
....@@ -908,7 +1037,8 @@
9081037 bool
9091038
9101039 config FSL_PCI
911
- bool
1040
+ bool
1041
+ select ARCH_HAS_DMA_SET_MASK
9121042 select PPC_INDIRECT_PCI
9131043 select PCI_QUIRKS
9141044
....@@ -945,91 +1075,24 @@
9451075 help
9461076 Freescale General-purpose Timers support
9471077
948
-# Yes MCA RS/6000s exist but Linux-PPC does not currently support any
949
-config MCA
950
- bool
951
-
952
-# Platforms that what PCI turned unconditionally just do select PCI
953
-# in their config node. Platforms that want to choose at config
954
-# time should select PPC_PCI_CHOICE
955
-config PPC_PCI_CHOICE
956
- bool
957
-
958
-config PCI
959
- bool "PCI support" if PPC_PCI_CHOICE
960
- default y if !40x && !CPM2 && !PPC_8xx && !PPC_83xx \
961
- && !PPC_85xx && !PPC_86xx && !GAMECUBE_COMMON
962
- default PCI_QSPAN if PPC_8xx
963
- select GENERIC_PCI_IOMAP
964
- help
965
- Find out whether your system includes a PCI bus. PCI is the name of
966
- a bus system, i.e. the way the CPU talks to the other stuff inside
967
- your box. If you say Y here, the kernel will include drivers and
968
- infrastructure code to support PCI bus devices.
969
-
970
-config PCI_DOMAINS
971
- def_bool PCI
972
-
973
-config PCI_SYSCALL
974
- def_bool PCI
975
-
976
-config PCI_QSPAN
977
- bool "QSpan PCI"
978
- depends on PPC_8xx
979
- select PPC_I8259
980
- help
981
- Say Y here if you have a system based on a Motorola 8xx-series
982
- embedded processor with a QSPAN PCI interface, otherwise say N.
983
-
9841078 config PCI_8260
9851079 bool
9861080 depends on PCI && 8260
9871081 select PPC_INDIRECT_PCI
9881082 default y
9891083
990
-source "drivers/pci/Kconfig"
991
-
992
-source "drivers/pcmcia/Kconfig"
993
-
994
-config HAS_RAPIDIO
995
- bool
996
- default n
997
-
998
-config RAPIDIO
999
- tristate "RapidIO support"
1000
- depends on HAS_RAPIDIO || PCI
1001
- help
1002
- If you say Y here, the kernel will include drivers and
1003
- infrastructure code to support RapidIO interconnect devices.
1004
-
10051084 config FSL_RIO
10061085 bool "Freescale Embedded SRIO Controller support"
1007
- depends on RAPIDIO = y && HAS_RAPIDIO
1086
+ depends on RAPIDIO = y && HAVE_RAPIDIO
10081087 default "n"
1009
- ---help---
1088
+ help
10101089 Include support for RapidIO controller on Freescale embedded
10111090 processors (MPC8548, MPC8641, etc).
1012
-
1013
-source "drivers/rapidio/Kconfig"
1014
-
1015
-config PPC_RTAS_FILTER
1016
- bool "Enable filtering of RTAS syscalls"
1017
- default y
1018
- depends on PPC_RTAS
1019
- help
1020
- The RTAS syscall API has security issues that could be used to
1021
- compromise system integrity. This option enforces restrictions on the
1022
- RTAS calls and arguments passed by userspace programs to mitigate
1023
- these issues.
1024
-
1025
- Say Y unless you know what you are doing and the filter is causing
1026
- problems for you.
10271091
10281092 endmenu
10291093
10301094 config NONSTATIC_KERNEL
10311095 bool
1032
- default n
10331096
10341097 menu "Advanced setup"
10351098 depends on PPC32
....@@ -1086,14 +1149,14 @@
10861149 select NONSTATIC_KERNEL
10871150 help
10881151 This option enables the kernel to be loaded at any page aligned
1089
- physical address. The kernel creates a mapping from KERNELBASE to
1152
+ physical address. The kernel creates a mapping from KERNELBASE to
10901153 the address where the kernel is loaded. The page size here implies
10911154 the TLB page size of the mapping for kernel on the particular platform.
10921155 Please refer to the init code for finding the TLB page size.
10931156
10941157 DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE
10951158 kernel image, where the only restriction is the page aligned kernel
1096
- load address. When this option is enabled, the compile time physical
1159
+ load address. When this option is enabled, the compile time physical
10971160 address CONFIG_PHYSICAL_START is ignored.
10981161
10991162 This option is overridden by CONFIG_RELOCATABLE
....@@ -1139,7 +1202,7 @@
11391202
11401203 config PHYSICAL_START
11411204 hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL
1142
- default "0x02000000" if PPC_STD_MMU && CRASH_DUMP && !NONSTATIC_KERNEL
1205
+ default "0x02000000" if PPC_BOOK3S && CRASH_DUMP && !NONSTATIC_KERNEL
11431206 default "0x00000000"
11441207
11451208 config PHYSICAL_ALIGN
....@@ -1163,39 +1226,8 @@
11631226 config TASK_SIZE
11641227 hex "Size of user task space" if TASK_SIZE_BOOL
11651228 default "0x80000000" if PPC_8xx
1229
+ default "0xb0000000" if PPC_BOOK3S_32 && STRICT_KERNEL_RWX
11661230 default "0xc0000000"
1167
-
1168
-config CONSISTENT_SIZE_BOOL
1169
- bool "Set custom consistent memory pool size"
1170
- depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
1171
- help
1172
- This option allows you to set the size of the
1173
- consistent memory pool. This pool of virtual memory
1174
- is used to make consistent memory allocations.
1175
-
1176
-config CONSISTENT_SIZE
1177
- hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL
1178
- default "0x00200000" if NOT_COHERENT_CACHE
1179
-
1180
-config PIN_TLB
1181
- bool "Pinned Kernel TLBs (860 ONLY)"
1182
- depends on ADVANCED_OPTIONS && PPC_8xx && \
1183
- !DEBUG_PAGEALLOC && !STRICT_KERNEL_RWX
1184
-
1185
-config PIN_TLB_DATA
1186
- bool "Pinned TLB for DATA"
1187
- depends on PIN_TLB
1188
- default y
1189
-
1190
-config PIN_TLB_IMMR
1191
- bool "Pinned TLB for IMMR"
1192
- depends on PIN_TLB
1193
- default y
1194
-
1195
-config PIN_TLB_TEXT
1196
- bool "Pinned TLB for TEXT"
1197
- depends on PIN_TLB
1198
- default y
11991231 endmenu
12001232
12011233 if PPC64