On Mon, 30 Jan 2017, 10:34am -0000, Hannes Reinecke wrote:
On 01/25/2017 09:33 PM, Dupuis, Chad wrote:
quoted
+static int qedf_request_msix_irq(struct qedf_ctx *qedf)
+{
+ int i, rc, cpu;
+
+ cpu = cpumask_first(cpu_online_mask);
+ for (i = 0; i < qedf->num_queues; i++) {
+ rc = request_irq(qedf->int_info.msix[i].vector,
+ qedf_msix_handler, 0, "qedf", &qedf->fp_array[i]);
+
+ if (rc) {
+ QEDF_WARN(&(qedf->dbg_ctx), "request_irq failed.\n");
+ qedf_sync_free_irqs(qedf);
+ return rc;
+ }
+
+ qedf->int_info.used_cnt++;
+ rc = irq_set_affinity_hint(qedf->int_info.msix[i].vector,
+ get_cpu_mask(cpu));
+ cpu = cpumask_next(cpu, cpu_online_mask);
+ }
+
+ return 0;
+}
+
Please use pci_alloc_irq_vectors() here; that avoid you having to do SMP
affinity setting yourself.
This wil be difficult to coordinate with three other drivers (qedi, qede
and qedr) using the same vector allocation code in the qed module.
Cheers,
Hannes