# SPDX-License-Identifier: GPL-2.0-only
menu "Intel MIC & related support"

comment "Intel MIC Bus Driver"

config INTEL_MIC_BUS
	tristate "Intel MIC Bus Driver"
	depends on 64BIT && PCI && X86
	select DMA_OPS
	help
	  This option is selected by any driver which registers a
	  device or driver on the MIC Bus, such as CONFIG_INTEL_MIC_HOST,
	  CONFIG_INTEL_MIC_CARD, CONFIG_INTEL_MIC_X100_DMA etc.

	  If you are building a host/card kernel with an Intel MIC device
	  then say M (recommended) or Y, else say N. If unsure say N.

	  More information about the Intel MIC family as well as the Linux
	  OS and tools for MIC to use with this driver are available from
	  <http://software.intel.com/en-us/mic-developer>.

comment "SCIF Bus Driver"

config SCIF_BUS
	tristate "SCIF Bus Driver"
	depends on 64BIT && PCI && X86
	select DMA_OPS
	help
	  This option is selected by any driver which registers a
	  device or driver on the SCIF Bus, such as CONFIG_INTEL_MIC_HOST
	  and CONFIG_INTEL_MIC_CARD.

	  If you are building a host/card kernel with an Intel MIC device
	  then say M (recommended) or Y, else say N. If unsure say N.

	  More information about the Intel MIC family as well as the Linux
	  OS and tools for MIC to use with this driver are available from
	  <http://software.intel.com/en-us/mic-developer>.

comment "VOP Bus Driver"

config VOP_BUS
	tristate "VOP Bus Driver"
	depends on HAS_DMA
	select DMA_OPS
	help
	  This option is selected by any driver which registers a
	  device or driver on the VOP Bus, such as CONFIG_INTEL_MIC_HOST
	  and CONFIG_INTEL_MIC_CARD.

	  If you are building a host/card kernel with an Intel MIC device
	  then say M (recommended) or Y, else say N. If unsure say N.

	  More information about the Intel MIC family as well as the Linux
	  OS and tools for MIC to use with this driver are available from
	  <http://software.intel.com/en-us/mic-developer>.

comment "Intel MIC Host Driver"

config INTEL_MIC_HOST
	tristate "Intel MIC Host Driver"
	depends on 64BIT && PCI && X86
	depends on INTEL_MIC_BUS && SCIF_BUS && MIC_COSM && VOP_BUS
	select DMA_OPS
	help
	  This enables Host Driver support for the Intel Many Integrated
	  Core (MIC) family of PCIe form factor coprocessor devices that
	  run a 64 bit Linux OS. The driver manages card OS state and
	  enables communication between host and card. Intel MIC X100
	  devices are currently supported.

	  If you are building a host kernel with an Intel MIC device then
	  say M (recommended) or Y, else say N. If unsure say N.

	  More information about the Intel MIC family as well as the Linux
	  OS and tools for MIC to use with this driver are available from
	  <http://software.intel.com/en-us/mic-developer>.

comment "Intel MIC Card Driver"

config INTEL_MIC_CARD
	tristate "Intel MIC Card Driver"
	depends on 64BIT && X86
	depends on INTEL_MIC_BUS && SCIF_BUS && MIC_COSM && VOP_BUS
	select VIRTIO
	help
	  This enables card driver support for the Intel Many Integrated
	  Core (MIC) device family. The card driver communicates shutdown/
	  crash events to the host and allows registration/configuration of
	  virtio devices. Intel MIC X100 devices are currently supported.

	  If you are building a card kernel for an Intel MIC device then
	  say M (recommended) or Y, else say N. If unsure say N.

	  For more information see
	  <http://software.intel.com/en-us/mic-developer>.

comment "SCIF Driver"

config SCIF
	tristate "SCIF Driver"
	depends on 64BIT && PCI && X86 && SCIF_BUS && IOMMU_SUPPORT
	select IOMMU_IOVA
	help
	  This enables SCIF Driver support for the Intel Many Integrated
	  Core (MIC) family of PCIe form factor coprocessor devices that
	  run a 64 bit Linux OS. The Symmetric Communication Interface
	  (SCIF (pronounced as skiff)) is a low level communications API
	  across PCIe currently implemented for MIC.

	  If you are building a host kernel with an Intel MIC device then
	  say M (recommended) or Y, else say N. If unsure say N.

	  More information about the Intel MIC family as well as the Linux
	  OS and tools for MIC to use with this driver are available from
	  <http://software.intel.com/en-us/mic-developer>.

comment "Intel MIC Coprocessor State Management (COSM) Drivers"

config MIC_COSM
	tristate "Intel MIC Coprocessor State Management (COSM) Drivers"
	depends on 64BIT && PCI && X86 && SCIF
	help
	  This enables COSM driver support for the Intel Many
	  Integrated Core (MIC) family of PCIe form factor coprocessor
	  devices. COSM drivers implement functions such as boot,
	  shutdown, reset and reboot of MIC devices.

	  If you are building a host kernel with an Intel MIC device then
	  say M (recommended) or Y, else say N. If unsure say N.

	  More information about the Intel MIC family as well as the Linux
	  OS and tools for MIC to use with this driver are available from
	  <http://software.intel.com/en-us/mic-developer>.

comment "VOP Driver"

config VOP
	tristate "VOP Driver"
	depends on VOP_BUS
	select VHOST_RING
	select VIRTIO
	help
	  This enables VOP (Virtio over PCIe) Driver support for the Intel
	  Many Integrated Core (MIC) family of PCIe form factor coprocessor
	  devices. The VOP driver allows virtio drivers, e.g. net, console
	  and block drivers, on the card connect to user space virtio
	  devices on the host.

	  If you are building a host kernel with an Intel MIC device then
	  say M (recommended) or Y, else say N. If unsure say N.

	  More information about the Intel MIC family as well as the Linux
	  OS and tools for MIC to use with this driver are available from
	  <http://software.intel.com/en-us/mic-developer>.

if VOP
source "drivers/vhost/Kconfig.vringh"
endif

endmenu
