# 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
	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
	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"
	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
	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
