mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 04:42:12 +00:00
25c8a78b1e
The recent merge of fpu.S broken the handling of fpscr for ARCH=powerpc and CONFIG_PPC64=y. FP registers could be corrupted, leading to strange random application crashes. The confusion arises, because the thread_struct has (and requires) a 64-bit area to save the fpscr, because we use load/store double instructions to get it in to/out of the FPU. However, only the low 32-bits are actually used, so we want to treat it as a 32-bit quantity when manipulating its bits to avoid extra load/stores on 32-bit. This patch replaces the current definition with a structure of two 32-bit quantities (pad and val), to clarify things as much as is possible. The 'val' field is used when manipulating bits, the structure itself is used when obtaining the address for loading/unloading the value from the FPU. While we're at it, consolidate the 4 (!) almost identical versions of cvt_fd() and cvt_df() (arch/ppc/kernel/misc.S, arch/ppc64/kernel/misc.S, arch/powerpc/kernel/misc_32.S, arch/powerpc/kernel/misc_64.S) into a single version in fpu.S. The new version takes a pointer to thread_struct and applies the correct offset itself, rather than a pointer to the fpscr field itself, again to avoid confusion as to which is the correct field to use. Finally, this patch makes ARCH=ppc64 also use the consolidated fpu.S code, which it previously did not. Built for G5 (ARCH=ppc64 and ARCH=powerpc), 32-bit powermac (ARCH=ppc and ARCH=powerpc) and Walnut (ARCH=ppc, CONFIG_MATH_EMULATION=y). Booted on G5 (ARCH=powerpc) and things which previously fell over no longer do. Signed-off-by: David Gibson <dwg@au1.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
496 lines
11 KiB
Plaintext
496 lines
11 KiB
Plaintext
#
|
|
# For a description of the syntax of this configuration file,
|
|
# see Documentation/kbuild/kconfig-language.txt.
|
|
#
|
|
|
|
config 64BIT
|
|
def_bool y
|
|
|
|
config MMU
|
|
bool
|
|
default y
|
|
|
|
config PPC_STD_MMU
|
|
def_bool y
|
|
|
|
config UID16
|
|
bool
|
|
|
|
config RWSEM_GENERIC_SPINLOCK
|
|
bool
|
|
|
|
config RWSEM_XCHGADD_ALGORITHM
|
|
bool
|
|
default y
|
|
|
|
config GENERIC_CALIBRATE_DELAY
|
|
bool
|
|
default y
|
|
|
|
config GENERIC_ISA_DMA
|
|
bool
|
|
default y
|
|
|
|
config EARLY_PRINTK
|
|
bool
|
|
default y
|
|
|
|
config COMPAT
|
|
bool
|
|
default y
|
|
|
|
config SCHED_NO_NO_OMIT_FRAME_POINTER
|
|
bool
|
|
default y
|
|
|
|
config ARCH_MAY_HAVE_PC_FDC
|
|
bool
|
|
default y
|
|
|
|
# We optimistically allocate largepages from the VM, so make the limit
|
|
# large enough (16MB). This badly named config option is actually
|
|
# max order + 1
|
|
config FORCE_MAX_ZONEORDER
|
|
int
|
|
default "13"
|
|
|
|
source "init/Kconfig"
|
|
|
|
config SYSVIPC_COMPAT
|
|
bool
|
|
depends on COMPAT && SYSVIPC
|
|
default y
|
|
|
|
menu "Platform support"
|
|
|
|
choice
|
|
prompt "Platform Type"
|
|
default PPC_MULTIPLATFORM
|
|
|
|
config PPC_ISERIES
|
|
bool "IBM Legacy iSeries"
|
|
|
|
config PPC_MULTIPLATFORM
|
|
bool "Generic"
|
|
|
|
endchoice
|
|
|
|
config PPC_PSERIES
|
|
depends on PPC_MULTIPLATFORM
|
|
bool " IBM pSeries & new iSeries"
|
|
default y
|
|
|
|
config PPC_BPA
|
|
bool " Broadband Processor Architecture"
|
|
depends on PPC_MULTIPLATFORM
|
|
|
|
config PPC_PMAC
|
|
depends on PPC_MULTIPLATFORM
|
|
bool " Apple G5 based machines"
|
|
default y
|
|
select U3_DART
|
|
|
|
config PPC_MAPLE
|
|
depends on PPC_MULTIPLATFORM
|
|
bool " Maple 970FX Evaluation Board"
|
|
select U3_DART
|
|
select MPIC_BROKEN_U3
|
|
default n
|
|
help
|
|
This option enables support for the Maple 970FX Evaluation Board.
|
|
For more informations, refer to <http://www.970eval.com>
|
|
|
|
config PPC
|
|
bool
|
|
default y
|
|
|
|
config PPC64
|
|
bool
|
|
default y
|
|
|
|
config PPC_OF
|
|
depends on PPC_MULTIPLATFORM
|
|
bool
|
|
default y
|
|
|
|
config XICS
|
|
depends on PPC_PSERIES
|
|
bool
|
|
default y
|
|
|
|
config MPIC
|
|
depends on PPC_PSERIES || PPC_PMAC || PPC_MAPLE
|
|
bool
|
|
default y
|
|
|
|
config PPC_I8259
|
|
depends on PPC_PSERIES
|
|
bool
|
|
default y
|
|
|
|
config BPA_IIC
|
|
depends on PPC_BPA
|
|
bool
|
|
default y
|
|
|
|
# VMX is pSeries only for now until somebody writes the iSeries
|
|
# exception vectors for it
|
|
config ALTIVEC
|
|
bool "Support for VMX (Altivec) vector unit"
|
|
depends on PPC_MULTIPLATFORM
|
|
default y
|
|
|
|
config PPC_SPLPAR
|
|
depends on PPC_PSERIES
|
|
bool "Support for shared-processor logical partitions"
|
|
default n
|
|
help
|
|
Enabling this option will make the kernel run more efficiently
|
|
on logically-partitioned pSeries systems which use shared
|
|
processors, that is, which share physical processors between
|
|
two or more partitions.
|
|
|
|
config KEXEC
|
|
bool "kexec system call (EXPERIMENTAL)"
|
|
depends on PPC_MULTIPLATFORM && EXPERIMENTAL
|
|
help
|
|
kexec is a system call that implements the ability to shutdown your
|
|
current kernel, and to start another kernel. It is like a reboot
|
|
but it is indepedent of the system firmware. And like a reboot
|
|
you can start any kernel with it, not just Linux.
|
|
|
|
The name comes from the similiarity to the exec system call.
|
|
|
|
It is an ongoing process to be certain the hardware in a machine
|
|
is properly shutdown, so do not be surprised if this code does not
|
|
initially work for you. It may help to enable device hotplugging
|
|
support. As of this writing the exact hardware interface is
|
|
strongly in flux, so no good recommendation can be made.
|
|
|
|
config IBMVIO
|
|
depends on PPC_PSERIES || PPC_ISERIES
|
|
bool
|
|
default y
|
|
|
|
config U3_DART
|
|
bool
|
|
depends on PPC_MULTIPLATFORM
|
|
default n
|
|
|
|
config MPIC_BROKEN_U3
|
|
bool
|
|
depends on PPC_MAPLE
|
|
default y
|
|
|
|
config PPC_PMAC64
|
|
bool
|
|
depends on PPC_PMAC
|
|
default y
|
|
|
|
config BOOTX_TEXT
|
|
bool "Support for early boot text console"
|
|
depends PPC_OF
|
|
help
|
|
Say Y here to see progress messages from the boot firmware in text
|
|
mode. Requires an Open Firmware compatible video card.
|
|
|
|
config POWER4
|
|
def_bool y
|
|
|
|
config PPC_FPU
|
|
def_bool y
|
|
|
|
config POWER4_ONLY
|
|
bool "Optimize for POWER4"
|
|
default n
|
|
---help---
|
|
Cause the compiler to optimize for POWER4 processors. The resulting
|
|
binary will not work on POWER3 or RS64 processors when compiled with
|
|
binutils 2.15 or later.
|
|
|
|
config IOMMU_VMERGE
|
|
bool "Enable IOMMU virtual merging (EXPERIMENTAL)"
|
|
depends on EXPERIMENTAL
|
|
default n
|
|
help
|
|
Cause IO segments sent to a device for DMA to be merged virtually
|
|
by the IOMMU when they happen to have been allocated contiguously.
|
|
This doesn't add pressure to the IOMMU allocator. However, some
|
|
drivers don't support getting large merged segments coming back
|
|
from *_map_sg(). Say Y if you know the drivers you are using are
|
|
properly handling this case.
|
|
|
|
config SMP
|
|
bool "Symmetric multi-processing support"
|
|
---help---
|
|
This enables support for systems with more than one CPU. If you have
|
|
a system with only one CPU, say N. If you have a system with more
|
|
than one CPU, say Y.
|
|
|
|
If you say N here, the kernel will run on single and multiprocessor
|
|
machines, but will use only one CPU of a multiprocessor machine. If
|
|
you say Y here, the kernel will run on single-processor machines.
|
|
On a single-processor machine, the kernel will run faster if you say
|
|
N here.
|
|
|
|
If you don't know what to do here, say Y.
|
|
|
|
config NR_CPUS
|
|
int "Maximum number of CPUs (2-128)"
|
|
range 2 128
|
|
depends on SMP
|
|
default "32"
|
|
|
|
config HMT
|
|
bool "Hardware multithreading"
|
|
depends on SMP && PPC_PSERIES && BROKEN
|
|
help
|
|
This option enables hardware multithreading on RS64 cpus.
|
|
pSeries systems p620 and p660 have such a cpu type.
|
|
|
|
config ARCH_SELECT_MEMORY_MODEL
|
|
def_bool y
|
|
|
|
config ARCH_FLATMEM_ENABLE
|
|
def_bool y
|
|
depends on !NUMA
|
|
|
|
config ARCH_DISCONTIGMEM_ENABLE
|
|
def_bool y
|
|
depends on SMP && PPC_PSERIES
|
|
|
|
config ARCH_DISCONTIGMEM_DEFAULT
|
|
def_bool y
|
|
depends on ARCH_DISCONTIGMEM_ENABLE
|
|
|
|
config ARCH_FLATMEM_ENABLE
|
|
def_bool y
|
|
|
|
config ARCH_SPARSEMEM_ENABLE
|
|
def_bool y
|
|
depends on ARCH_DISCONTIGMEM_ENABLE
|
|
|
|
source "mm/Kconfig"
|
|
|
|
config HAVE_ARCH_EARLY_PFN_TO_NID
|
|
def_bool y
|
|
depends on NEED_MULTIPLE_NODES
|
|
|
|
# Some NUMA nodes have memory ranges that span
|
|
# other nodes. Even though a pfn is valid and
|
|
# between a node's start and end pfns, it may not
|
|
# reside on that node.
|
|
#
|
|
# This is a relatively temporary hack that should
|
|
# be able to go away when sparsemem is fully in
|
|
# place
|
|
config NODES_SPAN_OTHER_NODES
|
|
def_bool y
|
|
depends on NEED_MULTIPLE_NODES
|
|
|
|
config NUMA
|
|
bool "NUMA support"
|
|
default y if DISCONTIGMEM || SPARSEMEM
|
|
|
|
config SCHED_SMT
|
|
bool "SMT (Hyperthreading) scheduler support"
|
|
depends on SMP
|
|
default off
|
|
help
|
|
SMT scheduler support improves the CPU scheduler's decision making
|
|
when dealing with POWER5 cpus at a cost of slightly increased
|
|
overhead in some places. If unsure say N here.
|
|
|
|
source "kernel/Kconfig.preempt"
|
|
source kernel/Kconfig.hz
|
|
|
|
config EEH
|
|
bool "PCI Extended Error Handling (EEH)" if EMBEDDED
|
|
depends on PPC_PSERIES
|
|
default y if !EMBEDDED
|
|
|
|
#
|
|
# Use the generic interrupt handling code in kernel/irq/:
|
|
#
|
|
config GENERIC_HARDIRQS
|
|
bool
|
|
default y
|
|
|
|
config PPC_RTAS
|
|
bool
|
|
depends on PPC_PSERIES || PPC_BPA
|
|
default y
|
|
|
|
config RTAS_ERROR_LOGGING
|
|
bool
|
|
depends on PPC_RTAS
|
|
default y
|
|
|
|
config RTAS_PROC
|
|
bool "Proc interface to RTAS"
|
|
depends on PPC_RTAS
|
|
default y
|
|
|
|
config RTAS_FLASH
|
|
tristate "Firmware flash interface"
|
|
depends on RTAS_PROC
|
|
|
|
config SCANLOG
|
|
tristate "Scanlog dump interface"
|
|
depends on RTAS_PROC && PPC_PSERIES
|
|
|
|
config LPARCFG
|
|
tristate "LPAR Configuration Data"
|
|
depends on PPC_PSERIES || PPC_ISERIES
|
|
help
|
|
Provide system capacity information via human readable
|
|
<key word>=<value> pairs through a /proc/ppc64/lparcfg interface.
|
|
|
|
config SECCOMP
|
|
bool "Enable seccomp to safely compute untrusted bytecode"
|
|
depends on PROC_FS
|
|
default y
|
|
help
|
|
This kernel feature is useful for number crunching applications
|
|
that may need to compute untrusted bytecode during their
|
|
execution. By using pipes or other transports made available to
|
|
the process as file descriptors supporting the read/write
|
|
syscalls, it's possible to isolate those applications in
|
|
their own address space using seccomp. Once seccomp is
|
|
enabled via /proc/<pid>/seccomp, it cannot be disabled
|
|
and the task is only allowed to execute a few safe syscalls
|
|
defined by each seccomp mode.
|
|
|
|
If unsure, say Y. Only embedded should say N here.
|
|
|
|
source "fs/Kconfig.binfmt"
|
|
|
|
config HOTPLUG_CPU
|
|
bool "Support for hot-pluggable CPUs"
|
|
depends on SMP && EXPERIMENTAL && (PPC_PSERIES || PPC_PMAC)
|
|
select HOTPLUG
|
|
---help---
|
|
Say Y here to be able to turn CPUs off and on.
|
|
|
|
Say N if you are unsure.
|
|
|
|
config PROC_DEVICETREE
|
|
bool "Support for Open Firmware device tree in /proc"
|
|
help
|
|
This option adds a device-tree directory under /proc which contains
|
|
an image of the device tree that the kernel copies from Open
|
|
Firmware. If unsure, say Y here.
|
|
|
|
config CMDLINE_BOOL
|
|
bool "Default bootloader kernel arguments"
|
|
depends on !PPC_ISERIES
|
|
|
|
config CMDLINE
|
|
string "Initial kernel command string"
|
|
depends on CMDLINE_BOOL
|
|
default "console=ttyS0,9600 console=tty0 root=/dev/sda2"
|
|
help
|
|
On some platforms, there is currently no way for the boot loader to
|
|
pass arguments to the kernel. For these platforms, you can supply
|
|
some command-line options at build time by entering them here. In
|
|
most cases you will need to specify the root device here.
|
|
|
|
endmenu
|
|
|
|
config ISA_DMA_API
|
|
bool
|
|
default y
|
|
|
|
menu "Bus Options"
|
|
|
|
config ISA
|
|
bool
|
|
help
|
|
Find out whether you have ISA slots on your motherboard. ISA is the
|
|
name of a bus system, i.e. the way the CPU talks to the other stuff
|
|
inside your box. If you have an Apple machine, say N here; if you
|
|
have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If
|
|
you have an embedded board, consult your board documentation.
|
|
|
|
config SBUS
|
|
bool
|
|
|
|
config MCA
|
|
bool
|
|
|
|
config EISA
|
|
bool
|
|
|
|
config PCI
|
|
bool "support for PCI devices" if (EMBEDDED && PPC_ISERIES)
|
|
default y
|
|
help
|
|
Find out whether your system includes a PCI bus. PCI is the name of
|
|
a bus system, i.e. the way the CPU talks to the other stuff inside
|
|
your box. If you say Y here, the kernel will include drivers and
|
|
infrastructure code to support PCI bus devices.
|
|
|
|
config PCI_DOMAINS
|
|
bool
|
|
default PCI
|
|
|
|
source "drivers/pci/Kconfig"
|
|
|
|
source "drivers/pcmcia/Kconfig"
|
|
|
|
source "drivers/pci/hotplug/Kconfig"
|
|
|
|
endmenu
|
|
|
|
source "net/Kconfig"
|
|
|
|
source "drivers/Kconfig"
|
|
|
|
source "fs/Kconfig"
|
|
|
|
menu "iSeries device drivers"
|
|
depends on PPC_ISERIES
|
|
|
|
config VIOCONS
|
|
tristate "iSeries Virtual Console Support"
|
|
|
|
config VIODASD
|
|
tristate "iSeries Virtual I/O disk support"
|
|
help
|
|
If you are running on an iSeries system and you want to use
|
|
virtual disks created and managed by OS/400, say Y.
|
|
|
|
config VIOCD
|
|
tristate "iSeries Virtual I/O CD support"
|
|
help
|
|
If you are running Linux on an IBM iSeries system and you want to
|
|
read a CD drive owned by OS/400, say Y here.
|
|
|
|
config VIOTAPE
|
|
tristate "iSeries Virtual Tape Support"
|
|
help
|
|
If you are running Linux on an iSeries system and you want Linux
|
|
to read and/or write a tape drive owned by OS/400, say Y here.
|
|
|
|
endmenu
|
|
|
|
config VIOPATH
|
|
bool
|
|
depends on VIOCONS || VIODASD || VIOCD || VIOTAPE || VETH
|
|
default y
|
|
|
|
source "arch/powerpc/oprofile/Kconfig"
|
|
|
|
source "arch/ppc64/Kconfig.debug"
|
|
|
|
source "security/Kconfig"
|
|
|
|
config KEYS_COMPAT
|
|
bool
|
|
depends on COMPAT && KEYS
|
|
default y
|
|
|
|
source "crypto/Kconfig"
|
|
|
|
source "lib/Kconfig"
|