diff --git a/sys/dev/disk/nata/chipsets/ata-ahci.c b/sys/dev/disk/nata/chipsets/ata-ahci.c --- a/sys/dev/disk/nata/chipsets/ata-ahci.c +++ b/sys/dev/disk/nata/chipsets/ata-ahci.c @@ -85,6 +85,7 @@ if (!ctlr->r_irq) { if (ata_setup_interrupt(dev, ata_generic_intr)) { bus_release_resource(dev, ctlr->r_type2, ctlr->r_rid2, ctlr->r_res2); + ctlr->r_res2 = NULL; return ENXIO; } } @@ -94,6 +95,7 @@ /* reset controller */ if ((error = ata_ahci_ctlr_reset(dev)) != 0) { bus_release_resource(dev, ctlr->r_type2, ctlr->r_rid2, ctlr->r_res2); + ctlr->r_res2 = NULL; return (error); } diff --git a/sys/dev/disk/nata/chipsets/ata-ati.c b/sys/dev/disk/nata/chipsets/ata-ati.c --- a/sys/dev/disk/nata/chipsets/ata-ati.c +++ b/sys/dev/disk/nata/chipsets/ata-ati.c @@ -110,7 +110,7 @@ if ((pci_get_subclass(dev) == PCIS_STORAGE_SATA) && (pci_read_config(dev, PCIR_PROGIF, 1) == PCIP_STORAGE_SATA_AHCI_1_0)) { ctlr->setmode = ata_sata_setmode; - if (ata_ahci_chipinit(dev) != ENXIO) + if (ata_ahci_chipinit(dev) == 0) return 0; } }