> + /* 256 tags should be high enough to saturate device */ > + int max_queues = DIV_ROUND_UP(h->scsi_host->can_queue, 256); > + > + /* per NUMA node hw queue */ > + h->scsi_host->nr_hw_queues = min_t(int, nr_node_ids, max_queues); I don't think this magic should be in a driver. The per-node hw_queue selection seems like something we'd better do in the core code. Also the whole idea to use nr_hw_queues for just partitioning tag space on hardware that doesn't really support multiple hardware queues seems more than odd.