* bsg_setup_queue - Create and add the bsg hooks so we can receive requests
  * @dev: device to attach bsg device to
  * @name: device to give bsg device
+ * @lim: queue limits for the bsg queue
  * @job_fn: bsg job handler
  * @timeout: timeout handler function pointer
  * @dd_job_size: size of LLD data needed for each job
  */
 struct request_queue *bsg_setup_queue(struct device *dev, const char *name,
-               bsg_job_fn *job_fn, bsg_timeout_fn *timeout, int dd_job_size)
+               struct queue_limits *lim, bsg_job_fn *job_fn,
+               bsg_timeout_fn *timeout, int dd_job_size)
 {
        struct bsg_set *bset;
        struct blk_mq_tag_set *set;
        if (blk_mq_alloc_tag_set(set))
                goto out_tag_set;
 
-       q = blk_mq_alloc_queue(set, NULL, NULL);
+       q = blk_mq_alloc_queue(set, lim, NULL);
        if (IS_ERR(q)) {
                ret = PTR_ERR(q);
                goto out_queue;
 
                return;
        }
 
-       mrioc->bsg_queue = bsg_setup_queue(bsg_dev, dev_name(bsg_dev),
+       mrioc->bsg_queue = bsg_setup_queue(bsg_dev, dev_name(bsg_dev), NULL,
                        mpi3mr_bsg_request, NULL, 0);
        if (IS_ERR(mrioc->bsg_queue)) {
                ioc_err(mrioc, "%s: bsg registration failed\n",
 
        snprintf(bsg_name, sizeof(bsg_name),
                 "fc_host%d", shost->host_no);
 
-       q = bsg_setup_queue(dev, bsg_name, fc_bsg_dispatch, fc_bsg_job_timeout,
-                               i->f->dd_bsg_size);
+       q = bsg_setup_queue(dev, bsg_name, NULL, fc_bsg_dispatch,
+                       fc_bsg_job_timeout, i->f->dd_bsg_size);
        if (IS_ERR(q)) {
                dev_err(dev,
                        "fc_host%d: bsg interface failed to initialize - setup queue\n",
        if (!i->f->bsg_request)
                return -ENOTSUPP;
 
-       q = bsg_setup_queue(dev, dev_name(dev), fc_bsg_dispatch_prep,
+       q = bsg_setup_queue(dev, dev_name(dev), NULL, fc_bsg_dispatch_prep,
                                fc_bsg_job_timeout, i->f->dd_bsg_size);
        if (IS_ERR(q)) {
                dev_err(dev, "failed to setup bsg queue\n");
 
                return -ENOTSUPP;
 
        snprintf(bsg_name, sizeof(bsg_name), "iscsi_host%d", shost->host_no);
-       q = bsg_setup_queue(dev, bsg_name, iscsi_bsg_host_dispatch, NULL, 0);
+       q = bsg_setup_queue(dev, bsg_name, NULL, iscsi_bsg_host_dispatch, NULL,
+                       0);
        if (IS_ERR(q)) {
                shost_printk(KERN_ERR, shost, "bsg interface failed to "
                             "initialize - no request queue\n");
 
        }
 
        if (rphy) {
-               q = bsg_setup_queue(&rphy->dev, dev_name(&rphy->dev),
+               q = bsg_setup_queue(&rphy->dev, dev_name(&rphy->dev), NULL,
                                sas_smp_dispatch, NULL, 0);
                if (IS_ERR(q))
                        return PTR_ERR(q);
                char name[20];
 
                snprintf(name, sizeof(name), "sas_host%d", shost->host_no);
-               q = bsg_setup_queue(&shost->shost_gendev, name,
+               q = bsg_setup_queue(&shost->shost_gendev, name, NULL,
                                sas_smp_dispatch, NULL, 0);
                if (IS_ERR(q))
                        return PTR_ERR(q);
 
        if (ret)
                goto out;
 
-       q = bsg_setup_queue(bsg_dev, dev_name(bsg_dev), ufs_bsg_request, NULL, 0);
+       q = bsg_setup_queue(bsg_dev, dev_name(bsg_dev), NULL, ufs_bsg_request,
+                       NULL, 0);
        if (IS_ERR(q)) {
                ret = PTR_ERR(q);
                goto out;
 
 void bsg_job_done(struct bsg_job *job, int result,
                  unsigned int reply_payload_rcv_len);
 struct request_queue *bsg_setup_queue(struct device *dev, const char *name,
-               bsg_job_fn *job_fn, bsg_timeout_fn *timeout, int dd_job_size);
+               struct queue_limits *lim, bsg_job_fn *job_fn,
+               bsg_timeout_fn *timeout, int dd_job_size);
 void bsg_remove_queue(struct request_queue *q);
 void bsg_job_put(struct bsg_job *job);
 int __must_check bsg_job_get(struct bsg_job *job);