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,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,50 @@
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
149
+ select ARCH_SUPPORTS_RT if HAVE_POSIX_CPU_TIMERS_TASK_WORK
153150 select ARCH_USE_BUILTIN_BSWAP
154151 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
155154 select ARCH_WANT_IPC_PARSE_VERSION
156155 select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
156
+ select ARCH_WANT_LD_ORPHAN_WARN
157157 select ARCH_WEAK_RELEASE_ACQUIRE
158158 select BINFMT_ELF
159
- select BUILDTIME_EXTABLE_SORT
159
+ select BUILDTIME_TABLE_SORT
160160 select CLONE_BACKWARDS
161161 select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN
162
+ select DMA_OPS if PPC64
163
+ select DMA_OPS_BYPASS if PPC64
162164 select DYNAMIC_FTRACE if FUNCTION_TRACER
163165 select EDAC_ATOMIC_SCRUB
164166 select EDAC_SUPPORT
....@@ -168,45 +170,57 @@
168170 select GENERIC_CMOS_UPDATE
169171 select GENERIC_CPU_AUTOPROBE
170172 select GENERIC_CPU_VULNERABILITIES if PPC_BARRIER_NOSPEC
173
+ select GENERIC_EARLY_IOREMAP
171174 select GENERIC_IRQ_SHOW
172175 select GENERIC_IRQ_SHOW_LEVEL
176
+ select GENERIC_PCI_IOMAP if PCI
173177 select GENERIC_SMP_IDLE_THREAD
174178 select GENERIC_STRNCPY_FROM_USER
175179 select GENERIC_STRNLEN_USER
176180 select GENERIC_TIME_VSYSCALL
177181 select HAVE_ARCH_AUDITSYSCALL
182
+ select HAVE_ARCH_HUGE_VMAP if PPC_BOOK3S_64 && PPC_RADIX_MMU
178183 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
179186 select HAVE_ARCH_KGDB
180187 select HAVE_ARCH_MMAP_RND_BITS
181188 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
189
+ select HAVE_ARCH_NVRAM_OPS
182190 select HAVE_ARCH_SECCOMP_FILTER
183191 select HAVE_ARCH_TRACEHOOK
192
+ select HAVE_ASM_MODVERSIONS
193
+ select HAVE_C_RECORDMCOUNT
184194 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)
185197 select HAVE_CONTEXT_TRACKING if PPC64
198
+ select HAVE_TIF_NOHZ if PPC64
186199 select HAVE_DEBUG_KMEMLEAK
187200 select HAVE_DEBUG_STACKOVERFLOW
188201 select HAVE_DYNAMIC_FTRACE
189202 select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL
190203 select HAVE_EBPF_JIT if PPC64
191204 select HAVE_EFFICIENT_UNALIGNED_ACCESS if !(CPU_LITTLE_ENDIAN && POWER7_CPU)
205
+ select HAVE_FAST_GUP
192206 select HAVE_FTRACE_MCOUNT_RECORD
207
+ select HAVE_FUNCTION_ERROR_INJECTION
193208 select HAVE_FUNCTION_GRAPH_TRACER
194209 select HAVE_FUNCTION_TRACER
195210 select HAVE_GCC_PLUGINS if GCC_VERSION >= 50200 # plugin support on gcc <= 5.1 is buggy on PPC
196
- select HAVE_GENERIC_GUP
197211 select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx)
198212 select HAVE_IDE
199213 select HAVE_IOREMAP_PROT
200214 select HAVE_IRQ_EXIT_ON_IRQ_STACK
201215 select HAVE_KERNEL_GZIP
202
- 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
203219 select HAVE_KPROBES
204220 select HAVE_KPROBES_ON_FTRACE
205221 select HAVE_KRETPROBES
206222 select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
207223 select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS
208
- select HAVE_MEMBLOCK
209
- select HAVE_MEMBLOCK_NODE_MAP
210224 select HAVE_MOD_ARCH_SPECIFIC
211225 select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
212226 select HAVE_HARDLOCKUP_DETECTOR_ARCH if PPC64 && PPC_BOOK3S && SMP
....@@ -218,12 +232,14 @@
218232 select HAVE_PERF_REGS
219233 select HAVE_PERF_USER_STACK_DUMP
220234 select HAVE_PREEMPT_LAZY
221
- select HAVE_RCU_TABLE_FREE if SMP
235
+ select MMU_GATHER_RCU_TABLE_FREE
236
+ select MMU_GATHER_PAGE_SIZE
222237 select HAVE_REGS_AND_STACK_ACCESS_API
223
- select HAVE_RELIABLE_STACKTRACE if PPC64 && CPU_LITTLE_ENDIAN
238
+ select HAVE_RELIABLE_STACKTRACE if PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
224239 select HAVE_SYSCALL_TRACEPOINTS
225240 select HAVE_VIRT_CPU_ACCOUNTING
226241 select HAVE_IRQ_TIME_ACCOUNTING
242
+ select HAVE_POSIX_CPU_TIMERS_TASK_WORK if !KVM
227243 select HAVE_RSEQ
228244 select IOMMU_HELPER if PPC64
229245 select IRQ_DOMAIN
....@@ -231,28 +247,28 @@
231247 select MODULES_USE_ELF_RELA
232248 select NEED_DMA_MAP_STATE if PPC64 || NOT_COHERENT_CACHE
233249 select NEED_SG_DMA_LENGTH
234
- select NO_BOOTMEM
235250 select OF
236251 select OF_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE
237252 select OF_EARLY_FLATTREE
238
- select OF_RESERVED_MEM
239253 select OLD_SIGACTION if PPC32
240254 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
241259 select RTC_LIB
242260 select SPARSE_IRQ
243261 select SYSCTL_EXCEPTION_TRACE
262
+ select THREAD_INFO_IN_TASK
244263 select VIRT_TO_BUS if !PPC64
245264 #
246265 # Please keep this list sorted alphabetically.
247266 #
248267
249268 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
269
+ bool
270
+ default y
271
+ depends on PPC_BOOK3S_64 || PPC_FSL_BOOK3E
256272
257273 config EARLY_PRINTK
258274 bool
....@@ -263,8 +279,9 @@
263279 default 180
264280
265281 config COMPAT
266
- bool
267
- default y if PPC64
282
+ bool "Enable support for 32bit binaries"
283
+ depends on PPC64
284
+ default y if !CPU_LITTLE_ENDIAN
268285 select COMPAT_BINFMT_ELF
269286 select ARCH_WANT_OLD_COMPAT_IPC
270287 select COMPAT_OLD_SIGACTION
....@@ -273,11 +290,6 @@
273290 bool
274291 depends on COMPAT && SYSVIPC
275292 default y
276
-
277
-# All PPC32s use generic nvram driver through ppc_md
278
-config GENERIC_NVRAM
279
- bool
280
- default y if PPC32
281293
282294 config SCHED_OMIT_FRAME_POINTER
283295 bool
....@@ -289,12 +301,10 @@
289301
290302 config PPC_UDBG_16550
291303 bool
292
- default n
293304
294305 config GENERIC_TBSYNC
295306 bool
296307 default y if PPC32 && SMP
297
- default n
298308
299309 config AUDIT_ARCH
300310 bool
....@@ -313,13 +323,11 @@
313323 bool
314324 help
315325 Used to allow a board to specify it wants an ePAPR compliant wrapper.
316
- default n
317326
318327 config DEFAULT_UIMAGE
319328 bool
320329 help
321330 Used to allow a board to specify it wants a uImage built by default
322
- default n
323331
324332 config ARCH_HIBERNATION_POSSIBLE
325333 bool
....@@ -331,13 +339,15 @@
331339 (PPC_85xx && !PPC_E500MC) || PPC_86xx || PPC_PSERIES \
332340 || 44x || 40x
333341
342
+config ARCH_SUSPEND_NONZERO_CPU
343
+ def_bool y
344
+ depends on PPC_POWERNV || PPC_PSERIES
345
+
334346 config PPC_DCR_NATIVE
335347 bool
336
- default n
337348
338349 config PPC_DCR_MMIO
339350 bool
340
- default n
341351
342352 config PPC_DCR
343353 bool
....@@ -348,7 +358,6 @@
348358 bool
349359 depends on PCI
350360 depends on PPC64 # not supported on 32 bits yet
351
- default n
352361
353362 config ARCH_SUPPORTS_DEBUG_PAGEALLOC
354363 depends on PPC32 || PPC_BOOK3S_64
....@@ -384,14 +393,16 @@
384393 depends on PPC_ADV_DEBUG_REGS && 44x
385394 default y
386395
387
-config ZONE_DMA32
396
+config PPC_DAWR
388397 bool
389
- default y if PPC64
398
+
399
+config ZONE_DMA
400
+ bool
401
+ default y if PPC_BOOK3E_64
390402
391403 config PGTABLE_LEVELS
392404 int
393405 default 2 if !PPC64
394
- default 3 if PPC_64K_PAGES && !PPC_BOOK3S_64
395406 default 4
396407
397408 source "arch/powerpc/sysdev/Kconfig"
....@@ -401,19 +412,20 @@
401412
402413 config HIGHMEM
403414 bool "High memory support"
404
- depends on PPC32 && !PREEMPT_RT_FULL
415
+ depends on PPC32
416
+ select KMAP_LOCAL
405417
406
-source kernel/Kconfig.hz
418
+source "kernel/Kconfig.hz"
407419
408420 config HUGETLB_PAGE_SIZE_VARIABLE
409421 bool
410
- depends on HUGETLB_PAGE
422
+ depends on HUGETLB_PAGE && PPC_BOOK3S_64
411423 default y
412424
413425 config MATH_EMULATION
414426 bool "Math emulation"
415427 depends on 4xx || PPC_8xx || PPC_MPC832x || BOOKE
416
- ---help---
428
+ help
417429 Some PowerPC chips designed for embedded applications do not have
418430 a floating-point unit and therefore do not implement the
419431 floating-point instructions in the PowerPC instruction set. If you
....@@ -432,33 +444,44 @@
432444
433445 config MATH_EMULATION_FULL
434446 bool "Emulate all the floating point instructions"
435
- ---help---
447
+ help
436448 Select this option will enable the kernel to support to emulate
437449 all the floating point instructions. If your SoC doesn't have
438450 a FPU, you should select this.
439451
440452 config MATH_EMULATION_HW_UNIMPLEMENTED
441453 bool "Just emulate the FPU unimplemented instructions"
442
- ---help---
454
+ help
443455 Select this if you know there does have a hardware FPU on your
444456 SoC, but some floating point instructions are not implemented by that.
445457
446458 endchoice
447459
448460 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.
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".
457481
458482 config LD_HEAD_STUB_CATCH
459483 bool "Reserve 256 bytes to cope with linker stubs in HEAD text" if EXPERT
460484 depends on PPC64
461
- default n
462485 help
463486 Very large kernels can cause linker branch stubs to be generated by
464487 code in head_64.S, which moves the head text sections out of their
....@@ -467,27 +490,37 @@
467490 If unsure, say "N".
468491
469492 config MPROFILE_KERNEL
470
- depends on PPC64 && CPU_LITTLE_ENDIAN
493
+ depends on PPC64 && CPU_LITTLE_ENDIAN && FUNCTION_TRACER
471494 def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__)
472495
473496 config HOTPLUG_CPU
474497 bool "Support for enabling/disabling CPUs"
475498 depends on SMP && (PPC_PSERIES || \
476
- PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
477
- ---help---
499
+ PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
500
+ help
478501 Say Y here to be able to disable and re-enable individual
479502 CPUs at runtime on SMP machines.
480503
481504 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".
482518
483519 config ARCH_CPU_PROBE_RELEASE
484520 def_bool y
485521 depends on HOTPLUG_CPU
486522
487523 config ARCH_ENABLE_MEMORY_HOTPLUG
488
- def_bool y
489
-
490
-config ARCH_HAS_WALK_MEMORY
491524 def_bool y
492525
493526 config ARCH_ENABLE_MEMORY_HOTREMOVE
....@@ -522,6 +555,7 @@
522555 select KEXEC_CORE
523556 select HAVE_IMA_KEXEC
524557 select BUILD_BIN2C
558
+ select KEXEC_ELF
525559 depends on PPC64
526560 depends on CRYPTO=y
527561 depends on CRYPTO_SHA256=y
....@@ -558,10 +592,20 @@
558592 setting can still be useful to bootwrappers that need to know the
559593 load address of the kernel (eg. u-boot/mkimage).
560594
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
+
561606 config RELOCATABLE_TEST
562607 bool "Test relocatable kernel"
563608 depends on (PPC64 && RELOCATABLE)
564
- default n
565609 help
566610 This runs the relocatable kernel at the address it was initially
567611 loaded at, which tends to be non-zero and therefore test the
....@@ -569,7 +613,7 @@
569613
570614 config CRASH_DUMP
571615 bool "Build a dump capture kernel"
572
- depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
616
+ depends on PPC64 || PPC_BOOK3S_32 || FSL_BOOKE || (44x && !SMP)
573617 select RELOCATABLE if PPC64 || 44x || FSL_BOOKE
574618 help
575619 Build a kernel suitable for use as a dump capture kernel.
....@@ -578,7 +622,7 @@
578622
579623 config FA_DUMP
580624 bool "Firmware-assisted dump"
581
- depends on PPC64 && PPC_RTAS
625
+ depends on PPC64 && (PPC_RTAS || PPC_POWERNV)
582626 select CRASH_CORE
583627 select CRASH_DUMP
584628 help
....@@ -589,7 +633,26 @@
589633 is meant to be a kdump replacement offering robustness and
590634 speed not possible without system firmware assistance.
591635
592
- 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.
593656
594657 config IRQ_ALL_CPUS
595658 bool "Distribute interrupts on all CPUs by default"
....@@ -650,15 +713,6 @@
650713 def_bool y
651714 depends on MEMORY_HOTPLUG
652715
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
-
662716 config STDBINUTILS
663717 bool "Using standard binutils settings"
664718 depends on 44x
....@@ -706,7 +760,7 @@
706760
707761 config PPC_64K_PAGES
708762 bool "64k page size"
709
- depends on !PPC_FSL_BOOK3E && (44x || PPC_BOOK3S_64 || PPC_BOOK3E_64)
763
+ depends on 44x || PPC_BOOK3S_64
710764 select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
711765
712766 config PPC_256K_PAGES
....@@ -724,6 +778,13 @@
724778
725779 endchoice
726780
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
+
727788 config THREAD_SHIFT
728789 int "Thread shift" if EXPERT
729790 range 13 15
....@@ -733,6 +794,39 @@
733794 help
734795 Used to define the stack size. The default is almost always what you
735796 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.
736830
737831 config FORCE_MAX_ZONEORDER
738832 int "Maximum zone order"
....@@ -764,16 +858,30 @@
764858 this in mind when choosing a value for this option.
765859
766860 config PPC_SUBPAGE_PROT
767
- bool "Support setting protections for 4k subpages"
861
+ bool "Support setting protections for 4k subpages (subpage_prot syscall)"
862
+ default n
768863 depends on PPC_BOOK3S_64 && PPC_64K_PAGES
769864 help
770
- This option adds support for a system call to allow user programs
865
+ This option adds support for system call to allow user programs
771866 to set access permissions (read/write, readonly, or no access)
772867 on the 4k subpages of each 64k page.
773868
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
+
774883 config PPC_COPRO_BASE
775884 bool
776
- default n
777885
778886 config SCHED_SMT
779887 bool "SMT (Hyperthreading) scheduler support"
....@@ -787,31 +895,45 @@
787895 bool "PowerPC denormalisation exception handling"
788896 depends on PPC_BOOK3S_64
789897 default "y" if PPC_POWERNV
790
- ---help---
898
+ help
791899 Add support for handling denormalisation of single precision
792900 values. Useful for bare metal only. If unsure say Y here.
793901
794
-config CMDLINE_BOOL
795
- bool "Default bootloader kernel arguments"
796
-
797902 config CMDLINE
798903 string "Initial kernel command string"
799
- depends on CMDLINE_BOOL
800
- default "console=ttyS0,9600 console=tty0 root=/dev/sda2"
904
+ default ""
801905 help
802906 On some platforms, there is currently no way for the boot loader to
803907 pass arguments to the kernel. For these platforms, you can supply
804908 some command-line options at build time by entering them here. In
805909 most cases you will need to specify the root device here.
806910
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
+
807928 config CMDLINE_FORCE
808929 bool "Always use the default kernel command string"
809
- depends on CMDLINE_BOOL
810930 help
811931 Always use the default kernel command string, even if the boot
812932 loader passes other arguments to the kernel.
813933 This is useful if you cannot or don't want to change the
814934 command-line options your boot loader passes to the kernel.
935
+
936
+endchoice
815937
816938 config EXTRA_TARGETS
817939 string "Additional default image types"
....@@ -830,24 +952,7 @@
830952 def_bool y
831953 depends on ADB_PMU
832954
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.
955
+source "kernel/power/Kconfig"
851956
852957 config PPC_MEM_KEYS
853958 prompt "PowerPC Memory Protection Keys"
....@@ -860,9 +965,45 @@
860965 page-based protections, but without requiring modification of the
861966 page tables when an application changes protection domains.
862967
863
- For details, see Documentation/vm/protection-keys.rst
968
+ For details, see Documentation/core-api/protection-keys.rst
864969
865970 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.
8661007
8671008 endmenu
8681009
....@@ -883,10 +1024,6 @@
8831024 have an IBM RS/6000 or pSeries machine, say Y. If you have an
8841025 embedded board, consult your board documentation.
8851026
886
-config ZONE_DMA
887
- bool
888
- default y
889
-
8901027 config GENERIC_ISA_DMA
8911028 bool
8921029 depends on ISA_DMA_API
....@@ -896,10 +1033,6 @@
8961033 bool
8971034 depends on PCI
8981035 default y if 40x || 44x
899
- default n
900
-
901
-config EISA
902
- bool
9031036
9041037 config SBUS
9051038 bool
....@@ -908,7 +1041,8 @@
9081041 bool
9091042
9101043 config FSL_PCI
911
- bool
1044
+ bool
1045
+ select ARCH_HAS_DMA_SET_MASK
9121046 select PPC_INDIRECT_PCI
9131047 select PCI_QUIRKS
9141048
....@@ -945,91 +1079,24 @@
9451079 help
9461080 Freescale General-purpose Timers support
9471081
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
-
9841082 config PCI_8260
9851083 bool
9861084 depends on PCI && 8260
9871085 select PPC_INDIRECT_PCI
9881086 default y
9891087
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
-
10051088 config FSL_RIO
10061089 bool "Freescale Embedded SRIO Controller support"
1007
- depends on RAPIDIO = y && HAS_RAPIDIO
1090
+ depends on RAPIDIO = y && HAVE_RAPIDIO
10081091 default "n"
1009
- ---help---
1092
+ help
10101093 Include support for RapidIO controller on Freescale embedded
10111094 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.
10271095
10281096 endmenu
10291097
10301098 config NONSTATIC_KERNEL
10311099 bool
1032
- default n
10331100
10341101 menu "Advanced setup"
10351102 depends on PPC32
....@@ -1086,14 +1153,14 @@
10861153 select NONSTATIC_KERNEL
10871154 help
10881155 This option enables the kernel to be loaded at any page aligned
1089
- physical address. The kernel creates a mapping from KERNELBASE to
1156
+ physical address. The kernel creates a mapping from KERNELBASE to
10901157 the address where the kernel is loaded. The page size here implies
10911158 the TLB page size of the mapping for kernel on the particular platform.
10921159 Please refer to the init code for finding the TLB page size.
10931160
10941161 DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE
10951162 kernel image, where the only restriction is the page aligned kernel
1096
- load address. When this option is enabled, the compile time physical
1163
+ load address. When this option is enabled, the compile time physical
10971164 address CONFIG_PHYSICAL_START is ignored.
10981165
10991166 This option is overridden by CONFIG_RELOCATABLE
....@@ -1139,7 +1206,7 @@
11391206
11401207 config PHYSICAL_START
11411208 hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL
1142
- default "0x02000000" if PPC_STD_MMU && CRASH_DUMP && !NONSTATIC_KERNEL
1209
+ default "0x02000000" if PPC_BOOK3S && CRASH_DUMP && !NONSTATIC_KERNEL
11431210 default "0x00000000"
11441211
11451212 config PHYSICAL_ALIGN
....@@ -1163,39 +1230,8 @@
11631230 config TASK_SIZE
11641231 hex "Size of user task space" if TASK_SIZE_BOOL
11651232 default "0x80000000" if PPC_8xx
1233
+ default "0xb0000000" if PPC_BOOK3S_32 && STRICT_KERNEL_RWX
11661234 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
11991235 endmenu
12001236
12011237 if PPC64