Hi Hannes, Please find the response below,
On 11/11/16 10:13 PM, "Hannes Reinecke" <h...@suse.de> wrote: >On 11/08/2016 07:57 AM, Manish Rangankar wrote: >> The QLogic FastLinQ Driver for iSCSI (qedi) is the iSCSI specific module >> for 41000 Series Converged Network Adapters by QLogic. >> >> This patch consists of following changes: >> - MAINTAINERS Makefile and Kconfig changes for qedi, >> - PCI driver registration, >> - iSCSI host level initialization, >> - Debugfs and log level infrastructure. >> >> Signed-off-by: Nilesh Javali <nilesh.jav...@cavium.com> >> Signed-off-by: Adheer Chandravanshi <adheer.chandravan...@qlogic.com> >> Signed-off-by: Chad Dupuis <chad.dup...@cavium.com> >> Signed-off-by: Saurav Kashyap <saurav.kash...@cavium.com> >> Signed-off-by: Arun Easi <arun.e...@cavium.com> >> Signed-off-by: Manish Rangankar <manish.rangan...@cavium.com> >> --- >> MAINTAINERS | 6 + >> drivers/net/ethernet/qlogic/Kconfig | 12 - >> drivers/scsi/Kconfig | 1 + >> drivers/scsi/Makefile | 1 + >> drivers/scsi/qedi/Kconfig | 10 + >> drivers/scsi/qedi/Makefile | 5 + >> drivers/scsi/qedi/qedi.h | 291 +++++++ >> drivers/scsi/qedi/qedi_dbg.c | 143 ++++ >> drivers/scsi/qedi/qedi_dbg.h | 144 ++++ >> drivers/scsi/qedi/qedi_debugfs.c | 244 ++++++ >> drivers/scsi/qedi/qedi_hsi.h | 52 ++ >> drivers/scsi/qedi/qedi_main.c | 1616 >>+++++++++++++++++++++++++++++++++++ >> drivers/scsi/qedi/qedi_sysfs.c | 52 ++ >> drivers/scsi/qedi/qedi_version.h | 14 + >> 14 files changed, 2579 insertions(+), 12 deletions(-) >> create mode 100644 drivers/scsi/qedi/Kconfig >> create mode 100644 drivers/scsi/qedi/Makefile >> create mode 100644 drivers/scsi/qedi/qedi.h >> create mode 100644 drivers/scsi/qedi/qedi_dbg.c >> create mode 100644 drivers/scsi/qedi/qedi_dbg.h >> create mode 100644 drivers/scsi/qedi/qedi_debugfs.c >> create mode 100644 drivers/scsi/qedi/qedi_hsi.h >> create mode 100644 drivers/scsi/qedi/qedi_main.c >> create mode 100644 drivers/scsi/qedi/qedi_sysfs.c >> create mode 100644 drivers/scsi/qedi/qedi_version.h >> [...] >> >> +static enum qed_int_mode qedi_int_mode_to_enum(void) >> +{ >> + switch (int_mode) { >> + case 0: return QED_INT_MODE_MSIX; >> + case 1: return QED_INT_MODE_INTA; >> + case 2: return QED_INT_MODE_MSI; >> + default: >> + QEDI_ERR(NULL, "Unknown qede_int_mode=%08x; " >> + "Defaulting to MSI-x\n", int_mode); >> + return QED_INT_MODE_MSIX; >> + } >> +} >Errm. A per-driver interrupt mode? >How very curious. >You surely want to make that per-HBA, right? This was added for testing purpose, we will remove this code. [...] >> +static int qedi_request_msix_irq(struct qedi_ctx *qedi) >> +{ >> + int i, rc, cpu; >> + >> + cpu = cpumask_first(cpu_online_mask); >> + for (i = 0; i < MIN_NUM_CPUS_MSIX(qedi); i++) { >> + rc = request_irq(qedi->int_info.msix[i].vector, >> + qedi_msix_handler, 0, "qedi", >> + &qedi->fp_array[i]); >> + >> + if (rc) { >> + QEDI_WARN(&qedi->dbg_ctx, "request_irq failed.\n"); >> + qedi_sync_free_irqs(qedi); >> + return rc; >> + } >> + qedi->int_info.used_cnt++; >> + rc = irq_set_affinity_hint(qedi->int_info.msix[i].vector, >> + get_cpu_mask(cpu)); >> + cpu = cpumask_next(cpu, cpu_online_mask); >> + } >> + >> + return 0; >> +} >Please use the irq-affinity rework from Christoph here; that'll save you >the additional msix vectors allocation. The existing qed* driver(s) and common module (qed) framework is built on top of the older pci_enable_msix_*() API. The new framework requires re-work on the existing qed common module API. That would need co-ordination among other dependent drivers (e.g.: qede network driver, which is already in the tree). We would prefer to add this as a follow on (to the initial submission) effort, with additional testing done and submission co-ordinated across protocol drivers. Thanks, Manish