diff options
author | Zhu Lingshan <lingshan.zhu@intel.com> | 2022-02-22 19:54:27 +0800 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2022-03-28 16:52:57 -0400 |
commit | 9b3e814834009a7d197ab6f93d6e061c0c4ee7e6 (patch) | |
tree | 941f360c6059e8cbea9ee37df4259fa08234953d /drivers/remoteproc/remoteproc_elf_loader.c | |
parent | ad5c5690de57f0bd3888ecade4685d4181a4e85c (diff) | |
download | lwn-9b3e814834009a7d197ab6f93d6e061c0c4ee7e6.tar.gz lwn-9b3e814834009a7d197ab6f93d6e061c0c4ee7e6.zip |
vDPA/ifcvf: implement shared IRQ feature
On some platforms/devices, there may not be enough MSI vectors
allocated for the virtqueues and config changes. In such a case,
the interrupt sources(virtqueues, config changes) must share
an IRQ/vector, to avoid initialization failures, keep
the device functional.
This commit handles three cases:
(1) number of the allocated vectors == the number of virtqueues + 1
(config changes), every virtqueue and the config interrupt has
a separated vector/IRQ, the best and the most likely case.
(2) number of the allocated vectors is less than the best case, but
greater than 1. In this case, all virtqueues share a vector/IRQ,
the config interrupt has a separated vector/IRQ
(3) only one vector is allocated, in this case, the virtqueues and
the config interrupt share a vector/IRQ. The worst and most
unlikely case.
Otherwise, it needs to fail.
This commit introduces some helper functions:
ifcvf_set_vq_vector() and ifcvf_set_config_vector() sets virtqueue
vector and config vector in the device config space, so that
the device can send interrupt DMA.
Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
Link: https://lore.kernel.org/r/20220222115428.998334-5-lingshan.zhu@intel.com
Signed-off-by: Tom Rix <trix@redhat.com>
Link: https://lore.kernel.org/r/20220315124130.1710030-1-trix@redhat.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'drivers/remoteproc/remoteproc_elf_loader.c')
0 files changed, 0 insertions, 0 deletions