forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
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,49 @@
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
152149 select ARCH_USE_BUILTIN_BSWAP
153150 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
154153 select ARCH_WANT_IPC_PARSE_VERSION
155154 select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
155
+ select ARCH_WANT_LD_ORPHAN_WARN
156156 select ARCH_WEAK_RELEASE_ACQUIRE
157157 select BINFMT_ELF
158
- select BUILDTIME_EXTABLE_SORT
158
+ select BUILDTIME_TABLE_SORT
159159 select CLONE_BACKWARDS
160160 select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN
161
+ select DMA_OPS if PPC64
162
+ select DMA_OPS_BYPASS if PPC64
161163 select DYNAMIC_FTRACE if FUNCTION_TRACER
162164 select EDAC_ATOMIC_SCRUB
163165 select EDAC_SUPPORT
....@@ -167,45 +169,57 @@
167169 select GENERIC_CMOS_UPDATE
168170 select GENERIC_CPU_AUTOPROBE
169171 select GENERIC_CPU_VULNERABILITIES if PPC_BARRIER_NOSPEC
172
+ select GENERIC_EARLY_IOREMAP
170173 select GENERIC_IRQ_SHOW
171174 select GENERIC_IRQ_SHOW_LEVEL
175
+ select GENERIC_PCI_IOMAP if PCI
172176 select GENERIC_SMP_IDLE_THREAD
173177 select GENERIC_STRNCPY_FROM_USER
174178 select GENERIC_STRNLEN_USER
175179 select GENERIC_TIME_VSYSCALL
176180 select HAVE_ARCH_AUDITSYSCALL
181
+ select HAVE_ARCH_HUGE_VMAP if PPC_BOOK3S_64 && PPC_RADIX_MMU
177182 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
178185 select HAVE_ARCH_KGDB
179186 select HAVE_ARCH_MMAP_RND_BITS
180187 select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
188
+ select HAVE_ARCH_NVRAM_OPS
181189 select HAVE_ARCH_SECCOMP_FILTER
182190 select HAVE_ARCH_TRACEHOOK
191
+ select HAVE_ASM_MODVERSIONS
192
+ select HAVE_C_RECORDMCOUNT
183193 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)
184196 select HAVE_CONTEXT_TRACKING if PPC64
197
+ select HAVE_TIF_NOHZ if PPC64
185198 select HAVE_DEBUG_KMEMLEAK
186199 select HAVE_DEBUG_STACKOVERFLOW
187200 select HAVE_DYNAMIC_FTRACE
188201 select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL
189202 select HAVE_EBPF_JIT if PPC64
190203 select HAVE_EFFICIENT_UNALIGNED_ACCESS if !(CPU_LITTLE_ENDIAN && POWER7_CPU)
204
+ select HAVE_FAST_GUP
191205 select HAVE_FTRACE_MCOUNT_RECORD
206
+ select HAVE_FUNCTION_ERROR_INJECTION
192207 select HAVE_FUNCTION_GRAPH_TRACER
193208 select HAVE_FUNCTION_TRACER
194209 select HAVE_GCC_PLUGINS if GCC_VERSION >= 50200 # plugin support on gcc <= 5.1 is buggy on PPC
195
- select HAVE_GENERIC_GUP
196210 select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx)
197211 select HAVE_IDE
198212 select HAVE_IOREMAP_PROT
199213 select HAVE_IRQ_EXIT_ON_IRQ_STACK
200214 select HAVE_KERNEL_GZIP
201
- 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
202218 select HAVE_KPROBES
203219 select HAVE_KPROBES_ON_FTRACE
204220 select HAVE_KRETPROBES
205221 select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
206222 select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS
207
- select HAVE_MEMBLOCK
208
- select HAVE_MEMBLOCK_NODE_MAP
209223 select HAVE_MOD_ARCH_SPECIFIC
210224 select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
211225 select HAVE_HARDLOCKUP_DETECTOR_ARCH if PPC64 && PPC_BOOK3S && SMP
....@@ -216,9 +230,10 @@
216230 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH
217231 select HAVE_PERF_REGS
218232 select HAVE_PERF_USER_STACK_DUMP
219
- select HAVE_RCU_TABLE_FREE if SMP
233
+ select MMU_GATHER_RCU_TABLE_FREE
234
+ select MMU_GATHER_PAGE_SIZE
220235 select HAVE_REGS_AND_STACK_ACCESS_API
221
- select HAVE_RELIABLE_STACKTRACE if PPC64 && CPU_LITTLE_ENDIAN
236
+ select HAVE_RELIABLE_STACKTRACE if PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
222237 select HAVE_SYSCALL_TRACEPOINTS
223238 select HAVE_VIRT_CPU_ACCOUNTING
224239 select HAVE_IRQ_TIME_ACCOUNTING
....@@ -229,28 +244,28 @@
229244 select MODULES_USE_ELF_RELA
230245 select NEED_DMA_MAP_STATE if PPC64 || NOT_COHERENT_CACHE
231246 select NEED_SG_DMA_LENGTH
232
- select NO_BOOTMEM
233247 select OF
234248 select OF_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE
235249 select OF_EARLY_FLATTREE
236
- select OF_RESERVED_MEM
237250 select OLD_SIGACTION if PPC32
238251 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
239256 select RTC_LIB
240257 select SPARSE_IRQ
241258 select SYSCTL_EXCEPTION_TRACE
259
+ select THREAD_INFO_IN_TASK
242260 select VIRT_TO_BUS if !PPC64
243261 #
244262 # Please keep this list sorted alphabetically.
245263 #
246264
247265 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
266
+ bool
267
+ default y
268
+ depends on PPC_BOOK3S_64 || PPC_FSL_BOOK3E
254269
255270 config EARLY_PRINTK
256271 bool
....@@ -261,8 +276,9 @@
261276 default 180
262277
263278 config COMPAT
264
- bool
265
- default y if PPC64
279
+ bool "Enable support for 32bit binaries"
280
+ depends on PPC64
281
+ default y if !CPU_LITTLE_ENDIAN
266282 select COMPAT_BINFMT_ELF
267283 select ARCH_WANT_OLD_COMPAT_IPC
268284 select COMPAT_OLD_SIGACTION
....@@ -271,11 +287,6 @@
271287 bool
272288 depends on COMPAT && SYSVIPC
273289 default y
274
-
275
-# All PPC32s use generic nvram driver through ppc_md
276
-config GENERIC_NVRAM
277
- bool
278
- default y if PPC32
279290
280291 config SCHED_OMIT_FRAME_POINTER
281292 bool
....@@ -287,12 +298,10 @@
287298
288299 config PPC_UDBG_16550
289300 bool
290
- default n
291301
292302 config GENERIC_TBSYNC
293303 bool
294304 default y if PPC32 && SMP
295
- default n
296305
297306 config AUDIT_ARCH
298307 bool
....@@ -311,13 +320,11 @@
311320 bool
312321 help
313322 Used to allow a board to specify it wants an ePAPR compliant wrapper.
314
- default n
315323
316324 config DEFAULT_UIMAGE
317325 bool
318326 help
319327 Used to allow a board to specify it wants a uImage built by default
320
- default n
321328
322329 config ARCH_HIBERNATION_POSSIBLE
323330 bool
....@@ -329,13 +336,15 @@
329336 (PPC_85xx && !PPC_E500MC) || PPC_86xx || PPC_PSERIES \
330337 || 44x || 40x
331338
339
+config ARCH_SUSPEND_NONZERO_CPU
340
+ def_bool y
341
+ depends on PPC_POWERNV || PPC_PSERIES
342
+
332343 config PPC_DCR_NATIVE
333344 bool
334
- default n
335345
336346 config PPC_DCR_MMIO
337347 bool
338
- default n
339348
340349 config PPC_DCR
341350 bool
....@@ -346,7 +355,6 @@
346355 bool
347356 depends on PCI
348357 depends on PPC64 # not supported on 32 bits yet
349
- default n
350358
351359 config ARCH_SUPPORTS_DEBUG_PAGEALLOC
352360 depends on PPC32 || PPC_BOOK3S_64
....@@ -382,14 +390,16 @@
382390 depends on PPC_ADV_DEBUG_REGS && 44x
383391 default y
384392
385
-config ZONE_DMA32
393
+config PPC_DAWR
386394 bool
387
- default y if PPC64
395
+
396
+config ZONE_DMA
397
+ bool
398
+ default y if PPC_BOOK3E_64
388399
389400 config PGTABLE_LEVELS
390401 int
391402 default 2 if !PPC64
392
- default 3 if PPC_64K_PAGES && !PPC_BOOK3S_64
393403 default 4
394404
395405 source "arch/powerpc/sysdev/Kconfig"
....@@ -401,17 +411,17 @@
401411 bool "High memory support"
402412 depends on PPC32
403413
404
-source kernel/Kconfig.hz
414
+source "kernel/Kconfig.hz"
405415
406416 config HUGETLB_PAGE_SIZE_VARIABLE
407417 bool
408
- depends on HUGETLB_PAGE
418
+ depends on HUGETLB_PAGE && PPC_BOOK3S_64
409419 default y
410420
411421 config MATH_EMULATION
412422 bool "Math emulation"
413423 depends on 4xx || PPC_8xx || PPC_MPC832x || BOOKE
414
- ---help---
424
+ help
415425 Some PowerPC chips designed for embedded applications do not have
416426 a floating-point unit and therefore do not implement the
417427 floating-point instructions in the PowerPC instruction set. If you
....@@ -430,33 +440,44 @@
430440
431441 config MATH_EMULATION_FULL
432442 bool "Emulate all the floating point instructions"
433
- ---help---
443
+ help
434444 Select this option will enable the kernel to support to emulate
435445 all the floating point instructions. If your SoC doesn't have
436446 a FPU, you should select this.
437447
438448 config MATH_EMULATION_HW_UNIMPLEMENTED
439449 bool "Just emulate the FPU unimplemented instructions"
440
- ---help---
450
+ help
441451 Select this if you know there does have a hardware FPU on your
442452 SoC, but some floating point instructions are not implemented by that.
443453
444454 endchoice
445455
446456 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.
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".
455477
456478 config LD_HEAD_STUB_CATCH
457479 bool "Reserve 256 bytes to cope with linker stubs in HEAD text" if EXPERT
458480 depends on PPC64
459
- default n
460481 help
461482 Very large kernels can cause linker branch stubs to be generated by
462483 code in head_64.S, which moves the head text sections out of their
....@@ -465,27 +486,37 @@
465486 If unsure, say "N".
466487
467488 config MPROFILE_KERNEL
468
- depends on PPC64 && CPU_LITTLE_ENDIAN
489
+ depends on PPC64 && CPU_LITTLE_ENDIAN && FUNCTION_TRACER
469490 def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__)
470491
471492 config HOTPLUG_CPU
472493 bool "Support for enabling/disabling CPUs"
473494 depends on SMP && (PPC_PSERIES || \
474
- PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
475
- ---help---
495
+ PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
496
+ help
476497 Say Y here to be able to disable and re-enable individual
477498 CPUs at runtime on SMP machines.
478499
479500 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".
480514
481515 config ARCH_CPU_PROBE_RELEASE
482516 def_bool y
483517 depends on HOTPLUG_CPU
484518
485519 config ARCH_ENABLE_MEMORY_HOTPLUG
486
- def_bool y
487
-
488
-config ARCH_HAS_WALK_MEMORY
489520 def_bool y
490521
491522 config ARCH_ENABLE_MEMORY_HOTREMOVE
....@@ -520,6 +551,7 @@
520551 select KEXEC_CORE
521552 select HAVE_IMA_KEXEC
522553 select BUILD_BIN2C
554
+ select KEXEC_ELF
523555 depends on PPC64
524556 depends on CRYPTO=y
525557 depends on CRYPTO_SHA256=y
....@@ -556,10 +588,20 @@
556588 setting can still be useful to bootwrappers that need to know the
557589 load address of the kernel (eg. u-boot/mkimage).
558590
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
+
559602 config RELOCATABLE_TEST
560603 bool "Test relocatable kernel"
561604 depends on (PPC64 && RELOCATABLE)
562
- default n
563605 help
564606 This runs the relocatable kernel at the address it was initially
565607 loaded at, which tends to be non-zero and therefore test the
....@@ -567,7 +609,7 @@
567609
568610 config CRASH_DUMP
569611 bool "Build a dump capture kernel"
570
- depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
612
+ depends on PPC64 || PPC_BOOK3S_32 || FSL_BOOKE || (44x && !SMP)
571613 select RELOCATABLE if PPC64 || 44x || FSL_BOOKE
572614 help
573615 Build a kernel suitable for use as a dump capture kernel.
....@@ -576,7 +618,7 @@
576618
577619 config FA_DUMP
578620 bool "Firmware-assisted dump"
579
- depends on PPC64 && PPC_RTAS
621
+ depends on PPC64 && (PPC_RTAS || PPC_POWERNV)
580622 select CRASH_CORE
581623 select CRASH_DUMP
582624 help
....@@ -587,7 +629,26 @@
587629 is meant to be a kdump replacement offering robustness and
588630 speed not possible without system firmware assistance.
589631
590
- 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.
591652
592653 config IRQ_ALL_CPUS
593654 bool "Distribute interrupts on all CPUs by default"
....@@ -648,15 +709,6 @@
648709 def_bool y
649710 depends on MEMORY_HOTPLUG
650711
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
-
660712 config STDBINUTILS
661713 bool "Using standard binutils settings"
662714 depends on 44x
....@@ -704,7 +756,7 @@
704756
705757 config PPC_64K_PAGES
706758 bool "64k page size"
707
- depends on !PPC_FSL_BOOK3E && (44x || PPC_BOOK3S_64 || PPC_BOOK3E_64)
759
+ depends on 44x || PPC_BOOK3S_64
708760 select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
709761
710762 config PPC_256K_PAGES
....@@ -722,6 +774,13 @@
722774
723775 endchoice
724776
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
+
725784 config THREAD_SHIFT
726785 int "Thread shift" if EXPERT
727786 range 13 15
....@@ -731,6 +790,39 @@
731790 help
732791 Used to define the stack size. The default is almost always what you
733792 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.
734826
735827 config FORCE_MAX_ZONEORDER
736828 int "Maximum zone order"
....@@ -762,16 +854,30 @@
762854 this in mind when choosing a value for this option.
763855
764856 config PPC_SUBPAGE_PROT
765
- bool "Support setting protections for 4k subpages"
857
+ bool "Support setting protections for 4k subpages (subpage_prot syscall)"
858
+ default n
766859 depends on PPC_BOOK3S_64 && PPC_64K_PAGES
767860 help
768
- This option adds support for a system call to allow user programs
861
+ This option adds support for system call to allow user programs
769862 to set access permissions (read/write, readonly, or no access)
770863 on the 4k subpages of each 64k page.
771864
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
+
772879 config PPC_COPRO_BASE
773880 bool
774
- default n
775881
776882 config SCHED_SMT
777883 bool "SMT (Hyperthreading) scheduler support"
....@@ -785,31 +891,45 @@
785891 bool "PowerPC denormalisation exception handling"
786892 depends on PPC_BOOK3S_64
787893 default "y" if PPC_POWERNV
788
- ---help---
894
+ help
789895 Add support for handling denormalisation of single precision
790896 values. Useful for bare metal only. If unsure say Y here.
791897
792
-config CMDLINE_BOOL
793
- bool "Default bootloader kernel arguments"
794
-
795898 config CMDLINE
796899 string "Initial kernel command string"
797
- depends on CMDLINE_BOOL
798
- default "console=ttyS0,9600 console=tty0 root=/dev/sda2"
900
+ default ""
799901 help
800902 On some platforms, there is currently no way for the boot loader to
801903 pass arguments to the kernel. For these platforms, you can supply
802904 some command-line options at build time by entering them here. In
803905 most cases you will need to specify the root device here.
804906
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
+
805924 config CMDLINE_FORCE
806925 bool "Always use the default kernel command string"
807
- depends on CMDLINE_BOOL
808926 help
809927 Always use the default kernel command string, even if the boot
810928 loader passes other arguments to the kernel.
811929 This is useful if you cannot or don't want to change the
812930 command-line options your boot loader passes to the kernel.
931
+
932
+endchoice
813933
814934 config EXTRA_TARGETS
815935 string "Additional default image types"
....@@ -828,24 +948,7 @@
828948 def_bool y
829949 depends on ADB_PMU
830950
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.
951
+source "kernel/power/Kconfig"
849952
850953 config PPC_MEM_KEYS
851954 prompt "PowerPC Memory Protection Keys"
....@@ -858,9 +961,45 @@
858961 page-based protections, but without requiring modification of the
859962 page tables when an application changes protection domains.
860963
861
- For details, see Documentation/vm/protection-keys.rst
964
+ For details, see Documentation/core-api/protection-keys.rst
862965
863966 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.
8641003
8651004 endmenu
8661005
....@@ -881,10 +1020,6 @@
8811020 have an IBM RS/6000 or pSeries machine, say Y. If you have an
8821021 embedded board, consult your board documentation.
8831022
884
-config ZONE_DMA
885
- bool
886
- default y
887
-
8881023 config GENERIC_ISA_DMA
8891024 bool
8901025 depends on ISA_DMA_API
....@@ -894,10 +1029,6 @@
8941029 bool
8951030 depends on PCI
8961031 default y if 40x || 44x
897
- default n
898
-
899
-config EISA
900
- bool
9011032
9021033 config SBUS
9031034 bool
....@@ -906,7 +1037,8 @@
9061037 bool
9071038
9081039 config FSL_PCI
909
- bool
1040
+ bool
1041
+ select ARCH_HAS_DMA_SET_MASK
9101042 select PPC_INDIRECT_PCI
9111043 select PCI_QUIRKS
9121044
....@@ -943,91 +1075,24 @@
9431075 help
9441076 Freescale General-purpose Timers support
9451077
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
-
9821078 config PCI_8260
9831079 bool
9841080 depends on PCI && 8260
9851081 select PPC_INDIRECT_PCI
9861082 default y
9871083
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
-
10031084 config FSL_RIO
10041085 bool "Freescale Embedded SRIO Controller support"
1005
- depends on RAPIDIO = y && HAS_RAPIDIO
1086
+ depends on RAPIDIO = y && HAVE_RAPIDIO
10061087 default "n"
1007
- ---help---
1088
+ help
10081089 Include support for RapidIO controller on Freescale embedded
10091090 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.
10251091
10261092 endmenu
10271093
10281094 config NONSTATIC_KERNEL
10291095 bool
1030
- default n
10311096
10321097 menu "Advanced setup"
10331098 depends on PPC32
....@@ -1084,14 +1149,14 @@
10841149 select NONSTATIC_KERNEL
10851150 help
10861151 This option enables the kernel to be loaded at any page aligned
1087
- physical address. The kernel creates a mapping from KERNELBASE to
1152
+ physical address. The kernel creates a mapping from KERNELBASE to
10881153 the address where the kernel is loaded. The page size here implies
10891154 the TLB page size of the mapping for kernel on the particular platform.
10901155 Please refer to the init code for finding the TLB page size.
10911156
10921157 DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE
10931158 kernel image, where the only restriction is the page aligned kernel
1094
- load address. When this option is enabled, the compile time physical
1159
+ load address. When this option is enabled, the compile time physical
10951160 address CONFIG_PHYSICAL_START is ignored.
10961161
10971162 This option is overridden by CONFIG_RELOCATABLE
....@@ -1137,7 +1202,7 @@
11371202
11381203 config PHYSICAL_START
11391204 hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL
1140
- default "0x02000000" if PPC_STD_MMU && CRASH_DUMP && !NONSTATIC_KERNEL
1205
+ default "0x02000000" if PPC_BOOK3S && CRASH_DUMP && !NONSTATIC_KERNEL
11411206 default "0x00000000"
11421207
11431208 config PHYSICAL_ALIGN
....@@ -1161,39 +1226,8 @@
11611226 config TASK_SIZE
11621227 hex "Size of user task space" if TASK_SIZE_BOOL
11631228 default "0x80000000" if PPC_8xx
1229
+ default "0xb0000000" if PPC_BOOK3S_32 && STRICT_KERNEL_RWX
11641230 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
11971231 endmenu
11981232
11991233 if PPC64