Re: dmesg: PCI interrupts are no longer routedautomatically.........

From: Bjorn Helgaas
Date: Wed Jan 05 2005 - 12:18:44 EST


On Wed, 2005-01-05 at 07:06 -0500, linux-os wrote:
> The temporary work-around is....
> pci_enable_device(pdev);
> save_irq = pdev->irq;
> pci_disable_device(pdev); // Turn back off.
>
> init_bars(....);
> request_irq(save_irq,...) // Put ISR in place
>
> pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, 0x08);
> pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40);
> pci_set_dma_mask(pdev, 0x00000000ffffffffULL);
> pci_set_drvdata(pdev, NULL);
> pci_set_power_state(pdev, 0);
> pci_set_master(pdev);
> pci_set_mwi(pdev);
> pci_write_config_dword(pdev, PCI_COMMAND, PCI_CONFIG);
>
> .... configure chip-specific stuff, clear interrupts, etc.
> pci_enable_device(dev);

So prior to 2.6.10, you did something like this?

request_irq(pdev->irq, ...);
pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, 0x08);
pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40);
...
pci_enable_device(pdev);

What sort of interrupts does the device generate before it's
enabled? I can't find anything in the PCI spec that actually
prohibits interrupts before the driver starts up the device,
but it does seem strange.

You wouldn't want your ISR mucking around with a half-initialized
device, so does it have to check a "device_configured" flag
or something?


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/