Loading drivers/scsi/hpsa.c +16 −1 Original line number Diff line number Diff line Loading @@ -6615,6 +6615,17 @@ static void hpsa_free_cmd_pool(struct ctlr_info *h) h->ioaccel_cmd_pool, h->ioaccel_cmd_pool_dhandle); } static void hpsa_irq_affinity_hints(struct ctlr_info *h) { int i, cpu, rc; cpu = cpumask_first(cpu_online_mask); for (i = 0; i < h->msix_vector; i++) { rc = irq_set_affinity_hint(h->intr[i], get_cpu_mask(cpu)); cpu = cpumask_next(cpu, cpu_online_mask); } } static int hpsa_request_irq(struct ctlr_info *h, irqreturn_t (*msixhandler)(int, void *), irqreturn_t (*intxhandler)(int, void *)) Loading @@ -6634,6 +6645,7 @@ static int hpsa_request_irq(struct ctlr_info *h, rc = request_irq(h->intr[i], msixhandler, 0, h->devname, &h->q[i]); hpsa_irq_affinity_hints(h); } else { /* Use single reply pool */ if (h->msix_vector > 0 || h->msi_vector) { Loading Loading @@ -6685,13 +6697,16 @@ static void free_irqs(struct ctlr_info *h) if (!h->msix_vector || h->intr_mode != PERF_MODE_INT) { /* Single reply queue, only one irq to free */ i = h->intr_mode; irq_set_affinity_hint(h->intr[i], NULL); free_irq(h->intr[i], &h->q[i]); return; } for (i = 0; i < h->msix_vector; i++) for (i = 0; i < h->msix_vector; i++) { irq_set_affinity_hint(h->intr[i], NULL); free_irq(h->intr[i], &h->q[i]); } } static void hpsa_free_irqs_and_disable_msix(struct ctlr_info *h) { Loading Loading
drivers/scsi/hpsa.c +16 −1 Original line number Diff line number Diff line Loading @@ -6615,6 +6615,17 @@ static void hpsa_free_cmd_pool(struct ctlr_info *h) h->ioaccel_cmd_pool, h->ioaccel_cmd_pool_dhandle); } static void hpsa_irq_affinity_hints(struct ctlr_info *h) { int i, cpu, rc; cpu = cpumask_first(cpu_online_mask); for (i = 0; i < h->msix_vector; i++) { rc = irq_set_affinity_hint(h->intr[i], get_cpu_mask(cpu)); cpu = cpumask_next(cpu, cpu_online_mask); } } static int hpsa_request_irq(struct ctlr_info *h, irqreturn_t (*msixhandler)(int, void *), irqreturn_t (*intxhandler)(int, void *)) Loading @@ -6634,6 +6645,7 @@ static int hpsa_request_irq(struct ctlr_info *h, rc = request_irq(h->intr[i], msixhandler, 0, h->devname, &h->q[i]); hpsa_irq_affinity_hints(h); } else { /* Use single reply pool */ if (h->msix_vector > 0 || h->msi_vector) { Loading Loading @@ -6685,13 +6697,16 @@ static void free_irqs(struct ctlr_info *h) if (!h->msix_vector || h->intr_mode != PERF_MODE_INT) { /* Single reply queue, only one irq to free */ i = h->intr_mode; irq_set_affinity_hint(h->intr[i], NULL); free_irq(h->intr[i], &h->q[i]); return; } for (i = 0; i < h->msix_vector; i++) for (i = 0; i < h->msix_vector; i++) { irq_set_affinity_hint(h->intr[i], NULL); free_irq(h->intr[i], &h->q[i]); } } static void hpsa_free_irqs_and_disable_msix(struct ctlr_info *h) { Loading