diff options
author | Zhu Lingshan <lingshan.zhu@intel.com> | 2022-02-22 12:54:27 +0100 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2022-03-28 22:52:57 +0200 |
commit | 9b3e814834009a7d197ab6f93d6e061c0c4ee7e6 (patch) | |
tree | 941f360c6059e8cbea9ee37df4259fa08234953d /scripts/sorttable.c | |
parent | vDPA/ifcvf: implement device MSIX vector allocator (diff) | |
download | linux-9b3e814834009a7d197ab6f93d6e061c0c4ee7e6.tar.xz linux-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 'scripts/sorttable.c')
0 files changed, 0 insertions, 0 deletions