http://bugzilla.opensuse.org/show_bug.cgi?id=1161867 http://bugzilla.opensuse.org/show_bug.cgi?id=1161867#c2 Daniel Wagner <daniel.wagner@suse.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel.wagner@suse.com --- Comment #2 from Daniel Wagner <daniel.wagner@suse.com> --- The messager: chip.c: static int __irq_startup_managed(struct irq_desc *desc, struct cpumask *aff, bool force) { [...] if (cpumask_any_and(aff, cpu_online_mask) >= nr_cpu_ids) { /* * Catch code which fiddles with enable_irq() on a managed * and potentially shutdown IRQ. Chained interrupt * installment or irq auto probing should not happen on * managed irqs either. */ if (WARN_ON_ONCE(force)) return IRQ_STARTUP_ABORT; [...] } And the source of the problem: /* * Poll for completions any queue, including those not dedicated to polling. * Can be called from any context. */ static int nvme_poll_irqdisable(struct nvme_queue *nvmeq, unsigned int tag) { struct pci_dev *pdev = to_pci_dev(nvmeq->dev->dev); u16 start, end; int found; /* * For a poll queue we need to protect against the polling thread * using the CQ lock. For normal interrupt driven threads we have * to disable the interrupt to avoid racing with it. */ if (test_bit(NVMEQ_POLLED, &nvmeq->flags)) { spin_lock(&nvmeq->cq_poll_lock); found = nvme_process_cq(nvmeq, &start, &end, tag); spin_unlock(&nvmeq->cq_poll_lock); } else { disable_irq(pci_irq_vector(pdev, nvmeq->cq_vector)); found = nvme_process_cq(nvmeq, &start, &end, tag); enable_irq(pci_irq_vector(pdev, nvmeq->cq_vector)); } nvme_complete_cqes(nvmeq, start, end); return found; } -- You are receiving this mail because: You are on the CC list for the bug.