OSDN Git Service

libata:pata_atiixp: Don't use unconnected secondary port on SB600
authorDarren Stevens <darren@stevens-zone.net>
Sun, 31 Dec 2017 21:11:05 +0000 (21:11 +0000)
committerTejun Heo <tj@kernel.org>
Mon, 8 Jan 2018 12:02:02 +0000 (04:02 -0800)
    The AMD SB600 southbridge has an PATA IDE interface, but the
    secondary port has no physical connections, so is disabled in
    the PCI header which makes it appear as a legacy port.

    On most systems this causes no trouble, but the Amigaone X1000 has
    an SB600 connected to a PowerPC SoC PCI-e root port, with an
    emulated ISA bus. On this system a kernel panic occurs at boot
    time during device attach for the secondary port.

    Mark the port as 'dummy' to prevent this. As a bonus, disabling
    this will slightly speed up booting on PC systems using an
    SB600 as they will now skip 2 known empty ports.

Signed-off-by: Darren Stevens <Darren@stevens-zone.net>
Signed-off-by: Tejun Heo <tj@kernel.org>
drivers/ata/pata_atiixp.c

index 49d705c..4d49fd3 100644 (file)
@@ -278,6 +278,10 @@ static int atiixp_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
        };
        const struct ata_port_info *ppi[] = { &info, &info };
 
+       /* SB600 doesn't have secondary port wired */
+       if((pdev->device == PCI_DEVICE_ID_ATI_IXP600_IDE))
+               ppi[1] = &ata_dummy_port_info;
+
        return ata_pci_bmdma_init_one(pdev, ppi, &atiixp_sht, NULL,
                                      ATA_HOST_PARALLEL_SCAN);
 }