From: Greg Kroah-Hartman Date: Fri, 24 Nov 2023 16:06:10 +0000 (+0000) Subject: 4.14-stable patches X-Git-Tag: v4.14.331~34 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6aab53ded5f11af537bfb45c7d0b2c65d6f0a890;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: scsi-virtio_scsi-limit-number-of-hw-queues-by-nr_cpu_ids.patch --- diff --git a/queue-4.14/scsi-virtio_scsi-limit-number-of-hw-queues-by-nr_cpu_ids.patch b/queue-4.14/scsi-virtio_scsi-limit-number-of-hw-queues-by-nr_cpu_ids.patch new file mode 100644 index 00000000000..074a0d320ab --- /dev/null +++ b/queue-4.14/scsi-virtio_scsi-limit-number-of-hw-queues-by-nr_cpu_ids.patch @@ -0,0 +1,41 @@ +From 1978f30a87732d4d9072a20abeded9fe17884f1b Mon Sep 17 00:00:00 2001 +From: Dongli Zhang +Date: Wed, 27 Mar 2019 18:36:35 +0800 +Subject: scsi: virtio_scsi: limit number of hw queues by nr_cpu_ids + +From: Dongli Zhang + +commit 1978f30a87732d4d9072a20abeded9fe17884f1b upstream. + +When tag_set->nr_maps is 1, the block layer limits the number of hw queues +by nr_cpu_ids. No matter how many hw queues are used by virtio-scsi, as it +has (tag_set->nr_maps == 1), it can use at most nr_cpu_ids hw queues. + +In addition, specifically for pci scenario, when the 'num_queues' specified +by qemu is more than maxcpus, virtio-scsi would not be able to allocate +more than maxcpus vectors in order to have a vector for each queue. As a +result, it falls back into MSI-X with one vector for config and one shared +for queues. + +Considering above reasons, this patch limits the number of hw queues used +by virtio-scsi by nr_cpu_ids. + +Reviewed-by: Stefan Hajnoczi +Signed-off-by: Dongli Zhang +Signed-off-by: Jens Axboe +Signed-off-by: Kunkun Jiang +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/virtio_scsi.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/scsi/virtio_scsi.c ++++ b/drivers/scsi/virtio_scsi.c +@@ -891,6 +891,7 @@ static int virtscsi_probe(struct virtio_ + + /* We need to know how many queues before we allocate. */ + num_queues = virtscsi_config_get(vdev, num_queues) ? : 1; ++ num_queues = min_t(unsigned int, nr_cpu_ids, num_queues); + + num_targets = virtscsi_config_get(vdev, max_target) + 1; + diff --git a/queue-4.14/series b/queue-4.14/series index 3b3297b1ff6..4ab61e978b4 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -53,3 +53,4 @@ ext4-apply-umask-if-acl-support-is-disabled.patch ext4-correct-offset-of-gdb-backup-in-non-meta_bg-group-to-update_backups.patch ext4-correct-return-value-of-ext4_convert_meta_bg.patch ext4-remove-gdb-backup-copy-for-meta-bg-in-setup_new_flex_group_blocks.patch +scsi-virtio_scsi-limit-number-of-hw-queues-by-nr_cpu_ids.patch