virtio: provide a method to get the IRQ affinity mask for a virtqueue
This basically passed up the pci_irq_get_affinity information through virtio through an optional get_vq_affinity method. It is only implemented by the PCI backend for now, and only when we use per-virtqueue IRQs. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:

committed by
Michael S. Tsirkin

parent
fb5e31d970
commit
bbaba47956
@@ -361,6 +361,17 @@ int vp_set_vq_affinity(struct virtqueue *vq, int cpu)
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct cpumask *vp_get_vq_affinity(struct virtio_device *vdev, int index)
|
||||
{
|
||||
struct virtio_pci_device *vp_dev = to_vp_device(vdev);
|
||||
unsigned int *map = vp_dev->msix_vector_map;
|
||||
|
||||
if (!map || map[index] == VIRTIO_MSI_NO_VECTOR)
|
||||
return NULL;
|
||||
|
||||
return pci_irq_get_affinity(vp_dev->pci_dev, map[index]);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static int virtio_pci_freeze(struct device *dev)
|
||||
{
|
||||
|
Reference in New Issue
Block a user