hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
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,24 +102,14 @@
103102 bool
104103 default y
105104
106
-config RWSEM_GENERIC_SPINLOCK
107
- bool
108
-
109
-config RWSEM_XCHGADD_ALGORITHM
110
- bool
111
- default y
112
-
113105 config GENERIC_LOCKBREAK
114106 bool
115107 default y
116
- depends on SMP && PREEMPT
108
+ depends on SMP && PREEMPTION
117109
118110 config GENERIC_HWEIGHT
119111 bool
120112 default y
121
-
122
-config ARCH_HAS_DMA_SET_COHERENT_MASK
123
- bool
124113
125114 config PPC
126115 bool
....@@ -128,36 +117,50 @@
128117 #
129118 # Please keep this list sorted alphabetically.
130119 #
120
+ select ARCH_32BIT_OFF_T if PPC32
121
+ select ARCH_HAS_DEBUG_VIRTUAL
131122 select ARCH_HAS_DEVMEM_IS_ALLOWED
132
- select ARCH_HAS_DMA_SET_COHERENT_MASK
133123 select ARCH_HAS_ELF_RANDOMIZE
134124 select ARCH_HAS_FORTIFY_SOURCE
135125 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
136130 select ARCH_HAS_PHYS_TO_DMA
137
- 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
138134 select ARCH_HAS_PTE_SPECIAL
139135 select ARCH_HAS_MEMBARRIER_CALLBACKS
140
- select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE
141
- 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
142138 select ARCH_HAS_STRICT_KERNEL_RWX if (PPC32 && !HIBERNATION)
143139 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
144
- select ARCH_HAS_UACCESS_FLUSHCACHE if PPC64
140
+ select ARCH_HAS_UACCESS_FLUSHCACHE
141
+ select ARCH_HAS_COPY_MC if PPC64
145142 select ARCH_HAS_UBSAN_SANITIZE_ALL
146
- select ARCH_HAS_ZONE_DEVICE if PPC_BOOK3S_64
147143 select ARCH_HAVE_NMI_SAFE_CMPXCHG
144
+ select ARCH_KEEP_MEMBLOCK
148145 select ARCH_MIGHT_HAVE_PC_PARPORT
149146 select ARCH_MIGHT_HAVE_PC_SERIO
150147 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
151148 select ARCH_SUPPORTS_ATOMIC_RMW
149
+ select ARCH_SUPPORTS_RT if HAVE_POSIX_CPU_TIMERS_TASK_WORK
152150 select ARCH_USE_BUILTIN_BSWAP
153151 select ARCH_USE_CMPXCHG_LOCKREF if PPC64
152
+ select ARCH_USE_QUEUED_RWLOCKS if PPC_QUEUED_SPINLOCKS
153
+ select ARCH_USE_QUEUED_SPINLOCKS if PPC_QUEUED_SPINLOCKS
154154 select ARCH_WANT_IPC_PARSE_VERSION
155155 select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
156
+ select ARCH_WANT_LD_ORPHAN_WARN
156157 select ARCH_WEAK_RELEASE_ACQUIRE
157158 select BINFMT_ELF
158
- select BUILDTIME_EXTABLE_SORT
159
+ select BUILDTIME_TABLE_SORT
159160 select CLONE_BACKWARDS
160161 select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN
162
+ select DMA_OPS if PPC64
163
+ select DMA_OPS_BYPASS if PPC64
161164 select DYNAMIC_FTRACE if FUNCTION_TRACER
162165 select EDAC_ATOMIC_SCRUB
163166 select EDAC_SUPPORT
....@@ -167,45 +170,57 @@
167170 select GENERIC_CMOS_UPDATE
168171 select GENERIC_CPU_AUTOPROBE
169172 select GENERIC_CPU_VULNERABILITIES if PPC_BARRIER_NOSPEC
173
+ select GENERIC_EARLY_IOREMAP
170174 select GENERIC_IRQ_SHOW
171175 select GENERIC_IRQ_SHOW_LEVEL
176
+ select GENERIC_PCI_IOMAP if PCI
172177 select GENERIC_SMP_IDLE_THREAD
173178 select GENERIC_STRNCPY_FROM_USER
174179 select GENERIC_STRNLEN_USER
175180 select GENERIC_TIME_VSYSCALL
176181 select HAVE_ARCH_AUDITSYSCALL
182
+ select HAVE_ARCH_HUGE_VMAP if PPC_BOOK3S_64 && PPC_RADIX_MMU
177183 select HAVE_ARCH_JUMP_LABEL
184
+ select HAVE_ARCH_KASAN if PPC32 && PPC_PAGE_SHIFT <= 14
185
+ select HAVE_ARCH_KASAN_VMALLOC if PPC32 && PPC_PAGE_SHIFT <= 14
178186 select HAVE_ARCH_KGDB
179187 select HAVE_ARCH_MMAP_RND_BITS
180188 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
189
+ select HAVE_ARCH_NVRAM_OPS
181190 select HAVE_ARCH_SECCOMP_FILTER
182191 select HAVE_ARCH_TRACEHOOK
192
+ select HAVE_ASM_MODVERSIONS
193
+ select HAVE_C_RECORDMCOUNT
183194 select HAVE_CBPF_JIT if !PPC64
195
+ select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13)
196
+ select HAVE_STACKPROTECTOR if PPC32 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r2)
184197 select HAVE_CONTEXT_TRACKING if PPC64
198
+ select HAVE_TIF_NOHZ if PPC64
185199 select HAVE_DEBUG_KMEMLEAK
186200 select HAVE_DEBUG_STACKOVERFLOW
187201 select HAVE_DYNAMIC_FTRACE
188202 select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL
189203 select HAVE_EBPF_JIT if PPC64
190204 select HAVE_EFFICIENT_UNALIGNED_ACCESS if !(CPU_LITTLE_ENDIAN && POWER7_CPU)
205
+ select HAVE_FAST_GUP
191206 select HAVE_FTRACE_MCOUNT_RECORD
207
+ select HAVE_FUNCTION_ERROR_INJECTION
192208 select HAVE_FUNCTION_GRAPH_TRACER
193209 select HAVE_FUNCTION_TRACER
194210 select HAVE_GCC_PLUGINS if GCC_VERSION >= 50200 # plugin support on gcc <= 5.1 is buggy on PPC
195
- select HAVE_GENERIC_GUP
196211 select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx)
197212 select HAVE_IDE
198213 select HAVE_IOREMAP_PROT
199214 select HAVE_IRQ_EXIT_ON_IRQ_STACK
200215 select HAVE_KERNEL_GZIP
201
- select HAVE_KERNEL_XZ if PPC_BOOK3S
216
+ select HAVE_KERNEL_LZMA if DEFAULT_UIMAGE
217
+ select HAVE_KERNEL_LZO if DEFAULT_UIMAGE
218
+ select HAVE_KERNEL_XZ if PPC_BOOK3S || 44x
202219 select HAVE_KPROBES
203220 select HAVE_KPROBES_ON_FTRACE
204221 select HAVE_KRETPROBES
205222 select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
206223 select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS
207
- select HAVE_MEMBLOCK
208
- select HAVE_MEMBLOCK_NODE_MAP
209224 select HAVE_MOD_ARCH_SPECIFIC
210225 select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
211226 select HAVE_HARDLOCKUP_DETECTOR_ARCH if PPC64 && PPC_BOOK3S && SMP
....@@ -216,12 +231,15 @@
216231 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH
217232 select HAVE_PERF_REGS
218233 select HAVE_PERF_USER_STACK_DUMP
219
- select HAVE_RCU_TABLE_FREE if SMP
234
+ select HAVE_PREEMPT_LAZY
235
+ select MMU_GATHER_RCU_TABLE_FREE
236
+ select MMU_GATHER_PAGE_SIZE
220237 select HAVE_REGS_AND_STACK_ACCESS_API
221
- select HAVE_RELIABLE_STACKTRACE if PPC64 && CPU_LITTLE_ENDIAN
238
+ select HAVE_RELIABLE_STACKTRACE if PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
222239 select HAVE_SYSCALL_TRACEPOINTS
223240 select HAVE_VIRT_CPU_ACCOUNTING
224241 select HAVE_IRQ_TIME_ACCOUNTING
242
+ select HAVE_POSIX_CPU_TIMERS_TASK_WORK if !KVM
225243 select HAVE_RSEQ
226244 select IOMMU_HELPER if PPC64
227245 select IRQ_DOMAIN
....@@ -229,28 +247,28 @@
229247 select MODULES_USE_ELF_RELA
230248 select NEED_DMA_MAP_STATE if PPC64 || NOT_COHERENT_CACHE
231249 select NEED_SG_DMA_LENGTH
232
- select NO_BOOTMEM
233250 select OF
234251 select OF_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE
235252 select OF_EARLY_FLATTREE
236
- select OF_RESERVED_MEM
237253 select OLD_SIGACTION if PPC32
238254 select OLD_SIGSUSPEND
255
+ select PCI_DOMAINS if PCI
256
+ select PCI_MSI_ARCH_FALLBACKS if PCI_MSI
257
+ select PCI_SYSCALL if PCI
258
+ select PPC_DAWR if PPC64
239259 select RTC_LIB
240260 select SPARSE_IRQ
241261 select SYSCTL_EXCEPTION_TRACE
262
+ select THREAD_INFO_IN_TASK
242263 select VIRT_TO_BUS if !PPC64
243264 #
244265 # Please keep this list sorted alphabetically.
245266 #
246267
247268 config PPC_BARRIER_NOSPEC
248
- bool
249
- default y
250
- depends on PPC_BOOK3S_64 || PPC_FSL_BOOK3E
251
-
252
-config GENERIC_CSUM
253
- def_bool n
269
+ bool
270
+ default y
271
+ depends on PPC_BOOK3S_64 || PPC_FSL_BOOK3E
254272
255273 config EARLY_PRINTK
256274 bool
....@@ -261,8 +279,9 @@
261279 default 180
262280
263281 config COMPAT
264
- bool
265
- default y if PPC64
282
+ bool "Enable support for 32bit binaries"
283
+ depends on PPC64
284
+ default y if !CPU_LITTLE_ENDIAN
266285 select COMPAT_BINFMT_ELF
267286 select ARCH_WANT_OLD_COMPAT_IPC
268287 select COMPAT_OLD_SIGACTION
....@@ -271,11 +290,6 @@
271290 bool
272291 depends on COMPAT && SYSVIPC
273292 default y
274
-
275
-# All PPC32s use generic nvram driver through ppc_md
276
-config GENERIC_NVRAM
277
- bool
278
- default y if PPC32
279293
280294 config SCHED_OMIT_FRAME_POINTER
281295 bool
....@@ -287,12 +301,10 @@
287301
288302 config PPC_UDBG_16550
289303 bool
290
- default n
291304
292305 config GENERIC_TBSYNC
293306 bool
294307 default y if PPC32 && SMP
295
- default n
296308
297309 config AUDIT_ARCH
298310 bool
....@@ -311,13 +323,11 @@
311323 bool
312324 help
313325 Used to allow a board to specify it wants an ePAPR compliant wrapper.
314
- default n
315326
316327 config DEFAULT_UIMAGE
317328 bool
318329 help
319330 Used to allow a board to specify it wants a uImage built by default
320
- default n
321331
322332 config ARCH_HIBERNATION_POSSIBLE
323333 bool
....@@ -329,13 +339,15 @@
329339 (PPC_85xx && !PPC_E500MC) || PPC_86xx || PPC_PSERIES \
330340 || 44x || 40x
331341
342
+config ARCH_SUSPEND_NONZERO_CPU
343
+ def_bool y
344
+ depends on PPC_POWERNV || PPC_PSERIES
345
+
332346 config PPC_DCR_NATIVE
333347 bool
334
- default n
335348
336349 config PPC_DCR_MMIO
337350 bool
338
- default n
339351
340352 config PPC_DCR
341353 bool
....@@ -346,7 +358,6 @@
346358 bool
347359 depends on PCI
348360 depends on PPC64 # not supported on 32 bits yet
349
- default n
350361
351362 config ARCH_SUPPORTS_DEBUG_PAGEALLOC
352363 depends on PPC32 || PPC_BOOK3S_64
....@@ -382,14 +393,16 @@
382393 depends on PPC_ADV_DEBUG_REGS && 44x
383394 default y
384395
385
-config ZONE_DMA32
396
+config PPC_DAWR
386397 bool
387
- default y if PPC64
398
+
399
+config ZONE_DMA
400
+ bool
401
+ default y if PPC_BOOK3E_64
388402
389403 config PGTABLE_LEVELS
390404 int
391405 default 2 if !PPC64
392
- default 3 if PPC_64K_PAGES && !PPC_BOOK3S_64
393406 default 4
394407
395408 source "arch/powerpc/sysdev/Kconfig"
....@@ -400,18 +413,19 @@
400413 config HIGHMEM
401414 bool "High memory support"
402415 depends on PPC32
416
+ select KMAP_LOCAL
403417
404
-source kernel/Kconfig.hz
418
+source "kernel/Kconfig.hz"
405419
406420 config HUGETLB_PAGE_SIZE_VARIABLE
407421 bool
408
- depends on HUGETLB_PAGE
422
+ depends on HUGETLB_PAGE && PPC_BOOK3S_64
409423 default y
410424
411425 config MATH_EMULATION
412426 bool "Math emulation"
413427 depends on 4xx || PPC_8xx || PPC_MPC832x || BOOKE
414
- ---help---
428
+ help
415429 Some PowerPC chips designed for embedded applications do not have
416430 a floating-point unit and therefore do not implement the
417431 floating-point instructions in the PowerPC instruction set. If you
....@@ -430,33 +444,44 @@
430444
431445 config MATH_EMULATION_FULL
432446 bool "Emulate all the floating point instructions"
433
- ---help---
447
+ help
434448 Select this option will enable the kernel to support to emulate
435449 all the floating point instructions. If your SoC doesn't have
436450 a FPU, you should select this.
437451
438452 config MATH_EMULATION_HW_UNIMPLEMENTED
439453 bool "Just emulate the FPU unimplemented instructions"
440
- ---help---
454
+ help
441455 Select this if you know there does have a hardware FPU on your
442456 SoC, but some floating point instructions are not implemented by that.
443457
444458 endchoice
445459
446460 config PPC_TRANSACTIONAL_MEM
447
- bool "Transactional Memory support for POWERPC"
448
- depends on PPC_BOOK3S_64
449
- depends on SMP
450
- select ALTIVEC
451
- select VSX
452
- default n
453
- ---help---
454
- Support user-mode Transactional Memory on POWERPC.
461
+ bool "Transactional Memory support for POWERPC"
462
+ depends on PPC_BOOK3S_64
463
+ depends on SMP
464
+ select ALTIVEC
465
+ select VSX
466
+ help
467
+ Support user-mode Transactional Memory on POWERPC.
468
+
469
+config PPC_UV
470
+ bool "Ultravisor support"
471
+ depends on KVM_BOOK3S_HV_POSSIBLE
472
+ depends on DEVICE_PRIVATE
473
+ default n
474
+ help
475
+ This option paravirtualizes the kernel to run in POWER platforms that
476
+ supports the Protected Execution Facility (PEF). On such platforms,
477
+ the ultravisor firmware runs at a privilege level above the
478
+ hypervisor.
479
+
480
+ If unsure, say "N".
455481
456482 config LD_HEAD_STUB_CATCH
457483 bool "Reserve 256 bytes to cope with linker stubs in HEAD text" if EXPERT
458484 depends on PPC64
459
- default n
460485 help
461486 Very large kernels can cause linker branch stubs to be generated by
462487 code in head_64.S, which moves the head text sections out of their
....@@ -465,27 +490,37 @@
465490 If unsure, say "N".
466491
467492 config MPROFILE_KERNEL
468
- depends on PPC64 && CPU_LITTLE_ENDIAN
493
+ depends on PPC64 && CPU_LITTLE_ENDIAN && FUNCTION_TRACER
469494 def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__)
470495
471496 config HOTPLUG_CPU
472497 bool "Support for enabling/disabling CPUs"
473498 depends on SMP && (PPC_PSERIES || \
474
- PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
475
- ---help---
499
+ PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
500
+ help
476501 Say Y here to be able to disable and re-enable individual
477502 CPUs at runtime on SMP machines.
478503
479504 Say N if you are unsure.
505
+
506
+config PPC_QUEUED_SPINLOCKS
507
+ bool "Queued spinlocks"
508
+ depends on SMP
509
+ help
510
+ Say Y here to use queued spinlocks which give better scalability and
511
+ fairness on large SMP and NUMA systems without harming single threaded
512
+ performance.
513
+
514
+ This option is currently experimental, the code is more complex and
515
+ less tested so it defaults to "N" for the moment.
516
+
517
+ If unsure, say "N".
480518
481519 config ARCH_CPU_PROBE_RELEASE
482520 def_bool y
483521 depends on HOTPLUG_CPU
484522
485523 config ARCH_ENABLE_MEMORY_HOTPLUG
486
- def_bool y
487
-
488
-config ARCH_HAS_WALK_MEMORY
489524 def_bool y
490525
491526 config ARCH_ENABLE_MEMORY_HOTREMOVE
....@@ -520,6 +555,7 @@
520555 select KEXEC_CORE
521556 select HAVE_IMA_KEXEC
522557 select BUILD_BIN2C
558
+ select KEXEC_ELF
523559 depends on PPC64
524560 depends on CRYPTO=y
525561 depends on CRYPTO_SHA256=y
....@@ -556,10 +592,20 @@
556592 setting can still be useful to bootwrappers that need to know the
557593 load address of the kernel (eg. u-boot/mkimage).
558594
595
+config RANDOMIZE_BASE
596
+ bool "Randomize the address of the kernel image"
597
+ depends on (FSL_BOOKE && FLATMEM && PPC32)
598
+ depends on RELOCATABLE
599
+ help
600
+ Randomizes the virtual address at which the kernel image is
601
+ loaded, as a security feature that deters exploit attempts
602
+ relying on knowledge of the location of kernel internals.
603
+
604
+ If unsure, say Y.
605
+
559606 config RELOCATABLE_TEST
560607 bool "Test relocatable kernel"
561608 depends on (PPC64 && RELOCATABLE)
562
- default n
563609 help
564610 This runs the relocatable kernel at the address it was initially
565611 loaded at, which tends to be non-zero and therefore test the
....@@ -567,7 +613,7 @@
567613
568614 config CRASH_DUMP
569615 bool "Build a dump capture kernel"
570
- depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
616
+ depends on PPC64 || PPC_BOOK3S_32 || FSL_BOOKE || (44x && !SMP)
571617 select RELOCATABLE if PPC64 || 44x || FSL_BOOKE
572618 help
573619 Build a kernel suitable for use as a dump capture kernel.
....@@ -576,7 +622,7 @@
576622
577623 config FA_DUMP
578624 bool "Firmware-assisted dump"
579
- depends on PPC64 && PPC_RTAS
625
+ depends on PPC64 && (PPC_RTAS || PPC_POWERNV)
580626 select CRASH_CORE
581627 select CRASH_DUMP
582628 help
....@@ -587,7 +633,26 @@
587633 is meant to be a kdump replacement offering robustness and
588634 speed not possible without system firmware assistance.
589635
590
- If unsure, say "N"
636
+ If unsure, say "y". Only special kernels like petitboot may
637
+ need to say "N" here.
638
+
639
+config PRESERVE_FA_DUMP
640
+ bool "Preserve Firmware-assisted dump"
641
+ depends on PPC64 && PPC_POWERNV && !FA_DUMP
642
+ help
643
+ On a kernel with FA_DUMP disabled, this option helps to preserve
644
+ crash data from a previously crash'ed kernel. Useful when the next
645
+ memory preserving kernel boot would process this crash data.
646
+ Petitboot kernel is the typical usecase for this option.
647
+
648
+config OPAL_CORE
649
+ bool "Export OPAL memory as /sys/firmware/opal/core"
650
+ depends on PPC64 && PPC_POWERNV
651
+ help
652
+ This option uses the MPIPL support in firmware to provide an
653
+ ELF core of OPAL memory after a crash. The ELF core is exported
654
+ as /sys/firmware/opal/core file which is helpful in debugging
655
+ OPAL crashes using GDB.
591656
592657 config IRQ_ALL_CPUS
593658 bool "Distribute interrupts on all CPUs by default"
....@@ -648,15 +713,6 @@
648713 def_bool y
649714 depends on MEMORY_HOTPLUG
650715
651
-# Some NUMA nodes have memory ranges that span
652
-# other nodes. Even though a pfn is valid and
653
-# between a node's start and end pfns, it may not
654
-# reside on that node. See memmap_init_zone()
655
-# for details.
656
-config NODES_SPAN_OTHER_NODES
657
- def_bool y
658
- depends on NEED_MULTIPLE_NODES
659
-
660716 config STDBINUTILS
661717 bool "Using standard binutils settings"
662718 depends on 44x
....@@ -704,7 +760,7 @@
704760
705761 config PPC_64K_PAGES
706762 bool "64k page size"
707
- depends on !PPC_FSL_BOOK3E && (44x || PPC_BOOK3S_64 || PPC_BOOK3E_64)
763
+ depends on 44x || PPC_BOOK3S_64
708764 select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
709765
710766 config PPC_256K_PAGES
....@@ -722,6 +778,13 @@
722778
723779 endchoice
724780
781
+config PPC_PAGE_SHIFT
782
+ int
783
+ default 18 if PPC_256K_PAGES
784
+ default 16 if PPC_64K_PAGES
785
+ default 14 if PPC_16K_PAGES
786
+ default 12
787
+
725788 config THREAD_SHIFT
726789 int "Thread shift" if EXPERT
727790 range 13 15
....@@ -731,6 +794,39 @@
731794 help
732795 Used to define the stack size. The default is almost always what you
733796 want. Only change this if you know what you are doing.
797
+
798
+config DATA_SHIFT_BOOL
799
+ bool "Set custom data alignment"
800
+ depends on ADVANCED_OPTIONS
801
+ depends on STRICT_KERNEL_RWX || DEBUG_PAGEALLOC
802
+ depends on PPC_BOOK3S_32 || (PPC_8xx && !PIN_TLB_DATA && \
803
+ (!PIN_TLB_TEXT || !STRICT_KERNEL_RWX))
804
+ help
805
+ This option allows you to set the kernel data alignment. When
806
+ RAM is mapped by blocks, the alignment needs to fit the size and
807
+ number of possible blocks. The default should be OK for most configs.
808
+
809
+ Say N here unless you know what you are doing.
810
+
811
+config DATA_SHIFT
812
+ int "Data shift" if DATA_SHIFT_BOOL
813
+ default 24 if STRICT_KERNEL_RWX && PPC64
814
+ range 17 28 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC) && PPC_BOOK3S_32
815
+ range 19 23 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC) && PPC_8xx
816
+ default 22 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
817
+ default 18 if DEBUG_PAGEALLOC && PPC_BOOK3S_32
818
+ default 23 if STRICT_KERNEL_RWX && PPC_8xx
819
+ default 23 if DEBUG_PAGEALLOC && PPC_8xx && PIN_TLB_DATA
820
+ default 19 if DEBUG_PAGEALLOC && PPC_8xx
821
+ default PPC_PAGE_SHIFT
822
+ help
823
+ On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO.
824
+ Smaller is the alignment, greater is the number of necessary DBATs.
825
+
826
+ On 8xx, large pages (512kb or 8M) are used to map kernel linear
827
+ memory. Aligning to 8M reduces TLB misses as only 8M pages are used
828
+ in that case. If PIN_TLB is selected, it must be aligned to 8M as
829
+ 8M pages will be pinned.
734830
735831 config FORCE_MAX_ZONEORDER
736832 int "Maximum zone order"
....@@ -762,16 +858,30 @@
762858 this in mind when choosing a value for this option.
763859
764860 config PPC_SUBPAGE_PROT
765
- bool "Support setting protections for 4k subpages"
861
+ bool "Support setting protections for 4k subpages (subpage_prot syscall)"
862
+ default n
766863 depends on PPC_BOOK3S_64 && PPC_64K_PAGES
767864 help
768
- This option adds support for a system call to allow user programs
865
+ This option adds support for system call to allow user programs
769866 to set access permissions (read/write, readonly, or no access)
770867 on the 4k subpages of each 64k page.
771868
869
+ If unsure, say N here.
870
+
871
+config PPC_PROT_SAO_LPAR
872
+ bool "Support PROT_SAO mappings in LPARs"
873
+ depends on PPC_BOOK3S_64
874
+ help
875
+ This option adds support for PROT_SAO mappings from userspace
876
+ inside LPARs on supported CPUs.
877
+
878
+ This may cause issues when performing guest migration from
879
+ a CPU that supports SAO to one that does not.
880
+
881
+ If unsure, say N here.
882
+
772883 config PPC_COPRO_BASE
773884 bool
774
- default n
775885
776886 config SCHED_SMT
777887 bool "SMT (Hyperthreading) scheduler support"
....@@ -785,31 +895,45 @@
785895 bool "PowerPC denormalisation exception handling"
786896 depends on PPC_BOOK3S_64
787897 default "y" if PPC_POWERNV
788
- ---help---
898
+ help
789899 Add support for handling denormalisation of single precision
790900 values. Useful for bare metal only. If unsure say Y here.
791901
792
-config CMDLINE_BOOL
793
- bool "Default bootloader kernel arguments"
794
-
795902 config CMDLINE
796903 string "Initial kernel command string"
797
- depends on CMDLINE_BOOL
798
- default "console=ttyS0,9600 console=tty0 root=/dev/sda2"
904
+ default ""
799905 help
800906 On some platforms, there is currently no way for the boot loader to
801907 pass arguments to the kernel. For these platforms, you can supply
802908 some command-line options at build time by entering them here. In
803909 most cases you will need to specify the root device here.
804910
911
+choice
912
+ prompt "Kernel command line type" if CMDLINE != ""
913
+ default CMDLINE_FROM_BOOTLOADER
914
+
915
+config CMDLINE_FROM_BOOTLOADER
916
+ bool "Use bootloader kernel arguments if available"
917
+ help
918
+ Uses the command-line options passed by the boot loader. If
919
+ the boot loader doesn't provide any, the default kernel command
920
+ string provided in CMDLINE will be used.
921
+
922
+config CMDLINE_EXTEND
923
+ bool "Extend bootloader kernel arguments"
924
+ help
925
+ The command-line arguments provided by the boot loader will be
926
+ appended to the default kernel command string.
927
+
805928 config CMDLINE_FORCE
806929 bool "Always use the default kernel command string"
807
- depends on CMDLINE_BOOL
808930 help
809931 Always use the default kernel command string, even if the boot
810932 loader passes other arguments to the kernel.
811933 This is useful if you cannot or don't want to change the
812934 command-line options your boot loader passes to the kernel.
935
+
936
+endchoice
813937
814938 config EXTRA_TARGETS
815939 string "Additional default image types"
....@@ -828,24 +952,7 @@
828952 def_bool y
829953 depends on ADB_PMU
830954
831
-source kernel/power/Kconfig
832
-
833
-config SECCOMP
834
- bool "Enable seccomp to safely compute untrusted bytecode"
835
- depends on PROC_FS
836
- default y
837
- help
838
- This kernel feature is useful for number crunching applications
839
- that may need to compute untrusted bytecode during their
840
- execution. By using pipes or other transports made available to
841
- the process as file descriptors supporting the read/write
842
- syscalls, it's possible to isolate those applications in
843
- their own address space using seccomp. Once seccomp is
844
- enabled via /proc/<pid>/seccomp, it cannot be disabled
845
- and the task is only allowed to execute a few safe syscalls
846
- defined by each seccomp mode.
847
-
848
- If unsure, say Y. Only embedded should say N here.
955
+source "kernel/power/Kconfig"
849956
850957 config PPC_MEM_KEYS
851958 prompt "PowerPC Memory Protection Keys"
....@@ -858,9 +965,45 @@
858965 page-based protections, but without requiring modification of the
859966 page tables when an application changes protection domains.
860967
861
- For details, see Documentation/vm/protection-keys.rst
968
+ For details, see Documentation/core-api/protection-keys.rst
862969
863970 If unsure, say y.
971
+
972
+config PPC_SECURE_BOOT
973
+ prompt "Enable secure boot support"
974
+ bool
975
+ depends on PPC_POWERNV || PPC_PSERIES
976
+ depends on IMA_ARCH_POLICY
977
+ imply IMA_SECURE_AND_OR_TRUSTED_BOOT
978
+ help
979
+ Systems with firmware secure boot enabled need to define security
980
+ policies to extend secure boot to the OS. This config allows a user
981
+ to enable OS secure boot on systems that have firmware support for
982
+ it. If in doubt say N.
983
+
984
+config PPC_SECVAR_SYSFS
985
+ bool "Enable sysfs interface for POWER secure variables"
986
+ default y
987
+ depends on PPC_SECURE_BOOT
988
+ depends on SYSFS
989
+ help
990
+ POWER secure variables are managed and controlled by firmware.
991
+ These variables are exposed to userspace via sysfs to enable
992
+ read/write operations on these variables. Say Y if you have
993
+ secure boot enabled and want to expose variables to userspace.
994
+
995
+config PPC_RTAS_FILTER
996
+ bool "Enable filtering of RTAS syscalls"
997
+ default y
998
+ depends on PPC_RTAS
999
+ help
1000
+ The RTAS syscall API has security issues that could be used to
1001
+ compromise system integrity. This option enforces restrictions on the
1002
+ RTAS calls and arguments passed by userspace programs to mitigate
1003
+ these issues.
1004
+
1005
+ Say Y unless you know what you are doing and the filter is causing
1006
+ problems for you.
8641007
8651008 endmenu
8661009
....@@ -881,10 +1024,6 @@
8811024 have an IBM RS/6000 or pSeries machine, say Y. If you have an
8821025 embedded board, consult your board documentation.
8831026
884
-config ZONE_DMA
885
- bool
886
- default y
887
-
8881027 config GENERIC_ISA_DMA
8891028 bool
8901029 depends on ISA_DMA_API
....@@ -894,10 +1033,6 @@
8941033 bool
8951034 depends on PCI
8961035 default y if 40x || 44x
897
- default n
898
-
899
-config EISA
900
- bool
9011036
9021037 config SBUS
9031038 bool
....@@ -906,7 +1041,8 @@
9061041 bool
9071042
9081043 config FSL_PCI
909
- bool
1044
+ bool
1045
+ select ARCH_HAS_DMA_SET_MASK
9101046 select PPC_INDIRECT_PCI
9111047 select PCI_QUIRKS
9121048
....@@ -943,91 +1079,24 @@
9431079 help
9441080 Freescale General-purpose Timers support
9451081
946
-# Yes MCA RS/6000s exist but Linux-PPC does not currently support any
947
-config MCA
948
- bool
949
-
950
-# Platforms that what PCI turned unconditionally just do select PCI
951
-# in their config node. Platforms that want to choose at config
952
-# time should select PPC_PCI_CHOICE
953
-config PPC_PCI_CHOICE
954
- bool
955
-
956
-config PCI
957
- bool "PCI support" if PPC_PCI_CHOICE
958
- default y if !40x && !CPM2 && !PPC_8xx && !PPC_83xx \
959
- && !PPC_85xx && !PPC_86xx && !GAMECUBE_COMMON
960
- default PCI_QSPAN if PPC_8xx
961
- select GENERIC_PCI_IOMAP
962
- help
963
- Find out whether your system includes a PCI bus. PCI is the name of
964
- a bus system, i.e. the way the CPU talks to the other stuff inside
965
- your box. If you say Y here, the kernel will include drivers and
966
- infrastructure code to support PCI bus devices.
967
-
968
-config PCI_DOMAINS
969
- def_bool PCI
970
-
971
-config PCI_SYSCALL
972
- def_bool PCI
973
-
974
-config PCI_QSPAN
975
- bool "QSpan PCI"
976
- depends on PPC_8xx
977
- select PPC_I8259
978
- help
979
- Say Y here if you have a system based on a Motorola 8xx-series
980
- embedded processor with a QSPAN PCI interface, otherwise say N.
981
-
9821082 config PCI_8260
9831083 bool
9841084 depends on PCI && 8260
9851085 select PPC_INDIRECT_PCI
9861086 default y
9871087
988
-source "drivers/pci/Kconfig"
989
-
990
-source "drivers/pcmcia/Kconfig"
991
-
992
-config HAS_RAPIDIO
993
- bool
994
- default n
995
-
996
-config RAPIDIO
997
- tristate "RapidIO support"
998
- depends on HAS_RAPIDIO || PCI
999
- help
1000
- If you say Y here, the kernel will include drivers and
1001
- infrastructure code to support RapidIO interconnect devices.
1002
-
10031088 config FSL_RIO
10041089 bool "Freescale Embedded SRIO Controller support"
1005
- depends on RAPIDIO = y && HAS_RAPIDIO
1090
+ depends on RAPIDIO = y && HAVE_RAPIDIO
10061091 default "n"
1007
- ---help---
1092
+ help
10081093 Include support for RapidIO controller on Freescale embedded
10091094 processors (MPC8548, MPC8641, etc).
1010
-
1011
-source "drivers/rapidio/Kconfig"
1012
-
1013
-config PPC_RTAS_FILTER
1014
- bool "Enable filtering of RTAS syscalls"
1015
- default y
1016
- depends on PPC_RTAS
1017
- help
1018
- The RTAS syscall API has security issues that could be used to
1019
- compromise system integrity. This option enforces restrictions on the
1020
- RTAS calls and arguments passed by userspace programs to mitigate
1021
- these issues.
1022
-
1023
- Say Y unless you know what you are doing and the filter is causing
1024
- problems for you.
10251095
10261096 endmenu
10271097
10281098 config NONSTATIC_KERNEL
10291099 bool
1030
- default n
10311100
10321101 menu "Advanced setup"
10331102 depends on PPC32
....@@ -1084,14 +1153,14 @@
10841153 select NONSTATIC_KERNEL
10851154 help
10861155 This option enables the kernel to be loaded at any page aligned
1087
- physical address. The kernel creates a mapping from KERNELBASE to
1156
+ physical address. The kernel creates a mapping from KERNELBASE to
10881157 the address where the kernel is loaded. The page size here implies
10891158 the TLB page size of the mapping for kernel on the particular platform.
10901159 Please refer to the init code for finding the TLB page size.
10911160
10921161 DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE
10931162 kernel image, where the only restriction is the page aligned kernel
1094
- load address. When this option is enabled, the compile time physical
1163
+ load address. When this option is enabled, the compile time physical
10951164 address CONFIG_PHYSICAL_START is ignored.
10961165
10971166 This option is overridden by CONFIG_RELOCATABLE
....@@ -1137,7 +1206,7 @@
11371206
11381207 config PHYSICAL_START
11391208 hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL
1140
- default "0x02000000" if PPC_STD_MMU && CRASH_DUMP && !NONSTATIC_KERNEL
1209
+ default "0x02000000" if PPC_BOOK3S && CRASH_DUMP && !NONSTATIC_KERNEL
11411210 default "0x00000000"
11421211
11431212 config PHYSICAL_ALIGN
....@@ -1161,39 +1230,8 @@
11611230 config TASK_SIZE
11621231 hex "Size of user task space" if TASK_SIZE_BOOL
11631232 default "0x80000000" if PPC_8xx
1233
+ default "0xb0000000" if PPC_BOOK3S_32 && STRICT_KERNEL_RWX
11641234 default "0xc0000000"
1165
-
1166
-config CONSISTENT_SIZE_BOOL
1167
- bool "Set custom consistent memory pool size"
1168
- depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
1169
- help
1170
- This option allows you to set the size of the
1171
- consistent memory pool. This pool of virtual memory
1172
- is used to make consistent memory allocations.
1173
-
1174
-config CONSISTENT_SIZE
1175
- hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL
1176
- default "0x00200000" if NOT_COHERENT_CACHE
1177
-
1178
-config PIN_TLB
1179
- bool "Pinned Kernel TLBs (860 ONLY)"
1180
- depends on ADVANCED_OPTIONS && PPC_8xx && \
1181
- !DEBUG_PAGEALLOC && !STRICT_KERNEL_RWX
1182
-
1183
-config PIN_TLB_DATA
1184
- bool "Pinned TLB for DATA"
1185
- depends on PIN_TLB
1186
- default y
1187
-
1188
-config PIN_TLB_IMMR
1189
- bool "Pinned TLB for IMMR"
1190
- depends on PIN_TLB
1191
- default y
1192
-
1193
-config PIN_TLB_TEXT
1194
- bool "Pinned TLB for TEXT"
1195
- depends on PIN_TLB
1196
- default y
11971235 endmenu
11981236
11991237 if PPC64