diff options
author | Jiri Kosina <jkosina@suse.cz> | 2010-04-22 20:08:44 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2010-04-22 20:08:44 -0400 |
commit | 6c9468e9eb1252eaefd94ce7f06e1be9b0b641b1 (patch) | |
tree | 797676a336b050bfa1ef879377c07e541b9075d6 /drivers/ata | |
parent | 4cb3ca7cd7e2cae8d1daf5345ec99a1e8502cf3f (diff) | |
parent | c81eddb0e3728661d1585fbc564449c94165cc36 (diff) |
Merge branch 'master' into for-next
Diffstat (limited to 'drivers/ata')
31 files changed, 171 insertions, 54 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 6bd930b93bcc..5326af28a410 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <linux/dma-mapping.h> | 42 | #include <linux/dma-mapping.h> |
43 | #include <linux/device.h> | 43 | #include <linux/device.h> |
44 | #include <linux/dmi.h> | 44 | #include <linux/dmi.h> |
45 | #include <linux/gfp.h> | ||
45 | #include <scsi/scsi_host.h> | 46 | #include <scsi/scsi_host.h> |
46 | #include <scsi/scsi_cmnd.h> | 47 | #include <scsi/scsi_cmnd.h> |
47 | #include <linux/libata.h> | 48 | #include <linux/libata.h> |
@@ -641,6 +642,21 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
641 | { PCI_VDEVICE(NVIDIA, 0x055a), board_ahci_yesncq }, /* MCP67 */ | 642 | { PCI_VDEVICE(NVIDIA, 0x055a), board_ahci_yesncq }, /* MCP67 */ |
642 | { PCI_VDEVICE(NVIDIA, 0x055b), board_ahci_yesncq }, /* MCP67 */ | 643 | { PCI_VDEVICE(NVIDIA, 0x055b), board_ahci_yesncq }, /* MCP67 */ |
643 | { PCI_VDEVICE(NVIDIA, 0x0580), board_ahci_yesncq }, /* Linux ID */ | 644 | { PCI_VDEVICE(NVIDIA, 0x0580), board_ahci_yesncq }, /* Linux ID */ |
645 | { PCI_VDEVICE(NVIDIA, 0x0581), board_ahci_yesncq }, /* Linux ID */ | ||
646 | { PCI_VDEVICE(NVIDIA, 0x0582), board_ahci_yesncq }, /* Linux ID */ | ||
647 | { PCI_VDEVICE(NVIDIA, 0x0583), board_ahci_yesncq }, /* Linux ID */ | ||
648 | { PCI_VDEVICE(NVIDIA, 0x0584), board_ahci_yesncq }, /* Linux ID */ | ||
649 | { PCI_VDEVICE(NVIDIA, 0x0585), board_ahci_yesncq }, /* Linux ID */ | ||
650 | { PCI_VDEVICE(NVIDIA, 0x0586), board_ahci_yesncq }, /* Linux ID */ | ||
651 | { PCI_VDEVICE(NVIDIA, 0x0587), board_ahci_yesncq }, /* Linux ID */ | ||
652 | { PCI_VDEVICE(NVIDIA, 0x0588), board_ahci_yesncq }, /* Linux ID */ | ||
653 | { PCI_VDEVICE(NVIDIA, 0x0589), board_ahci_yesncq }, /* Linux ID */ | ||
654 | { PCI_VDEVICE(NVIDIA, 0x058a), board_ahci_yesncq }, /* Linux ID */ | ||
655 | { PCI_VDEVICE(NVIDIA, 0x058b), board_ahci_yesncq }, /* Linux ID */ | ||
656 | { PCI_VDEVICE(NVIDIA, 0x058c), board_ahci_yesncq }, /* Linux ID */ | ||
657 | { PCI_VDEVICE(NVIDIA, 0x058d), board_ahci_yesncq }, /* Linux ID */ | ||
658 | { PCI_VDEVICE(NVIDIA, 0x058e), board_ahci_yesncq }, /* Linux ID */ | ||
659 | { PCI_VDEVICE(NVIDIA, 0x058f), board_ahci_yesncq }, /* Linux ID */ | ||
644 | { PCI_VDEVICE(NVIDIA, 0x07f0), board_ahci_yesncq }, /* MCP73 */ | 660 | { PCI_VDEVICE(NVIDIA, 0x07f0), board_ahci_yesncq }, /* MCP73 */ |
645 | { PCI_VDEVICE(NVIDIA, 0x07f1), board_ahci_yesncq }, /* MCP73 */ | 661 | { PCI_VDEVICE(NVIDIA, 0x07f1), board_ahci_yesncq }, /* MCP73 */ |
646 | { PCI_VDEVICE(NVIDIA, 0x07f2), board_ahci_yesncq }, /* MCP73 */ | 662 | { PCI_VDEVICE(NVIDIA, 0x07f2), board_ahci_yesncq }, /* MCP73 */ |
@@ -2263,7 +2279,7 @@ static void ahci_port_intr(struct ata_port *ap) | |||
2263 | struct ahci_port_priv *pp = ap->private_data; | 2279 | struct ahci_port_priv *pp = ap->private_data; |
2264 | struct ahci_host_priv *hpriv = ap->host->private_data; | 2280 | struct ahci_host_priv *hpriv = ap->host->private_data; |
2265 | int resetting = !!(ap->pflags & ATA_PFLAG_RESETTING); | 2281 | int resetting = !!(ap->pflags & ATA_PFLAG_RESETTING); |
2266 | u32 status, qc_active; | 2282 | u32 status, qc_active = 0; |
2267 | int rc; | 2283 | int rc; |
2268 | 2284 | ||
2269 | status = readl(port_mmio + PORT_IRQ_STAT); | 2285 | status = readl(port_mmio + PORT_IRQ_STAT); |
@@ -2321,11 +2337,22 @@ static void ahci_port_intr(struct ata_port *ap) | |||
2321 | } | 2337 | } |
2322 | } | 2338 | } |
2323 | 2339 | ||
2324 | /* pp->active_link is valid iff any command is in flight */ | 2340 | /* pp->active_link is not reliable once FBS is enabled, both |
2325 | if (ap->qc_active && pp->active_link->sactive) | 2341 | * PORT_SCR_ACT and PORT_CMD_ISSUE should be checked because |
2326 | qc_active = readl(port_mmio + PORT_SCR_ACT); | 2342 | * NCQ and non-NCQ commands may be in flight at the same time. |
2327 | else | 2343 | */ |
2328 | qc_active = readl(port_mmio + PORT_CMD_ISSUE); | 2344 | if (pp->fbs_enabled) { |
2345 | if (ap->qc_active) { | ||
2346 | qc_active = readl(port_mmio + PORT_SCR_ACT); | ||
2347 | qc_active |= readl(port_mmio + PORT_CMD_ISSUE); | ||
2348 | } | ||
2349 | } else { | ||
2350 | /* pp->active_link is valid iff any command is in flight */ | ||
2351 | if (ap->qc_active && pp->active_link->sactive) | ||
2352 | qc_active = readl(port_mmio + PORT_SCR_ACT); | ||
2353 | else | ||
2354 | qc_active = readl(port_mmio + PORT_CMD_ISSUE); | ||
2355 | } | ||
2329 | 2356 | ||
2330 | rc = ata_qc_complete_multiple(ap, qc_active); | 2357 | rc = ata_qc_complete_multiple(ap, qc_active); |
2331 | 2358 | ||
@@ -3022,6 +3049,14 @@ static bool ahci_broken_suspend(struct pci_dev *pdev) | |||
3022 | * On HP dv[4-6] and HDX18 with earlier BIOSen, link | 3049 | * On HP dv[4-6] and HDX18 with earlier BIOSen, link |
3023 | * to the harddisk doesn't become online after | 3050 | * to the harddisk doesn't become online after |
3024 | * resuming from STR. Warn and fail suspend. | 3051 | * resuming from STR. Warn and fail suspend. |
3052 | * | ||
3053 | * http://bugzilla.kernel.org/show_bug.cgi?id=12276 | ||
3054 | * | ||
3055 | * Use dates instead of versions to match as HP is | ||
3056 | * apparently recycling both product and version | ||
3057 | * strings. | ||
3058 | * | ||
3059 | * http://bugzilla.kernel.org/show_bug.cgi?id=15462 | ||
3025 | */ | 3060 | */ |
3026 | { | 3061 | { |
3027 | .ident = "dv4", | 3062 | .ident = "dv4", |
@@ -3030,7 +3065,7 @@ static bool ahci_broken_suspend(struct pci_dev *pdev) | |||
3030 | DMI_MATCH(DMI_PRODUCT_NAME, | 3065 | DMI_MATCH(DMI_PRODUCT_NAME, |
3031 | "HP Pavilion dv4 Notebook PC"), | 3066 | "HP Pavilion dv4 Notebook PC"), |
3032 | }, | 3067 | }, |
3033 | .driver_data = "F.30", /* cutoff BIOS version */ | 3068 | .driver_data = "20090105", /* F.30 */ |
3034 | }, | 3069 | }, |
3035 | { | 3070 | { |
3036 | .ident = "dv5", | 3071 | .ident = "dv5", |
@@ -3039,7 +3074,7 @@ static bool ahci_broken_suspend(struct pci_dev *pdev) | |||
3039 | DMI_MATCH(DMI_PRODUCT_NAME, | 3074 | DMI_MATCH(DMI_PRODUCT_NAME, |
3040 | "HP Pavilion dv5 Notebook PC"), | 3075 | "HP Pavilion dv5 Notebook PC"), |
3041 | }, | 3076 | }, |
3042 | .driver_data = "F.16", /* cutoff BIOS version */ | 3077 | .driver_data = "20090506", /* F.16 */ |
3043 | }, | 3078 | }, |
3044 | { | 3079 | { |
3045 | .ident = "dv6", | 3080 | .ident = "dv6", |
@@ -3048,7 +3083,7 @@ static bool ahci_broken_suspend(struct pci_dev *pdev) | |||
3048 | DMI_MATCH(DMI_PRODUCT_NAME, | 3083 | DMI_MATCH(DMI_PRODUCT_NAME, |
3049 | "HP Pavilion dv6 Notebook PC"), | 3084 | "HP Pavilion dv6 Notebook PC"), |
3050 | }, | 3085 | }, |
3051 | .driver_data = "F.21", /* cutoff BIOS version */ | 3086 | .driver_data = "20090423", /* F.21 */ |
3052 | }, | 3087 | }, |
3053 | { | 3088 | { |
3054 | .ident = "HDX18", | 3089 | .ident = "HDX18", |
@@ -3057,7 +3092,7 @@ static bool ahci_broken_suspend(struct pci_dev *pdev) | |||
3057 | DMI_MATCH(DMI_PRODUCT_NAME, | 3092 | DMI_MATCH(DMI_PRODUCT_NAME, |
3058 | "HP HDX18 Notebook PC"), | 3093 | "HP HDX18 Notebook PC"), |
3059 | }, | 3094 | }, |
3060 | .driver_data = "F.23", /* cutoff BIOS version */ | 3095 | .driver_data = "20090430", /* F.23 */ |
3061 | }, | 3096 | }, |
3062 | /* | 3097 | /* |
3063 | * Acer eMachines G725 has the same problem. BIOS | 3098 | * Acer eMachines G725 has the same problem. BIOS |
@@ -3065,6 +3100,8 @@ static bool ahci_broken_suspend(struct pci_dev *pdev) | |||
3065 | * work. Inbetween, there are V1.06, V2.06 and V3.03 | 3100 | * work. Inbetween, there are V1.06, V2.06 and V3.03 |
3066 | * that we don't have much idea about. For now, | 3101 | * that we don't have much idea about. For now, |
3067 | * blacklist anything older than V3.04. | 3102 | * blacklist anything older than V3.04. |
3103 | * | ||
3104 | * http://bugzilla.kernel.org/show_bug.cgi?id=15104 | ||
3068 | */ | 3105 | */ |
3069 | { | 3106 | { |
3070 | .ident = "G725", | 3107 | .ident = "G725", |
@@ -3072,19 +3109,21 @@ static bool ahci_broken_suspend(struct pci_dev *pdev) | |||
3072 | DMI_MATCH(DMI_SYS_VENDOR, "eMachines"), | 3109 | DMI_MATCH(DMI_SYS_VENDOR, "eMachines"), |
3073 | DMI_MATCH(DMI_PRODUCT_NAME, "eMachines G725"), | 3110 | DMI_MATCH(DMI_PRODUCT_NAME, "eMachines G725"), |
3074 | }, | 3111 | }, |
3075 | .driver_data = "V3.04", /* cutoff BIOS version */ | 3112 | .driver_data = "20091216", /* V3.04 */ |
3076 | }, | 3113 | }, |
3077 | { } /* terminate list */ | 3114 | { } /* terminate list */ |
3078 | }; | 3115 | }; |
3079 | const struct dmi_system_id *dmi = dmi_first_match(sysids); | 3116 | const struct dmi_system_id *dmi = dmi_first_match(sysids); |
3080 | const char *ver; | 3117 | int year, month, date; |
3118 | char buf[9]; | ||
3081 | 3119 | ||
3082 | if (!dmi || pdev->bus->number || pdev->devfn != PCI_DEVFN(0x1f, 2)) | 3120 | if (!dmi || pdev->bus->number || pdev->devfn != PCI_DEVFN(0x1f, 2)) |
3083 | return false; | 3121 | return false; |
3084 | 3122 | ||
3085 | ver = dmi_get_system_info(DMI_BIOS_VERSION); | 3123 | dmi_get_date(DMI_BIOS_DATE, &year, &month, &date); |
3124 | snprintf(buf, sizeof(buf), "%04d%02d%02d", year, month, date); | ||
3086 | 3125 | ||
3087 | return !ver || strcmp(ver, dmi->driver_data) < 0; | 3126 | return strcmp(buf, dmi->driver_data) < 0; |
3088 | } | 3127 | } |
3089 | 3128 | ||
3090 | static bool ahci_broken_online(struct pci_dev *pdev) | 3129 | static bool ahci_broken_online(struct pci_dev *pdev) |
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index b1cb8af6af1c..ec52fc618763 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c | |||
@@ -90,6 +90,7 @@ | |||
90 | #include <linux/blkdev.h> | 90 | #include <linux/blkdev.h> |
91 | #include <linux/delay.h> | 91 | #include <linux/delay.h> |
92 | #include <linux/device.h> | 92 | #include <linux/device.h> |
93 | #include <linux/gfp.h> | ||
93 | #include <scsi/scsi_host.h> | 94 | #include <scsi/scsi_host.h> |
94 | #include <linux/libata.h> | 95 | #include <linux/libata.h> |
95 | #include <linux/dmi.h> | 96 | #include <linux/dmi.h> |
diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c index 292fdbc0431a..7b5eea7e01dc 100644 --- a/drivers/ata/libata-acpi.c +++ b/drivers/ata/libata-acpi.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/acpi.h> | 15 | #include <linux/acpi.h> |
16 | #include <linux/libata.h> | 16 | #include <linux/libata.h> |
17 | #include <linux/pci.h> | 17 | #include <linux/pci.h> |
18 | #include <linux/slab.h> | ||
18 | #include <scsi/scsi_device.h> | 19 | #include <scsi/scsi_device.h> |
19 | #include "libata.h" | 20 | #include "libata.h" |
20 | 21 | ||
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 4a28420efff2..49cffb6094a3 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -58,6 +58,7 @@ | |||
58 | #include <linux/io.h> | 58 | #include <linux/io.h> |
59 | #include <linux/async.h> | 59 | #include <linux/async.h> |
60 | #include <linux/log2.h> | 60 | #include <linux/log2.h> |
61 | #include <linux/slab.h> | ||
61 | #include <scsi/scsi.h> | 62 | #include <scsi/scsi.h> |
62 | #include <scsi/scsi_cmnd.h> | 63 | #include <scsi/scsi_cmnd.h> |
63 | #include <scsi/scsi_host.h> | 64 | #include <scsi/scsi_host.h> |
@@ -1493,6 +1494,7 @@ static int ata_hpa_resize(struct ata_device *dev) | |||
1493 | { | 1494 | { |
1494 | struct ata_eh_context *ehc = &dev->link->eh_context; | 1495 | struct ata_eh_context *ehc = &dev->link->eh_context; |
1495 | int print_info = ehc->i.flags & ATA_EHI_PRINTINFO; | 1496 | int print_info = ehc->i.flags & ATA_EHI_PRINTINFO; |
1497 | bool unlock_hpa = ata_ignore_hpa || dev->flags & ATA_DFLAG_UNLOCK_HPA; | ||
1496 | u64 sectors = ata_id_n_sectors(dev->id); | 1498 | u64 sectors = ata_id_n_sectors(dev->id); |
1497 | u64 native_sectors; | 1499 | u64 native_sectors; |
1498 | int rc; | 1500 | int rc; |
@@ -1509,7 +1511,7 @@ static int ata_hpa_resize(struct ata_device *dev) | |||
1509 | /* If device aborted the command or HPA isn't going to | 1511 | /* If device aborted the command or HPA isn't going to |
1510 | * be unlocked, skip HPA resizing. | 1512 | * be unlocked, skip HPA resizing. |
1511 | */ | 1513 | */ |
1512 | if (rc == -EACCES || !ata_ignore_hpa) { | 1514 | if (rc == -EACCES || !unlock_hpa) { |
1513 | ata_dev_printk(dev, KERN_WARNING, "HPA support seems " | 1515 | ata_dev_printk(dev, KERN_WARNING, "HPA support seems " |
1514 | "broken, skipping HPA handling\n"); | 1516 | "broken, skipping HPA handling\n"); |
1515 | dev->horkage |= ATA_HORKAGE_BROKEN_HPA; | 1517 | dev->horkage |= ATA_HORKAGE_BROKEN_HPA; |
@@ -1524,7 +1526,7 @@ static int ata_hpa_resize(struct ata_device *dev) | |||
1524 | dev->n_native_sectors = native_sectors; | 1526 | dev->n_native_sectors = native_sectors; |
1525 | 1527 | ||
1526 | /* nothing to do? */ | 1528 | /* nothing to do? */ |
1527 | if (native_sectors <= sectors || !ata_ignore_hpa) { | 1529 | if (native_sectors <= sectors || !unlock_hpa) { |
1528 | if (!print_info || native_sectors == sectors) | 1530 | if (!print_info || native_sectors == sectors) |
1529 | return 0; | 1531 | return 0; |
1530 | 1532 | ||
@@ -4185,36 +4187,51 @@ int ata_dev_revalidate(struct ata_device *dev, unsigned int new_class, | |||
4185 | goto fail; | 4187 | goto fail; |
4186 | 4188 | ||
4187 | /* verify n_sectors hasn't changed */ | 4189 | /* verify n_sectors hasn't changed */ |
4188 | if (dev->class == ATA_DEV_ATA && n_sectors && | 4190 | if (dev->class != ATA_DEV_ATA || !n_sectors || |
4189 | dev->n_sectors != n_sectors) { | 4191 | dev->n_sectors == n_sectors) |
4190 | ata_dev_printk(dev, KERN_WARNING, "n_sectors mismatch " | 4192 | return 0; |
4191 | "%llu != %llu\n", | 4193 | |
4192 | (unsigned long long)n_sectors, | 4194 | /* n_sectors has changed */ |
4193 | (unsigned long long)dev->n_sectors); | 4195 | ata_dev_printk(dev, KERN_WARNING, "n_sectors mismatch %llu != %llu\n", |
4194 | /* | 4196 | (unsigned long long)n_sectors, |
4195 | * Something could have caused HPA to be unlocked | 4197 | (unsigned long long)dev->n_sectors); |
4196 | * involuntarily. If n_native_sectors hasn't changed | 4198 | |
4197 | * and the new size matches it, keep the device. | 4199 | /* |
4198 | */ | 4200 | * Something could have caused HPA to be unlocked |
4199 | if (dev->n_native_sectors == n_native_sectors && | 4201 | * involuntarily. If n_native_sectors hasn't changed and the |
4200 | dev->n_sectors > n_sectors && | 4202 | * new size matches it, keep the device. |
4201 | dev->n_sectors == n_native_sectors) { | 4203 | */ |
4202 | ata_dev_printk(dev, KERN_WARNING, | 4204 | if (dev->n_native_sectors == n_native_sectors && |
4203 | "new n_sectors matches native, probably " | 4205 | dev->n_sectors > n_sectors && dev->n_sectors == n_native_sectors) { |
4204 | "late HPA unlock, continuing\n"); | 4206 | ata_dev_printk(dev, KERN_WARNING, |
4205 | /* keep using the old n_sectors */ | 4207 | "new n_sectors matches native, probably " |
4206 | dev->n_sectors = n_sectors; | 4208 | "late HPA unlock, continuing\n"); |
4207 | } else { | 4209 | /* keep using the old n_sectors */ |
4208 | /* restore original n_[native]_sectors and fail */ | 4210 | dev->n_sectors = n_sectors; |
4209 | dev->n_native_sectors = n_native_sectors; | 4211 | return 0; |
4210 | dev->n_sectors = n_sectors; | ||
4211 | rc = -ENODEV; | ||
4212 | goto fail; | ||
4213 | } | ||
4214 | } | 4212 | } |
4215 | 4213 | ||
4216 | return 0; | 4214 | /* |
4215 | * Some BIOSes boot w/o HPA but resume w/ HPA locked. Try | ||
4216 | * unlocking HPA in those cases. | ||
4217 | * | ||
4218 | * https://bugzilla.kernel.org/show_bug.cgi?id=15396 | ||
4219 | */ | ||
4220 | if (dev->n_native_sectors == n_native_sectors && | ||
4221 | dev->n_sectors < n_sectors && n_sectors == n_native_sectors && | ||
4222 | !(dev->horkage & ATA_HORKAGE_BROKEN_HPA)) { | ||
4223 | ata_dev_printk(dev, KERN_WARNING, | ||
4224 | "old n_sectors matches native, probably " | ||
4225 | "late HPA lock, will try to unlock HPA\n"); | ||
4226 | /* try unlocking HPA */ | ||
4227 | dev->flags |= ATA_DFLAG_UNLOCK_HPA; | ||
4228 | rc = -EIO; | ||
4229 | } else | ||
4230 | rc = -ENODEV; | ||
4217 | 4231 | ||
4232 | /* restore original n_[native_]sectors and fail */ | ||
4233 | dev->n_native_sectors = n_native_sectors; | ||
4234 | dev->n_sectors = n_sectors; | ||
4218 | fail: | 4235 | fail: |
4219 | ata_dev_printk(dev, KERN_ERR, "revalidation failed (errno=%d)\n", rc); | 4236 | ata_dev_printk(dev, KERN_ERR, "revalidation failed (errno=%d)\n", rc); |
4220 | return rc; | 4237 | return rc; |
@@ -4353,6 +4370,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { | |||
4353 | { "HTS541080G9SA00", "MB4OC60D", ATA_HORKAGE_NONCQ, }, | 4370 | { "HTS541080G9SA00", "MB4OC60D", ATA_HORKAGE_NONCQ, }, |
4354 | { "HTS541010G9SA00", "MBZOC60D", ATA_HORKAGE_NONCQ, }, | 4371 | { "HTS541010G9SA00", "MBZOC60D", ATA_HORKAGE_NONCQ, }, |
4355 | 4372 | ||
4373 | /* https://bugzilla.kernel.org/show_bug.cgi?id=15573 */ | ||
4374 | { "C300-CTFDDAC128MAG", "0001", ATA_HORKAGE_NONCQ, }, | ||
4375 | |||
4356 | /* devices which puke on READ_NATIVE_MAX */ | 4376 | /* devices which puke on READ_NATIVE_MAX */ |
4357 | { "HDS724040KLSA80", "KFAOA20N", ATA_HORKAGE_BROKEN_HPA, }, | 4377 | { "HDS724040KLSA80", "KFAOA20N", ATA_HORKAGE_BROKEN_HPA, }, |
4358 | { "WDC WD3200JD-00KLB0", "WD-WCAMR1130137", ATA_HORKAGE_BROKEN_HPA }, | 4378 | { "WDC WD3200JD-00KLB0", "WD-WCAMR1130137", ATA_HORKAGE_BROKEN_HPA }, |
diff --git a/drivers/ata/libata-pmp.c b/drivers/ata/libata-pmp.c index 51f0ffb78cbd..00305f41ed86 100644 --- a/drivers/ata/libata-pmp.c +++ b/drivers/ata/libata-pmp.c | |||
@@ -9,6 +9,7 @@ | |||
9 | 9 | ||
10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
11 | #include <linux/libata.h> | 11 | #include <linux/libata.h> |
12 | #include <linux/slab.h> | ||
12 | #include "libata.h" | 13 | #include "libata.h" |
13 | 14 | ||
14 | const struct ata_port_operations sata_pmp_port_ops = { | 15 | const struct ata_port_operations sata_pmp_port_ops = { |
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index bea003a24d27..0088cdeb0b1e 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c | |||
@@ -33,6 +33,7 @@ | |||
33 | * | 33 | * |
34 | */ | 34 | */ |
35 | 35 | ||
36 | #include <linux/slab.h> | ||
36 | #include <linux/kernel.h> | 37 | #include <linux/kernel.h> |
37 | #include <linux/blkdev.h> | 38 | #include <linux/blkdev.h> |
38 | #include <linux/spinlock.h> | 39 | #include <linux/spinlock.h> |
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 561dec2481cb..e3877b6843c9 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c | |||
@@ -33,6 +33,7 @@ | |||
33 | */ | 33 | */ |
34 | 34 | ||
35 | #include <linux/kernel.h> | 35 | #include <linux/kernel.h> |
36 | #include <linux/gfp.h> | ||
36 | #include <linux/pci.h> | 37 | #include <linux/pci.h> |
37 | #include <linux/libata.h> | 38 | #include <linux/libata.h> |
38 | #include <linux/highmem.h> | 39 | #include <linux/highmem.h> |
@@ -1667,6 +1668,7 @@ unsigned int ata_sff_host_intr(struct ata_port *ap, | |||
1667 | { | 1668 | { |
1668 | struct ata_eh_info *ehi = &ap->link.eh_info; | 1669 | struct ata_eh_info *ehi = &ap->link.eh_info; |
1669 | u8 status, host_stat = 0; | 1670 | u8 status, host_stat = 0; |
1671 | bool bmdma_stopped = false; | ||
1670 | 1672 | ||
1671 | VPRINTK("ata%u: protocol %d task_state %d\n", | 1673 | VPRINTK("ata%u: protocol %d task_state %d\n", |
1672 | ap->print_id, qc->tf.protocol, ap->hsm_task_state); | 1674 | ap->print_id, qc->tf.protocol, ap->hsm_task_state); |
@@ -1699,6 +1701,7 @@ unsigned int ata_sff_host_intr(struct ata_port *ap, | |||
1699 | 1701 | ||
1700 | /* before we do anything else, clear DMA-Start bit */ | 1702 | /* before we do anything else, clear DMA-Start bit */ |
1701 | ap->ops->bmdma_stop(qc); | 1703 | ap->ops->bmdma_stop(qc); |
1704 | bmdma_stopped = true; | ||
1702 | 1705 | ||
1703 | if (unlikely(host_stat & ATA_DMA_ERR)) { | 1706 | if (unlikely(host_stat & ATA_DMA_ERR)) { |
1704 | /* error when transfering data to/from memory */ | 1707 | /* error when transfering data to/from memory */ |
@@ -1716,8 +1719,14 @@ unsigned int ata_sff_host_intr(struct ata_port *ap, | |||
1716 | 1719 | ||
1717 | /* check main status, clearing INTRQ if needed */ | 1720 | /* check main status, clearing INTRQ if needed */ |
1718 | status = ata_sff_irq_status(ap); | 1721 | status = ata_sff_irq_status(ap); |
1719 | if (status & ATA_BUSY) | 1722 | if (status & ATA_BUSY) { |
1720 | goto idle_irq; | 1723 | if (bmdma_stopped) { |
1724 | /* BMDMA engine is already stopped, we're screwed */ | ||
1725 | qc->err_mask |= AC_ERR_HSM; | ||
1726 | ap->hsm_task_state = HSM_ST_ERR; | ||
1727 | } else | ||
1728 | goto idle_irq; | ||
1729 | } | ||
1721 | 1730 | ||
1722 | /* ack bmdma irq events */ | 1731 | /* ack bmdma irq events */ |
1723 | ap->ops->sff_irq_clear(ap); | 1732 | ap->ops->sff_irq_clear(ap); |
@@ -1762,13 +1771,16 @@ EXPORT_SYMBOL_GPL(ata_sff_host_intr); | |||
1762 | irqreturn_t ata_sff_interrupt(int irq, void *dev_instance) | 1771 | irqreturn_t ata_sff_interrupt(int irq, void *dev_instance) |
1763 | { | 1772 | { |
1764 | struct ata_host *host = dev_instance; | 1773 | struct ata_host *host = dev_instance; |
1774 | bool retried = false; | ||
1765 | unsigned int i; | 1775 | unsigned int i; |
1766 | unsigned int handled = 0, polling = 0; | 1776 | unsigned int handled, idle, polling; |
1767 | unsigned long flags; | 1777 | unsigned long flags; |
1768 | 1778 | ||
1769 | /* TODO: make _irqsave conditional on x86 PCI IDE legacy mode */ | 1779 | /* TODO: make _irqsave conditional on x86 PCI IDE legacy mode */ |
1770 | spin_lock_irqsave(&host->lock, flags); | 1780 | spin_lock_irqsave(&host->lock, flags); |
1771 | 1781 | ||
1782 | retry: | ||
1783 | handled = idle = polling = 0; | ||
1772 | for (i = 0; i < host->n_ports; i++) { | 1784 | for (i = 0; i < host->n_ports; i++) { |
1773 | struct ata_port *ap = host->ports[i]; | 1785 | struct ata_port *ap = host->ports[i]; |
1774 | struct ata_queued_cmd *qc; | 1786 | struct ata_queued_cmd *qc; |
@@ -1782,7 +1794,8 @@ irqreturn_t ata_sff_interrupt(int irq, void *dev_instance) | |||
1782 | handled |= ata_sff_host_intr(ap, qc); | 1794 | handled |= ata_sff_host_intr(ap, qc); |
1783 | else | 1795 | else |
1784 | polling |= 1 << i; | 1796 | polling |= 1 << i; |
1785 | } | 1797 | } else |
1798 | idle |= 1 << i; | ||
1786 | } | 1799 | } |
1787 | 1800 | ||
1788 | /* | 1801 | /* |
@@ -1790,7 +1803,9 @@ irqreturn_t ata_sff_interrupt(int irq, void *dev_instance) | |||
1790 | * asserting IRQ line, nobody cared will ensue. Check IRQ | 1803 | * asserting IRQ line, nobody cared will ensue. Check IRQ |
1791 | * pending status if available and clear spurious IRQ. | 1804 | * pending status if available and clear spurious IRQ. |
1792 | */ | 1805 | */ |
1793 | if (!handled) { | 1806 | if (!handled && !retried) { |
1807 | bool retry = false; | ||
1808 | |||
1794 | for (i = 0; i < host->n_ports; i++) { | 1809 | for (i = 0; i < host->n_ports; i++) { |
1795 | struct ata_port *ap = host->ports[i]; | 1810 | struct ata_port *ap = host->ports[i]; |
1796 | 1811 | ||
@@ -1801,12 +1816,23 @@ irqreturn_t ata_sff_interrupt(int irq, void *dev_instance) | |||
1801 | !ap->ops->sff_irq_check(ap)) | 1816 | !ap->ops->sff_irq_check(ap)) |
1802 | continue; | 1817 | continue; |
1803 | 1818 | ||
1804 | if (printk_ratelimit()) | 1819 | if (idle & (1 << i)) { |
1805 | ata_port_printk(ap, KERN_INFO, | 1820 | ap->ops->sff_check_status(ap); |
1806 | "clearing spurious IRQ\n"); | 1821 | ap->ops->sff_irq_clear(ap); |
1822 | } else { | ||
1823 | /* clear INTRQ and check if BUSY cleared */ | ||
1824 | if (!(ap->ops->sff_check_status(ap) & ATA_BUSY)) | ||
1825 | retry |= true; | ||
1826 | /* | ||
1827 | * With command in flight, we can't do | ||
1828 | * sff_irq_clear() w/o racing with completion. | ||
1829 | */ | ||
1830 | } | ||
1831 | } | ||
1807 | 1832 | ||
1808 | ap->ops->sff_check_status(ap); | 1833 | if (retry) { |
1809 | ap->ops->sff_irq_clear(ap); | 1834 | retried = true; |
1835 | goto retry; | ||
1810 | } | 1836 | } |
1811 | } | 1837 | } |
1812 | 1838 | ||
diff --git a/drivers/ata/pata_acpi.c b/drivers/ata/pata_acpi.c index 8e5e13210426..1ea2be0f4b94 100644 --- a/drivers/ata/pata_acpi.c +++ b/drivers/ata/pata_acpi.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/blkdev.h> | 11 | #include <linux/blkdev.h> |
12 | #include <linux/delay.h> | 12 | #include <linux/delay.h> |
13 | #include <linux/device.h> | 13 | #include <linux/device.h> |
14 | #include <linux/gfp.h> | ||
14 | #include <scsi/scsi_host.h> | 15 | #include <scsi/scsi_host.h> |
15 | #include <acpi/acpi_bus.h> | 16 | #include <acpi/acpi_bus.h> |
16 | 17 | ||
diff --git a/drivers/ata/pata_at32.c b/drivers/ata/pata_at32.c index 5c129f99a7e3..66ce6a526f27 100644 --- a/drivers/ata/pata_at32.c +++ b/drivers/ata/pata_at32.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/delay.h> | 18 | #include <linux/delay.h> |
19 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
20 | #include <linux/irq.h> | 20 | #include <linux/irq.h> |
21 | #include <linux/slab.h> | ||
21 | #include <scsi/scsi_host.h> | 22 | #include <scsi/scsi_host.h> |
22 | #include <linux/ata.h> | 23 | #include <linux/ata.h> |
23 | #include <linux/libata.h> | 24 | #include <linux/libata.h> |
diff --git a/drivers/ata/pata_at91.c b/drivers/ata/pata_at91.c index 376dd380b43c..c6a946aa252c 100644 --- a/drivers/ata/pata_at91.c +++ b/drivers/ata/pata_at91.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/blkdev.h> | 21 | #include <linux/blkdev.h> |
22 | #include <linux/gfp.h> | ||
22 | #include <scsi/scsi_host.h> | 23 | #include <scsi/scsi_host.h> |
23 | #include <linux/ata.h> | 24 | #include <linux/ata.h> |
24 | #include <linux/clk.h> | 25 | #include <linux/clk.h> |
diff --git a/drivers/ata/pata_atp867x.c b/drivers/ata/pata_atp867x.c index 6fe7ded40c6a..bb6e0746e07d 100644 --- a/drivers/ata/pata_atp867x.c +++ b/drivers/ata/pata_atp867x.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/blkdev.h> | 33 | #include <linux/blkdev.h> |
34 | #include <linux/delay.h> | 34 | #include <linux/delay.h> |
35 | #include <linux/device.h> | 35 | #include <linux/device.h> |
36 | #include <linux/gfp.h> | ||
36 | #include <scsi/scsi_host.h> | 37 | #include <scsi/scsi_host.h> |
37 | #include <linux/libata.h> | 38 | #include <linux/libata.h> |
38 | 39 | ||
diff --git a/drivers/ata/pata_cmd640.c b/drivers/ata/pata_cmd640.c index 6cd5d5dd9e3b..45896b3c6538 100644 --- a/drivers/ata/pata_cmd640.c +++ b/drivers/ata/pata_cmd640.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/blkdev.h> | 19 | #include <linux/blkdev.h> |
20 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
21 | #include <linux/gfp.h> | ||
21 | #include <scsi/scsi_host.h> | 22 | #include <scsi/scsi_host.h> |
22 | #include <linux/libata.h> | 23 | #include <linux/libata.h> |
23 | 24 | ||
diff --git a/drivers/ata/pata_icside.c b/drivers/ata/pata_icside.c index b663b7ffae4b..fa812e206eeb 100644 --- a/drivers/ata/pata_icside.c +++ b/drivers/ata/pata_icside.c | |||
@@ -2,6 +2,7 @@ | |||
2 | #include <linux/module.h> | 2 | #include <linux/module.h> |
3 | #include <linux/init.h> | 3 | #include <linux/init.h> |
4 | #include <linux/blkdev.h> | 4 | #include <linux/blkdev.h> |
5 | #include <linux/gfp.h> | ||
5 | #include <scsi/scsi_host.h> | 6 | #include <scsi/scsi_host.h> |
6 | #include <linux/ata.h> | 7 | #include <linux/ata.h> |
7 | #include <linux/libata.h> | 8 | #include <linux/libata.h> |
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c index 9bde1cb5f981..5cb286fd839e 100644 --- a/drivers/ata/pata_it821x.c +++ b/drivers/ata/pata_it821x.c | |||
@@ -75,6 +75,7 @@ | |||
75 | #include <linux/init.h> | 75 | #include <linux/init.h> |
76 | #include <linux/blkdev.h> | 76 | #include <linux/blkdev.h> |
77 | #include <linux/delay.h> | 77 | #include <linux/delay.h> |
78 | #include <linux/slab.h> | ||
78 | #include <scsi/scsi_host.h> | 79 | #include <scsi/scsi_host.h> |
79 | #include <linux/libata.h> | 80 | #include <linux/libata.h> |
80 | 81 | ||
diff --git a/drivers/ata/pata_macio.c b/drivers/ata/pata_macio.c index 4cc7bbd10ec2..211b6438b3a0 100644 --- a/drivers/ata/pata_macio.c +++ b/drivers/ata/pata_macio.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/pmu.h> | 21 | #include <linux/pmu.h> |
22 | #include <linux/scatterlist.h> | 22 | #include <linux/scatterlist.h> |
23 | #include <linux/of.h> | 23 | #include <linux/of.h> |
24 | #include <linux/gfp.h> | ||
24 | 25 | ||
25 | #include <scsi/scsi.h> | 26 | #include <scsi/scsi.h> |
26 | #include <scsi/scsi_host.h> | 27 | #include <scsi/scsi_host.h> |
diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c index 2bc2dbe30e8f..9f5b053611dd 100644 --- a/drivers/ata/pata_mpc52xx.c +++ b/drivers/ata/pata_mpc52xx.c | |||
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
19 | #include <linux/slab.h> | 19 | #include <linux/gfp.h> |
20 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
21 | #include <linux/libata.h> | 21 | #include <linux/libata.h> |
22 | #include <linux/of_platform.h> | 22 | #include <linux/of_platform.h> |
diff --git a/drivers/ata/pata_octeon_cf.c b/drivers/ata/pata_octeon_cf.c index 37ef416c1242..005a44483a7b 100644 --- a/drivers/ata/pata_octeon_cf.c +++ b/drivers/ata/pata_octeon_cf.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/libata.h> | 14 | #include <linux/libata.h> |
15 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
16 | #include <linux/slab.h> | ||
16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
17 | #include <linux/workqueue.h> | 18 | #include <linux/workqueue.h> |
18 | #include <scsi/scsi_host.h> | 19 | #include <scsi/scsi_host.h> |
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c index 147de2fd66d2..3c3172d3c34e 100644 --- a/drivers/ata/pata_pcmcia.c +++ b/drivers/ata/pata_pcmcia.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <linux/blkdev.h> | 30 | #include <linux/blkdev.h> |
31 | #include <linux/delay.h> | 31 | #include <linux/delay.h> |
32 | #include <linux/slab.h> | ||
32 | #include <scsi/scsi_host.h> | 33 | #include <scsi/scsi_host.h> |
33 | #include <linux/ata.h> | 34 | #include <linux/ata.h> |
34 | #include <linux/libata.h> | 35 | #include <linux/libata.h> |
diff --git a/drivers/ata/pata_rb532_cf.c b/drivers/ata/pata_rb532_cf.c index 45f1e10f917b..0ffd631000b7 100644 --- a/drivers/ata/pata_rb532_cf.c +++ b/drivers/ata/pata_rb532_cf.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * | 19 | * |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/gfp.h> | ||
22 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
23 | #include <linux/module.h> | 24 | #include <linux/module.h> |
24 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
diff --git a/drivers/ata/pata_rdc.c b/drivers/ata/pata_rdc.c index 237a24d41a2d..37092cfd7bc6 100644 --- a/drivers/ata/pata_rdc.c +++ b/drivers/ata/pata_rdc.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/blkdev.h> | 28 | #include <linux/blkdev.h> |
29 | #include <linux/delay.h> | 29 | #include <linux/delay.h> |
30 | #include <linux/device.h> | 30 | #include <linux/device.h> |
31 | #include <linux/gfp.h> | ||
31 | #include <scsi/scsi_host.h> | 32 | #include <scsi/scsi_host.h> |
32 | #include <linux/libata.h> | 33 | #include <linux/libata.h> |
33 | #include <linux/dmi.h> | 34 | #include <linux/dmi.h> |
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index 3059ec017de3..741e7cb69d8c 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c | |||
@@ -58,6 +58,7 @@ | |||
58 | #include <linux/init.h> | 58 | #include <linux/init.h> |
59 | #include <linux/blkdev.h> | 59 | #include <linux/blkdev.h> |
60 | #include <linux/delay.h> | 60 | #include <linux/delay.h> |
61 | #include <linux/gfp.h> | ||
61 | #include <scsi/scsi_host.h> | 62 | #include <scsi/scsi_host.h> |
62 | #include <linux/libata.h> | 63 | #include <linux/libata.h> |
63 | #include <linux/dmi.h> | 64 | #include <linux/dmi.h> |
@@ -576,6 +577,10 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
576 | u8 rev = isa->revision; | 577 | u8 rev = isa->revision; |
577 | pci_dev_put(isa); | 578 | pci_dev_put(isa); |
578 | 579 | ||
580 | if ((id->device == 0x0415 || id->device == 0x3164) && | ||
581 | (config->id != id->device)) | ||
582 | continue; | ||
583 | |||
579 | if (rev >= config->rev_min && rev <= config->rev_max) | 584 | if (rev >= config->rev_min && rev <= config->rev_max) |
580 | break; | 585 | break; |
581 | } | 586 | } |
@@ -677,6 +682,7 @@ static const struct pci_device_id via[] = { | |||
677 | { PCI_VDEVICE(VIA, 0x3164), }, | 682 | { PCI_VDEVICE(VIA, 0x3164), }, |
678 | { PCI_VDEVICE(VIA, 0x5324), }, | 683 | { PCI_VDEVICE(VIA, 0x5324), }, |
679 | { PCI_VDEVICE(VIA, 0xC409), VIA_IDFLAG_SINGLE }, | 684 | { PCI_VDEVICE(VIA, 0xC409), VIA_IDFLAG_SINGLE }, |
685 | { PCI_VDEVICE(VIA, 0x9001), VIA_IDFLAG_SINGLE }, | ||
680 | 686 | ||
681 | { }, | 687 | { }, |
682 | }; | 688 | }; |
diff --git a/drivers/ata/pdc_adma.c b/drivers/ata/pdc_adma.c index 6c65b0776a2c..5904cfdb8dbe 100644 --- a/drivers/ata/pdc_adma.c +++ b/drivers/ata/pdc_adma.c | |||
@@ -34,6 +34,7 @@ | |||
34 | 34 | ||
35 | #include <linux/kernel.h> | 35 | #include <linux/kernel.h> |
36 | #include <linux/module.h> | 36 | #include <linux/module.h> |
37 | #include <linux/gfp.h> | ||
37 | #include <linux/pci.h> | 38 | #include <linux/pci.h> |
38 | #include <linux/init.h> | 39 | #include <linux/init.h> |
39 | #include <linux/blkdev.h> | 40 | #include <linux/blkdev.h> |
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c index ce4136eea08f..a69192b38b43 100644 --- a/drivers/ata/sata_fsl.c +++ b/drivers/ata/sata_fsl.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/slab.h> | ||
21 | 22 | ||
22 | #include <scsi/scsi_host.h> | 23 | #include <scsi/scsi_host.h> |
23 | #include <scsi/scsi_cmnd.h> | 24 | #include <scsi/scsi_cmnd.h> |
diff --git a/drivers/ata/sata_inic162x.c b/drivers/ata/sata_inic162x.c index 4406902b4293..27dc6c86a4cd 100644 --- a/drivers/ata/sata_inic162x.c +++ b/drivers/ata/sata_inic162x.c | |||
@@ -39,6 +39,7 @@ | |||
39 | * happy to assist. | 39 | * happy to assist. |
40 | */ | 40 | */ |
41 | 41 | ||
42 | #include <linux/gfp.h> | ||
42 | #include <linux/kernel.h> | 43 | #include <linux/kernel.h> |
43 | #include <linux/module.h> | 44 | #include <linux/module.h> |
44 | #include <linux/pci.h> | 45 | #include <linux/pci.h> |
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index df8ee325d3ca..71cc0d42f9e1 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
@@ -64,6 +64,7 @@ | |||
64 | #include <linux/ata_platform.h> | 64 | #include <linux/ata_platform.h> |
65 | #include <linux/mbus.h> | 65 | #include <linux/mbus.h> |
66 | #include <linux/bitops.h> | 66 | #include <linux/bitops.h> |
67 | #include <linux/gfp.h> | ||
67 | #include <scsi/scsi_host.h> | 68 | #include <scsi/scsi_host.h> |
68 | #include <scsi/scsi_cmnd.h> | 69 | #include <scsi/scsi_cmnd.h> |
69 | #include <scsi/scsi_device.h> | 70 | #include <scsi/scsi_device.h> |
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c index 684fe04dbbb7..2a98b09ab735 100644 --- a/drivers/ata/sata_nv.c +++ b/drivers/ata/sata_nv.c | |||
@@ -38,6 +38,7 @@ | |||
38 | 38 | ||
39 | #include <linux/kernel.h> | 39 | #include <linux/kernel.h> |
40 | #include <linux/module.h> | 40 | #include <linux/module.h> |
41 | #include <linux/gfp.h> | ||
41 | #include <linux/pci.h> | 42 | #include <linux/pci.h> |
42 | #include <linux/init.h> | 43 | #include <linux/init.h> |
43 | #include <linux/blkdev.h> | 44 | #include <linux/blkdev.h> |
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c index 63306285c843..5356ec00d2b4 100644 --- a/drivers/ata/sata_promise.c +++ b/drivers/ata/sata_promise.c | |||
@@ -33,6 +33,7 @@ | |||
33 | 33 | ||
34 | #include <linux/kernel.h> | 34 | #include <linux/kernel.h> |
35 | #include <linux/module.h> | 35 | #include <linux/module.h> |
36 | #include <linux/gfp.h> | ||
36 | #include <linux/pci.h> | 37 | #include <linux/pci.h> |
37 | #include <linux/init.h> | 38 | #include <linux/init.h> |
38 | #include <linux/blkdev.h> | 39 | #include <linux/blkdev.h> |
diff --git a/drivers/ata/sata_qstor.c b/drivers/ata/sata_qstor.c index 326c0cfc29b3..92ba45e6689b 100644 --- a/drivers/ata/sata_qstor.c +++ b/drivers/ata/sata_qstor.c | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include <linux/kernel.h> | 30 | #include <linux/kernel.h> |
31 | #include <linux/module.h> | 31 | #include <linux/module.h> |
32 | #include <linux/gfp.h> | ||
32 | #include <linux/pci.h> | 33 | #include <linux/pci.h> |
33 | #include <linux/init.h> | 34 | #include <linux/init.h> |
34 | #include <linux/blkdev.h> | 35 | #include <linux/blkdev.h> |
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 1370df6c420c..433b6b89c795 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c | |||
@@ -19,6 +19,7 @@ | |||
19 | 19 | ||
20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
22 | #include <linux/gfp.h> | ||
22 | #include <linux/pci.h> | 23 | #include <linux/pci.h> |
23 | #include <linux/blkdev.h> | 24 | #include <linux/blkdev.h> |
24 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
diff --git a/drivers/ata/sata_sx4.c b/drivers/ata/sata_sx4.c index bbcf970068ad..232468f2ea90 100644 --- a/drivers/ata/sata_sx4.c +++ b/drivers/ata/sata_sx4.c | |||
@@ -81,6 +81,7 @@ | |||
81 | #include <linux/kernel.h> | 81 | #include <linux/kernel.h> |
82 | #include <linux/module.h> | 82 | #include <linux/module.h> |
83 | #include <linux/pci.h> | 83 | #include <linux/pci.h> |
84 | #include <linux/slab.h> | ||
84 | #include <linux/init.h> | 85 | #include <linux/init.h> |
85 | #include <linux/blkdev.h> | 86 | #include <linux/blkdev.h> |
86 | #include <linux/delay.h> | 87 | #include <linux/delay.h> |
diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c index e5bff47e8aa1..011e098590d1 100644 --- a/drivers/ata/sata_uli.c +++ b/drivers/ata/sata_uli.c | |||
@@ -26,6 +26,7 @@ | |||
26 | 26 | ||
27 | #include <linux/kernel.h> | 27 | #include <linux/kernel.h> |
28 | #include <linux/module.h> | 28 | #include <linux/module.h> |
29 | #include <linux/gfp.h> | ||
29 | #include <linux/pci.h> | 30 | #include <linux/pci.h> |
30 | #include <linux/init.h> | 31 | #include <linux/init.h> |
31 | #include <linux/blkdev.h> | 32 | #include <linux/blkdev.h> |