diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 6978469eb16d87c9637c2969f6831a17c38cd267..53f5afd9420cf136a85635beed3e59f2f0155385 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -2241,7 +2241,10 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (rc)
 		return rc;
 
-	rc = pcim_iomap_regions(pdev, 1 << AHCI_PCI_BAR, DRV_NAME);
+	/* AHCI controllers often implement SFF compatible interface.
+	 * Grab all PCI BARs just in case.
+	 */
+	rc = pcim_iomap_regions_request_all(pdev, 1 << AHCI_PCI_BAR, DRV_NAME);
 	if (rc == -EBUSY)
 		pcim_pin_device(pdev);
 	if (rc)