Example #1
0
static int msi_init(void)
{
    static int status = -ENOMEM;

    if (!status)
        return status;

    if (pci_msi_quirk) {
        pci_msi_enable = 0;
        printk(KERN_WARNING "PCI: MSI quirk detected. MSI disabled.\n");
        status = -EINVAL;
        return status;
    }

    if ((status = msi_cache_init()) < 0) {
        pci_msi_enable = 0;
        printk(KERN_WARNING "PCI: MSI cache init failed\n");
        return status;
    }
    last_alloc_vector = assign_irq_vector(AUTO_ASSIGN);
    if (last_alloc_vector < 0) {
        pci_msi_enable = 0;
        printk(KERN_WARNING "PCI: No interrupt vectors available for MSI\n");
        status = -EBUSY;
        return status;
    }
    vector_irq[last_alloc_vector] = 0;
    nr_released_vectors++;

    return status;
}
Example #2
0
static int msi_init(void)
{
	static int status = -ENOMEM;

	if (!status)
		return status;

	if ((status = msi_cache_init()) < 0) {
		pci_msi_enable = 0;
		printk(KERN_INFO "WARNING: MSI INIT FAILURE\n");
		return status;
	}
	last_alloc_vector = assign_irq_vector(AUTO_ASSIGN);
	if (last_alloc_vector < 0) {
		pci_msi_enable = 0;
		printk(KERN_INFO "WARNING: ALL VECTORS ARE BUSY\n");
		status = -EBUSY;
		return status;
	}
	vector_irq[last_alloc_vector] = 0;
	nr_released_vectors++;
	printk(KERN_INFO "MSI INIT SUCCESS\n");

	return status;
}