mirror of https://gitee.com/openkylin/linux.git
libata-sff: PCI IRQ handling fix
It is legitimate (although annoying and silly) for a PCI IDE controller not to be assigned an interrupt and to be polled. The libata-sff code should therefore not try and request IRQ 0 in this case. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
b14dabcdb6
commit
277d72a374
|
@ -806,7 +806,10 @@ int ata_pci_init_one(struct pci_dev *pdev,
|
|||
if (rc)
|
||||
goto err_out;
|
||||
|
||||
if (!legacy_mode) {
|
||||
if (!legacy_mode && pdev->irq) {
|
||||
/* We may have no IRQ assigned in which case we can poll. This
|
||||
shouldn't happen on a sane system but robustness is cheap
|
||||
in this case */
|
||||
rc = devm_request_irq(dev, pdev->irq, pi->port_ops->irq_handler,
|
||||
IRQF_SHARED, DRV_NAME, host);
|
||||
if (rc)
|
||||
|
@ -814,7 +817,7 @@ int ata_pci_init_one(struct pci_dev *pdev,
|
|||
|
||||
ata_port_desc(host->ports[0], "irq %d", pdev->irq);
|
||||
ata_port_desc(host->ports[1], "irq %d", pdev->irq);
|
||||
} else {
|
||||
} else if (legacy_mode) {
|
||||
if (!ata_port_is_dummy(host->ports[0])) {
|
||||
rc = devm_request_irq(dev, ATA_PRIMARY_IRQ(pdev),
|
||||
pi->port_ops->irq_handler,
|
||||
|
|
Loading…
Reference in New Issue