xerces8 wrote: >> This looks like resource conflict to me, which could have resulted >> from ahci trying to grab all resources. Can you please post the >> result of "cat /proc/ioports" and "cat /proc/iomem"? > > I noticed that in IDE mode the same happens (32bit kernel has problems, > 64bit kernel has not), so here is dmesg, iomem and ioports for all 4 > combinations. Can you please try the attached debug patch and report boot log. All resources look fine. Thanks. -- tejun
--- drivers/ata/ahci.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) Index: tree0/drivers/ata/ahci.c =================================================================== --- tree0.orig/drivers/ata/ahci.c +++ tree0/drivers/ata/ahci.c @@ -2240,8 +2240,10 @@ static int ahci_init_one(struct pci_dev /* acquire resources */ rc = pcim_enable_device(pdev); - if (rc) + if (rc) { + dev_printk(KERN_WARNING, &pdev->dev, "pcim_enable_device failed %d\n", rc); return rc; + } /* AHCI controllers often implement SFF compatible interface. * Grab all PCI BARs just in case. @@ -2249,8 +2251,10 @@ static int ahci_init_one(struct pci_dev rc = pcim_iomap_regions_request_all(pdev, 1 << AHCI_PCI_BAR, DRV_NAME); if (rc == -EBUSY) pcim_pin_device(pdev); - if (rc) + if (rc) { + dev_printk(KERN_WARNING, &pdev->dev, "pcim_iomap_regions_request_all() failed %d\n", rc); return rc; + } if (pdev->vendor == PCI_VENDOR_ID_INTEL && (pdev->device == 0x2652 || pdev->device == 0x2653)) { @@ -2324,19 +2328,26 @@ static int ahci_init_one(struct pci_dev /* initialize adapter */ rc = ahci_configure_dma_masks(pdev, hpriv->cap & HOST_CAP_64); - if (rc) + if (rc) { + dev_printk(KERN_WARNING, &pdev->dev, "ahci_configure_dma_masks() failed %d\n", rc); return rc; + } rc = ahci_reset_controller(host); - if (rc) + if (rc) { + dev_printk(KERN_WARNING, &pdev->dev, "ahci_reset_controller() failed %d\n", rc); return rc; + } ahci_init_controller(host); ahci_print_info(host); pci_set_master(pdev); - return ata_host_activate(host, pdev->irq, ahci_interrupt, IRQF_SHARED, + rc = ata_host_activate(host, pdev->irq, ahci_interrupt, IRQF_SHARED, &ahci_sht); + if (rc) + dev_printk(KERN_WARNING, &pdev->dev, "ahci_host_activate() failed %d\n", rc); + return rc; } static int __init ahci_init(void)