在 2021/7/2 下午11:05, Ming Lei 写道:
blk-mq needs to know if the device uses managed irq, so add one field
to virtio_device for recording if device uses managed irq.
If the driver use managed irq, this flag has to be set so it can be
passed to blk-mq.
Cc: "Michael S. Tsirkin"<mst@xxxxxxxxxx>
Cc: Jason Wang<jasowang@xxxxxxxxxx>
Cc:virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
Signed-off-by: Ming Lei<ming.lei@xxxxxxxxxx>
---
drivers/block/virtio_blk.c | 2 ++
drivers/scsi/virtio_scsi.c | 1 +
drivers/virtio/virtio_pci_common.c | 1 +
include/linux/virtio.h | 1 +
4 files changed, 5 insertions(+)
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index e4bd3b1fc3c2..33b9c80ac475 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -764,6 +764,8 @@ static int virtblk_probe(struct virtio_device *vdev)
vblk->tag_set.queue_depth = queue_depth;
vblk->tag_set.numa_node = NUMA_NO_NODE;
vblk->tag_set.flags = BLK_MQ_F_SHOULD_MERGE;
+ if (vdev->use_managed_irq)
+ vblk->tag_set.flags |= BLK_MQ_F_MANAGED_IRQ;
I'm not familiar with blk mq.
But the name is kind of confusing, I guess
"BLK_MQ_F_AFFINITY_MANAGED_IRQ" is better? (Consider we had
"IRQD_AFFINITY_MANAGED")
This helps me to differ this from the devres (device managed IRQ) at least.
Thanks