mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-25 19:55:28 +07:00
d085eb8ce7
vhost is currently broken on the some ARM configs.
The reason is that the ring element addresses are passed between
components with different alignments assumptions. Thus, if
guest selects a pointer and host then gets and dereferences
it, then alignment assumed by the host's compiler might be
greater than the actual alignment of the pointer.
compiler on the host from assuming pointer is aligned.
This actually triggers on ARM with -mabi=apcs-gnu - which is a
deprecated configuration. With this OABI, compiler assumes that
all structures are 4 byte aligned - which is stronger than
virtio guarantees for available and used rings, which are
merely 2 bytes. Thus a guest without -mabi=apcs-gnu running
on top of host with -mabi=apcs-gnu will be broken.
The correct fix is to force alignment of structures - however
that is an intrusive fix that's best deferred until the next release.
We didn't previously support such ancient systems at all - this surfaced
after vdpa support prompted removing dependency of vhost on
VIRTULIZATION. So for now, let's just add something along the lines of
depends on !ARM || AEABI
to the virtio Kconfig declaration, and add a comment that it has to do
with struct member alignment.
Note: we can't make VHOST and VHOST_RING themselves have
a dependency since these are selected. Add a new symbol for that.
We should be able to drop this dependency down the road.
Fixes: 20c384f1ea
("vhost: refine vhost and vringh kconfig")
Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Suggested-by: Richard Earnshaw <Richard.Earnshaw@arm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
137 lines
5.2 KiB
Plaintext
137 lines
5.2 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
menu "Intel MIC & related support"
|
|
|
|
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>.
|
|
|
|
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>.
|
|
|
|
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>.
|
|
|
|
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>.
|
|
|
|
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>.
|
|
|
|
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>.
|
|
|
|
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>.
|
|
|
|
config VOP
|
|
tristate "VOP Driver"
|
|
depends on VOP_BUS && VHOST_DPN
|
|
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>.
|
|
|
|
endmenu
|