2010-05-29 11:09:12 +08:00
|
|
|
# For a description of the syntax of this configuration file,
|
2011-03-01 04:58:39 +08:00
|
|
|
# see Documentation/kbuild/kconfig-language.txt.
|
2010-05-29 11:09:12 +08:00
|
|
|
|
2011-01-20 03:44:43 +08:00
|
|
|
config TILE
|
2010-05-29 11:09:12 +08:00
|
|
|
def_bool y
|
2011-01-20 03:44:43 +08:00
|
|
|
select HAVE_KVM if !TILEGX
|
|
|
|
select GENERIC_FIND_FIRST_BIT
|
|
|
|
select USE_GENERIC_SMP_HELPERS
|
|
|
|
select CC_OPTIMIZE_FOR_SIZE
|
|
|
|
select HAVE_GENERIC_HARDIRQS
|
|
|
|
select GENERIC_IRQ_PROBE
|
|
|
|
select GENERIC_PENDING_IRQ if SMP
|
2011-03-25 22:21:17 +08:00
|
|
|
select GENERIC_IRQ_SHOW
|
arch/tile: more /proc and /sys file support
This change introduces a few of the less controversial /proc and
/proc/sys interfaces for tile, along with sysfs attributes for
various things that were originally proposed as /proc/tile files.
It also adjusts the "hardwall" proc API.
Arnd Bergmann reviewed the initial arch/tile submission, which
included a complete set of all the /proc/tile and /proc/sys/tile
knobs that we had added in a somewhat ad hoc way during initial
development, and provided feedback on where most of them should go.
One knob turned out to be similar enough to the existing
/proc/sys/debug/exception-trace that it was re-implemented to use
that model instead.
Another knob was /proc/tile/grid, which reported the "grid" dimensions
of a tile chip (e.g. 8x8 processors = 64-core chip). Arnd suggested
looking at sysfs for that, so this change moves that information
to a pair of sysfs attributes (chip_width and chip_height) in the
/sys/devices/system/cpu directory. We also put the "chip_serial"
and "chip_revision" information from our old /proc/tile/board file
as attributes in /sys/devices/system/cpu.
Other information collected via hypervisor APIs is now placed in
/sys/hypervisor. We create a /sys/hypervisor/type file (holding the
constant string "tilera") to be parallel with the Xen use of
/sys/hypervisor/type holding "xen". We create three top-level files,
"version" (the hypervisor's own version), "config_version" (the
version of the configuration file), and "hvconfig" (the contents of
the configuration file). The remaining information from our old
/proc/tile/board and /proc/tile/switch files becomes an attribute
group appearing under /sys/hypervisor/board/.
Finally, after some feedback from Arnd Bergmann for the previous
version of this patch, the /proc/tile/hardwall file is split up into
two conceptual parts. First, a directory /proc/tile/hardwall/ which
contains one file per active hardwall, each file named after the
hardwall's ID and holding a cpulist that says which cpus are enclosed by
the hardwall. Second, a /proc/PID file "hardwall" that is either
empty (for non-hardwall-using processes) or contains the hardwall ID.
Finally, this change pushes the /proc/sys/tile/unaligned_fixup/
directory, with knobs controlling the kernel code for handling the
fixup of unaligned exceptions.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
2011-05-27 00:40:09 +08:00
|
|
|
select SYS_HYPERVISOR
|
2012-03-28 01:47:57 +08:00
|
|
|
select ARCH_HAVE_NMI_SAFE_CMPXCHG
|
2010-05-29 11:09:12 +08:00
|
|
|
|
2011-01-20 03:44:43 +08:00
|
|
|
# FIXME: investigate whether we need/want these options.
|
|
|
|
# select HAVE_IOREMAP_PROT
|
2011-03-01 04:58:39 +08:00
|
|
|
# select HAVE_OPTPROBES
|
|
|
|
# select HAVE_REGS_AND_STACK_ACCESS_API
|
|
|
|
# select HAVE_HW_BREAKPOINT
|
|
|
|
# select PERF_EVENTS
|
|
|
|
# select HAVE_USER_RETURN_NOTIFIER
|
|
|
|
# config NO_BOOTMEM
|
|
|
|
# config ARCH_SUPPORTS_DEBUG_PAGEALLOC
|
|
|
|
# config HUGETLB_PAGE_SIZE_VARIABLE
|
2010-05-29 11:09:12 +08:00
|
|
|
|
2011-01-20 03:44:43 +08:00
|
|
|
config MMU
|
2010-05-29 11:09:12 +08:00
|
|
|
def_bool y
|
|
|
|
|
2011-01-20 03:44:43 +08:00
|
|
|
config GENERIC_CSUM
|
2010-05-29 11:09:12 +08:00
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config SEMAPHORE_SLEEPERS
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config HAVE_ARCH_ALLOC_REMAP
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config HAVE_SETUP_PER_CPU_AREA
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config NEED_PER_CPU_PAGE_FIRST_CHUNK
|
2011-03-01 04:58:39 +08:00
|
|
|
def_bool y
|
2010-05-29 11:09:12 +08:00
|
|
|
|
|
|
|
config SYS_SUPPORTS_HUGETLBFS
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config GENERIC_CLOCKEVENTS
|
|
|
|
def_bool y
|
|
|
|
|
2011-03-31 09:57:33 +08:00
|
|
|
# FIXME: tilegx can implement a more efficient rwsem.
|
2010-05-29 11:09:12 +08:00
|
|
|
config RWSEM_GENERIC_SPINLOCK
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
# We have a very flat architecture from a migration point of view,
|
|
|
|
# so save boot time by presetting this (particularly useful on tile-sim).
|
|
|
|
config DEFAULT_MIGRATION_COST
|
|
|
|
int
|
|
|
|
default "10000000"
|
|
|
|
|
|
|
|
# We only support gcc 4.4 and above, so this should work.
|
|
|
|
config ARCH_SUPPORTS_OPTIMIZED_INLINING
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config ARCH_PHYS_ADDR_T_64BIT
|
|
|
|
def_bool y
|
|
|
|
|
2010-10-28 06:32:58 +08:00
|
|
|
config ARCH_DMA_ADDR_T_64BIT
|
|
|
|
def_bool y
|
|
|
|
|
2010-05-29 11:09:12 +08:00
|
|
|
config LOCKDEP_SUPPORT
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config STACKTRACE_SUPPORT
|
|
|
|
def_bool y
|
|
|
|
select STACKTRACE
|
|
|
|
|
|
|
|
# We use discontigmem for now; at some point we may want to switch
|
|
|
|
# to sparsemem (Tilera bug 7996).
|
|
|
|
config ARCH_DISCONTIGMEM_ENABLE
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config ARCH_DISCONTIGMEM_DEFAULT
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config TRACE_IRQFLAGS_SUPPORT
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config STRICT_DEVMEM
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
# SMP is required for Tilera Linux.
|
|
|
|
config SMP
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
# Allow checking for compile-time determined overflow errors in
|
|
|
|
# copy_from_user(). There are still unprovable places in the
|
|
|
|
# generic code as of 2.6.34, so this option is not really compatible
|
|
|
|
# with -Werror, which is more useful in general.
|
|
|
|
config DEBUG_COPY_FROM_USER
|
|
|
|
def_bool n
|
|
|
|
|
|
|
|
config HVC_TILE
|
|
|
|
select HVC_DRIVER
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
# Please note: TILE-Gx support is not yet finalized; this is
|
|
|
|
# the preliminary support. TILE-Gx drivers are only provided
|
|
|
|
# with the alpha or beta test versions for Tilera customers.
|
|
|
|
config TILEGX
|
|
|
|
depends on EXPERIMENTAL
|
|
|
|
bool "Building with TILE-Gx (64-bit) compiler and toolchain"
|
|
|
|
|
|
|
|
config 64BIT
|
|
|
|
depends on TILEGX
|
|
|
|
def_bool y
|
|
|
|
|
|
|
|
config ARCH_DEFCONFIG
|
|
|
|
string
|
|
|
|
default "arch/tile/configs/tile_defconfig" if !TILEGX
|
|
|
|
default "arch/tile/configs/tilegx_defconfig" if TILEGX
|
|
|
|
|
|
|
|
source "init/Kconfig"
|
|
|
|
|
|
|
|
menu "Tilera-specific configuration"
|
|
|
|
|
|
|
|
config NR_CPUS
|
|
|
|
int "Maximum number of tiles (2-255)"
|
|
|
|
range 2 255
|
|
|
|
depends on SMP
|
|
|
|
default "64"
|
|
|
|
---help---
|
|
|
|
Building with 64 is the recommended value, but a slightly
|
|
|
|
smaller kernel memory footprint results from using a smaller
|
|
|
|
value on chips with fewer tiles.
|
|
|
|
|
|
|
|
source "kernel/time/Kconfig"
|
|
|
|
|
|
|
|
source "kernel/Kconfig.hz"
|
|
|
|
|
|
|
|
config KEXEC
|
|
|
|
bool "kexec system call"
|
|
|
|
---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 independent of the system firmware. It is used
|
|
|
|
to implement the "mboot" Tilera booter.
|
|
|
|
|
|
|
|
The name comes from the similarity to the exec system call.
|
|
|
|
|
|
|
|
config COMPAT
|
|
|
|
bool "Support 32-bit TILE-Gx binaries in addition to 64-bit"
|
|
|
|
depends on TILEGX
|
|
|
|
select COMPAT_BINFMT_ELF
|
|
|
|
default y
|
|
|
|
---help---
|
|
|
|
If enabled, the kernel will support running TILE-Gx binaries
|
|
|
|
that were built with the -m32 option.
|
|
|
|
|
|
|
|
config SYSVIPC_COMPAT
|
|
|
|
def_bool y
|
|
|
|
depends on COMPAT && SYSVIPC
|
|
|
|
|
|
|
|
# We do not currently support disabling HIGHMEM on tile64 and tilepro.
|
|
|
|
config HIGHMEM
|
|
|
|
bool # "Support for more than 512 MB of RAM"
|
|
|
|
default !TILEGX
|
|
|
|
---help---
|
|
|
|
Linux can use the full amount of RAM in the system by
|
|
|
|
default. However, the address space of TILE processors is
|
|
|
|
only 4 Gigabytes large. That means that, if you have a large
|
|
|
|
amount of physical memory, not all of it can be "permanently
|
|
|
|
mapped" by the kernel. The physical memory that's not
|
|
|
|
permanently mapped is called "high memory".
|
|
|
|
|
|
|
|
If you are compiling a kernel which will never run on a
|
|
|
|
machine with more than 512 MB total physical RAM, answer
|
|
|
|
"false" here. This will result in the kernel mapping all of
|
|
|
|
physical memory into the top 1 GB of virtual memory space.
|
|
|
|
|
|
|
|
If unsure, say "true".
|
|
|
|
|
|
|
|
# We do not currently support disabling NUMA.
|
|
|
|
config NUMA
|
|
|
|
bool # "NUMA Memory Allocation and Scheduler Support"
|
|
|
|
depends on SMP && DISCONTIGMEM
|
|
|
|
default y
|
|
|
|
---help---
|
|
|
|
NUMA memory allocation is required for TILE processors
|
|
|
|
unless booting with memory striping enabled in the
|
|
|
|
hypervisor, or with only a single memory controller.
|
|
|
|
It is recommended that this option always be enabled.
|
|
|
|
|
|
|
|
config NODES_SHIFT
|
|
|
|
int "Log base 2 of the max number of memory controllers"
|
|
|
|
default 2
|
|
|
|
depends on NEED_MULTIPLE_NODES
|
|
|
|
---help---
|
|
|
|
By default, 2, i.e. 2^2 == 4 DDR2 controllers.
|
|
|
|
In a system with more controllers, this value should be raised.
|
|
|
|
|
|
|
|
choice
|
|
|
|
depends on !TILEGX
|
2011-01-21 06:44:16 +08:00
|
|
|
prompt "Memory split" if EXPERT
|
2010-05-29 11:09:12 +08:00
|
|
|
default VMSPLIT_3G
|
|
|
|
---help---
|
|
|
|
Select the desired split between kernel and user memory.
|
|
|
|
|
|
|
|
If the address range available to the kernel is less than the
|
|
|
|
physical memory installed, the remaining memory will be available
|
|
|
|
as "high memory". Accessing high memory is a little more costly
|
|
|
|
than low memory, as it needs to be mapped into the kernel first.
|
|
|
|
Note that increasing the kernel address space limits the range
|
|
|
|
available to user programs, making the address space there
|
|
|
|
tighter. Selecting anything other than the default 3G/1G split
|
|
|
|
will also likely make your kernel incompatible with binary-only
|
|
|
|
kernel modules.
|
|
|
|
|
|
|
|
If you are not absolutely sure what you are doing, leave this
|
|
|
|
option alone!
|
|
|
|
|
2010-09-13 20:50:09 +08:00
|
|
|
config VMSPLIT_3_75G
|
2010-05-29 11:09:12 +08:00
|
|
|
bool "3.75G/0.25G user/kernel split (no kernel networking)"
|
2010-09-13 20:50:09 +08:00
|
|
|
config VMSPLIT_3_5G
|
2010-05-29 11:09:12 +08:00
|
|
|
bool "3.5G/0.5G user/kernel split"
|
|
|
|
config VMSPLIT_3G
|
|
|
|
bool "3G/1G user/kernel split"
|
2011-03-01 05:01:09 +08:00
|
|
|
config VMSPLIT_2_75G
|
|
|
|
bool "2.75G/1.25G user/kernel split (for full 1G low memory)"
|
|
|
|
config VMSPLIT_2_5G
|
|
|
|
bool "2.5G/1.5G user/kernel split"
|
|
|
|
config VMSPLIT_2_25G
|
|
|
|
bool "2.25G/1.75G user/kernel split"
|
2010-05-29 11:09:12 +08:00
|
|
|
config VMSPLIT_2G
|
|
|
|
bool "2G/2G user/kernel split"
|
|
|
|
config VMSPLIT_1G
|
|
|
|
bool "1G/3G user/kernel split"
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
config PAGE_OFFSET
|
|
|
|
hex
|
2010-09-13 20:50:09 +08:00
|
|
|
default 0xF0000000 if VMSPLIT_3_75G
|
|
|
|
default 0xE0000000 if VMSPLIT_3_5G
|
2011-03-01 05:01:09 +08:00
|
|
|
default 0xB0000000 if VMSPLIT_2_75G
|
|
|
|
default 0xA0000000 if VMSPLIT_2_5G
|
|
|
|
default 0x90000000 if VMSPLIT_2_25G
|
2010-05-29 11:09:12 +08:00
|
|
|
default 0x80000000 if VMSPLIT_2G
|
|
|
|
default 0x40000000 if VMSPLIT_1G
|
|
|
|
default 0xC0000000
|
|
|
|
|
|
|
|
source "mm/Kconfig"
|
|
|
|
|
|
|
|
config CMDLINE_BOOL
|
|
|
|
bool "Built-in kernel command line"
|
|
|
|
default n
|
|
|
|
---help---
|
|
|
|
Allow for specifying boot arguments to the kernel at
|
|
|
|
build time. On some systems (e.g. embedded ones), it is
|
|
|
|
necessary or convenient to provide some or all of the
|
|
|
|
kernel boot arguments with the kernel itself (that is,
|
|
|
|
to not rely on the boot loader to provide them.)
|
|
|
|
|
|
|
|
To compile command line arguments into the kernel,
|
|
|
|
set this option to 'Y', then fill in the
|
|
|
|
the boot arguments in CONFIG_CMDLINE.
|
|
|
|
|
|
|
|
Systems with fully functional boot loaders (e.g. mboot, or
|
|
|
|
if booting over PCI) should leave this option set to 'N'.
|
|
|
|
|
|
|
|
config CMDLINE
|
|
|
|
string "Built-in kernel command string"
|
|
|
|
depends on CMDLINE_BOOL
|
|
|
|
default ""
|
|
|
|
---help---
|
|
|
|
Enter arguments here that should be compiled into the kernel
|
|
|
|
image and used at boot time. If the boot loader provides a
|
|
|
|
command line at boot time, it is appended to this string to
|
|
|
|
form the full kernel command line, when the system boots.
|
|
|
|
|
|
|
|
However, you can use the CONFIG_CMDLINE_OVERRIDE option to
|
|
|
|
change this behavior.
|
|
|
|
|
|
|
|
In most cases, the command line (whether built-in or provided
|
|
|
|
by the boot loader) should specify the device for the root
|
|
|
|
file system.
|
|
|
|
|
|
|
|
config CMDLINE_OVERRIDE
|
|
|
|
bool "Built-in command line overrides boot loader arguments"
|
|
|
|
default n
|
|
|
|
depends on CMDLINE_BOOL
|
|
|
|
---help---
|
|
|
|
Set this option to 'Y' to have the kernel ignore the boot loader
|
|
|
|
command line, and use ONLY the built-in command line.
|
|
|
|
|
|
|
|
This is used to work around broken boot loaders. This should
|
|
|
|
be set to 'N' under normal conditions.
|
|
|
|
|
|
|
|
config VMALLOC_RESERVE
|
|
|
|
hex
|
|
|
|
default 0x1000000
|
|
|
|
|
arch/tile: Add driver to enable access to the user dynamic network.
This network (the "UDN") connects all the cpus on the chip in a
wormhole-routed dynamic network. Subrectangles of the chip can
be allocated by a "create" ioctl on /dev/hardwall, and then to access the
UDN in that rectangle, tasks must perform an "activate" ioctl on that
same file object after affinitizing themselves to a single cpu in
the region. Sending a wormhole-routed message that tries to leave
that subrectangle causes all activated tasks to receive a SIGILL
(just as they would if they tried to access the UDN without first
activating themselves to a hardwall rectangle).
The original submission of this code to LKML had the driver
instantiated under /proc/tile/hardwall. Now we just use a character
device for this, conventionally /dev/hardwall. Some futures planning
for the TILE-Gx chip suggests that we may want to have other types of
devices that share the general model of "bind a task to a cpu, then
'activate' a file descriptor on a pseudo-device that gives access to
some hardware resource". As such, we are using a device rather
than, for example, a syscall, to set up and activate this code.
As part of this change, the compat_ptr() declaration was fixed and used
to pass the compat_ioctl argument to the normal ioctl. So far we limit
compat code to 2GB, so the difference between zero-extend and sign-extend
(the latter being correct, eventually) had been overlooked.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
2010-06-26 05:00:56 +08:00
|
|
|
config HARDWALL
|
|
|
|
bool "Hardwall support to allow access to user dynamic network"
|
|
|
|
default y
|
|
|
|
|
2010-10-15 04:23:03 +08:00
|
|
|
config KERNEL_PL
|
|
|
|
int "Processor protection level for kernel"
|
|
|
|
range 1 2
|
|
|
|
default "1"
|
|
|
|
---help---
|
|
|
|
This setting determines the processor protection level the
|
|
|
|
kernel will be built to run at. Generally you should use
|
|
|
|
the default value here.
|
|
|
|
|
2010-05-29 11:09:12 +08:00
|
|
|
endmenu # Tilera-specific configuration
|
|
|
|
|
|
|
|
menu "Bus options"
|
|
|
|
|
2010-11-03 00:05:10 +08:00
|
|
|
config PCI
|
|
|
|
bool "PCI support"
|
|
|
|
default y
|
|
|
|
select PCI_DOMAINS
|
2011-11-30 02:42:56 +08:00
|
|
|
select GENERIC_PCI_IOMAP
|
2010-11-03 00:05:10 +08:00
|
|
|
---help---
|
|
|
|
Enable PCI root complex support, so PCIe endpoint devices can
|
|
|
|
be attached to the Tile chip. Many, but not all, PCI devices
|
|
|
|
are supported under Tilera's root complex driver.
|
|
|
|
|
|
|
|
config PCI_DOMAINS
|
|
|
|
bool
|
|
|
|
|
2010-05-29 11:09:12 +08:00
|
|
|
config NO_IOMEM
|
|
|
|
def_bool !PCI
|
|
|
|
|
|
|
|
config NO_IOPORT
|
|
|
|
def_bool !PCI
|
|
|
|
|
|
|
|
source "drivers/pci/Kconfig"
|
|
|
|
|
2011-05-03 03:09:42 +08:00
|
|
|
config HOTPLUG
|
|
|
|
bool "Support for hot-pluggable devices"
|
|
|
|
---help---
|
|
|
|
Say Y here if you want to plug devices into your computer while
|
|
|
|
the system is running, and be able to use them quickly. In many
|
|
|
|
cases, the devices can likewise be unplugged at any time too.
|
|
|
|
One well-known example of this is USB.
|
|
|
|
|
2010-05-29 11:09:12 +08:00
|
|
|
source "drivers/pci/hotplug/Kconfig"
|
|
|
|
|
|
|
|
endmenu
|
|
|
|
|
|
|
|
menu "Executable file formats"
|
|
|
|
|
|
|
|
# only elf supported
|
|
|
|
config KCORE_ELF
|
|
|
|
def_bool y
|
|
|
|
depends on PROC_FS
|
|
|
|
|
|
|
|
source "fs/Kconfig.binfmt"
|
|
|
|
|
|
|
|
endmenu
|
|
|
|
|
|
|
|
source "net/Kconfig"
|
|
|
|
|
|
|
|
source "drivers/Kconfig"
|
|
|
|
|
|
|
|
source "fs/Kconfig"
|
|
|
|
|
|
|
|
source "arch/tile/Kconfig.debug"
|
|
|
|
|
|
|
|
source "security/Kconfig"
|
|
|
|
|
|
|
|
source "crypto/Kconfig"
|
|
|
|
|
|
|
|
source "lib/Kconfig"
|
2010-10-15 04:23:03 +08:00
|
|
|
|
|
|
|
source "arch/tile/kvm/Kconfig"
|