source "init/Kconfig"

source "kernel/Kconfig.freezer"

menu "Processor type and features"

config IA64
	bool
	select PCI if (!IA64_HP_SIM)
	select ACPI if (!IA64_HP_SIM)
	select PM if (!IA64_HP_SIM)
	select ARCH_SUPPORTS_MSI
	select HAVE_UNSTABLE_SCHED_CLOCK
	select HAVE_IDE
	select HAVE_OPROFILE
	select HAVE_KPROBES
	select HAVE_KRETPROBES
	select HAVE_FTRACE_MCOUNT_RECORD
	select HAVE_DYNAMIC_FTRACE if (!ITANIUM)
	select HAVE_FUNCTION_TRACER
	select HAVE_DMA_ATTRS
	select HAVE_KVM
	select HAVE_ARCH_TRACEHOOK
	select HAVE_DMA_API_DEBUG
	select HAVE_GENERIC_HARDIRQS
	select HAVE_MEMBLOCK
	select HAVE_MEMBLOCK_NODE_MAP
	select ARCH_DISCARD_MEMBLOCK
	select GENERIC_IRQ_PROBE
	select GENERIC_PENDING_IRQ if SMP
	select IRQ_PER_CPU
	select GENERIC_IRQ_SHOW
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARCH_HAVE_NMI_SAFE_CMPXCHG
	select GENERIC_IOMAP
	select GENERIC_SMP_IDLE_THREAD
	select ARCH_INIT_TASK
	select ARCH_TASK_STRUCT_ALLOCATOR
	select ARCH_THREAD_INFO_ALLOCATOR
	select ARCH_CLOCKSOURCE_DATA
	select GENERIC_TIME_VSYSCALL
	default y
	help
	  The Itanium Processor Family is Intel's 64-bit successor to
	  the 32-bit X86 line.  The IA-64 Linux project has a home
	  page at <http://www.linuxia64.org/> and a mailing list at
	  <linux-ia64@vger.kernel.org>.

config 64BIT
	bool
	select ATA_NONSTANDARD if ATA
	default y

config ZONE_DMA
	def_bool y
	depends on !IA64_SGI_SN2

config QUICKLIST
	bool
	default y

config MMU
	bool
	default y

config ARCH_DMA_ADDR_T_64BIT
	def_bool y

config NEED_DMA_MAP_STATE
	def_bool y

config NEED_SG_DMA_LENGTH
	def_bool y

config SWIOTLB
       bool

config STACKTRACE_SUPPORT
	def_bool y

config GENERIC_LOCKBREAK
	def_bool n

config RWSEM_XCHGADD_ALGORITHM
	bool
	default y

config HUGETLB_PAGE_SIZE_VARIABLE
	bool
	depends on HUGETLB_PAGE
	default y

config GENERIC_CALIBRATE_DELAY
	bool
	default y

config HAVE_SETUP_PER_CPU_AREA
	def_bool y

config GENERIC_GPIO
	bool

config DMI
	bool
	default y

config EFI
	bool
	default y

config SCHED_OMIT_FRAME_POINTER
	bool
	default y

config IA64_UNCACHED_ALLOCATOR
	bool
	select GENERIC_ALLOCATOR

config ARCH_USES_PG_UNCACHED
	def_bool y
	depends on IA64_UNCACHED_ALLOCATOR

config AUDIT_ARCH
	bool
	default y

menuconfig PARAVIRT_GUEST
	bool "Paravirtualized guest support"
	depends on BROKEN
	help
	  Say Y here to get to see options related to running Linux under
	  various hypervisors.  This option alone does not add any kernel code.

	  If you say N, all options in this submenu will be skipped and disabled.

if PARAVIRT_GUEST

config PARAVIRT
	bool "Enable paravirtualization code"
	depends on PARAVIRT_GUEST
	default y
	help
	  This changes the kernel so it can modify itself when it is run
	  under a hypervisor, potentially improving performance significantly
	  over full virtualization.  However, when run without a hypervisor
	  the kernel is theoretically slower and slightly larger.


source "arch/ia64/xen/Kconfig"

endif

choice
	prompt "System type"
	default IA64_GENERIC

config IA64_GENERIC
	bool "generic"
	select NUMA
	select ACPI_NUMA
	select SWIOTLB
	select PCI_MSI
	help
	  This selects the system type of your hardware.  A "generic" kernel
	  will run on any supported IA-64 system.  However, if you configure
	  a kernel for your specific system, it will be faster and smaller.

	  generic		For any supported IA-64 system
	  DIG-compliant		For DIG ("Developer's Interface Guide") compliant systems
	  DIG+Intel+IOMMU	For DIG systems with Intel IOMMU
	  HP-zx1/sx1000		For HP systems
	  HP-zx1/sx1000+swiotlb	For HP systems with (broken) DMA-constrained devices.
	  SGI-SN2		For SGI Altix systems
	  SGI-UV		For SGI UV systems
	  Ski-simulator		For the HP simulator <http://www.hpl.hp.com/research/linux/ski/>
	  Xen-domU		For xen domU system

	  If you don't know what to do, choose "generic".

config IA64_DIG
	bool "DIG-compliant"
	select SWIOTLB

config IA64_DIG_VTD
	bool "DIG+Intel+IOMMU"
	select DMAR
	select PCI_MSI

config IA64_HP_ZX1
	bool "HP-zx1/sx1000"
	help
	  Build a kernel that runs on HP zx1 and sx1000 systems.  This adds
	  support for the HP I/O MMU.

config IA64_HP_ZX1_SWIOTLB
	bool "HP-zx1/sx1000 with software I/O TLB"
	select SWIOTLB
	help
	  Build a kernel that runs on HP zx1 and sx1000 systems even when they
	  have broken PCI devices which cannot DMA to full 32 bits.  Apart
	  from support for the HP I/O MMU, this includes support for the software
	  I/O TLB, which allows supporting the broken devices at the expense of
	  wasting some kernel memory (about 2MB by default).

config IA64_SGI_SN2
	bool "SGI-SN2"
	select NUMA
	select ACPI_NUMA
	help
	  Selecting this option will optimize the kernel for use on sn2 based
	  systems, but the resulting kernel binary will not run on other
	  types of ia64 systems.  If you have an SGI Altix system, it's safe
	  to select this option.  If in doubt, select ia64 generic support
	  instead.

config IA64_SGI_UV
	bool "SGI-UV"
	select NUMA
	select ACPI_NUMA
	select SWIOTLB
	help
	  Selecting this option will optimize the kernel for use on UV based
	  systems, but the resulting kernel binary will not run on other
	  types of ia64 systems.  If you have an SGI UV system, it's safe
	  to select this option.  If in doubt, select ia64 generic support
	  instead.

config IA64_HP_SIM
	bool "Ski-simulator"
	select SWIOTLB

config IA64_XEN_GUEST
	bool "Xen guest"
	select SWIOTLB
	depends on XEN
	help
	  Build a kernel that runs on Xen guest domain. At this moment only
	  16KB page size in supported.

endchoice

choice
	prompt "Processor type"
	default ITANIUM

config ITANIUM
	bool "Itanium"
	help
	  Select your IA-64 processor type.  The default is Itanium.
	  This choice is safe for all IA-64 systems, but may not perform
	  optimally on systems with, say, Itanium 2 or newer processors.

config MCKINLEY
	bool "Itanium 2"
	help
	  Select this to configure for an Itanium 2 (McKinley) processor.

endchoice

choice
	prompt "Kernel page size"
	default IA64_PAGE_SIZE_16KB

config IA64_PAGE_SIZE_4KB
	bool "4KB"
	help
	  This lets you select the page size of the kernel.  For best IA-64
	  performance, a page size of 8KB or 16KB is recommended.  For best
	  IA-32 compatibility, a page size of 4KB should be selected (the vast
	  majority of IA-32 binaries work perfectly fine with a larger page
	  size).  For Itanium 2 or newer systems, a page size of 64KB can also
	  be selected.

	  4KB                For best IA-32 compatibility
	  8KB                For best IA-64 performance
	  16KB               For best IA-64 performance
	  64KB               Requires Itanium 2 or newer processor.

	  If you don't know what to do, choose 16KB.

config IA64_PAGE_SIZE_8KB
	bool "8KB"

config IA64_PAGE_SIZE_16KB
	bool "16KB"

config IA64_PAGE_SIZE_64KB
	depends on !ITANIUM
	bool "64KB"

endchoice

choice
	prompt "Page Table Levels"
	default PGTABLE_3

config PGTABLE_3
	bool "3 Levels"

config PGTABLE_4
	depends on !IA64_PAGE_SIZE_64KB
	bool "4 Levels"

endchoice

if IA64_HP_SIM
config HZ
	default 32
endif

if !IA64_HP_SIM
source kernel/Kconfig.hz
endif

config IA64_BRL_EMU
	bool
	depends on ITANIUM
	default y

# align cache-sensitive data to 128 bytes
config IA64_L1_CACHE_SHIFT
	int
	default "7" if MCKINLEY
	default "6" if ITANIUM

config IA64_CYCLONE
	bool "Cyclone (EXA) Time Source support"
	help
	  Say Y here to enable support for IBM EXA Cyclone time source.
	  If you're unsure, answer N.

config IOSAPIC
	bool
	depends on !IA64_HP_SIM
	default y

config FORCE_MAX_ZONEORDER
	int "MAX_ORDER (11 - 17)"  if !HUGETLB_PAGE
	range 11 17  if !HUGETLB_PAGE
	default "17" if HUGETLB_PAGE
	default "11"

config VIRT_CPU_ACCOUNTING
	bool "Deterministic task and CPU time accounting"
	default n
	help
	  Select this option to enable more accurate task and CPU time
	  accounting.  This is done by reading a CPU counter on each
	  kernel entry and exit and on transitions within the kernel
	  between system, softirq and hardirq state, so there is a
	  small performance impact.
	  If in doubt, say N here.

config SMP
	bool "Symmetric multi-processing support"
	select USE_GENERIC_SMP_HELPERS
	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
	  systems, but will use only one CPU of a multiprocessor system.  If
	  you say Y here, the kernel will run on many, but not all,
	  single processor systems.  On a single processor system, the kernel
	  will run faster if you say N here.

	  See also the SMP-HOWTO available at
	  <http://www.tldp.org/docs.html#howto>.

	  If you don't know what to do here, say N.

config NR_CPUS
	int "Maximum number of CPUs (2-4096)"
	range 2 4096
	depends on SMP
	default "4096"
	help
	  You should set this to the number of CPUs in your system, but
	  keep in mind that a kernel compiled for, e.g., 2 CPUs will boot but
	  only use 2 CPUs on a >2 CPU system.  Setting this to a value larger
	  than 64 will cause the use of a CPU mask array, causing a small
	  performance hit.

config HOTPLUG_CPU
	bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
	depends on SMP && EXPERIMENTAL
	select HOTPLUG
	default n
	---help---
	  Say Y here to experiment with turning CPUs off and on.  CPUs
	  can be controlled through /sys/devices/system/cpu/cpu#.
	  Say N if you want to disable CPU hotplug.

config ARCH_ENABLE_MEMORY_HOTPLUG
	def_bool y

config ARCH_ENABLE_MEMORY_HOTREMOVE
	def_bool y

config SCHED_SMT
	bool "SMT scheduler support"
	depends on SMP
	help
	  Improves the CPU scheduler's decision making when dealing with
	  Intel IA64 chips with MultiThreading at a cost of slightly increased
	  overhead in some places. If unsure say N here.

config PERMIT_BSP_REMOVE
	bool "Support removal of Bootstrap Processor"
	depends on HOTPLUG_CPU
	default n
	---help---
	Say Y here if your platform SAL will support removal of BSP with HOTPLUG_CPU
	support. 

config FORCE_CPEI_RETARGET
	bool "Force assumption that CPEI can be re-targeted"
	depends on PERMIT_BSP_REMOVE
	default n
	---help---
	Say Y if you need to force the assumption that CPEI can be re-targeted to
	any cpu in the system. This hint is available via ACPI 3.0 specifications.
	Tiger4 systems are capable of re-directing CPEI to any CPU other than BSP.
	This option it useful to enable this feature on older BIOS's as well.
	You can also enable this by using boot command line option force_cpei=1.

source "kernel/Kconfig.preempt"

source "mm/Kconfig"

config ARCH_SELECT_MEMORY_MODEL
	def_bool y

config ARCH_DISCONTIGMEM_ENABLE
	def_bool y
	help
	  Say Y to support efficient handling of discontiguous physical memory,
	  for architectures which are either NUMA (Non-Uniform Memory Access)
	  or have huge holes in the physical address space for other reasons.
 	  See <file:Documentation/vm/numa> for more.

config ARCH_FLATMEM_ENABLE
	def_bool y

config ARCH_SPARSEMEM_ENABLE
	def_bool y
	depends on ARCH_DISCONTIGMEM_ENABLE
	select SPARSEMEM_VMEMMAP_ENABLE

config ARCH_DISCONTIGMEM_DEFAULT
	def_bool y if (IA64_SGI_SN2 || IA64_GENERIC || IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB)
	depends on ARCH_DISCONTIGMEM_ENABLE

config NUMA
	bool "NUMA support"
	depends on !IA64_HP_SIM && !FLATMEM
	default y if IA64_SGI_SN2
	select ACPI_NUMA if ACPI
	help
	  Say Y to compile the kernel to support NUMA (Non-Uniform Memory
	  Access).  This option is for configuring high-end multiprocessor
	  server systems.  If in doubt, say N.

config NODES_SHIFT
	int "Max num nodes shift(3-10)"
	range 3 10
	default "10"
	depends on NEED_MULTIPLE_NODES
	help
	  This option specifies the maximum number of nodes in your SSI system.
	  MAX_NUMNODES will be 2^(This value).
	  If in doubt, use the default.

# VIRTUAL_MEM_MAP and FLAT_NODE_MEM_MAP are functionally equivalent.
# VIRTUAL_MEM_MAP has been retained for historical reasons.
config VIRTUAL_MEM_MAP
	bool "Virtual mem map"
	depends on !SPARSEMEM
	default y if !IA64_HP_SIM
	help
	  Say Y to compile the kernel with support for a virtual mem map.
	  This code also only takes effect if a memory hole of greater than
	  1 Gb is found during boot.  You must turn this option on if you
	  require the DISCONTIGMEM option for your machine. If you are
	  unsure, say Y.

config HOLES_IN_ZONE
	bool
	default y if VIRTUAL_MEM_MAP

config HAVE_ARCH_EARLY_PFN_TO_NID
	def_bool NUMA && SPARSEMEM

config HAVE_ARCH_NODEDATA_EXTENSION
	def_bool y
	depends on NUMA

config USE_PERCPU_NUMA_NODE_ID
	def_bool y
	depends on NUMA

config HAVE_MEMORYLESS_NODES
	def_bool NUMA

config ARCH_PROC_KCORE_TEXT
	def_bool y
	depends on PROC_KCORE

config IA64_MCA_RECOVERY
	tristate "MCA recovery from errors other than TLB."

config PERFMON
	bool "Performance monitor support"
	help
	  Selects whether support for the IA-64 performance monitor hardware
	  is included in the kernel.  This makes some kernel data-structures a
	  little bigger and slows down execution a bit, but it is generally
	  a good idea to turn this on.  If you're unsure, say Y.

config IA64_PALINFO
	tristate "/proc/pal support"
	help
	  If you say Y here, you are able to get PAL (Processor Abstraction
	  Layer) information in /proc/pal.  This contains useful information
	  about the processors in your systems, such as cache and TLB sizes
	  and the PAL firmware version in use.

	  To use this option, you have to ensure that the "/proc file system
	  support" (CONFIG_PROC_FS) is enabled, too.

config IA64_MC_ERR_INJECT
	tristate "MC error injection support"
	help
	  Adds support for MC error injection. If enabled, the kernel 
	  will provide a sysfs interface for user applications to
	  call MC error injection PAL procedures to inject various errors.
	  This is a useful tool for MCA testing.

	  If you're unsure, do not select this option.

config SGI_SN
	def_bool y if (IA64_SGI_SN2 || IA64_GENERIC)

config IA64_ESI
	bool "ESI (Extensible SAL Interface) support"
	help
	  If you say Y here, support is built into the kernel to
	  make ESI calls.  ESI calls are used to support vendor-specific
	  firmware extensions, such as the ability to inject memory-errors
	  for test-purposes.  If you're unsure, say N.

config IA64_HP_AML_NFW
	bool "Support ACPI AML calls to native firmware"
	help
	  This driver installs a global ACPI Operation Region handler for
	  region 0xA1.  AML methods can use this OpRegion to call arbitrary
	  native firmware functions.  The driver installs the OpRegion
	  handler if there is an HPQ5001 device or if the user supplies
	  the "force" module parameter, e.g., with the "aml_nfw.force"
	  kernel command line option.

source "drivers/sn/Kconfig"

config KEXEC
	bool "kexec system call (EXPERIMENTAL)"
	depends on EXPERIMENTAL && !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
	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.   And like a reboot
	  you can start any kernel with it, not just Linux.

	  The name comes from the similarity 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 CRASH_DUMP
	  bool "kernel crash dumps"
	  depends on IA64_MCA_RECOVERY && !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
	  help
	    Generate crash dump after being started by kexec.

source "drivers/firmware/Kconfig"

source "fs/Kconfig.binfmt"

endmenu

menu "Power management and ACPI options"

source "kernel/power/Kconfig"

source "drivers/acpi/Kconfig"

if PM

source "arch/ia64/kernel/cpufreq/Kconfig"

endif

endmenu

if !IA64_HP_SIM

menu "Bus options (PCI, PCMCIA)"

config PCI
	bool "PCI support"
	help
	  Real IA-64 machines all have PCI/PCI-X/PCI Express busses.  Say Y
	  here unless you are using a simulator without PCI support.

config PCI_DOMAINS
	def_bool PCI

config PCI_SYSCALL
	def_bool PCI

source "drivers/pci/pcie/Kconfig"

source "drivers/pci/Kconfig"

source "drivers/pci/hotplug/Kconfig"

source "drivers/pcmcia/Kconfig"

endmenu

endif

source "net/Kconfig"

source "drivers/Kconfig"

source "arch/ia64/hp/sim/Kconfig"

config MSPEC
	tristate "Memory special operations driver"
	depends on IA64
	select IA64_UNCACHED_ALLOCATOR
	help
	  If you have an ia64 and you want to enable memory special
	  operations support (formerly known as fetchop), say Y here,
	  otherwise say N.

source "fs/Kconfig"

source "arch/ia64/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "arch/ia64/kvm/Kconfig"

source "lib/Kconfig"

config IOMMU_HELPER
	def_bool (IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB || IA64_GENERIC || SWIOTLB)
