Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / tile / Kconfig
diff --git a/kernel/arch/tile/Kconfig b/kernel/arch/tile/Kconfig
new file mode 100644 (file)
index 0000000..a07e31b
--- /dev/null
@@ -0,0 +1,473 @@
+# For a description of the syntax of this configuration file,
+# see Documentation/kbuild/kconfig-language.txt.
+
+config TILE
+       def_bool y
+       select HAVE_PERF_EVENTS
+       select USE_PMC if PERF_EVENTS
+       select HAVE_DMA_ATTRS
+       select HAVE_DMA_API_DEBUG
+       select HAVE_KVM if !TILEGX
+       select GENERIC_FIND_FIRST_BIT
+       select SYSCTL_EXCEPTION_TRACE
+       select CC_OPTIMIZE_FOR_SIZE
+       select HAVE_DEBUG_KMEMLEAK
+       select GENERIC_IRQ_PROBE
+       select GENERIC_PENDING_IRQ if SMP
+       select GENERIC_IRQ_SHOW
+       select HAVE_DEBUG_BUGVERBOSE
+       select VIRT_TO_BUS
+       select SYS_HYPERVISOR
+       select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
+       select ARCH_HAVE_NMI_SAFE_CMPXCHG
+       select GENERIC_CLOCKEVENTS
+       select MODULES_USE_ELF_RELA
+       select HAVE_ARCH_TRACEHOOK
+       select HAVE_SYSCALL_TRACEPOINTS
+       select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
+       select HAVE_DEBUG_STACKOVERFLOW
+       select ARCH_WANT_FRAME_POINTERS
+       select HAVE_CONTEXT_TRACKING
+
+# FIXME: investigate whether we need/want these options.
+#      select HAVE_IOREMAP_PROT
+#      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
+
+config MMU
+       def_bool y
+
+config GENERIC_CSUM
+       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
+       def_bool y
+
+config SYS_SUPPORTS_HUGETLBFS
+       def_bool y
+
+# Support for additional huge page sizes besides HPAGE_SIZE.
+# The software support is currently only present in the TILE-Gx
+# hypervisor. TILEPro in any case does not support page sizes
+# larger than the default HPAGE_SIZE.
+config HUGETLB_SUPER_PAGES
+       depends on HUGETLB_PAGE && TILEGX
+       def_bool y
+
+config GENERIC_TIME_VSYSCALL
+       def_bool y
+
+# Enable PMC if PERF_EVENTS, OPROFILE, or WATCHPOINTS are enabled.
+config USE_PMC
+       bool
+
+# FIXME: tilegx can implement a more efficient rwsem.
+config RWSEM_GENERIC_SPINLOCK
+       def_bool y
+
+# 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
+
+config ARCH_DMA_ADDR_T_64BIT
+       def_bool y
+
+config NEED_DMA_MAP_STATE
+       def_bool y
+
+config ARCH_HAS_DMA_SET_COHERENT_MASK
+       bool
+
+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
+
+config HVC_TILE
+       depends on TTY
+       select HVC_DRIVER
+       select HVC_IRQ if TILEGX
+       def_bool y
+
+config TILEGX
+       bool "Building for TILE-Gx (64-bit) processor"
+       select SPARSE_IRQ
+       select GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
+       select HAVE_FUNCTION_TRACER
+       select HAVE_FUNCTION_GRAPH_TRACER
+       select HAVE_DYNAMIC_FTRACE
+       select HAVE_FTRACE_MCOUNT_RECORD
+       select HAVE_KPROBES
+       select HAVE_KRETPROBES
+       select HAVE_ARCH_KGDB
+       select ARCH_SUPPORTS_ATOMIC_RMW
+
+config TILEPRO
+       def_bool !TILEGX
+
+config 64BIT
+       def_bool TILEGX
+
+config ARCH_DEFCONFIG
+       string
+       default "arch/tile/configs/tilepro_defconfig" if !TILEGX
+       default "arch/tile/configs/tilegx_defconfig" if TILEGX
+
+config PGTABLE_LEVELS
+       int
+       default 3 if 64BIT
+       default 2
+
+source "init/Kconfig"
+
+source "kernel/Kconfig.freezer"
+
+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.
+
+if TILEGX
+
+choice
+       prompt "Kernel page size"
+       default PAGE_SIZE_64KB
+       help
+         This lets you select the page size of the kernel.  For best
+         performance on memory-intensive applications, a page size of 64KB
+         is recommended.  For workloads involving many small files, many
+         connections, etc., it may be better to select 16KB, which uses
+         memory more efficiently at some cost in TLB performance.
+
+         Note that this option is TILE-Gx specific; currently
+         TILEPro page size is set by rebuilding the hypervisor.
+
+config PAGE_SIZE_16KB
+       bool "16KB"
+
+config PAGE_SIZE_64KB
+       bool "64KB"
+
+endchoice
+
+endif
+
+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 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".
+
+config ZONE_DMA
+       def_bool y
+
+config IOMMU_HELPER
+       bool
+
+config NEED_SG_DMA_LENGTH
+       bool
+
+config SWIOTLB
+       bool
+       default TILEGX
+       select IOMMU_HELPER
+       select NEED_SG_DMA_LENGTH
+       select ARCH_HAS_DMA_SET_COHERENT_MASK
+
+# 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
+       prompt "Memory split" if EXPERT
+       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!
+
+       config VMSPLIT_3_75G
+               bool "3.75G/0.25G user/kernel split (no kernel networking)"
+       config VMSPLIT_3_5G
+               bool "3.5G/0.5G user/kernel split"
+       config VMSPLIT_3G
+               bool "3G/1G user/kernel split"
+       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"
+       config VMSPLIT_2G
+               bool "2G/2G user/kernel split"
+       config VMSPLIT_1G
+               bool "1G/3G user/kernel split"
+endchoice
+
+config PAGE_OFFSET
+       hex
+       depends on !64BIT
+       default 0xF0000000 if VMSPLIT_3_75G
+       default 0xE0000000 if VMSPLIT_3_5G
+       default 0xB0000000 if VMSPLIT_2_75G
+       default 0xA0000000 if VMSPLIT_2_5G
+       default 0x90000000 if VMSPLIT_2_25G
+       default 0x80000000 if VMSPLIT_2G
+       default 0x40000000 if VMSPLIT_1G
+       default 0xC0000000
+
+source "mm/Kconfig"
+
+source "kernel/Kconfig.preempt"
+
+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 0x2000000
+
+config HARDWALL
+       bool "Hardwall support to allow access to user dynamic network"
+       default y
+
+config KERNEL_PL
+       int "Processor protection level for kernel"
+       range 1 2
+       default 2 if TILEGX
+       default 1 if !TILEGX
+       ---help---
+         Since MDE 4.2, the Tilera hypervisor runs the kernel
+         at PL2 by default.  If running under an older hypervisor,
+         or as a KVM guest, you must run at PL1.  (The current
+         hypervisor may also be recompiled with "make HV_PL=2" to
+         allow it to run a kernel at PL1, but clients running at PL1
+         are not expected to be supported indefinitely.)
+
+         If you're not sure, don't change the default.
+
+source "arch/tile/gxio/Kconfig"
+
+endmenu  # Tilera-specific configuration
+
+menu "Bus options"
+
+config PCI
+       bool "PCI support"
+       default y
+       select PCI_DOMAINS
+       select GENERIC_PCI_IOMAP
+       select TILE_GXIO_TRIO if TILEGX
+       select PCI_MSI if TILEGX
+       ---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
+
+config NO_IOMEM
+       def_bool !PCI
+
+config NO_IOPORT_MAP
+       def_bool !PCI
+
+config TILE_PCI_IO
+       bool "PCI I/O space support"
+       default n
+       depends on PCI
+       depends on TILEGX
+       ---help---
+         Enable PCI I/O space support on TILEGx. Since the PCI I/O space
+         is used by few modern PCIe endpoint devices, its support is disabled
+         by default to save the TRIO PIO Region resource for other purposes.
+
+source "drivers/pci/Kconfig"
+
+source "drivers/pci/pcie/Kconfig"
+
+config TILE_USB
+       tristate "Tilera USB host adapter support"
+       default y
+       depends on USB
+       depends on TILEGX
+       select TILE_GXIO_USB_HOST
+       ---help---
+         Provides USB host adapter support for the built-in EHCI and OHCI
+         interfaces on TILE-Gx chips.
+
+source "drivers/pci/hotplug/Kconfig"
+
+endmenu
+
+menu "Executable file formats"
+
+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"
+
+source "arch/tile/kvm/Kconfig"