Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
pata_hpt366: no ATAPI DMA
pata_hpt366: fix cable detection,
libata: fix Seagate NCQ+FLUSH blacklist

+68 -9
+59 -6
drivers/ata/libata-core.c
··· 4050 4050 { "ST3160023AS", "3.42", ATA_HORKAGE_NONCQ }, 4051 4051 4052 4052 /* Seagate NCQ + FLUSH CACHE firmware bug */ 4053 - { "ST31500341AS", "9JU138", ATA_HORKAGE_NONCQ | 4053 + { "ST31500341AS", "SD15", ATA_HORKAGE_NONCQ | 4054 4054 ATA_HORKAGE_FIRMWARE_WARN }, 4055 - { "ST31000333AS", "9FZ136", ATA_HORKAGE_NONCQ | 4055 + { "ST31500341AS", "SD16", ATA_HORKAGE_NONCQ | 4056 4056 ATA_HORKAGE_FIRMWARE_WARN }, 4057 - { "ST3640623AS", "9FZ164", ATA_HORKAGE_NONCQ | 4057 + { "ST31500341AS", "SD17", ATA_HORKAGE_NONCQ | 4058 4058 ATA_HORKAGE_FIRMWARE_WARN }, 4059 - { "ST3640323AS", "9FZ134", ATA_HORKAGE_NONCQ | 4059 + { "ST31500341AS", "SD18", ATA_HORKAGE_NONCQ | 4060 4060 ATA_HORKAGE_FIRMWARE_WARN }, 4061 - { "ST3320813AS", "9FZ182", ATA_HORKAGE_NONCQ | 4061 + { "ST31500341AS", "SD19", ATA_HORKAGE_NONCQ | 4062 4062 ATA_HORKAGE_FIRMWARE_WARN }, 4063 - { "ST3320613AS", "9FZ162", ATA_HORKAGE_NONCQ | 4063 + 4064 + { "ST31000333AS", "SD15", ATA_HORKAGE_NONCQ | 4065 + ATA_HORKAGE_FIRMWARE_WARN }, 4066 + { "ST31000333AS", "SD16", ATA_HORKAGE_NONCQ | 4067 + ATA_HORKAGE_FIRMWARE_WARN }, 4068 + { "ST31000333AS", "SD17", ATA_HORKAGE_NONCQ | 4069 + ATA_HORKAGE_FIRMWARE_WARN }, 4070 + { "ST31000333AS", "SD18", ATA_HORKAGE_NONCQ | 4071 + ATA_HORKAGE_FIRMWARE_WARN }, 4072 + { "ST31000333AS", "SD19", ATA_HORKAGE_NONCQ | 4073 + ATA_HORKAGE_FIRMWARE_WARN }, 4074 + 4075 + { "ST3640623AS", "SD15", ATA_HORKAGE_NONCQ | 4076 + ATA_HORKAGE_FIRMWARE_WARN }, 4077 + { "ST3640623AS", "SD16", ATA_HORKAGE_NONCQ | 4078 + ATA_HORKAGE_FIRMWARE_WARN }, 4079 + { "ST3640623AS", "SD17", ATA_HORKAGE_NONCQ | 4080 + ATA_HORKAGE_FIRMWARE_WARN }, 4081 + { "ST3640623AS", "SD18", ATA_HORKAGE_NONCQ | 4082 + ATA_HORKAGE_FIRMWARE_WARN }, 4083 + { "ST3640623AS", "SD19", ATA_HORKAGE_NONCQ | 4084 + ATA_HORKAGE_FIRMWARE_WARN }, 4085 + 4086 + { "ST3640323AS", "SD15", ATA_HORKAGE_NONCQ | 4087 + ATA_HORKAGE_FIRMWARE_WARN }, 4088 + { "ST3640323AS", "SD16", ATA_HORKAGE_NONCQ | 4089 + ATA_HORKAGE_FIRMWARE_WARN }, 4090 + { "ST3640323AS", "SD17", ATA_HORKAGE_NONCQ | 4091 + ATA_HORKAGE_FIRMWARE_WARN }, 4092 + { "ST3640323AS", "SD18", ATA_HORKAGE_NONCQ | 4093 + ATA_HORKAGE_FIRMWARE_WARN }, 4094 + { "ST3640323AS", "SD19", ATA_HORKAGE_NONCQ | 4095 + ATA_HORKAGE_FIRMWARE_WARN }, 4096 + 4097 + { "ST3320813AS", "SD15", ATA_HORKAGE_NONCQ | 4098 + ATA_HORKAGE_FIRMWARE_WARN }, 4099 + { "ST3320813AS", "SD16", ATA_HORKAGE_NONCQ | 4100 + ATA_HORKAGE_FIRMWARE_WARN }, 4101 + { "ST3320813AS", "SD17", ATA_HORKAGE_NONCQ | 4102 + ATA_HORKAGE_FIRMWARE_WARN }, 4103 + { "ST3320813AS", "SD18", ATA_HORKAGE_NONCQ | 4104 + ATA_HORKAGE_FIRMWARE_WARN }, 4105 + { "ST3320813AS", "SD19", ATA_HORKAGE_NONCQ | 4106 + ATA_HORKAGE_FIRMWARE_WARN }, 4107 + 4108 + { "ST3320613AS", "SD15", ATA_HORKAGE_NONCQ | 4109 + ATA_HORKAGE_FIRMWARE_WARN }, 4110 + { "ST3320613AS", "SD16", ATA_HORKAGE_NONCQ | 4111 + ATA_HORKAGE_FIRMWARE_WARN }, 4112 + { "ST3320613AS", "SD17", ATA_HORKAGE_NONCQ | 4113 + ATA_HORKAGE_FIRMWARE_WARN }, 4114 + { "ST3320613AS", "SD18", ATA_HORKAGE_NONCQ | 4115 + ATA_HORKAGE_FIRMWARE_WARN }, 4116 + { "ST3320613AS", "SD19", ATA_HORKAGE_NONCQ | 4064 4117 ATA_HORKAGE_FIRMWARE_WARN }, 4065 4118 4066 4119 /* Blacklist entries taken from Silicon Image 3124/3132
+9 -3
drivers/ata/pata_hpt366.c
··· 183 183 mask &= ~(0xF8 << ATA_SHIFT_UDMA); 184 184 if (hpt_dma_blacklisted(adev, "UDMA4", bad_ata66_4)) 185 185 mask &= ~(0xF0 << ATA_SHIFT_UDMA); 186 - } 186 + } else if (adev->class == ATA_DEV_ATAPI) 187 + mask &= ~(ATA_MASK_MWDMA | ATA_MASK_UDMA); 188 + 187 189 return ata_bmdma_mode_filter(adev, mask); 188 190 } 189 191 ··· 213 211 214 212 static int hpt36x_cable_detect(struct ata_port *ap) 215 213 { 216 - u8 ata66; 217 214 struct pci_dev *pdev = to_pci_dev(ap->host->dev); 215 + u8 ata66; 218 216 217 + /* 218 + * Each channel of pata_hpt366 occupies separate PCI function 219 + * as the primary channel and bit1 indicates the cable type. 220 + */ 219 221 pci_read_config_byte(pdev, 0x5A, &ata66); 220 - if (ata66 & (1 << ap->port_no)) 222 + if (ata66 & 2) 221 223 return ATA_CBL_PATA40; 222 224 return ATA_CBL_PATA80; 223 225 }