Unexpected driver interrupt behavior during init

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am currently developing a PCI block driver and can use only MSI interrupt.  During interrupt initialization, I called the pci_enable_msi and request_irq with following sample irq initialization function -

static int mydev_init_irq(struct mydevice *dev_ptr)
{
        int error;
        struct pci_dev *pdev = dev_ptr->pdev;
        const char *mydev_irq = "mydev_irq";

        error = pci_enable_msi(pdev);

        if (error) {

                printk(KERN_WARNING "Failed to enable MSI.");
                return error;
        }

        error = request_irq(pdev->irq, mydev_irq_handler, IRQF_SHARED,
                            mydev_irq, dev_ptr);

        return error;
}

After the request_irq executes, I always see from my debug trace that my driver is interrupted i.e. mydev_irq_handler got called.  I don't think it's proper behavior, because I'm sure at this point of the initialization the device is not fully initialized as well and hasn't sent me an interrupt yet (didn't see this behavior in our Windows driver).  At this point in initialization, since the device is not yet fully initialized and can't provide other info to the spurious interrupt I received, the IRQ handler will skip most of the handler function body and go straight to return IRQ_HANDLED, but I'm concerned with this bug.

What could be causing that, and did I miss anything during interrupt initialization that caused it?  Right now it's harmless, but I'm worried that it may cause problems in the future, like if I ported it to another Linux distro, and so I want to be able to prevent this.



Sent from Samsung Mobile
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux