Updated from Linux LTS 3.10.21 to 3.10.22
This commit is contained in:
@@ -292,6 +292,10 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
||||
{ PCI_VDEVICE(INTEL, 0x8d66), board_ahci }, /* Wellsburg RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x8d6e), board_ahci }, /* Wellsburg RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x23a3), board_ahci }, /* Coleto Creek AHCI */
|
||||
{ PCI_VDEVICE(INTEL, 0x9c83), board_ahci }, /* Wildcat Point-LP AHCI */
|
||||
{ PCI_VDEVICE(INTEL, 0x9c85), board_ahci }, /* Wildcat Point-LP RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x9c87), board_ahci }, /* Wildcat Point-LP RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x9c8f), board_ahci }, /* Wildcat Point-LP RAID */
|
||||
|
||||
/* JMicron 360/1/3/5/6, match class to avoid IDE function */
|
||||
{ PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
||||
@@ -431,6 +435,8 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
||||
.driver_data = board_ahci_yes_fbs }, /* 88se9172 on some Gigabyte */
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x91a3),
|
||||
.driver_data = board_ahci_yes_fbs },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9230),
|
||||
.driver_data = board_ahci_yes_fbs },
|
||||
|
||||
/* Promise */
|
||||
{ PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */
|
||||
|
||||
@@ -1266,9 +1266,11 @@ int ahci_do_softreset(struct ata_link *link, unsigned int *class,
|
||||
{
|
||||
struct ata_port *ap = link->ap;
|
||||
struct ahci_host_priv *hpriv = ap->host->private_data;
|
||||
struct ahci_port_priv *pp = ap->private_data;
|
||||
const char *reason = NULL;
|
||||
unsigned long now, msecs;
|
||||
struct ata_taskfile tf;
|
||||
bool fbs_disabled = false;
|
||||
int rc;
|
||||
|
||||
DPRINTK("ENTER\n");
|
||||
@@ -1278,6 +1280,16 @@ int ahci_do_softreset(struct ata_link *link, unsigned int *class,
|
||||
if (rc && rc != -EOPNOTSUPP)
|
||||
ata_link_warn(link, "failed to reset engine (errno=%d)\n", rc);
|
||||
|
||||
/*
|
||||
* According to AHCI-1.2 9.3.9: if FBS is enable, software shall
|
||||
* clear PxFBS.EN to '0' prior to issuing software reset to devices
|
||||
* that is attached to port multiplier.
|
||||
*/
|
||||
if (!ata_is_host_link(link) && pp->fbs_enabled) {
|
||||
ahci_disable_fbs(ap);
|
||||
fbs_disabled = true;
|
||||
}
|
||||
|
||||
ata_tf_init(link->device, &tf);
|
||||
|
||||
/* issue the first D2H Register FIS */
|
||||
@@ -1318,6 +1330,10 @@ int ahci_do_softreset(struct ata_link *link, unsigned int *class,
|
||||
} else
|
||||
*class = ahci_dev_classify(ap);
|
||||
|
||||
/* re-enable FBS if disabled before */
|
||||
if (fbs_disabled)
|
||||
ahci_enable_fbs(ap);
|
||||
|
||||
DPRINTK("EXIT, class=%u\n", *class);
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -4105,6 +4105,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
|
||||
{ "TORiSAN DVD-ROM DRD-N216", NULL, ATA_HORKAGE_MAX_SEC_128 },
|
||||
{ "QUANTUM DAT DAT72-000", NULL, ATA_HORKAGE_ATAPI_MOD16_DMA },
|
||||
{ "Slimtype DVD A DS8A8SH", NULL, ATA_HORKAGE_MAX_SEC_LBA48 },
|
||||
{ "Slimtype DVD A DS8A9SH", NULL, ATA_HORKAGE_MAX_SEC_LBA48 },
|
||||
|
||||
/* Devices we expect to fail diagnostics */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user